From 901adb1876906a8b55b336d77d2201d04b4a3c5c Mon Sep 17 00:00:00 2001
From: Tetrax-10 <raghavanmarch2002@gmail.com>
Date: Thu, 22 Feb 2024 12:20:25 +0000
Subject: [PATCH] built for 6e873b9

---
 .github/workflows/deploy.yml                  |   51 -
 .gitignore                                    |    1 -
 .../Contents/Code/__init__.py                 |  318 --
 .../Contents/DefaultPrefs.json                |  146 -
 .../StashPlexAgent.bundle/Contents/Info.plist |   28 -
 3rd party/StashPlexAgent.bundle/README.md     |   30 -
 README.md                                     |   78 +-
 build_site.sh                                 |   72 -
 plugins/CropperJS/CropperJS.yml               |   11 -
 plugins/CropperJS/cropper.css                 |  308 --
 plugins/CropperJS/cropper.js                  | 3274 -----------------
 plugins/DateParser/date_parser.py             |   66 -
 plugins/DateParser/date_parser.yml            |   14 -
 plugins/DateParser/requirements.txt           |   14 -
 .../GHScraper_Checker/GHScraper_Checker.py    |  208 --
 .../GHScraper_Checker/GHScraper_Checker.yml   |   21 -
 plugins/GHScraper_Checker/log.py              |   52 -
 .../stashBatchResultToggle.js                 |  308 --
 .../stashBatchResultToggle.yml                |    9 -
 plugins/comicInfoExtractor/README.md          |   12 -
 .../comicInfoExtractor/comicInfoExtractor.py  |  124 -
 .../comicInfoExtractor/comicInfoExtractor.yml |   19 -
 plugins/comicInfoExtractor/config.yml         |   12 -
 plugins/comicInfoExtractor/requirements.txt   |    2 -
 plugins/defaultDataForPath/README.md          |  151 -
 .../defaultDataForPath/defaultDataForPath.js  |  450 ---
 .../defaultDataForPath/defaultDataForPath.yml |   15 -
 plugins/dupeMarker/README.md                  |    8 -
 plugins/dupeMarker/dupeMarker.py              |   69 -
 plugins/dupeMarker/dupeMarker.yml             |   13 -
 plugins/dupeMarker/requirements.txt           |    1 -
 plugins/filenameParser/filenameParser.js      |  398 --
 plugins/filenameParser/filenameParser.yml     |   13 -
 plugins/markerTagToScene/markerTagToScene.js  |   81 -
 plugins/markerTagToScene/markerTagToScene.yml |   14 -
 plugins/pathParser/README.md                  |  229 --
 plugins/pathParser/pathParser.js              |  748 ----
 plugins/pathParser/pathParser.yml             |   35 -
 plugins/phashDuplicateTagger/README.md        |   49 -
 plugins/phashDuplicateTagger/config.py        |  110 -
 .../phashDuplicateTagger.py                   |  270 --
 .../phashDuplicateTagger.yml                  |   33 -
 plugins/phashDuplicateTagger/requirements.txt |    1 -
 plugins/renamerOnUpdate/README.md             |  205 --
 plugins/renamerOnUpdate/log.py                |   52 -
 plugins/renamerOnUpdate/renamerOnUpdate.py    | 1370 -------
 plugins/renamerOnUpdate/renamerOnUpdate.yml   |   31 -
 .../renamerOnUpdate/renamerOnUpdate_config.py |  275 --
 .../sceneCoverCropper/sceneCoverCropper.js    |  145 -
 .../sceneCoverCropper/sceneCoverCropper.yml   |   10 -
 plugins/setSceneCoverFromFile/set_cover.py    |   77 -
 .../setSceneCoverFromFile/set_scene_cover.yml |   17 -
 .../StashUserscriptLibrary.yml                |    6 -
 .../stashUserscriptLibrary.js                 | 1086 ------
 plugins/stats/stats.js                        |  136 -
 plugins/stats/stats.yml                       |    9 -
 plugins/tagGraph/README.md                    |   30 -
 plugins/tagGraph/config.py                    |    7 -
 plugins/tagGraph/requirements.txt             |    2 -
 plugins/tagGraph/tag_graph.py                 |  247 --
 plugins/tagGraph/tag_graph.yml                |   12 -
 plugins/timestampTrade/README.md              |   16 -
 plugins/timestampTrade/requirements.txt       |    2 -
 plugins/timestampTrade/timestampTrade.py      |  120 -
 plugins/timestampTrade/timestampTrade.yml     |   22 -
 plugins/titleFromFilename/README.md           |   22 -
 plugins/titleFromFilename/config.py           |    2 -
 plugins/titleFromFilename/graphql.py          |   99 -
 plugins/titleFromFilename/log.py              |   52 -
 plugins/titleFromFilename/requirements.txt    |    1 -
 .../titleFromFilename/titleFromFilename.py    |   69 -
 .../titleFromFilename/titleFromFilename.yml   |   13 -
 scripts/Sqlite_Renamer/README.md              |   94 -
 .../Sqlite_Renamer/Stash_Sqlite_Renamer.py    |  309 --
 scripts/kodi-helper/README.md                 |   47 -
 scripts/kodi-helper/config.py                 |    2 -
 scripts/kodi-helper/kodi-helper.py            |  335 --
 scripts/stash-watcher/Dockerfile              |   15 -
 scripts/stash-watcher/README.md               |   63 -
 scripts/stash-watcher/config.toml             |   16 -
 scripts/stash-watcher/defaults.toml           |   48 -
 scripts/stash-watcher/requirements.txt        |    3 -
 scripts/stash-watcher/watcher.py              |  240 --
 stable/CropperJS.zip                          |  Bin 0 -> 26365 bytes
 stable/StashUserscriptLibrary.zip             |  Bin 0 -> 10730 bytes
 stable/TPDBMarkers.zip                        |  Bin 0 -> 2216 bytes
 stable/Theme-BlackHole.zip                    |  Bin 0 -> 1237 bytes
 stable/Theme-ModernDark.zip                   |  Bin 0 -> 3144 bytes
 stable/Theme-NeonDark.zip                     |  Bin 0 -> 4025 bytes
 stable/Theme-Night.zip                        |  Bin 0 -> 1368 bytes
 stable/Theme-Plex.zip                         |  Bin 0 -> 2823 bytes
 stable/Theme-PornHub.zip                      |  Bin 0 -> 5190 bytes
 stable/Theme-Pulsar.zip                       |  Bin 0 -> 13430 bytes
 stable/Theme-PulsarLight.zip                  |  Bin 0 -> 13481 bytes
 stable/Theme-RoundedYellow.zip                |  Bin 0 -> 1847 bytes
 stable/VideoScrollWheel.zip                   |  Bin 0 -> 2082 bytes
 stable/comicInfoExtractor.zip                 |  Bin 0 -> 3540 bytes
 stable/date_parser.zip                        |  Bin 0 -> 1601 bytes
 stable/defaultDataForPath.zip                 |  Bin 0 -> 5548 bytes
 stable/dupeMarker.zip                         |  Bin 0 -> 1917 bytes
 stable/filenameParser.zip                     |  Bin 0 -> 3059 bytes
 stable/index.yml                              |  320 ++
 stable/markerTagToScene.zip                   |  Bin 0 -> 1191 bytes
 stable/miscTags.zip                           |  Bin 0 -> 2584 bytes
 stable/pathParser.zip                         |  Bin 0 -> 5783 bytes
 stable/phashDuplicateTagger.zip               |  Bin 0 -> 6788 bytes
 stable/renamerOnUpdate.zip                    |  Bin 0 -> 22325 bytes
 stable/sceneCoverCropper.zip                  |  Bin 0 -> 1934 bytes
 stable/set_scene_cover.zip                    |  Bin 0 -> 1574 bytes
 stable/stash-realbooru.zip                    |  Bin 0 -> 96547 bytes
 stable/stashBatchResultToggle.zip             |  Bin 0 -> 3638 bytes
 stable/stashNotes.zip                         |  Bin 0 -> 1466 bytes
 stable/stashai.zip                            |  Bin 0 -> 27399 bytes
 stable/stashdb-performer-gallery.zip          |  Bin 0 -> 3780 bytes
 stable/stats.zip                              |  Bin 0 -> 1420 bytes
 stable/tag_graph.zip                          |  Bin 0 -> 4433 bytes
 stable/themeSwitch.zip                        |  Bin 0 -> 108068 bytes
 stable/timestampTrade.zip                     |  Bin 0 -> 6021 bytes
 stable/titleFromFilename.zip                  |  Bin 0 -> 4134 bytes
 stable/visage.zip                             |  Bin 0 -> 104263 bytes
 themes/plex/README.md                         |   29 -
 themes/plex/plex.css                          |  204 -
 .../StashDB_Submission_Helper/README.md       |   32 -
 .../stashdb_submission_helper.user.js         |  360 --
 124 files changed, 376 insertions(+), 13742 deletions(-)
 delete mode 100644 .github/workflows/deploy.yml
 delete mode 100644 .gitignore
 delete mode 100644 3rd party/StashPlexAgent.bundle/Contents/Code/__init__.py
 delete mode 100644 3rd party/StashPlexAgent.bundle/Contents/DefaultPrefs.json
 delete mode 100644 3rd party/StashPlexAgent.bundle/Contents/Info.plist
 delete mode 100644 3rd party/StashPlexAgent.bundle/README.md
 delete mode 100755 build_site.sh
 delete mode 100644 plugins/CropperJS/CropperJS.yml
 delete mode 100644 plugins/CropperJS/cropper.css
 delete mode 100644 plugins/CropperJS/cropper.js
 delete mode 100644 plugins/DateParser/date_parser.py
 delete mode 100644 plugins/DateParser/date_parser.yml
 delete mode 100644 plugins/DateParser/requirements.txt
 delete mode 100644 plugins/GHScraper_Checker/GHScraper_Checker.py
 delete mode 100644 plugins/GHScraper_Checker/GHScraper_Checker.yml
 delete mode 100644 plugins/GHScraper_Checker/log.py
 delete mode 100644 plugins/StashBatchResultToggle/stashBatchResultToggle.js
 delete mode 100644 plugins/StashBatchResultToggle/stashBatchResultToggle.yml
 delete mode 100644 plugins/comicInfoExtractor/README.md
 delete mode 100644 plugins/comicInfoExtractor/comicInfoExtractor.py
 delete mode 100644 plugins/comicInfoExtractor/comicInfoExtractor.yml
 delete mode 100644 plugins/comicInfoExtractor/config.yml
 delete mode 100644 plugins/comicInfoExtractor/requirements.txt
 delete mode 100644 plugins/defaultDataForPath/README.md
 delete mode 100644 plugins/defaultDataForPath/defaultDataForPath.js
 delete mode 100644 plugins/defaultDataForPath/defaultDataForPath.yml
 delete mode 100644 plugins/dupeMarker/README.md
 delete mode 100644 plugins/dupeMarker/dupeMarker.py
 delete mode 100644 plugins/dupeMarker/dupeMarker.yml
 delete mode 100644 plugins/dupeMarker/requirements.txt
 delete mode 100644 plugins/filenameParser/filenameParser.js
 delete mode 100644 plugins/filenameParser/filenameParser.yml
 delete mode 100644 plugins/markerTagToScene/markerTagToScene.js
 delete mode 100644 plugins/markerTagToScene/markerTagToScene.yml
 delete mode 100644 plugins/pathParser/README.md
 delete mode 100644 plugins/pathParser/pathParser.js
 delete mode 100644 plugins/pathParser/pathParser.yml
 delete mode 100644 plugins/phashDuplicateTagger/README.md
 delete mode 100644 plugins/phashDuplicateTagger/config.py
 delete mode 100644 plugins/phashDuplicateTagger/phashDuplicateTagger.py
 delete mode 100644 plugins/phashDuplicateTagger/phashDuplicateTagger.yml
 delete mode 100644 plugins/phashDuplicateTagger/requirements.txt
 delete mode 100644 plugins/renamerOnUpdate/README.md
 delete mode 100644 plugins/renamerOnUpdate/log.py
 delete mode 100644 plugins/renamerOnUpdate/renamerOnUpdate.py
 delete mode 100644 plugins/renamerOnUpdate/renamerOnUpdate.yml
 delete mode 100644 plugins/renamerOnUpdate/renamerOnUpdate_config.py
 delete mode 100644 plugins/sceneCoverCropper/sceneCoverCropper.js
 delete mode 100644 plugins/sceneCoverCropper/sceneCoverCropper.yml
 delete mode 100644 plugins/setSceneCoverFromFile/set_cover.py
 delete mode 100644 plugins/setSceneCoverFromFile/set_scene_cover.yml
 delete mode 100644 plugins/stashUserscriptLibrary/StashUserscriptLibrary.yml
 delete mode 100644 plugins/stashUserscriptLibrary/stashUserscriptLibrary.js
 delete mode 100644 plugins/stats/stats.js
 delete mode 100644 plugins/stats/stats.yml
 delete mode 100644 plugins/tagGraph/README.md
 delete mode 100644 plugins/tagGraph/config.py
 delete mode 100644 plugins/tagGraph/requirements.txt
 delete mode 100644 plugins/tagGraph/tag_graph.py
 delete mode 100644 plugins/tagGraph/tag_graph.yml
 delete mode 100644 plugins/timestampTrade/README.md
 delete mode 100644 plugins/timestampTrade/requirements.txt
 delete mode 100644 plugins/timestampTrade/timestampTrade.py
 delete mode 100644 plugins/timestampTrade/timestampTrade.yml
 delete mode 100644 plugins/titleFromFilename/README.md
 delete mode 100644 plugins/titleFromFilename/config.py
 delete mode 100644 plugins/titleFromFilename/graphql.py
 delete mode 100644 plugins/titleFromFilename/log.py
 delete mode 100644 plugins/titleFromFilename/requirements.txt
 delete mode 100644 plugins/titleFromFilename/titleFromFilename.py
 delete mode 100644 plugins/titleFromFilename/titleFromFilename.yml
 delete mode 100644 scripts/Sqlite_Renamer/README.md
 delete mode 100644 scripts/Sqlite_Renamer/Stash_Sqlite_Renamer.py
 delete mode 100644 scripts/kodi-helper/README.md
 delete mode 100644 scripts/kodi-helper/config.py
 delete mode 100644 scripts/kodi-helper/kodi-helper.py
 delete mode 100644 scripts/stash-watcher/Dockerfile
 delete mode 100644 scripts/stash-watcher/README.md
 delete mode 100644 scripts/stash-watcher/config.toml
 delete mode 100644 scripts/stash-watcher/defaults.toml
 delete mode 100644 scripts/stash-watcher/requirements.txt
 delete mode 100644 scripts/stash-watcher/watcher.py
 create mode 100644 stable/CropperJS.zip
 create mode 100644 stable/StashUserscriptLibrary.zip
 create mode 100644 stable/TPDBMarkers.zip
 create mode 100644 stable/Theme-BlackHole.zip
 create mode 100644 stable/Theme-ModernDark.zip
 create mode 100644 stable/Theme-NeonDark.zip
 create mode 100644 stable/Theme-Night.zip
 create mode 100644 stable/Theme-Plex.zip
 create mode 100644 stable/Theme-PornHub.zip
 create mode 100644 stable/Theme-Pulsar.zip
 create mode 100644 stable/Theme-PulsarLight.zip
 create mode 100644 stable/Theme-RoundedYellow.zip
 create mode 100644 stable/VideoScrollWheel.zip
 create mode 100644 stable/comicInfoExtractor.zip
 create mode 100644 stable/date_parser.zip
 create mode 100644 stable/defaultDataForPath.zip
 create mode 100644 stable/dupeMarker.zip
 create mode 100644 stable/filenameParser.zip
 create mode 100644 stable/index.yml
 create mode 100644 stable/markerTagToScene.zip
 create mode 100644 stable/miscTags.zip
 create mode 100644 stable/pathParser.zip
 create mode 100644 stable/phashDuplicateTagger.zip
 create mode 100644 stable/renamerOnUpdate.zip
 create mode 100644 stable/sceneCoverCropper.zip
 create mode 100644 stable/set_scene_cover.zip
 create mode 100644 stable/stash-realbooru.zip
 create mode 100644 stable/stashBatchResultToggle.zip
 create mode 100644 stable/stashNotes.zip
 create mode 100644 stable/stashai.zip
 create mode 100644 stable/stashdb-performer-gallery.zip
 create mode 100644 stable/stats.zip
 create mode 100644 stable/tag_graph.zip
 create mode 100644 stable/themeSwitch.zip
 create mode 100644 stable/timestampTrade.zip
 create mode 100644 stable/titleFromFilename.zip
 create mode 100644 stable/visage.zip
 delete mode 100644 themes/plex/README.md
 delete mode 100644 themes/plex/plex.css
 delete mode 100644 userscripts/StashDB_Submission_Helper/README.md
 delete mode 100644 userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js

diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
deleted file mode 100644
index 2450e61f..00000000
--- a/.github/workflows/deploy.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-name: Deploy repository to Github Pages
-
-on:
-  push:
-    branches: [ main, stable ]
-
-  # Allows you to run this workflow manually from the Actions tab
-  workflow_dispatch:
-
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
-permissions:
-  contents: read
-  pages: write
-  id-token: write
-
-jobs:
-  build:
-    runs-on: ubuntu-22.04
-    steps:
-    - name: Checkout main
-      uses: actions/checkout@v2
-      with:
-        path: main
-        ref: main
-        fetch-depth: '0'
-    - run: |
-        cd main
-        ./build_site.sh ../_site/develop
-    # uncomment this once we have a stable branch
-    - name: Checkout Stable
-      uses: actions/checkout@v2
-      with:
-        path: stable
-        ref: stable
-        fetch-depth: '0'
-    - run: |
-        cd stable
-        ../main/build_site.sh ../_site/stable
-    - uses: actions/upload-pages-artifact@v2
-    
-  deploy:
-    environment:
-      name: github-pages
-      url: ${{ steps.deployment.outputs.page_url }}
-    runs-on: ubuntu-22.04
-    needs: build
-    steps:
-      - name: Deploy to GitHub Pages
-        id: deployment
-        uses: actions/deploy-pages@v2
-    
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 16182c5d..00000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/_site
\ No newline at end of file
diff --git a/3rd party/StashPlexAgent.bundle/Contents/Code/__init__.py b/3rd party/StashPlexAgent.bundle/Contents/Code/__init__.py
deleted file mode 100644
index c44bbb35..00000000
--- a/3rd party/StashPlexAgent.bundle/Contents/Code/__init__.py	
+++ /dev/null
@@ -1,318 +0,0 @@
-import os
-import dateutil.parser as dateparser
-from urllib2 import quote
-
-# preferences
-preference = Prefs
-DEBUG = preference['debug']
-if DEBUG:
-  Log('Agent debug logging is enabled!')
-else:
-  Log('Agent debug logging is disabled!')
-
-def ValidatePrefs():
-    pass
-
-
-def Start():
-    Log("Stash metadata agent started")
-    HTTP.Headers['Accept'] = 'application/json'
-    HTTP.CacheTime = 0.1
-    ValidatePrefs()
-
-
-def HttpReq(url, authenticate=True, retry=True):
-    Log("Requesting: %s" % url)
-    api_string = ''
-    if Prefs['APIKey']:
-        api_string = '&apikey=%s' % Prefs['APIKey']
-
-    if Prefs['UseHTTPS']:
-        connectstring = 'https://%s:%s/graphql?query=%s%s'
-    else:
-        connectstring = 'http://%s:%s/graphql?query=%s%s'
-    try:
-        connecttoken = connectstring % (Prefs['Hostname'].strip(), Prefs['Port'].strip(), url, api_string)
-        Log(connecttoken)
-        return JSON.ObjectFromString(
-            HTTP.Request(connecttoken).content)
-    except Exception as e:
-        if not retry:
-            raise e
-        return HttpReq(url, authenticate, False)
-
-class StashPlexAgent(Agent.Movies):
-    name = 'Stash Plex Agent'
-    languages = [Locale.Language.English]
-    primary_provider = True
-    accepts_from = ['com.plexapp.agents.localmedia', 'com.plexapp.agents.xbmcnfo', 'com.plexapp.agents.phoenixadult', 'com.plexapp.agents.data18-phoenix', 'com.plexapp.agents.adultdvdempire']
-
-    def search(self, results, media, lang):
-        DEBUG = Prefs['debug']
-        file_query = r"""query{findScenes(scene_filter:{path:{value:"\"<FILENAME>\"",modifier:INCLUDES}}){scenes{id,title,date,studio{id,name}}}}"""
-        mediaFile = media.items[0].parts[0].file
-        filename = String.Unquote(mediaFile).encode('utf8', 'ignore')
-        filename = os.path.splitext(os.path.basename(filename))[0]
-        if filename:
-            filename = str(quote(filename.encode('UTF-8')))
-            query = file_query.replace("<FILENAME>", filename)
-            request = HttpReq(query)
-            if DEBUG:
-                Log(request)
-            movie_data = request['data']['findScenes']['scenes']
-            score = 100 if len(movie_data) == 1 else 85
-            for scene in movie_data:
-                if scene['date']:
-                    title = scene['title'] + ' - ' + scene['date']
-                else:
-                    title = scene['title']
-                Log("Title Found: " + title + " Score: " + str(score) + " ID:" + scene['id'])
-                results.Append(MetadataSearchResult(id = str(scene['id']), name = title, score = int(score), lang = lang))
-
-
-    def update(self, metadata, media, lang, force=False):
-        DEBUG = Prefs['debug']
-        Log("update(%s)" % metadata.id)
-        mid = metadata.id
-        id_query = "query{findScene(id:%s){path,id,title,details,url,date,rating,paths{screenshot,stream}movies{movie{id,name}}studio{id,name,image_path,parent_studio{id,name,details}}organized,stash_ids{stash_id}tags{id,name}performers{name,image_path,tags{id,name}}movies{movie{name}}galleries{id,title,url,images{id,title,path,file{size,width,height}}}}}"
-        data = HttpReq(id_query % mid)
-        data = data['data']['findScene']
-        metadata.collections.clear()
-
-        allow_scrape = False
-        if (Prefs["RequireOrganized"] and data["organized"]) or not Prefs["RequireOrganized"]:
-            if DEBUG and Prefs["RequireOrganized"]:
-                Log("Passed 'Organized' Check, continuing...")
-            if (Prefs["RequireURL"] and data["url"]) or not Prefs["RequireURL"]:
-                if DEBUG and Prefs["RequireURL"]:
-                    Log("Passed 'RequireURL' Check, continuing...")
-                if (Prefs["RequireStashID"] and len(data["stash_ids"])) or not Prefs["RequireStashID"]:
-                    if DEBUG and Prefs["RequireStashID"]:
-                        Log("Passed 'RequireStashID' Check, continuing...")
-                    allow_scrape = True
-                else:
-                    Log("Failed 'RequireStashID' Check, stopping.")
-                    allow_scrape = False
-            else:
-                Log("Failed 'RequireURL' Check, stopping.")
-                allow_scrape = False
-        else:
-            Log("Failed 'Organized' Check, stopping.")
-            allow_scrape = False
-
-        if allow_scrape:
-            if data['date']:
-                try:
-                    Log("Trying to parse:" + data["date"])
-                    date=dateparser().parse(data["date"])
-                except Exception as ex:
-                    Log(ex)
-                    date=None
-                    pass
-                # Set the date and year if found.
-                if date is not None:
-                    metadata.originally_available_at = date
-                    metadata.year = date.year
-
-            # Get the title
-            if data['title']:
-                metadata.title = data["title"]
-
-            # Get the Studio
-            if not data["studio"] is None:
-                metadata.studio = data["studio"]["name"]
-
-            # Get the rating
-            if not data["rating"] is None:
-                metadata.rating = float(data["rating"]) * 2
-                if Prefs["CreateRatingTags"]:
-                    if int(data["rating"]) > 0:
-                        rating = str(int(data["rating"]))
-                        ratingstring = "Rating: " + rating + " Stars"
-                        try:
-                            metadata.collections.add(ratingstring)
-                        except:
-                            pass
-
-            # Set the summary
-            if data['details']:
-                summary = data["details"].replace("\n", " ").replace("\r", "").replace("\t", "")
-                metadata.summary = summary
-
-            # Set series and add to collections
-            if Prefs["CreateSiteCollectionTags"]:
-                if not data["studio"] is None:
-                    if Prefs["PrefixSiteCollectionTags"]:
-                        SitePrefix = Prefs["PrefixSiteCollectionTags"]
-                    else:
-                        SitePrefix = "Site: "
-                    site = SitePrefix + data["studio"]["name"]
-                    try:
-                        if DEBUG:
-                            Log("Adding Site Collection: " + site)
-                        metadata.collections.add(site)
-                    except:
-                        pass
-            if Prefs["CreateStudioCollectionTags"]:
-                if not data["studio"] is None:
-                    if Prefs["PrefixStudioCollectionTags"]:
-                        StudioPrefix = Prefs["PrefixStudioCollectionTags"]
-                    else:
-                        StudioPrefix = "Studio: "
-                    if not data["studio"]["parent_studio"] is None:
-                        site = StudioPrefix + data["studio"]["parent_studio"]["name"]
-                    else:
-                        if Prefs["UseSiteForStudioCollectionTags"]:
-                            site = StudioPrefix + data["studio"]["name"]
-                        else:
-                            site = None
-                    try:
-                        if DEBUG:
-                            Log("Adding Studio Collection: " + site)
-                        if site:
-                            metadata.collections.add(site)
-                    except:
-                        pass
-            if Prefs["CreateMovieCollectionTags"]:
-                if not data["movies"] is None:
-                    for movie in data["movies"]:
-                        if Prefs["PrefixMovieCollectionTags"]:
-                            MoviePrefix = Prefs["PrefixMovieCollectionTags"]
-                        else:
-                            MoviePrefix = "Movie: "
-                        if "name" in movie["movie"]:
-                            movie_collection = MoviePrefix + movie["movie"]["name"]
-                        try:
-                            if DEBUG:
-                                Log("Adding Movie Collection: " + movie_collection)
-                            metadata.collections.add(movie_collection)
-                        except:
-                            pass
-            if Prefs["CreatePerformerCollectionTags"]:
-                if not data["performers"] is None:
-                    for performer in data["performers"]:
-                        if Prefs["CreatePerformerCollectionTags"]:
-                            PerformerPrefix = Prefs["PrefixPerformerCollectionTags"]
-                        else:
-                            PerformerPrefix = "Actor: "
-                        if "name" in performer:
-                            actor_collection = PerformerPrefix + performer["name"]
-                        try:
-                            if DEBUG:
-                                Log("Adding Performer Collection: " + actor_collection)
-                            metadata.collections.add(actor_collection)
-                        except:
-                            pass
-
-            # Add the genres
-            metadata.genres.clear()
-            if Prefs["IgnoreTags"]:
-                ignore_tags = Prefs["IgnoreTags"].split(",")
-                ignore_tags = list(map(lambda x: x.strip(), ignore_tags))
-            else:
-                ignore_tags = []
-            if Prefs["CreateTagCollectionTags"]:
-                collection_tags = Prefs["CreateTagCollectionTags"].split(",")
-                collection_tags = list(map(lambda x: x.strip(), collection_tags))
-            else:
-                collection_tags = []
-            try:
-                if data["tags"]:
-                    genres = data["tags"]
-                    for genre in genres:
-                        if not genre["id"] in ignore_tags and "ambiguous" not in genre["name"].lower():
-                            metadata.genres.add(genre["name"])
-                            if not Prefs["CreateAllTagCollectionTags"] and genre["id"] in collection_tags:
-                                try:
-                                    if DEBUG:
-                                        Log("Adding Tag Collection: " + genre["name"])
-                                    metadata.collections.add(genre["name"])
-                                except:
-                                    pass
-                            elif Prefs["CreateAllTagCollectionTags"] and genre["id"] not in collection_tags:
-                                try:
-                                    if DEBUG:
-                                        Log("Adding Tag Collection: " + genre["name"])
-                                    metadata.collections.add(genre["name"])
-                                except:
-                                    pass
-                if Prefs["AppendPerformerTags"]:
-                    for performer in data["performers"]:
-                        if performer["tags"]:
-                            genres = performer["tags"]
-                            for genre in genres:
-                                if not genre["id"] in ignore_tags and "ambiguous" not in genre["name"].lower() and genre["name"] not in metadata.genres:
-                                    if DEBUG:
-                                        Log("Added Performer (" + performer['name'] + ") tag to scene: " + genre['name'] )
-                                    metadata.genres.add(genre["name"])
-                                    if genre["id"] in collection_tags:
-                                        try:
-                                            if DEBUG:
-                                                Log("Adding Tag Collection: " + genre["name"])
-                                            metadata.collections.add(genre["name"])
-                                        except:
-                                            pass
-            except:
-                pass
-
-            # Add the performers
-            metadata.roles.clear()
-            # Create and populate role with actor's name
-            try:
-                if data["performers"]:
-                    api_string = ""
-                    if Prefs['APIKey']:
-                        api_string = '&apikey=%s' % Prefs['APIKey']
-                    models=data["performers"]
-                    for model in models:
-                        if DEBUG:
-                            Log("Pulling Model: " + model["name"] + " With Image: " + model["image_path"])
-                        role = metadata.roles.new()
-                        role.name = model["name"]
-                        role.photo = model["image_path"] + api_string
-            except:
-                pass
-
-            # Add posters and fan art.
-            if not data["paths"]["screenshot"] is None:
-                api_string = ""
-                if Prefs['APIKey']:
-                    api_string = '&apikey=%s' % Prefs['APIKey']
-                try:
-                    thumb = HTTP.Request(data["paths"]["screenshot"] + api_string)
-                    metadata.posters[data["paths"]["screenshot"] + api_string] = Proxy.Preview(thumb, sort_order=0)
-                    metadata.art[data["paths"]["screenshot"] + api_string] = Proxy.Preview(thumb, sort_order=0)
-                except Exception as e:
-                    pass
-
-            if Prefs["IncludeGalleryImages"]:
-                api_string = ""
-                if Prefs['APIKey']:
-                    api_string = '&apikey=%s' % Prefs['APIKey']
-                if Prefs['UseHTTPS']:
-                    imagestring = 'https://%s:%s/image/%s/image' + api_string
-                else:
-                    imagestring = 'http://%s:%s/image/%s/image' + api_string
-                if not data["galleries"] is None:
-                    for gallery in data["galleries"]:
-                        for image in gallery["images"]:
-                            if Prefs["SortGalleryImages"]:
-                                if image["file"]["height"] > image["file"]["width"]:
-                                    image_orientation = "poster"
-                                else:
-                                    image_orientation = "background"
-                            else:
-                                image_orientation = "all"
-                            imageurl = imagestring % (Prefs['Hostname'], Prefs['Port'], image["id"])
-                            try:
-                                thumb = HTTP.Request(imageurl)
-                                if image_orientation == "poster" or image_orientation == "all":
-                                    if DEBUG:
-                                        Log("Inserting Poster image: " + image["title"] + " (" + str(image["file"]["width"]) + "x" + str(image["file"]["height"]) + " WxH)")
-                                    metadata.posters[imageurl] = Proxy.Preview(thumb)
-                                if image_orientation == "background" or image_orientation == "all":
-                                    if DEBUG:
-                                        Log("Inserting Background image: " + image["title"] + " (" + str(image["file"]["width"]) + "x" + str(image["file"]["height"]) + " WxH)")
-                                        metadata.art[imageurl] = Proxy.Preview(thumb)
-                            except Exception as e:
-                                pass
diff --git a/3rd party/StashPlexAgent.bundle/Contents/DefaultPrefs.json b/3rd party/StashPlexAgent.bundle/Contents/DefaultPrefs.json
deleted file mode 100644
index 27fb2447..00000000
--- a/3rd party/StashPlexAgent.bundle/Contents/DefaultPrefs.json	
+++ /dev/null
@@ -1,146 +0,0 @@
-[
-    {
-        "id": "Hostname",
-        "label": "The host for Stash",
-        "type": "text",
-        "default": "127.0.0.1"
-    },
-    {
-        "id": "Port",
-        "label": "The port for Stash",
-        "type": "text",
-        "default": "9999"
-    },
-    {
-        "id": "UseHTTPS",
-        "label": "Use HTTPS instead of HTTP to connect",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "APIKey",
-        "label": "The API Key for Stash if Authentication is enabled",
-        "type": "text",
-        "default": ""
-    },
-    {
-        "id": "IncludeGalleryImages",
-        "label": "Include attached Gallery images in addition to default poster?",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "SortGalleryImages",
-        "label": "If including gallery images, auto sort into poster/background based on orientation?",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "AppendPerformerTags",
-        "label": "Include Performer Tags with the scraped scene tags?",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "IgnoreTags",
-        "label": "Stash Tag ID numbers to ignore (comma separated, 0 to disable)",
-        "type": "text",
-        "default": "1,2,3318,6279"
-    },
-    {
-        "id": "CreateTagCollectionTags",
-        "label": "Stash Tag ID numbers create Collections from (comma separated, 0 to disable)",
-        "type": "text",
-        "default": "0"
-    },
-    {
-        "id": "CreateAllTagCollectionTags",
-        "label": "Create Collections from ALL Tags (If TRUE then option above will exclude instead of include tags)",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "CreateSiteCollectionTags",
-        "label": "Auto create Plex Collection tags for scene Site",
-        "type": "bool",
-        "default": true
-    },
-    {
-        "id": "PrefixSiteCollectionTags",
-        "label": "Prefix for Site Collection Names (The Site name will be appended to this value)",
-        "type": "text",
-        "default": "Site: "
-    },
-    {
-        "id": "CreateStudioCollectionTags",
-        "label": "Auto create Plex Collection tags for scene Studio",
-        "type": "bool",
-        "default": true
-    },
-    {
-        "id": "UseSiteForStudioCollectionTags",
-        "label": "If Studio is not defined, use Site instead (In Stash, Studio is the parent of the scene Studio)",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "PrefixStudioCollectionTags",
-        "label": "Prefix for Studio Collection Names (The Studio name (if available) will be appended to this value)",
-        "type": "text",
-        "default": "Studio: "
-    },
-    {
-        "id": "CreateMovieCollectionTags",
-        "label": "Auto create Plex Collection tags for associated scene Movie",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "PrefixMovieCollectionTags",
-        "label": "Prefix for Movie Collection Names (The Movie title (if available) will be appended to this value)",
-        "type": "text",
-        "default": "Movie: "
-    },
-    {
-        "id": "CreatePerformerCollectionTags",
-        "label": "Auto create Plex Collection tags for associated Performers",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "PrefixPerformerCollectionTags",
-        "label": "Prefix for Performer Collection Names (The performer (if available) will be appended to this value)",
-        "type": "text",
-        "default": "Actor: "
-    },
-    {
-        "id": "CreateRatingTags",
-        "label": "Auto create Plex Collection tags for Stash star rating",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "RequireOrganized",
-        "label": "Require Organized flag to be set in Stash to pull metadata",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "RequireURL",
-        "label": "Require scene URL to be set in Stash to pull metadata",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "RequireStashID",
-        "label": "Require a scene StashID to be set in Stash to pull metadata",
-        "type": "bool",
-        "default": false
-    },
-    {
-        "id": "debug",
-        "label": "Use debug logging",
-        "type": "bool",
-        "default": false
-    },
-]
diff --git a/3rd party/StashPlexAgent.bundle/Contents/Info.plist b/3rd party/StashPlexAgent.bundle/Contents/Info.plist
deleted file mode 100644
index 7f1514f4..00000000
--- a/3rd party/StashPlexAgent.bundle/Contents/Info.plist	
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>StashPlexAgent</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.plexapp.agents.stashplexagent</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1.0</string>
-	<key>PlexFrameworkVersion</key>
-	<string>2</string>
-	<key>PlexPluginClass</key>
-	<string>Agent</string>
-	<key>PlexPluginMode</key>
-	<string>AlwaysOn</string>
-	<key>PlexPluginCodePolicy</key>
-	<string>Elevated</string>
-</dict>
-</plist>
diff --git a/3rd party/StashPlexAgent.bundle/README.md b/3rd party/StashPlexAgent.bundle/README.md
deleted file mode 100644
index dbd4e299..00000000
--- a/3rd party/StashPlexAgent.bundle/README.md	
+++ /dev/null
@@ -1,30 +0,0 @@
-# StashPlexAgent.bundle
-A very simplistic Plex agent to pull metadata from Stash.
-
-Scenes are matched based on filename (without path or extension) against the Stash "Path", so files must be scanned into Stash with their current filename.
-
-Preferences are set under the plugin, or in the library definition (if you set it as the primary agent for the library).  I'm using "Video Files Scanner" with it.
-
-By default it will create Plex "Site: <STUDIO>" and "Studio: <STUDIO PARENT>" collection tags, but this can be disabled in preferences.  There are several collection tag options available, and each can be modified with what it prepends the Collection name with
-
-Also Stash "Tags" are placed into Plex "Genres", as well as optionally pulling attached Performer tags into the Plex genre list
-
-You can also set tag numbers to ignore on import, I've left mine in as an example.  You probably want to change these unless your "temporary" tags miraculously line up with mine. (Also initially you might need to try saving a couple of times.  Plex seems to not want to initally keep changes in this field for some reason)
-
-And optionally you can pull in any images from galleries attached to Scenes as Plex artwork.  (There is an option to auto split gallery images into Poster/Background depending on basic orientation...  If it's taller than wide, it's a poster)
-
-For installing just download the bundle and put it into your "\PlexMediaServer\Plex Media Server\Plug-ins" folder.  (The entire bundle as a directory...  "\StashPlexAgent.bundle")
-
-I guarantee there will be problems.  When they pop up feel free to get with me (@Darklyter) on either the TPDB or Stash Discord channels.
-
-Also this agent only handles scenes currently.  I haven't played with movies in Stash much yet, but can take a look if there is interest (though it will optionally create Collections based on defined movies).  Currently the Plex ADE agent handles that for me.
-
-Also a bit of explanation for Sites vs Studios:
-
-I help out with TPDB, so I'm very much in the Site -> Studio -> Network mentality.  In Stash it is simply "Studio".
-
-For my thinking, a Stash studio that is directly connected to the scene is the "Site".  If that site has a parent studio, that is defined as "Studio".  If the scene studio has a grandparent, that would be "Network" (though I'm not doing anything with that yet.
-
-For example, in my Stash I have:  Mind Geek as the Parent of Brazzers which is the Parent of Brazzers Live.  
-
-Therefore a scene would have:  Site = "Brazzers Live", Studio = "Brazzers", Network = "Mind Geek"
\ No newline at end of file
diff --git a/README.md b/README.md
index 12cd7890..c90d29f9 100644
--- a/README.md
+++ b/README.md
@@ -1,31 +1,37 @@
 # CommunityScripts Repository
 
-This repository contains plugin and utility scripts created by the Stash community and hosted on the official GitHub repo.  There is also [a list of third-party plugins on our wiki page](https://github.com/stashapp/stash/wiki/Plugins-&--Scripts).
+This repository contains plugin and utility scripts created by the Stash community and hosted on the official GitHub repo.  
 
-## How To Install
-To download a plugin, either clone the git repo, or download the files directly.
+There is also [a list of third-party plugins in our documentation](https://docs.stashapp.cc/add-ons/third-party-integrations).
+
+## Please note: V24 now uses an installer
+# We recommend you use that to install (and update) plugins.  
+Manual installs are not recommended, and you shouldn't do so unless you otherwise know what you are doing.
 
-It is recommended that plugins are placed in their own subdirectory of your `plugins` directory. The `plugins` directory should be created as a subdirectory in the directory containing your `config.yml` file. This will be in `$HOME/.stash` by default.
+## How To Install
+To download a plugin in Stash v24, the CommunityScripts repo source is automatically installed by default.
 
-When downloading directly click on the file you want and then make sure to click the raw button:
+This default source is located at https://stashapp.github.io/CommunityScripts/stable/index.yml
 
-![](https://user-images.githubusercontent.com/1358708/82524777-cd4cfe80-9afd-11ea-808d-5ea7bf26704f.jpg)
+# Plugin, Themes, and Scripts Directory
+We used to list all community supported plugins, themes, and scripts in this repository...
+but with the changes in v24, ANY items installable by the plugin installer will no longer listed here.
+Use the Plugin Installer built into Stash.
 
-# Plugin and Script Directory
-This list keeps track of scripts and plugins in this repository. Please ensure the list is kept in alphabetical order.
+We will continue to list the items NOT otherwise installable in this way below.
 
 ## NOTE: BREAKING CHANGES
-The upcoming v24 release (and the current development branch) have breaking changes to schema, and also plugin changes.
-We're beginning to review plugins and the rest and patch them to work, but it's an ongoing process.
-We'll update the table below as we do this, but we STRONGLY recommend you do not use the development branch unless you are prepared to help with the patching.
+The recent v24 release (and future development branches) had major breaking changes to old schema and plugin changes.
+We're beginning to review plugins and the rest and patch them to work, but it's an ongoing process...
+
+We'll update the table below as we do this...
 We will also be rearranging things a bit, and updating documentation (including this page)
 
-## Plugins
+## Plugins will no longer be listed individually here...
 
 Category|Triggers|Plugin Name|Description|Minimum Stash version|Updated for v24|
 --------|-----------|-----------|-----------|---------------------|-----
-Scraper|Task|[GHScraper_Checker](plugins/GHScraper_Checker)|Compare local file against github file from the community scraper repo.|v0.8|:x:
-Maintenance|Task<br />Scene.Update|[renamerOnUpdate](plugins/renamerOnUpdate)|Rename/Move your file based on Stash metadata.|v0.7|:x:
+Maintenance|Task<br />Scene.Update|[renamerOnUpdate](plugins/renamerOnUpdate)|Rename/Move your file based on Stash metadata.|v2.4|:white_check_mark: STOPGAP
 Maintenance|Set Scene Cover|[setSceneCoverFromFile](plugins/setSceneCoverFromFile)|Searchs Stash for Scenes with a cover image in the same folder and sets the cover image in stash to that image|v0.7|:x:
 Scenes|SceneMarker.Create<br />SceneMarker.Update|[markerTagToScene](plugins/markerTagToScene)|Adds primary tag of Scene Marker to the Scene on marker create/update.|v0.8 ([46bbede](https://github.com/stashapp/stash/commit/46bbede9a07144797d6f26cf414205b390ca88f9))|:x:
 Scanning|Scene.Create<br />Gallery.Create<br />Image.Create|[defaultDataForPath](plugins/defaultDataForPath)|Adds configured Tags, Performers and/or Studio to all newly scanned Scenes, Images and Galleries..|v0.8|:x:
@@ -36,18 +42,46 @@ Reporting||[TagGraph](plugins/tagGraph)|Creates a visual of the Tag relations.|v
 
 ## Themes
 
-Theme Name|Description                                 |Updated for v24|
-----------|--------------------------------------------|----
-[Plex](themes/plex)      |Theme inspired by the popular Plex Interface|:x:
+# A Variety of Themes are now available to be one click installed via the Plugin Setting page in your Stash
+We welcome new themes, as well as patches to existing themes.
 
 ## Utility Scripts
 
-|Category|Userscript Name|Description|Updated for v24|
+|Category|Name|Description|Updated for v24|
 ---------|---------------|-----------|----
 StashDB  |[StashDB Submission Helper](/userscripts/StashDB_Submission_Helper)|Adds handy functions for StashDB submissions like buttons to add aliases in bulk to a performer|:x:
+Kodi|[Kodi Helper](scripts/kodi-helper)|Generates `nfo` and `strm` for use with Kodi.|v0.7|:x:
 
-## Utility Scripts
+## Contributing
 
-Category|Plugin Name|Description|Minimum Stash version|Updated for v24|
---------|-----------|-----------|---------------------|----
-Kodi|[Kodi Helper](scripts/kodi-helper)|Generates `nfo` and `strm` for use with Kodi.|v0.7|:x:
+### For plugins made with [stash-plugin-builder](https://github.com/Tetrax-10/stash-plugin-builder)
+
+Please refer to its [docs](https://github.com/Tetrax-10/stash-plugin-builder#readme) for building.
+
+### Formatting
+
+Formatting is enforced on all files. Follow this setup guide:
+
+1. **[Yarn](https://yarnpkg.com/en/docs/install)** and **its dependencies** must be installed to run the formatting tools.
+    ```sh
+    yarn install --frozen-lockfile
+    ```
+
+2. **Python dependencies** must also be installed to format `py` files.
+    ```sh
+    pip install -r requirements.txt
+    ```
+
+#### Formatting non-`py` files
+
+```sh
+yarn run format
+```
+
+#### Formatting `py` files
+
+`py` files are formatted using [`black`](https://pypi.org/project/black/).
+
+```sh
+yarn run format-py
+```
\ No newline at end of file
diff --git a/build_site.sh b/build_site.sh
deleted file mode 100755
index 463ee690..00000000
--- a/build_site.sh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/bash
-
-# builds a repository of scrapers
-# outputs to _site with the following structure:
-# index.yml
-# <scraper_id>.zip
-# Each zip file contains the scraper.yml file and any other files in the same directory
-
-outdir="$1"
-if [ -z "$outdir" ]; then
-    outdir="_site"
-fi
-
-rm -rf "$outdir"
-mkdir -p "$outdir"
-
-buildPlugin() 
-{
-    f=$1
-
-    if grep -q "^#pkgignore" "$f"; then
-        return
-    fi
-    
-    # get the scraper id from the directory
-    dir=$(dirname "$f")
-    plugin_id=$(basename "$f" .yml)
-
-    echo "Processing $plugin_id"
-
-    # create a directory for the version
-    version=$(git log -n 1 --pretty=format:%h -- "$dir"/*)
-    updated=$(TZ=UTC0 git log -n 1 --date="format-local:%F %T" --pretty=format:%ad -- "$dir"/*)
-    
-    # create the zip file
-    # copy other files
-    zipfile=$(realpath "$outdir/$plugin_id.zip")
-    
-    pushd "$dir" > /dev/null
-    zip -r "$zipfile" . > /dev/null
-    popd > /dev/null
-
-    name=$(grep "^name:" "$f" | head -n 1 | cut -d' ' -f2- | sed -e 's/\r//' -e 's/^"\(.*\)"$/\1/')
-    description=$(grep "^description:" "$f" | head -n 1 | cut -d' ' -f2- | sed -e 's/\r//' -e 's/^"\(.*\)"$/\1/')
-    ymlVersion=$(grep "^version:" "$f" | head -n 1 | cut -d' ' -f2- | sed -e 's/\r//' -e 's/^"\(.*\)"$/\1/')
-    version="$ymlVersion-$version"
-    dep=$(grep "^# requires:" "$f" | cut -c 12- | sed -e 's/\r//')
-
-    # write to spec index
-    echo "- id: $plugin_id
-  name: $name
-  metadata:
-    description: $description
-  version: $version
-  date: $updated
-  path: $plugin_id.zip
-  sha256: $(sha256sum "$zipfile" | cut -d' ' -f1)" >> "$outdir"/index.yml
-
-    # handle dependencies
-    if [ ! -z "$dep" ]; then
-        echo "  requires:" >> "$outdir"/index.yml
-        for d in ${dep//,/ }; do
-            echo "    - $d" >> "$outdir"/index.yml
-        done
-    fi
-
-    echo "" >> "$outdir"/index.yml
-}
-
-find ./plugins -mindepth 1 -name *.yml | while read file; do
-    buildPlugin "$file"
-done
diff --git a/plugins/CropperJS/CropperJS.yml b/plugins/CropperJS/CropperJS.yml
deleted file mode 100644
index 7b5b6cba..00000000
--- a/plugins/CropperJS/CropperJS.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-name: Cropper.JS
-description: Exports cropper.js functionality for JS/Userscripts
-version: 1.6.1
-ui:
-  css:
-  - cropper.css
-  javascript:
-  - cropper.js
-
-# note - not minimized for more transparency around updates & diffs against source code
-# https://github.com/fengyuanchen/cropperjs/tree/main/dist
\ No newline at end of file
diff --git a/plugins/CropperJS/cropper.css b/plugins/CropperJS/cropper.css
deleted file mode 100644
index 98a40ab8..00000000
--- a/plugins/CropperJS/cropper.css
+++ /dev/null
@@ -1,308 +0,0 @@
-/*!
- * Cropper.js v1.6.1
- * https://fengyuanchen.github.io/cropperjs
- *
- * Copyright 2015-present Chen Fengyuan
- * Released under the MIT license
- *
- * Date: 2023-09-17T03:44:17.565Z
- */
-
-.cropper-container {
-  direction: ltr;
-  font-size: 0;
-  line-height: 0;
-  position: relative;
-  -ms-touch-action: none;
-      touch-action: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.cropper-container img {
-    backface-visibility: hidden;
-    display: block;
-    height: 100%;
-    image-orientation: 0deg;
-    max-height: none !important;
-    max-width: none !important;
-    min-height: 0 !important;
-    min-width: 0 !important;
-    width: 100%;
-  }
-
-.cropper-wrap-box,
-.cropper-canvas,
-.cropper-drag-box,
-.cropper-crop-box,
-.cropper-modal {
-  bottom: 0;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-}
-
-.cropper-wrap-box,
-.cropper-canvas {
-  overflow: hidden;
-}
-
-.cropper-drag-box {
-  background-color: #fff;
-  opacity: 0;
-}
-
-.cropper-modal {
-  background-color: #000;
-  opacity: 0.5;
-}
-
-.cropper-view-box {
-  display: block;
-  height: 100%;
-  outline: 1px solid #39f;
-  outline-color: rgba(51, 153, 255, 0.75);
-  overflow: hidden;
-  width: 100%;
-}
-
-.cropper-dashed {
-  border: 0 dashed #eee;
-  display: block;
-  opacity: 0.5;
-  position: absolute;
-}
-
-.cropper-dashed.dashed-h {
-    border-bottom-width: 1px;
-    border-top-width: 1px;
-    height: calc(100% / 3);
-    left: 0;
-    top: calc(100% / 3);
-    width: 100%;
-  }
-
-.cropper-dashed.dashed-v {
-    border-left-width: 1px;
-    border-right-width: 1px;
-    height: 100%;
-    left: calc(100% / 3);
-    top: 0;
-    width: calc(100% / 3);
-  }
-
-.cropper-center {
-  display: block;
-  height: 0;
-  left: 50%;
-  opacity: 0.75;
-  position: absolute;
-  top: 50%;
-  width: 0;
-}
-
-.cropper-center::before,
-  .cropper-center::after {
-    background-color: #eee;
-    content: ' ';
-    display: block;
-    position: absolute;
-  }
-
-.cropper-center::before {
-    height: 1px;
-    left: -3px;
-    top: 0;
-    width: 7px;
-  }
-
-.cropper-center::after {
-    height: 7px;
-    left: 0;
-    top: -3px;
-    width: 1px;
-  }
-
-.cropper-face,
-.cropper-line,
-.cropper-point {
-  display: block;
-  height: 100%;
-  opacity: 0.1;
-  position: absolute;
-  width: 100%;
-}
-
-.cropper-face {
-  background-color: #fff;
-  left: 0;
-  top: 0;
-}
-
-.cropper-line {
-  background-color: #39f;
-}
-
-.cropper-line.line-e {
-    cursor: ew-resize;
-    right: -3px;
-    top: 0;
-    width: 5px;
-  }
-
-.cropper-line.line-n {
-    cursor: ns-resize;
-    height: 5px;
-    left: 0;
-    top: -3px;
-  }
-
-.cropper-line.line-w {
-    cursor: ew-resize;
-    left: -3px;
-    top: 0;
-    width: 5px;
-  }
-
-.cropper-line.line-s {
-    bottom: -3px;
-    cursor: ns-resize;
-    height: 5px;
-    left: 0;
-  }
-
-.cropper-point {
-  background-color: #39f;
-  height: 5px;
-  opacity: 0.75;
-  width: 5px;
-}
-
-.cropper-point.point-e {
-    cursor: ew-resize;
-    margin-top: -3px;
-    right: -3px;
-    top: 50%;
-  }
-
-.cropper-point.point-n {
-    cursor: ns-resize;
-    left: 50%;
-    margin-left: -3px;
-    top: -3px;
-  }
-
-.cropper-point.point-w {
-    cursor: ew-resize;
-    left: -3px;
-    margin-top: -3px;
-    top: 50%;
-  }
-
-.cropper-point.point-s {
-    bottom: -3px;
-    cursor: s-resize;
-    left: 50%;
-    margin-left: -3px;
-  }
-
-.cropper-point.point-ne {
-    cursor: nesw-resize;
-    right: -3px;
-    top: -3px;
-  }
-
-.cropper-point.point-nw {
-    cursor: nwse-resize;
-    left: -3px;
-    top: -3px;
-  }
-
-.cropper-point.point-sw {
-    bottom: -3px;
-    cursor: nesw-resize;
-    left: -3px;
-  }
-
-.cropper-point.point-se {
-    bottom: -3px;
-    cursor: nwse-resize;
-    height: 20px;
-    opacity: 1;
-    right: -3px;
-    width: 20px;
-  }
-
-@media (min-width: 768px) {
-
-.cropper-point.point-se {
-      height: 15px;
-      width: 15px;
-  }
-    }
-
-@media (min-width: 992px) {
-
-.cropper-point.point-se {
-      height: 10px;
-      width: 10px;
-  }
-    }
-
-@media (min-width: 1200px) {
-
-.cropper-point.point-se {
-      height: 5px;
-      opacity: 0.75;
-      width: 5px;
-  }
-    }
-
-.cropper-point.point-se::before {
-    background-color: #39f;
-    bottom: -50%;
-    content: ' ';
-    display: block;
-    height: 200%;
-    opacity: 0;
-    position: absolute;
-    right: -50%;
-    width: 200%;
-  }
-
-.cropper-invisible {
-  opacity: 0;
-}
-
-.cropper-bg {
-  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
-}
-
-.cropper-hide {
-  display: block;
-  height: 0;
-  position: absolute;
-  width: 0;
-}
-
-.cropper-hidden {
-  display: none !important;
-}
-
-.cropper-move {
-  cursor: move;
-}
-
-.cropper-crop {
-  cursor: crosshair;
-}
-
-.cropper-disabled .cropper-drag-box,
-.cropper-disabled .cropper-face,
-.cropper-disabled .cropper-line,
-.cropper-disabled .cropper-point {
-  cursor: not-allowed;
-}
diff --git a/plugins/CropperJS/cropper.js b/plugins/CropperJS/cropper.js
deleted file mode 100644
index 55a50c88..00000000
--- a/plugins/CropperJS/cropper.js
+++ /dev/null
@@ -1,3274 +0,0 @@
-/*!
- * Cropper.js v1.6.1
- * https://fengyuanchen.github.io/cropperjs
- *
- * Copyright 2015-present Chen Fengyuan
- * Released under the MIT license
- *
- * Date: 2023-09-17T03:44:19.860Z
- */
-
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Cropper = factory());
-})(this, (function () { 'use strict';
-
-  function ownKeys(e, r) {
-    var t = Object.keys(e);
-    if (Object.getOwnPropertySymbols) {
-      var o = Object.getOwnPropertySymbols(e);
-      r && (o = o.filter(function (r) {
-        return Object.getOwnPropertyDescriptor(e, r).enumerable;
-      })), t.push.apply(t, o);
-    }
-    return t;
-  }
-  function _objectSpread2(e) {
-    for (var r = 1; r < arguments.length; r++) {
-      var t = null != arguments[r] ? arguments[r] : {};
-      r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
-        _defineProperty(e, r, t[r]);
-      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
-        Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
-      });
-    }
-    return e;
-  }
-  function _typeof(o) {
-    "@babel/helpers - typeof";
-
-    return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
-      return typeof o;
-    } : function (o) {
-      return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
-    }, _typeof(o);
-  }
-  function _classCallCheck(instance, Constructor) {
-    if (!(instance instanceof Constructor)) {
-      throw new TypeError("Cannot call a class as a function");
-    }
-  }
-  function _defineProperties(target, props) {
-    for (var i = 0; i < props.length; i++) {
-      var descriptor = props[i];
-      descriptor.enumerable = descriptor.enumerable || false;
-      descriptor.configurable = true;
-      if ("value" in descriptor) descriptor.writable = true;
-      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
-    }
-  }
-  function _createClass(Constructor, protoProps, staticProps) {
-    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
-    if (staticProps) _defineProperties(Constructor, staticProps);
-    Object.defineProperty(Constructor, "prototype", {
-      writable: false
-    });
-    return Constructor;
-  }
-  function _defineProperty(obj, key, value) {
-    key = _toPropertyKey(key);
-    if (key in obj) {
-      Object.defineProperty(obj, key, {
-        value: value,
-        enumerable: true,
-        configurable: true,
-        writable: true
-      });
-    } else {
-      obj[key] = value;
-    }
-    return obj;
-  }
-  function _toConsumableArray(arr) {
-    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
-  }
-  function _arrayWithoutHoles(arr) {
-    if (Array.isArray(arr)) return _arrayLikeToArray(arr);
-  }
-  function _iterableToArray(iter) {
-    if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
-  }
-  function _unsupportedIterableToArray(o, minLen) {
-    if (!o) return;
-    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
-    var n = Object.prototype.toString.call(o).slice(8, -1);
-    if (n === "Object" && o.constructor) n = o.constructor.name;
-    if (n === "Map" || n === "Set") return Array.from(o);
-    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
-  }
-  function _arrayLikeToArray(arr, len) {
-    if (len == null || len > arr.length) len = arr.length;
-    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
-    return arr2;
-  }
-  function _nonIterableSpread() {
-    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
-  }
-  function _toPrimitive(input, hint) {
-    if (typeof input !== "object" || input === null) return input;
-    var prim = input[Symbol.toPrimitive];
-    if (prim !== undefined) {
-      var res = prim.call(input, hint || "default");
-      if (typeof res !== "object") return res;
-      throw new TypeError("@@toPrimitive must return a primitive value.");
-    }
-    return (hint === "string" ? String : Number)(input);
-  }
-  function _toPropertyKey(arg) {
-    var key = _toPrimitive(arg, "string");
-    return typeof key === "symbol" ? key : String(key);
-  }
-
-  var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';
-  var WINDOW = IS_BROWSER ? window : {};
-  var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;
-  var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;
-  var NAMESPACE = 'cropper';
-
-  // Actions
-  var ACTION_ALL = 'all';
-  var ACTION_CROP = 'crop';
-  var ACTION_MOVE = 'move';
-  var ACTION_ZOOM = 'zoom';
-  var ACTION_EAST = 'e';
-  var ACTION_WEST = 'w';
-  var ACTION_SOUTH = 's';
-  var ACTION_NORTH = 'n';
-  var ACTION_NORTH_EAST = 'ne';
-  var ACTION_NORTH_WEST = 'nw';
-  var ACTION_SOUTH_EAST = 'se';
-  var ACTION_SOUTH_WEST = 'sw';
-
-  // Classes
-  var CLASS_CROP = "".concat(NAMESPACE, "-crop");
-  var CLASS_DISABLED = "".concat(NAMESPACE, "-disabled");
-  var CLASS_HIDDEN = "".concat(NAMESPACE, "-hidden");
-  var CLASS_HIDE = "".concat(NAMESPACE, "-hide");
-  var CLASS_INVISIBLE = "".concat(NAMESPACE, "-invisible");
-  var CLASS_MODAL = "".concat(NAMESPACE, "-modal");
-  var CLASS_MOVE = "".concat(NAMESPACE, "-move");
-
-  // Data keys
-  var DATA_ACTION = "".concat(NAMESPACE, "Action");
-  var DATA_PREVIEW = "".concat(NAMESPACE, "Preview");
-
-  // Drag modes
-  var DRAG_MODE_CROP = 'crop';
-  var DRAG_MODE_MOVE = 'move';
-  var DRAG_MODE_NONE = 'none';
-
-  // Events
-  var EVENT_CROP = 'crop';
-  var EVENT_CROP_END = 'cropend';
-  var EVENT_CROP_MOVE = 'cropmove';
-  var EVENT_CROP_START = 'cropstart';
-  var EVENT_DBLCLICK = 'dblclick';
-  var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';
-  var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';
-  var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';
-  var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;
-  var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;
-  var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;
-  var EVENT_READY = 'ready';
-  var EVENT_RESIZE = 'resize';
-  var EVENT_WHEEL = 'wheel';
-  var EVENT_ZOOM = 'zoom';
-
-  // Mime types
-  var MIME_TYPE_JPEG = 'image/jpeg';
-
-  // RegExps
-  var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;
-  var REGEXP_DATA_URL = /^data:/;
-  var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/;
-  var REGEXP_TAG_NAME = /^img|canvas$/i;
-
-  // Misc
-  // Inspired by the default width and height of a canvas element.
-  var MIN_CONTAINER_WIDTH = 200;
-  var MIN_CONTAINER_HEIGHT = 100;
-
-  var DEFAULTS = {
-    // Define the view mode of the cropper
-    viewMode: 0,
-    // 0, 1, 2, 3
-
-    // Define the dragging mode of the cropper
-    dragMode: DRAG_MODE_CROP,
-    // 'crop', 'move' or 'none'
-
-    // Define the initial aspect ratio of the crop box
-    initialAspectRatio: NaN,
-    // Define the aspect ratio of the crop box
-    aspectRatio: NaN,
-    // An object with the previous cropping result data
-    data: null,
-    // A selector for adding extra containers to preview
-    preview: '',
-    // Re-render the cropper when resize the window
-    responsive: true,
-    // Restore the cropped area after resize the window
-    restore: true,
-    // Check if the current image is a cross-origin image
-    checkCrossOrigin: true,
-    // Check the current image's Exif Orientation information
-    checkOrientation: true,
-    // Show the black modal
-    modal: true,
-    // Show the dashed lines for guiding
-    guides: true,
-    // Show the center indicator for guiding
-    center: true,
-    // Show the white modal to highlight the crop box
-    highlight: true,
-    // Show the grid background
-    background: true,
-    // Enable to crop the image automatically when initialize
-    autoCrop: true,
-    // Define the percentage of automatic cropping area when initializes
-    autoCropArea: 0.8,
-    // Enable to move the image
-    movable: true,
-    // Enable to rotate the image
-    rotatable: true,
-    // Enable to scale the image
-    scalable: true,
-    // Enable to zoom the image
-    zoomable: true,
-    // Enable to zoom the image by dragging touch
-    zoomOnTouch: true,
-    // Enable to zoom the image by wheeling mouse
-    zoomOnWheel: true,
-    // Define zoom ratio when zoom the image by wheeling mouse
-    wheelZoomRatio: 0.1,
-    // Enable to move the crop box
-    cropBoxMovable: true,
-    // Enable to resize the crop box
-    cropBoxResizable: true,
-    // Toggle drag mode between "crop" and "move" when click twice on the cropper
-    toggleDragModeOnDblclick: true,
-    // Size limitation
-    minCanvasWidth: 0,
-    minCanvasHeight: 0,
-    minCropBoxWidth: 0,
-    minCropBoxHeight: 0,
-    minContainerWidth: MIN_CONTAINER_WIDTH,
-    minContainerHeight: MIN_CONTAINER_HEIGHT,
-    // Shortcuts of events
-    ready: null,
-    cropstart: null,
-    cropmove: null,
-    cropend: null,
-    crop: null,
-    zoom: null
-  };
-
-  var TEMPLATE = '<div class="cropper-container" touch-action="none">' + '<div class="cropper-wrap-box">' + '<div class="cropper-canvas"></div>' + '</div>' + '<div class="cropper-drag-box"></div>' + '<div class="cropper-crop-box">' + '<span class="cropper-view-box"></span>' + '<span class="cropper-dashed dashed-h"></span>' + '<span class="cropper-dashed dashed-v"></span>' + '<span class="cropper-center"></span>' + '<span class="cropper-face"></span>' + '<span class="cropper-line line-e" data-cropper-action="e"></span>' + '<span class="cropper-line line-n" data-cropper-action="n"></span>' + '<span class="cropper-line line-w" data-cropper-action="w"></span>' + '<span class="cropper-line line-s" data-cropper-action="s"></span>' + '<span class="cropper-point point-e" data-cropper-action="e"></span>' + '<span class="cropper-point point-n" data-cropper-action="n"></span>' + '<span class="cropper-point point-w" data-cropper-action="w"></span>' + '<span class="cropper-point point-s" data-cropper-action="s"></span>' + '<span class="cropper-point point-ne" data-cropper-action="ne"></span>' + '<span class="cropper-point point-nw" data-cropper-action="nw"></span>' + '<span class="cropper-point point-sw" data-cropper-action="sw"></span>' + '<span class="cropper-point point-se" data-cropper-action="se"></span>' + '</div>' + '</div>';
-
-  /**
-   * Check if the given value is not a number.
-   */
-  var isNaN = Number.isNaN || WINDOW.isNaN;
-
-  /**
-   * Check if the given value is a number.
-   * @param {*} value - The value to check.
-   * @returns {boolean} Returns `true` if the given value is a number, else `false`.
-   */
-  function isNumber(value) {
-    return typeof value === 'number' && !isNaN(value);
-  }
-
-  /**
-   * Check if the given value is a positive number.
-   * @param {*} value - The value to check.
-   * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.
-   */
-  var isPositiveNumber = function isPositiveNumber(value) {
-    return value > 0 && value < Infinity;
-  };
-
-  /**
-   * Check if the given value is undefined.
-   * @param {*} value - The value to check.
-   * @returns {boolean} Returns `true` if the given value is undefined, else `false`.
-   */
-  function isUndefined(value) {
-    return typeof value === 'undefined';
-  }
-
-  /**
-   * Check if the given value is an object.
-   * @param {*} value - The value to check.
-   * @returns {boolean} Returns `true` if the given value is an object, else `false`.
-   */
-  function isObject(value) {
-    return _typeof(value) === 'object' && value !== null;
-  }
-  var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-  /**
-   * Check if the given value is a plain object.
-   * @param {*} value - The value to check.
-   * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.
-   */
-  function isPlainObject(value) {
-    if (!isObject(value)) {
-      return false;
-    }
-    try {
-      var _constructor = value.constructor;
-      var prototype = _constructor.prototype;
-      return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');
-    } catch (error) {
-      return false;
-    }
-  }
-
-  /**
-   * Check if the given value is a function.
-   * @param {*} value - The value to check.
-   * @returns {boolean} Returns `true` if the given value is a function, else `false`.
-   */
-  function isFunction(value) {
-    return typeof value === 'function';
-  }
-  var slice = Array.prototype.slice;
-
-  /**
-   * Convert array-like or iterable object to an array.
-   * @param {*} value - The value to convert.
-   * @returns {Array} Returns a new array.
-   */
-  function toArray(value) {
-    return Array.from ? Array.from(value) : slice.call(value);
-  }
-
-  /**
-   * Iterate the given data.
-   * @param {*} data - The data to iterate.
-   * @param {Function} callback - The process function for each element.
-   * @returns {*} The original data.
-   */
-  function forEach(data, callback) {
-    if (data && isFunction(callback)) {
-      if (Array.isArray(data) || isNumber(data.length) /* array-like */) {
-        toArray(data).forEach(function (value, key) {
-          callback.call(data, value, key, data);
-        });
-      } else if (isObject(data)) {
-        Object.keys(data).forEach(function (key) {
-          callback.call(data, data[key], key, data);
-        });
-      }
-    }
-    return data;
-  }
-
-  /**
-   * Extend the given object.
-   * @param {*} target - The target object to extend.
-   * @param {*} args - The rest objects for merging to the target object.
-   * @returns {Object} The extended object.
-   */
-  var assign = Object.assign || function assign(target) {
-    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
-      args[_key - 1] = arguments[_key];
-    }
-    if (isObject(target) && args.length > 0) {
-      args.forEach(function (arg) {
-        if (isObject(arg)) {
-          Object.keys(arg).forEach(function (key) {
-            target[key] = arg[key];
-          });
-        }
-      });
-    }
-    return target;
-  };
-  var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/;
-
-  /**
-   * Normalize decimal number.
-   * Check out {@link https://0.30000000000000004.com/}
-   * @param {number} value - The value to normalize.
-   * @param {number} [times=100000000000] - The times for normalizing.
-   * @returns {number} Returns the normalized number.
-   */
-  function normalizeDecimalNumber(value) {
-    var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;
-    return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;
-  }
-  var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;
-
-  /**
-   * Apply styles to the given element.
-   * @param {Element} element - The target element.
-   * @param {Object} styles - The styles for applying.
-   */
-  function setStyle(element, styles) {
-    var style = element.style;
-    forEach(styles, function (value, property) {
-      if (REGEXP_SUFFIX.test(property) && isNumber(value)) {
-        value = "".concat(value, "px");
-      }
-      style[property] = value;
-    });
-  }
-
-  /**
-   * Check if the given element has a special class.
-   * @param {Element} element - The element to check.
-   * @param {string} value - The class to search.
-   * @returns {boolean} Returns `true` if the special class was found.
-   */
-  function hasClass(element, value) {
-    return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;
-  }
-
-  /**
-   * Add classes to the given element.
-   * @param {Element} element - The target element.
-   * @param {string} value - The classes to be added.
-   */
-  function addClass(element, value) {
-    if (!value) {
-      return;
-    }
-    if (isNumber(element.length)) {
-      forEach(element, function (elem) {
-        addClass(elem, value);
-      });
-      return;
-    }
-    if (element.classList) {
-      element.classList.add(value);
-      return;
-    }
-    var className = element.className.trim();
-    if (!className) {
-      element.className = value;
-    } else if (className.indexOf(value) < 0) {
-      element.className = "".concat(className, " ").concat(value);
-    }
-  }
-
-  /**
-   * Remove classes from the given element.
-   * @param {Element} element - The target element.
-   * @param {string} value - The classes to be removed.
-   */
-  function removeClass(element, value) {
-    if (!value) {
-      return;
-    }
-    if (isNumber(element.length)) {
-      forEach(element, function (elem) {
-        removeClass(elem, value);
-      });
-      return;
-    }
-    if (element.classList) {
-      element.classList.remove(value);
-      return;
-    }
-    if (element.className.indexOf(value) >= 0) {
-      element.className = element.className.replace(value, '');
-    }
-  }
-
-  /**
-   * Add or remove classes from the given element.
-   * @param {Element} element - The target element.
-   * @param {string} value - The classes to be toggled.
-   * @param {boolean} added - Add only.
-   */
-  function toggleClass(element, value, added) {
-    if (!value) {
-      return;
-    }
-    if (isNumber(element.length)) {
-      forEach(element, function (elem) {
-        toggleClass(elem, value, added);
-      });
-      return;
-    }
-
-    // IE10-11 doesn't support the second parameter of `classList.toggle`
-    if (added) {
-      addClass(element, value);
-    } else {
-      removeClass(element, value);
-    }
-  }
-  var REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g;
-
-  /**
-   * Transform the given string from camelCase to kebab-case
-   * @param {string} value - The value to transform.
-   * @returns {string} The transformed value.
-   */
-  function toParamCase(value) {
-    return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();
-  }
-
-  /**
-   * Get data from the given element.
-   * @param {Element} element - The target element.
-   * @param {string} name - The data key to get.
-   * @returns {string} The data value.
-   */
-  function getData(element, name) {
-    if (isObject(element[name])) {
-      return element[name];
-    }
-    if (element.dataset) {
-      return element.dataset[name];
-    }
-    return element.getAttribute("data-".concat(toParamCase(name)));
-  }
-
-  /**
-   * Set data to the given element.
-   * @param {Element} element - The target element.
-   * @param {string} name - The data key to set.
-   * @param {string} data - The data value.
-   */
-  function setData(element, name, data) {
-    if (isObject(data)) {
-      element[name] = data;
-    } else if (element.dataset) {
-      element.dataset[name] = data;
-    } else {
-      element.setAttribute("data-".concat(toParamCase(name)), data);
-    }
-  }
-
-  /**
-   * Remove data from the given element.
-   * @param {Element} element - The target element.
-   * @param {string} name - The data key to remove.
-   */
-  function removeData(element, name) {
-    if (isObject(element[name])) {
-      try {
-        delete element[name];
-      } catch (error) {
-        element[name] = undefined;
-      }
-    } else if (element.dataset) {
-      // #128 Safari not allows to delete dataset property
-      try {
-        delete element.dataset[name];
-      } catch (error) {
-        element.dataset[name] = undefined;
-      }
-    } else {
-      element.removeAttribute("data-".concat(toParamCase(name)));
-    }
-  }
-  var REGEXP_SPACES = /\s\s*/;
-  var onceSupported = function () {
-    var supported = false;
-    if (IS_BROWSER) {
-      var once = false;
-      var listener = function listener() {};
-      var options = Object.defineProperty({}, 'once', {
-        get: function get() {
-          supported = true;
-          return once;
-        },
-        /**
-         * This setter can fix a `TypeError` in strict mode
-         * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}
-         * @param {boolean} value - The value to set
-         */
-        set: function set(value) {
-          once = value;
-        }
-      });
-      WINDOW.addEventListener('test', listener, options);
-      WINDOW.removeEventListener('test', listener, options);
-    }
-    return supported;
-  }();
-
-  /**
-   * Remove event listener from the target element.
-   * @param {Element} element - The event target.
-   * @param {string} type - The event type(s).
-   * @param {Function} listener - The event listener.
-   * @param {Object} options - The event options.
-   */
-  function removeListener(element, type, listener) {
-    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
-    var handler = listener;
-    type.trim().split(REGEXP_SPACES).forEach(function (event) {
-      if (!onceSupported) {
-        var listeners = element.listeners;
-        if (listeners && listeners[event] && listeners[event][listener]) {
-          handler = listeners[event][listener];
-          delete listeners[event][listener];
-          if (Object.keys(listeners[event]).length === 0) {
-            delete listeners[event];
-          }
-          if (Object.keys(listeners).length === 0) {
-            delete element.listeners;
-          }
-        }
-      }
-      element.removeEventListener(event, handler, options);
-    });
-  }
-
-  /**
-   * Add event listener to the target element.
-   * @param {Element} element - The event target.
-   * @param {string} type - The event type(s).
-   * @param {Function} listener - The event listener.
-   * @param {Object} options - The event options.
-   */
-  function addListener(element, type, listener) {
-    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
-    var _handler = listener;
-    type.trim().split(REGEXP_SPACES).forEach(function (event) {
-      if (options.once && !onceSupported) {
-        var _element$listeners = element.listeners,
-          listeners = _element$listeners === void 0 ? {} : _element$listeners;
-        _handler = function handler() {
-          delete listeners[event][listener];
-          element.removeEventListener(event, _handler, options);
-          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
-            args[_key2] = arguments[_key2];
-          }
-          listener.apply(element, args);
-        };
-        if (!listeners[event]) {
-          listeners[event] = {};
-        }
-        if (listeners[event][listener]) {
-          element.removeEventListener(event, listeners[event][listener], options);
-        }
-        listeners[event][listener] = _handler;
-        element.listeners = listeners;
-      }
-      element.addEventListener(event, _handler, options);
-    });
-  }
-
-  /**
-   * Dispatch event on the target element.
-   * @param {Element} element - The event target.
-   * @param {string} type - The event type(s).
-   * @param {Object} data - The additional event data.
-   * @returns {boolean} Indicate if the event is default prevented or not.
-   */
-  function dispatchEvent(element, type, data) {
-    var event;
-
-    // Event and CustomEvent on IE9-11 are global objects, not constructors
-    if (isFunction(Event) && isFunction(CustomEvent)) {
-      event = new CustomEvent(type, {
-        detail: data,
-        bubbles: true,
-        cancelable: true
-      });
-    } else {
-      event = document.createEvent('CustomEvent');
-      event.initCustomEvent(type, true, true, data);
-    }
-    return element.dispatchEvent(event);
-  }
-
-  /**
-   * Get the offset base on the document.
-   * @param {Element} element - The target element.
-   * @returns {Object} The offset data.
-   */
-  function getOffset(element) {
-    var box = element.getBoundingClientRect();
-    return {
-      left: box.left + (window.pageXOffset - document.documentElement.clientLeft),
-      top: box.top + (window.pageYOffset - document.documentElement.clientTop)
-    };
-  }
-  var location = WINDOW.location;
-  var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i;
-
-  /**
-   * Check if the given URL is a cross origin URL.
-   * @param {string} url - The target URL.
-   * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.
-   */
-  function isCrossOriginURL(url) {
-    var parts = url.match(REGEXP_ORIGINS);
-    return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
-  }
-
-  /**
-   * Add timestamp to the given URL.
-   * @param {string} url - The target URL.
-   * @returns {string} The result URL.
-   */
-  function addTimestamp(url) {
-    var timestamp = "timestamp=".concat(new Date().getTime());
-    return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;
-  }
-
-  /**
-   * Get transforms base on the given object.
-   * @param {Object} obj - The target object.
-   * @returns {string} A string contains transform values.
-   */
-  function getTransforms(_ref) {
-    var rotate = _ref.rotate,
-      scaleX = _ref.scaleX,
-      scaleY = _ref.scaleY,
-      translateX = _ref.translateX,
-      translateY = _ref.translateY;
-    var values = [];
-    if (isNumber(translateX) && translateX !== 0) {
-      values.push("translateX(".concat(translateX, "px)"));
-    }
-    if (isNumber(translateY) && translateY !== 0) {
-      values.push("translateY(".concat(translateY, "px)"));
-    }
-
-    // Rotate should come first before scale to match orientation transform
-    if (isNumber(rotate) && rotate !== 0) {
-      values.push("rotate(".concat(rotate, "deg)"));
-    }
-    if (isNumber(scaleX) && scaleX !== 1) {
-      values.push("scaleX(".concat(scaleX, ")"));
-    }
-    if (isNumber(scaleY) && scaleY !== 1) {
-      values.push("scaleY(".concat(scaleY, ")"));
-    }
-    var transform = values.length ? values.join(' ') : 'none';
-    return {
-      WebkitTransform: transform,
-      msTransform: transform,
-      transform: transform
-    };
-  }
-
-  /**
-   * Get the max ratio of a group of pointers.
-   * @param {string} pointers - The target pointers.
-   * @returns {number} The result ratio.
-   */
-  function getMaxZoomRatio(pointers) {
-    var pointers2 = _objectSpread2({}, pointers);
-    var maxRatio = 0;
-    forEach(pointers, function (pointer, pointerId) {
-      delete pointers2[pointerId];
-      forEach(pointers2, function (pointer2) {
-        var x1 = Math.abs(pointer.startX - pointer2.startX);
-        var y1 = Math.abs(pointer.startY - pointer2.startY);
-        var x2 = Math.abs(pointer.endX - pointer2.endX);
-        var y2 = Math.abs(pointer.endY - pointer2.endY);
-        var z1 = Math.sqrt(x1 * x1 + y1 * y1);
-        var z2 = Math.sqrt(x2 * x2 + y2 * y2);
-        var ratio = (z2 - z1) / z1;
-        if (Math.abs(ratio) > Math.abs(maxRatio)) {
-          maxRatio = ratio;
-        }
-      });
-    });
-    return maxRatio;
-  }
-
-  /**
-   * Get a pointer from an event object.
-   * @param {Object} event - The target event object.
-   * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.
-   * @returns {Object} The result pointer contains start and/or end point coordinates.
-   */
-  function getPointer(_ref2, endOnly) {
-    var pageX = _ref2.pageX,
-      pageY = _ref2.pageY;
-    var end = {
-      endX: pageX,
-      endY: pageY
-    };
-    return endOnly ? end : _objectSpread2({
-      startX: pageX,
-      startY: pageY
-    }, end);
-  }
-
-  /**
-   * Get the center point coordinate of a group of pointers.
-   * @param {Object} pointers - The target pointers.
-   * @returns {Object} The center point coordinate.
-   */
-  function getPointersCenter(pointers) {
-    var pageX = 0;
-    var pageY = 0;
-    var count = 0;
-    forEach(pointers, function (_ref3) {
-      var startX = _ref3.startX,
-        startY = _ref3.startY;
-      pageX += startX;
-      pageY += startY;
-      count += 1;
-    });
-    pageX /= count;
-    pageY /= count;
-    return {
-      pageX: pageX,
-      pageY: pageY
-    };
-  }
-
-  /**
-   * Get the max sizes in a rectangle under the given aspect ratio.
-   * @param {Object} data - The original sizes.
-   * @param {string} [type='contain'] - The adjust type.
-   * @returns {Object} The result sizes.
-   */
-  function getAdjustedSizes(_ref4) {
-    var aspectRatio = _ref4.aspectRatio,
-      height = _ref4.height,
-      width = _ref4.width;
-    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';
-    var isValidWidth = isPositiveNumber(width);
-    var isValidHeight = isPositiveNumber(height);
-    if (isValidWidth && isValidHeight) {
-      var adjustedWidth = height * aspectRatio;
-      if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {
-        height = width / aspectRatio;
-      } else {
-        width = height * aspectRatio;
-      }
-    } else if (isValidWidth) {
-      height = width / aspectRatio;
-    } else if (isValidHeight) {
-      width = height * aspectRatio;
-    }
-    return {
-      width: width,
-      height: height
-    };
-  }
-
-  /**
-   * Get the new sizes of a rectangle after rotated.
-   * @param {Object} data - The original sizes.
-   * @returns {Object} The result sizes.
-   */
-  function getRotatedSizes(_ref5) {
-    var width = _ref5.width,
-      height = _ref5.height,
-      degree = _ref5.degree;
-    degree = Math.abs(degree) % 180;
-    if (degree === 90) {
-      return {
-        width: height,
-        height: width
-      };
-    }
-    var arc = degree % 90 * Math.PI / 180;
-    var sinArc = Math.sin(arc);
-    var cosArc = Math.cos(arc);
-    var newWidth = width * cosArc + height * sinArc;
-    var newHeight = width * sinArc + height * cosArc;
-    return degree > 90 ? {
-      width: newHeight,
-      height: newWidth
-    } : {
-      width: newWidth,
-      height: newHeight
-    };
-  }
-
-  /**
-   * Get a canvas which drew the given image.
-   * @param {HTMLImageElement} image - The image for drawing.
-   * @param {Object} imageData - The image data.
-   * @param {Object} canvasData - The canvas data.
-   * @param {Object} options - The options.
-   * @returns {HTMLCanvasElement} The result canvas.
-   */
-  function getSourceCanvas(image, _ref6, _ref7, _ref8) {
-    var imageAspectRatio = _ref6.aspectRatio,
-      imageNaturalWidth = _ref6.naturalWidth,
-      imageNaturalHeight = _ref6.naturalHeight,
-      _ref6$rotate = _ref6.rotate,
-      rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,
-      _ref6$scaleX = _ref6.scaleX,
-      scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,
-      _ref6$scaleY = _ref6.scaleY,
-      scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;
-    var aspectRatio = _ref7.aspectRatio,
-      naturalWidth = _ref7.naturalWidth,
-      naturalHeight = _ref7.naturalHeight;
-    var _ref8$fillColor = _ref8.fillColor,
-      fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,
-      _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,
-      imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,
-      _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,
-      imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,
-      _ref8$maxWidth = _ref8.maxWidth,
-      maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,
-      _ref8$maxHeight = _ref8.maxHeight,
-      maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,
-      _ref8$minWidth = _ref8.minWidth,
-      minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,
-      _ref8$minHeight = _ref8.minHeight,
-      minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;
-    var canvas = document.createElement('canvas');
-    var context = canvas.getContext('2d');
-    var maxSizes = getAdjustedSizes({
-      aspectRatio: aspectRatio,
-      width: maxWidth,
-      height: maxHeight
-    });
-    var minSizes = getAdjustedSizes({
-      aspectRatio: aspectRatio,
-      width: minWidth,
-      height: minHeight
-    }, 'cover');
-    var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));
-    var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));
-
-    // Note: should always use image's natural sizes for drawing as
-    // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90
-    var destMaxSizes = getAdjustedSizes({
-      aspectRatio: imageAspectRatio,
-      width: maxWidth,
-      height: maxHeight
-    });
-    var destMinSizes = getAdjustedSizes({
-      aspectRatio: imageAspectRatio,
-      width: minWidth,
-      height: minHeight
-    }, 'cover');
-    var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));
-    var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));
-    var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];
-    canvas.width = normalizeDecimalNumber(width);
-    canvas.height = normalizeDecimalNumber(height);
-    context.fillStyle = fillColor;
-    context.fillRect(0, 0, width, height);
-    context.save();
-    context.translate(width / 2, height / 2);
-    context.rotate(rotate * Math.PI / 180);
-    context.scale(scaleX, scaleY);
-    context.imageSmoothingEnabled = imageSmoothingEnabled;
-    context.imageSmoothingQuality = imageSmoothingQuality;
-    context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {
-      return Math.floor(normalizeDecimalNumber(param));
-    }))));
-    context.restore();
-    return canvas;
-  }
-  var fromCharCode = String.fromCharCode;
-
-  /**
-   * Get string from char code in data view.
-   * @param {DataView} dataView - The data view for read.
-   * @param {number} start - The start index.
-   * @param {number} length - The read length.
-   * @returns {string} The read result.
-   */
-  function getStringFromCharCode(dataView, start, length) {
-    var str = '';
-    length += start;
-    for (var i = start; i < length; i += 1) {
-      str += fromCharCode(dataView.getUint8(i));
-    }
-    return str;
-  }
-  var REGEXP_DATA_URL_HEAD = /^data:.*,/;
-
-  /**
-   * Transform Data URL to array buffer.
-   * @param {string} dataURL - The Data URL to transform.
-   * @returns {ArrayBuffer} The result array buffer.
-   */
-  function dataURLToArrayBuffer(dataURL) {
-    var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');
-    var binary = atob(base64);
-    var arrayBuffer = new ArrayBuffer(binary.length);
-    var uint8 = new Uint8Array(arrayBuffer);
-    forEach(uint8, function (value, i) {
-      uint8[i] = binary.charCodeAt(i);
-    });
-    return arrayBuffer;
-  }
-
-  /**
-   * Transform array buffer to Data URL.
-   * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.
-   * @param {string} mimeType - The mime type of the Data URL.
-   * @returns {string} The result Data URL.
-   */
-  function arrayBufferToDataURL(arrayBuffer, mimeType) {
-    var chunks = [];
-
-    // Chunk Typed Array for better performance (#435)
-    var chunkSize = 8192;
-    var uint8 = new Uint8Array(arrayBuffer);
-    while (uint8.length > 0) {
-      // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9
-      // eslint-disable-next-line prefer-spread
-      chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));
-      uint8 = uint8.subarray(chunkSize);
-    }
-    return "data:".concat(mimeType, ";base64,").concat(btoa(chunks.join('')));
-  }
-
-  /**
-   * Get orientation value from given array buffer.
-   * @param {ArrayBuffer} arrayBuffer - The array buffer to read.
-   * @returns {number} The read orientation value.
-   */
-  function resetAndGetOrientation(arrayBuffer) {
-    var dataView = new DataView(arrayBuffer);
-    var orientation;
-
-    // Ignores range error when the image does not have correct Exif information
-    try {
-      var littleEndian;
-      var app1Start;
-      var ifdStart;
-
-      // Only handle JPEG image (start by 0xFFD8)
-      if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {
-        var length = dataView.byteLength;
-        var offset = 2;
-        while (offset + 1 < length) {
-          if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {
-            app1Start = offset;
-            break;
-          }
-          offset += 1;
-        }
-      }
-      if (app1Start) {
-        var exifIDCode = app1Start + 4;
-        var tiffOffset = app1Start + 10;
-        if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {
-          var endianness = dataView.getUint16(tiffOffset);
-          littleEndian = endianness === 0x4949;
-          if (littleEndian || endianness === 0x4D4D /* bigEndian */) {
-            if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {
-              var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);
-              if (firstIFDOffset >= 0x00000008) {
-                ifdStart = tiffOffset + firstIFDOffset;
-              }
-            }
-          }
-        }
-      }
-      if (ifdStart) {
-        var _length = dataView.getUint16(ifdStart, littleEndian);
-        var _offset;
-        var i;
-        for (i = 0; i < _length; i += 1) {
-          _offset = ifdStart + i * 12 + 2;
-          if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {
-            // 8 is the offset of the current tag's value
-            _offset += 8;
-
-            // Get the original orientation value
-            orientation = dataView.getUint16(_offset, littleEndian);
-
-            // Override the orientation with its default value
-            dataView.setUint16(_offset, 1, littleEndian);
-            break;
-          }
-        }
-      }
-    } catch (error) {
-      orientation = 1;
-    }
-    return orientation;
-  }
-
-  /**
-   * Parse Exif Orientation value.
-   * @param {number} orientation - The orientation to parse.
-   * @returns {Object} The parsed result.
-   */
-  function parseOrientation(orientation) {
-    var rotate = 0;
-    var scaleX = 1;
-    var scaleY = 1;
-    switch (orientation) {
-      // Flip horizontal
-      case 2:
-        scaleX = -1;
-        break;
-
-      // Rotate left 180°
-      case 3:
-        rotate = -180;
-        break;
-
-      // Flip vertical
-      case 4:
-        scaleY = -1;
-        break;
-
-      // Flip vertical and rotate right 90°
-      case 5:
-        rotate = 90;
-        scaleY = -1;
-        break;
-
-      // Rotate right 90°
-      case 6:
-        rotate = 90;
-        break;
-
-      // Flip horizontal and rotate right 90°
-      case 7:
-        rotate = 90;
-        scaleX = -1;
-        break;
-
-      // Rotate left 90°
-      case 8:
-        rotate = -90;
-        break;
-    }
-    return {
-      rotate: rotate,
-      scaleX: scaleX,
-      scaleY: scaleY
-    };
-  }
-
-  var render = {
-    render: function render() {
-      this.initContainer();
-      this.initCanvas();
-      this.initCropBox();
-      this.renderCanvas();
-      if (this.cropped) {
-        this.renderCropBox();
-      }
-    },
-    initContainer: function initContainer() {
-      var element = this.element,
-        options = this.options,
-        container = this.container,
-        cropper = this.cropper;
-      var minWidth = Number(options.minContainerWidth);
-      var minHeight = Number(options.minContainerHeight);
-      addClass(cropper, CLASS_HIDDEN);
-      removeClass(element, CLASS_HIDDEN);
-      var containerData = {
-        width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),
-        height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)
-      };
-      this.containerData = containerData;
-      setStyle(cropper, {
-        width: containerData.width,
-        height: containerData.height
-      });
-      addClass(element, CLASS_HIDDEN);
-      removeClass(cropper, CLASS_HIDDEN);
-    },
-    // Canvas (image wrapper)
-    initCanvas: function initCanvas() {
-      var containerData = this.containerData,
-        imageData = this.imageData;
-      var viewMode = this.options.viewMode;
-      var rotated = Math.abs(imageData.rotate) % 180 === 90;
-      var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;
-      var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;
-      var aspectRatio = naturalWidth / naturalHeight;
-      var canvasWidth = containerData.width;
-      var canvasHeight = containerData.height;
-      if (containerData.height * aspectRatio > containerData.width) {
-        if (viewMode === 3) {
-          canvasWidth = containerData.height * aspectRatio;
-        } else {
-          canvasHeight = containerData.width / aspectRatio;
-        }
-      } else if (viewMode === 3) {
-        canvasHeight = containerData.width / aspectRatio;
-      } else {
-        canvasWidth = containerData.height * aspectRatio;
-      }
-      var canvasData = {
-        aspectRatio: aspectRatio,
-        naturalWidth: naturalWidth,
-        naturalHeight: naturalHeight,
-        width: canvasWidth,
-        height: canvasHeight
-      };
-      this.canvasData = canvasData;
-      this.limited = viewMode === 1 || viewMode === 2;
-      this.limitCanvas(true, true);
-      canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);
-      canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);
-      canvasData.left = (containerData.width - canvasData.width) / 2;
-      canvasData.top = (containerData.height - canvasData.height) / 2;
-      canvasData.oldLeft = canvasData.left;
-      canvasData.oldTop = canvasData.top;
-      this.initialCanvasData = assign({}, canvasData);
-    },
-    limitCanvas: function limitCanvas(sizeLimited, positionLimited) {
-      var options = this.options,
-        containerData = this.containerData,
-        canvasData = this.canvasData,
-        cropBoxData = this.cropBoxData;
-      var viewMode = options.viewMode;
-      var aspectRatio = canvasData.aspectRatio;
-      var cropped = this.cropped && cropBoxData;
-      if (sizeLimited) {
-        var minCanvasWidth = Number(options.minCanvasWidth) || 0;
-        var minCanvasHeight = Number(options.minCanvasHeight) || 0;
-        if (viewMode > 1) {
-          minCanvasWidth = Math.max(minCanvasWidth, containerData.width);
-          minCanvasHeight = Math.max(minCanvasHeight, containerData.height);
-          if (viewMode === 3) {
-            if (minCanvasHeight * aspectRatio > minCanvasWidth) {
-              minCanvasWidth = minCanvasHeight * aspectRatio;
-            } else {
-              minCanvasHeight = minCanvasWidth / aspectRatio;
-            }
-          }
-        } else if (viewMode > 0) {
-          if (minCanvasWidth) {
-            minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);
-          } else if (minCanvasHeight) {
-            minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);
-          } else if (cropped) {
-            minCanvasWidth = cropBoxData.width;
-            minCanvasHeight = cropBoxData.height;
-            if (minCanvasHeight * aspectRatio > minCanvasWidth) {
-              minCanvasWidth = minCanvasHeight * aspectRatio;
-            } else {
-              minCanvasHeight = minCanvasWidth / aspectRatio;
-            }
-          }
-        }
-        var _getAdjustedSizes = getAdjustedSizes({
-          aspectRatio: aspectRatio,
-          width: minCanvasWidth,
-          height: minCanvasHeight
-        });
-        minCanvasWidth = _getAdjustedSizes.width;
-        minCanvasHeight = _getAdjustedSizes.height;
-        canvasData.minWidth = minCanvasWidth;
-        canvasData.minHeight = minCanvasHeight;
-        canvasData.maxWidth = Infinity;
-        canvasData.maxHeight = Infinity;
-      }
-      if (positionLimited) {
-        if (viewMode > (cropped ? 0 : 1)) {
-          var newCanvasLeft = containerData.width - canvasData.width;
-          var newCanvasTop = containerData.height - canvasData.height;
-          canvasData.minLeft = Math.min(0, newCanvasLeft);
-          canvasData.minTop = Math.min(0, newCanvasTop);
-          canvasData.maxLeft = Math.max(0, newCanvasLeft);
-          canvasData.maxTop = Math.max(0, newCanvasTop);
-          if (cropped && this.limited) {
-            canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));
-            canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));
-            canvasData.maxLeft = cropBoxData.left;
-            canvasData.maxTop = cropBoxData.top;
-            if (viewMode === 2) {
-              if (canvasData.width >= containerData.width) {
-                canvasData.minLeft = Math.min(0, newCanvasLeft);
-                canvasData.maxLeft = Math.max(0, newCanvasLeft);
-              }
-              if (canvasData.height >= containerData.height) {
-                canvasData.minTop = Math.min(0, newCanvasTop);
-                canvasData.maxTop = Math.max(0, newCanvasTop);
-              }
-            }
-          }
-        } else {
-          canvasData.minLeft = -canvasData.width;
-          canvasData.minTop = -canvasData.height;
-          canvasData.maxLeft = containerData.width;
-          canvasData.maxTop = containerData.height;
-        }
-      }
-    },
-    renderCanvas: function renderCanvas(changed, transformed) {
-      var canvasData = this.canvasData,
-        imageData = this.imageData;
-      if (transformed) {
-        var _getRotatedSizes = getRotatedSizes({
-            width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),
-            height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),
-            degree: imageData.rotate || 0
-          }),
-          naturalWidth = _getRotatedSizes.width,
-          naturalHeight = _getRotatedSizes.height;
-        var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);
-        var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);
-        canvasData.left -= (width - canvasData.width) / 2;
-        canvasData.top -= (height - canvasData.height) / 2;
-        canvasData.width = width;
-        canvasData.height = height;
-        canvasData.aspectRatio = naturalWidth / naturalHeight;
-        canvasData.naturalWidth = naturalWidth;
-        canvasData.naturalHeight = naturalHeight;
-        this.limitCanvas(true, false);
-      }
-      if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {
-        canvasData.left = canvasData.oldLeft;
-      }
-      if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {
-        canvasData.top = canvasData.oldTop;
-      }
-      canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);
-      canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);
-      this.limitCanvas(false, true);
-      canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);
-      canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);
-      canvasData.oldLeft = canvasData.left;
-      canvasData.oldTop = canvasData.top;
-      setStyle(this.canvas, assign({
-        width: canvasData.width,
-        height: canvasData.height
-      }, getTransforms({
-        translateX: canvasData.left,
-        translateY: canvasData.top
-      })));
-      this.renderImage(changed);
-      if (this.cropped && this.limited) {
-        this.limitCropBox(true, true);
-      }
-    },
-    renderImage: function renderImage(changed) {
-      var canvasData = this.canvasData,
-        imageData = this.imageData;
-      var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);
-      var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);
-      assign(imageData, {
-        width: width,
-        height: height,
-        left: (canvasData.width - width) / 2,
-        top: (canvasData.height - height) / 2
-      });
-      setStyle(this.image, assign({
-        width: imageData.width,
-        height: imageData.height
-      }, getTransforms(assign({
-        translateX: imageData.left,
-        translateY: imageData.top
-      }, imageData))));
-      if (changed) {
-        this.output();
-      }
-    },
-    initCropBox: function initCropBox() {
-      var options = this.options,
-        canvasData = this.canvasData;
-      var aspectRatio = options.aspectRatio || options.initialAspectRatio;
-      var autoCropArea = Number(options.autoCropArea) || 0.8;
-      var cropBoxData = {
-        width: canvasData.width,
-        height: canvasData.height
-      };
-      if (aspectRatio) {
-        if (canvasData.height * aspectRatio > canvasData.width) {
-          cropBoxData.height = cropBoxData.width / aspectRatio;
-        } else {
-          cropBoxData.width = cropBoxData.height * aspectRatio;
-        }
-      }
-      this.cropBoxData = cropBoxData;
-      this.limitCropBox(true, true);
-
-      // Initialize auto crop area
-      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
-      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
-
-      // The width/height of auto crop area must large than "minWidth/Height"
-      cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);
-      cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);
-      cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;
-      cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;
-      cropBoxData.oldLeft = cropBoxData.left;
-      cropBoxData.oldTop = cropBoxData.top;
-      this.initialCropBoxData = assign({}, cropBoxData);
-    },
-    limitCropBox: function limitCropBox(sizeLimited, positionLimited) {
-      var options = this.options,
-        containerData = this.containerData,
-        canvasData = this.canvasData,
-        cropBoxData = this.cropBoxData,
-        limited = this.limited;
-      var aspectRatio = options.aspectRatio;
-      if (sizeLimited) {
-        var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;
-        var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;
-        var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;
-        var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height;
-
-        // The min/maxCropBoxWidth/Height must be less than container's width/height
-        minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);
-        minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);
-        if (aspectRatio) {
-          if (minCropBoxWidth && minCropBoxHeight) {
-            if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {
-              minCropBoxHeight = minCropBoxWidth / aspectRatio;
-            } else {
-              minCropBoxWidth = minCropBoxHeight * aspectRatio;
-            }
-          } else if (minCropBoxWidth) {
-            minCropBoxHeight = minCropBoxWidth / aspectRatio;
-          } else if (minCropBoxHeight) {
-            minCropBoxWidth = minCropBoxHeight * aspectRatio;
-          }
-          if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {
-            maxCropBoxHeight = maxCropBoxWidth / aspectRatio;
-          } else {
-            maxCropBoxWidth = maxCropBoxHeight * aspectRatio;
-          }
-        }
-
-        // The minWidth/Height must be less than maxWidth/Height
-        cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);
-        cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);
-        cropBoxData.maxWidth = maxCropBoxWidth;
-        cropBoxData.maxHeight = maxCropBoxHeight;
-      }
-      if (positionLimited) {
-        if (limited) {
-          cropBoxData.minLeft = Math.max(0, canvasData.left);
-          cropBoxData.minTop = Math.max(0, canvasData.top);
-          cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;
-          cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;
-        } else {
-          cropBoxData.minLeft = 0;
-          cropBoxData.minTop = 0;
-          cropBoxData.maxLeft = containerData.width - cropBoxData.width;
-          cropBoxData.maxTop = containerData.height - cropBoxData.height;
-        }
-      }
-    },
-    renderCropBox: function renderCropBox() {
-      var options = this.options,
-        containerData = this.containerData,
-        cropBoxData = this.cropBoxData;
-      if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {
-        cropBoxData.left = cropBoxData.oldLeft;
-      }
-      if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {
-        cropBoxData.top = cropBoxData.oldTop;
-      }
-      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);
-      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);
-      this.limitCropBox(false, true);
-      cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);
-      cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);
-      cropBoxData.oldLeft = cropBoxData.left;
-      cropBoxData.oldTop = cropBoxData.top;
-      if (options.movable && options.cropBoxMovable) {
-        // Turn to move the canvas when the crop box is equal to the container
-        setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);
-      }
-      setStyle(this.cropBox, assign({
-        width: cropBoxData.width,
-        height: cropBoxData.height
-      }, getTransforms({
-        translateX: cropBoxData.left,
-        translateY: cropBoxData.top
-      })));
-      if (this.cropped && this.limited) {
-        this.limitCanvas(true, true);
-      }
-      if (!this.disabled) {
-        this.output();
-      }
-    },
-    output: function output() {
-      this.preview();
-      dispatchEvent(this.element, EVENT_CROP, this.getData());
-    }
-  };
-
-  var preview = {
-    initPreview: function initPreview() {
-      var element = this.element,
-        crossOrigin = this.crossOrigin;
-      var preview = this.options.preview;
-      var url = crossOrigin ? this.crossOriginUrl : this.url;
-      var alt = element.alt || 'The image to preview';
-      var image = document.createElement('img');
-      if (crossOrigin) {
-        image.crossOrigin = crossOrigin;
-      }
-      image.src = url;
-      image.alt = alt;
-      this.viewBox.appendChild(image);
-      this.viewBoxImage = image;
-      if (!preview) {
-        return;
-      }
-      var previews = preview;
-      if (typeof preview === 'string') {
-        previews = element.ownerDocument.querySelectorAll(preview);
-      } else if (preview.querySelector) {
-        previews = [preview];
-      }
-      this.previews = previews;
-      forEach(previews, function (el) {
-        var img = document.createElement('img');
-
-        // Save the original size for recover
-        setData(el, DATA_PREVIEW, {
-          width: el.offsetWidth,
-          height: el.offsetHeight,
-          html: el.innerHTML
-        });
-        if (crossOrigin) {
-          img.crossOrigin = crossOrigin;
-        }
-        img.src = url;
-        img.alt = alt;
-
-        /**
-         * Override img element styles
-         * Add `display:block` to avoid margin top issue
-         * Add `height:auto` to override `height` attribute on IE8
-         * (Occur only when margin-top <= -height)
-         */
-        img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"';
-        el.innerHTML = '';
-        el.appendChild(img);
-      });
-    },
-    resetPreview: function resetPreview() {
-      forEach(this.previews, function (element) {
-        var data = getData(element, DATA_PREVIEW);
-        setStyle(element, {
-          width: data.width,
-          height: data.height
-        });
-        element.innerHTML = data.html;
-        removeData(element, DATA_PREVIEW);
-      });
-    },
-    preview: function preview() {
-      var imageData = this.imageData,
-        canvasData = this.canvasData,
-        cropBoxData = this.cropBoxData;
-      var cropBoxWidth = cropBoxData.width,
-        cropBoxHeight = cropBoxData.height;
-      var width = imageData.width,
-        height = imageData.height;
-      var left = cropBoxData.left - canvasData.left - imageData.left;
-      var top = cropBoxData.top - canvasData.top - imageData.top;
-      if (!this.cropped || this.disabled) {
-        return;
-      }
-      setStyle(this.viewBoxImage, assign({
-        width: width,
-        height: height
-      }, getTransforms(assign({
-        translateX: -left,
-        translateY: -top
-      }, imageData))));
-      forEach(this.previews, function (element) {
-        var data = getData(element, DATA_PREVIEW);
-        var originalWidth = data.width;
-        var originalHeight = data.height;
-        var newWidth = originalWidth;
-        var newHeight = originalHeight;
-        var ratio = 1;
-        if (cropBoxWidth) {
-          ratio = originalWidth / cropBoxWidth;
-          newHeight = cropBoxHeight * ratio;
-        }
-        if (cropBoxHeight && newHeight > originalHeight) {
-          ratio = originalHeight / cropBoxHeight;
-          newWidth = cropBoxWidth * ratio;
-          newHeight = originalHeight;
-        }
-        setStyle(element, {
-          width: newWidth,
-          height: newHeight
-        });
-        setStyle(element.getElementsByTagName('img')[0], assign({
-          width: width * ratio,
-          height: height * ratio
-        }, getTransforms(assign({
-          translateX: -left * ratio,
-          translateY: -top * ratio
-        }, imageData))));
-      });
-    }
-  };
-
-  var events = {
-    bind: function bind() {
-      var element = this.element,
-        options = this.options,
-        cropper = this.cropper;
-      if (isFunction(options.cropstart)) {
-        addListener(element, EVENT_CROP_START, options.cropstart);
-      }
-      if (isFunction(options.cropmove)) {
-        addListener(element, EVENT_CROP_MOVE, options.cropmove);
-      }
-      if (isFunction(options.cropend)) {
-        addListener(element, EVENT_CROP_END, options.cropend);
-      }
-      if (isFunction(options.crop)) {
-        addListener(element, EVENT_CROP, options.crop);
-      }
-      if (isFunction(options.zoom)) {
-        addListener(element, EVENT_ZOOM, options.zoom);
-      }
-      addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));
-      if (options.zoomable && options.zoomOnWheel) {
-        addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {
-          passive: false,
-          capture: true
-        });
-      }
-      if (options.toggleDragModeOnDblclick) {
-        addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));
-      }
-      addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));
-      addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));
-      if (options.responsive) {
-        addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));
-      }
-    },
-    unbind: function unbind() {
-      var element = this.element,
-        options = this.options,
-        cropper = this.cropper;
-      if (isFunction(options.cropstart)) {
-        removeListener(element, EVENT_CROP_START, options.cropstart);
-      }
-      if (isFunction(options.cropmove)) {
-        removeListener(element, EVENT_CROP_MOVE, options.cropmove);
-      }
-      if (isFunction(options.cropend)) {
-        removeListener(element, EVENT_CROP_END, options.cropend);
-      }
-      if (isFunction(options.crop)) {
-        removeListener(element, EVENT_CROP, options.crop);
-      }
-      if (isFunction(options.zoom)) {
-        removeListener(element, EVENT_ZOOM, options.zoom);
-      }
-      removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);
-      if (options.zoomable && options.zoomOnWheel) {
-        removeListener(cropper, EVENT_WHEEL, this.onWheel, {
-          passive: false,
-          capture: true
-        });
-      }
-      if (options.toggleDragModeOnDblclick) {
-        removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);
-      }
-      removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);
-      removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);
-      if (options.responsive) {
-        removeListener(window, EVENT_RESIZE, this.onResize);
-      }
-    }
-  };
-
-  var handlers = {
-    resize: function resize() {
-      if (this.disabled) {
-        return;
-      }
-      var options = this.options,
-        container = this.container,
-        containerData = this.containerData;
-      var ratioX = container.offsetWidth / containerData.width;
-      var ratioY = container.offsetHeight / containerData.height;
-      var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY;
-
-      // Resize when width changed or height changed
-      if (ratio !== 1) {
-        var canvasData;
-        var cropBoxData;
-        if (options.restore) {
-          canvasData = this.getCanvasData();
-          cropBoxData = this.getCropBoxData();
-        }
-        this.render();
-        if (options.restore) {
-          this.setCanvasData(forEach(canvasData, function (n, i) {
-            canvasData[i] = n * ratio;
-          }));
-          this.setCropBoxData(forEach(cropBoxData, function (n, i) {
-            cropBoxData[i] = n * ratio;
-          }));
-        }
-      }
-    },
-    dblclick: function dblclick() {
-      if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {
-        return;
-      }
-      this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);
-    },
-    wheel: function wheel(event) {
-      var _this = this;
-      var ratio = Number(this.options.wheelZoomRatio) || 0.1;
-      var delta = 1;
-      if (this.disabled) {
-        return;
-      }
-      event.preventDefault();
-
-      // Limit wheel speed to prevent zoom too fast (#21)
-      if (this.wheeling) {
-        return;
-      }
-      this.wheeling = true;
-      setTimeout(function () {
-        _this.wheeling = false;
-      }, 50);
-      if (event.deltaY) {
-        delta = event.deltaY > 0 ? 1 : -1;
-      } else if (event.wheelDelta) {
-        delta = -event.wheelDelta / 120;
-      } else if (event.detail) {
-        delta = event.detail > 0 ? 1 : -1;
-      }
-      this.zoom(-delta * ratio, event);
-    },
-    cropStart: function cropStart(event) {
-      var buttons = event.buttons,
-        button = event.button;
-      if (this.disabled
-
-      // Handle mouse event and pointer event and ignore touch event
-      || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && (
-      // No primary button (Usually the left button)
-      isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0
-
-      // Open context menu
-      || event.ctrlKey)) {
-        return;
-      }
-      var options = this.options,
-        pointers = this.pointers;
-      var action;
-      if (event.changedTouches) {
-        // Handle touch event
-        forEach(event.changedTouches, function (touch) {
-          pointers[touch.identifier] = getPointer(touch);
-        });
-      } else {
-        // Handle mouse event and pointer event
-        pointers[event.pointerId || 0] = getPointer(event);
-      }
-      if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {
-        action = ACTION_ZOOM;
-      } else {
-        action = getData(event.target, DATA_ACTION);
-      }
-      if (!REGEXP_ACTIONS.test(action)) {
-        return;
-      }
-      if (dispatchEvent(this.element, EVENT_CROP_START, {
-        originalEvent: event,
-        action: action
-      }) === false) {
-        return;
-      }
-
-      // This line is required for preventing page zooming in iOS browsers
-      event.preventDefault();
-      this.action = action;
-      this.cropping = false;
-      if (action === ACTION_CROP) {
-        this.cropping = true;
-        addClass(this.dragBox, CLASS_MODAL);
-      }
-    },
-    cropMove: function cropMove(event) {
-      var action = this.action;
-      if (this.disabled || !action) {
-        return;
-      }
-      var pointers = this.pointers;
-      event.preventDefault();
-      if (dispatchEvent(this.element, EVENT_CROP_MOVE, {
-        originalEvent: event,
-        action: action
-      }) === false) {
-        return;
-      }
-      if (event.changedTouches) {
-        forEach(event.changedTouches, function (touch) {
-          // The first parameter should not be undefined (#432)
-          assign(pointers[touch.identifier] || {}, getPointer(touch, true));
-        });
-      } else {
-        assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));
-      }
-      this.change(event);
-    },
-    cropEnd: function cropEnd(event) {
-      if (this.disabled) {
-        return;
-      }
-      var action = this.action,
-        pointers = this.pointers;
-      if (event.changedTouches) {
-        forEach(event.changedTouches, function (touch) {
-          delete pointers[touch.identifier];
-        });
-      } else {
-        delete pointers[event.pointerId || 0];
-      }
-      if (!action) {
-        return;
-      }
-      event.preventDefault();
-      if (!Object.keys(pointers).length) {
-        this.action = '';
-      }
-      if (this.cropping) {
-        this.cropping = false;
-        toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);
-      }
-      dispatchEvent(this.element, EVENT_CROP_END, {
-        originalEvent: event,
-        action: action
-      });
-    }
-  };
-
-  var change = {
-    change: function change(event) {
-      var options = this.options,
-        canvasData = this.canvasData,
-        containerData = this.containerData,
-        cropBoxData = this.cropBoxData,
-        pointers = this.pointers;
-      var action = this.action;
-      var aspectRatio = options.aspectRatio;
-      var left = cropBoxData.left,
-        top = cropBoxData.top,
-        width = cropBoxData.width,
-        height = cropBoxData.height;
-      var right = left + width;
-      var bottom = top + height;
-      var minLeft = 0;
-      var minTop = 0;
-      var maxWidth = containerData.width;
-      var maxHeight = containerData.height;
-      var renderable = true;
-      var offset;
-
-      // Locking aspect ratio in "free mode" by holding shift key
-      if (!aspectRatio && event.shiftKey) {
-        aspectRatio = width && height ? width / height : 1;
-      }
-      if (this.limited) {
-        minLeft = cropBoxData.minLeft;
-        minTop = cropBoxData.minTop;
-        maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);
-        maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);
-      }
-      var pointer = pointers[Object.keys(pointers)[0]];
-      var range = {
-        x: pointer.endX - pointer.startX,
-        y: pointer.endY - pointer.startY
-      };
-      var check = function check(side) {
-        switch (side) {
-          case ACTION_EAST:
-            if (right + range.x > maxWidth) {
-              range.x = maxWidth - right;
-            }
-            break;
-          case ACTION_WEST:
-            if (left + range.x < minLeft) {
-              range.x = minLeft - left;
-            }
-            break;
-          case ACTION_NORTH:
-            if (top + range.y < minTop) {
-              range.y = minTop - top;
-            }
-            break;
-          case ACTION_SOUTH:
-            if (bottom + range.y > maxHeight) {
-              range.y = maxHeight - bottom;
-            }
-            break;
-        }
-      };
-      switch (action) {
-        // Move crop box
-        case ACTION_ALL:
-          left += range.x;
-          top += range.y;
-          break;
-
-        // Resize crop box
-        case ACTION_EAST:
-          if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
-            renderable = false;
-            break;
-          }
-          check(ACTION_EAST);
-          width += range.x;
-          if (width < 0) {
-            action = ACTION_WEST;
-            width = -width;
-            left -= width;
-          }
-          if (aspectRatio) {
-            height = width / aspectRatio;
-            top += (cropBoxData.height - height) / 2;
-          }
-          break;
-        case ACTION_NORTH:
-          if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {
-            renderable = false;
-            break;
-          }
-          check(ACTION_NORTH);
-          height -= range.y;
-          top += range.y;
-          if (height < 0) {
-            action = ACTION_SOUTH;
-            height = -height;
-            top -= height;
-          }
-          if (aspectRatio) {
-            width = height * aspectRatio;
-            left += (cropBoxData.width - width) / 2;
-          }
-          break;
-        case ACTION_WEST:
-          if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {
-            renderable = false;
-            break;
-          }
-          check(ACTION_WEST);
-          width -= range.x;
-          left += range.x;
-          if (width < 0) {
-            action = ACTION_EAST;
-            width = -width;
-            left -= width;
-          }
-          if (aspectRatio) {
-            height = width / aspectRatio;
-            top += (cropBoxData.height - height) / 2;
-          }
-          break;
-        case ACTION_SOUTH:
-          if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {
-            renderable = false;
-            break;
-          }
-          check(ACTION_SOUTH);
-          height += range.y;
-          if (height < 0) {
-            action = ACTION_NORTH;
-            height = -height;
-            top -= height;
-          }
-          if (aspectRatio) {
-            width = height * aspectRatio;
-            left += (cropBoxData.width - width) / 2;
-          }
-          break;
-        case ACTION_NORTH_EAST:
-          if (aspectRatio) {
-            if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {
-              renderable = false;
-              break;
-            }
-            check(ACTION_NORTH);
-            height -= range.y;
-            top += range.y;
-            width = height * aspectRatio;
-          } else {
-            check(ACTION_NORTH);
-            check(ACTION_EAST);
-            if (range.x >= 0) {
-              if (right < maxWidth) {
-                width += range.x;
-              } else if (range.y <= 0 && top <= minTop) {
-                renderable = false;
-              }
-            } else {
-              width += range.x;
-            }
-            if (range.y <= 0) {
-              if (top > minTop) {
-                height -= range.y;
-                top += range.y;
-              }
-            } else {
-              height -= range.y;
-              top += range.y;
-            }
-          }
-          if (width < 0 && height < 0) {
-            action = ACTION_SOUTH_WEST;
-            height = -height;
-            width = -width;
-            top -= height;
-            left -= width;
-          } else if (width < 0) {
-            action = ACTION_NORTH_WEST;
-            width = -width;
-            left -= width;
-          } else if (height < 0) {
-            action = ACTION_SOUTH_EAST;
-            height = -height;
-            top -= height;
-          }
-          break;
-        case ACTION_NORTH_WEST:
-          if (aspectRatio) {
-            if (range.y <= 0 && (top <= minTop || left <= minLeft)) {
-              renderable = false;
-              break;
-            }
-            check(ACTION_NORTH);
-            height -= range.y;
-            top += range.y;
-            width = height * aspectRatio;
-            left += cropBoxData.width - width;
-          } else {
-            check(ACTION_NORTH);
-            check(ACTION_WEST);
-            if (range.x <= 0) {
-              if (left > minLeft) {
-                width -= range.x;
-                left += range.x;
-              } else if (range.y <= 0 && top <= minTop) {
-                renderable = false;
-              }
-            } else {
-              width -= range.x;
-              left += range.x;
-            }
-            if (range.y <= 0) {
-              if (top > minTop) {
-                height -= range.y;
-                top += range.y;
-              }
-            } else {
-              height -= range.y;
-              top += range.y;
-            }
-          }
-          if (width < 0 && height < 0) {
-            action = ACTION_SOUTH_EAST;
-            height = -height;
-            width = -width;
-            top -= height;
-            left -= width;
-          } else if (width < 0) {
-            action = ACTION_NORTH_EAST;
-            width = -width;
-            left -= width;
-          } else if (height < 0) {
-            action = ACTION_SOUTH_WEST;
-            height = -height;
-            top -= height;
-          }
-          break;
-        case ACTION_SOUTH_WEST:
-          if (aspectRatio) {
-            if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {
-              renderable = false;
-              break;
-            }
-            check(ACTION_WEST);
-            width -= range.x;
-            left += range.x;
-            height = width / aspectRatio;
-          } else {
-            check(ACTION_SOUTH);
-            check(ACTION_WEST);
-            if (range.x <= 0) {
-              if (left > minLeft) {
-                width -= range.x;
-                left += range.x;
-              } else if (range.y >= 0 && bottom >= maxHeight) {
-                renderable = false;
-              }
-            } else {
-              width -= range.x;
-              left += range.x;
-            }
-            if (range.y >= 0) {
-              if (bottom < maxHeight) {
-                height += range.y;
-              }
-            } else {
-              height += range.y;
-            }
-          }
-          if (width < 0 && height < 0) {
-            action = ACTION_NORTH_EAST;
-            height = -height;
-            width = -width;
-            top -= height;
-            left -= width;
-          } else if (width < 0) {
-            action = ACTION_SOUTH_EAST;
-            width = -width;
-            left -= width;
-          } else if (height < 0) {
-            action = ACTION_NORTH_WEST;
-            height = -height;
-            top -= height;
-          }
-          break;
-        case ACTION_SOUTH_EAST:
-          if (aspectRatio) {
-            if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {
-              renderable = false;
-              break;
-            }
-            check(ACTION_EAST);
-            width += range.x;
-            height = width / aspectRatio;
-          } else {
-            check(ACTION_SOUTH);
-            check(ACTION_EAST);
-            if (range.x >= 0) {
-              if (right < maxWidth) {
-                width += range.x;
-              } else if (range.y >= 0 && bottom >= maxHeight) {
-                renderable = false;
-              }
-            } else {
-              width += range.x;
-            }
-            if (range.y >= 0) {
-              if (bottom < maxHeight) {
-                height += range.y;
-              }
-            } else {
-              height += range.y;
-            }
-          }
-          if (width < 0 && height < 0) {
-            action = ACTION_NORTH_WEST;
-            height = -height;
-            width = -width;
-            top -= height;
-            left -= width;
-          } else if (width < 0) {
-            action = ACTION_SOUTH_WEST;
-            width = -width;
-            left -= width;
-          } else if (height < 0) {
-            action = ACTION_NORTH_EAST;
-            height = -height;
-            top -= height;
-          }
-          break;
-
-        // Move canvas
-        case ACTION_MOVE:
-          this.move(range.x, range.y);
-          renderable = false;
-          break;
-
-        // Zoom canvas
-        case ACTION_ZOOM:
-          this.zoom(getMaxZoomRatio(pointers), event);
-          renderable = false;
-          break;
-
-        // Create crop box
-        case ACTION_CROP:
-          if (!range.x || !range.y) {
-            renderable = false;
-            break;
-          }
-          offset = getOffset(this.cropper);
-          left = pointer.startX - offset.left;
-          top = pointer.startY - offset.top;
-          width = cropBoxData.minWidth;
-          height = cropBoxData.minHeight;
-          if (range.x > 0) {
-            action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;
-          } else if (range.x < 0) {
-            left -= width;
-            action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;
-          }
-          if (range.y < 0) {
-            top -= height;
-          }
-
-          // Show the crop box if is hidden
-          if (!this.cropped) {
-            removeClass(this.cropBox, CLASS_HIDDEN);
-            this.cropped = true;
-            if (this.limited) {
-              this.limitCropBox(true, true);
-            }
-          }
-          break;
-      }
-      if (renderable) {
-        cropBoxData.width = width;
-        cropBoxData.height = height;
-        cropBoxData.left = left;
-        cropBoxData.top = top;
-        this.action = action;
-        this.renderCropBox();
-      }
-
-      // Override
-      forEach(pointers, function (p) {
-        p.startX = p.endX;
-        p.startY = p.endY;
-      });
-    }
-  };
-
-  var methods = {
-    // Show the crop box manually
-    crop: function crop() {
-      if (this.ready && !this.cropped && !this.disabled) {
-        this.cropped = true;
-        this.limitCropBox(true, true);
-        if (this.options.modal) {
-          addClass(this.dragBox, CLASS_MODAL);
-        }
-        removeClass(this.cropBox, CLASS_HIDDEN);
-        this.setCropBoxData(this.initialCropBoxData);
-      }
-      return this;
-    },
-    // Reset the image and crop box to their initial states
-    reset: function reset() {
-      if (this.ready && !this.disabled) {
-        this.imageData = assign({}, this.initialImageData);
-        this.canvasData = assign({}, this.initialCanvasData);
-        this.cropBoxData = assign({}, this.initialCropBoxData);
-        this.renderCanvas();
-        if (this.cropped) {
-          this.renderCropBox();
-        }
-      }
-      return this;
-    },
-    // Clear the crop box
-    clear: function clear() {
-      if (this.cropped && !this.disabled) {
-        assign(this.cropBoxData, {
-          left: 0,
-          top: 0,
-          width: 0,
-          height: 0
-        });
-        this.cropped = false;
-        this.renderCropBox();
-        this.limitCanvas(true, true);
-
-        // Render canvas after crop box rendered
-        this.renderCanvas();
-        removeClass(this.dragBox, CLASS_MODAL);
-        addClass(this.cropBox, CLASS_HIDDEN);
-      }
-      return this;
-    },
-    /**
-     * Replace the image's src and rebuild the cropper
-     * @param {string} url - The new URL.
-     * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.
-     * @returns {Cropper} this
-     */
-    replace: function replace(url) {
-      var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-      if (!this.disabled && url) {
-        if (this.isImg) {
-          this.element.src = url;
-        }
-        if (hasSameSize) {
-          this.url = url;
-          this.image.src = url;
-          if (this.ready) {
-            this.viewBoxImage.src = url;
-            forEach(this.previews, function (element) {
-              element.getElementsByTagName('img')[0].src = url;
-            });
-          }
-        } else {
-          if (this.isImg) {
-            this.replaced = true;
-          }
-          this.options.data = null;
-          this.uncreate();
-          this.load(url);
-        }
-      }
-      return this;
-    },
-    // Enable (unfreeze) the cropper
-    enable: function enable() {
-      if (this.ready && this.disabled) {
-        this.disabled = false;
-        removeClass(this.cropper, CLASS_DISABLED);
-      }
-      return this;
-    },
-    // Disable (freeze) the cropper
-    disable: function disable() {
-      if (this.ready && !this.disabled) {
-        this.disabled = true;
-        addClass(this.cropper, CLASS_DISABLED);
-      }
-      return this;
-    },
-    /**
-     * Destroy the cropper and remove the instance from the image
-     * @returns {Cropper} this
-     */
-    destroy: function destroy() {
-      var element = this.element;
-      if (!element[NAMESPACE]) {
-        return this;
-      }
-      element[NAMESPACE] = undefined;
-      if (this.isImg && this.replaced) {
-        element.src = this.originalUrl;
-      }
-      this.uncreate();
-      return this;
-    },
-    /**
-     * Move the canvas with relative offsets
-     * @param {number} offsetX - The relative offset distance on the x-axis.
-     * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.
-     * @returns {Cropper} this
-     */
-    move: function move(offsetX) {
-      var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;
-      var _this$canvasData = this.canvasData,
-        left = _this$canvasData.left,
-        top = _this$canvasData.top;
-      return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));
-    },
-    /**
-     * Move the canvas to an absolute point
-     * @param {number} x - The x-axis coordinate.
-     * @param {number} [y=x] - The y-axis coordinate.
-     * @returns {Cropper} this
-     */
-    moveTo: function moveTo(x) {
-      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;
-      var canvasData = this.canvasData;
-      var changed = false;
-      x = Number(x);
-      y = Number(y);
-      if (this.ready && !this.disabled && this.options.movable) {
-        if (isNumber(x)) {
-          canvasData.left = x;
-          changed = true;
-        }
-        if (isNumber(y)) {
-          canvasData.top = y;
-          changed = true;
-        }
-        if (changed) {
-          this.renderCanvas(true);
-        }
-      }
-      return this;
-    },
-    /**
-     * Zoom the canvas with a relative ratio
-     * @param {number} ratio - The target ratio.
-     * @param {Event} _originalEvent - The original event if any.
-     * @returns {Cropper} this
-     */
-    zoom: function zoom(ratio, _originalEvent) {
-      var canvasData = this.canvasData;
-      ratio = Number(ratio);
-      if (ratio < 0) {
-        ratio = 1 / (1 - ratio);
-      } else {
-        ratio = 1 + ratio;
-      }
-      return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);
-    },
-    /**
-     * Zoom the canvas to an absolute ratio
-     * @param {number} ratio - The target ratio.
-     * @param {Object} pivot - The zoom pivot point coordinate.
-     * @param {Event} _originalEvent - The original event if any.
-     * @returns {Cropper} this
-     */
-    zoomTo: function zoomTo(ratio, pivot, _originalEvent) {
-      var options = this.options,
-        canvasData = this.canvasData;
-      var width = canvasData.width,
-        height = canvasData.height,
-        naturalWidth = canvasData.naturalWidth,
-        naturalHeight = canvasData.naturalHeight;
-      ratio = Number(ratio);
-      if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {
-        var newWidth = naturalWidth * ratio;
-        var newHeight = naturalHeight * ratio;
-        if (dispatchEvent(this.element, EVENT_ZOOM, {
-          ratio: ratio,
-          oldRatio: width / naturalWidth,
-          originalEvent: _originalEvent
-        }) === false) {
-          return this;
-        }
-        if (_originalEvent) {
-          var pointers = this.pointers;
-          var offset = getOffset(this.cropper);
-          var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {
-            pageX: _originalEvent.pageX,
-            pageY: _originalEvent.pageY
-          };
-
-          // Zoom from the triggering point of the event
-          canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);
-          canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);
-        } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {
-          canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);
-          canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);
-        } else {
-          // Zoom from the center of the canvas
-          canvasData.left -= (newWidth - width) / 2;
-          canvasData.top -= (newHeight - height) / 2;
-        }
-        canvasData.width = newWidth;
-        canvasData.height = newHeight;
-        this.renderCanvas(true);
-      }
-      return this;
-    },
-    /**
-     * Rotate the canvas with a relative degree
-     * @param {number} degree - The rotate degree.
-     * @returns {Cropper} this
-     */
-    rotate: function rotate(degree) {
-      return this.rotateTo((this.imageData.rotate || 0) + Number(degree));
-    },
-    /**
-     * Rotate the canvas to an absolute degree
-     * @param {number} degree - The rotate degree.
-     * @returns {Cropper} this
-     */
-    rotateTo: function rotateTo(degree) {
-      degree = Number(degree);
-      if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {
-        this.imageData.rotate = degree % 360;
-        this.renderCanvas(true, true);
-      }
-      return this;
-    },
-    /**
-     * Scale the image on the x-axis.
-     * @param {number} scaleX - The scale ratio on the x-axis.
-     * @returns {Cropper} this
-     */
-    scaleX: function scaleX(_scaleX) {
-      var scaleY = this.imageData.scaleY;
-      return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);
-    },
-    /**
-     * Scale the image on the y-axis.
-     * @param {number} scaleY - The scale ratio on the y-axis.
-     * @returns {Cropper} this
-     */
-    scaleY: function scaleY(_scaleY) {
-      var scaleX = this.imageData.scaleX;
-      return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);
-    },
-    /**
-     * Scale the image
-     * @param {number} scaleX - The scale ratio on the x-axis.
-     * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.
-     * @returns {Cropper} this
-     */
-    scale: function scale(scaleX) {
-      var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;
-      var imageData = this.imageData;
-      var transformed = false;
-      scaleX = Number(scaleX);
-      scaleY = Number(scaleY);
-      if (this.ready && !this.disabled && this.options.scalable) {
-        if (isNumber(scaleX)) {
-          imageData.scaleX = scaleX;
-          transformed = true;
-        }
-        if (isNumber(scaleY)) {
-          imageData.scaleY = scaleY;
-          transformed = true;
-        }
-        if (transformed) {
-          this.renderCanvas(true, true);
-        }
-      }
-      return this;
-    },
-    /**
-     * Get the cropped area position and size data (base on the original image)
-     * @param {boolean} [rounded=false] - Indicate if round the data values or not.
-     * @returns {Object} The result cropped data.
-     */
-    getData: function getData() {
-      var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
-      var options = this.options,
-        imageData = this.imageData,
-        canvasData = this.canvasData,
-        cropBoxData = this.cropBoxData;
-      var data;
-      if (this.ready && this.cropped) {
-        data = {
-          x: cropBoxData.left - canvasData.left,
-          y: cropBoxData.top - canvasData.top,
-          width: cropBoxData.width,
-          height: cropBoxData.height
-        };
-        var ratio = imageData.width / imageData.naturalWidth;
-        forEach(data, function (n, i) {
-          data[i] = n / ratio;
-        });
-        if (rounded) {
-          // In case rounding off leads to extra 1px in right or bottom border
-          // we should round the top-left corner and the dimension (#343).
-          var bottom = Math.round(data.y + data.height);
-          var right = Math.round(data.x + data.width);
-          data.x = Math.round(data.x);
-          data.y = Math.round(data.y);
-          data.width = right - data.x;
-          data.height = bottom - data.y;
-        }
-      } else {
-        data = {
-          x: 0,
-          y: 0,
-          width: 0,
-          height: 0
-        };
-      }
-      if (options.rotatable) {
-        data.rotate = imageData.rotate || 0;
-      }
-      if (options.scalable) {
-        data.scaleX = imageData.scaleX || 1;
-        data.scaleY = imageData.scaleY || 1;
-      }
-      return data;
-    },
-    /**
-     * Set the cropped area position and size with new data
-     * @param {Object} data - The new data.
-     * @returns {Cropper} this
-     */
-    setData: function setData(data) {
-      var options = this.options,
-        imageData = this.imageData,
-        canvasData = this.canvasData;
-      var cropBoxData = {};
-      if (this.ready && !this.disabled && isPlainObject(data)) {
-        var transformed = false;
-        if (options.rotatable) {
-          if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {
-            imageData.rotate = data.rotate;
-            transformed = true;
-          }
-        }
-        if (options.scalable) {
-          if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {
-            imageData.scaleX = data.scaleX;
-            transformed = true;
-          }
-          if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {
-            imageData.scaleY = data.scaleY;
-            transformed = true;
-          }
-        }
-        if (transformed) {
-          this.renderCanvas(true, true);
-        }
-        var ratio = imageData.width / imageData.naturalWidth;
-        if (isNumber(data.x)) {
-          cropBoxData.left = data.x * ratio + canvasData.left;
-        }
-        if (isNumber(data.y)) {
-          cropBoxData.top = data.y * ratio + canvasData.top;
-        }
-        if (isNumber(data.width)) {
-          cropBoxData.width = data.width * ratio;
-        }
-        if (isNumber(data.height)) {
-          cropBoxData.height = data.height * ratio;
-        }
-        this.setCropBoxData(cropBoxData);
-      }
-      return this;
-    },
-    /**
-     * Get the container size data.
-     * @returns {Object} The result container data.
-     */
-    getContainerData: function getContainerData() {
-      return this.ready ? assign({}, this.containerData) : {};
-    },
-    /**
-     * Get the image position and size data.
-     * @returns {Object} The result image data.
-     */
-    getImageData: function getImageData() {
-      return this.sized ? assign({}, this.imageData) : {};
-    },
-    /**
-     * Get the canvas position and size data.
-     * @returns {Object} The result canvas data.
-     */
-    getCanvasData: function getCanvasData() {
-      var canvasData = this.canvasData;
-      var data = {};
-      if (this.ready) {
-        forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {
-          data[n] = canvasData[n];
-        });
-      }
-      return data;
-    },
-    /**
-     * Set the canvas position and size with new data.
-     * @param {Object} data - The new canvas data.
-     * @returns {Cropper} this
-     */
-    setCanvasData: function setCanvasData(data) {
-      var canvasData = this.canvasData;
-      var aspectRatio = canvasData.aspectRatio;
-      if (this.ready && !this.disabled && isPlainObject(data)) {
-        if (isNumber(data.left)) {
-          canvasData.left = data.left;
-        }
-        if (isNumber(data.top)) {
-          canvasData.top = data.top;
-        }
-        if (isNumber(data.width)) {
-          canvasData.width = data.width;
-          canvasData.height = data.width / aspectRatio;
-        } else if (isNumber(data.height)) {
-          canvasData.height = data.height;
-          canvasData.width = data.height * aspectRatio;
-        }
-        this.renderCanvas(true);
-      }
-      return this;
-    },
-    /**
-     * Get the crop box position and size data.
-     * @returns {Object} The result crop box data.
-     */
-    getCropBoxData: function getCropBoxData() {
-      var cropBoxData = this.cropBoxData;
-      var data;
-      if (this.ready && this.cropped) {
-        data = {
-          left: cropBoxData.left,
-          top: cropBoxData.top,
-          width: cropBoxData.width,
-          height: cropBoxData.height
-        };
-      }
-      return data || {};
-    },
-    /**
-     * Set the crop box position and size with new data.
-     * @param {Object} data - The new crop box data.
-     * @returns {Cropper} this
-     */
-    setCropBoxData: function setCropBoxData(data) {
-      var cropBoxData = this.cropBoxData;
-      var aspectRatio = this.options.aspectRatio;
-      var widthChanged;
-      var heightChanged;
-      if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {
-        if (isNumber(data.left)) {
-          cropBoxData.left = data.left;
-        }
-        if (isNumber(data.top)) {
-          cropBoxData.top = data.top;
-        }
-        if (isNumber(data.width) && data.width !== cropBoxData.width) {
-          widthChanged = true;
-          cropBoxData.width = data.width;
-        }
-        if (isNumber(data.height) && data.height !== cropBoxData.height) {
-          heightChanged = true;
-          cropBoxData.height = data.height;
-        }
-        if (aspectRatio) {
-          if (widthChanged) {
-            cropBoxData.height = cropBoxData.width / aspectRatio;
-          } else if (heightChanged) {
-            cropBoxData.width = cropBoxData.height * aspectRatio;
-          }
-        }
-        this.renderCropBox();
-      }
-      return this;
-    },
-    /**
-     * Get a canvas drawn the cropped image.
-     * @param {Object} [options={}] - The config options.
-     * @returns {HTMLCanvasElement} - The result canvas.
-     */
-    getCroppedCanvas: function getCroppedCanvas() {
-      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-      if (!this.ready || !window.HTMLCanvasElement) {
-        return null;
-      }
-      var canvasData = this.canvasData;
-      var source = getSourceCanvas(this.image, this.imageData, canvasData, options);
-
-      // Returns the source canvas if it is not cropped.
-      if (!this.cropped) {
-        return source;
-      }
-      var _this$getData = this.getData(options.rounded),
-        initialX = _this$getData.x,
-        initialY = _this$getData.y,
-        initialWidth = _this$getData.width,
-        initialHeight = _this$getData.height;
-      var ratio = source.width / Math.floor(canvasData.naturalWidth);
-      if (ratio !== 1) {
-        initialX *= ratio;
-        initialY *= ratio;
-        initialWidth *= ratio;
-        initialHeight *= ratio;
-      }
-      var aspectRatio = initialWidth / initialHeight;
-      var maxSizes = getAdjustedSizes({
-        aspectRatio: aspectRatio,
-        width: options.maxWidth || Infinity,
-        height: options.maxHeight || Infinity
-      });
-      var minSizes = getAdjustedSizes({
-        aspectRatio: aspectRatio,
-        width: options.minWidth || 0,
-        height: options.minHeight || 0
-      }, 'cover');
-      var _getAdjustedSizes = getAdjustedSizes({
-          aspectRatio: aspectRatio,
-          width: options.width || (ratio !== 1 ? source.width : initialWidth),
-          height: options.height || (ratio !== 1 ? source.height : initialHeight)
-        }),
-        width = _getAdjustedSizes.width,
-        height = _getAdjustedSizes.height;
-      width = Math.min(maxSizes.width, Math.max(minSizes.width, width));
-      height = Math.min(maxSizes.height, Math.max(minSizes.height, height));
-      var canvas = document.createElement('canvas');
-      var context = canvas.getContext('2d');
-      canvas.width = normalizeDecimalNumber(width);
-      canvas.height = normalizeDecimalNumber(height);
-      context.fillStyle = options.fillColor || 'transparent';
-      context.fillRect(0, 0, width, height);
-      var _options$imageSmoothi = options.imageSmoothingEnabled,
-        imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,
-        imageSmoothingQuality = options.imageSmoothingQuality;
-      context.imageSmoothingEnabled = imageSmoothingEnabled;
-      if (imageSmoothingQuality) {
-        context.imageSmoothingQuality = imageSmoothingQuality;
-      }
-
-      // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage
-      var sourceWidth = source.width;
-      var sourceHeight = source.height;
-
-      // Source canvas parameters
-      var srcX = initialX;
-      var srcY = initialY;
-      var srcWidth;
-      var srcHeight;
-
-      // Destination canvas parameters
-      var dstX;
-      var dstY;
-      var dstWidth;
-      var dstHeight;
-      if (srcX <= -initialWidth || srcX > sourceWidth) {
-        srcX = 0;
-        srcWidth = 0;
-        dstX = 0;
-        dstWidth = 0;
-      } else if (srcX <= 0) {
-        dstX = -srcX;
-        srcX = 0;
-        srcWidth = Math.min(sourceWidth, initialWidth + srcX);
-        dstWidth = srcWidth;
-      } else if (srcX <= sourceWidth) {
-        dstX = 0;
-        srcWidth = Math.min(initialWidth, sourceWidth - srcX);
-        dstWidth = srcWidth;
-      }
-      if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {
-        srcY = 0;
-        srcHeight = 0;
-        dstY = 0;
-        dstHeight = 0;
-      } else if (srcY <= 0) {
-        dstY = -srcY;
-        srcY = 0;
-        srcHeight = Math.min(sourceHeight, initialHeight + srcY);
-        dstHeight = srcHeight;
-      } else if (srcY <= sourceHeight) {
-        dstY = 0;
-        srcHeight = Math.min(initialHeight, sourceHeight - srcY);
-        dstHeight = srcHeight;
-      }
-      var params = [srcX, srcY, srcWidth, srcHeight];
-
-      // Avoid "IndexSizeError"
-      if (dstWidth > 0 && dstHeight > 0) {
-        var scale = width / initialWidth;
-        params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);
-      }
-
-      // All the numerical parameters should be integer for `drawImage`
-      // https://github.com/fengyuanchen/cropper/issues/476
-      context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {
-        return Math.floor(normalizeDecimalNumber(param));
-      }))));
-      return canvas;
-    },
-    /**
-     * Change the aspect ratio of the crop box.
-     * @param {number} aspectRatio - The new aspect ratio.
-     * @returns {Cropper} this
-     */
-    setAspectRatio: function setAspectRatio(aspectRatio) {
-      var options = this.options;
-      if (!this.disabled && !isUndefined(aspectRatio)) {
-        // 0 -> NaN
-        options.aspectRatio = Math.max(0, aspectRatio) || NaN;
-        if (this.ready) {
-          this.initCropBox();
-          if (this.cropped) {
-            this.renderCropBox();
-          }
-        }
-      }
-      return this;
-    },
-    /**
-     * Change the drag mode.
-     * @param {string} mode - The new drag mode.
-     * @returns {Cropper} this
-     */
-    setDragMode: function setDragMode(mode) {
-      var options = this.options,
-        dragBox = this.dragBox,
-        face = this.face;
-      if (this.ready && !this.disabled) {
-        var croppable = mode === DRAG_MODE_CROP;
-        var movable = options.movable && mode === DRAG_MODE_MOVE;
-        mode = croppable || movable ? mode : DRAG_MODE_NONE;
-        options.dragMode = mode;
-        setData(dragBox, DATA_ACTION, mode);
-        toggleClass(dragBox, CLASS_CROP, croppable);
-        toggleClass(dragBox, CLASS_MOVE, movable);
-        if (!options.cropBoxMovable) {
-          // Sync drag mode to crop box when it is not movable
-          setData(face, DATA_ACTION, mode);
-          toggleClass(face, CLASS_CROP, croppable);
-          toggleClass(face, CLASS_MOVE, movable);
-        }
-      }
-      return this;
-    }
-  };
-
-  var AnotherCropper = WINDOW.Cropper;
-  var Cropper = /*#__PURE__*/function () {
-    /**
-     * Create a new Cropper.
-     * @param {Element} element - The target element for cropping.
-     * @param {Object} [options={}] - The configuration options.
-     */
-    function Cropper(element) {
-      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-      _classCallCheck(this, Cropper);
-      if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {
-        throw new Error('The first argument is required and must be an <img> or <canvas> element.');
-      }
-      this.element = element;
-      this.options = assign({}, DEFAULTS, isPlainObject(options) && options);
-      this.cropped = false;
-      this.disabled = false;
-      this.pointers = {};
-      this.ready = false;
-      this.reloading = false;
-      this.replaced = false;
-      this.sized = false;
-      this.sizing = false;
-      this.init();
-    }
-    _createClass(Cropper, [{
-      key: "init",
-      value: function init() {
-        var element = this.element;
-        var tagName = element.tagName.toLowerCase();
-        var url;
-        if (element[NAMESPACE]) {
-          return;
-        }
-        element[NAMESPACE] = this;
-        if (tagName === 'img') {
-          this.isImg = true;
-
-          // e.g.: "img/picture.jpg"
-          url = element.getAttribute('src') || '';
-          this.originalUrl = url;
-
-          // Stop when it's a blank image
-          if (!url) {
-            return;
-          }
-
-          // e.g.: "https://example.com/img/picture.jpg"
-          url = element.src;
-        } else if (tagName === 'canvas' && window.HTMLCanvasElement) {
-          url = element.toDataURL();
-        }
-        this.load(url);
-      }
-    }, {
-      key: "load",
-      value: function load(url) {
-        var _this = this;
-        if (!url) {
-          return;
-        }
-        this.url = url;
-        this.imageData = {};
-        var element = this.element,
-          options = this.options;
-        if (!options.rotatable && !options.scalable) {
-          options.checkOrientation = false;
-        }
-
-        // Only IE10+ supports Typed Arrays
-        if (!options.checkOrientation || !window.ArrayBuffer) {
-          this.clone();
-          return;
-        }
-
-        // Detect the mime type of the image directly if it is a Data URL
-        if (REGEXP_DATA_URL.test(url)) {
-          // Read ArrayBuffer from Data URL of JPEG images directly for better performance
-          if (REGEXP_DATA_URL_JPEG.test(url)) {
-            this.read(dataURLToArrayBuffer(url));
-          } else {
-            // Only a JPEG image may contains Exif Orientation information,
-            // the rest types of Data URLs are not necessary to check orientation at all.
-            this.clone();
-          }
-          return;
-        }
-
-        // 1. Detect the mime type of the image by a XMLHttpRequest.
-        // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.
-        var xhr = new XMLHttpRequest();
-        var clone = this.clone.bind(this);
-        this.reloading = true;
-        this.xhr = xhr;
-
-        // 1. Cross origin requests are only supported for protocol schemes:
-        // http, https, data, chrome, chrome-extension.
-        // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy
-        // in some browsers as IE11 and Safari.
-        xhr.onabort = clone;
-        xhr.onerror = clone;
-        xhr.ontimeout = clone;
-        xhr.onprogress = function () {
-          // Abort the request directly if it not a JPEG image for better performance
-          if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {
-            xhr.abort();
-          }
-        };
-        xhr.onload = function () {
-          _this.read(xhr.response);
-        };
-        xhr.onloadend = function () {
-          _this.reloading = false;
-          _this.xhr = null;
-        };
-
-        // Bust cache when there is a "crossOrigin" property to avoid browser cache error
-        if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {
-          url = addTimestamp(url);
-        }
-
-        // The third parameter is required for avoiding side-effect (#682)
-        xhr.open('GET', url, true);
-        xhr.responseType = 'arraybuffer';
-        xhr.withCredentials = element.crossOrigin === 'use-credentials';
-        xhr.send();
-      }
-    }, {
-      key: "read",
-      value: function read(arrayBuffer) {
-        var options = this.options,
-          imageData = this.imageData;
-
-        // Reset the orientation value to its default value 1
-        // as some iOS browsers will render image with its orientation
-        var orientation = resetAndGetOrientation(arrayBuffer);
-        var rotate = 0;
-        var scaleX = 1;
-        var scaleY = 1;
-        if (orientation > 1) {
-          // Generate a new URL which has the default orientation value
-          this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);
-          var _parseOrientation = parseOrientation(orientation);
-          rotate = _parseOrientation.rotate;
-          scaleX = _parseOrientation.scaleX;
-          scaleY = _parseOrientation.scaleY;
-        }
-        if (options.rotatable) {
-          imageData.rotate = rotate;
-        }
-        if (options.scalable) {
-          imageData.scaleX = scaleX;
-          imageData.scaleY = scaleY;
-        }
-        this.clone();
-      }
-    }, {
-      key: "clone",
-      value: function clone() {
-        var element = this.element,
-          url = this.url;
-        var crossOrigin = element.crossOrigin;
-        var crossOriginUrl = url;
-        if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {
-          if (!crossOrigin) {
-            crossOrigin = 'anonymous';
-          }
-
-          // Bust cache when there is not a "crossOrigin" property (#519)
-          crossOriginUrl = addTimestamp(url);
-        }
-        this.crossOrigin = crossOrigin;
-        this.crossOriginUrl = crossOriginUrl;
-        var image = document.createElement('img');
-        if (crossOrigin) {
-          image.crossOrigin = crossOrigin;
-        }
-        image.src = crossOriginUrl || url;
-        image.alt = element.alt || 'The image to crop';
-        this.image = image;
-        image.onload = this.start.bind(this);
-        image.onerror = this.stop.bind(this);
-        addClass(image, CLASS_HIDE);
-        element.parentNode.insertBefore(image, element.nextSibling);
-      }
-    }, {
-      key: "start",
-      value: function start() {
-        var _this2 = this;
-        var image = this.image;
-        image.onload = null;
-        image.onerror = null;
-        this.sizing = true;
-
-        // Match all browsers that use WebKit as the layout engine in iOS devices,
-        // such as Safari for iOS, Chrome for iOS, and in-app browsers.
-        var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);
-        var done = function done(naturalWidth, naturalHeight) {
-          assign(_this2.imageData, {
-            naturalWidth: naturalWidth,
-            naturalHeight: naturalHeight,
-            aspectRatio: naturalWidth / naturalHeight
-          });
-          _this2.initialImageData = assign({}, _this2.imageData);
-          _this2.sizing = false;
-          _this2.sized = true;
-          _this2.build();
-        };
-
-        // Most modern browsers (excepts iOS WebKit)
-        if (image.naturalWidth && !isIOSWebKit) {
-          done(image.naturalWidth, image.naturalHeight);
-          return;
-        }
-        var sizingImage = document.createElement('img');
-        var body = document.body || document.documentElement;
-        this.sizingImage = sizingImage;
-        sizingImage.onload = function () {
-          done(sizingImage.width, sizingImage.height);
-          if (!isIOSWebKit) {
-            body.removeChild(sizingImage);
-          }
-        };
-        sizingImage.src = image.src;
-
-        // iOS WebKit will convert the image automatically
-        // with its orientation once append it into DOM (#279)
-        if (!isIOSWebKit) {
-          sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';
-          body.appendChild(sizingImage);
-        }
-      }
-    }, {
-      key: "stop",
-      value: function stop() {
-        var image = this.image;
-        image.onload = null;
-        image.onerror = null;
-        image.parentNode.removeChild(image);
-        this.image = null;
-      }
-    }, {
-      key: "build",
-      value: function build() {
-        if (!this.sized || this.ready) {
-          return;
-        }
-        var element = this.element,
-          options = this.options,
-          image = this.image;
-
-        // Create cropper elements
-        var container = element.parentNode;
-        var template = document.createElement('div');
-        template.innerHTML = TEMPLATE;
-        var cropper = template.querySelector(".".concat(NAMESPACE, "-container"));
-        var canvas = cropper.querySelector(".".concat(NAMESPACE, "-canvas"));
-        var dragBox = cropper.querySelector(".".concat(NAMESPACE, "-drag-box"));
-        var cropBox = cropper.querySelector(".".concat(NAMESPACE, "-crop-box"));
-        var face = cropBox.querySelector(".".concat(NAMESPACE, "-face"));
-        this.container = container;
-        this.cropper = cropper;
-        this.canvas = canvas;
-        this.dragBox = dragBox;
-        this.cropBox = cropBox;
-        this.viewBox = cropper.querySelector(".".concat(NAMESPACE, "-view-box"));
-        this.face = face;
-        canvas.appendChild(image);
-
-        // Hide the original image
-        addClass(element, CLASS_HIDDEN);
-
-        // Inserts the cropper after to the current image
-        container.insertBefore(cropper, element.nextSibling);
-
-        // Show the hidden image
-        removeClass(image, CLASS_HIDE);
-        this.initPreview();
-        this.bind();
-        options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;
-        options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;
-        options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;
-        addClass(cropBox, CLASS_HIDDEN);
-        if (!options.guides) {
-          addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-dashed")), CLASS_HIDDEN);
-        }
-        if (!options.center) {
-          addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-center")), CLASS_HIDDEN);
-        }
-        if (options.background) {
-          addClass(cropper, "".concat(NAMESPACE, "-bg"));
-        }
-        if (!options.highlight) {
-          addClass(face, CLASS_INVISIBLE);
-        }
-        if (options.cropBoxMovable) {
-          addClass(face, CLASS_MOVE);
-          setData(face, DATA_ACTION, ACTION_ALL);
-        }
-        if (!options.cropBoxResizable) {
-          addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-line")), CLASS_HIDDEN);
-          addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-point")), CLASS_HIDDEN);
-        }
-        this.render();
-        this.ready = true;
-        this.setDragMode(options.dragMode);
-        if (options.autoCrop) {
-          this.crop();
-        }
-        this.setData(options.data);
-        if (isFunction(options.ready)) {
-          addListener(element, EVENT_READY, options.ready, {
-            once: true
-          });
-        }
-        dispatchEvent(element, EVENT_READY);
-      }
-    }, {
-      key: "unbuild",
-      value: function unbuild() {
-        if (!this.ready) {
-          return;
-        }
-        this.ready = false;
-        this.unbind();
-        this.resetPreview();
-        var parentNode = this.cropper.parentNode;
-        if (parentNode) {
-          parentNode.removeChild(this.cropper);
-        }
-        removeClass(this.element, CLASS_HIDDEN);
-      }
-    }, {
-      key: "uncreate",
-      value: function uncreate() {
-        if (this.ready) {
-          this.unbuild();
-          this.ready = false;
-          this.cropped = false;
-        } else if (this.sizing) {
-          this.sizingImage.onload = null;
-          this.sizing = false;
-          this.sized = false;
-        } else if (this.reloading) {
-          this.xhr.onabort = null;
-          this.xhr.abort();
-        } else if (this.image) {
-          this.stop();
-        }
-      }
-
-      /**
-       * Get the no conflict cropper class.
-       * @returns {Cropper} The cropper class.
-       */
-    }], [{
-      key: "noConflict",
-      value: function noConflict() {
-        window.Cropper = AnotherCropper;
-        return Cropper;
-      }
-
-      /**
-       * Change the default options.
-       * @param {Object} options - The new default options.
-       */
-    }, {
-      key: "setDefaults",
-      value: function setDefaults(options) {
-        assign(DEFAULTS, isPlainObject(options) && options);
-      }
-    }]);
-    return Cropper;
-  }();
-  assign(Cropper.prototype, render, preview, events, handlers, change, methods);
-
-  return Cropper;
-
-}));
diff --git a/plugins/DateParser/date_parser.py b/plugins/DateParser/date_parser.py
deleted file mode 100644
index 908fc05e..00000000
--- a/plugins/DateParser/date_parser.py
+++ /dev/null
@@ -1,66 +0,0 @@
-import sys, json
-from pathlib import Path
-
-import stashapi.log as log
-from stashapi.stashapp import StashInterface
-import re
-from dateparser import parse
-from datetime import datetime
-
-def main():
-	global stash
-	global pattern
-
-	pattern = re.compile(r"\D(\d{4}|\d{1,2})[\._\- /\\](\d{1,2}|[a-zA-Z]{3,}\.*)[\._\- /\\](\d{4}|\d{1,2})\D")
-	json_input = json.loads(sys.stdin.read())
-	mode_arg = json_input['args']['mode']
-
-	stash = StashInterface(json_input["server_connection"])
-
-	if mode_arg == "gallery":
-		find_date_for_galleries()
-
-
-
-def find_date_for_galleries():
-
-	galleries = stash.find_galleries(f={
-		"is_missing": "date",
-		"path": {
-			"modifier": "MATCHES_REGEX",
-			"value": ".zip$"
-		},
-		"file_count": {
-			"modifier": "EQUALS",
-			"value": 1
-		}
-	})
-
-
-	total = len(galleries)
-
-	log.info(f"Found {total} galleries")
-
-	for i, gallery in enumerate(galleries):
-		log.progress(i/total)
-		acceptableDate = None
-		for file in gallery.get("files", []):
-			for match in pattern.finditer(file["path"]):
-				g1 = match.group(1)
-				g2 = match.group(2)
-				g3 =match.group(3)
-				temp = parse(g1+" "+g2+" "+g3)
-				if temp:
-					acceptableDate = temp.strftime("%Y-%m-%d")
-		if acceptableDate:
-			log.info("Gallery ID ("+gallery.get("id") + ") has matched the date : "+acceptableDate)
-			updateObject = {
-				"id":gallery.get("id"),
-				"date":acceptableDate
-			}
-			stash.update_gallery(updateObject)
-				
-
-
-if __name__ == '__main__':
-	main()
\ No newline at end of file
diff --git a/plugins/DateParser/date_parser.yml b/plugins/DateParser/date_parser.yml
deleted file mode 100644
index 82af58bc..00000000
--- a/plugins/DateParser/date_parser.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: Date Parser
-description: Find date in path or filename and add it
-version: 0.2
-exec:
-  - python
-  - "{pluginDir}/date_parser.py"
-interface: raw
-tasks:
-  - name: Find gallery dates
-    description: Add the date on galleries based on their path
-    defaultArgs:
-      mode: gallery
-
-      
diff --git a/plugins/DateParser/requirements.txt b/plugins/DateParser/requirements.txt
deleted file mode 100644
index 13896467..00000000
--- a/plugins/DateParser/requirements.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-certifi>=2022.9.24
-charset-normalizer>=2.1.1
-dateparser>=1.1.3
-idna>=3.4
-python-dateutil>=2.8.2
-pytz>=2022.6
-pytz-deprecation-shim>=0.1.0.post0
-regex>=2022.3.2
-requests>=2.28.1
-six>=1.16.0
-stashapp-tools>=0.2.17
-tzdata>=2022.6
-tzlocal>=4.2
-urllib3>=1.26.12
diff --git a/plugins/GHScraper_Checker/GHScraper_Checker.py b/plugins/GHScraper_Checker/GHScraper_Checker.py
deleted file mode 100644
index b1e08f66..00000000
--- a/plugins/GHScraper_Checker/GHScraper_Checker.py
+++ /dev/null
@@ -1,208 +0,0 @@
-import json
-import os
-import re
-import sys
-import zipfile
-from datetime import datetime
-
-import requests
-
-import log
-
-FRAGMENT = json.loads(sys.stdin.read())
-FRAGMENT_SERVER = FRAGMENT["server_connection"]
-FRAGMENT_ARG = FRAGMENT['args']['mode']
-log.LogDebug("Starting Plugin: Github Scraper Checker")
-
-CHECK_LOG = False
-GET_NEW_FILE = False
-OVERWRITE = False
-
-if FRAGMENT_ARG == "CHECK":
-    CHECK_LOG = True
-if FRAGMENT_ARG == "NEWFILE":
-    GET_NEW_FILE = True
-if FRAGMENT_ARG == "OVERWRITE":
-    OVERWRITE = True
-
-# Don't write in log if the file don't exist locally.
-IGNORE_MISS_LOCAL = False
-
-def graphql_getScraperPath():
-    query = """
-    query Configuration {
-        configuration {
-            general {
-                scrapersPath
-            }
-        }
-    }
-    """
-    result = callGraphQL(query)
-    return result["configuration"]["general"]["scrapersPath"]
-
-
-def callGraphQL(query, variables=None):
-    # Session cookie for authentication
-    graphql_port = FRAGMENT_SERVER['Port']
-    graphql_scheme = FRAGMENT_SERVER['Scheme']
-    graphql_cookies = {
-        'session': FRAGMENT_SERVER.get('SessionCookie').get('Value')
-    }
-    graphql_headers = {
-        "Accept-Encoding": "gzip, deflate, br",
-        "Content-Type": "application/json",
-        "Accept": "application/json",
-        "Connection": "keep-alive",
-        "DNT": "1"
-    }
-    if FRAGMENT_SERVER.get('Domain'):
-        graphql_domain = FRAGMENT_SERVER['Domain']
-    else:
-        if FRAGMENT_SERVER.get('Host'):
-            graphql_domain = FRAGMENT_SERVER['Host']
-        else:
-            graphql_domain = 'localhost'
-    # Because i don't understand how host work...
-    graphql_domain = 'localhost'
-    # Stash GraphQL endpoint
-    graphql_url = graphql_scheme + "://" + \
-        graphql_domain + ":" + str(graphql_port) + "/graphql"
-
-    json = {'query': query}
-    if variables is not None:
-        json['variables'] = variables
-    try:
-        response = requests.post(
-            graphql_url, json=json, headers=graphql_headers, cookies=graphql_cookies, timeout=10)
-    except:
-        sys.exit("[FATAL] Error with the graphql request, are you sure the GraphQL endpoint ({}) is correct.".format(
-            graphql_url))
-    if response.status_code == 200:
-        result = response.json()
-        if result.get("error"):
-            for error in result["error"]["errors"]:
-                raise Exception("GraphQL error: {}".format(error))
-        if result.get("data"):
-            return result.get("data")
-    elif response.status_code == 401:
-        sys.exit("HTTP Error 401, Unauthorised.")
-    else:
-        raise ConnectionError("GraphQL query failed:{} - {}. Query: {}. Variables: {}".format(
-            response.status_code, response.content, query, variables))
-
-
-def file_getlastline(path):
-    with open(path, 'r', encoding="utf-8") as f:
-        for line in f:
-            u_match = re.search(r"^\s*#\s*last updated", line.lower())
-            if u_match:
-                return line.strip()
-    return None
-
-
-def get_date(line):
-    try:
-        date = datetime.strptime(re.sub(r".*#.*Last Updated\s*", "", line), "%B %d, %Y")
-    except:
-        return None
-    return date
-
-
-scraper_folder_path = graphql_getScraperPath()
-GITHUB_LINK = "https://github.com/stashapp/CommunityScrapers/archive/refs/heads/master.zip"
-
-try:
-    r = requests.get(GITHUB_LINK, timeout=10)
-except:
-    sys.exit("Failing to download the zip file.")
-zip_path = os.path.join(scraper_folder_path, "github.zip")
-log.LogDebug(zip_path)
-with open(zip_path, "wb") as zip_file:
-    zip_file.write(r.content)
-
-with zipfile.ZipFile(zip_path) as z:
-    change_detected = False
-
-    for filename in z.namelist():
-        #  Only care about the scrapers folders
-        if "/scrapers/" in filename and filename.endswith(".yml"):
-            # read the file
-            line = bytes()
-            # Filename abc.yml
-            gh_file = os.path.basename(filename)
-
-            # Filename /scrapers/<subdir>/abc.yml
-            if filename.endswith(f"/scrapers/{gh_file}") == False:
-                log.LogDebug("Subdirectory detected: " + filename)
-                subdir = re.findall('\/scrapers\/(.*)\/.*\.yml', filename)
-
-                if len(subdir) != 1:
-                    log.LogError(f"Unexpected number of matching subdirectories found. Expected 1. Found {len(subdir)}.")
-                    exit(1)
-
-                gh_file = subdir[0] + "/" + gh_file
-
-            log.LogDebug(gh_file)
-            path_local = os.path.join(scraper_folder_path, gh_file)
-            gh_line = None
-            yml_script = None
-            if OVERWRITE:
-                with z.open(filename) as f:
-                    scraper_content = f.read()
-                    with open(path_local, 'wb') as yml_file:
-                        yml_file.write(scraper_content)
-                        log.LogInfo("Replacing/Creating {}".format(gh_file))
-                        continue
-            with z.open(filename) as f:
-                for line in f:
-                    script_match = re.search(r"action:\sscript", line.decode().lower())
-                    update_match = re.search(r"^\s*#\s*last updated", line.decode().lower())
-                    if script_match:
-                        yml_script = True
-                    if update_match:
-                        gh_line = line.decode().strip()
-                        break
-            # Got last line
-            if gh_line is None:
-                log.LogError("[Github] Line Error ({}) ".format(gh_file))
-                continue
-            gh_date = get_date(gh_line)
-            if gh_date is None:
-                log.LogError("[Github] Date Error ({}) ".format(gh_file))
-                continue
-            elif os.path.exists(path_local):
-                # Local Part
-                local_line = file_getlastline(path_local)
-                if local_line is None:
-                    log.LogError("[Local] Line Error ({}) ".format(gh_file))
-                    continue
-                local_date = get_date(local_line.strip())
-                if local_date is None:
-                    log.LogError("[Local] Date Error ({}) ".format(gh_file))
-                    continue
-                if gh_date > local_date and CHECK_LOG:
-                    change_detected = True
-
-                    if yml_script:
-                        log.LogInfo("[{}] New version on github (Can be any of the related files)".format(gh_file))
-                    else:
-                        log.LogInfo("[{}] New version on github".format(gh_file))
-            elif GET_NEW_FILE:
-                change_detected = True
-                # File don't exist local so we take the github version.
-                with z.open(filename) as f:
-                    scraper_content = f.read()
-                    with open(path_local, 'wb') as yml_file:
-                        yml_file.write(scraper_content)
-                        log.LogInfo("Creating {}".format(gh_file))
-                        continue
-            elif CHECK_LOG and IGNORE_MISS_LOCAL == False:
-                change_detected = True
-
-                log.LogWarning("[{}] File don't exist locally".format(gh_file))
-
-if change_detected == False:
-    log.LogInfo("Scrapers appear to be in sync with GitHub version.")
-
-os.remove(zip_path)
diff --git a/plugins/GHScraper_Checker/GHScraper_Checker.yml b/plugins/GHScraper_Checker/GHScraper_Checker.yml
deleted file mode 100644
index 48188be4..00000000
--- a/plugins/GHScraper_Checker/GHScraper_Checker.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: GHScraper_Checker
-description: Check the community scraper repo.
-version: 0.1.1
-url: https://github.com/stashapp/CommunityScripts/tree/main/plugins/GHScraper_Checker
-exec:
-  - python
-  - "{pluginDir}/GHScraper_Checker.py"
-interface: raw
-tasks:
-  - name: 'Status Check'
-    description: "Show in log if you don't have the scraper or a new version is available."
-    defaultArgs:
-      mode: CHECK
-  - name: 'Getting new files'
-    description: "Download scraper that don't exist in your scraper folder."
-    defaultArgs:
-      mode: NEWFILE
-#  - name: 'Overwrite everything'
-#    description: 'Replace your scraper by github version. Overwrite anything existing.'
-#    defaultArgs:
-#      mode: OVERWRITE
diff --git a/plugins/GHScraper_Checker/log.py b/plugins/GHScraper_Checker/log.py
deleted file mode 100644
index f3812522..00000000
--- a/plugins/GHScraper_Checker/log.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import sys
-
-
-# Log messages sent from a plugin instance are transmitted via stderr and are
-# encoded with a prefix consisting of special character SOH, then the log
-# level (one of t, d, i, w, e, or p - corresponding to trace, debug, info,
-# warning, error and progress levels respectively), then special character
-# STX.
-#
-# The LogTrace, LogDebug, LogInfo, LogWarning, and LogError methods, and their equivalent
-# formatted methods are intended for use by plugin instances to transmit log
-# messages. The LogProgress method is also intended for sending progress data.
-#
-
-def __prefix(level_char):
-	start_level_char = b'\x01'
-	end_level_char = b'\x02'
-
-	ret = start_level_char + level_char + end_level_char
-	return ret.decode()
-
-
-def __log(level_char, s):
-	if level_char == "":
-		return
-
-	print(__prefix(level_char) + s + "\n", file=sys.stderr, flush=True)
-
-
-def LogTrace(s):
-	__log(b't', s)
-
-
-def LogDebug(s):
-	__log(b'd', s)
-
-
-def LogInfo(s):
-	__log(b'i', s)
-
-
-def LogWarning(s):
-	__log(b'w', s)
-
-
-def LogError(s):
-	__log(b'e', s)
-
-
-def LogProgress(p):
-	progress = min(max(0, p), 1)
-	__log(b'p', str(progress))
diff --git a/plugins/StashBatchResultToggle/stashBatchResultToggle.js b/plugins/StashBatchResultToggle/stashBatchResultToggle.js
deleted file mode 100644
index f6c56981..00000000
--- a/plugins/StashBatchResultToggle/stashBatchResultToggle.js
+++ /dev/null
@@ -1,308 +0,0 @@
-(function() {
-    let running = false;
-    const buttons = [];
-    let maxCount = 0;
-
-    function resolveToggle(el) {
-        let button = null;
-        if (el?.classList.contains('optional-field-content')) {
-            button = el.previousElementSibling;
-        } else if (el?.tagName === 'SPAN' && el?.classList.contains('ml-auto')) {
-            button = el.querySelector('.optional-field button');
-        } else if (el?.parentElement?.classList.contains('optional-field-content')) {
-            button = el.parentElement.previousElementSibling;
-        }
-        const state = button?.classList.contains('text-success');
-        return {
-            button,
-            state
-        };
-    }
-
-    function toggleSearchItem(searchItem, toggleMode) {
-        const searchResultItem = searchItem.querySelector('li.search-result.selected-result.active');
-        if (!searchResultItem) return;
-
-        const {
-            urlNode,
-            url,
-            id,
-            data,
-            nameNode,
-            name,
-            queryInput,
-            performerNodes
-        } = stash.parseSearchItem(searchItem);
-
-        const {
-            remoteUrlNode,
-            remoteId,
-            remoteUrl,
-            remoteData,
-            urlNode: matchUrlNode,
-            detailsNode,
-            imageNode,
-            titleNode,
-            codeNode,
-            dateNode,
-            studioNode,
-            performerNodes: matchPerformerNodes,
-            matches
-        } = stash.parseSearchResultItem(searchResultItem);
-
-        const studioMatchNode = matches.find(o => o.matchType === 'studio')?.matchNode;
-        const performerMatchNodes = matches.filter(o => o.matchType === 'performer').map(o => o.matchNode);
-
-        const includeTitle = document.getElementById('result-toggle-title').checked;
-        const includeCode = document.getElementById('result-toggle-code').checked;
-        const includeDate = document.getElementById('result-toggle-date').checked;
-        const includeCover = document.getElementById('result-toggle-cover').checked;
-        const includeStashID = document.getElementById('result-toggle-stashid').checked;
-        const includeURL = document.getElementById('result-toggle-url').checked;
-        const includeDetails = document.getElementById('result-toggle-details').checked;
-        const includeStudio = document.getElementById('result-toggle-studio').checked;
-        const includePerformers = document.getElementById('result-toggle-performers').checked;
-
-        let options = [];
-
-        options.push(['title', includeTitle, titleNode, resolveToggle(titleNode)]);
-        options.push(['code', includeCode, codeNode, resolveToggle(codeNode)]);
-        options.push(['date', includeDate, dateNode, resolveToggle(dateNode)]);
-        options.push(['cover', includeCover, imageNode, resolveToggle(imageNode)]);
-        options.push(['stashid', includeStashID, remoteUrlNode, resolveToggle(remoteUrlNode)]);
-        options.push(['url', includeURL, matchUrlNode, resolveToggle(matchUrlNode)]);
-        options.push(['details', includeDetails, detailsNode, resolveToggle(detailsNode)]);
-        options.push(['studio', includeStudio, studioMatchNode, resolveToggle(studioMatchNode)]);
-        options = options.concat(performerMatchNodes.map(o => ['performer', includePerformers, o, resolveToggle(o)]));
-
-        for (const [optionType, optionValue, optionNode, {
-                button,
-                state
-            }] of options) {
-            let wantedState = optionValue;
-            if (toggleMode === 1) {
-                wantedState = true;
-            } else if (toggleMode === -1) {
-                wantedState = false;
-            }
-            if (optionNode && wantedState !== state) {
-                button.click();
-            }
-        }
-    }
-
-    function run() {
-        if (!running) return;
-        const button = buttons.pop();
-        stash.setProgress((maxCount - buttons.length) / maxCount * 100);
-        if (button) {
-            const searchItem = getClosestAncestor(button, '.search-item');
-            let toggleMode = 0;
-            if (btn === btnOn) {
-                toggleMode = 1;
-            } else if (btn === btnOff) {
-                toggleMode = -1;
-            } else if (btn === btnMixed) {
-                toggleMode = 0;
-            }
-            toggleSearchItem(searchItem, toggleMode);
-            setTimeout(run, 0);
-        } else {
-            stop();
-        }
-    }
-
-    const btnGroup = document.createElement('div');
-    const btnGroupId = 'batch-result-toggle';
-    btnGroup.setAttribute('id', btnGroupId);
-    btnGroup.classList.add('btn-group', 'ml-3');
-
-    const checkLabel = '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="check" class="svg-inline--fa fa-check fa-w-16 fa-icon fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg>';
-    const timesLabel = '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="times" class="svg-inline--fa fa-times fa-w-11 fa-icon fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="currentColor" d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path></svg>';
-    const startLabel = '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="circle" class="svg-inline--fa fa-circle fa-w-16 fa-icon fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"/></svg>';
-    let btn;
-
-    const btnOffId = 'batch-result-toggle-off';
-    const btnOff = document.createElement("button");
-    btnOff.setAttribute("id", btnOffId);
-    btnOff.title = 'Result Toggle All Off';
-    btnOff.classList.add('btn', 'btn-primary');
-    btnOff.innerHTML = timesLabel;
-    btnOff.onclick = () => {
-        if (running) {
-            stop();
-        } else {
-            btn = btnOff;
-            start();
-        }
-    };
-    btnGroup.appendChild(btnOff);
-
-    const btnMixedId = 'batch-result-toggle-mixed';
-    const btnMixed = document.createElement("button");
-    btnMixed.setAttribute("id", btnMixedId);
-    btnMixed.title = 'Result Toggle All';
-    btnMixed.classList.add('btn', 'btn-primary');
-    btnMixed.innerHTML = startLabel;
-    btnMixed.onclick = () => {
-        if (running) {
-            stop();
-        } else {
-            btn = btnMixed;
-            start();
-        }
-    };
-    btnGroup.appendChild(btnMixed);
-
-    const btnOnId = 'batch-result-toggle-on';
-    const btnOn = document.createElement("button");
-    btnOn.setAttribute("id", btnOnId);
-    btnOn.title = 'Result Toggle All On';
-    btnOn.classList.add('btn', 'btn-primary');
-    btnOn.innerHTML = checkLabel;
-    btnOn.onclick = () => {
-        if (running) {
-            stop();
-        } else {
-            btn = btnOn;
-            start();
-        }
-    };
-    btnGroup.appendChild(btnOn);
-
-    function start() {
-        // btn.innerHTML = stopLabel;
-        btn.classList.remove('btn-primary');
-        btn.classList.add('btn-danger');
-        btnMixed.disabled = true;
-        btnOn.disabled = true;
-        btnOff.disabled = true;
-        btn.disabled = false;
-        running = true;
-        stash.setProgress(0);
-        buttons.length = 0;
-        for (const button of document.querySelectorAll('.btn.btn-primary')) {
-            if (button.innerText === 'Search') {
-                buttons.push(button);
-            }
-        }
-        maxCount = buttons.length;
-        run();
-    }
-
-    function stop() {
-        // btn.innerHTML = startLabel;
-        btn.classList.remove('btn-danger');
-        btn.classList.add('btn-primary');
-        running = false;
-        stash.setProgress(0);
-        btnMixed.disabled = false;
-        btnOn.disabled = false;
-        btnOff.disabled = false;
-    }
-
-    stash.addEventListener('tagger:mutations:header', evt => {
-        const el = getElementByXpath("//button[text()='Scrape All']");
-        if (el && !document.getElementById(btnGroupId)) {
-            const container = el.parentElement;
-            container.appendChild(btnGroup);
-            sortElementChildren(container);
-            el.classList.add('ml-3');
-        }
-    });
-
-    const resultToggleConfigId = 'result-toggle-config';
-
-    stash.addEventListener('tagger:configuration', evt => {
-        const el = evt.detail;
-        if (!document.getElementById(resultToggleConfigId)) {
-            const configContainer = el.parentElement;
-            const resultToggleConfig = createElementFromHTML(`
-<div id="${resultToggleConfigId}" class="col-md-6 mt-4">
-<h5>Result Toggle ${startLabel} Configuration</h5>
-<div class="row">
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-title" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-title" class="form-check-label">Title</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-code" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-code" class="form-check-label">Code</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-date" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-date" class="form-check-label">Date</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-cover" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-cover" class="form-check-label">Cover</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-stashid" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-stashid" class="form-check-label">Stash ID</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-url" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-url" class="form-check-label">URL</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-details" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-details" class="form-check-label">Details</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-studio" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-studio" class="form-check-label">Studio</label>
-        </div>
-    </div>
-    <div class="align-items-center form-group col-md-6">
-        <div class="form-check">
-            <input type="checkbox" id="result-toggle-performers" class="form-check-input" data-default="true">
-            <label title="" for="result-toggle-performers" class="form-check-label">Performers</label>
-        </div>
-    </div>
-</div>
-</div>
-            `);
-            configContainer.appendChild(resultToggleConfig);
-            loadSettings();
-        }
-    });
-
-    async function loadSettings() {
-        for (const input of document.querySelectorAll(`#${resultToggleConfigId} input`)) {
-            input.checked = await sessionStorage.getItem(input.id, input.dataset.default === 'true');
-            input.addEventListener('change', async () => {
-                await sessionStorage.setItem(input.id, input.checked);
-            });
-        }
-    }
-
-    stash.addEventListener('tagger:mutation:add:remoteperformer', evt => toggleSearchItem(getClosestAncestor(evt.detail.node, '.search-item'), 0));
-    stash.addEventListener('tagger:mutation:add:remotestudio', evt => toggleSearchItem(getClosestAncestor(evt.detail.node, '.search-item'), 0));
-    stash.addEventListener('tagger:mutation:add:local', evt => toggleSearchItem(getClosestAncestor(evt.detail.node, '.search-item'), 0));
-    stash.addEventListener('tagger:mutation:add:container', evt => toggleSearchItem(getClosestAncestor(evt.detail.node, '.search-item'), 0));
-    stash.addEventListener('tagger:mutation:add:subcontainer', evt => toggleSearchItem(getClosestAncestor(evt.detail.node, '.search-item'), 0));
-
-    function checkSaveButtonDisplay() {
-        const taggerContainer = document.querySelector('.tagger-container');
-        const saveButton = getElementByXpath("//button[text()='Save']", taggerContainer);
-        btnGroup.style.display = saveButton ? 'inline-block' : 'none';
-    }
-
-    stash.addEventListener('tagger:mutations:searchitems', checkSaveButtonDisplay);
-})();
diff --git a/plugins/StashBatchResultToggle/stashBatchResultToggle.yml b/plugins/StashBatchResultToggle/stashBatchResultToggle.yml
deleted file mode 100644
index a07558f7..00000000
--- a/plugins/StashBatchResultToggle/stashBatchResultToggle.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-name: Stash Batch Result Toggle.
-# requires: StashUserscriptLibrary
-description: In Scene Tagger, adds button to toggle all stashdb scene match result fields. Saves clicks when you only want to save a few metadata fields. Instead of turning off every field, you batch toggle them off, then toggle on the ones you want
-version: 1.0
-ui:
-  requires: 
-  - StashUserscriptLibrary
-  javascript:
-  - stashBatchResultToggle.js
diff --git a/plugins/comicInfoExtractor/README.md b/plugins/comicInfoExtractor/README.md
deleted file mode 100644
index 759952c3..00000000
--- a/plugins/comicInfoExtractor/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Comic Archive Metadata Extractor
-Follows the Comicrack Standard for saving Comic Metadata in .cbz files by reading the ComicInfo.xml file in the archive and writing the result into the stash gallery.
-Use the config.py ImportList to define what XML names should be mapped to what.
-Currently, Bookmark and Type are recognized as chapters that are imported as well.
-The current Configuration will overwrite any value you try to set that is already set in the ComicInfo.xml. For a change in that, change the hook condition in the yml.
-
-### Installation 
-Move the `comicInfoExtractor` directory into Stash's plugins directory, reload plugins.
-
-### Tasks
-* Load all cbz Metadata - Fetch metadata for all galleries.
-* Post update hook - Fetch metadata for that gallery
diff --git a/plugins/comicInfoExtractor/comicInfoExtractor.py b/plugins/comicInfoExtractor/comicInfoExtractor.py
deleted file mode 100644
index 1fda7f1c..00000000
--- a/plugins/comicInfoExtractor/comicInfoExtractor.py
+++ /dev/null
@@ -1,124 +0,0 @@
-import stashapi.log as log
-from stashapi.stashapp import StashInterface
-import stashapi.marker_parse as mp
-import yaml
-import json
-import os
-import sys
-import xml.etree.ElementTree as ET
-import zipfile
-
-per_page = 100
-
-def processGallery(g):
-    #Read ComicInfo.xml File
-    if len(g["files"]) == 0:
-        log.info(g["id"] + " is not an archive. No scanning for Comic Metadata.")
-        return
-    comicInfo = False
-    with zipfile.ZipFile(g["files"][0]["path"], 'r') as archive:
-        archivecontent = [x.lower() for x in archive.namelist()]
-        for archivefile in archivecontent:
-            if archivefile.lower() == "comicinfo.xml":
-                comicInfo = ET.fromstring(archive.read("ComicInfo.xml"))
-    if not comicInfo:
-        log.info(g["files"][0]["path"] + " does not contain a ComicInfo.xml file. No scan will be triggered.")
-        return
-
-    #Adjust names for giving ids
-    for key in ImportList.keys():
-        if ImportList[key] == "tags":
-            ImportList[key] = "tag_ids"
-        if ImportList[key] == "performers":
-            ImportList[key] = "performer_ids"
-        if ImportList[key] == "studio":
-            ImportList[key] = "studio_id"
-
-    #Get Metadata from ComicInfo.xml
-    galleryData = {"id": g["id"]}
-    for item in ImportList.keys():
-        value = comicInfo.find(item)
-        if value != None:
-            galleryData[ImportList[item]] = value.text
-    chapterData = []
-    pageData = comicInfo.find("Pages")
-    if pageData:
-        for page in pageData:
-            if page.get("Bookmark"):
-                chapterData.append({"image_index": int(page.get("Image")) + 1, "title": page.get("Bookmark")})
-            if page.get("Type"):
-                chapterData.append({"image_index": int(page.get("Image")) + 1, "title": page.get("Type")})
-
-    #Adjust the retrieved data if necessary
-    for data in galleryData.keys():
-        if data in ["tag_ids", "performer_ids"]:
-            galleryData[data] = [x.strip() for x in galleryData[data].split(",")]
-        if data == "tag_ids":
-            tagids = []
-            for tag in galleryData[data]:
-                tagids.append(stash.find_tag(tag, create=True)["id"])
-            galleryData[data] = tagids
-        if data == "performer_ids":
-            performerids = []
-            for performer in galleryData[data]:
-                performerids.append(stash.find_performer(performer, create=True)["id"])
-            galleryData[data] = performerids
-        if data == "studio_id":
-            galleryData[data] = stash.find_studio(galleryData[data], create=True)["id"]
-        if data == "date":
-            galleryData[data] = galleryData[data] + "-01-01"
-        if data == "organized":
-            galleryData[data] = eval(galleryData[data].lower().capitalize())
-        if data == "rating100":
-            galleryData[data] = int(galleryData[data])
-
-    #Add Chapter if it does not exist and finally update Gallery Metadata
-    for chapter in chapterData:
-        addChapter = True
-        for existingChapter in g["chapters"]:
-            if existingChapter["title"] == chapter["title"] and existingChapter["image_index"]  == chapter["image_index"]:
-                addChapter = False
-        if addChapter:
-            stash.create_gallery_chapter({"title": chapter["title"], "image_index": chapter["image_index"], "gallery_id": g["id"]})
-    stash.update_gallery(galleryData)
-
-
-
-def processAll():
-    log.info('Getting gallery count')
-    count=stash.find_galleries(f={},filter={"per_page": 1},get_count=True)[0]
-    log.info(str(count)+' galleries to scan.')
-    for r in range(1,int(count/per_page)+1):
-        log.info('processing '+str(r*per_page)+ ' - '+str(count))
-        galleries=stash.find_galleries(f={},filter={"page":r,"per_page": per_page})
-        for g in galleries:
-            processGallery(g)
-
-
-
-#Start of the Program
-json_input = json.loads(sys.stdin.read())
-FRAGMENT_SERVER = json_input["server_connection"]
-stash = StashInterface(FRAGMENT_SERVER)
-
-#Load Config
-with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "config.yml"), "r") as f:
-  try:
-    config = yaml.safe_load(f)
-  except yaml.YAMLError as exc:
-    log.error("Could not load config.yml: " + str(exc))
-    sys.exit(1)
-try:
-    ImportList=config["ImportList"]
-except KeyError as key:
-    log.error(str(key) + " is not defined in config.yml, but is needed for this script to proceed")
-    sys.exit(1)
-
-if 'mode' in json_input['args']:
-    PLUGIN_ARGS = json_input['args']["mode"]
-    if 'process' in PLUGIN_ARGS:
-        processAll()
-elif 'hookContext' in json_input['args']:
-    id=json_input['args']['hookContext']['id']
-    gallery=stash.find_gallery(id)
-    processGallery(gallery)
diff --git a/plugins/comicInfoExtractor/comicInfoExtractor.yml b/plugins/comicInfoExtractor/comicInfoExtractor.yml
deleted file mode 100644
index f9cb7440..00000000
--- a/plugins/comicInfoExtractor/comicInfoExtractor.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Comic Info Extractor
-description: Extract the metadata from cbz with the Comicrack standard (ComicInfo.xml)
-version: 0.1
-url: https://github.com/stashapp/CommunityScripts/
-exec:
-  - "/usr/bin/python3"
-  - "{pluginDir}/comicInfoExtractor.py"
-interface: raw
-hooks:
-  - name: Add Metadata to Gallery
-    description: Update Metadata for Gallery by evaluating the ComicInfo.xml.
-    triggeredBy:
-      - Gallery.Update.Post
-      - Gallery.Create.Post
-tasks:
-  - name: Load all cbz Metadata
-    description: Get Metadata for all Galleries by looking for ComicInfo.xml files in the Archive.
-    defaultArgs:
-      mode: process
diff --git a/plugins/comicInfoExtractor/config.yml b/plugins/comicInfoExtractor/config.yml
deleted file mode 100644
index 235e8524..00000000
--- a/plugins/comicInfoExtractor/config.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-#pkgignore
-#ImportList is a dictionary
-#that matches an xml Attribute from ComicInfo.xml to the according value in stash (using the graphql naming)
-#Fields that refer to different types of media are resolved by name and created if necessary (tags, studio, performers)
-#Fields that can contain multiple values (tags, performers) will be expected as a comma separated string, like
-#<Genre>Outdoor, Blonde</Genre>
-ImportList:
-  Genre: tags
-  Title: title
-  Writer: studio
-  Year: date
-  Summary: details
diff --git a/plugins/comicInfoExtractor/requirements.txt b/plugins/comicInfoExtractor/requirements.txt
deleted file mode 100644
index 4e5ec4c0..00000000
--- a/plugins/comicInfoExtractor/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-stashapp-tools
-pyyaml
diff --git a/plugins/defaultDataForPath/README.md b/plugins/defaultDataForPath/README.md
deleted file mode 100644
index 607fe51a..00000000
--- a/plugins/defaultDataForPath/README.md
+++ /dev/null
@@ -1,151 +0,0 @@
-# Path Default Tags
-Define default tags/performers/studio for Scenes, Images, and Galleries by file path.
-Big thanks to @WithoutPants - I based this entire script off of yours (markerTagToScene) and learned about Stash plugins during the process :)
-
-## Requirements
-- Stash
-
-## Installation
-
-- Download the whole folder 'defaultDataForPath' (defaultDataForPath.js, defaultDataForPath.yml)
-- Place it in your **plugins** folder
-- Reload plugins (Settings > Plugins)
-- Default Data For Path (1.0) should appear. 
-
-## Usage
-
-- This plugin will execute on Tasks->Scan. Any new file added to Stash will be created with the specified data if configured.
-
-## Configuration
-
-- Edit **_jsonData_** array. Refer to Examples.
-
-## Notes
-- Remember to escape file paths!
-- Note this script only works on NEWLY created Scenes/Images/Galleries. To run on existing content, the content will need to be removed from Stash and then rescanned.
-- There is NO validation of tags/performers/studios being performed. They must exist in Stash and be spelled exactly the same to work.  These values are not updated when they are updated in Stash. They will have to manually be configured. If there is a mismatch, an error will be logged and the affected file will not have any default data added. The Scan task will continue to execute however.
-- If you misconfigure the script, the Task->Scan will complete and files will be created, but you can remove those files from Stash, fix the script, and try again.
-- I recommend using VS Code but any text editor should do. I especially recommend an editor with collapse functionality as your config JSON grows.
-- This requires a decent bit of manual effort and verbosity to configure, but only needs to be maintained after that. 
-- This may slow down your Task->Scan. This script is probably sloppily written, I was not sober when I wrote it, and haven't looked much at it since it works ¯\\\_(ツ)_/¯ 
-
-## Examples
-
-> Here is a simple config Object. It defines data for any Scene/Image/Gallery found within the paths listed (it includes all subfolders). Matching files will be assigned Studio **'Brazzers'** and Tag **'Default_Data_For_Path_Tagged'** assuming that Studio and Tag exist in Stash and are spelled this way.
-<br>**_'name'_** is optional and not used by the script. Feel free to include it for the purposes of organization.
-<br>**_'paths'_** is optional and defines what file paths the current Object config should apply to. If it is not included, then no files will be matched to this config, unless **_'children'_** is used, in which case, those files in **_'children'_** will be matched to this config. See next example.
-<br>**_'studio'_** is optional and defines a Studio to apply to file matches. The Studio must exist in Stash and be spelled the same.
-<br>**_'tags'_** is optional and defines Tags to apply to file matches. The Tags must exist in Stash and be spelled the same.
-```
-var jsonData = [
-    {
-        "name": "OPTIONAL NAME - NOT USED IN SCRIPT",
-        "paths": [
-            "C:\\Users\\UserName\\Desktop\\NOTPORN\\Brazzers",
-            "D:\\SecretStorage\\Porn\\Brazzers"
-        ],
-        "studio": "Brazzers",
-        "tags": [
-            "Default_Data_For_Path_Tagged"
-        ]
-    }
-];
-```
-
-> This config introduces a new concept. Note the _'Instagram Root'_ config object has no paths. It defines a studio and then children. This means all child config object of this will recieve the Studio _'Instagram'_ (it will overwrite any child config object studio definitions if different). You may also specify Performers and Tags in this way, those will be appended to child config objects definitions. See the _'Celebrities_' config object is used in a similar way to add the tag _'PERFORMER - Celebrity_' to its underlying children (which also recieve the _Instagram_ studio as it is their ancestor). It saves you from having to add the tag to each config object seperately and allows for more logical config groupings to be created. 
-
-> If you also add a **_'paths'_** value to _'Instagram Root'_, then the data specified on _'Instagram Root'_ config object will be applied to files in that path as well. Data from children will not be carried over. For example, _'PornHub Root'_ applies studio PornHub to all files in **_"C:\\Users\\UserName\\Desktop\\Pornhub"_**, and has children objects with more specific config. Instagram Root does not have such a paths specification. So a file in path **_"C:\\Users\\UserName\\Desktop\\Pornhub\\SweetBunny"_** will have Studio PornHub added while a file in **_"C:\\Users\\UserName\\Desktop\\Instagram\\Kylie Jenner"_** will not have Studio Instagram added.
-
-> So say a file is scanned that has file path **_"C:\\Users\\UserName\\Desktop\\Instagram\\alexisfawx\\video1.mp4"_**. The data added will be:
-<br /> **Studio:** _Instagram_ - because the "Alexis Fawx" Config object is a descendant of the Instagram config object, and the scanned file matches "Alexis Fawx" Config object paths.
-<br /> **Tag:** _ORGANIZED - Unorganized_ - because the scanned file matches "Default Tag - Matches all scanned files" Config object paths.
-<br /> **Tag:** _PERFORMER - Pornstar_ - because the "Alexis Fawx" Config object is a child of the Pornstars config object, and the scanned file matches "Alexis Fawx" Config object paths.
-<br /> **Tag:** _PERFORMER - Caucasian_ - beacause the scanned file matches "Alexis Fawx" Config object paths.
-<br /> **Tag:** _PERFORMER - Fake Tits_ - beacause the scanned file matches "Alexis Fawx" Config object paths.
-<br /> **Performer:** _Alexis Fawx_ - beacause the scanned file matches "Alexis Fawx" Config object paths.
-<br />
-
-```
-var jsonData = [
-	{
-		"name": "Default Tag - Matches all scanned files",
-		"paths": [
-			""
-		],
-		"tags": [
-			"ORGANIZED - Unorganized"
-		]
-	},
-    	{
-		"name": "Instagram Root",
-        	"studio": "Instagram",
-		"children": [
-			{
-				"name": "Celebrities",
-				"tags": [
-					"PERFORMER - Celebrity"
-				],
-				"children": [
-					{
-						"name": "Kim Kardashian",
-						"paths": [
-							"C:\\Users\\UserName\\Desktop\\Instagram\\kimkardashian"
-						],
-						"performers": [
-							"Kim Kardashian"
-						],
-						"tags": [
-							"PERFORMER - Armenian",
-							"PERFORMER - Big Ass"
-						]
-					},
-					{
-						"name": "Katy Perry",
-						"paths": [
-							"C:\\Users\\UserName\\Desktop\\Instagram\\katyperry"
-						],
-						"performers": [
-							"Katy Perry"
-						],
-						"tags": [
-							"PERFORMER - Caucasian,
-							"PERFORMER - Big Tits"
-						]
-					}
-				]
-			},
-			{
-				"name": "Pornstars",
-				"tags": [
-					"PERFORMER - Pornstar
-				],
-				"children": [
-					{
-						"name": "Alexis Fawx",
-						"paths": [
-							"C:\\Users\\UserName\\Desktop\\Instagram\\alexisfawx"
-						],
-						"performers": [
-							"Alexis Fawx"
-						],
-						"tags": [
-							"PERFORMER - Caucasian",
-							"PERFORMER - Fake Tits"
-						]
-					}
-				]
-			}
-		]
-	},
-	{
-		"name": "PornHub Root",
-		"paths": [
-			"C:\\Users\\UserName\\Desktop\\PornHub"
-		]
-		"studio": "PornHub",
-		"children": [
-			(etc...)
-		]
-	}
-];
-```
diff --git a/plugins/defaultDataForPath/defaultDataForPath.js b/plugins/defaultDataForPath/defaultDataForPath.js
deleted file mode 100644
index 27f79454..00000000
--- a/plugins/defaultDataForPath/defaultDataForPath.js
+++ /dev/null
@@ -1,450 +0,0 @@
-var jsonData = [
-    {
-        "name": "OPTIONAL NAME - NOT USED IN SCRIPT",
-        "paths": [
-            "C:\\Users\\UserName\\Desktop\\NOTPORN\\Brazzers",
-            "D:\\SecretStorage\\Porn\\Brazzers"
-        ],
-        "studio": "Brazzers",
-        "tags": [
-            "Default_Data_For_Path_Tagged"
-        ]
-    }
-];
-
-function ok() {
-    return {
-        output: "ok"
-    };
-}
-
-function main() {
-    var hookContext = input.Args.hookContext;
-    var type = hookContext.type;
-    var ID = hookContext.ID;
-
-    if (!type || !ID) {
-        // just return
-        return ok();
-    }
-
-    var itemPath;
-    var name = "";
-    if (type === 'Scene.Create.Post') {
-        itemPath = getScenePath(ID);
-        name = "scene"
-    } else if (type === 'Gallery.Create.Post') {
-        itemPath = getGalleryPath(ID);
-        name = "gallery"
-    } else if(type === 'Image.Create.Post') {
-        itemPath = getImagePath(ID);
-        name = "image"
-    }
-
-    var defaultData = getDefaultData(itemPath)
-
-    // create tags
-    var defaultTags = [];
-    for(var p=0; p<defaultData.length; p++) {
-        var tags = defaultData[p].tags;
-        if(tags) {
-            for(var t=0; t<tags.length; t++) {
-                var tag = tags[t]
-                if(stringNotAlreadyPresent(tag, defaultTags))
-                    defaultTags.push(tag)
-            }
-        }
-    }
-
-    // create studio
-    var addStudio = false;
-    var defaultStudioId = null;
-    var defaultStudio;
-    for(var p=0; p<defaultData.length; p++) {
-        var studio = defaultData[p].studio;
-        if(studio) {
-            var studioId = getStudioId(studio)
-            if(studioId) {
-                defaultStudioId = studioId;
-                addStudio = true;
-                defaultStudio = studio;
-            }
-        }       
-    }
-
-    // create performers
-    var defaultPerformers = [];
-    for(var p=0; p<defaultData.length; p++) {
-        var performers = defaultData[p].performers;
-        if(performers) {
-            for(var t=0; t<performers.length; t++) {
-                var performer = performers[t];
-                if(stringNotAlreadyPresent(performer, defaultPerformers))
-                    defaultPerformers.push(performer)
-            }
-        }
-    }
-
-    // convert tags to tagIds
-    var addTags = false;
-    var defaultTagIds = [];
-    if(defaultTags) {
-        for(var i=defaultTags.length-1; i>=0; i--) {
-            var tagId = getTagId(defaultTags[i])
-            tagId ? defaultTagIds.push(tagId) : defaultTags.pop();
-        }
-        if(defaultTagIds && defaultTagIds.length != 0) {
-            addTags = true;
-        }
-    }
-
-    // convert performers to performerIds
-    var addPerformers = false;
-    var defaultPerformerIds = [];
-    if(defaultPerformers) {
-        for(var i=defaultPerformers.length-1; i>=0; i--) {
-            var tagId = getPerformerId(defaultPerformers[i])
-            tagId ? defaultPerformerIds.push(tagId) : defaultPerformers.pop();
-        }
-        if(defaultPerformerIds && defaultPerformerIds.length != 0) {
-            addPerformers = true;
-        }
-    }
-
-
-    // Apply all and log
-    var tags = addTags ? defaultTagIds : null;
-    var studio = addStudio ? defaultStudioId : null;
-    var performers = addPerformers ? defaultPerformerIds : null;
-
-    if (type === 'Scene.Create.Post') {
-        setSceneData(ID, tags, studio, performers)
-    } else if (type === 'Gallery.Create.Post') {
-        setGalleryData(ID, tags, studio, performers)
-    } else if(type === 'Image.Create.Post') {
-        setImageData(ID, tags, studio, performers)
-    }
-    
-
-    for(var o=0;o<defaultTags.length;o++) {
-       log.Info("[DefaultDataForPath]: Added tag " + defaultTags[o] + " to " + name + " " + ID);
-    }
-    for(var o=0;o<defaultPerformers.length;o++) {
-        log.Info("[DefaultDataForPath]: Added performer " + defaultPerformers[o] + " to " + name + " " + ID);
-     }
-    addStudio ? log.Info("[DefaultDataForPath]: Added studio " + defaultStudio + " to " + name + " " + ID) : "";
-    
-}
-
-function getScenePath(ID) {
-    var query = "\
-query findScene($id: ID) {\
-    findScene(id: $id) {\
-        path\
-    }\
-}";
-
-    var variables = {
-        id: ID
-    };
-
-    var result = gql.Do(query, variables);
-    var findScene = result.findScene;
-    if (!findScene) {
-        return null;
-    }
-
-    var path = findScene.path;
-    return path;
-}
-
-function getImagePath(ID) {
-    var query = "\
-query findImage($id: ID) {\
-    findImage(id: $id) {\
-        path\
-    }\
-}";
-
-    var variables = {
-        id: ID
-    };
-
-    var result = gql.Do(query, variables);
-    var findImage = result.findImage;
-    if (!findImage) {
-        return null;
-    }
-
-    var path = findImage.path;
-    return path;
-}
-
-function getGalleryPath(ID) {
-    var query = "\
-query findGallery($id: ID) {\
-    findGallery(id: $id) {\
-        path\
-    }\
-}";
-
-    var variables = {
-        id: ID
-    };
-
-    var result = gql.Do(query, variables);
-    var findGallery = result.findGallery;
-    if (!findGallery) {
-        return null;
-    }
-
-    var path = findGallery.path;
-    return path;
-}
-
-function getTagId(tagName) {
-    var query = "\
-    query findTagId($filter: FindFilterType!) {\
-        findTags(filter: $filter) {\
-            tags {\
-                id\
-            }\
-        }\
-    }";
-
-    var variables = {
-        filter: {
-            q: tagName
-        }
-    };
-
-    result = gql.Do(query, variables)
-    if(result.findTags.tags[0]) {
-        return result.findTags.tags[0].id;
-    }
-    else {
-        log.Error("TAG " + tagName + " DOES NOT EXIST IN STASH!")
-        return null;
-    }
-}
-
-function getPerformerId(performerName) {
-    var query = "\
-    query findPerformerId($filter: FindFilterType!) {\
-        findPerformers(filter: $filter) {\
-            performers {\
-                id\
-            }\
-        }\
-    }";
-
-    var variables = {
-        filter: {
-            q: performerName
-        }
-    };
-
-    result = gql.Do(query, variables)
-    if(result.findPerformers.performers[0]) {
-        return result.findPerformers.performers[0].id;
-    }
-    else {
-        log.Error("PERFORMER " + performerName + " DOES NOT EXIST IN STASH!")
-        return null;
-    }
-}
-
-function getStudioId(studioName) {
-    var query = "\
-    query findStudioId($filter: FindFilterType!) {\
-        findStudios(filter: $filter) {\
-            studios {\
-                id\
-            }\
-        }\
-    }";
-
-    var variables = {
-        filter: {
-            q: studioName
-        }
-    };
-
-    result = gql.Do(query, variables)
-    if(result.findStudios.studios[0]) {
-        return result.findStudios.studios[0].id
-    }
-    else {
-        log.Error("STUDIO " + studioName + " DOES NOT EXIST IN STASH!")
-        return null;
-    }
-}
-
-function stringNotAlreadyPresent(text, itemArray) {
-    for(var i=0;i < itemArray.length; i++) {
-        if(itemArray[i] === text) {
-            return false;
-        }
-    }
-    return true;
-}
-
-function addAllData(obj, lowerItemPath, defaultData, pTags, pPerformers, pStudio) {
-    if(obj) {
-        if(obj.paths) {
-            var paths = obj.paths;
-            if(containsPath(paths, lowerItemPath)) {
-                // inject data from parent if avail
-                if(pTags) {
-			if(!obj.tags) {
-				obj.tags = [];	
-			}
-                    obj.tags = obj.tags.concat(pTags)
-                }
-                if(pPerformers) {
-			if(!obj.performers) {
-				obj.performers = [];	
-			}
-                    obj.performers = obj.performers.concat(pPerformers)
-                }
-                if(pStudio) {
-                    obj.studio = pStudio
-                }
-                defaultData.push(obj)
-            }
-        }
-        else {
-            // add defaults to children
-            if(obj.tags) {
-                if(!pTags) {
-                    pTags = obj.tags;
-                }
-                else {
-                    pTags = pTags.concat(obj.tags)
-                }  
-            }
-            if(obj.performers) {
-                if(!pPerformers) {
-                    pPerformers = obj.performers
-                }
-                else {
-                    pPerformers = pPerformers.concat(obj.performers)
-                }
-            }
-            if(obj.studio) {
-                pStudio = obj.studio;
-            }
-        }
-        if(obj.children) {
-            for(var o=0;o<obj.children.length;o++) {
-                defaultData = addAllData(obj.children[o], lowerItemPath, defaultData, pTags, pPerformers, pStudio)
-            }
-        }
-    }
-    return defaultData
-}
-
-function getDefaultData(itemPath) {
-    var defaultData = [];
-    var lowerItemPath = itemPath.toLowerCase();
-    for(var i=0;i<jsonData.length;i++) {
-        var obj = jsonData[i];
-        defaultData = addAllData(obj, lowerItemPath, defaultData, null, null, null)
-    }
-
-    return defaultData;
-}
-
-function containsPath(paths, inputPath) {
-    for(var p=0;p<paths.length;p++) {
-        var path = paths[p].toLowerCase() + '';
-        if(stringContains(inputPath, path)) {
-            log.Info("[DefaultDataForPath]: " + inputPath + " MATCH " + path)
-            return true;
-        }
-    }
-    return false;
-}
-
-function stringContains(value, searchFor)
-{
-	var v = (value || '').toLowerCase();
-	var v2 = searchFor;
-	if (v2) {
-		v2 = v2.toLowerCase();
-	}
-	return v.indexOf(v2) > -1;
-}
-
-
-function containsElem(items, elem) {
-    for(var i=0;i<items.length;i++) {
-        var item = items[i].toLowerCase();
-        if(item.equals(elem)) {
-            return true;
-        }
-    }
-    return false;
-}
-
-function setSceneData(sceneID, tagIDs, studioID, performerIds) {
-    var mutation = "\
-mutation sceneUpdate($input: SceneUpdateInput!) {\
-  sceneUpdate(input: $input) {\
-    id\
-  }\
-}";
-
-    var variables = {
-        input: {
-            id: sceneID,
-            tag_ids: tagIDs,
-            studio_id: studioID,
-            performer_ids: performerIds
-        }
-    };
-
-    gql.Do(mutation, variables);
-}
-
-function setImageData(sceneID, tagIDs, studioID, performerIds) {
-    var mutation = "\
-mutation imageUpdate($input: ImageUpdateInput!) {\
-    imageUpdate(input: $input) {\
-    id\
-  }\
-}";
-
-    var variables = {
-        input: {
-            id: sceneID,
-            tag_ids: tagIDs,
-            studio_id: studioID,
-            performer_ids: performerIds
-        }
-    };
-
-    gql.Do(mutation, variables);
-}
-
-function setGalleryData(sceneID, tagIDs, studioID, performerIds) {
-    var mutation = "\
-mutation galleryUpdate($input: GalleryUpdateInput!) {\
-    galleryUpdate(input: $input) {\
-    id\
-  }\
-}";
-
-    var variables = {
-        input: {
-            id: sceneID,
-            tag_ids: tagIDs,
-            studio_id: studioID,
-            performer_ids: performerIds
-        }
-    };
-
-    gql.Do(mutation, variables);
-}
-
-main();
diff --git a/plugins/defaultDataForPath/defaultDataForPath.yml b/plugins/defaultDataForPath/defaultDataForPath.yml
deleted file mode 100644
index da88460b..00000000
--- a/plugins/defaultDataForPath/defaultDataForPath.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-# example plugin config
-name: Default Data For Path
-description: Adds configured Tags, Performers and/or Studio to all newly scanned Scenes, Images and Galleries.
-url: https://github.com/stashapp/CommunityScripts
-version: 1.1
-exec:
-  - defaultDataForPath.js
-interface: js
-hooks:
-  - name: Add Configured Data on Scan
-    description: Adds configured tags/performers/studio on Task->Scan creation.
-    triggeredBy: 
-      - Scene.Create.Post
-      - Gallery.Create.Post
-      - Image.Create.Post
diff --git a/plugins/dupeMarker/README.md b/plugins/dupeMarker/README.md
deleted file mode 100644
index 47d53794..00000000
--- a/plugins/dupeMarker/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Marks duplicate markers with a tag: `[Marker: Duplicate]`
-
-Tasks -> Search for duplicate markers
-
-It will add the tag to any markers that have an **exact** match for title, time **and** primary tag.  
-It will only add to existing markers, it is up to the user to go to the tag and navigate to the scene where the duplicates will be highlighted with the tag.
-
-(it's technically a Dupe Marker Marker)
\ No newline at end of file
diff --git a/plugins/dupeMarker/dupeMarker.py b/plugins/dupeMarker/dupeMarker.py
deleted file mode 100644
index d90c6720..00000000
--- a/plugins/dupeMarker/dupeMarker.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import json
-import sys
-import re
-import datetime as dt
-import stashapi.log as log
-from stashapi.tools import human_bytes
-from stashapi.stash_types import PhashDistance
-from stashapi.stashapp import StashInterface
-
-FRAGMENT = json.loads(sys.stdin.read())
-MODE = FRAGMENT['args']['mode']
-stash = StashInterface(FRAGMENT["server_connection"])
-dupe_marker_tag = stash.find_tag('[Marker: Duplicate]', create=True).get("id")
-
-def findScenesWithMarkers():
-  totalDupes = 0
-  scenes = stash.find_scenes(f={"has_markers": "true"},fragment="id")
-  for scene in scenes:
-    totalDupes += checkScene(scene)
-  log.info("Found %d duplicate markers across %d scenes" % (totalDupes, len(scenes)))
-
-def addMarkerTag(marker):
-  query = """
-      mutation SceneMarkerUpdate($input:SceneMarkerUpdateInput!) {
-          sceneMarkerUpdate(input: $input) {
-              id
-          }
-      }
-  """
-  oldTags = [tag["id"] for tag in marker["tags"]]
-  if dupe_marker_tag in oldTags:
-    return
-  oldTags.append(dupe_marker_tag)
-  newMarker = {
-    "id": marker["id"],
-    "tag_ids": oldTags
-  }
-  stash._callGraphQL(query, {"input": newMarker })
-  #stash.update_scene_marker(newMarker, "id")
-
-def checkScene(scene):
-  seen = set()
-  dupes = []
-  markers = stash.find_scene_markers(scene['id'])
-  # find duplicate pairs
-  for marker in markers:
-    sortidx = ";".join([
-      str(marker["title"]),
-      str(marker["seconds"]),
-      str(marker["primary_tag"]["id"])
-    ])
-    if sortidx not in seen:
-      seen.add(sortidx)
-    else:
-      dupes.append(marker)
-  # add tag
-  if dupes:
-    log.debug("Found %d duplicate markers in scene %s" % (len(dupes), scene['id']))
-    for dupe in dupes:
-      addMarkerTag(dupe)
-  return len(dupes)
-
-def main():
-  if MODE == "search":
-    findScenesWithMarkers()
-  log.exit("Plugin exited normally.")
-
-if __name__ == '__main__':
-  main()
\ No newline at end of file
diff --git a/plugins/dupeMarker/dupeMarker.yml b/plugins/dupeMarker/dupeMarker.yml
deleted file mode 100644
index d043b972..00000000
--- a/plugins/dupeMarker/dupeMarker.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: Dupe Marker Detector
-description: Finds and marks duplicate markers
-version: 0.1
-url: https://github.com/stashapp/CommunityScripts/
-exec:
-  - python
-  - "{pluginDir}/dupeMarker.py"
-interface: raw
-tasks:
-  - name: 'Search'
-    description: Search for duplicate markers
-    defaultArgs:
-      mode: search
\ No newline at end of file
diff --git a/plugins/dupeMarker/requirements.txt b/plugins/dupeMarker/requirements.txt
deleted file mode 100644
index 5bda5826..00000000
--- a/plugins/dupeMarker/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-stashapp-tools
\ No newline at end of file
diff --git a/plugins/filenameParser/filenameParser.js b/plugins/filenameParser/filenameParser.js
deleted file mode 100644
index c6e94b50..00000000
--- a/plugins/filenameParser/filenameParser.js
+++ /dev/null
@@ -1,398 +0,0 @@
-function ok() {
-    return {
-        output: "ok"
-    };
-}
-
-function main() {
-    var hookContext = input.Args.hookContext;
-    var type = hookContext.type;
-    var ID = hookContext.ID;
-
-    if (!ID) {
-        return ok();
-    }
-
-    var filenameFetcher;
-    var saver;
-    if (type === 'Scene.Create.Post') {
-        filenameFetcher = getSceneFilename;
-        saver = updateScene;
-    } else if (type === 'Gallery.Create.Post') {
-        filenameFetcher = getGalleryFilename;
-        saver = updateGallery;
-    } else {
-        return ok();
-    }
-
-    var filename = filenameFetcher(ID);
-    if (!filename) {
-        return ok();
-    }
-
-    filename = cleanFilename(filename);
-    var parseResult = parseFilename(filename);
-
-    saver(ID, parseResult);
-
-    return ok();
-}
-
-function getSceneFilename(sceneID) {
-    var query = "\
-query findScene($id: ID) {\
-    findScene(id: $id) {\
-        path\
-    }\
-}";
-
-    var variables = {
-        id: sceneID
-    };
-
-    var result = gql.Do(query, variables);
-    var findScene = result.findScene;
-    if (!findScene) {
-        return null;
-    }
-
-    var path = findScene.path;
-    return path.substring(path.lastIndexOf('/') + 1);
-}
-
-function updateScene(sceneID, parseResult) {
-    var query = "\
-mutation SceneUpdate($input: SceneUpdateInput!) {\
-    sceneUpdate(input: $input) {\
-        id\
-    }\
-}";
-
-    var variables = {
-        input: parseResult
-    };
-
-    variables.input.id = sceneID;
-
-    gql.Do(query, variables);
-}
-
-function getGalleryFilename(galleryID) {
-    var query = "\
-query findGallery($id: ID!) {\
-    findGallery(id: $id) {\
-        path\
-    }\
-}";
-
-    var variables = {
-        id: galleryID
-    };
-
-    var result = gql.Do(query, variables);
-    var findGallery = result.findGallery;
-    if (!findGallery) {
-        return null;
-    }
-
-    var path = findGallery.path;
-    return path.substring(path.lastIndexOf('/') + 1);
-}
-
-function updateGallery(galleryID, parseResult) {
-    var query = "\
-mutation GalleryUpdate($input: GalleryUpdateInput!) {\
-    galleryUpdate(input: $input) {\
-        id\
-    }\
-}";
-
-    var variables = {
-        input: parseResult
-    };
-
-    variables.input.id = galleryID;
-
-    gql.Do(query, variables);
-}
-
-function matchNames(parts, name, aliases) {
-    var names = [name].concat(aliases);
-
-    var partRegexes = [];
-
-    for (var i = 0; i < parts.length; i++) {
-        partRegexes[i] = new RegExp('^' + parts[i].toLowerCase() + '[. \\-_]*');
-    }
-
-    var cleanRegex = /[. \-_]/g;
-    var longestMatch = 0;
-    for (var i = 0; i < names.length; i++) {
-        var name = names[i].replace(cleanRegex, '').toLowerCase();
-        for (var j = 0; j < partRegexes.length; j++) {
-            if (!partRegexes[j].test(name)) {
-                break;
-            }
-
-            name = name.replace(partRegexes[j], '');
-
-            if (name.length === 0) {
-                if (j + 1 > longestMatch) {
-                    longestMatch = j + 1;
-                }
-            }
-        }
-    }
-
-    return longestMatch;
-}
-
-function cleanFilename(name) {
-    name = name
-        // remove imageset-...[rarbg]
-        .replace(/imageset-[\w\d]+\[rarbg]/i, '')
-        // replace [...] with just ...
-        .replace(/\[(.*?)]/g, '$1')
-        // replace (...) with just ...
-        .replace(/\((.*?)\)/g, '$1')
-        // replace {...} with just ...
-        .replace(/{(.*?)}/g, '$1')
-    ;
-
-    var blockList = [
-        'mp4',
-        'mov',
-        'zip',
-        'xxx',
-        '4k',
-        '4096x2160',
-        '3840x2160',
-        '2160p',
-        '1080p',
-        '1920x1080',
-        '60fps',
-        '30fps',
-        'repack',
-        'ktr',
-    ];
-    var regExp = new RegExp('(_|[^\\w\\d]|^)(' + blockList.join('|') + ')(_|[^\\w\\d]|$)', 'i');
-    while (regExp.test(name)) {
-        name = name.replace(regExp, '$1$3');
-    }
-
-    // If name starts with <...>.com remove the .com (sometimes names include studio name as site/domain)
-    name = name.replace(/^([\w\d-]+?)\.com/, '$1');
-
-    name = name
-        // Remove everything except letters and digits at the start
-        .replace(/^(_|[^\w\d])+/, '')
-        // Remove everything except letters and digits at the end
-        .replace(/(_|[^\w\d])+$/, '')
-    ;
-
-    return name;
-}
-
-function matchStudio(parts, result) {
-    var query = "\
-query findStudios($studio_filter: StudioFilterType, $filter: FindFilterType!) {\
-    findStudios(studio_filter: $studio_filter, filter: $filter) {\
-        studios {\
-            id\
-            name\
-            aliases\
-        }\
-    }\
-}";
-
-    var searchTerm = parts[0].substring(0, 2);
-    if (parts[0].substring(0, 1) === 'a') {
-        searchTerm = parts[0].substring(1, 3);
-    }
-    var variables = {
-        filter: {
-            per_page: -1,
-        },
-        studio_filter: {
-            name: {
-                modifier: "INCLUDES",
-                value: searchTerm
-            },
-            OR: {
-                aliases: {
-                    modifier: "INCLUDES",
-                    value: searchTerm
-                }
-            }
-        }
-    };
-
-    var queryResult = gql.Do(query, variables);
-    var studios = queryResult.findStudios.studios;
-    if (!studios.length && parts[0].substring(0, 1) === 'a') {
-        variables.studio_filter.name.value = variables.studio_filter.OR.aliases.value = parts[0].substring(1, 3);
-        queryResult = gql.Do(query, variables);
-        studios = queryResult.findStudios.studios;
-    }
-
-    var matchingParts = 0;
-    for (var i = 0; i < studios.length; i++) {
-        var studio = studios[i];
-        matchingParts = matchNames(parts, studio.name, studio.aliases);
-        if (matchingParts === 0) {
-            continue;
-        }
-
-        result.studio_id = studio.id;
-
-        break;
-    }
-
-    return matchingParts;
-}
-
-function matchDate(parts, result) {
-    if (
-        parts.length < 3 ||
-        !/^(\d{2}|\d{4})$/.test(parts[0]) ||
-        !/^\d{2}$/.test(parts[1]) ||
-        !/^\d{2}$/.test(parts[2])
-    ) {
-        return 0;
-    }
-
-    var year = parseInt(parts[0], 10);
-    var month = parseInt(parts[1], 10);
-    var day = parseInt(parts[2], 10);
-
-    if (year < 100) {
-        year += 2000;
-    }
-
-    if (
-        year < 2000 || year > 2100 ||
-        month < 1 || month > 12 ||
-        day < 1 || day > 31
-    ) {
-        return 0;
-    }
-
-    result.date = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day);
-
-    return 3;
-}
-
-function matchPerformers(parts, result) {
-    var query = "\
-query findPerformers($performer_filter: PerformerFilterType, $filter: FindFilterType!) {\
-    findPerformers(performer_filter: $performer_filter, filter: $filter) {\
-        performers {\
-            id\
-            name\
-            aliases\
-        }\
-    }\
-}"
-    var variables = {
-        filter: {
-            per_page: -1
-        },
-        performer_filter: {
-            name: {
-                modifier: "INCLUDES"
-            },
-            OR: {
-                aliases: {
-                    modifier: "INCLUDES"
-                }
-            }
-        }
-    };
-
-    var totalMatchingParts = 0;
-    result.performer_ids = [];
-    do {
-        variables.performer_filter.name.value = variables.performer_filter.OR.aliases.value = parts[0].substring(0, 2);
-
-        var queryResult = gql.Do(query, variables);
-        var performers = queryResult.findPerformers.performers;
-        if (!performers.length) {
-            parts.shift();
-            continue;
-        }
-
-        var maxMatchLength = 0;
-        var matches = [];
-        for (var i = 0; i < performers.length; i++) {
-            var performer = performers[i];
-            var aliases = performer.aliases ? performer.aliases.split(/\s*[,;]+\s*/) : [];
-            var matchingParts = matchNames(parts, performer.name, aliases);
-            if (matchingParts === 0) {
-                continue;
-            }
-
-            if (matchingParts > maxMatchLength) {
-                maxMatchLength = matchingParts;
-                matches = [performer.id];
-            } else if (matchingParts === maxMatchLength) {
-                matches.push(performer.id);
-            }
-        }
-
-        if (maxMatchLength === 0) {
-            break;
-        }
-
-        result.performer_ids = result.performer_ids.concat(matches);
-
-        totalMatchingParts += maxMatchLength;
-
-        parts = parts.slice(maxMatchLength);
-        while (parts.length > 0 && (parts[0].toLowerCase() === 'and' || parts[0] === '&')) {
-            parts.shift();
-            totalMatchingParts += 1;
-        }
-    } while (parts.length > 0);
-
-    return totalMatchingParts;
-}
-
-function parseFilename(name) {
-    var parts = name.split(/[. \-_,]+/);
-
-    var matchers = [
-        matchStudio,
-        matchDate,
-        matchPerformers,
-    ];
-
-    var result = {};
-    var hasMatched = false;
-    for (var matchTries = 0; matchTries < 3 && !hasMatched && parts.length; matchTries++) {
-        for (var i = 0; i < matchers.length && parts.length > 0; i++) {
-            var matchedParts = matchers[i](parts, result);
-
-            if (matchedParts > 0) {
-                hasMatched = true;
-                parts = parts.slice(matchedParts);
-            }
-        }
-
-        // If no matchers worked remove a part. Maybe the format is correct but studio isn't found? etc
-        if (!hasMatched) {
-            parts.shift();
-        }
-    }
-
-    if (hasMatched && parts.length > 0) {
-        var title = parts.join(' ');
-        // Look behind assertions are not supported, so can't use `replace(/(?<=.)([A-Z]/g, ' $1')` so instead have to do a loop. Otherwise for example 'FooABar' will become 'Foo ABar' instead of 'Foo A Bar'
-        while (/[^\s][A-Z]/.test(title)) {
-            title = title.replace(/([^\s])([A-Z])/g, '$1 $2');
-        }
-        result.title = title.trim();
-    }
-    return result;
-}
-
-main();
diff --git a/plugins/filenameParser/filenameParser.yml b/plugins/filenameParser/filenameParser.yml
deleted file mode 100644
index 2d4e47c9..00000000
--- a/plugins/filenameParser/filenameParser.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: Filename parser
-description: Parses filename into studio, date, performers and title
-url:
-version: 0.1
-exec:
-  - filenameParser.js
-interface: js
-hooks:
-  - name: Prepopulates data based on filename
-    description:
-    triggeredBy:
-      - Scene.Create.Post
-      - Gallery.Create.Post
diff --git a/plugins/markerTagToScene/markerTagToScene.js b/plugins/markerTagToScene/markerTagToScene.js
deleted file mode 100644
index 77ceecca..00000000
--- a/plugins/markerTagToScene/markerTagToScene.js
+++ /dev/null
@@ -1,81 +0,0 @@
-function ok() {
-    return {
-        output: "ok"
-    };
-}
-
-function main() {
-    var hookContext = input.Args.hookContext;
-    var opInput = hookContext.input;
-    var primaryTagID = opInput.primary_tag_id;
-    var sceneID = opInput.scene_id;
-
-    // we can't currently find scene markers. If it's not in the input
-    // then just return
-    if (!primaryTagID || !sceneID) {
-        // just return
-        return ok();
-    }
-
-    // get the existing scene tags
-    var sceneTags = getSceneTags(sceneID);
-    var tagIDs = [];
-    for (var i = 0; i < sceneTags.length; ++i) {
-        var tagID = sceneTags[i].id;
-        if (tagID == primaryTagID) {
-            log.Debug("primary tag already exists on scene");
-            return;
-        }
-
-        tagIDs.push(tagID);
-    }
-
-    // set the tag on the scene if not present
-    tagIDs.push(primaryTagID);
-
-    setSceneTags(sceneID, tagIDs);
-    log.Info("added primary tag " + primaryTagID + " to scene " + sceneID);
-}
-
-function getSceneTags(sceneID) {
-    var query = "\
-query findScene($id: ID) {\
-  findScene(id: $id) {\
-    tags {\
-      id\
-    }\
-  }\
-}";
-
-    var variables = {
-        id: sceneID
-    };
-
-    var result = gql.Do(query, variables);
-    var findScene = result.findScene;
-    if (findScene) {
-        return findScene.tags;
-    }
-
-    return [];
-}
-
-function setSceneTags(sceneID, tagIDs) {
-    var mutation = "\
-mutation sceneUpdate($input: SceneUpdateInput!) {\
-  sceneUpdate(input: $input) {\
-    id\
-  }\
-}";
-
-    var variables = {
-        input: {
-            id: sceneID,
-            tag_ids: tagIDs
-        }
-    };
-
-    gql.Do(mutation, variables);
-}
-
-main();
\ No newline at end of file
diff --git a/plugins/markerTagToScene/markerTagToScene.yml b/plugins/markerTagToScene/markerTagToScene.yml
deleted file mode 100644
index 2dcb10e7..00000000
--- a/plugins/markerTagToScene/markerTagToScene.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-# example plugin config
-name: Scene Marker Tags to Scene
-description: Adds primary tag of Scene Marker to the Scene on marker create/update.
-url: https://github.com/stashapp/CommunityScripts
-version: 1.0
-exec:
-  - markerTagToScene.js
-interface: js
-hooks:
-  - name: Update scene with scene marker tag
-    description: Adds primary tag of Scene Marker to the Scene on marker create/update.
-    triggeredBy: 
-      - SceneMarker.Create.Post
-      - SceneMarker.Update.Post
diff --git a/plugins/pathParser/README.md b/plugins/pathParser/README.md
deleted file mode 100644
index 1d989a48..00000000
--- a/plugins/pathParser/README.md
+++ /dev/null
@@ -1,229 +0,0 @@
-# Path Parser
-
-Updates scene info based on the file path.
-
-## Contents
-* [Hooks](#hooks)
-* [Triggers](#triggers)
-* [Rules](#rules)
-* [Patterns](#patterns)
-* [Fields](#fields)
-* [Examples](#examples)
-
-## Hooks
-
-### Run Rules on scan
-
-Updates scene info whenever a new scene is added.
-
-You can disable this hook by deleting the following section from `pathParser.yml`:
-
-```yml
-hooks:
-  - name: Run Rules on scan
-    description: Updates scene info whenever a new scene is added.
-    triggeredBy: 
-      - Scene.Create.Post
-```
-
-## Triggers
-
-### Create Tags
-
-Adds the \[Run\] and \[Test\] tags (configurable from pathParser.yml).
-
-You can remove this trigger by deleting the following section from `pathParser.yml`:
-
-```yml
-  - name: Create Tags
-    description: Create tags used by the path parser tasks.
-    defaultArgs:
-      task: createTags
-      runTag: '[Run]'
-      testTag: '[Test]'
-```
-
-### Remove Tags
-
-Removes the \[Run\] and \[Test\] tags (configurable from pathParser.yml).
-
-You can remove this trigger by deleting the following section from `pathParser.yml`:
-
-```yml
-  - name: Remove Tags
-    description: Remove tags used by the path parser tasks.
-    defaultArgs:
-      task: removeTags
-      runTag: '[Run]'
-      testTag: '[Test]'
-```
-
-### Run Rules
-
-Run rules for scenes containing the \[Run\] tag (configurable from pathParser.yml).
-
-You can remove this trigger by deleting the following section from `pathParser.yml`:
-
-```yml
-  - name: Run Rules
-    description: Run rules for scenes containing the run tag.
-    defaultArgs:
-      task: runRules
-      runTag: '[Run]'
-```
-
-### Test Rules
-
-Test rules for scenes containing the \[Test\] tag (configurable from pathParser.yml).
-
-You can remove this trigger by deleting the following section from `pathParser.yml`:
-
-```yml
-  - name: Test Rules
-    description: Test rules for scenes containing the test tag.
-    defaultArgs:
-      task: testRules
-      testTag: '[Test]'
-```
-
-## Rules
-
-A single rule must have a name, pattern, and fields:
-
-```jsonc
-{
-  name: 'Your Rule',
-
-  // This pattern would match a scene with the path: folder/folder/file.mp4
-  pattern: [
-    'folder',
-    'folder',
-    'file'
-  ],
-
-  // The matched scene would update it's title and studio
-  fields: {
-    title: 'Scene Title',
-    studio: 'Studio'
-  }
-}
-```
-
-## Patterns
-
-Each entry in pattern will match a folder or the filename (without extension).
-
-Patterns behave differently depending on the type:
-
-| Type     | Format                             | Description                                |
-|:---------|:-----------------------------------|:-------------------------------------------|
-| null     | `null`                             | Matches any value                          |
-| String   | `'string'`                         | Matches a specific value exactly           |
-| RegExp   | `/regex/`                          | Match using a regex<sup>1</sup>            |
-| Array    | `['string1', 'string2', /regex/]`  | Match any one of the sub-patterns          |
-| Function | `function (path) { return path; }` | Match if function returns a non-null value |
-
-1. Parenthesis matches in the regex are able to be used in [field](#fields) replacements.
-
-## Fields
-
-The first matching rule will update the scene with the fields indicated:
-
-| Field       | Format                            |
-| :-----------|:----------------------------------|
-| title       | `'New Title'`                     |
-| studio      | `'Studio Name'`                   |
-| movie_title | `'Movie Name'`                    |
-| scene_index | `'1'`                             |
-| performers  | `'Performer 1, Performer 2, ...'` |
-| tags        | `'Tag 1, Tag 2, ...'`             |
-
-Matched patterns can be inserted into any field by referencing their indexed value ([see examples](#examples) below).
-
-## Examples
-
-### Specific studio folders with scenes
-
-```js
-{
-  name: 'Studio/Scene',
-  pattern: [
-    ['Specific Studio', 'Another Studio'], // A specific studio name
-    null // Any filename
-  ],
-  fields: {
-    title: '#1', // 1 refers to the second pattern (filename)
-    studio: '#0' // 0 refers to the first pattern (folder)
-  }
-}
-```
-
-Input: `X:\DCE\Black Adam.mp4`
-
-Output:
-
-0. DCE
-1. Black Adam
-
-### Studio with movie sub-folder and scenes
-
-```js
-{
-  name: 'Studio/Movie (YEAR)/Scene - Scene #',
-  pattern: [
-    null, // Any studio name
-    /(.+) \(\d{4}\)/, // A sub-folder with 'Movie Title (2022)'
-    /(.+) - \w+ ({d})/, // A filename with 'Scene Title - Scene 1'
-  ],
-  fields: {
-    title: '#2',
-    studio: '#0',
-    movie_title: '#1',
-    scene_index: '#3'
-  }
-}
-```
-
-Input: `X:\HBO\House of the Dragon (2022)\House of the Dragon - Episode 1.mp4`
-
-Output:
-
-0. HBO
-1. House of the Dragon
-2. House of the Dragon
-3. 1
-
-### Filename with performers using function
-
-```js
-
-{
-  name: 'Studio/Scene.Performers.S##E##',
-  pattern: [
-    null, // Any studio name
-    function (path) {
-      var parts = path.split('.');
-      var performers = parts[1].split('&').map(function (performer) { return performer.trim() }).join(',');
-      var series = /S(\d{2})E(\d{2})/.exec(parts[2]);
-      return [parts[0], performers, parseInt(series[1]), parseInt(series[2])];
-    }
-  ],
-  fields: {
-    title: '#1',
-    studio: '#0',
-    performers: '#2',
-    movie_title: '#1 - Season #3',
-    scene_index: '#4'
-  }
-}
-```
-
-Input: `X:\Prime\The Boys.Karl Urban & Jack Quaid.S06E09.mp4`
-
-Output:
-
-0. Prime
-1. The Boys
-2. Karl Urban,Jack Quaid
-3. 6
-4. 9
\ No newline at end of file
diff --git a/plugins/pathParser/pathParser.js b/plugins/pathParser/pathParser.js
deleted file mode 100644
index bdef3498..00000000
--- a/plugins/pathParser/pathParser.js
+++ /dev/null
@@ -1,748 +0,0 @@
-// Common Patterns
-var patterns = {
-  movieTitleAndYear: /(.+) \(\d{4}\)/,
-  sceneTitleAndPerformers: /(.+) - ([A-zÀ-ú, ]+)/
-}
-
-var rules = [
-  {
-    name: 'Rule 1',
-    pattern: [
-      'Specific Studio',
-      null,
-      null
-    ],
-    fields: {
-      studio: '#0',
-      title: '#2',
-    }
-  },
-  {
-    name: 'Rule 2',
-    pattern: [
-      ['One Studio', 'Another Studio'],
-      patterns.movieTitleAndYear,
-      patterns.sceneTitleAndPerformers
-    ],
-    fields: {
-      title: '#2',
-      studio: '#0',
-      performers: '#3'
-    }
-  },
-];
-
-/* ----------------------------------------------------------------------------
-// DO NOT EDIT BELOW!
----------------------------------------------------------------------------- */
-function main()
-{
-  try
-  {
-    switch (getTask(input.Args))
-    {
-      case 'createTags':
-        var runTag = getArg(input.Args, 'runTag');
-        var testTag = getArg(input.Args, 'testTag');
-        createTags([runTag, testTag]);
-        break;
-
-      case 'removeTags':
-        var runTag = getArg(input.Args, 'runTag');
-        var testTag = getArg(input.Args, 'testTag');
-        removeTags([runTag, testTag]);
-        break;
-
-      case 'runRules':
-        var runTag = getArg(input.Args, 'runTag');
-        initBasePaths();
-        runRules(runTag);
-        break;
-
-      case 'testRules':
-        DEBUG = true;
-        var testTag = getArg(input.Args, 'testTag');
-        initBasePaths();
-        runRules(testTag);
-        break;
-
-      case 'scene':
-        var id = getId(input.Args);
-        initBasePaths();
-        matchRuleWithSceneId(id, applyRule);
-        break;
-
-      case 'image':
-        var id = getId(input.Args);
-        initBasePaths();
-        break;
-
-      default:
-        throw 'Unsupported task';
-    }
-  }
-  catch (e)
-  {
-    return { Output: 'error', Error: e };
-  }
-
-  return { Output: 'ok' };
-}
-
-// Get an input arg
-function getArg(inputArgs, arg)
-{
-  if (inputArgs.hasOwnProperty(arg))
-  {
-    return inputArgs[arg];
-  }
-
-  throw 'Input is missing ' + arg;
-}
-
-// Determine task based on input args
-function getTask(inputArgs)
-{
-  if (inputArgs.hasOwnProperty('task'))
-  {
-    return inputArgs.task;
-  }
-  
-  if (!inputArgs.hasOwnProperty('hookContext'))
-  {
-    return;
-  }
-
-  switch (inputArgs.hookContext.type)
-  {
-    case 'Scene.Create.Post':
-      return 'scene';
-    
-    case 'Image.Create.Post':
-      return 'image';
-  }
-}
-
-// Get stash paths from configuration
-function initBasePaths()
-{
-  var query ='\
-  query Query {\
-    configuration {\
-      general {\
-        stashes {\
-          path\
-        }\
-      }\
-    }\
-  }';
-
-  var result = gql.Do(query);
-  if (!result.configuration)
-  {
-    throw 'Unable to get library paths';
-  }
-
-  BASE_PATHS = result.configuration.general.stashes.map(function (stash)
-  {
-    return stash.path;
-  });
-
-  if (BASE_PATHS == null || BASE_PATHS.length == 0)
-  {
-    throw 'Unable to get library paths';
-  }
-}
-
-// Create tag if it does not already exist
-function createTags(tags)
-{
-  var query ='\
-  mutation TagCreate($input: TagCreateInput!) {\
-    tagCreate(input: $input) {\
-      id\
-    }\
-  }';
-
-  tags.forEach(function (tag)
-  {
-    if (tryGetTag(tag) !== null)
-    {
-      return;
-    }
-
-    var variables = {
-      input: {
-        name: tag
-      }
-    };
-
-    var result = gql.Do(query, variables);
-    if (!result.tagCreate)
-    {
-      throw 'Could not create tag ' + tag;
-    }
-  });
-}
-
-// Remove tags if it already exists
-function removeTags(tags)
-{
-  tags.forEach(function (tag)
-  {
-    var tagId = tryGetTag(tag);
-    if (tagId === null)
-    {
-      return;
-    }
-
-    var query = '\
-    mutation TagsDestroy($ids: [ID!]!) {\
-      tagsDestroy(ids: $ids)\
-    }';
-
-    var variables = {
-      ids: [ tagId ]
-    };
-
-    var result = gql.Do(query, variables);
-    if (!result.tagsDestroy)
-    {
-      throw 'Unable to remove tag ' + tag;
-    }
-  });
-}
-
-// Run rules for scenes containing tag
-function runRules(tag)
-{
-  var tagId = tryGetTag(tag);
-  if (tagId === null)
-  {
-    throw 'Tag ' + tag + ' does not exist';
-  }
-
-  var query = '\
-  query FindScenes($sceneFilter: SceneFilterType) {\
-    findScenes(scene_filter: $sceneFilter) {\
-      scenes {\
-        id\
-      }\
-    }\
-  }';
-
-  var variables = {
-    sceneFilter: {
-      tags: {
-        value: tagId,
-        modifier: 'INCLUDES'
-      }
-    }
-  };
-
-  var result = gql.Do(query, variables);
-  if (!result.findScenes || result.findScenes.scenes.length == 0)
-  {
-    throw 'No scenes found with tag ' + tag;
-  }
-
-  result.findScenes.scenes.forEach(function (scene)
-  {
-    matchRuleWithSceneId(scene.id, applyRule);
-  });
-}
-
-// Get scene/image id from input args
-function getId(inputArgs)
-{
-  if ((id = inputArgs.hookContext.id) == null)
-  {
-    throw 'Input is missing id';
-  }
-
-  return id;
-}
-
-// Apply callback function to first matching rule for id
-function matchRuleWithSceneId(sceneId, cb)
-{
-  var query = '\
-  query FindScene($findSceneId: ID) {\
-    findScene(id: $findSceneId) {\
-      files {\
-        path\
-      }\
-    }\
-  }';
-
-  var variables = {
-    findSceneId: sceneId
-  }
-
-  var result = gql.Do(query, variables);
-  if (!result.findScene || result.findScene.files.length == 0)
-  {
-    throw 'Missing scene for id: ' + sceneId;
-  }
-
-  for (var i = 0; i < result.findScene.files.length; i++)
-  {
-    try
-    {
-      matchRuleWithPath(sceneId, result.findScene.files[i].path, cb);
-      
-      if (DEBUG && bufferedOutput !== null && bufferedOutput !== '')
-      {
-        log.Info('[PathParser] ' + bufferedOutput);
-      }
-
-      return;
-    }
-    catch (e)
-    {
-      continue;
-    }
-  }
-  
-  if (DEBUG && bufferedOutput !== null && bufferedOutput !== '')
-  {
-    log.Info('[PathParser] ' + bufferedOutput);
-  }
-
-  throw 'No rule matches id: ' + sceneId;
-}
-
-// Apply callback to first matching rule for path
-function matchRuleWithPath(sceneId, path, cb)
-{
-  // Remove base path
-  for (var i = 0; i < BASE_PATHS.length; i++)
-  {
-    if (path.slice(0, BASE_PATHS[i].length) === BASE_PATHS[i])
-    {
-      path = path.slice(BASE_PATHS[i].length);
-    }
-  }
-
-  if (DEBUG)
-  {
-    bufferedOutput = path + '\n';
-  }
-
-  // Split paths into parts
-  var parts = path.split(/[\\/]/);
-
-  // Remove extension from filename
-  parts[parts.length - 1] = parts[parts.length - 1].slice(0, parts[parts.length - 1].lastIndexOf('.'));
-
-  for (var i = 0; i < rules.length; i++)
-  {
-    var sceneData = testRule(rules[i].pattern, parts);
-    if (sceneData !== null)
-    {
-      if (DEBUG)
-      {
-        bufferedOutput += 'Rule: ' + rules[i].name + '\n';
-      }
-
-      log.Debug('[PathParser] Rule: ' + rules[i].name + '\nPath: ' + path);
-      cb(sceneId, rules[i].fields, sceneData);
-      return;
-    }
-  }
-
-  bufferedOutput += 'No matching rule!';
-  throw 'No matching rule for path: ' + path;
-}
-
-// Test single rule
-function testRule(pattern, parts)
-{
-  if (pattern.length !== parts.length)
-  {
-    return null;
-  }
-
-  var matchedParts = [];
-  for (var i = 0; i < pattern.length; i++)
-  {
-    if ((subMatches = testPattern(pattern[i], parts[i])) == null)
-    {
-      return null;
-    }
-
-    matchedParts = [].concat(matchedParts, subMatches);
-  }
-
-  return matchedParts;
-}
-
-function testPattern(pattern, part)
-{
-  // Match anything
-  if (pattern == null)
-  {
-    return [part];
-  }
-
-  // Simple match
-  if (typeof pattern === 'string')
-  {
-    if (pattern === part)
-    {
-      return [part];
-    }
-
-    return null;
-  }
-
-  // Predicate match
-  if (typeof pattern == 'function')
-  {
-    try
-    {
-      var results = pattern(part);
-      if (results !== null)
-      {
-        return results;
-      }
-    }
-    catch (e)
-    {
-      throw e;
-    }
-
-    return null;
-  }
-
-  // Array match
-  if (pattern instanceof Array)
-  {
-    for (var i = 0; i < pattern.length; i++)
-    {
-      if ((results = testPattern(pattern[i], part)) != null)
-      {
-        return results;
-      }
-    }
-
-    return null;
-  }
-
-  // RegExp match
-  if (pattern instanceof RegExp)
-  {
-    var results = pattern.exec(part);
-    if (results === null)
-    {
-      return null;
-    }
-
-    return results.slice(1);
-  }
-}
-
-// Apply rule
-function applyRule(sceneId, fields, data)
-{
-  var any = false;
-  var variables = {
-    input: {
-      id: sceneId
-    }
-  };
-
-  if (DEBUG)
-  {
-    for (var i = 0; i < data.length; i++)
-    {
-      bufferedOutput += '#' + i + ': ' + data[i] + '\n';
-    }
-  }
-
-  for (var field in fields)
-  {
-    var value = fields[field];
-    for (var i = data.length - 1; i >= 0; i--)
-    {
-      value = value.replace('#' + i, data[i]);
-    }
-
-    switch (field)
-    {
-      case 'title':
-        if (DEBUG)
-        {
-          bufferedOutput += field + ': ' + value + '\n';
-        }
-
-        variables.input['title'] = value;
-        any = true;
-        continue;
-
-      case 'studio':
-        var studioId = tryGetStudio(value);
-        if (studioId == null)
-        {
-          continue;
-        }
-
-        if (DEBUG)
-        {
-          bufferedOutput += field + ': ' + value + '\n';
-          bufferedOutput += 'studio_id: ' + studioId + '\n';
-        }
-
-        variables.input['studio_id'] = studioId;
-        any = true;
-        continue;
-
-        case 'movie_title':
-          var movie_title = value.split(' ').join('[\\W]*');
-          var movieId = tryGetMovie(movie_title);
-          if (movieId == null)
-          {
-            continue;
-          }
-
-          if (!variables.input.hasOwnProperty('movies'))
-          {
-            variables.input['movies'] = [{}];
-          }
-
-          if (DEBUG)
-          {
-            bufferedOutput += field + ': ' + value + '\n';
-            bufferedOutput += 'movie_id: ' + movieId + '\n';
-          }
-
-          variables.input['movies'][0]['movie_id'] = movieId;
-          any = true;
-          continue;
-      
-      case 'scene_index':
-        var sceneIndex = parseInt(value);
-        if (isNaN(sceneIndex))
-        {
-          continue;
-        }
-
-        if (!variables.input.hasOwnProperty('movies'))
-        {
-          variables.input['movies'] = [{}];
-        }
-
-        if (DEBUG)
-        {
-          bufferedOutput += 'scene_index: ' + sceneIndex + '\n';
-        }
-
-        variables.input['movies'][0]['scene_index'] = sceneIndex;
-        continue;
-
-      case 'performers':
-        var performers = value.split(',').map(tryGetPerformer).filter(notNull);
-        if (performers.length == 0)
-        {
-          continue;
-        }
-
-        if (DEBUG)
-        {
-          bufferedOutput += field + ': ' + value + '\n';
-          bufferedOutput += 'performer_ids: ' + performers.join(', ') + '\n';
-        }
-
-        variables.input['performer_ids'] = performers;
-        any = true;
-        continue;
-
-      case 'tags':
-        var tags = value.split(',').map(tryGetTag).filter(notNull);
-        if (tags.length == 0)
-        {
-          continue;
-        }
-
-        if (DEBUG)
-        {
-          bufferedOutput += field + ': ' + value + '\n';
-          bufferedOutput += 'tag_ids: ' + tags.join(', ') + '\n';
-        }
-
-        variables.input['tag_ids'] = tags;
-        any = true;
-        continue;
-    }
-  }
-
-  // Test only
-  if (DEBUG)
-  {
-    if (!any)
-    {
-      bufferedOutput += 'No fields to update!\n';
-    }
-
-    return;
-  }
-
-  // Remove movies if movie_id is missing
-  if (variables.input.hasOwnProperty('movies') && !variables.input['movies'][0].hasOwnProperty('movie_id'))
-  {
-    delete variables.input['movies'];
-  }
-
-  // Apply updates
-  var query = '\
-  mutation Mutation($input: SceneUpdateInput!) {\
-    sceneUpdate(input: $input) {\
-      id\
-    }\
-  }';
-
-  if (!any)
-  {
-    throw 'No fields to update for scene ' + sceneId;
-  }
-
-  var result = gql.Do(query, variables);
-  if (!result.sceneUpdate)
-  {
-    throw 'Unable to update scene ' + sceneId;
-  }
-}
-
-// Returns true for not null elements
-function notNull(ele)
-{
-  return ele != null;
-}
-
-// Get studio id from studio name
-function tryGetStudio(studio)
-{
-  var query = '\
-  query FindStudios($studioFilter: StudioFilterType) {\
-    findStudios(studio_filter: $studioFilter) {\
-      studios {\
-        id\
-      }\
-      count\
-    }\
-  }';
-
-  var variables = {
-    studioFilter: {
-      name: {
-        value: studio.trim(),
-        modifier: 'EQUALS'
-      }
-    }
-  };
-
-  var result = gql.Do(query, variables);
-  if (!result.findStudios || result.findStudios.count == 0)
-  {
-    return;
-  }
-
-  return result.findStudios.studios[0].id;
-}
-
-function tryGetMovie(movie_title)
-{
-  var query = '\
-  query FindMovies($movieFilter: MovieFilterType) {\
-    findMovies(movie_filter: $movieFilter) {\
-      movies {\
-        id\
-      }\
-      count\
-    }\
-  }';
-
-  var variables = {
-    movieFilter: {
-      name: {
-        value: movie_title.trim(),
-        modifier: 'MATCHES_REGEX'
-      }
-    }
-  };
-
-  var result = gql.Do(query, variables);
-  if (!result.findMovies || result.findMovies.count == 0)
-  {
-    return;
-  }
-
-  return result.findMovies.movies[0].id;
-}
-
-// Get performer id from performer name
-function tryGetPerformer(performer)
-{
-  var query = '\
-  query FindPerformers($performerFilter: PerformerFilterType) {\
-    findPerformers(performer_filter: $performerFilter) {\
-      performers {\
-        id\
-      }\
-      count\
-    }\
-  }';
-
-  var variables = {
-    performerFilter: {
-      name: {
-        value: performer.trim(),
-        modifier: 'EQUALS'
-      }
-    }
-  };
-
-  var result = gql.Do(query, variables);
-  if (!result.findPerformers || result.findPerformers.count == 0)
-  {
-    return;
-  }
-
-  return result.findPerformers.performers[0].id;
-}
-
-// Get tag id from tag name
-function tryGetTag(tag)
-{
-  var query ='\
-  query FindTags($tagFilter: TagFilterType) {\
-    findTags(tag_filter: $tagFilter) {\
-      tags {\
-        id\
-      }\
-      count\
-    }\
-  }';
-
-  var variables = {
-    tagFilter: {
-      name: {
-        value: tag.trim(),
-        modifier: 'EQUALS'
-      }
-    }
-  };
-
-  var result = gql.Do(query, variables);
-  if (!result.findTags || result.findTags.count == 0)
-  {
-    return;
-  }
-
-  return result.findTags.tags[0].id;
-}
-
-var DEBUG = false;
-var BASE_PATHS = [];
-var bufferedOutput = '';
-main();
\ No newline at end of file
diff --git a/plugins/pathParser/pathParser.yml b/plugins/pathParser/pathParser.yml
deleted file mode 100644
index 9ef17dc6..00000000
--- a/plugins/pathParser/pathParser.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# example plugin config
-name: Path Parser
-description: Updates scene info based on the file path.
-version: 1.0
-exec:
-  - pathParser.js
-interface: js
-hooks:
-  - name: Run Rules on scan
-    description: Updates scene info whenever a new scene is added.
-    triggeredBy: 
-      - Scene.Create.Post
-tasks:
-  - name: Create Tags
-    description: Create tags used by the path parser tasks.
-    defaultArgs:
-      task: createTags
-      runTag: '[Run]'
-      testTag: '[Test]'
-  - name: Remove Tags
-    description: Remove tags used by the path parser tasks.
-    defaultArgs:
-      task: removeTags
-      runTag: '[Run]'
-      testTag: '[Test]'
-  - name: Run Rules
-    description: Run rules for scenes containing the run tag.
-    defaultArgs:
-      task: runRules
-      runTag: '[Run]'
-  - name: Test Rules
-    description: Test rules for scenes containing the test tag.
-    defaultArgs:
-      task: testRules
-      testTag: '[Test]'
\ No newline at end of file
diff --git a/plugins/phashDuplicateTagger/README.md b/plugins/phashDuplicateTagger/README.md
deleted file mode 100644
index 4af7b3c2..00000000
--- a/plugins/phashDuplicateTagger/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-This plugin has four functions:
-
-# PHASH Duplicate Tagger
-
-## Requirements
- * python >= 3.10.X
- * `pip install -r requirements.txt`
-
-
-## Title Syntax
-
-This plugin will change the titles of scenes that are matched as duplicates in the following format
-
-`[PDT: 0.0GB|<group_id><keep_flag>] <Scene Title>`
-
-group_id: usually the scene ID of the scene that was selected to Keep
-keep_flag: K=Keep R=remove U=Unknown
-
-
-## Tags
-various tags may be created by this plugin 
-* Keep - Applied on scenes that are determined to be the "best"
-* Remove - Applied to the scenes that determined to be the "worst"
-* Unknown - Applied to scenes where a best scene could not be determined
-* Ignore - Applied to scenes by user to ignore known duplicates
-* Reason -  These tags are applied to remove scenes, they will have a category that will match the determining factor on why a scene was chosen to be removed
-
-## Tasks
-### Tag Dupes (EXACT/HIGH/MEDIUM)
-These tasks will search for scenes with similar PHASHs within stash the closeness (distance) of the hashes to each other depends on which option you select
-
-* EXACT - Matches have a distance of 0 and should be exact matches
-* HIGH - Matches have a distance of 3 and are very similar to each other
-* MEDIUM - Matches have a distance of 6 and resemble each other
-
-### Delete Managed Tags
-remove any generated tags within stash created by the plugin, excluding the `Ignore` tag this may be something you want to retain
-
-### Scene Cleanup
-cleanup changes made to scene titles and tags back to before they were tagged
-
-### Generate Scene PHASHs
-Start a generate task within stash to generate PHASHs
-
-## Custom Compare Functions
-
-you can create custom compare functions inside config.py all current compare functions are provided custom functions must return two values when a better file is determined, the better object and a message string, optionally you can set `remove_reason` on the worse file and it will be tagged with that reason
-
-custom functions must start with "compare_" otherwise they will not be detected, make sure to add your function name to the PRIORITY list
\ No newline at end of file
diff --git a/plugins/phashDuplicateTagger/config.py b/plugins/phashDuplicateTagger/config.py
deleted file mode 100644
index f8ca6a9a..00000000
--- a/plugins/phashDuplicateTagger/config.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import stashapi.log as log
-from stashapi.tools import human_bytes, human_bits
-
-PRIORITY = ['bitrate_per_pixel','resolution', 'bitrate', 'encoding', 'size', 'age']
-CODEC_PRIORITY = {'AV1':0,'H265':1,'HEVC':1,'H264':2,'MPEG4':3,'MPEG1VIDEO':3,'WMV3':4,'WMV2':5,'VC1':6,'SVQ3':7}
-
-KEEP_TAG_NAME = "[PDT: Keep]"
-REMOVE_TAG_NAME = "[PDT: Remove]"
-UNKNOWN_TAG_NAME = "[PDT: Unknown]"
-IGNORE_TAG_NAME = "[PDT: Ignore]"
-
-	
-def compare_bitrate_per_pixel(self, other):
-
-    try:
-        self_bpp = self.bitrate / (self.width * self.height * self.frame_rate)
-    except ZeroDivisionError:
-        log.warning(f'scene {self.id} has 0 in file value ({self.width}x{self.height} {self.frame_rate}fps)')
-        return
-    try:    
-        other_bpp = other.bitrate / (other.width * other.height * other.frame_rate)
-    except ZeroDivisionError:
-        log.warning(f'scene {other.id} has 0 in file value ({other.width}x{other.height} {other.frame_rate}fps)')
-        return
-
-    bpp_diff = abs(self_bpp-other_bpp)
-    if bpp_diff <= 0.01:
-        return
-    
-    if self_bpp > other_bpp:
-        better_bpp, worse_bpp = self_bpp, other_bpp
-        better, worse = self, other
-    else:
-        worse_bpp, better_bpp = self_bpp, other_bpp
-        worse, better = self, other
-    worse.remove_reason = "bitrate_per_pxl"
-    message = f'bitrate/pxl {better_bpp:.3f}bpp > {worse_bpp:.3f}bpp Δ:{bpp_diff:.3f}'
-    return better, message
-
-def compare_frame_rate(self, other):
-    if not self.frame_rate:
-        log.warning(f'scene {self.id} has no value for frame_rate')
-    if not other.frame_rate:
-        log.warning(f'scene {other.id} has no value for frame_rate')
-
-    if abs(self.frame_rate-other.frame_rate) < 5:
-        return
-    
-    if self.frame_rate > other.frame_rate:
-        better, worse = self, other
-    else:
-        worse, better = self, other
-    worse.remove_reason = "frame_rate"
-    return better, f'Better FPS {better.frame_rate} vs {worse.frame_rate}'
-
-def compare_resolution(self, other):
-    if self.height == other.height:
-        return
-    if self.height > other.height:
-        better, worse = self, other
-    else:
-        worse, better = self, other
-    worse.remove_reason = "resolution"
-    return better, f"Better Resolution {better.id}:{better.height}p > {worse.id}:{worse.height}p"
-
-def compare_bitrate(self, other):
-    if self.bitrate == other.bitrate:
-        return
-    if self.bitrate > other.bitrate:
-        better, worse = self, other
-    else:
-        worse, better = self, other
-    worse.remove_reason = "bitrate"
-    return better, f"Better Bitrate {human_bits(better.bitrate)}ps > {human_bits(worse.bitrate)}ps Δ:({human_bits(better.bitrate-other.bitrate)}ps)"
-    
-def compare_size(self, other):
-    if abs(self.size-other.size) <= 100000: # diff is <= than 0.1 Mb
-        return
-    if self.size > other.size:
-        better, worse = self, other
-    else:
-        worse, better = self, other
-    worse.remove_reason = "file_size"
-    return better, f"Better Size {human_bytes(better.size)} > {human_bytes(worse.size)} Δ:({human_bytes(better.size-worse.size)})"
-    
-def compare_age(self, other):
-    if not (self.mod_time and other.mod_time):
-        return
-    if self.mod_time == other.mod_time:
-        return
-    if self.mod_time < other.mod_time:
-        better, worse = self, other
-    else:
-        worse, better = self, other
-    worse.remove_reason = "age"
-    return better, f"Choose Oldest: Δ:{worse.mod_time-better.mod_time} | {better.id} older than {worse.id}"
-
-def compare_encoding(self, other):
-    if self.codec_priority == other.codec_priority:
-        return
-    if not (isinstance(self.codec_priority, int) and isinstance(other.codec_priority, int)):
-        return
-    
-    if self.codec_priority < other.codec_priority:
-        better, worse = self, other
-    else:
-        worse, better = self, other
-    worse.remove_reason = "video_codec"
-    return self, f"Prefer Codec {better.codec}({better.id}) over {worse.codec}({worse.id})"
-    
\ No newline at end of file
diff --git a/plugins/phashDuplicateTagger/phashDuplicateTagger.py b/plugins/phashDuplicateTagger/phashDuplicateTagger.py
deleted file mode 100644
index 494c44a9..00000000
--- a/plugins/phashDuplicateTagger/phashDuplicateTagger.py
+++ /dev/null
@@ -1,270 +0,0 @@
-import re, sys, json
-import datetime as dt
-from inspect import getmembers, isfunction
-
-try:
-    import stashapi.log as log
-    from stashapi.tools import human_bytes, human_bits
-    from stashapi.stash_types import PhashDistance
-    from stashapi.stashapp import StashInterface
-except ModuleNotFoundError:
-    print("You need to install the stashapi module. (pip install stashapp-tools)",
-     file=sys.stderr)
-
-import config
-
-FRAGMENT = json.loads(sys.stdin.read())
-MODE = FRAGMENT['args']['mode']
-stash = StashInterface(FRAGMENT["server_connection"])
-
-SLIM_SCENE_FRAGMENT = """
-id
-title
-date
-tags { id }
-files {
-	size
-	path
-	width
-	height
-	bit_rate
-	mod_time
-	duration
-	frame_rate
-	video_codec
-}
-"""
-
-def main():
-		
-	if MODE == "remove":
-		clean_scenes()
-		for tag in get_managed_tags():
-			stash.destroy_tag(tag["id"])
-
-	if MODE == "tag_exact":
-		process_duplicates(PhashDistance.EXACT)
-	if MODE == "tag_high":
-		process_duplicates(PhashDistance.HIGH)
-	if MODE == "tag_medium":
-		process_duplicates(PhashDistance.MEDIUM)
-
-	if MODE == "clean_scenes":
-		clean_scenes()
-	if MODE == "generate_phash":
-		generate_phash()
-
-
-	log.exit("Plugin exited normally.")
-
-
-def parse_timestamp(ts, format="%Y-%m-%dT%H:%M:%S%z"):
-	ts = re.sub(r'\.\d+', "", ts) #remove fractional seconds
-	return dt.datetime.strptime(ts, format)
-
-
-class StashScene:
-
-	def __init__(self, scene=None) -> None:
-		file = scene["files"][0]
-
-		self.id = int(scene['id'])
-		self.mod_time = parse_timestamp(file['mod_time'])
-		if scene.get("date"):
-			self.date = parse_timestamp(scene['date'], format="%Y-%m-%d")
-		else:
-			self.date = None
-		self.path = scene.get("path")
-		self.width = file['width']
-		self.height = file['height']
-		# File size in # of BYTES
-		self.size = int(file['size'])
-		self.frame_rate = int(file['frame_rate'])
-		self.bitrate = int(file['bit_rate'])
-		self.duration = float(file['duration'])
-		# replace any existing tagged title
-		self.title = re.sub(r'^\[Dupe: \d+[KR]\]\s+', '', scene['title'])
-		self.path = file['path']
-		self.tag_ids = [t["id"]for t in scene["tags"]]
-
-		self.remove_reason = None
-
-		self.codec = file['video_codec'].upper()
-		if self.codec in config.CODEC_PRIORITY:
-			self.codec_priority = config.CODEC_PRIORITY[self.codec]
-		else:
-			self.codec_priority = None
-			log.warning(f"could not find codec {self.codec} used in SceneID:{self.id}")
-
-	def __repr__(self) -> str:
-		return f'<StashScene ({self.id})>'
-
-	def __str__(self) -> str:
-		return f'id:{self.id}, height:{self.height}, size:{human_bytes(self.size)}, file_mod_time:{self.mod_time}, title:{self.title}'
-
-	def compare(self, other):
-		if not (isinstance(other, StashScene)):
-			raise Exception(f"can only compare to <StashScene> not <{type(other)}>")
-
-		if self.id == other.id:
-			return None, f"Matching IDs {self.id}=={other.id}"
-
-		def compare_not_found(*args, **kwargs):
-			raise Exception("comparison not found")
-		for type in config.PRIORITY:
-			try:
-				compare_function = getattr(self, f'compare_{type}', compare_not_found)
-				result =  compare_function(other)
-				if result and len(result) == 2:
-					best, msg = result
-					return best, msg
-			except Exception as e:
-				log.error(f"Issue Comparing {self.id} {other.id} using <{type}> {e}")
-		
-		return None, f"{self.id} worse than {other.id}"
-
-def process_duplicates(distance:PhashDistance=PhashDistance.EXACT):
-	
-	clean_scenes() # clean old results
-
-	ignore_tag_id = stash.find_tag(config.IGNORE_TAG_NAME, create=True).get("id")
-	duplicate_list = stash.find_duplicate_scenes(distance, fragment=SLIM_SCENE_FRAGMENT)
-
-	total = len(duplicate_list)
-	log.info(f"Found {total} sets of duplicates.")
-
-	for i, group in enumerate(duplicate_list):
-		group = [StashScene(s) for s in group]
-		filtered_group = []
-		for scene in group:
-			if ignore_tag_id in scene.tag_ids:
-				log.debug(f"Ignore {scene.id} {scene.title}")
-			else:
-				filtered_group.append(scene)
-		
-		if len(filtered_group) > 1:
-			tag_files(filtered_group)
-		
-		log.progress(i/total)
-
-def tag_files(group):
-	
-	keep_reasons = []
-	keep_scene = None
-
-	total_size = group[0].size
-	for scene in group[1:]:
-		total_size += scene.size
-		better, msg = scene.compare(group[0])
-		if better:
-			keep_scene = better
-			keep_reasons.append(msg)
-	total_size = human_bytes(total_size, round=2, prefix='G')
-
-	if not keep_scene:
-		log.info(f"could not determine better scene from {group}")
-		if config.UNKNOWN_TAG_NAME:
-			group_id = group[0].id
-			for scene in group:
-				tag_ids = [stash.find_tag(config.UNKNOWN_TAG_NAME, create=True).get("id")]
-				stash.update_scenes({
-					'ids': [scene.id],
-					'title':  f'[PDT: {total_size}|{group_id}U] {scene.title}',
-					'tag_ids': {
-						'mode': 'ADD',
-						'ids': tag_ids
-					}
-				})
-		return
-
-	log.info(f"{keep_scene.id} best of:{[s.id for s in group]} {keep_reasons}")
-
-	for scene in group:
-		if scene.id == keep_scene.id:
-			tag_ids = [stash.find_tag(config.KEEP_TAG_NAME, create=True).get("id")]
-			stash.update_scenes({
-				'ids': [scene.id],
-				'title':  f'[PDT: {total_size}|{keep_scene.id}K] {scene.title}',
-				'tag_ids': {
-					'mode': 'ADD',
-					'ids': tag_ids
-				}
-			})
-		else:
-			tag_ids = []
-			tag_ids.append(stash.find_tag(config.REMOVE_TAG_NAME, create=True).get("id"))
-			if scene.remove_reason:
-				tag_ids.append(stash.find_tag(f'[Reason: {scene.remove_reason}]', create=True).get('id'))
-			stash.update_scenes({
-				'ids': [scene.id],
-				'title':  f'[PDT: {total_size}|{keep_scene.id}R] {scene.title}',
-				'tag_ids': {
-					'mode': 'ADD',
-					'ids': tag_ids
-				}
-			})
-
-def clean_scenes():
-	scene_count, scenes = stash.find_scenes(f={
-		"title": {
-			"modifier": "MATCHES_REGEX",
-			"value": "^\\[PDT: .+?\\]"
-		}
-	},fragment="id title", get_count=True)
-
-	log.info(f"Cleaning Titles/Tags of {scene_count} Scenes ")
-	
-	# Clean scene Title
-	for i, scene in enumerate(scenes):
-		title = re.sub(r'\[PDT: .+?\]\s+', '', scene['title'])
-		stash.update_scenes({
-			'ids': [scene['id']],
-			'title': title
-		})
-		log.progress(i/scene_count)
-
-	# Remove Tags
-	for tag in get_managed_tags():
-		scene_count, scenes = stash.find_scenes(f={
-			"tags":{"value": [tag['id']],"modifier": "INCLUDES","depth": 0}
-		}, fragment="id", get_count=True)
-		if not scene_count > 0:
-			continue
-		log.info(f'removing tag {tag["name"]} from {scene_count} scenes')
-		stash.update_scenes({
-			'ids': [s["id"] for s in scenes],
-			'tag_ids': {
-				'mode': 'REMOVE',
-				'ids': [tag['id']]
-			} 
-		})
-
-def get_managed_tags(fragment="id name"):
-	tags = stash.find_tags(f={
-	"name": {
-		"value": "^\\[Reason",
-		"modifier": "MATCHES_REGEX"
-	}}, fragment=fragment)
-	tag_name_list = [
-		config.REMOVE_TAG_NAME,
-		config.KEEP_TAG_NAME,
-		config.UNKNOWN_TAG_NAME,
-		# config.IGNORE_TAG_NAME,
-	]
-	for tag_name in tag_name_list:
-		if tag := stash.find_tag(tag_name):
-			tags.append(tag)
-	return tags
-
-def generate_phash():
-	query = """mutation MetadataGenerate($input: GenerateMetadataInput!) {
-		metadataGenerate(input: $input)
-	}"""
-	variables = {"phashes", True}
-	stash._callGraphQL(query, variables)
-
-if __name__ == '__main__':
-	for name, func in getmembers(config, isfunction):
-		if re.match(r'^compare_', name):
-			setattr(StashScene, name, func)
-	main()
diff --git a/plugins/phashDuplicateTagger/phashDuplicateTagger.yml b/plugins/phashDuplicateTagger/phashDuplicateTagger.yml
deleted file mode 100644
index 13f6629d..00000000
--- a/plugins/phashDuplicateTagger/phashDuplicateTagger.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: "PHash Duplicate Tagger"
-description: Will tag scenes based on duplicate PHashes for easier/safer removal.
-version: 0.1.3
-url: https://github.com/stashapp/CommunityScripts/tree/main/plugins/phashDuplicateTagger
-exec:
-  - python
-  - "{pluginDir}/phashDuplicateTagger.py"
-interface: raw
-tasks:
-  - name: 'Tag Dupes (EXACT)'
-    description: 'Assign duplicates tags to Exact Match (Dist 0) scenes'
-    defaultArgs:
-      mode: tag_exact
-  - name: 'Tag Dupes (HIGH)'
-    description: 'Assign duplicates tags to High Match (Dist 3) scenes'
-    defaultArgs:
-      mode: tag_high
-  - name: 'Tag Dupes (MEDIUM)'
-    description: 'Assign duplicates tags to Medium Match (Dist 6) scenes (BE CAREFUL WITH THIS LEVEL)'
-    defaultArgs:
-      mode: tag_medium
-  - name: 'Delete Managed Tags'
-    description: 'Deletes tags managed by this plugin from stash'
-    defaultArgs:
-      mode: remove
-  - name: 'Scene Cleanup'
-    description: 'Removes titles from scenes and any generated tags excluding [Dupe: Ignore]'
-    defaultArgs:
-      mode: clean_scenes
-  - name: 'Generate Scene PHASHs'
-    description: 'Generate PHASHs for all scenes where they are missing'
-    defaultArgs:
-      mode: generate_phash
diff --git a/plugins/phashDuplicateTagger/requirements.txt b/plugins/phashDuplicateTagger/requirements.txt
deleted file mode 100644
index cfcc6851..00000000
--- a/plugins/phashDuplicateTagger/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-stashapp-tools>=0.2.33
\ No newline at end of file
diff --git a/plugins/renamerOnUpdate/README.md b/plugins/renamerOnUpdate/README.md
deleted file mode 100644
index 8eaa7c3a..00000000
--- a/plugins/renamerOnUpdate/README.md
+++ /dev/null
@@ -1,205 +0,0 @@
-# *renamerOnUpdate*
-Using metadata from your Stash to rename/move your file.
-
-## Table of Contents  
-
-- [*renamerOnUpdate*](#renameronupdate)
-	- [Table of Contents](#table-of-contents)
-- [Requirement](#requirement)
-- [Installation](#installation)
-		- [:exclamation: Make sure to configure the plugin by editing `config.py` before running it :exclamation:](#exclamation-make-sure-to-configure-the-plugin-by-editing-configpy-before-running-it-exclamation)
-- [Usage](#usage)
-- [Configuration](#configuration)
-- [Config.py explained](#configpy-explained)
-	- [Template](#template)
-	- [- You can find the list of available variables in `config.py`](#--you-can-find-the-list-of-available-variables-in-configpy)
-	- [Filename](#filename)
-		- [- Based on a Tag](#--based-on-a-tag)
-		- [- Based on a Studio](#--based-on-a-studio)
-		- [- Change filename no matter what](#--change-filename-no-matter-what)
-	- [Path](#path)
-		- [- Based on a Tag](#--based-on-a-tag-1)
-		- [- Based on a Studio](#--based-on-a-studio-1)
-		- [- Based on a Path](#--based-on-a-path)
-		- [- Change path no matter what](#--change-path-no-matter-what)
-		- [- Special Variables](#--special-variables)
-	- [Advanced](#advanced)
-		- [Groups](#groups)
-	- [Option](#option)
-		- [*p_tag_option*](#p_tag_option)
-		- [*field_replacer*](#field_replacer)
-		- [*replace_words*](#replace_words)
-		- [*removecharac_Filename*](#removecharac_filename)
-		- [*performer_limit*](#performer_limit)
-
-# Requirement
-- Stash (v0.15+)
-- Python 3.6+ (Tested on Python v3.9.1 64bit, Win10)
-- Request Module (https://pypi.org/project/requests/)
-- Tested on Windows 10/Synology/docker.
-
-# Installation
-
-- Download the whole folder '**renamerOnUpdate**' (config.py, log.py, renamerOnUpdate.py/.yml)
-- Place it in your **plugins** folder (where the `config.yml` is)
-- Reload plugins (Settings > Plugins > Reload)
-- *renamerOnUpdate* appears
-
-### :exclamation: Make sure to configure the plugin by editing `config.py` before running it :exclamation:
-
-# Usage
-
-- Everytime you update a scene, it will check/rename your file. An update can be:
-	- Saving in **Scene Edit**.
-	- Clicking the **Organized** button.
-	- Running a scan that **updates** the path.
-
-- By pressing the button in the Task menu.
-    - It will go through each of your scenes. 
-    - `:warning:` It's recommended to understand correctly how this plugin works, and use **DryRun** first.
-
-# Configuration
-
-- Read/Edit `config.py`
-	- Change template filename/path
-	- Add `log_file` path
-
-- There are multiple buttons in Task menu:
-	- Enable: (default) Enable the trigger update
-	- Disable: Disable the trigger update
-	- Dry-run: A switch to enable/disable dry-run mode
-
-- Dry-run mode:
-	- It prevents editing the file, only shows in your log.
-	- This mode can write into a file (`dryrun_renamerOnUpdate.txt`), the change that the plugin will do.
-		- You need to set a path for `log_file` in `config.py`
-		- The format will be: `scene_id|current path|new path`. (e.g. `100|C:\Temp\foo.mp4|C:\Temp\bar.mp4`)
-		- This file will be overwritten everytime the plugin is triggered.
-
-# Config.py explained
-## Template
-To modify your path/filename, you can use **variables**. These are elements that will change based on your **metadata**.
-
- - Variables are represented with a word preceded with a `$` symbol. (E.g. `$date`)
- - If the metadata exists, this term will be replaced by it:
-	 - Scene date = 2006-01-02, `$date` = 2006-01-02
- - You can find the list of available variables in `config.py`
------
-In the example below, we will use:
-- Path: `C:\Temp\QmlnQnVja0J1bm55.mp4`
-- This file is [Big Buck Bunny](https://en.wikipedia.org/wiki/Big_Buck_Bunny).
-
-## Filename
-Change your filename (C:\Temp\\**QmlnQnVja0J1bm55.mp4**)
-
-------
-**Priority** : Tags > Studios > Default
-### - Based on a Tag
-```py
-tag_templates  = {
-	"rename_tag": "$year $title - $studio $resolution $video_codec",
-	"rename_tag2": "$title"
-}
-```
-|tag| new path |
-|--|--|
-|rename_tag| `C:\Temp\2008 Big Buck Bunny - Blender Institute 1080p H264.mp4` |
-| rename_tag2 | `C:\Temp\Big Buck Bunny.mp4` |
-
-
-
-### - Based on a Studio
-```py
-studio_templates  = {
-	"Blender Institute": "$date - $title [$studio]",
-	"Pixar": "$title [$studio]"
-}
-```
-|studio| new path |
-|--|--|
-|Blender Institute| `C:\Temp\2008-05-20 - Big Buck Bunny [Blender Institute].mp4` |
-| Pixar | `C:\Temp\Big Buck Bunny [Pixar].mp4` |
-
-
-### - Change filename no matter what
-```py
-use_default_template  =  True
-default_template  =  "$date $title"
-```
-The file became: `C:\Temp\2008-05-20 - Big Buck Bunny.mp4`
-
-## Path
-Change your path (**C:\Temp**\\QmlnQnVja0J1bm55.mp4)
-### - Based on a Tag
-```py
-p_tag_templates  = {
-	"rename_tag": r"D:\Video\",
-	"rename_tag2": r"E:\Video\$year"
-}
-```
-|tag| new path |
-|--|--|
-|rename_tag| `D:\Video\QmlnQnVja0J1bm55.mp4` |
-| rename_tag2 | `E:\Video\2008\QmlnQnVja0J1bm55.mp4` |
-
-
-
-### - Based on a Studio
-```py
-p_studio_templates  = {
-	"Blender Institute": r"D:\Video\Blender\",
-	"Pixar": r"E:\Video\$studio\"
-}
-```
-|studio| new path |
-|--|--|
-|Blender Institute| `D:\Video\Blender\QmlnQnVja0J1bm55.mp4` |
-| Pixar | `E:\Video\Pixar\QmlnQnVja0J1bm55.mp4` |
-
-### - Based on a Path
-```py
-p_path_templates = {
-	r"C:\Temp": r"D:\Video\",
-	r"C:\Video": r"E:\Video\Win\"
-}
-```
-|file path| new path |
-|--|--|
-|`C:\Temp`| `D:\Video\QmlnQnVja0J1bm55.mp4` |
-| `C:\Video`| `E:\Video\Win\QmlnQnVja0J1bm55.mp4` |
-
-
-### - Change path no matter what
-```py
-p_use_default_template  =  True
-p_default_template  =  r"D:\Video\"
-```
-The file is moved to: `D:\Video\QmlnQnVja0J1bm55.mp4`
-
-### - Special Variables
-`$studio_hierarchy` - Create the entire hierarchy of studio as folder (E.g. `../MindGeek/Brazzers/Hot And Mean/video.mp4`). Use your parent studio.
-
-`^*` - The current directory of the file.
-Explanation:
- - **If**: `p_default_template = r"^*\$performer"`
- - It creates a folder with a performer name in the current directory where the file is.
- - `C:\Temp\video.mp4` so  `^*=C:\Temp\`, result: `C:\Temp\Jane Doe\video.mp4`
- - If you don't use `prevent_consecutive` option, the plugin will create a new folder everytime (`C:\Temp\Jane Doe\Jane Doe\...\video.mp4`).
-
-## Advanced
-
-### Groups
-You can group elements in the template with `{}`, it's used when you want to remove a character if a variable is null.
-
-Example:
-
-
-**With** date in Stash:
- - `[$studio] $date - $title` -> `[Blender] 2008-05-20 - Big Buck Bunny`
- 
-**Without** date in Stash:
- - `[$studio] $date - $title` -> `[Blender] - Big Buck Bunny`
- 
-If you want to use the `-` only when you have the date, you can group the `-` with `$date`
-**Without** date in Stash:
- - `[$studio] {$date -} $title` -> `[Blender] Big Buck Bunny`
diff --git a/plugins/renamerOnUpdate/log.py b/plugins/renamerOnUpdate/log.py
deleted file mode 100644
index f3812522..00000000
--- a/plugins/renamerOnUpdate/log.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import sys
-
-
-# Log messages sent from a plugin instance are transmitted via stderr and are
-# encoded with a prefix consisting of special character SOH, then the log
-# level (one of t, d, i, w, e, or p - corresponding to trace, debug, info,
-# warning, error and progress levels respectively), then special character
-# STX.
-#
-# The LogTrace, LogDebug, LogInfo, LogWarning, and LogError methods, and their equivalent
-# formatted methods are intended for use by plugin instances to transmit log
-# messages. The LogProgress method is also intended for sending progress data.
-#
-
-def __prefix(level_char):
-	start_level_char = b'\x01'
-	end_level_char = b'\x02'
-
-	ret = start_level_char + level_char + end_level_char
-	return ret.decode()
-
-
-def __log(level_char, s):
-	if level_char == "":
-		return
-
-	print(__prefix(level_char) + s + "\n", file=sys.stderr, flush=True)
-
-
-def LogTrace(s):
-	__log(b't', s)
-
-
-def LogDebug(s):
-	__log(b'd', s)
-
-
-def LogInfo(s):
-	__log(b'i', s)
-
-
-def LogWarning(s):
-	__log(b'w', s)
-
-
-def LogError(s):
-	__log(b'e', s)
-
-
-def LogProgress(p):
-	progress = min(max(0, p), 1)
-	__log(b'p', str(progress))
diff --git a/plugins/renamerOnUpdate/renamerOnUpdate.py b/plugins/renamerOnUpdate/renamerOnUpdate.py
deleted file mode 100644
index cf145a62..00000000
--- a/plugins/renamerOnUpdate/renamerOnUpdate.py
+++ /dev/null
@@ -1,1370 +0,0 @@
-import difflib
-import json
-import os
-import re
-import shutil
-import sqlite3
-import sys
-import time
-import traceback
-from datetime import datetime
-
-import requests
-
-try:
-    import psutil  # pip install psutil
-    MODULE_PSUTIL = True
-except Exception:
-    MODULE_PSUTIL = False
-
-try:
-    import unidecode  # pip install Unidecode
-    MODULE_UNIDECODE = True
-except Exception:
-    MODULE_UNIDECODE = False
-
-
-try:
-    import renamerOnUpdate_config as config
-except Exception:
-    import config
-import log
-
-
-DB_VERSION_FILE_REFACTOR = 32
-DB_VERSION_SCENE_STUDIO_CODE = 38
-
-DRY_RUN = config.dry_run
-DRY_RUN_FILE = None
-
-if config.log_file:
-    DRY_RUN_FILE = os.path.join(os.path.dirname(config.log_file), "renamerOnUpdate_dryrun.txt")
-
-if DRY_RUN:
-    if DRY_RUN_FILE and not config.dry_run_append:
-        if os.path.exists(DRY_RUN_FILE):
-            os.remove(DRY_RUN_FILE)
-    log.LogInfo("Dry mode on")
-
-START_TIME = time.time()
-FRAGMENT = json.loads(sys.stdin.read())
-
-FRAGMENT_SERVER = FRAGMENT["server_connection"]
-PLUGIN_DIR = FRAGMENT_SERVER["PluginDir"]
-
-
-PLUGIN_ARGS = FRAGMENT['args'].get("mode")
-
-#log.LogDebug("{}".format(FRAGMENT))
-
-
-def callGraphQL(query, variables=None):
-    # Session cookie for authentication
-    graphql_port = str(FRAGMENT_SERVER['Port'])
-    graphql_scheme = FRAGMENT_SERVER['Scheme']
-    graphql_cookies = {'session': FRAGMENT_SERVER['SessionCookie']['Value']}
-    graphql_headers = {
-        "Accept-Encoding": "gzip, deflate, br",
-        "Content-Type": "application/json",
-        "Accept": "application/json",
-        "Connection": "keep-alive",
-        "DNT": "1"
-    }
-    graphql_domain = FRAGMENT_SERVER['Host']
-    if graphql_domain == "0.0.0.0":
-        graphql_domain = "localhost"
-    # Stash GraphQL endpoint
-    graphql_url = f"{graphql_scheme}://{graphql_domain}:{graphql_port}/graphql"
-
-    json = {'query': query}
-    if variables is not None:
-        json['variables'] = variables
-    try:
-        response = requests.post(graphql_url, json=json, headers=graphql_headers, cookies=graphql_cookies, timeout=20)
-    except Exception as e:
-        exit_plugin(err=f"[FATAL] Error with the graphql request {e}")
-    if response.status_code == 200:
-        result = response.json()
-        if result.get("error"):
-            for error in result["error"]["errors"]:
-                raise Exception(f"GraphQL error: {error}")
-            return None
-        if result.get("data"):
-            return result.get("data")
-    elif response.status_code == 401:
-        exit_plugin(err="HTTP Error 401, Unauthorised.")
-    else:
-        raise ConnectionError(f"GraphQL query failed: {response.status_code} - {response.content}")
-
-
-def graphql_getScene(scene_id):
-    query = """
-    query FindScene($id: ID!, $checksum: String) {
-        findScene(id: $id, checksum: $checksum) {
-            ...SceneData
-        }
-    }
-    fragment SceneData on Scene {
-        id
-        oshash
-        checksum
-        title
-        date
-        rating
-        stash_ids {
-            endpoint
-            stash_id
-        }
-        organized""" + FILE_QUERY + """
-        studio {
-            id
-            name
-            parent_studio {
-                id
-                name
-            }
-        }
-        tags {
-            id
-            name
-        }
-        performers {
-            id
-            name
-            gender
-            favorite
-            rating
-            stash_ids{
-                endpoint
-                stash_id
-            }
-        }
-        movies {
-            movie {
-                name
-                date
-            }
-            scene_index
-        }
-    }
-    """
-    variables = {
-        "id": scene_id
-    }
-    result = callGraphQL(query, variables)
-    return result.get('findScene')
-
-
-# used for bulk
-def graphql_findScene(perPage, direc="DESC") -> dict:
-    query = """
-    query FindScenes($filter: FindFilterType) {
-        findScenes(filter: $filter) {
-            count
-            scenes {
-                ...SlimSceneData
-            }
-        }
-    }
-    fragment SlimSceneData on Scene {
-        id
-        oshash
-        checksum
-        title
-        date
-        rating
-        organized
-        stash_ids {
-            endpoint
-            stash_id
-        }
-    """ + FILE_QUERY + """
-        studio {
-            id
-            name
-            parent_studio {
-                id
-                name
-            }
-        }
-        tags {
-            id
-            name
-        }
-        performers {
-            id
-            name
-            gender
-            favorite
-            rating
-            stash_ids{
-                endpoint
-                stash_id
-            }
-        }
-        movies {
-            movie {
-                name
-                date
-            }
-            scene_index
-        }
-    }
-    """
-    # ASC DESC
-    variables = {'filter': {"direction": direc, "page": 1, "per_page": perPage, "sort": "updated_at"}}
-    result = callGraphQL(query, variables)
-    return result.get("findScenes")
-
-
-# used to find duplicate
-def graphql_findScenebyPath(path, modifier) -> dict:
-    query = """
-    query FindScenes($filter: FindFilterType, $scene_filter: SceneFilterType) {
-        findScenes(filter: $filter, scene_filter: $scene_filter) {
-            count
-            scenes {
-                id
-                title
-            }
-        }
-    }
-    """
-    # ASC DESC
-    variables = {
-        'filter': {
-            "direction": "ASC",
-            "page": 1,
-            "per_page": 40,
-            "sort": "updated_at"
-        },
-        "scene_filter": {
-            "path": {
-                "modifier": modifier,
-                "value": path
-            }
-        }
-    }
-    result = callGraphQL(query, variables)
-    return result.get("findScenes")
-
-
-
-def graphql_getConfiguration():
-    query = """
-        query Configuration {
-            configuration {
-                general {
-                    databasePath
-                }
-            }
-        }
-    """
-    result = callGraphQL(query)
-    return result.get('configuration')
-
-
-def graphql_getStudio(studio_id):
-    query = """
-        query FindStudio($id:ID!) {
-            findStudio(id: $id) {
-                id
-                name
-                parent_studio {
-                    id
-                    name
-                }
-            }
-        }
-    """
-    variables = {
-        "id": studio_id
-    }
-    result = callGraphQL(query, variables)
-    return result.get("findStudio")
-
-
-def graphql_removeScenesTag(id_scenes: list, id_tags: list):
-    query = """
-    mutation BulkSceneUpdate($input: BulkSceneUpdateInput!) {
-        bulkSceneUpdate(input: $input) {
-            id
-        }
-    }
-    """
-    variables = {'input': {"ids": id_scenes, "tag_ids": {"ids": id_tags, "mode": "REMOVE"}}}
-    result = callGraphQL(query, variables)
-    return result
-
-
-def graphql_getBuild():
-    query = """
-        {
-            systemStatus {
-                databaseSchema
-            }
-        }
-    """
-    result = callGraphQL(query)
-    return result['systemStatus']['databaseSchema']
-
-
-def find_diff_text(a: str, b: str):
-    addi = minus = stay = ""
-    minus_ = addi_ = 0
-    for _, s in enumerate(difflib.ndiff(a, b)):
-        if s[0] == ' ':
-            stay += s[-1]
-            minus += "*"
-            addi += "*"
-        elif s[0] == '-':
-            minus += s[-1]
-            minus_ += 1
-        elif s[0] == '+':
-            addi += s[-1]
-            addi_ += 1
-    if minus_ > 20 or addi_ > 20:
-        log.LogDebug(f"Diff Checker: +{addi_}; -{minus_};")
-        log.LogDebug(f"OLD: {a}")
-        log.LogDebug(f"NEW: {b}")
-    else:
-        log.LogDebug(f"Original: {a}\n- Charac: {minus}\n+ Charac: {addi}\n  Result: {b}")
-    return
-
-
-def has_handle(fpath, all_result=False):
-    lst = []
-    for proc in psutil.process_iter():
-        try:
-            for item in proc.open_files():
-                if fpath == item.path:
-                    if all_result:
-                        lst.append(proc)
-                    else:
-                        return proc
-        except Exception:
-            pass
-    return lst
-
-
-def config_edit(name: str, state: bool):
-    found = 0
-    try:
-        with open(config.__file__, 'r', encoding='utf8') as file:
-            config_lines = file.readlines()
-        with open(config.__file__, 'w', encoding='utf8') as file_w:
-            for line in config_lines:
-                if len(line.split("=")) > 1:
-                    if name == line.split("=")[0].strip():
-                        file_w.write(f"{name} = {state}\n")
-                        found += 1
-                        continue
-                file_w.write(line)
-    except PermissionError as err:
-        log.LogError(f"You don't have the permission to edit config.py ({err})")
-    return found
-
-
-def check_longpath(path: str):
-    # Trying to prevent error with long paths for Win10
-    # https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd
-    if len(path) > 240 and not IGNORE_PATH_LENGTH:
-        log.LogError(f"The path is too long ({len(path)} > 240). You can look at 'order_field'/'ignore_path_length' in config.")
-        return 1
-
-
-def get_template_filename(scene: dict):
-    template = None
-    # Change by Studio
-    if scene.get("studio") and config.studio_templates:
-        template_found = False
-        current_studio = scene.get("studio")
-        if config.studio_templates.get(current_studio['name']):
-            template = config.studio_templates[current_studio['name']]
-            template_found = True
-        # by first Parent found
-        while current_studio.get("parent_studio") and not template_found:
-            if config.studio_templates.get(current_studio.get("parent_studio").get("name")):
-                template = config.studio_templates[current_studio['parent_studio']['name']]
-                template_found = True
-            current_studio = graphql_getStudio(current_studio.get("parent_studio")['id'])
-
-    # Change by Tag
-    tags = [x["name"] for x in scene["tags"]]
-    if scene.get("tags") and config.tag_templates:
-        for match, job in config.tag_templates.items():
-            if match in tags:
-                template = job
-                break
-    return template
-
-
-def get_template_path(scene: dict):
-    template = {"destination": "", "option": [], "opt_details": {}}
-    # Change by Path
-    if config.p_path_templates:
-        for match, job in config.p_path_templates.items():
-            if match in scene["path"]:
-                template["destination"] = job
-                break
-
-    # Change by Studio
-    if scene.get("studio") and config.p_studio_templates:
-        if config.p_studio_templates.get(scene["studio"]["name"]):
-            template["destination"] = config.p_studio_templates[scene["studio"]["name"]]
-        # by Parent
-        if scene["studio"].get("parent_studio"):
-            if config.p_studio_templates.get(scene["studio"]["name"]):
-                template["destination"] = config.p_studio_templates[scene["studio"]["name"]]
-
-    # Change by Tag
-    tags = [x["name"] for x in scene["tags"]]
-    if scene.get("tags") and config.p_tag_templates:
-        for match, job in config.p_tag_templates.items():
-            if match in tags:
-                template["destination"] = job
-                break
-
-    if scene.get("tags") and config.p_tag_option:
-        for tag in scene["tags"]:
-            if config.p_tag_option.get(tag["name"]):
-                opt = config.p_tag_option[tag["name"]]
-                template["option"].extend(opt)
-                if "clean_tag" in opt:
-                    if template["opt_details"].get("clean_tag"):
-                        template["opt_details"]["clean_tag"].append(tag["id"])
-                    else:
-                        template["opt_details"] = {"clean_tag": [tag["id"]]}
-    if not scene['organized'] and PATH_NON_ORGANIZED:
-        template["destination"] = PATH_NON_ORGANIZED
-    return template
-
-
-def sort_performer(lst_use: list, lst_app=[]):
-    for p in lst_use:
-        lst_use[p].sort()
-    for p in lst_use.values():
-        for n in p:
-            if n not in lst_app:
-                lst_app.append(n)
-    return lst_app
-
-
-def sort_rating(d: dict):
-    new_d = {}
-    for i in sorted(d.keys(), reverse=True):
-        new_d[i] = d[i]
-    return new_d
-
-
-def extract_info(scene: dict, template: None):
-    # Grabbing things from Stash
-    scene_information = {}
-
-    scene_information['current_path'] = str(scene['path'])
-    # note: contain the dot (.mp4)
-    scene_information['file_extension'] = os.path.splitext(scene_information['current_path'])[1]
-    # note: basename contains the extension
-    scene_information['current_filename'] = os.path.basename(scene_information['current_path'])
-    scene_information['current_directory'] = os.path.dirname(scene_information['current_path'])
-    scene_information['oshash'] = scene['oshash']
-    scene_information['checksum'] = scene.get("checksum")
-    scene_information['studio_code'] = scene.get("code")
-
-    if scene.get("stash_ids"):
-        #todo support other db that stashdb ?
-        scene_information['stashid_scene'] = scene['stash_ids'][0]["stash_id"]
-
-    if template.get("path"):
-        if "^*" in template["path"]["destination"]:
-            template["path"]["destination"] = template["path"]["destination"].replace("^*", scene_information['current_directory'])
-        scene_information['template_split'] = os.path.normpath(template["path"]["destination"]).split(os.sep)
-    scene_information['current_path_split'] = os.path.normpath(scene_information['current_path']).split(os.sep)
-
-    if FILENAME_ASTITLE and not scene.get("title"):
-        scene["title"] = scene_information['current_filename']
-
-    # Grab Title (without extension if present)
-    if scene.get("title"):
-        # Removing extension if present in title
-        scene_information['title'] = re.sub(fr"{scene_information['file_extension']}$", "", scene['title'])
-        if PREPOSITIONS_REMOVAL:
-            for word in PREPOSITIONS_LIST:
-                scene_information['title'] = re.sub(fr"^{word}[\s_-]", "", scene_information['title'])
-
-    # Grab Date
-    scene_information['date'] = scene.get("date")
-    if scene_information['date']:
-        date_scene = datetime.strptime(scene_information['date'], r"%Y-%m-%d")
-        scene_information['date_format'] = datetime.strftime(date_scene, config.date_format)
-
-    # Grab Duration
-    scene_information['duration'] = scene['file']['duration']
-    if config.duration_format:
-        scene_information['duration'] = time.strftime(config.duration_format, time.gmtime(scene_information['duration']))
-    else:
-        scene_information['duration'] = str(scene_information['duration'])
-
-    # Grab Rating
-    if scene.get("rating"):
-        scene_information['rating'] = RATING_FORMAT.format(scene['rating'])
-
-    # Grab Performer
-    scene_information['performer_path'] = None
-    if scene.get("performers"):
-        perf_list = []
-        perf_list_stashid = []
-        perf_rating = {"0": []}
-        perf_favorite = {"yes": [], "no": []}
-        for perf in scene['performers']:
-            if perf.get("gender"):
-                if perf['gender'] in PERFORMER_IGNOREGENDER:
-                    continue
-            elif "UNDEFINED" in PERFORMER_IGNOREGENDER:
-                continue
-            # path related
-            if template.get("path"):
-                if "inverse_performer" in template["path"]["option"]:
-                    perf["name"] = re.sub(r"([a-zA-Z]+)(\s)([a-zA-Z]+)", r"\3 \1", perf["name"])
-            perf_list.append(perf['name'])
-            if perf.get('rating'):
-                if perf_rating.get(str(perf['rating'])) is None:
-                    perf_rating[str(perf['rating'])] = []
-                perf_rating[str(perf['rating'])].append(perf['name'])
-            else:
-                perf_rating["0"].append(perf['name'])
-            if perf.get('favorite'):
-                perf_favorite['yes'].append(perf['name'])
-            else:
-                perf_favorite['no'].append(perf['name'])
-            # if the path already contains the name we keep this one
-            if perf["name"] in scene_information['current_path_split'] and scene_information.get('performer_path') is None and PATH_KEEP_ALRPERF:
-                scene_information['performer_path'] = perf["name"]
-                log.LogDebug(f"[PATH] Keeping the current name of the performer '{perf['name']}'")
-        perf_rating = sort_rating(perf_rating)
-        # sort performer
-        if PERFORMER_SORT == "rating":
-            # sort alpha
-            perf_list = sort_performer(perf_rating)
-        elif PERFORMER_SORT == "favorite":
-            perf_list = sort_performer(perf_favorite)
-        elif PERFORMER_SORT == "mix":
-            perf_list = []
-            for p in perf_favorite:
-                perf_favorite[p].sort()
-            for p in perf_favorite.get("yes"):
-                perf_list.append(p)
-            perf_list = sort_performer(perf_rating, perf_list)
-        elif PERFORMER_SORT == "mixid":
-            perf_list = []
-            for p in perf_favorite.get("yes"):
-                perf_list.append(p)
-            for p in perf_rating.values():
-                for n in p:
-                    if n not in perf_list:
-                        perf_list.append(n)
-        elif PERFORMER_SORT == "name":
-            perf_list.sort()
-        if not scene_information['performer_path'] and perf_list:
-            scene_information['performer_path'] = perf_list[0]
-        if len(perf_list) > PERFORMER_LIMIT:
-            if not PERFORMER_LIMIT_KEEP:
-                log.LogInfo(f"More than {PERFORMER_LIMIT} performer(s). Ignoring $performer")
-                perf_list = []
-            else:
-                log.LogInfo(f"Limited the amount of performer to {PERFORMER_LIMIT}")
-                perf_list = perf_list[0: PERFORMER_LIMIT]
-        scene_information['performer'] = PERFORMER_SPLITCHAR.join(perf_list)
-        if perf_list:
-            for p in perf_list:
-                for perf in scene['performers']:
-                    #todo support other db that stashdb ?
-                    if p == perf['name'] and perf.get('stash_ids'):
-                        perf_list_stashid.append(perf['stash_ids'][0]["stash_id"])
-                        break
-            scene_information['stashid_performer'] = PERFORMER_SPLITCHAR.join(perf_list_stashid)
-        if not PATH_ONEPERFORMER:
-            scene_information['performer_path'] = PERFORMER_SPLITCHAR.join(perf_list)
-    elif PATH_NOPERFORMER_FOLDER:
-        scene_information['performer_path'] = "NoPerformer"
-
-    # Grab Studio name
-    if scene.get("studio"):
-        if SQUEEZE_STUDIO_NAMES:
-            scene_information['studio'] = scene['studio']['name'].replace(' ', '')
-        else:
-            scene_information['studio'] = scene['studio']['name']
-        scene_information['studio_family'] = scene_information['studio']
-        studio_hierarchy = [scene_information['studio']]
-        # Grab Parent name
-        if scene['studio'].get("parent_studio"):
-            if SQUEEZE_STUDIO_NAMES:
-                scene_information['parent_studio'] = scene['studio']['parent_studio']['name'].replace(' ', '')
-            else:
-                scene_information['parent_studio'] = scene['studio']['parent_studio']['name']
-            scene_information['studio_family'] = scene_information['parent_studio']
-
-            studio_p = scene['studio']
-            while studio_p.get("parent_studio"):
-                studio_p = graphql_getStudio(studio_p['parent_studio']['id'])
-                if studio_p:
-                    if SQUEEZE_STUDIO_NAMES:
-                        studio_hierarchy.append(studio_p['name'].replace(' ', ''))
-                    else:
-                        studio_hierarchy.append(studio_p['name'])
-            studio_hierarchy.reverse()
-        scene_information['studio_hierarchy'] = studio_hierarchy
-    # Grab Tags
-    if scene.get("tags"):
-        tag_list = []
-        for tag in scene['tags']:
-            # ignore tag in blacklist
-            if tag['name'] in TAGS_BLACKLIST:
-                continue
-            # check if there is a whilelist
-            if len(TAGS_WHITELIST) > 0:
-                if tag['name'] in TAGS_WHITELIST:
-                    tag_list.append(tag['name'])
-            else:
-                tag_list.append(tag['name'])
-        scene_information['tags'] = TAGS_SPLITCHAR.join(tag_list)
-
-    # Grab Height (720p,1080p,4k...)
-    scene_information['bitrate'] = str(round(int(scene['file']['bitrate']) / 1000000, 2))
-    scene_information['resolution'] = 'SD'
-    scene_information['height'] = f"{scene['file']['height']}p"
-    if scene['file']['height'] >= 720:
-        scene_information['resolution'] = 'HD'
-    if scene['file']['height'] >= 2160:
-        scene_information['height'] = '4k'
-        scene_information['resolution'] = 'UHD'
-    if scene['file']['height'] >= 2880:
-        scene_information['height'] = '5k'
-    if scene['file']['height'] >= 3384:
-        scene_information['height'] = '6k'
-    if scene['file']['height'] >= 4320:
-        scene_information['height'] = '8k'
-    # For Phone ?
-    if scene['file']['height'] > scene['file']['width']:
-        scene_information['resolution'] = 'VERTICAL'
-
-    if scene.get("movies"):
-        scene_information["movie_title"] = scene["movies"][0]["movie"]["name"]
-        if scene["movies"][0]["movie"].get("date"):
-            scene_information["movie_year"] = scene["movies"][0]["movie"]["date"][0:4]
-        if scene["movies"][0].get("scene_index"):
-            scene_information["movie_index"] = scene["movies"][0]["scene_index"]
-            scene_information["movie_scene"] = f"scene {scene_information['movie_index']}"
-
-    # Grab Video and Audio codec
-    scene_information['video_codec'] = scene['file']['video_codec'].upper()
-    scene_information['audio_codec'] = scene['file']['audio_codec'].upper()
-
-    if scene_information.get("date"):
-        scene_information['year'] = scene_information['date'][0:4]
-
-    if FIELD_WHITESPACE_SEP:
-        for key, value in scene_information.items():
-            if key in ["current_path", "current_filename", "current_directory", "current_path_split", "template_split"]:
-                continue
-            if type(value) is str:
-                scene_information[key] = value.replace(" ", FIELD_WHITESPACE_SEP)
-            elif type(value) is list:
-                scene_information[key] = [x.replace(" ", FIELD_WHITESPACE_SEP) for x in value]
-    return scene_information
-
-
-def replace_text(text: str):
-    for old, new in FILENAME_REPLACEWORDS.items():
-        if type(new) is str:
-            new = [new]
-        if len(new) > 1:
-            if new[1] == "regex":
-                tmp = re.sub(old, new[0], text)
-                if tmp != text:
-                    log.LogDebug(f"Regex matched: {text} -> {tmp}")
-            else:
-                if new[1] == "word":
-                    tmp = re.sub(fr'([\s_-])({old})([\s_-])', f'\\1{new[0]}\\3', text)
-                elif new[1] == "any":
-                    tmp = text.replace(old, new[0])
-                if tmp != text:
-                    log.LogDebug(f"'{old}' changed with '{new[0]}'")
-        else:
-            tmp = re.sub(fr'([\s_-])({old})([\s_-])', f'\\1{new[0]}\\3', text)
-            if tmp != text:
-                log.LogDebug(f"'{old}' changed with '{new[0]}'")
-        text = tmp
-    return tmp
-
-
-def cleanup_text(text: str):
-    text = re.sub(r'\(\W*\)|\[\W*\]|{[^a-zA-Z0-9]*}', '', text)
-    text = re.sub(r'[{}]', '', text)
-    text = remove_consecutive_nonword(text)
-    return text.strip(" -_.")
-
-
-def remove_consecutive_nonword(text: str):
-    for _ in range(0, 10):
-        m = re.findall(r'(\W+)\1+', text)
-        if m:
-            text = re.sub(r'(\W+)\1+', r'\1', text)
-        else:
-            break
-    return text
-
-
-def field_replacer(text: str, scene_information:dict):
-    field_found = re.findall(r"\$\w+", text)
-    result = text
-    title = None
-    replaced_word = ""
-    if field_found:
-        field_found.sort(key=len, reverse=True)
-    for i in range(0, len(field_found)):
-        f = field_found[i].replace("$", "").strip("_")
-        # If $performer is before $title, prevent having duplicate text.
-        if f == "performer" and len(field_found) > i + 1 and scene_information.get('performer'):
-            if field_found[i+1] == "$title" and scene_information.get('title') and PREVENT_TITLE_PERF:
-                if re.search(f"^{scene_information['performer'].lower()}", scene_information['title'].lower()):
-                    log.LogDebug("Ignoring the performer field because it's already in start of title")
-                    result = result.replace("$performer", "")
-                    continue
-        replaced_word = scene_information.get(f)
-        if not replaced_word:
-            replaced_word = ""
-        if FIELD_REPLACER.get(f"${f}"):
-            replaced_word = replaced_word.replace(FIELD_REPLACER[f"${f}"]["replace"], FIELD_REPLACER[f"${f}"]["with"])
-        if f == "title":
-            title = replaced_word.strip()
-            continue
-        if replaced_word == "":
-            result = result.replace(field_found[i], replaced_word)
-        else:
-            result = result.replace(f"${f}", replaced_word)
-    return result, title
-
-
-def makeFilename(scene_information: dict, query: str) -> str:
-    new_filename = str(query)
-    r, t = field_replacer(new_filename, scene_information)
-    if FILENAME_REPLACEWORDS:
-        r = replace_text(r)
-    if not t:
-        r = r.replace("$title", "")
-    r = cleanup_text(r)
-    if t:
-        r = r.replace("$title", t)
-    # Replace spaces with splitchar
-    r = r.replace(' ', FILENAME_SPLITCHAR)
-    return r
-
-
-def makePath(scene_information: dict, query: str) -> str:
-    new_filename = str(query)
-    new_filename = new_filename.replace("$performer", "$performer_path")
-    r, t = field_replacer(new_filename, scene_information)
-    if not t:
-        r = r.replace("$title", "")
-    r = cleanup_text(r)
-    if t:
-        r = r.replace("$title", t)
-    return r
-
-
-def capitalizeWords(s: str):
-    # thanks to BCFC_1982 for it
-    return re.sub(r"[A-Za-z]+('[A-Za-z]+)?", lambda word: word.group(0).capitalize(), s)
-
-
-def create_new_filename(scene_info: dict, template: str):
-    new_filename = makeFilename(scene_info, template) + DUPLICATE_SUFFIX[scene_info['file_index']] + scene_info['file_extension']
-    if FILENAME_LOWER:
-        new_filename = new_filename.lower()
-    if FILENAME_TITLECASE:
-        new_filename = capitalizeWords(new_filename)
-    # Remove illegal character for Windows
-    new_filename = re.sub('[\\/:"*?<>|]+', '', new_filename)
-
-    if FILENAME_REMOVECHARACTER:
-        new_filename = re.sub(f'[{FILENAME_REMOVECHARACTER}]+', '', new_filename)
-
-    # Trying to remove non standard character
-    if MODULE_UNIDECODE and UNICODE_USE:
-        new_filename = unidecode.unidecode(new_filename, errors='preserve')
-    else:
-        # Using typewriter for Apostrophe
-        new_filename = re.sub("[’‘”“]+", "'", new_filename)
-    return new_filename
-
-
-def remove_consecutive(liste: list):
-    new_list = []
-    for i in range(0, len(liste)):
-        if i != 0 and liste[i] == liste[i - 1]:
-            continue
-        new_list.append(liste[i])
-    return new_list
-
-
-def create_new_path(scene_info: dict, template: dict):
-    # Create the new path
-    # Split the template path
-    path_split = scene_info['template_split']
-    path_list = []
-    for part in path_split:
-        if ":" in part and path_split[0]:
-            path_list.append(part)
-        elif part == "$studio_hierarchy":
-            if not scene_info.get("studio_hierarchy"):
-                continue
-            for p in scene_info["studio_hierarchy"]:
-                path_list.append(re.sub('[\\/:"*?<>|]+', '', p).strip())
-        else:
-            path_list.append(re.sub('[\\/:"*?<>|]+', '', makePath(scene_info, part)).strip())
-    # Remove blank, empty string
-    path_split = [x for x in path_list if x]
-    # The first character was a seperator, so put it back.
-    if path_list[0] == "":
-        path_split.insert(0, "")
-
-    if PREVENT_CONSECUTIVE:
-        # remove consecutive (/FolderName/FolderName/video.mp4 -> FolderName/video.mp4
-        path_split = remove_consecutive(path_split)
-
-    if "^*" in template["path"]["destination"]:
-        if scene_info['current_directory'] != os.sep.join(path_split):
-            path_split.pop(len(scene_info['current_directory']))
-
-    path_edited = os.sep.join(path_split)
-
-    if FILENAME_REMOVECHARACTER:
-        path_edited = re.sub(f'[{FILENAME_REMOVECHARACTER}]+', '', path_edited)
-
-    # Using typewriter for Apostrophe
-    new_path = re.sub("[’‘”“]+", "'", path_edited)
-
-    return new_path
-
-
-def connect_db(path: str):
-    try:
-        sqliteConnection = sqlite3.connect(path, timeout=10)
-        log.LogDebug("Python successfully connected to SQLite")
-    except sqlite3.Error as error:
-        log.LogError(f"FATAL SQLITE Error: {error}")
-        return None
-    return sqliteConnection
-
-
-def checking_duplicate_db(scene_info: dict):
-    scenes = graphql_findScenebyPath(scene_info['final_path'], "EQUALS")
-    if scenes["count"] > 0:
-        log.LogError("Duplicate path detected")
-        for dupl_row in scenes["scenes"]:
-            log.LogWarning(f"Identical path: [{dupl_row['id']}]")
-        return 1
-    scenes = graphql_findScenebyPath(scene_info['new_filename'], "EQUALS")
-    if scenes["count"] > 0:
-        for dupl_row in scenes["scenes"]:
-            if dupl_row['id'] != scene_info['scene_id']:
-                log.LogWarning(f"Duplicate filename: [{dupl_row['id']}]")
-
-
-def db_rename(stash_db: sqlite3.Connection, scene_info):
-    cursor = stash_db.cursor()
-    # Database rename
-    cursor.execute("UPDATE scenes SET path=? WHERE id=?;", [scene_info['final_path'], scene_info['scene_id']])
-    stash_db.commit()
-    # Close DB
-    cursor.close()
-
-
-def db_rename_refactor(stash_db: sqlite3.Connection, scene_info):
-    cursor = stash_db.cursor()
-    # 2022-09-17T11:25:52+02:00
-    mod_time = datetime.now().astimezone().isoformat('T', 'seconds')
-
-    # get the next id that we should use if needed
-    cursor.execute("SELECT MAX(id) from folders")
-    new_id = cursor.fetchall()[0][0] + 1
-
-    # get the old folder id
-    cursor.execute("SELECT id FROM folders WHERE path=?", [scene_info['current_directory']])
-    old_folder_id = cursor.fetchall()[0][0]
-
-    # check if the folder of file is created in db
-    cursor.execute("SELECT id FROM folders WHERE path=?", [scene_info['new_directory']])
-    folder_id = cursor.fetchall()
-    if not folder_id:
-        dir = scene_info['new_directory']
-        # reduce the path to find a parent folder
-        for _ in range(1, len(scene_info['new_directory'].split(os.sep))):
-            dir = os.path.dirname(dir)
-            cursor.execute("SELECT id FROM folders WHERE path=?", [dir])
-            parent_id = cursor.fetchall()
-            if parent_id:
-                # create a new row with the new folder with the parent folder find above
-                cursor.execute(
-                    "INSERT INTO 'main'.'folders'('id', 'path', 'parent_folder_id', 'mod_time', 'created_at', 'updated_at', 'zip_file_id') VALUES (?, ?, ?, ?, ?, ?, ?);",
-                    [
-                        new_id, scene_info['new_directory'], parent_id[0][0],
-                        mod_time, mod_time, mod_time, None
-                    ])
-                stash_db.commit()
-                folder_id = new_id
-                break
-    else:
-        folder_id = folder_id[0][0]
-    if folder_id:
-        cursor.execute("SELECT file_id from scenes_files WHERE scene_id=?", [scene_info['scene_id']])
-        file_ids = cursor.fetchall()
-        file_id = None
-        for f in file_ids:
-            # it can have multiple file for a scene
-            cursor.execute("SELECT parent_folder_id from files WHERE id=?", [f[0]])
-            check_parent = cursor.fetchall()[0][0]
-            # if the parent id is the one found above section, we find our file.s
-            if check_parent == old_folder_id:
-                file_id = f[0]
-                break
-        if file_id:
-            #log.LogDebug(f"UPDATE files SET basename={scene_info['new_filename']}, parent_folder_id={folder_id}, updated_at={mod_time} WHERE id={file_id};")
-            cursor.execute("UPDATE files SET basename=?, parent_folder_id=?, updated_at=? WHERE id=?;", [scene_info['new_filename'], folder_id, mod_time, file_id])
-            cursor.close()
-            stash_db.commit()
-        else:
-            raise Exception("Failed to find file_id")
-    else:
-        cursor.close()
-        raise Exception(f"You need to setup a library with the new location ({scene_info['new_directory']}) and scan at least 1 file")
-
-
-def file_rename(current_path: str, new_path: str, scene_info: dict):
-    # OS Rename
-    if not os.path.isfile(current_path):
-        log.LogWarning(f"[OS] File doesn't exist in your Disk/Drive ({current_path})")
-        return 1
-    # moving/renaming
-    new_dir = os.path.dirname(new_path)
-    current_dir = os.path.dirname(current_path)
-    if not os.path.exists(new_dir):
-        log.LogInfo(f"Creating folder because it don't exist ({new_dir})")
-        os.makedirs(new_dir)
-    try:
-        shutil.move(current_path, new_path)
-    except PermissionError as err:
-        if "[WinError 32]" in str(err) and MODULE_PSUTIL:
-            log.LogWarning("A process is using this file (Probably FFMPEG), trying to find it ...")
-            # Find which process accesses the file, it's ffmpeg for sure...
-            process_use = has_handle(current_path, PROCESS_ALLRESULT)
-            if process_use:
-                # Terminate the process then try again to rename
-                log.LogDebug(f"Process that uses this file: {process_use}")
-                if PROCESS_KILL:
-                    p = psutil.Process(process_use.pid)
-                    p.terminate()
-                    p.wait(10)
-                    # If process is not terminated, this will create an error again.
-                    try:
-                        shutil.move(current_path, new_path)
-                    except Exception as err:
-                        log.LogError(f"Something still prevents renaming the file. {err}")
-                        return 1
-                else:
-                    log.LogError("A process prevents renaming the file.")
-                    return 1
-        else:
-            log.LogError(f"Something prevents renaming the file. {err}")
-            return 1
-    # checking if the move/rename work correctly
-    if os.path.isfile(new_path):
-        log.LogInfo(f"[OS] File Renamed! ({current_path} -> {new_path})")
-        if LOGFILE:
-            try:
-                with open(LOGFILE, 'a', encoding='utf-8') as f:
-                    f.write(f"{scene_info['scene_id']}|{current_path}|{new_path}|{scene_info['oshash']}\n")
-            except Exception as err:
-                shutil.move(new_path, current_path)
-                log.LogError(f"Restoring the original path, error writing the logfile: {err}")
-                return 1
-        if REMOVE_EMPTY_FOLDER:
-            with os.scandir(current_dir) as it:
-                if not any(it):
-                    log.LogInfo(f"Removing empty folder ({current_dir})")
-                    try:
-                        os.rmdir(current_dir)
-                    except Exception as err:
-                        log.logWarning(f"Fail to delete empty folder {current_dir} - {err}")
-    else:
-        # I don't think it's possible.
-        log.LogError(f"[OS] Failed to rename the file ? {new_path}")
-        return 1
-
-def associated_rename(scene_info: dict):
-    if ASSOCIATED_EXT:
-        for ext in ASSOCIATED_EXT:
-            p = os.path.splitext(scene_info['current_path'])[0] + "." + ext
-            p_new = os.path.splitext(scene_info['final_path'])[0] + "." + ext
-            if os.path.isfile(p):
-                try:
-                    shutil.move(p, p_new)
-                except Exception as err:
-                    log.LogError(f"Something prevents renaming this file '{p}' - err: {err}")
-                    continue
-            if os.path.isfile(p_new):
-                log.LogInfo(f"[OS] Associate file renamed ({p_new})")
-                if LOGFILE:
-                    try:
-                        with open(LOGFILE, 'a', encoding='utf-8') as f:
-                            f.write(f"{scene_info['scene_id']}|{p}|{p_new}\n")
-                    except Exception as err:
-                        shutil.move(p_new, p)
-                        log.LogError(f"Restoring the original name, error writing the logfile: {err}")
-
-
-def renamer(scene_id, db_conn=None):
-    option_dryrun = False
-    if type(scene_id) is dict:
-        stash_scene = scene_id
-        scene_id = stash_scene['id']
-    elif type(scene_id) is int:
-        stash_scene = graphql_getScene(scene_id)
-
-    if config.only_organized and not stash_scene['organized'] and not PATH_NON_ORGANIZED:
-        log.LogDebug(f"[{scene_id}] Scene ignored (not organized)")
-        return
-
-    # refractor file support
-    fingerprint = []
-    if stash_scene.get("path"):
-        stash_scene["file"]["path"] = stash_scene["path"]
-        if stash_scene.get("checksum"):
-            fingerprint.append({
-                "type": "md5",
-                "value": stash_scene["checksum"]
-            })
-        if stash_scene.get("oshash"):
-            fingerprint.append({
-                "type": "oshash",
-                "value": stash_scene["oshash"]
-            })
-        stash_scene["file"]["fingerprints"] = fingerprint
-        scene_files = [stash_scene["file"]]
-        del stash_scene["path"]
-        del stash_scene["file"]
-    elif stash_scene.get("files"):
-        scene_files = stash_scene["files"]
-        del stash_scene["files"]
-    else:
-        scene_files = []
-    stash_db = None
-    for i in range(0, len(scene_files)):
-        scene_file = scene_files[i]
-        # refractor file support
-        for f in scene_file["fingerprints"]:
-            if f.get("oshash"):
-                stash_scene["oshash"] = f["oshash"]
-            if f.get("md5"):
-                stash_scene["checksum"] = f["md5"]
-        stash_scene["path"] = scene_file["path"]
-        stash_scene["file"] = scene_file
-        if scene_file.get("bit_rate"):
-            stash_scene["file"]["bitrate"] = scene_file["bit_rate"]
-        if scene_file.get("frame_rate"):
-            stash_scene["file"]["framerate"] = scene_file["frame_rate"]
-
-        # Tags > Studios > Default
-        template = {}
-        template["filename"] = get_template_filename(stash_scene)
-        template["path"] = get_template_path(stash_scene)
-        if not template["path"].get("destination"):
-            if config.p_use_default_template:
-                log.LogDebug("[PATH] Using default template")
-                template["path"] = {"destination": config.p_default_template, "option": [], "opt_details": {}}
-            else:
-                template["path"] = None
-        else:
-            if template["path"].get("option"):
-                if "dry_run" in template["path"]["option"] and not DRY_RUN:
-                    log.LogInfo("Dry-Run on (activate by option)")
-                    option_dryrun = True
-        if not template["filename"] and config.use_default_template:
-            log.LogDebug("[FILENAME] Using default template")
-            template["filename"] = config.default_template
-
-        if not template["filename"] and not template["path"]:
-            log.LogWarning(f"[{scene_id}] No template for this scene.")
-            return
-
-        #log.LogDebug("Using this template: {}".format(filename_template))
-        scene_information = extract_info(stash_scene, template)
-        log.LogDebug(f"[{scene_id}] Scene information: {scene_information}")
-        log.LogDebug(f"[{scene_id}] Template: {template}")
-
-        scene_information['scene_id'] = scene_id
-        scene_information['file_index'] = i
-
-        for removed_field in ORDER_SHORTFIELD:
-            if removed_field:
-                if scene_information.get(removed_field.replace("$", "")):
-                    del scene_information[removed_field.replace("$", "")]
-                    log.LogWarning(f"removed {removed_field} to reduce the length path")
-                else:
-                    continue
-            if template["filename"]:
-                scene_information['new_filename'] = create_new_filename(scene_information, template["filename"])
-            else:
-                scene_information['new_filename'] = scene_information['current_filename']
-            if template.get("path"):
-                scene_information['new_directory'] = create_new_path(scene_information, template)
-            else:
-                scene_information['new_directory'] = scene_information['current_directory']
-            scene_information['final_path'] = os.path.join(scene_information['new_directory'], scene_information['new_filename'])
-            # check length of path
-            if IGNORE_PATH_LENGTH or len(scene_information['final_path']) <= 240:
-                break
-
-        if check_longpath(scene_information['final_path']):
-            if (DRY_RUN or option_dryrun) and LOGFILE:
-                with open(DRY_RUN_FILE, 'a', encoding='utf-8') as f:
-                    f.write(f"[LENGTH LIMIT] {scene_information['scene_id']}|{scene_information['final_path']}\n")
-            continue
-
-        #log.LogDebug(f"Filename: {scene_information['current_filename']} -> {scene_information['new_filename']}")
-        #log.LogDebug(f"Path: {scene_information['current_directory']} -> {scene_information['new_directory']}")
-
-        if scene_information['final_path'] == scene_information['current_path']:
-            log.LogInfo(f"Everything is ok. ({scene_information['current_filename']})")
-            continue
-
-        if scene_information['current_directory'] != scene_information['new_directory']:
-            log.LogInfo("File will be moved to another directory")
-            log.LogDebug(f"[OLD path] {scene_information['current_path']}")
-            log.LogDebug(f"[NEW path] {scene_information['final_path']}")
-
-        if scene_information['current_filename'] != scene_information['new_filename']:
-            log.LogInfo("The filename will be changed")
-            if ALT_DIFF_DISPLAY:
-                find_diff_text(scene_information['current_filename'], scene_information['new_filename'])
-            else:
-                log.LogDebug(f"[OLD filename] {scene_information['current_filename']}")
-                log.LogDebug(f"[NEW filename] {scene_information['new_filename']}")
-
-        if (DRY_RUN or option_dryrun) and LOGFILE:
-            with open(DRY_RUN_FILE, 'a', encoding='utf-8') as f:
-                f.write(f"{scene_information['scene_id']}|{scene_information['current_path']}|{scene_information['final_path']}\n")
-            continue
-        # check if there is already a file where the new path is
-        err = checking_duplicate_db(scene_information)
-        while err and scene_information['file_index']<=len(DUPLICATE_SUFFIX):
-            log.LogDebug("Duplicate filename detected, increasing file index")
-            scene_information['file_index'] = scene_information['file_index'] + 1
-            scene_information['new_filename'] = create_new_filename(scene_information, template["filename"])
-            scene_information['final_path'] = os.path.join(scene_information['new_directory'], scene_information['new_filename'])
-            log.LogDebug(f"[NEW filename] {scene_information['new_filename']}")
-            log.LogDebug(f"[NEW path] {scene_information['final_path']}")
-            err = checking_duplicate_db(scene_information)
-        # abort
-        if err:
-            raise Exception("duplicate")
-        # connect to the db
-        if not db_conn:
-            stash_db = connect_db(STASH_DATABASE)
-            if stash_db is None:
-                return
-        else:
-            stash_db = db_conn
-        try:
-            # rename file on your disk
-            err = file_rename(scene_information['current_path'], scene_information['final_path'], scene_information)
-            if err:
-                raise Exception("rename")
-            # rename file on your db
-            try:
-                if DB_VERSION >= DB_VERSION_FILE_REFACTOR:
-                    db_rename_refactor(stash_db, scene_information)
-                else:
-                    db_rename(stash_db, scene_information)
-            except Exception as err:
-                log.LogError(f"error when trying to update the database ({err}), revert the move...")
-                err = file_rename(scene_information['final_path'], scene_information['current_path'], scene_information)
-                if err:
-                    raise Exception("rename")
-                raise Exception("database update")
-            if i == 0:
-                associated_rename(scene_information)
-            if template.get("path"):
-                if "clean_tag" in template["path"]["option"]:
-                    graphql_removeScenesTag([scene_information['scene_id']], template["path"]["opt_details"]["clean_tag"])
-        except Exception as err:
-            log.LogError(f"Error during database operation ({err})")
-            if not db_conn:
-                log.LogDebug("[SQLITE] Database closed")
-                stash_db.close()
-            continue
-    if not db_conn and stash_db:
-        stash_db.close()
-        log.LogInfo("[SQLITE] Database updated and closed!")
-
-
-def exit_plugin(msg=None, err=None):
-    if msg is None and err is None:
-        msg = "plugin ended"
-    log.LogDebug("Execution time: {}s".format(round(time.time() - START_TIME, 5)))
-    output_json = {"output": msg, "error": err}
-    print(json.dumps(output_json))
-    sys.exit()
-
-
-if PLUGIN_ARGS:
-    log.LogDebug("--Starting Plugin 'Renamer'--")
-    if "bulk" not in PLUGIN_ARGS:
-        if "enable" in PLUGIN_ARGS:
-            log.LogInfo("Enable hook")
-            success = config_edit("enable_hook", True)
-        elif "disable" in PLUGIN_ARGS:
-            log.LogInfo("Disable hook")
-            success = config_edit("enable_hook", False)
-        elif "dryrun" in PLUGIN_ARGS:
-            if config.dry_run:
-                log.LogInfo("Disable dryrun")
-                success = config_edit("dry_run", False)
-            else:
-                log.LogInfo("Enable dryrun")
-                success = config_edit("dry_run", True)
-        if not success:
-            log.LogError("Script failed to change the value")
-        exit_plugin("script finished")
-else:
-    if not config.enable_hook:
-        exit_plugin("Hook disabled")
-    log.LogDebug("--Starting Hook 'Renamer'--")
-    FRAGMENT_HOOK_TYPE = FRAGMENT["args"]["hookContext"]["type"]
-    FRAGMENT_SCENE_ID = FRAGMENT["args"]["hookContext"]["id"]
-
-LOGFILE = config.log_file
-
-#Gallery.Update.Post
-#if FRAGMENT_HOOK_TYPE == "Scene.Update.Post":
-
-
-STASH_CONFIG = graphql_getConfiguration()
-STASH_DATABASE = STASH_CONFIG['general']['databasePath']
-
-# READING CONFIG
-
-ASSOCIATED_EXT = config.associated_extension
-
-FIELD_WHITESPACE_SEP = config.field_whitespaceSeperator
-FIELD_REPLACER = config.field_replacer
-
-FILENAME_ASTITLE = config.filename_as_title
-FILENAME_LOWER = config.lowercase_Filename
-FILENAME_TITLECASE = config.titlecase_Filename
-FILENAME_SPLITCHAR = config.filename_splitchar
-FILENAME_REMOVECHARACTER = config.removecharac_Filename
-FILENAME_REPLACEWORDS = config.replace_words
-
-PERFORMER_SPLITCHAR = config.performer_splitchar
-PERFORMER_LIMIT = config.performer_limit
-PERFORMER_LIMIT_KEEP = config.performer_limit_keep
-PERFORMER_SORT = config.performer_sort
-PERFORMER_IGNOREGENDER = config.performer_ignoreGender
-PREVENT_TITLE_PERF = config.prevent_title_performer
-
-DUPLICATE_SUFFIX = config.duplicate_suffix
-
-PREPOSITIONS_LIST = config.prepositions_list
-PREPOSITIONS_REMOVAL = config.prepositions_removal
-
-SQUEEZE_STUDIO_NAMES = config.squeeze_studio_names
-
-RATING_FORMAT = config.rating_format
-
-TAGS_SPLITCHAR = config.tags_splitchar
-TAGS_WHITELIST = config.tags_whitelist
-TAGS_BLACKLIST = config.tags_blacklist
-
-IGNORE_PATH_LENGTH = config.ignore_path_length
-
-PREVENT_CONSECUTIVE = config.prevent_consecutive
-REMOVE_EMPTY_FOLDER = config.remove_emptyfolder
-
-PROCESS_KILL = config.process_kill_attach
-PROCESS_ALLRESULT = config.process_getall
-UNICODE_USE = config.use_ascii
-
-ORDER_SHORTFIELD = config.order_field
-ORDER_SHORTFIELD.insert(0, None)
-
-ALT_DIFF_DISPLAY = config.alt_diff_display
-
-PATH_NOPERFORMER_FOLDER = config.path_noperformer_folder
-PATH_KEEP_ALRPERF = config.path_keep_alrperf
-PATH_NON_ORGANIZED = config.p_non_organized
-PATH_ONEPERFORMER = config.path_one_performer
-
-DB_VERSION = graphql_getBuild()
-if DB_VERSION >= DB_VERSION_FILE_REFACTOR:
-    FILE_QUERY = """
-            files {
-                path
-                video_codec
-                audio_codec
-                width
-                height
-                frame_rate
-                duration
-                bit_rate
-                fingerprints {
-                    type
-                    value
-                }
-            }
-    """
-else:
-    FILE_QUERY = """
-            path
-            file {
-                video_codec
-                audio_codec
-                width
-                height
-                framerate
-                bitrate
-                duration
-            }
-    """
-if DB_VERSION >= DB_VERSION_SCENE_STUDIO_CODE:
-    FILE_QUERY = f"        code{FILE_QUERY}"
-
-if PLUGIN_ARGS:
-    if "bulk" in PLUGIN_ARGS:
-        scenes = graphql_findScene(config.batch_number_scene, "ASC")
-        log.LogDebug(f"Count scenes: {len(scenes['scenes'])}")
-        progress = 0
-        progress_step = 1 / len(scenes['scenes'])
-        stash_db = connect_db(STASH_DATABASE)
-        if stash_db is None:
-            exit_plugin()
-        for scene in scenes['scenes']:
-            log.LogDebug(f"** Checking scene: {scene['title']} - {scene['id']} **")
-            try:
-                renamer(scene, stash_db)
-            except Exception as err:
-                log.LogError(f"main function error: {err}")
-            progress += progress_step
-            log.LogProgress(progress)
-        stash_db.close()
-        log.LogInfo("[SQLITE] Database closed!")
-else:
-    try:
-        renamer(FRAGMENT_SCENE_ID)
-    except Exception as err:
-        log.LogError(f"main function error: {err}")
-        traceback.print_exc()
-
-exit_plugin("Successful!")
-
diff --git a/plugins/renamerOnUpdate/renamerOnUpdate.yml b/plugins/renamerOnUpdate/renamerOnUpdate.yml
deleted file mode 100644
index 9a2d6b0f..00000000
--- a/plugins/renamerOnUpdate/renamerOnUpdate.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: renamerOnUpdate
-description: Rename/move filename based on a template.
-url: https://github.com/stashapp/CommunityScripts
-version: 2.4.4
-exec:
-  - python
-  - "{pluginDir}/renamerOnUpdate.py"
-interface: raw
-hooks:
-  - name: hook_rename
-    description: Rename/move file when you update a scene.
-    triggeredBy:
-      - Scene.Update.Post
-tasks:
-  - name: 'Disable'
-    description: Disable the hook
-    defaultArgs:
-      mode: disable
-  - name: 'Enable'
-    description: Enable the hook
-    defaultArgs:
-      mode: enable
-  - name: 'Dryrun'
-    description: Enable/disable dry-run
-    defaultArgs:
-      mode: dryrun
-  - name: 'Rename scenes'
-    description: Rename all your scenes based on your config.
-    defaultArgs:
-      mode: bulk
-
diff --git a/plugins/renamerOnUpdate/renamerOnUpdate_config.py b/plugins/renamerOnUpdate/renamerOnUpdate_config.py
deleted file mode 100644
index bfe17a50..00000000
--- a/plugins/renamerOnUpdate/renamerOnUpdate_config.py
+++ /dev/null
@@ -1,275 +0,0 @@
-###################################################################
-#       General information         #
-# -----------------------------------------------------------------
-# Available elements for renaming:
-#   $oshash 
-#   $checksum 
-#   $date 
-#   $date_format
-#   $year 
-#   $performer 
-#   $title 
-#   $height 
-#   $resolution 
-#   $duration
-#   $bitrate (megabits per second)
-#   $studio 
-#   $parent_studio 
-#   $studio_family 
-#   $rating
-#   $tags
-#   $video_codec 
-#   $audio_codec
-#   $movie_scene
-#   $movie_title
-#   $movie_year
-#   $movie_scene
-#   $stashid_scene
-#   $stashid_performer
-#   $studio_code
-#
-# Note:
-# $date_format: can be edited with date_format settings
-# $duration: can be edited with duration_format settings
-# $studio_family: If parent studio exists use it, else use the studio name.
-# $performer: If more than * performers linked to the scene, this field will be ignored. Limit this number at Settings section below (default: 3)
-# $resolution: SD/HD/UHD/VERTICAL (for phone) | $height: 720p 1080p 4k 5k 6k 8k
-# $movie_scene: "scene #" # = index scene
-# -----------------------------------------------------------------
-# Example templates:
-# 
-# $title                                    == Her Fantasy Ball
-# $date $title                              == 2016-12-29 Her Fantasy Ball
-# $date.$title                              == 2016-12-29.Her Fantasy Ball
-# $year $title $height                      == 2016 Her Fantasy Ball 1080p
-# $year_$title-$height                      == 2016_Her Fantasy Ball-1080p
-# $date $performer - $title [$studio]       == 2016-12-29 Eva Lovia - Her Fantasy Ball [Sneaky Sex]
-# $parent_studio $date $performer - $title  == Reality Kings 2016-12-29 Eva Lovia - Her Fantasy Ball
-# $date $title - $tags                      == 2016-12-29 Her Fantasy Ball - Blowjob Cumshot Facial Tattoo
-#
-
-####################################################################
-#           TEMPLATE FILENAME (Rename your files)
-
-# Priority : Tags > Studios > Default
-
-# Templates to use for given tags
-# Add or remove as needed or leave it empty/comment out
-# you can specific group with {}. exemple: [$studio] {$date -} $title, the '-' will be removed if no date
-tag_templates = {
-    # "!1. Western": "$date $performer - $title [$studio]",
-    # "!1. JAV": "$title",
-    # "!1. Anime": "$title $date [$studio]"
-}
-
-# Adjust the below if you want to use studio names instead of tags for the renaming templates
-studio_templates = {
-
-}
-
-# Change to True to use the default template if no specific tag/studio is found
-use_default_template = False
-# Default template, adjust as needed
-default_template = "$date $title"
-
-####################################################################
-#           TEMPLATE PATH  (Move your files)
-
-# $studio_hierarchy: create the whole hierarchy folder (MindGeek/Brazzers/Hot And Mean/video.mp4)
-# ^* = parent of folder (E:\Movies\video.mp4 -> E:\Movies\)
-
-# trigger with a specific tag
-# "tagname": "path"
-# ex: "plugin_move": r"E:\Movies\R18\$studio_hierarchy"
-p_tag_templates = {
-}
-
-
-p_studio_templates = {
-}
-
-# match a path
-# "match path": "destination"
-# ex: r"E:\Film\R18\2. Test\A trier": r"E:\Film\R18\2. Test\A trier\$performer",
-p_path_templates = {
-}
-
-# change to True to use the default template if no specific tag/studio is found
-p_use_default_template = False
-# default template, adjust as needed
-p_default_template = r"^*\$performer"
-
-# if unorganized, ignore other templates, use this path
-p_non_organized = r""
-
-# option if tag is present
-# "tagname": [option]
-# clean_tag: remove the tag after the rename
-# inverse_performer: change the last/first name (Jane Doe -> Doe Jane)
-# dry_run: activate dry_run for this scene
-# ex: "plugin_move": ["clean_tag"]
-p_tag_option = {
-}
-######################################
-#               Logging              #
-
-# File to save what is renamed, can be useful if you need to revert changes.
-# Will look like: IDSCENE|OLD_PATH|NEW_PATH
-# Leave Blank ("") or use None if you don't want to use a log file, or a working path like: C:\Users\USERNAME\.stash\plugins\Hooks\rename_log.txt
-log_file = r""
-
-######################################
-#               Settings             #
-
-# rename associated file (subtitle, funscript) if present
-associated_extension = ["srt", "vtt", "funscript"]
-
-# use filename as title if no title is set
-# it will cause problem if you update multiple time the same scene without title.
-filename_as_title = False
-
-# Character which replaces every space in the filename
-# Common values are "." and "_"
-# e. g.:
-# "."
-# 2016-12-29.Eva.Lovia.-.Her.Fantasy.Ball
-filename_splitchar = " "
-
-# replace space for stash field (title, performer...), if you have a title 'I love Stash' it can become 'I_love_Stash'
-field_whitespaceSeperator = ""
-# Remove/Replace character from field (not using regex)
-# "field": {"replace": "foo","with": "bar"}
-# ex: "$studio": {"replace": "'","with": ""} My Dad's Hot Girlfriend --> My Dads Hot Girlfriend
-field_replacer = {
-}
-
-# Match and replace.
-# "match": ["replace with", "system"] the second element of the list determine the system used. If you don't put this element, the default is word
-# regex: match a regex, word: match a word, any: match a term
-# difference between 'word' & 'any': word is between seperator (space, _, -), any is anything ('ring' would replace 'during')
-# ex:   "Scene": ["Sc.", "word"]    - Replace Scene by Sc.
-#       r"S\d+:E\d+": ["", "regex"] - Remove Sxx:Ex (x is a digit)
-replace_words = {
-}
-
-# Date format for $date_format field, check: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
-date_format = r"%Y-%m-%d"
-# Duration format, check table: https://docs.python.org/3/library/time.html#time.strftime
-# exemple: %H;%M;%S -> 00;35;20 (You can't have ':' character in filename)
-# If empty, it will give you the duration as seconds
-duration_format = r""
-
-# put the filename in lowercase
-lowercase_Filename = False
-# filename in title case (Capitalises each word and lowercases the rest)
-titlecase_Filename = False
-# remove these characters if there are present in the filename
-removecharac_Filename = ",#"
-
-# Character to use as a performer separator.
-performer_splitchar = " "
-# Maximum number of performer names in the filename. If there are more than that in a scene the filename will not include any performer name!
-performer_limit = 3
-# The filename with have the name of performer before reaching the limit (if limit=3, the filename can contains 3 performers for a 4 performers scenes)
-performer_limit_keep = False
-# sorting performer (name, id, rating, favorite, mix (favorite > rating > name), mixid (..>..> id))
-performer_sort = "id"
-# ignore certain gender. Available "MALE" "FEMALE" "TRANSGENDER_MALE" "TRANSGENDER_FEMALE" "INTERSEX" "NON_BINARY" "UNDEFINED"
-performer_ignoreGender = []
-
-# word attached at end if multiple file for same scene [FileRefactor]
-duplicate_suffix = ["", "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "_10"]
-
-# If $performer is before $title, prevent having duplicate text. 
-# e.g.:
-# Template used: $year $performer - $title
-# 2016 Dani Daniels - Dani Daniels in ***.mp4 --> 2016 Dani Daniels in ***.mp4
-prevent_title_performer = False
-
-## Path mover related
-# remove consecutive (/FolderName/FolderName/video.mp4 -> FolderName/video.mp4
-prevent_consecutive = True
-# check when the file has moved that the old directory is empty, if empty it will remove it.
-remove_emptyfolder = True
-# the folder only contains 1 performer name. Else it will look the same as for filename
-path_one_performer = True
-# if there is no performer on the scene, the $performer field will be replaced by "NoPerformer" so a folder "NoPerformer" will be created
-path_noperformer_folder = False
-# if the folder already have a performer name, it won't change it
-path_keep_alrperf = True
-
-# Removes prepositions from the beginning of titles
-prepositions_list = ['The', 'A', 'An']
-prepositions_removal = False
-
-# Squeeze studio names removes all spaces in studio, parent studio and studio family name
-# e. g.:
-# Reality Kings --> RealityKings
-# Team Skeet Extras --> TeamSkeetExtras
-squeeze_studio_names = False
-
-# Rating indicator option to identify the number correctly in your OS file search
-# Separated from the template handling above to avoid having only "RTG" in the filename for scenes without ratings
-# e. g.:
-# "{}" with scene rating of 5       == 5
-# "RTG{}" with scene rating of 5    == RTG5
-# "{}-stars" with scene rating 3    == 3-stars
-rating_format = "{}"
-
-# Character to use as a tag separator.
-tags_splitchar = " "
-# Include and exclude tags
-# 	Tags will be compared strictly. "pantyhose" != "Pantyhose" and "panty hose" != "pantyhose"
-# Option 1: If you're using whitelist, every other tag which is not listed there will be ignored in the filename
-# Option 2: All tags in the tags_blacklist array will be ignored in the filename. Every other tag will be used.
-# Option 3: Leave both arrays empty if you're looking for every tag which is linked to the scene. 
-# 			Attention: Only recommended if the scene linked tags number is not that big due to maxiumum filename length
-tags_whitelist = [
-    # "Brunette", "Blowjob"
-]
-
-tags_blacklist = [
-	# ignored tags...
-]
-
-# Only rename 'Organized' scenes.
-only_organized = False
-
-# If the new path is over 240 characters, the plugin will try to reduce it. Set to True to ignore that.
-ignore_path_length = False
-
-# Field to remove if the path is too long. First in list will be removed then second then ... if length is still too long.
-order_field = ["$video_codec", "$audio_codec", "$resolution", "tags", "rating", "$height", "$studio_family", "$studio", "$parent_studio", "$performer"]
-
-# Alternate way to show diff. Not useful at all.
-alt_diff_display = False
-
-# number of scene process by the task renamer. -1 = all scenes
-batch_number_scene = -1
-
-# disable/enable the hook. You can edit this value in 'Plugin Tasks' inside of Stash.
-enable_hook = True
-# disable/enable dry mode. Do a trial run with no permanent changes. Can write into a file (dryrun_renamerOnUpdate.txt), set a path for log_file. 
-# You can edit this value in 'Plugin Tasks' inside of Stash.
-dry_run = False
-# Choose if you want to append to (True) or overwrite (False) the dry-run log file.
-dry_run_append = True
-######################################
-#            Module Related          #
-
-# ! OPTIONAL module settings. Not needed for basic operation !
-
-# = psutil module (https://pypi.org/project/psutil/) =
-# Gets a list of all processes instead of stopping after the first one. Enabling it slows down the plugin
-process_getall = False
-# If the file is used by a process, the plugin will kill it. IT CAN MAKE STASH CRASH TOO. 
-process_kill_attach = False
-# =========================
-
-# = Unidecode module (https://pypi.org/project/Unidecode/) =
-# Check site mentioned for more details. 
-# TL;DR: Prevent having non common characters by replacing them.
-# Warning: If you have non-latin characters (Cyrillic, Kanji, Arabic, ...), the result will be extremely different.
-use_ascii = False 
-# =========================
-
diff --git a/plugins/sceneCoverCropper/sceneCoverCropper.js b/plugins/sceneCoverCropper/sceneCoverCropper.js
deleted file mode 100644
index 7d53c4ee..00000000
--- a/plugins/sceneCoverCropper/sceneCoverCropper.js
+++ /dev/null
@@ -1,145 +0,0 @@
-// By ScruffyNerf
-// Ported by feederbox826
-
-(function () {
-    let cropping = false;
-    let cropper = null;
-    
-    try {
-        const img = document.createElement('img');
-        new Cropper(img)
-    } catch (e) {
-        console.error("Cropper not loaded - please install 4. CropperJS from CommunityScripts")
-    }
-    try {
-        stash.getVersion()
-    } catch (e) {
-        console.error("Stash not loaded - please install 1. stashUserscriptLibrary from CommunityScripts")
-    }
-
-    function setupCropper() {
-        const cropBtnContainerId = "crop-btn-container";
-        if (document.getElementById(cropBtnContainerId)) return
-        const sceneId = window.location.pathname.replace('/scenes/', '').split('/')[0];
-        const sceneImage = document.querySelector("img.scene-cover")
-        
-        var cropperModal = document.createElement("dialog");
-        cropperModal.style.width = "90%";
-        cropperModal.style.border = "none";
-        cropperModal.classList.add('bg-dark');
-        document.body.appendChild(cropperModal);
-        
-        var cropperContainer = document.createElement("div");
-        cropperContainer.style.width = "100%";
-        cropperContainer.style.height = "auto";
-        cropperContainer.style.margin = "auto";
-        cropperModal.appendChild(cropperContainer);
-        
-        var image = sceneImage.cloneNode();
-        image.style.display = "block";
-        image.style.maxWidth = "100%";
-        cropperContainer.appendChild(image);
-        
-        var cropBtnContainer = document.createElement('div');
-        cropBtnContainer.setAttribute("id", cropBtnContainerId);
-        cropBtnContainer.classList.add('d-flex','flex-row','justify-content-center','align-items-center');
-        cropBtnContainer.style.gap = "10px";
-        cropperModal.appendChild(cropBtnContainer);
-        
-        
-        sceneImage.parentElement.parentElement.style.flexFlow = 'column';
-        
-        const cropInfo = document.createElement('p');
-        cropInfo.style.all = "revert";
-        cropInfo.classList.add('text-white');
-        
-        const cropStart = document.createElement('button');
-        cropStart.setAttribute("id", "crop-start");
-        cropStart.classList.add('btn', 'btn-primary');
-        cropStart.innerText = 'Crop Image';
-        cropStart.addEventListener('click', evt => {
-            cropping = true;
-            cropStart.style.display = 'none';
-            cropCancel.style.display = 'inline-block';
-            
-            //const isVertical = image.naturalHeight > image.naturalWidth;
-            //const aspectRatio = isVertical ? 3/2 : NaN
-            const aspectRatio = NaN
-
-            cropper = new Cropper(image, {
-                viewMode: 1,
-                initialAspectRatio: aspectRatio,
-                movable: false,
-                rotatable: false,
-                scalable: false,
-                zoomable: false,
-                zoomOnTouch: false,
-                zoomOnWheel: false,
-                ready() {
-                    cropAccept.style.display = 'inline-block';
-                },
-                crop(e) {
-                    cropInfo.innerText = `X: ${Math.round(e.detail.x)}, Y: ${Math.round(e.detail.y)}, Width: ${Math.round(e.detail.width)}px, Height: ${Math.round(e.detail.height)}px`;
-                }
-            });
-            cropperModal.showModal();
-        });
-        sceneImage.parentElement.appendChild(cropStart);
-        
-        const cropAccept = document.createElement('button');
-        cropAccept.setAttribute("id", "crop-accept");
-        cropAccept.classList.add('btn', 'btn-success', 'mr-2');
-        cropAccept.innerText = 'OK';
-        cropAccept.addEventListener('click', async evt => {
-            cropping = false;
-            cropStart.style.display = 'inline-block';
-            cropAccept.style.display = 'none';
-            cropCancel.style.display = 'none';
-            cropInfo.innerText = '';
-            
-            const reqData = {
-                "operationName": "SceneUpdate",
-                "variables": {
-                    "input": {
-                        "cover_image": cropper.getCroppedCanvas().toDataURL(),
-                        "id": sceneId
-                    }
-                },
-                "query": `mutation SceneUpdate($input: SceneUpdateInput!) {
-                    sceneUpdate(input: $input) {
-                        id
-                    }
-                }`
-            }
-            await stash.callGQL(reqData);
-            reloadImg(image.src);
-            cropper.destroy();
-            cropperModal.close("cropAccept");
-        });
-        cropBtnContainer.appendChild(cropAccept);
-
-        const cropCancel = document.createElement('button');
-        cropCancel.setAttribute("id", "crop-accept");
-        cropCancel.classList.add('btn', 'btn-danger');
-        cropCancel.innerText = 'Cancel';
-        cropCancel.addEventListener('click', evt => {
-            cropping = false;
-            cropStart.style.display = 'inline-block';
-            cropAccept.style.display = 'none';
-            cropCancel.style.display = 'none';
-            cropInfo.innerText = '';
-
-            cropper.destroy();
-            cropperModal.close("cropCancel");
-        });
-        cropBtnContainer.appendChild(cropCancel);
-        cropAccept.style.display = 'none';
-        cropCancel.style.display = 'none';
-
-        cropBtnContainer.appendChild(cropInfo);
-    }
-
-    stash.addEventListener('page:scene', function () {
-        waitForElementId('scene-edit-details', setupCropper);
-    });
-})();
diff --git a/plugins/sceneCoverCropper/sceneCoverCropper.yml b/plugins/sceneCoverCropper/sceneCoverCropper.yml
deleted file mode 100644
index 53f71118..00000000
--- a/plugins/sceneCoverCropper/sceneCoverCropper.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: Scene Cover Cropper
-# requires: CropperJS
-description: Crop Scene Cover Images
-version: 1.0
-ui:
-  requires:
-  - CropperJS
-  css:
-  javascript:
-  - sceneCoverCropper.js
\ No newline at end of file
diff --git a/plugins/setSceneCoverFromFile/set_cover.py b/plugins/setSceneCoverFromFile/set_cover.py
deleted file mode 100644
index ddb7be22..00000000
--- a/plugins/setSceneCoverFromFile/set_cover.py
+++ /dev/null
@@ -1,77 +0,0 @@
-import os
-import re
-import sys
-import json
-import base64
-
-try:
-	import stashapi.log as log
-	from stashapi.tools import file_to_base64
-	from stashapi.stashapp import StashInterface
-except ModuleNotFoundError:
-	print("You need to install the stashapi module. (pip install stashapp-tools)",
-	 file=sys.stderr)
-
-MANUAL_ROOT = None # /some/other/path to override scanning all stashes
-cover_pattern = r'(?:thumb|poster|cover)\.(?:jpg|png)'
-
-def main():
-	global stash, mode_arg
-	json_input = json.loads(sys.stdin.read())
-
-	stash = StashInterface(json_input["server_connection"])
-	mode_arg = json_input['args']['mode']
-
-	try:
-		if MANUAL_ROOT:
-			scan(MANUAL_ROOT, handle_cover)
-		else:
-			for stash_path in get_stash_paths():
-				scan(stash_path, handle_cover)
-	except Exception as e:
-		log.error(e)
-
-	out = json.dumps({"output": "ok"})
-	print( out + "\n")
-
-
-def handle_cover(path, file):
-	filepath = os.path.join(path, file)
-
-
-	b64img = file_to_base64(filepath)
-	if not b64img:
-		log.warning(f"Could not parse {filepath} to b64image")
-		return
-
-	scenes = stash.find_scenes(f={
-		"path": {
-			"modifier": "INCLUDES",
-			"value": f"{path}\""
-		}
-	}, fragment="id")
-
-	log.info(f'Found Cover: {[int(s["id"]) for s in scenes]}|{filepath}')
-
-	if mode_arg == "set_cover":
-		for scene in scenes:
-			stash.update_scene({
-				"id": scene["id"],
-				"cover_image": b64img
-			})
-		log.info(f'Applied cover to {len(scenes)} scenes')
-
-def get_stash_paths():
-		config = stash.get_configuration("general { stashes { path excludeVideo } }")
-		stashes = config["configuration"]["general"]["stashes"]
-		return [s["path"] for s in stashes if not s["excludeVideo"]]
-
-def scan(ROOT_PATH, _callback):
-	log.info(f'Scanning {ROOT_PATH}')
-	for root, dirs, files in os.walk(ROOT_PATH):
-		for file in files:
-			if re.match(cover_pattern, file, re.IGNORECASE):
-				_callback(root, file)
-
-if __name__ == '__main__':
-	main()
\ No newline at end of file
diff --git a/plugins/setSceneCoverFromFile/set_scene_cover.yml b/plugins/setSceneCoverFromFile/set_scene_cover.yml
deleted file mode 100644
index f622f35f..00000000
--- a/plugins/setSceneCoverFromFile/set_scene_cover.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: Set Scene Cover 
-description: searches Stash for Scenes with a cover image in the same folder and sets the cover image in stash to that image
-version: 0.4
-url: https://github.com/stg-annon/CommunityScripts/tree/main/plugins/setSceneCoverFromFile
-exec:
-  - python
-  - "{pluginDir}/set_cover.py"
-interface: raw
-tasks:
-  - name: Scan
-    description: searches stash dirs for cover images and logs results
-    defaultArgs:
-      mode: scan
-  - name: Set Cover
-    description: searches for cover images and sets any stash scene found in the same dir to that image
-    defaultArgs:
-      mode: set_cover
\ No newline at end of file
diff --git a/plugins/stashUserscriptLibrary/StashUserscriptLibrary.yml b/plugins/stashUserscriptLibrary/StashUserscriptLibrary.yml
deleted file mode 100644
index 2a7d126e..00000000
--- a/plugins/stashUserscriptLibrary/StashUserscriptLibrary.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-name: Stash Userscript Library
-description: Exports utility functions and a Stash class that emits events whenever a GQL response is received and whenenever a page navigation change is detected
-version: 1.0
-ui:
-  javascript:
-  - stashUserscriptLibrary.js
diff --git a/plugins/stashUserscriptLibrary/stashUserscriptLibrary.js b/plugins/stashUserscriptLibrary/stashUserscriptLibrary.js
deleted file mode 100644
index 9cac4202..00000000
--- a/plugins/stashUserscriptLibrary/stashUserscriptLibrary.js
+++ /dev/null
@@ -1,1086 +0,0 @@
-const stashListener = new EventTarget();
-
-class Logger {
-    constructor(enabled) {
-        this.enabled = enabled;
-    }
-    debug() {
-        if (!this.enabled) return;
-        console.debug(...arguments);
-    }
-}
-
-
-class Stash extends EventTarget {
-    constructor({
-        pageUrlCheckInterval = 1,
-        logging = false
-    } = {}) {
-        super();
-        this.log = new Logger(logging);
-        this._pageUrlCheckInterval = pageUrlCheckInterval;
-        this.fireOnHashChangesToo = true;
-        this.pageURLCheckTimer = setInterval(() => {
-            // Loop every 500ms
-            if (this.lastPathStr !== location.pathname || this.lastQueryStr !== location.search || (this.fireOnHashChangesToo && this.lastHashStr !== location.hash)) {
-                this.lastPathStr = location.pathname;
-                this.lastQueryStr = location.search;
-                this.lastHashStr = location.hash;
-                this.gmMain();
-            }
-        }, this._pageUrlCheckInterval);
-        stashListener.addEventListener('response', (evt) => {
-            if (evt.detail.data?.plugins) {
-                this.getPluginVersion(evt.detail);
-            }
-            this.processRemoteScenes(evt.detail);
-            this.processScene(evt.detail);
-            this.processScenes(evt.detail);
-            this.processStudios(evt.detail);
-            this.processPerformers(evt.detail);
-            this.processApiKey(evt.detail);
-            this.dispatchEvent(new CustomEvent('stash:response', {
-                'detail': evt.detail
-            }));
-        });
-        stashListener.addEventListener('pluginVersion', (evt) => {
-            if (this.pluginVersion !== evt.detail) {
-                this.pluginVersion = evt.detail;
-                this.dispatchEvent(new CustomEvent('stash:pluginVersion', {
-                    'detail': evt.detail
-                }));
-            }
-        });
-        this.version = [0, 0, 0];
-        this.getVersion();
-        this.pluginVersion = null;
-        this.getPlugins().then(plugins => this.getPluginVersion(plugins));
-        this.visiblePluginTasks = ['Userscript Functions'];
-        this.settingsCallbacks = [];
-        this.settingsId = 'userscript-settings';
-        this.remoteScenes = {};
-        this.scenes = {};
-        this.studios = {};
-        this.performers = {};
-        this.userscripts = [];
-    }
-    async getVersion() {
-        const reqData = {
-            "operationName": "",
-            "variables": {},
-            "query": `query version {
-    version {
-        version
-    }
-}
-`
-        };
-        const data = await this.callGQL(reqData);
-        const versionString = data.data.version.version;
-        this.version = versionString.substring(1).split('.').map(o => parseInt(o));
-    }
-    compareVersion(minVersion) {
-        let [currMajor, currMinor, currPatch = 0] = this.version;
-        let [minMajor, minMinor, minPatch = 0] = minVersion.split('.').map(i => parseInt(i));
-        if (currMajor > minMajor) return 1;
-        if (currMajor < minMajor) return -1;
-        if (currMinor > minMinor) return 1;
-        if (currMinor < minMinor) return -1;
-        return 0;
-
-    }
-    comparePluginVersion(minPluginVersion) {
-        if (!this.pluginVersion) return -1;
-        let [currMajor, currMinor, currPatch = 0] = this.pluginVersion.split('.').map(i => parseInt(i));
-        let [minMajor, minMinor, minPatch = 0] = minPluginVersion.split('.').map(i => parseInt(i));
-        if (currMajor > minMajor) return 1;
-        if (currMajor < minMajor) return -1;
-        if (currMinor > minMinor) return 1;
-        if (currMinor < minMinor) return -1;
-        return 0;
-
-    }
-    async runPluginTask(pluginId, taskName, args = []) {
-        const reqData = {
-            "operationName": "RunPluginTask",
-            "variables": {
-                "plugin_id": pluginId,
-                "task_name": taskName,
-                "args": args
-            },
-            "query": "mutation RunPluginTask($plugin_id: ID!, $task_name: String!, $args: [PluginArgInput!]) {\n  runPluginTask(plugin_id: $plugin_id, task_name: $task_name, args: $args)\n}\n"
-        };
-        return this.callGQL(reqData);
-    }
-    async callGQL(reqData) {
-        const options = {
-            method: 'POST',
-            body: JSON.stringify(reqData),
-            headers: {
-                'Content-Type': 'application/json'
-            }
-        }
-
-        try {
-            const res = await window.fetch('/graphql', options);
-            this.log.debug(res);
-            return res.json();
-        } catch (err) {
-            console.error(err);
-        }
-    }
-    async getFreeOnesStats(link) {
-        try {
-            const doc = await fetch(link)
-                .then(function(response) {
-                    // When the page is loaded convert it to text
-                    return response.text()
-                })
-                .then(function(html) {
-                    // Initialize the DOM parser
-                    var parser = new DOMParser();
-
-                    // Parse the text
-                    var doc = parser.parseFromString(html, "text/html");
-
-                    // You can now even select part of that html as you would in the regular DOM
-                    // Example:
-                    // var docArticle = doc.querySelector('article').innerHTML;
-
-                    console.log(doc);
-                    return doc
-                })
-                .catch(function(err) {
-                    console.log('Failed to fetch page: ', err);
-                });
-
-            var data = new Object();
-            data.rank = doc.querySelector('rank-chart-button');
-            console.log(data.rank);
-            data.views = doc.querySelector('.d-none.d-m-flex.flex-column.align-items-center.global-header > div.font-weight-bold').textContent;
-            data.votes = '0'
-            return JSON.stringify(data);
-        } catch (err) {
-            console.error(err);
-        }
-    }
-    async getPlugins() {
-        const reqData = {
-            "operationName": "Plugins",
-            "variables": {},
-            "query": `query Plugins {
-              plugins {
-                id
-                name
-                description
-                url
-                version
-                tasks {
-                  name
-                  description
-                  __typename
-                }
-                hooks {
-                  name
-                  description
-                  hooks
-                }
-              }
-            }
-            `
-        };
-        return this.callGQL(reqData);
-    }
-    async getPluginVersion(plugins) {
-        let version = null;
-        for (const plugin of plugins?.data?.plugins || []) {
-            if (plugin.id === 'userscript_functions') {
-                version = plugin.version;
-            }
-        }
-        stashListener.dispatchEvent(new CustomEvent('pluginVersion', {
-            'detail': version
-        }));
-    }
-    async getStashBoxes() {
-        const reqData = {
-            "operationName": "Configuration",
-            "variables": {},
-            "query": `query Configuration {
-                        configuration {
-                          general {
-                            stashBoxes {
-                              endpoint
-                              api_key
-                              name
-                            }
-                          }
-                        }
-                      }`
-        };
-        return this.callGQL(reqData);
-    }
-    async getApiKey() {
-        const reqData = {
-            "operationName": "Configuration",
-            "variables": {},
-            "query": `query Configuration {
-                        configuration {
-                          general {
-                            apiKey
-                          }
-                        }
-                      }`
-        };
-        return this.callGQL(reqData);
-    }
-    matchUrl(location, fragment) {
-        const regexp = concatRegexp(new RegExp(location.origin), fragment);
-        this.log.debug(regexp, location.href.match(regexp));
-        return location.href.match(regexp) != null;
-    }
-    createSettings() {
-        waitForElementId('configuration-tabs-tabpane-system', async (elementId, el) => {
-            let section;
-            if (!document.getElementById(this.settingsId)) {
-                section = document.createElement("div");
-                section.setAttribute('id', this.settingsId);
-                section.classList.add('setting-section');
-                section.innerHTML = `<h1>Userscript Settings</h1>`;
-                el.appendChild(section);
-
-                const expectedApiKey = (await this.getApiKey())?.data?.configuration?.general?.apiKey || '';
-                const expectedUrl = window.location.origin;
-
-                const serverUrlInput = await this.createSystemSettingTextbox(section, 'userscript-section-server-url', 'userscript-server-url', 'Stash Server URL', '', 'Server URL…', true);
-                serverUrlInput.addEventListener('change', () => {
-                    const value = serverUrlInput.value || '';
-                    if (value) {
-                        this.updateConfigValueTask('STASH', 'url', value);
-                        alert(`Userscripts plugin server URL set to ${value}`);
-                    } else {
-                        this.getConfigValueTask('STASH', 'url').then(value => {
-                            serverUrlInput.value = value;
-                        });
-                    }
-                });
-                serverUrlInput.disabled = true;
-                serverUrlInput.value = expectedUrl;
-                this.getConfigValueTask('STASH', 'url').then(value => {
-                    if (value !== expectedUrl) {
-                        return this.updateConfigValueTask('STASH', 'url', expectedUrl);
-                    }
-                });
-
-                const apiKeyInput = await this.createSystemSettingTextbox(section, 'userscript-section-server-apikey', 'userscript-server-apikey', 'Stash API Key', '', 'API Key…', true);
-                apiKeyInput.addEventListener('change', () => {
-                    const value = apiKeyInput.value || '';
-                    this.updateConfigValueTask('STASH', 'api_key', value);
-                    if (value) {
-                        alert(`Userscripts plugin server api key set to ${value}`);
-                    } else {
-                        alert(`Userscripts plugin server api key value cleared`);
-                    }
-                });
-                apiKeyInput.disabled = true;
-                apiKeyInput.value = expectedApiKey;
-                this.getConfigValueTask('STASH', 'api_key').then(value => {
-                    if (value !== expectedApiKey) {
-                        return this.updateConfigValueTask('STASH', 'api_key', expectedApiKey);
-                    }
-                });
-            } else {
-                section = document.getElementById(this.settingsId);
-            }
-
-            for (const callback of this.settingsCallbacks) {
-                callback(this.settingsId, section);
-            }
-
-            if (this.pluginVersion) {
-                this.dispatchEvent(new CustomEvent('stash:pluginVersion', {
-                    'detail': this.pluginVersion
-                }));
-            }
-
-        });
-    }
-    addSystemSetting(callback) {
-        const section = document.getElementById(this.settingsId);
-        if (section) {
-            callback(this.settingsId, section);
-        }
-        this.settingsCallbacks.push(callback);
-    }
-    async createSystemSettingCheckbox(containerEl, settingsId, inputId, settingsHeader, settingsSubheader) {
-        const section = document.createElement("div");
-        section.setAttribute('id', settingsId);
-        section.classList.add('card');
-        section.style.display = 'none';
-        section.innerHTML = `<div class="setting">
-        <div>
-        <h3>${settingsHeader}</h3>
-        <div class="sub-heading">${settingsSubheader}</div>
-        </div>
-        <div>
-        <div class="custom-control custom-switch">
-        <input type="checkbox" id="${inputId}" class="custom-control-input">
-        <label title="" for="${inputId}" class="custom-control-label"></label>
-        </div>
-        </div>
-        </div>`;
-        containerEl.appendChild(section);
-        return document.getElementById(inputId);
-    }
-    async createSystemSettingTextbox(containerEl, settingsId, inputId, settingsHeader, settingsSubheader, placeholder, visible) {
-        const section = document.createElement("div");
-        section.setAttribute('id', settingsId);
-        section.classList.add('card');
-        section.style.display = visible ? 'flex' : 'none';
-        section.innerHTML = `<div class="setting">
-        <div>
-        <h3>${settingsHeader}</h3>
-        <div class="sub-heading">${settingsSubheader}</div>
-        </div>
-        <div>
-        <div class="flex-grow-1 query-text-field-group">
-        <input id="${inputId}" class="bg-secondary text-white border-secondary form-control" placeholder="${placeholder}">
-        </div>
-        </div>
-        </div>`;
-        containerEl.appendChild(section);
-        return document.getElementById(inputId);
-    }
-    get serverUrl() {
-        return window.location.origin;
-    }
-    gmMain() {
-        const location = window.location;
-        this.log.debug(URL, window.location);
-
-        // marker wall
-        if (this.matchUrl(location, /\/scenes\/markers/)) {
-            this.log.debug('[Navigation] Wall-Markers Page');
-            this.dispatchEvent(new Event('page:markers'));
-        }
-        // scene page
-        else if (this.matchUrl(location, /\/scenes\/\d+/)) {
-            this.log.debug('[Navigation] Scene Page');
-            this.dispatchEvent(new Event('page:scene'));
-        }
-        // scenes wall
-        else if (this.matchUrl(location, /\/scenes\?/)) {
-            this.processTagger();
-            this.dispatchEvent(new Event('page:scenes'));
-        }
-
-        // images wall
-        if (this.matchUrl(location, /\/images\?/)) {
-            this.log.debug('[Navigation] Wall-Images Page');
-            this.dispatchEvent(new Event('page:images'));
-        }
-        // image page
-        if (this.matchUrl(location, /\/images\/\d+/)) {
-            this.log.debug('[Navigation] Image Page');
-            this.dispatchEvent(new Event('page:image'));
-        }
-
-        // movie scenes page
-        else if (this.matchUrl(location, /\/movies\/\d+\?/)) {
-            this.log.debug('[Navigation] Movie Page - Scenes');
-            this.processTagger();
-            this.dispatchEvent(new Event('page:movie:scenes'));
-        }
-        // movie page
-        else if (this.matchUrl(location, /\/movies\/\d+/)) {
-            this.log.debug('[Navigation] Movie Page');
-            this.dispatchEvent(new Event('page:movie'));
-        }
-        // movies wall
-        else if (this.matchUrl(location, /\/movies\?/)) {
-            this.log.debug('[Navigation] Wall-Movies Page');
-            this.dispatchEvent(new Event('page:movies'));
-        }
-
-        // galleries wall
-        if (this.matchUrl(location, /\/galleries\?/)) {
-            this.log.debug('[Navigation] Wall-Galleries Page');
-            this.dispatchEvent(new Event('page:galleries'));
-        }
-        // gallery page
-        if (this.matchUrl(location, /\/galleries\/\d+/)) {
-            this.log.debug('[Navigation] Gallery Page');
-            this.dispatchEvent(new Event('page:gallery'));
-        }
-
-        // performer scenes page
-        if (this.matchUrl(location, /\/performers\/\d+\?/)) {
-            this.log.debug('[Navigation] Performer Page - Scenes');
-            this.processTagger();
-            this.dispatchEvent(new Event('page:performer:scenes'));
-        }
-        // performer appearswith page
-        if (this.matchUrl(location, /\/performers\/\d+\/appearswith/)) {
-            this.log.debug('[Navigation] Performer Page - Appears With');
-            this.processTagger();
-            this.dispatchEvent(new Event('page:performer:performers'));
-        }
-        // performer galleries page
-        else if (this.matchUrl(location, /\/performers\/\d+\/galleries/)) {
-            this.log.debug('[Navigation] Performer Page - Galleries');
-            this.dispatchEvent(new Event('page:performer:galleries'));
-        }
-        // performer movies page
-        else if (this.matchUrl(location, /\/performers\/\d+\/movies/)) {
-            this.log.debug('[Navigation] Performer Page - Movies');
-            this.dispatchEvent(new Event('page:performer:movies'));
-        }
-        // performer page
-        else if (this.matchUrl(location, /\/performers\//)) {
-            this.log.debug('[Navigation] Performers Page');
-            this.dispatchEvent(new Event('page:performer'));
-            this.dispatchEvent(new Event('page:performer:details'));
-
-            waitForElementClass('performer-tabs', (className, targetNode) => {
-                const observerOptions = {
-                    childList: true
-                }
-                const observer = new MutationObserver(mutations => {
-                    let isPerformerEdit = false;
-                    mutations.forEach(mutation => {
-                        mutation.addedNodes.forEach(node => {
-                            if (node.id === 'performer-edit') {
-                                isPerformerEdit = true;
-                            }
-                        });
-                    });
-                    if (isPerformerEdit) {
-                        this.dispatchEvent(new Event('page:performer:edit'));
-                    } else {
-                        this.dispatchEvent(new Event('page:performer:details'));
-                    }
-                });
-                observer.observe(targetNode[0], observerOptions);
-            });
-        }
-        // performers wall
-        else if (this.matchUrl(location, /\/performers\?/)) {
-            this.log.debug('[Navigation] Wall-Performers Page');
-            this.dispatchEvent(new Event('page:performers'));
-        }
-
-        // studio galleries page
-        if (this.matchUrl(location, /\/studios\/\d+\/galleries/)) {
-            this.log.debug('[Navigation] Studio Page - Galleries');
-            this.dispatchEvent(new Event('page:studio:galleries'));
-        }
-        // studio images page
-        else if (this.matchUrl(location, /\/studios\/\d+\/images/)) {
-            this.log.debug('[Navigation] Studio Page - Images');
-            this.dispatchEvent(new Event('page:studio:images'));
-        }
-        // studio performers page
-        else if (this.matchUrl(location, /\/studios\/\d+\/performers/)) {
-            this.log.debug('[Navigation] Studio Page - Performers');
-            this.dispatchEvent(new Event('page:studio:performers'));
-        }
-        // studio movies page
-        else if (this.matchUrl(location, /\/studios\/\d+\/movies/)) {
-            this.log.debug('[Navigation] Studio Page - Movies');
-            this.dispatchEvent(new Event('page:studio:movies'));
-        }
-        // studio childstudios page
-        else if (this.matchUrl(location, /\/studios\/\d+\/childstudios/)) {
-            this.log.debug('[Navigation] Studio Page - Child Studios');
-            this.dispatchEvent(new Event('page:studio:childstudios'));
-        }
-        // studio scenes page
-        else if (this.matchUrl(location, /\/studios\/\d+\?/)) {
-            this.log.debug('[Navigation] Studio Page - Scenes');
-            this.processTagger();
-            this.dispatchEvent(new Event('page:studio:scenes'));
-        }
-        // studio page
-        else if (this.matchUrl(location, /\/studios\/\d+/)) {
-            this.log.debug('[Navigation] Studio Page');
-            this.dispatchEvent(new Event('page:studio'));
-        }
-        // studios wall
-        else if (this.matchUrl(location, /\/studios\?/)) {
-            this.log.debug('[Navigation] Wall-Studios Page');
-            this.dispatchEvent(new Event('page:studios'));
-        }
-
-        // tag galleries page
-        if (this.matchUrl(location, /\/tags\/\d+\/galleries/)) {
-            this.log.debug('[Navigation] Tag Page - Galleries');
-            this.dispatchEvent(new Event('page:tag:galleries'));
-        }
-        // tag images page
-        else if (this.matchUrl(location, /\/tags\/\d+\/images/)) {
-            this.log.debug('[Navigation] Tag Page - Images');
-            this.dispatchEvent(new Event('page:tag:images'));
-        }
-        // tag markers page
-        else if (this.matchUrl(location, /\/tags\/\d+\/markers/)) {
-            this.log.debug('[Navigation] Tag Page - Markers');
-            this.dispatchEvent(new Event('page:tag:markers'));
-        }
-        // tag performers page
-        else if (this.matchUrl(location, /\/tags\/\d+\/performers/)) {
-            this.log.debug('[Navigation] Tag Page - Performers');
-            this.dispatchEvent(new Event('page:tag:performers'));
-        }
-        // tag scenes page
-        else if (this.matchUrl(location, /\/tags\/\d+\?/)) {
-            this.log.debug('[Navigation] Tag Page - Scenes');
-            this.processTagger();
-            this.dispatchEvent(new Event('page:tag:scenes'));
-        }
-        // tag page
-        else if (this.matchUrl(location, /\/tags\/\d+/)) {
-            this.log.debug('[Navigation] Tag Page');
-            this.dispatchEvent(new Event('page:tag'));
-        }
-        // tags any page
-        if (this.matchUrl(location, /\/tags\/\d+/)) {
-            this.log.debug('[Navigation] Tag Page - Any');
-            this.dispatchEvent(new Event('page:tag:any'));
-        }
-        // tags wall
-        else if (this.matchUrl(location, /\/tags\?/)) {
-            this.log.debug('[Navigation] Wall-Tags Page');
-            this.dispatchEvent(new Event('page:tags'));
-        }
-
-        // settings page tasks tab
-        if (this.matchUrl(location, /\/settings\?tab=tasks/)) {
-            this.log.debug('[Navigation] Settings Page Tasks Tab');
-            this.dispatchEvent(new Event('page:settings:tasks'));
-            this.hidePluginTasks();
-        }
-        // settings page system tab
-        else if (this.matchUrl(location, /\/settings\?tab=system/)) {
-            this.log.debug('[Navigation] Settings Page System Tab');
-            this.createSettings();
-            this.dispatchEvent(new Event('page:settings:system'));
-        }
-        // settings page (defaults to tasks tab)
-        else if (this.matchUrl(location, /\/settings/)) {
-            this.log.debug('[Navigation] Settings Page Tasks Tab');
-            this.dispatchEvent(new Event('page:settings:tasks'));
-            this.hidePluginTasks();
-        }
-
-        // stats page
-        if (this.matchUrl(location, /\/stats/)) {
-            this.log.debug('[Navigation] Stats Page');
-            this.dispatchEvent(new Event('page:stats'));
-        }
-    }
-    hidePluginTasks() {
-        // hide userscript functions plugin tasks
-        waitForElementByXpath("//div[@id='tasks-panel']//h3[text()='Userscript Functions']/ancestor::div[contains(@class, 'setting-group')]", (elementId, el) => {
-            const tasks = el.querySelectorAll('.setting');
-            for (const task of tasks) {
-                const taskName = task.querySelector('h3').innerText;
-                task.classList.add(this.visiblePluginTasks.indexOf(taskName) === -1 ? 'd-none' : 'd-flex');
-                this.dispatchEvent(new CustomEvent('stash:plugin:task', {
-                    'detail': {
-                        taskName,
-                        task
-                    }
-                }));
-            }
-        });
-    }
-    async updateConfigValueTask(sectionKey, propName, value) {
-        return this.runPluginTask("userscript_functions", "Update Config Value", [{
-            "key": "section_key",
-            "value": {
-                "str": sectionKey
-            }
-        }, {
-            "key": "prop_name",
-            "value": {
-                "str": propName
-            }
-        }, {
-            "key": "value",
-            "value": {
-                "str": value
-            }
-        }]);
-    }
-    async getConfigValueTask(sectionKey, propName) {
-        await this.runPluginTask("userscript_functions", "Get Config Value", [{
-            "key": "section_key",
-            "value": {
-                "str": sectionKey
-            }
-        }, {
-            "key": "prop_name",
-            "value": {
-                "str": propName
-            }
-        }]);
-
-        // poll logs until plugin task output appears
-        const prefix = `[Plugin / Userscript Functions] get_config_value: [${sectionKey}][${propName}] =`;
-        return this.pollLogsForMessage(prefix);
-    }
-    async pollLogsForMessage(prefix) {
-        const reqTime = Date.now();
-        const reqData = {
-            "variables": {},
-            "query": `query Logs {
-                        logs {
-                            time
-                            level
-                            message
-                        }
-                    }`
-        };
-        await new Promise(r => setTimeout(r, 500));
-        let retries = 0;
-        while (true) {
-            const delay = 2 ** retries * 100;
-            await new Promise(r => setTimeout(r, delay));
-            retries++;
-
-            const logs = await this.callGQL(reqData);
-            for (const log of logs.data.logs) {
-                const logTime = Date.parse(log.time);
-                if (logTime > reqTime && log.message.startsWith(prefix)) {
-                    return log.message.replace(prefix, '').trim();
-                }
-            }
-
-            if (retries >= 5) {
-                throw `Poll logs failed for message: ${prefix}`;
-            }
-        }
-    }
-    processTagger() {
-        waitForElementByXpath("//button[text()='Scrape All']", (xpath, el) => {
-            this.dispatchEvent(new CustomEvent('tagger', {
-                'detail': el
-            }));
-
-            const searchItemContainer = document.querySelector('.tagger-container').lastChild;
-
-            const observer = new MutationObserver(mutations => {
-                mutations.forEach(mutation => {
-                    mutation.addedNodes.forEach(node => {
-                        if (node?.classList?.contains('entity-name') && node.innerText.startsWith('Performer:')) {
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:remoteperformer', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else if (node?.classList?.contains('entity-name') && node.innerText.startsWith('Studio:')) {
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:remotestudio', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else if (node.tagName === 'SPAN' && node.innerText.startsWith('Matched:')) {
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:local', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else if (node.tagName === 'UL') {
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:container', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else if (node?.classList?.contains('col-lg-6')) {
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:subcontainer', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else if (node.tagName === 'H5') { // scene date
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:date', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else if (node.tagName === 'DIV' && node?.classList?.contains('d-flex') && node?.classList?.contains('flex-column')) { // scene stashid, url, details
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:detailscontainer', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        } else {
-                            this.dispatchEvent(new CustomEvent('tagger:mutation:add:other', {
-                                'detail': {
-                                    node,
-                                    mutation
-                                }
-                            }));
-                        }
-                    });
-                });
-                this.dispatchEvent(new CustomEvent('tagger:mutations:searchitems', {
-                    'detail': mutations
-                }));
-            });
-            observer.observe(searchItemContainer, {
-                childList: true,
-                subtree: true
-            });
-
-            const taggerContainerHeader = document.querySelector('.tagger-container-header');
-            const taggerContainerHeaderObserver = new MutationObserver(mutations => {
-                this.dispatchEvent(new CustomEvent('tagger:mutations:header', {
-                    'detail': mutations
-                }));
-            });
-            taggerContainerHeaderObserver.observe(taggerContainerHeader, {
-                childList: true,
-                subtree: true
-            });
-
-            for (const searchItem of document.querySelectorAll('.search-item')) {
-                this.dispatchEvent(new CustomEvent('tagger:searchitem', {
-                    'detail': searchItem
-                }));
-            }
-
-            if (!document.getElementById('progress-bar')) {
-                const progressBar = createElementFromHTML(`<div id="progress-bar" class="progress"><div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div></div>`);
-                progressBar.classList.add('progress');
-                progressBar.style.display = 'none';
-                taggerContainerHeader.appendChild(progressBar);
-            }
-        });
-        waitForElementByXpath("//div[@class='tagger-container-header']/div/div[@class='row']/h4[text()='Configuration']", (xpath, el) => {
-            this.dispatchEvent(new CustomEvent('tagger:configuration', {
-                'detail': el
-            }));
-        });
-    }
-    setProgress(value) {
-        const progressBar = document.getElementById('progress-bar');
-        if (progressBar) {
-            progressBar.firstChild.style.width = value + '%';
-            progressBar.style.display = (value <= 0 || value > 100) ? 'none' : 'flex';
-        }
-    }
-    processRemoteScenes(data) {
-        if (data.data?.scrapeMultiScenes) {
-            for (const matchResults of data.data.scrapeMultiScenes) {
-                for (const scene of matchResults) {
-                    this.remoteScenes[scene.remote_site_id] = scene;
-                }
-            }
-        } else if (data.data?.scrapeSingleScene) {
-            for (const scene of data.data.scrapeSingleScene) {
-                this.remoteScenes[scene.remote_site_id] = scene;
-            }
-        }
-    }
-    processScene(data) {
-        if (data.data.findScene) {
-            this.scenes[data.data.findScene.id] = data.data.findScene;
-        }
-    }
-    processScenes(data) {
-        if (data.data.findScenes?.scenes) {
-            for (const scene of data.data.findScenes.scenes) {
-                this.scenes[scene.id] = scene;
-            }
-        }
-    }
-    processStudios(data) {
-        if (data.data.findStudios?.studios) {
-            for (const studio of data.data.findStudios.studios) {
-                this.studios[studio.id] = studio;
-            }
-        }
-    }
-    processPerformers(data) {
-        if (data.data.findPerformers?.performers) {
-            for (const performer of data.data.findPerformers.performers) {
-                this.performers[performer.id] = performer;
-            }
-        }
-    }
-    processApiKey(data) {
-        if (data.data.generateAPIKey != null && this.pluginVersion) {
-            this.updateConfigValueTask('STASH', 'api_key', data.data.generateAPIKey);
-        }
-    }
-    parseSearchItem(searchItem) {
-        const urlNode = searchItem.querySelector('a.scene-link');
-        const url = new URL(urlNode.href);
-        const id = url.pathname.replace('/scenes/', '');
-        const data = this.scenes[id];
-        const nameNode = searchItem.querySelector('a.scene-link > div.TruncatedText');
-        const name = nameNode.innerText;
-        const queryInput = searchItem.querySelector('input.text-input');
-        const performerNodes = searchItem.querySelectorAll('.performer-tag-container');
-
-        return {
-            urlNode,
-            url,
-            id,
-            data,
-            nameNode,
-            name,
-            queryInput,
-            performerNodes
-        }
-    }
-    parseSearchResultItem(searchResultItem) {
-        const remoteUrlNode = searchResultItem.querySelector('.scene-details .optional-field .optional-field-content a');
-        const remoteId = remoteUrlNode?.href.split('/').pop();
-        const remoteUrl = remoteUrlNode?.href ? new URL(remoteUrlNode.href) : null;
-        const remoteData = this.remoteScenes[remoteId];
-
-        const sceneDetailNodes = searchResultItem.querySelectorAll('.scene-details .optional-field .optional-field-content');
-        let urlNode = null;
-        let detailsNode = null;
-        for (const sceneDetailNode of sceneDetailNodes) {
-            if (sceneDetailNode.innerText.startsWith('http') && (remoteUrlNode?.href !== sceneDetailNode.innerText)) {
-                urlNode = sceneDetailNode;
-            } else if (!sceneDetailNode.innerText.startsWith('http')) {
-                detailsNode = sceneDetailNode;
-            }
-        }
-
-        const imageNode = searchResultItem.querySelector('.scene-image-container .optional-field .optional-field-content');
-
-        const metadataNode = searchResultItem.querySelector('.scene-metadata');
-        const titleNode = metadataNode.querySelector('h4 .optional-field .optional-field-content');
-        const codeAndDateNodes = metadataNode.querySelectorAll('h5 .optional-field .optional-field-content');
-        let codeNode = null;
-        let dateNode = null;
-        for (const node of codeAndDateNodes) {
-            if (node.textContent.includes('-')) {
-                dateNode = node;
-            } else {
-                codeNode = node;
-            }
-        }
-
-        const entityNodes = searchResultItem.querySelectorAll('.entity-name');
-        let studioNode = null;
-        const performerNodes = [];
-        for (const entityNode of entityNodes) {
-            if (entityNode.innerText.startsWith('Studio:')) {
-                studioNode = entityNode;
-            } else if (entityNode.innerText.startsWith('Performer:')) {
-                performerNodes.push(entityNode);
-            }
-        }
-
-        const matchNodes = searchResultItem.querySelectorAll('div.col-lg-6 div.mt-2 div.row.no-gutters.my-2 span.ml-auto');
-        const matches = []
-        for (const matchNode of matchNodes) {
-            let matchType = null;
-            const entityNode = matchNode.parentElement.querySelector('.entity-name');
-
-            const matchName = matchNode.querySelector('.optional-field-content b').innerText;
-            const remoteName = entityNode.querySelector('b').innerText;
-
-            let data;
-            if (entityNode.innerText.startsWith('Performer:')) {
-                matchType = 'performer';
-                if (remoteData) {
-                    data = remoteData.performers.find(performer => performer.name === remoteName);
-                }
-            } else if (entityNode.innerText.startsWith('Studio:')) {
-                matchType = 'studio';
-                if (remoteData) {
-                    data = remoteData.studio
-                }
-            }
-
-            matches.push({
-                matchType,
-                matchNode,
-                entityNode,
-                matchName,
-                remoteName,
-                data
-            });
-        }
-
-        return {
-            remoteUrlNode,
-            remoteId,
-            remoteUrl,
-            remoteData,
-            urlNode,
-            detailsNode,
-            imageNode,
-            titleNode,
-            codeNode,
-            dateNode,
-            studioNode,
-            performerNodes,
-            matches
-        }
-    }
-}
-
-stash = new Stash();
-
-function waitForElementClass(elementId, callBack, time) {
-    time = (typeof time !== 'undefined') ? time : 100;
-    window.setTimeout(() => {
-        const element = document.getElementsByClassName(elementId);
-        if (element.length > 0) {
-            callBack(elementId, element);
-        } else {
-            waitForElementClass(elementId, callBack);
-        }
-    }, time);
-}
-
-function waitForElementId(elementId, callBack, time) {
-    time = (typeof time !== 'undefined') ? time : 100;
-    window.setTimeout(() => {
-        const element = document.getElementById(elementId);
-        if (element != null) {
-            callBack(elementId, element);
-        } else {
-            waitForElementId(elementId, callBack);
-        }
-    }, time);
-}
-
-function waitForElementByXpath(xpath, callBack, time) {
-    time = (typeof time !== 'undefined') ? time : 100;
-    window.setTimeout(() => {
-        const element = getElementByXpath(xpath);
-        if (element) {
-            callBack(xpath, element);
-        } else {
-            waitForElementByXpath(xpath, callBack);
-        }
-    }, time);
-}
-
-function getElementByXpath(xpath, contextNode) {
-    return document.evaluate(xpath, contextNode || document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
-}
-
-function createElementFromHTML(htmlString) {
-    const div = document.createElement('div');
-    div.innerHTML = htmlString.trim();
-
-    // Change this to div.childNodes to support multiple top-level nodes.
-    return div.firstChild;
-}
-
-function getElementByXpath(xpath, contextNode) {
-    return document.evaluate(xpath, contextNode || document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
-}
-
-function getElementsByXpath(xpath, contextNode) {
-    return document.evaluate(xpath, contextNode || document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
-}
-
-function getClosestAncestor(el, selector, stopSelector) {
-    let retval = null;
-    while (el) {
-        if (el.matches(selector)) {
-            retval = el;
-            break
-        } else if (stopSelector && el.matches(stopSelector)) {
-            break
-        }
-        el = el.parentElement;
-    }
-    return retval;
-}
-
-function setNativeValue(element, value) {
-    const valueSetter = Object.getOwnPropertyDescriptor(element, 'value').set;
-    const prototype = Object.getPrototypeOf(element);
-    const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype, 'value').set;
-
-    if (valueSetter && valueSetter !== prototypeValueSetter) {
-        prototypeValueSetter.call(element, value);
-    } else {
-        valueSetter.call(element, value);
-    }
-}
-
-function updateTextInput(element, value) {
-    setNativeValue(element, value);
-    element.dispatchEvent(new Event('input', {
-        bubbles: true
-    }));
-}
-
-function concatRegexp(reg, exp) {
-    let flags = reg.flags + exp.flags;
-    flags = Array.from(new Set(flags.split(''))).join();
-    return new RegExp(reg.source + exp.source, flags);
-}
-
-function sortElementChildren(node) {
-    const items = node.childNodes;
-    const itemsArr = [];
-    for (const i in items) {
-        if (items[i].nodeType == Node.ELEMENT_NODE) { // get rid of the whitespace text nodes
-            itemsArr.push(items[i]);
-        }
-    }
-
-    itemsArr.sort((a, b) => {
-        return a.innerHTML == b.innerHTML ?
-            0 :
-            (a.innerHTML > b.innerHTML ? 1 : -1);
-    });
-
-    for (let i = 0; i < itemsArr.length; i++) {
-        node.appendChild(itemsArr[i]);
-    }
-}
-
-function xPathResultToArray(result) {
-    let node = null;
-    const nodes = [];
-    while (node = result.iterateNext()) {
-        nodes.push(node);
-    }
-    return nodes;
-}
-
-function createStatElement(container, title, heading) {
-    const statEl = document.createElement('div');
-    statEl.classList.add('stats-element');
-    container.appendChild(statEl);
-
-    const statTitle = document.createElement('p');
-    statTitle.classList.add('title');
-    statTitle.innerText = title;
-    statEl.appendChild(statTitle);
-
-    const statHeading = document.createElement('p');
-    statHeading.classList.add('heading');
-    statHeading.innerText = heading;
-    statEl.appendChild(statHeading);
-}
-
-const reloadImg = url =>
-    fetch(url, {
-        cache: 'reload',
-        mode: 'no-cors'
-    })
-    .then(() => document.body.querySelectorAll(`img[src='${url}']`)
-        .forEach(img => img.src = url));
diff --git a/plugins/stats/stats.js b/plugins/stats/stats.js
deleted file mode 100644
index 6aa22c4f..00000000
--- a/plugins/stats/stats.js
+++ /dev/null
@@ -1,136 +0,0 @@
-(function() {
-    function createStatElement(container, title, heading) {
-        const statEl = document.createElement('div');
-        statEl.classList.add('stats-element');
-        container.appendChild(statEl);
-
-        const statTitle = document.createElement('p');
-        statTitle.classList.add('title');
-        statTitle.innerText = title;
-        statEl.appendChild(statTitle);
-
-        const statHeading = document.createElement('p');
-        statHeading.classList.add('heading');
-        statHeading.innerText = heading;
-        statEl.appendChild(statHeading);
-    }
-
-    async function createSceneStashIDPct(row) {
-        const reqData = {
-            "variables": {
-                "scene_filter": {
-                    "stash_id": {
-                        "value": "",
-                        "modifier": "NOT_NULL"
-                    }
-                }
-            },
-            "query": "query FindScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $scene_ids: [Int!]) {\n  findScenes(filter: $filter, scene_filter: $scene_filter, scene_ids: $scene_ids) {\n    count\n  }\n}"
-        };
-        const stashIdCount = (await stash.callGQL(reqData)).data.findScenes.count;
-
-        const reqData2 = {
-            "variables": {
-                "scene_filter": {}
-            },
-            "query": "query FindScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $scene_ids: [Int!]) {\n  findScenes(filter: $filter, scene_filter: $scene_filter, scene_ids: $scene_ids) {\n    count\n  }\n}"
-        };
-        const totalCount = (await stash.callGQL(reqData2)).data.findScenes.count;
-
-        createStatElement(row, (stashIdCount / totalCount * 100).toFixed(2) + '%', 'Scene StashIDs');
-    }
-
-    async function createPerformerStashIDPct(row) {
-        const reqData = {
-            "variables": {
-                "performer_filter": {
-                    "stash_id": {
-                        "value": "",
-                        "modifier": "NOT_NULL"
-                    }
-                }
-            },
-            "query": "query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType) {\n  findPerformers(filter: $filter, performer_filter: $performer_filter) {\n    count\n  }\n}"
-        };
-        const stashIdCount = (await stash.callGQL(reqData)).data.findPerformers.count;
-
-        const reqData2 = {
-            "variables": {
-                "performer_filter": {}
-            },
-            "query": "query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType) {\n  findPerformers(filter: $filter, performer_filter: $performer_filter) {\n    count\n  }\n}"
-        };
-        const totalCount = (await stash.callGQL(reqData2)).data.findPerformers.count;
-
-        createStatElement(row, (stashIdCount / totalCount * 100).toFixed(2) + '%', 'Performer StashIDs');
-    }
-
-    async function createStudioStashIDPct(row) {
-        const reqData = {
-            "variables": {
-                "studio_filter": {
-                    "stash_id": {
-                        "value": "",
-                        "modifier": "NOT_NULL"
-                    }
-                }
-            },
-            "query": "query FindStudios($filter: FindFilterType, $studio_filter: StudioFilterType) {\n  findStudios(filter: $filter, studio_filter: $studio_filter) {\n    count\n  }\n}"
-        };
-        const stashIdCount = (await stash.callGQL(reqData)).data.findStudios.count;
-
-        const reqData2 = {
-            "variables": {
-                "scene_filter": {}
-            },
-            "query": "query FindStudios($filter: FindFilterType, $studio_filter: StudioFilterType) {\n  findStudios(filter: $filter, studio_filter: $studio_filter) {\n    count\n  }\n}"
-        };
-        const totalCount = (await stash.callGQL(reqData2)).data.findStudios.count;
-
-        createStatElement(row, (stashIdCount / totalCount * 100).toFixed(2) + '%', 'Studio StashIDs');
-    }
-
-    async function createPerformerFavorites(row) {
-        const reqData = {
-            "variables": {
-                "performer_filter": {
-                    "filter_favorites": true
-                }
-            },
-            "query": "query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType) {\n  findPerformers(filter: $filter, performer_filter: $performer_filter) {\n    count\n  }\n}"
-        };
-        const perfCount = (await stash.callGQL(reqData)).data.findPerformers.count;
-
-        createStatElement(row, perfCount, 'Favorite Performers');
-    }
-
-    async function createMarkersStat(row) {
-        const reqData = {
-            "variables": {
-                "scene_marker_filter": {}
-            },
-            "query": "query FindSceneMarkers($filter: FindFilterType, $scene_marker_filter: SceneMarkerFilterType) {\n  findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter) {\n    count\n  }\n}"
-        };
-        const totalCount = (await stash.callGQL(reqData)).data.findSceneMarkers.count;
-
-        createStatElement(row, totalCount, 'Markers');
-    }
-
-    stash.addEventListener('page:stats', function() {
-        waitForElementByXpath("//div[contains(@class, 'container-fluid')]/div[@class='mt-5']", function(xpath, el) {
-            if (!document.getElementById('custom-stats-row')) {
-                const changelog = el.querySelector('div.changelog');
-                const row = document.createElement('div');
-                row.setAttribute('id', 'custom-stats-row');
-                row.classList.add('col', 'col-sm-8', 'm-sm-auto', 'row', 'stats');
-                el.insertBefore(row, changelog);
-
-                createSceneStashIDPct(row);
-                createStudioStashIDPct(row);
-                createPerformerStashIDPct(row);
-                createPerformerFavorites(row);
-                createMarkersStat(row);
-            }
-        });
-    });
-})();
diff --git a/plugins/stats/stats.yml b/plugins/stats/stats.yml
deleted file mode 100644
index 255ca988..00000000
--- a/plugins/stats/stats.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-name: Extended Stats
-# requires: StashUserscriptLibrary
-description: Adds new stats to the stats page
-version: 1.0
-ui:
-  requires: 
-  - StashUserscriptLibrary
-  javascript:
-  - stats.js
diff --git a/plugins/tagGraph/README.md b/plugins/tagGraph/README.md
deleted file mode 100644
index c09bbf47..00000000
--- a/plugins/tagGraph/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-
-# Tag Graph Generator
-
-## Requirements
- * python >= 3.7.X
- * `pip install -r requirements.txt`
-
----
-
-## Usage
-
-### Running as a plugin
-move the `tagGraph` directory into Stash's plugins directory, reload plugins and you can run the **Generate Graph** task 
-
-### Running as a script
-> **⚠️ Note:** use this if you are connecting to a remote instance of stash
-
-ensure `STASH_SETTINGS` is configured properly, you will likely need to change it
-
-run `python .\tag_graph.py -script`
-
-### View graph
-a `tag_graph.html` file will be generated inside the tagGraph directory, open it with a browser to view/interact with the graph
-
----
-
-## Customizing the graph
-set `SHOW_OPTIONS` to `True` and you will get an interface to play around with that will affect what the graph looks like.
-
-for more info see [pyvis docs](https://pyvis.readthedocs.io/en/latest/tutorial.html#using-the-configuration-ui-to-dynamically-tweak-network-settings)
diff --git a/plugins/tagGraph/config.py b/plugins/tagGraph/config.py
deleted file mode 100644
index 821b4cb2..00000000
--- a/plugins/tagGraph/config.py
+++ /dev/null
@@ -1,7 +0,0 @@
-STASH_SETTINGS = {
-	"Scheme":"http",
-	"Domain": "localhost",
-	"Port": "9999",
-	"ApiKey": "YOUR_API_KEY_HERE"
-}
-SHOW_OPTIONS = False
diff --git a/plugins/tagGraph/requirements.txt b/plugins/tagGraph/requirements.txt
deleted file mode 100644
index 2e17f0e0..00000000
--- a/plugins/tagGraph/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-pyvis==0.1.9
-requests==2.25.1
\ No newline at end of file
diff --git a/plugins/tagGraph/tag_graph.py b/plugins/tagGraph/tag_graph.py
deleted file mode 100644
index aba543ba..00000000
--- a/plugins/tagGraph/tag_graph.py
+++ /dev/null
@@ -1,247 +0,0 @@
-
-import os, re, sys, copy, json, requests
-
-# local dependencies
-import config
-# external dependencies
-from pyvis.network import Network
-
-class StashLogger:
-	# Log messages sent from a script scraper instance are transmitted via stderr and are
-	# encoded with a prefix consisting of special character SOH, then the log
-	# level (one of t, d, i, w or e - corresponding to trace, debug, info,
-	# warning and error levels respectively), then special character
-	# STX.
-	#
-	# The log.trace, log.debug, log.info, log.warning, and log.error methods, and their equivalent
-	# formatted methods are intended for use by script scraper instances to transmit log
-	# messages.
-	#
-	def __log(self, level_char: bytes, s):
-		if level_char:
-			lvl_char = "\x01{}\x02".format(level_char.decode())
-			s = re.sub(r"data:image.+?;base64(.+?')","[...]",str(s))
-			for x in s.split("\n"):
-				print(lvl_char, x, file=sys.stderr, flush=True)
-	def trace(self, s):
-		self.__log(b't', s)
-	def debug(self, s):
-		self.__log(b'd', s)
-	def info(self, s):
-		self.__log(b'i', s)
-	def warning(self, s):
-		self.__log(b'w', s)
-	def error(self, s):
-		self.__log(b'e', s)
-	def progress(self, p):
-		progress = min(max(0, p), 1)
-		self.__log(b'p', str(progress))
-
-class StashInterface:
-	port = ""
-	url = ""
-	headers = {
-		"Accept-Encoding": "gzip, deflate",
-		"Content-Type": "application/json",
-		"Accept": "application/json",
-		"Connection": "keep-alive",
-		"DNT": "1"
-	}
-	cookies = {}
-
-	def __init__(self, conn, fragments={}):
-		global log
-
-		if conn.get("Logger"):
-			log = conn.get("Logger")
-		else:
-			raise Exception("No logger passed to StashInterface")
-
-		self.port = conn['Port'] if conn.get('Port') else '9999'
-		scheme = conn['Scheme'] if conn.get('Scheme') else 'http'
-
-		api_key = conn.get("ApiKey")
-		if api_key:
-			self.headers["ApiKey"] = api_key
-
-		# Session cookie for authentication
-		self.cookies = {}
-		if conn.get('SessionCookie'):
-			self.cookies.update({
-					'session': conn['SessionCookie']['Value']
-			})
-
-		domain = conn['Domain'] if conn.get('Domain') else 'localhost'
-
-		# Stash GraphQL endpoint
-		self.url = f'{scheme}://{domain}:{self.port}/graphql'
-
-		try:
-			self.get_stash_config()
-		except Exception:
-			log.error(f"Could not connect to Stash at {self.url}")
-			sys.exit()
-
-		log.info(f"Using Stash's GraphQl endpoint at {self.url}")
-
-		self.fragments = fragments
-
-	def __resolveFragments(self, query):
-
-		fragmentReferences = list(set(re.findall(r'(?<=\.\.\.)\w+', query)))
-		fragments = []
-		for ref in fragmentReferences:
-			fragments.append({
-					"fragment": ref,
-					"defined": bool(re.search("fragment {}".format(ref), query))
-			})
-
-		if all([f["defined"] for f in fragments]):
-			return query
-		else:
-			for fragment in [f["fragment"] for f in fragments if not f["defined"]]:
-					if fragment not in self.fragments:
-						raise Exception(f'GraphQL error: fragment "{fragment}" not defined')
-					query += self.fragments[fragment]
-			return self.__resolveFragments(query)
-
-	def __callGraphQL(self, query, variables=None):
-
-		query = self.__resolveFragments(query)
-
-		json_request = {'query': query}
-		if variables is not None:
-			json_request['variables'] = variables
-
-		response = requests.post(self.url, json=json_request, headers=self.headers, cookies=self.cookies)
-		
-		if response.status_code == 200:
-			result = response.json()
-
-			if result.get("errors"):
-					for error in result["errors"]:
-						log.error(f"GraphQL error: {error}")
-			if result.get("error"):
-					for error in result["error"]["errors"]:
-						log.error(f"GraphQL error: {error}")
-			if result.get("data"):
-					return result['data']
-		elif response.status_code == 401:
-			sys.exit("HTTP Error 401, Unauthorized. Cookie authentication most likely failed")
-		else:
-			raise ConnectionError(
-					"GraphQL query failed:{} - {}. Query: {}. Variables: {}".format(
-						response.status_code, response.content, query, variables)
-			)
-
-	def __match_alias_item(self, search, items):
-		item_matches = {}
-		for item in items:
-			if re.match(rf'{search}$', item.name, re.IGNORECASE):
-					log.debug(f'matched "{search}" to "{item.name}" ({item.id}) using primary name')
-					item_matches[item.id] = item
-			if not item.aliases:
-					continue
-			for alias in item.aliases:
-					if re.match(rf'{search}$', alias.strip(), re.IGNORECASE):
-						log.debug(f'matched "{search}" to "{alias}" ({item.id}) using alias')
-						item_matches[item.id] = item
-		return list(item_matches.values())
-	
-	def get_stash_config(self):
-		query = """
-		query Configuration {
-			configuration { general { stashes{ path } } }
-		}
-		"""
-		result = self.__callGraphQL(query)
-		return result['configuration']
-
-	def get_tags_with_relations(self):
-		query = """
-		query FindTags($filter: FindFilterType, $tag_filter: TagFilterType) {
-			findTags(filter: $filter, tag_filter: $tag_filter) {
-					count
-					tags {
-						id
-						name
-						parents { id }
-						children { id }
-					}
-			}
-		}
-		"""
-
-		variables = {
-			"tag_filter":{
-					"child_count":{"modifier": "GREATER_THAN", "value": 0}, 
-						"OR": {
-					"parent_count": {"modifier": "GREATER_THAN", "value": 0}}
-			},
-			"filter": {"q":"", "per_page":-1}
-		}
-		result = self.__callGraphQL(query, variables)
-		return result['findTags']['tags']
-
-def script_init():
-	import logging as log
-	log.basicConfig(level=log.INFO, format='%(levelname)s: %(message)s')
-	stash_connection = config.STASH_SETTINGS
-	stash_connection["Logger"] = log
-	generate_graph(stash_connection)
-
-def plugin_init():
-	log = StashLogger()
-	stash_connection = json.loads(sys.stdin.read())["server_connection"]
-	stash_connection["Logger"] = log
-	generate_graph(stash_connection)
-	print(json.dumps({"output":"ok"}))
-
-def generate_graph(stash_connection):
-	log = stash_connection["Logger"]
-	
-	stash = StashInterface(stash_connection)
-	log.info("getting tags from stash...")
-	tags = stash.get_tags_with_relations()
-	
-	log.info("generating graph...")
-	if config.SHOW_OPTIONS:
-		G = Network(directed=True, height="100%", width="66%", bgcolor="#202b33", font_color="white")
-		G.show_buttons()
-	else:
-		G = Network(directed=True, height="100%", width="100%", bgcolor="#202b33", font_color="white")
-
-	node_theme = {
-		"border": "#adb5bd",
-		"background":"#394b59",
-		"highlight":{
-			"border": "#137cbd",
-			"background":"#FFFFFF"
-		}
-	}
-	edge_theme = {
-		"color": "#FFFFFF",
-		"highlight":"#137cbd"
-	}
-
-	# create all nodes
-	for tag in tags:
-		G.add_node(tag["id"], label=tag["name"], color=node_theme )
-	# create all edges
-	for tag in tags:
-		for child in tag["children"]:
-			G.add_edge( tag["id"], child["id"], color=edge_theme )
-
-
-	current_abs_path = os.path.dirname(os.path.abspath(__file__))
-	save_path = os.path.join(current_abs_path, "tag_graph.html")
-
-	G.save_graph(save_path)
-	log.info(f'saved graph to "{save_path}"')
-
-	
-if __name__ == '__main__':
-	if len(sys.argv) > 1:
-		script_init()
-	else:
-		plugin_init()
\ No newline at end of file
diff --git a/plugins/tagGraph/tag_graph.yml b/plugins/tagGraph/tag_graph.yml
deleted file mode 100644
index 2940b683..00000000
--- a/plugins/tagGraph/tag_graph.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: Tag Graph
-description: Creates a visual of the Tag relations
-version: 0.2
-exec:
-  - python
-  - "{pluginDir}/tag_graph.py"
-interface: raw
-tasks:
-  - name: Generate Graph
-    description: generates graph from current tag data
-    defaultArgs:
-      mode: generate
\ No newline at end of file
diff --git a/plugins/timestampTrade/README.md b/plugins/timestampTrade/README.md
deleted file mode 100644
index 9d9623e3..00000000
--- a/plugins/timestampTrade/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# timestampTrade 
-I've created the api https://timestamp.trade to sync markers between stash instances and xbvr.
-This sits along side other metadata databases like stashdb while we wait for the feature to be added there.
-
-The api does not currently require an api key but one may be required in the future.
-
-Fetching scenes require a stashdb id on the scene.
-Submitting markers does not require a stashid on the scene but it is recommended.
-
-### Installation 
-Move the `timestampTrade` directory into Stash's plugins directory, reload plugins.
-
-### Tasks
-* Submit - Submit markers for all scenes that have markers.
-* Sync - Fetch markers for all scenes with a stash id.
-* Post update hook - Fetch markers for that scene
\ No newline at end of file
diff --git a/plugins/timestampTrade/requirements.txt b/plugins/timestampTrade/requirements.txt
deleted file mode 100644
index 6945b333..00000000
--- a/plugins/timestampTrade/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-requests
-stashapp-tools
diff --git a/plugins/timestampTrade/timestampTrade.py b/plugins/timestampTrade/timestampTrade.py
deleted file mode 100644
index 13092caf..00000000
--- a/plugins/timestampTrade/timestampTrade.py
+++ /dev/null
@@ -1,120 +0,0 @@
-import stashapi.log as log
-from stashapi.stashapp import StashInterface
-import stashapi.marker_parse as mp
-import os
-import sys
-import requests
-import json
-import time
-import math
-
-per_page = 100
-request_s = requests.Session()
-
-def processScene(s):
-    if len(s['stash_ids']) == 0:
-        log.debug('no scenes to process')
-        return
-    skip_sync_tag_id = stash.find_tag('[Timestamp: Skip Sync]', create=True).get("id")
-    for sid in s['stash_ids']:
-        try:
-            if any(tag['id'] == str(skip_sync_tag_id) for tag in s['tags']):
-                log.debug('scene has skip sync tag')
-                return
-            log.debug('looking up markers for stash id: '+sid['stash_id'])
-            res = requests.post('https://timestamp.trade/get-markers/' + sid['stash_id'], json=s)
-            md = res.json()
-            if md.get('marker'):
-                log.info('api returned markers for scene: ' + s['title'] + ' marker count: ' + str(len(md['marker'])))
-                markers = []
-                for m in md['marker']:
-                    # log.debug('-- ' + m['name'] + ", " + str(m['start'] / 1000))
-                    marker = {}
-                    marker["seconds"] = m['start'] / 1000
-                    marker["primary_tag"] = m["tag"]
-                    marker["tags"] = []
-                    marker["title"] = m['name']
-                    markers.append(marker)
-                if len(markers) > 0:
-                    log.info('Saving markers')
-                    mp.import_scene_markers(stash, markers, s['id'], 15)
-            else:
-                log.debug('api returned no markers for scene: ' + s['title'])
-        except json.decoder.JSONDecodeError:
-            log.error('api returned invalid JSON for stash id: ' + sid['stash_id'])
-
-
-def processAll():
-    log.info('Getting scene count')
-    skip_sync_tag_id = stash.find_tag('[Timestamp: Skip Sync]', create=True).get("id")
-    count=stash.find_scenes(f={"stash_id":{"value":"","modifier":"NOT_NULL"},"has_markers":"false","tags":{"depth":0,"excludes":[skip_sync_tag_id],"modifier":"INCLUDES_ALL","value":[]}},filter={"per_page": 1},get_count=True)[0]
-    log.info(str(count)+' scenes to submit.')
-    i=0
-    for r in range(1,int(count/per_page)+1):
-        log.info('fetching data: %s - %s %0.1f%%' % ((r - 1) * per_page,r * per_page,(i/count)*100,))
-        scenes=stash.find_scenes(f={"stash_id":{"value":"","modifier":"NOT_NULL"},"has_markers":"false"},filter={"page":r,"per_page": per_page})
-        for s in scenes:
-            processScene(s)
-            i=i+1
-            log.progress((i/count))
-            time.sleep(2)
-
-def submit():
-    scene_fgmt = """title
-       details
-       url
-       date
-       performers{
-           name
-           stash_ids{
-              endpoint
-              stash_id
-           }
-       }
-       tags{
-           name
-       }
-       studio{
-           name
-           stash_ids{
-              endpoint
-              stash_id
-           }
-       }
-       stash_ids{
-           endpoint
-           stash_id
-       }
-       scene_markers{
-           title
-           seconds
-           primary_tag{
-              name
-           }
-       }"""
-    skip_submit_tag_id = stash.find_tag('[Timestamp: Skip Submit]', create=True).get("id")
-    count = stash.find_scenes(f={"has_markers": "true","tags":{"depth":0,"excludes":[skip_sync_tag_id],"modifier":"INCLUDES_ALL","value":[]}}, filter={"per_page": 1}, get_count=True)[0]
-    i=0
-    for r in range(1, math.ceil(count/per_page) + 1):
-        log.info('submitting scenes: %s - %s %0.1f%%' % ((r - 1) * per_page,r * per_page,(i/count)*100,))
-        scenes = stash.find_scenes(f={"has_markers": "true"}, filter={"page": r, "per_page": per_page},fragment=scene_fgmt)
-        for s in scenes:
-            log.debug("submitting scene: " + str(s))
-            request_s.post('https://timestamp.trade/submit-stash', json=s)
-            i=i+1
-            log.progress((i/count))
-            time.sleep(2)
-
-json_input = json.loads(sys.stdin.read())
-FRAGMENT_SERVER = json_input["server_connection"]
-stash = StashInterface(FRAGMENT_SERVER)
-if 'mode' in json_input['args']:
-    PLUGIN_ARGS = json_input['args']["mode"]
-    if 'submit' in PLUGIN_ARGS:
-        submit()
-    elif 'process' in PLUGIN_ARGS:
-        processAll()
-elif 'hookContext' in json_input['args']:
-    id=json_input['args']['hookContext']['id']
-    scene=stash.find_scene(id)
-    processScene(scene)
diff --git a/plugins/timestampTrade/timestampTrade.yml b/plugins/timestampTrade/timestampTrade.yml
deleted file mode 100644
index 1d4ebb26..00000000
--- a/plugins/timestampTrade/timestampTrade.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Timestamp Trade
-description: Sync Markers with timestamp.trade, a new database for sharing markers.
-version: 0.2
-url: https://github.com/stashapp/CommunityScripts/
-exec:
-  - python
-  - "{pluginDir}/timestampTrade.py"
-interface: raw
-hooks:
-  - name: Add Marker to Scene
-    description: Makes Markers checking against timestamp.trade
-    triggeredBy:
-      - Scene.Update.Post
-tasks:
-  - name: 'Submit'
-    description: Submit markers to timestamp.trade
-    defaultArgs:
-      mode: submit
-  - name: 'Sync'
-    description: Get markers for all scenes with a stashid
-    defaultArgs:
-      mode: process
diff --git a/plugins/titleFromFilename/README.md b/plugins/titleFromFilename/README.md
deleted file mode 100644
index 0f119250..00000000
--- a/plugins/titleFromFilename/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#  titleFromFilename
-Sets a scene's title
-
-## Requirements
-- Stash ( versions after the files refactor PR, API>31 )
-- Python 3.10
-- Requests Module (https://pypi.org/project/requests/)
-
-## Installation
-
-- Download the whole folder `titleFromFilename`
-- Place it in your **plugins** folder (where the `config.yml` is). If its not there create it
-- Reload plugins from stash (Settings > Plugins -> Reload Plugins)
-- titleFromFilename should appear
-
-## Usage
-When a scene is created the plugin will set the title to the filename.
-By default the file extension will not be added to the title.
-If you want to keep the file extension open `config.py` file and change `STRIP_EXT = True` to `STRIP_EXT = False`
-
-
diff --git a/plugins/titleFromFilename/config.py b/plugins/titleFromFilename/config.py
deleted file mode 100644
index 2586c84b..00000000
--- a/plugins/titleFromFilename/config.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# strip file extension from title
-STRIP_EXT = True
\ No newline at end of file
diff --git a/plugins/titleFromFilename/graphql.py b/plugins/titleFromFilename/graphql.py
deleted file mode 100644
index e5146da7..00000000
--- a/plugins/titleFromFilename/graphql.py
+++ /dev/null
@@ -1,99 +0,0 @@
-import json
-import sys
-
-import requests
-
-def exit_plugin(msg=None, err=None):
-    if msg is None and err is None:
-        msg = "plugin ended"
-    output_json = {"output": msg, "error": err}
-    print(json.dumps(output_json))
-    sys.exit()
-
-def doRequest(query, variables=None, port=9999, session=None, scheme="http", raise_exception=True):
-    # Session cookie for authentication
-    graphql_port = port
-    graphql_scheme = scheme
-    graphql_cookies = {
-        'session': session
-    }
-
-    graphql_headers = {
-        "Accept-Encoding": "gzip, deflate",
-        "Content-Type": "application/json",
-        "Accept": "application/json",
-        "Connection": "keep-alive",
-        "DNT": "1"
-    }
-    graphql_domain = 'localhost'
-    # Stash GraphQL endpoint
-    graphql_url = graphql_scheme + "://" + graphql_domain + ":" + str(graphql_port) + "/graphql"
-
-    json = {'query': query}
-    if variables is not None:
-        json['variables'] = variables
-    try:
-        response = requests.post(graphql_url, json=json,headers=graphql_headers, cookies=graphql_cookies, timeout=20)
-    except Exception as e:
-         exit_plugin(err=f"[FATAL] Exception with GraphQL request. {e}")
-    if response.status_code == 200:
-        result = response.json()
-        if result.get("error"):
-            for error in result["error"]["errors"]:
-                if raise_exception:
-                    raise Exception(f"GraphQL error: {error}")
-                else:
-                    log.LogError(f"GraphQL error: {error}")
-            return None
-        if result.get("data"):
-            return result.get("data")
-    elif response.status_code == 401:
-        exit_plugin(err="HTTP Error 401, Unauthorised.")
-    else:
-        raise ConnectionError(f"GraphQL query failed: {response.status_code} - {response.content}")
-
-def update_scene_title(scene_id, scene_title, port, session, scheme):
-    query = """
-    mutation UpdateSceneTitle($id: ID!, $title: String) {
-            sceneUpdate(
-                input: {id: $id, title: $title}
-                ) {
-                    title
-                  }
-    }
-    """
-    variables = {
-        "id": scene_id,
-        "title": scene_title
-    }
-    result = doRequest(query=query, variables=variables, port=port, session=session, scheme=scheme)
-    return result.get('sceneUpdate')
-
-def get_scene_base(scene_id, port, session, scheme):
-    query = """
-    query FindScene($id: ID!, $checksum: String) {
-        findScene(id: $id, checksum: $checksum) {
-            files {
-                basename
-            }
-        }
-    }
-    """
-    variables = {
-        "id": scene_id
-    }
-    result = doRequest(query=query, variables=variables, port=port, session=session, scheme=scheme)
-    return result.get('findScene')
-
-def get_api_version(port, session, scheme):
-    query = """
-    query SystemStatus {
-        systemStatus {
-            databaseSchema
-            appSchema
-        }
-    }
-    """
-    result = doRequest(query=query, port=port, session=session, scheme=scheme)
-    return result.get('systemStatus')
-
diff --git a/plugins/titleFromFilename/log.py b/plugins/titleFromFilename/log.py
deleted file mode 100644
index f3812522..00000000
--- a/plugins/titleFromFilename/log.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import sys
-
-
-# Log messages sent from a plugin instance are transmitted via stderr and are
-# encoded with a prefix consisting of special character SOH, then the log
-# level (one of t, d, i, w, e, or p - corresponding to trace, debug, info,
-# warning, error and progress levels respectively), then special character
-# STX.
-#
-# The LogTrace, LogDebug, LogInfo, LogWarning, and LogError methods, and their equivalent
-# formatted methods are intended for use by plugin instances to transmit log
-# messages. The LogProgress method is also intended for sending progress data.
-#
-
-def __prefix(level_char):
-	start_level_char = b'\x01'
-	end_level_char = b'\x02'
-
-	ret = start_level_char + level_char + end_level_char
-	return ret.decode()
-
-
-def __log(level_char, s):
-	if level_char == "":
-		return
-
-	print(__prefix(level_char) + s + "\n", file=sys.stderr, flush=True)
-
-
-def LogTrace(s):
-	__log(b't', s)
-
-
-def LogDebug(s):
-	__log(b'd', s)
-
-
-def LogInfo(s):
-	__log(b'i', s)
-
-
-def LogWarning(s):
-	__log(b'w', s)
-
-
-def LogError(s):
-	__log(b'e', s)
-
-
-def LogProgress(p):
-	progress = min(max(0, p), 1)
-	__log(b'p', str(progress))
diff --git a/plugins/titleFromFilename/requirements.txt b/plugins/titleFromFilename/requirements.txt
deleted file mode 100644
index f2293605..00000000
--- a/plugins/titleFromFilename/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-requests
diff --git a/plugins/titleFromFilename/titleFromFilename.py b/plugins/titleFromFilename/titleFromFilename.py
deleted file mode 100644
index e02e70fd..00000000
--- a/plugins/titleFromFilename/titleFromFilename.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import json
-import os
-import sys
-import time
-
-import config
-#import log
-import graphql
-
-API_VERSION_BF_FILES = 31  # APP/DB Schema version prior to files refactor PR
-MAX_RETRY_COUNT = 25
-SLEEP_RETRY = 0.5
-
-FRAGMENT = json.loads(sys.stdin.read())
-#log.LogDebug(json.dumps(FRAGMENT))
-FRAGMENT_SERVER = FRAGMENT["server_connection"]
-FRAGMENT_SCENE_ID = FRAGMENT["args"].get("hookContext")
-
-if FRAGMENT_SCENE_ID:
-    scene_id = FRAGMENT_SCENE_ID["id"]
-else:
-    graphql.exit_plugin("No ID found")
-
-graphql_port = FRAGMENT_SERVER['Port']
-graphql_scheme = FRAGMENT_SERVER['Scheme']
-graphql_session = FRAGMENT_SERVER.get('SessionCookie').get('Value')
-
-system_status = graphql.get_api_version(port=graphql_port,
-                                        session=graphql_session,
-                                        scheme=graphql_scheme)
-
-api_version = system_status.get("appSchema")
-
-basename = None
-
-if api_version > API_VERSION_BF_FILES:  # only needed for versions after files refactor
-    files_base = graphql.get_scene_base(scene_id=scene_id,
-                                        port=graphql_port,
-                                        session=graphql_session,
-                                        scheme=graphql_scheme)
-    if len(files_base["files"]) > 0:
-        basename = files_base["files"][0].get("basename")
-else:
-    graphql.exit_plugin(
-        f"Stash with API version:{api_version} is not supported. You need at least {API_VERSION_BF_FILES}"
-    )
-
-if basename is None:
-    graphql.exit_plugin("No basename found")  # file-less scene
-
-if config.STRIP_EXT:
-    basename = os.path.splitext(basename)[0]
-
-i = MAX_RETRY_COUNT
-while i >= 0:
-    #log.LogDebug(f"TitleFromFilename: Retry attempt {i}")
-    i -= 1
-    updated_scene = graphql.update_scene_title(scene_id,
-                                               basename,
-                                               port=graphql_port,
-                                               session=graphql_session,
-                                               scheme=graphql_scheme)
-    if updated_scene:
-        graphql.exit_plugin(
-            f"Scene title updated after {MAX_RETRY_COUNT - i} tries. Title:{updated_scene.get('title')}"
-        )
-    time.sleep(SLEEP_RETRY)
-
-graphql.exit_plugin("Error updating scene")
diff --git a/plugins/titleFromFilename/titleFromFilename.yml b/plugins/titleFromFilename/titleFromFilename.yml
deleted file mode 100644
index 468ed1c6..00000000
--- a/plugins/titleFromFilename/titleFromFilename.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: titleFromFilename
-description: Set a scene's title from it's filename
-url: https://github.com/stashapp/CommunityScripts
-version: 1.2
-exec:
-  - python
-  - "{pluginDir}/titleFromFilename.py"
-interface: raw
-hooks:
-  - name: hook_set_title_from_filename
-    description: Set the title of the scene to it's filename
-    triggeredBy:
-      - Scene.Create.Post
diff --git a/scripts/Sqlite_Renamer/README.md b/scripts/Sqlite_Renamer/README.md
deleted file mode 100644
index 6ef594ba..00000000
--- a/scripts/Sqlite_Renamer/README.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# SQLITE Renamer for Stash
-Using metadata from your database (SQLITE) to rename your file.
-
-## :exclamation: Important :exclamation:
-**By doing this, you will make definitive change to your Database and Files!** 
-###### (You can have a logfile (`USING_LOG`), so you can probably revert everything...)
-
-
-## Requirement
-- Python (Tested on Python v3.9.1 64bit, Win10)
-- ProgressBar2 Module (https://github.com/WoLpH/python-progressbar)
-- Stash Database (https://github.com/stashapp/stash)
-- Windows 10 ? (No idea if this work for all OS)
-
-## Usage
-
-- I recommend make a copy of your database. (Use "backup" in Stash Settings)
-- You need to set your Database path ([Line 9](Stash_Sqlite_Renamer.py#L9))
-- Replace things between [Line 270 - 301](Stash_Sqlite_Renamer.py#L270)
-
-## First Run
-Set `USE_DRY` to True ([Line 13](Stash_Sqlite_Renamer.py#L13)), by doing this nothing will be changed.
-- This will create a file `renamer_dryrun.txt` that show how the path/file will be changed.
-
-You can uncomment the break ([Line 254](Stash_Sqlite_Renamer.py#L254)), so it will stop after the first file.
-
-## Filename template
-Available: `$date` `$performer` `$title` `$studio` `$height`
-
-The script will replace these field with the data from the database.
-Exemple:
-| Template        | Result           
-| ------------- |:-------------:
-$title|Her Fantasy Ball.mp4
-$title $height|Her Fantasy Ball 1080p.mp4
-$date $title|2016-12-29 Her Fantasy Ball.mp4
-$date $performer - $title [$studio]|2016-12-29 Eva Lovia - Her Fantasy Ball [Sneaky Sex].mp4
-
-Note: 
-- A regex will remove illegal character for Windows.
-- If you path will be more than 240 characters, the script will try to reduce it. It will only use Date + Title.
-- If your height of the video is 2160/4320, it will be replace by `4k`/`8k` else it will be `height + p` (240p,720p,1080p...)
-- If the scene contains more than 3 performers, $performer will be replace by nothing.
-
-## Change scenes by tags
-
-If you want differents formats by tags. Create a dict with `tag` (The name of the tag in Stash) & `filename` (Filename template)
-```py
-tags_dict = {
-    '1': {
-        'tag': '1. JAV',
-        'filename': '$title'
-    },
-    '2': {
-        'tag': '1. Anime',
-        'filename': '$date $title'
-    }
-}
-
-for _, dict_section in tags_dict.items():
-    tag_name = dict_section.get("tag")
-    filename_template = dict_section.get("filename")
-    id_tags = gettingTagsID(tag_name)
-    if id_tags is not None:
-        id_scene = get_SceneID_fromTags(id_tags)
-        option_sqlite_query = "WHERE id in ({})".format(id_scene)
-        edit_db(filename_template,option_sqlite_query)
-        print("====================")
-```
-
-If you only want change 1 tag:
-```py
-id_tags = gettingTagsID('1. JAV')
-if id_tags is not None:
-    id_scene = get_SceneID_fromTags(id_tags)
-    option_sqlite_query = "WHERE id in ({})".format(id_scene)
-    edit_db("$date $performer - $title [$studio]",option_sqlite_query)
-```
-## Change all scenes
-
-```py
-edit_db("$date $performer - $title [$studio]")
-```
-
-## Optional SQLITE
-
-If you only want change a specific path, use the second parameter to `edit_db()`, it will add it to the sqlite query. [(Documentation ?)](https://www.tutorialspoint.com/sqlite/sqlite_where_clause.htm)
-
-Exemple (Only take file that have the path `E:\\Film\\R18`):
-```py
-option_sqlite_query = "WHERE path LIKE 'E:\\Film\\R18\\%'"
-edit_db("$date $performer - $title [$studio]",option_sqlite_query)
-```
-
diff --git a/scripts/Sqlite_Renamer/Stash_Sqlite_Renamer.py b/scripts/Sqlite_Renamer/Stash_Sqlite_Renamer.py
deleted file mode 100644
index 2de803db..00000000
--- a/scripts/Sqlite_Renamer/Stash_Sqlite_Renamer.py
+++ /dev/null
@@ -1,309 +0,0 @@
-import os
-import re
-import sqlite3
-import sys
-
-import progressbar
-
-# Your sqlite path
-DB_PATH = r"C:\Users\Winter\.stash\Full.sqlite"
-# Log keep a trace of OldPath & new_path. Could be useful if you want to revert everything. Filename: rename_log.txt
-USING_LOG = True
-# DRY_RUN = True | Will don't change anything in your database & disk.
-DRY_RUN = False
-# Only take female performer name
-FEMALE_ONLY = False
-# Print debug message
-DEBUG_MODE = True
-
-def logPrint(q):
-    if "[DEBUG]" in q and DEBUG_MODE == False:
-        return
-    print(q)
-
-logPrint("Database Path: {}".format(DB_PATH))
-if DRY_RUN == True:
-    try:
-        os.remove("rename_dryrun.txt")
-    except FileNotFoundError:
-        pass
-    logPrint("[DRY_RUN] DRY-RUN Enable")
-
-
-def gettingTagsID(name):
-    cursor.execute("SELECT id from tags WHERE name=?;", [name])
-    result = cursor.fetchone()
-    try:
-        id = str(result[0])
-        logPrint("[Tag] [{}] {}".format(id,name))
-    except:
-        id = None
-        logPrint("[Tag] Error when trying to get:{}".format(name))
-    return id
-
-
-def get_SceneID_fromTags(id):
-    cursor.execute("SELECT scene_id from scenes_tags WHERE tag_id=?;", [id])
-    record = cursor.fetchall()
-    logPrint("There is {} scene(s) with the tag_id {}".format(len(record), id))
-    array_ID = []
-    for row in record:
-        array_ID.append(row[0])
-    list = ",".join(map(str, array_ID))
-    return list
-
-
-def get_Perf_fromSceneID(id_scene):
-    perf_list = ""
-    cursor.execute("SELECT performer_id from performers_scenes WHERE scene_id=?;", [id_scene])
-    record = cursor.fetchall()
-    #logPrint("Performer in scene: ", len(record))
-    if len(record) > 3:
-        logPrint("More than 3 performers.")
-    else:
-        perfcount = 0
-        for row in record:
-            perf_id = str(row[0])
-            cursor.execute("SELECT name,gender from performers WHERE id=?;", [perf_id])
-            perf = cursor.fetchall()
-            if FEMALE_ONLY == True:
-                # Only take female gender
-                if str(perf[0][1]) == "FEMALE":
-                    perf_list += str(perf[0][0]) + " "
-                    perfcount += 1
-                else:
-                    continue
-            else:
-                perf_list += str(perf[0][0]) + " "
-                perfcount += 1
-    perf_list = perf_list.strip()
-    return perf_list
-
-
-def get_Studio_fromID(id):
-    cursor.execute("SELECT name from studios WHERE id=?;", [id])
-    record = cursor.fetchall()
-    studio_name = str(record[0][0])
-    return studio_name
-
-
-def makeFilename(scene_info, query):
-    # Query exemple:
-    # Available: $date $performer $title $studio $height
-    # $title                              == SSNI-000.mp4
-    # $date $title                        == 2017-04-27 Oni Chichi.mp4
-    # $date $performer - $title [$studio] == 2016-12-29 Eva Lovia - Her Fantasy Ball [Sneaky Sex].mp4
-    new_filename = str(query)
-    if "$date" in new_filename:
-        if scene_info.get('date') == "" or scene_info.get('date') is None:
-            new_filename = re.sub('\$date\s*', '', new_filename)
-        else:
-            new_filename = new_filename.replace("$date", scene_info["date"])
-
-    if "$performer" in new_filename:
-        if scene_info.get('performer') == "" or scene_info.get('performer') is None:
-            new_filename = re.sub('\$performer\s*', '', new_filename)
-        else:
-            new_filename = new_filename.replace("$performer", scene_info["performer"])
-
-    if "$title" in new_filename:
-        if scene_info.get('title') == "" or scene_info.get('title') is None:
-            new_filename = re.sub('\$title\s*', '', new_filename)
-        else:
-            new_filename = new_filename.replace("$title", scene_info["title"])
-
-    if "$studio" in new_filename:
-        if scene_info.get('studio') == "" or scene_info.get('studio') is None:
-            new_filename = re.sub('\$studio\s*', '', new_filename)
-        else:
-            new_filename = new_filename.replace("$studio", scene_info["studio"])
-
-    if "$height" in new_filename:
-        if scene_info.get('height') == "" or scene_info.get('height') is None:
-            new_filename = re.sub('\$height\s*', '', new_filename)
-        else:
-            new_filename = new_filename.replace("$height", scene_info["height"])
-    new_filename = re.sub('^\s*-\s*', '', new_filename)
-    new_filename = re.sub('\s*-\s*$', '', new_filename)
-    new_filename = re.sub('\[\W*]', '', new_filename)
-    new_filename = re.sub('\s{2,}', ' ', new_filename)
-    new_filename = new_filename.strip()
-    return new_filename
-
-
-def edit_db(query_filename, optionnal_query=None):
-    query = "SELECT id,path,title,date,studio_id,height from scenes;"
-    if optionnal_query is not None:
-        query = "SELECT id,path,title,date,studio_id,height from scenes {};".format(optionnal_query)
-    cursor.execute(query)
-    record = cursor.fetchall()
-    if len(record) == 0:
-        logPrint("[Warn] There is no scene to change with this query")
-        return
-    logPrint("Scenes numbers: {}".format(len(record)))
-    progressbar_Index = 0
-    progress = progressbar.ProgressBar(redirect_stdout=True).start(len(record))
-    for row in record:
-        progress.update(progressbar_Index + 1)
-        progressbar_Index += 1
-        scene_ID = str(row[0])
-        # Fixing letter (X:Folder -> X:\Folder)
-        current_path = re.sub(r"^(.):\\*", r"\1:\\", str(row[1]))
-        current_directory = os.path.dirname(current_path)
-        current_filename = os.path.basename(current_path)
-        file_extension = os.path.splitext(current_path)[1]
-        scene_title = str(row[2])
-        scene_date = str(row[3])
-        scene_Studio_id = str(row[4])
-        file_height = str(row[5])
-        # By default, title contains extensions.
-        scene_title = re.sub(file_extension + '$', '', scene_title)
-
-        performer_name = get_Perf_fromSceneID(scene_ID)
-
-        studio_name = ""
-        if (scene_Studio_id and scene_Studio_id != "None"):
-            studio_name = get_Studio_fromID(scene_Studio_id)
-
-        if file_height == '4320':
-            file_height = '8k'
-        else:
-            if file_height == '2160':
-                file_height = '4k'
-            else:
-                file_height = "{}p".format(file_height)
-
-        scene_info = {
-            "title": scene_title,
-            "date": scene_date,
-            "performer": performer_name,
-            "studio": studio_name,
-            "height": file_height
-        }
-        logPrint("[DEBUG] Scene information: {}".format(scene_info))
-        # Create the new filename
-        new_filename = makeFilename(scene_info, query_filename) + file_extension
-
-        # Remove illegal character for Windows ('#' and ',' is not illegal you can remove it)
-        new_filename = re.sub('[\\/:"*?<>|#,]+', '', new_filename)
-
-        # Replace the old filename by the new in the filepath
-        new_path = current_path.replace(current_filename, new_filename)
-
-        if len(new_path) > 240:
-            logPrint("[Warn] The Path is too long ({})".format(new_path))
-            # We only use the date and title to get a shorter file (eg: 2017-04-27 - Oni Chichi.mp4)
-            if scene_info.get("date"):
-                reducePath = len(current_directory + scene_info["title"] + scene_info["date"] + file_extension) + 3
-            else:
-                reducePath = len(current_directory + scene_info["title"] + file_extension) + 3
-            if reducePath < 240:
-                if scene_info.get("date"):
-                    new_filename = makeFilename(scene_info, "$date - $title") + file_extension
-                else:
-                    new_filename = makeFilename(scene_info, "$title") + file_extension
-                #new_path = re.sub('{}$'.format(current_filename), new_filename, current_path)
-                new_path = current_path.replace(current_filename, new_filename)
-                logPrint("Reduced filename to: {}", new_filename)
-            else:
-                logPrint("[Error] Can't manage to reduce the path, ID: {}".format(scene_ID))
-                continue
-
-        # Looking for duplicate filename
-        cursor.execute("SELECT id FROM scenes WHERE path LIKE ? AND NOT id=?;", ["%" + new_filename, scene_ID])
-        dupl_check = cursor.fetchall()
-        if len(dupl_check) > 0:
-            for dupl_row in dupl_check:
-                logPrint("[Error] Same filename: [{}]".format(dupl_row[0]))
-                logPrint("[{}] - {}\n".format(dupl_row[0], new_filename),
-                      file=open("renamer_duplicate.txt", "a", encoding='utf-8'))
-            logPrint("\n")
-            continue
-
-        logPrint("[DEBUG] Filename: {} -> {}".format(current_filename, new_filename))
-        logPrint("[DEBUG] Path: {} -> {}".format(current_path, new_path))
-        if (new_path == current_path):
-            logPrint("[DEBUG] File already good.\n")
-            continue
-        else:
-            #
-            # THIS PART WILL EDIT YOUR DATABASE, FILES (be careful and know what you do)
-            #
-            # Windows Rename
-            if (os.path.isfile(current_path) == True):
-                if DRY_RUN == False:
-                    os.rename(current_path, new_path)
-                    if (os.path.isfile(new_path) == True):
-                        logPrint("[OS] File Renamed! ({})".format(current_filename))
-                        if USING_LOG == True:
-                            print("{}|{}|{}\n".format(scene_ID, current_path, new_path), file=open("rename_log.txt", "a", encoding='utf-8'))
-
-                        # Database rename
-                        cursor.execute("UPDATE scenes SET path=? WHERE id=?;", [new_path, scene_ID])
-                        sqliteConnection.commit()
-                        logPrint("[SQLITE] Datebase Updated!")
-                    else:
-                        logPrint("[OS] File failed to rename ? ({})".format(current_filename))
-                        print("{} -> {}\n".format(current_path,new_path), file=open("renamer_fail.txt", "a", encoding='utf-8'))
-                else:
-                    logPrint("[DRY_RUN][OS] File should be renamed")
-                    print("{} -> {}\n".format(current_path, new_path), file=open("renamer_dryrun.txt", "a", encoding='utf-8'))
-            else:
-                logPrint("[OS] File don't exist in your Disk/Drive ({})".format(current_path))
-            logPrint("\n")
-        # break
-    progress.finish()
-    if DRY_RUN == False:
-        sqliteConnection.commit()
-    return
-
-
-try:
-    sqliteConnection = sqlite3.connect(DB_PATH)
-    cursor = sqliteConnection.cursor()
-    logPrint("Python successfully connected to SQLite\n")
-except sqlite3.Error as error:
-    logPrint("FATAL SQLITE Error: ", error)
-    input("Press Enter to continue...")
-    sys.exit(1)
-
-# THIS PART IS PERSONAL THINGS, YOU SHOULD CHANGE THING BELOW :)
-
-# Select Scene with Specific Tags
-tags_dict = {
-    '1': {
-        'tag': '!1. JAV',
-        'filename': '$title'
-    },
-    '2': {
-        'tag': '!1. Anime',
-        'filename': '$date $title'
-    },
-    '3': {
-        'tag': '!1. Western',
-        'filename': '$date $performer - $title [$studio]'
-    }
-}
-
-for _, dict_section in tags_dict.items():
-    tag_name = dict_section.get("tag")
-    filename_template = dict_section.get("filename")
-    id_tags = gettingTagsID(tag_name)
-    if id_tags is not None:
-        id_scene = get_SceneID_fromTags(id_tags)
-        option_sqlite_query = "WHERE id in ({}) AND path LIKE 'E:\\Film\\R18\\%'".format(id_scene)
-        edit_db(filename_template, option_sqlite_query)
-        logPrint("====================")
-
-# Select ALL scenes
-#edit_db("$date $performer - $title [$studio]")
-
-# END OF PERSONAL THINGS
-
-if DRY_RUN == False:
-    sqliteConnection.commit()
-cursor.close()
-sqliteConnection.close()
-logPrint("The SQLite connection is closed")
-# Input if you want to check the console.
-input("Press Enter to continue...")
diff --git a/scripts/kodi-helper/README.md b/scripts/kodi-helper/README.md
deleted file mode 100644
index 80fd17a9..00000000
--- a/scripts/kodi-helper/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Kodi helper
-
-## Features
-
-Kodi helper generates files that can be imported with Kodi, to integrate your stash metadata into your Kodi system.
-
-Kodi helper can generate nfo files alongside the source files, or in a specific directory. For more information on how Kodi uses nfo files, see the [Kodi wiki page](https://kodi.wiki/view/NFO_files).
-
-Kodi helper can also generate strm files, along with nfo files. For more information on how Kodi uses strm files, see the [Kodi wiki page](https://kodi.wiki/view/Internet_video_and_audio_streams).
-
-## Configuration
-
-Modify `config.py` to enter values for `API_KEY` and `SERVER_URL`.
-
-## Generating NFO files
-
-`python kodi-helper.py generate-nfo [--inline | --outdir=<output directory>] [--overwrite] [--filter=<filter string>] [--preserve-path --truncate-prefix=<prefix>] [--genre <genre> ...]`
-
-All nfo files will be named using the same basename as the source file. For example: `foo.mp4` will have `foo.nfo` generated. 
-
-If `--inline` is used, then nfo files will be created alongside the source files. This requires the source files being accessible using the `path` stored by stash. This usually means that the script must be run on the same machine as stash, and if the stash libraries are relative, then the script must be run from the same directory as stash.
-
-If `--outdir` is provided, then all nfo files will be created in the provided directory. Note that this may cause issues if there are source files with the same basename, as they will generate the same filename. If `--preserve-path` is included, then the full path of the source file will be added to the directory provided with `--outdir`. The path can be stripped of a prefix by providing a `--truncate-prefix` parameter.
-
-The nfo files will not be overwritten by default. This can be overridden with `--overwrite`.
-
-nfo files will be generated for all scenes in the system. The scenes can be filtered by providing the `--filter` parameter. The filter parameter must be a JSON graphql string. For example:
-
-`--filter='{"path": { "value": "foo", "modifier": "INCLUDES" }}'`
-
-This will only generate for files that include `foo` in the path.
-
-Genres can be added to nfo files by providing `--genre` parameters. More than one `--genre <genre>` parameter may be provided (ie `--genre=foo --genre=bar`).
-
-## Generating STRM files
-
-`python kodi-helper.py generate-strm --outdir=<output directory> [--preserve-path --truncate-prefix=<prefix>] [--use-source-filenames] [--overwrite] [--filter=<filter string>] [--genre <genre> ...]`
-
-This will generate strm and nfo files.
-
-All strm files will be named by the scene ID in stash. ie `30.strm`. If `--use-source-filenames` is provided, then the strm and nfo filenames will be named by the source file instead.
-
-All files will be generated in the directory provided by `--outdir`. If `--preserve-path` is included, then the full path of the source file will be added to the directory provided with `--outdir`. The path can be stripped of a prefix by providing a `--truncate-prefix` parameter. 
-
-The generated files will not be overwritten by default. This can be overridden with `--overwrite`.
-
-As per generating nfo files, the scenes to generate for can be filtered using the `--filter` parameter.
diff --git a/scripts/kodi-helper/config.py b/scripts/kodi-helper/config.py
deleted file mode 100644
index 017591f3..00000000
--- a/scripts/kodi-helper/config.py
+++ /dev/null
@@ -1,2 +0,0 @@
-api_key = ""
-server_url = "http://localhost:9999/graphql"
diff --git a/scripts/kodi-helper/kodi-helper.py b/scripts/kodi-helper/kodi-helper.py
deleted file mode 100644
index 2e79f4d5..00000000
--- a/scripts/kodi-helper/kodi-helper.py
+++ /dev/null
@@ -1,335 +0,0 @@
-import argparse
-import os
-import requests
-import math
-import re
-import json
-
-import config
-
-BATCH_SIZE = 100
-
-def parseArgs():
-    parser = argparse.ArgumentParser(description="Generate nfo and strm files for Kodi integration.")
-    parser.add_argument("mode", metavar="MODE", choices=["generate-nfo", "generate-strm"], help="generate-nfo or generate-strm")
-    parser.add_argument("--inline", action="store_true", help="Generate nfo files along side video files")
-    parser.add_argument("--outdir", metavar="<output directory>", help="Generate files in <outdir>")
-    parser.add_argument("--preserve-path", action="store_true", help="Include source file directory structure in output directory (with --outdir only)")
-    parser.add_argument("--truncate-prefix", type=str, metavar="<path prefix>", help="Remove prefix from output directory (with --preserve-path only)")
-    parser.add_argument("--use-source-filenames", action="store_true", help="Use source filenames for strm files instead of stash id")
-    parser.add_argument("--overwrite", action="store_true", help="Overwrite nfo/strm files if already present")
-    parser.add_argument("--filter", metavar="<filter string>", help="JSON graphql string to filter scenes with")
-    parser.add_argument("--genre", metavar="<genre>", help="Genre to assign. May be included multiple times", action="append")
-    return parser.parse_args()
-
-# raw plugins may accept the plugin input from stdin, or they can elect
-# to ignore it entirely. In this case it optionally reads from the
-# command-line parameters.
-def main():
-    args = parseArgs()
-    
-    if args.mode == "generate-nfo":
-        generateNFOFiles(args)
-    elif args.mode == "generate-strm":
-        generateSTRMFiles(args)
-
-
-def generateNFOFiles(args):
-    if not args.inline and args.outdir == "":
-        print("--outdir or --inline must be set\n")
-        return
-
-    filter = args.filter or ""
-    if filter != "":
-        filter = json.loads(filter)
-    else:
-        filter = {}
-
-    total = getCount(filter)
-    pages = math.ceil(total / BATCH_SIZE)
-
-    i = 1
-    while i <= pages:
-        print("Processing page {} of {}".format(i, pages))
-        scenes = getScenes(i, filter)
-
-        for scene in scenes:
-            # don't regenerate if file already exists and not overwriting
-            output = getOutputNFOFile(scene["path"], args)
-            if not args.overwrite and os.path.exists(output):
-                continue
-            
-            nfo = generateNFO(scene, args) 
-            writeFile(output, nfo, True)
-
-        i += 1
-
-def generateSTRMFiles(args):
-    if args.outdir == "":
-        print("--outdir must be set\n")
-        return
-
-    filter = args.filter or ""
-    if filter != "":
-        filter = json.loads(filter)
-    else:
-        filter = {}
-
-    total = getCount(filter)
-    pages = math.ceil(total / BATCH_SIZE)
-
-    i = 1
-    while i <= pages:
-        print("Processing page {} of {}".format(i, pages))
-        scenes = getScenes(i, filter)
-
-        for scene in scenes:
-            name = ""
-            outdir = getOutputDir(scene["path"], args)
-            
-            if args.use_source_filenames:
-                name = basename(os.path.splitext(scene["path"])[0])
-            else:
-                name = scene["id"]
-            
-            name = os.path.join(outdir, name)
-
-            # don't regenerate if file already exists and not overwriting
-            strmOut = name + ".strm"
-            if args.overwrite or not os.path.exists(strmOut):
-                data = generateSTRM(scene)
-                writeFile(strmOut, data, False)
-
-            output = name + ".nfo"
-            if args.overwrite or not os.path.exists(output):
-                nfo = generateNFO(scene, args) 
-                writeFile(output, nfo, True)
-
-        i += 1
-
-def basename(f):
-    f = os.path.normpath(f)
-    return os.path.basename(f)
-
-def getOutputSTRMFile(sceneID, args):
-    return os.path.join(args.outdir, "{}.strm".format(sceneID))
-
-def getOutputDir(sourceFile, args):
-    ret = args.outdir
-
-    if args.preserve_path:
-        if args.truncate_prefix != None:
-            toRemove = args.truncate_prefix
-            if sourceFile.startswith(toRemove):
-                sourceFile = sourceFile[len(toRemove):]
-
-        sourceFile = os.path.normpath(sourceFile)
-        ret = os.path.join(args.outdir, os.path.dirname(sourceFile))
-
-    return ret
-
-def getOutputNFOFile(sourceFile, args):
-    if args.inline:
-        # just replace the extension
-        return os.path.splitext(sourceFile)[0]+".nfo"
-
-    outdir = getOutputDir(sourceFile, args)
-
-    ret = os.path.join(outdir, basename(sourceFile))
-    return os.path.splitext(ret)[0]+".nfo"
-
-def getCount(sceneFilter):
-    query = """
-query findScenes($filter: FindFilterType!, $scene_filter: SceneFilterType!) {
-  findScenes(filter: $filter, scene_filter: $scene_filter) {
-    count
-  }
-}
-"""
-    variables = {
-        'filter': {
-            'per_page': 0,
-        },
-        'scene_filter': sceneFilter
-    }
-
-    result = __callGraphQL(query, variables)
-
-    return result["findScenes"]["count"]
-
-
-def getScenes(page, sceneFilter):
-    query = """
-query findScenes($filter: FindFilterType!, $scene_filter: SceneFilterType!) {
-  findScenes(filter: $filter, scene_filter: $scene_filter) {
-    scenes {
-      id
-      title
-      path
-      rating
-      details
-      date
-      oshash
-      paths {
-        screenshot
-        stream
-      }
-      studio {
-        name
-        image_path
-      }
-      performers {
-        name
-        image_path
-      }
-      tags {
-        name
-      }
-      movies {
-        movie {
-          name
-        }
-      }
-    }
-  }
-}
-"""
-
-    variables = {
-        'filter': {
-            'per_page': BATCH_SIZE,
-            'page': page,
-        },
-        'scene_filter': sceneFilter
-    }
-
-    result = __callGraphQL(query, variables)
-
-    return result["findScenes"]["scenes"]
-
-def addAPIKey(url):
-    if config.api_key:
-        return url + "&apikey=" + config.api_key
-    return url
-
-def getSceneTitle(scene):
-    if scene["title"] != None and scene["title"] != "":
-        return scene["title"]
-    
-    return basename(scene["path"])
-
-def generateSTRM(scene):
-    return scene["paths"]["stream"]
-
-def generateNFO(scene, args):
-    ret = """
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<movie>
-    <title>{title}</title>
-    <userrating>{rating}</userrating>
-    <plot>{details}</plot>
-    <uniqueid type="stash">{id}</uniqueid>
-    {tags}
-    <premiered>{date}</premiered>
-    <studio>{studio}</studio>
-    {performers}
-    {thumbs}
-    {fanart}
-    {genres}
-</movie>
-"""
-    tags = ""
-    for t in scene["tags"]:
-        tags = tags + """
-    <tag>{}</tag>""".format(t["name"])
-
-    rating = ""
-    if scene["rating"] != None:
-        rating = scene["rating"]
-
-    date = ""
-    if scene["date"] != None:
-        date = scene["date"]
-
-    studio = ""
-    logo = ""
-    if scene["studio"] != None:
-        studio = scene["studio"]["name"]
-        logo = scene["studio"]["image_path"]
-        if not logo.endswith("?default=true"):
-            logo = addAPIKey(logo)
-        else:
-            logo = ""
-
-    performers = ""
-    i = 0
-    for p in scene["performers"]:
-        thumb = addAPIKey(p["image_path"])
-        performers = performers + """
-    <actor>
-        <name>{}</name>
-        <role></role>
-        <order>{}</order>
-        <thumb>{}</thumb>
-    </actor>""".format(p["name"], i, thumb)
-        i += 1
-
-    thumbs = [
-        """<thumb aspect="poster">{}</thumb>""".format(addAPIKey(scene["paths"]["screenshot"]))
-    ]
-    fanart = [
-        """<thumb>{}</thumb>""".format(addAPIKey(scene["paths"]["screenshot"]))
-    ]
-    if logo != "":
-        thumbs.append("""<thumb aspect="clearlogo">{}</thumb>""".format(logo))
-        fanart.append("""<thumb>{}</thumb>""".format(logo))
-
-    fanart = """<fanart>{}</fanart>""".format("\n".join(fanart))
-
-    genres = []
-    if args.genre != None:
-        for g in args.genre:
-            genres.append("<genre>{}</genre>".format(g))
-
-    ret = ret.format(title = getSceneTitle(scene), rating = rating, id = scene["id"], tags = tags, date = date, studio = studio, performers = performers, details = scene["details"] or "", thumbs = "\n".join(thumbs), fanart = fanart, genres = "\n".join(genres))
-
-    return ret
-
-def writeFile(fn, data, useUTF):
-    encoding = None
-    if useUTF:
-        encoding = "utf-8-sig"
-    os.makedirs(os.path.dirname(fn), exist_ok=True)
-    f = open(fn, "w", encoding=encoding)
-    f.write(data)
-    f.close()
-
-def __callGraphQL(query, variables = None):
-    headers = {
-		"Accept-Encoding": "gzip, deflate, br",
-		"Content-Type": "application/json",
-		"Accept": "application/json",
-		"Connection": "keep-alive",
-		"DNT": "1",
-        "ApiKey": config.api_key
-    }
-
-    json = {}
-    json['query'] = query
-    if variables != None:
-        json['variables'] = variables
-    
-    # handle cookies
-    response = requests.post(config.server_url, json=json, headers=headers)
-    
-    if response.status_code == 200:
-        result = response.json()
-        if result.get("error", None):
-            for error in result["error"]["errors"]:
-                raise Exception("GraphQL error: {}".format(error))
-        if result.get("data", None):
-            return result.get("data")
-    else:
-        raise Exception("GraphQL query failed:{} - {}. Query: {}. Variables: {}".format(response.status_code, response.content, query, variables))
-
-main()
\ No newline at end of file
diff --git a/scripts/stash-watcher/Dockerfile b/scripts/stash-watcher/Dockerfile
deleted file mode 100644
index 8ccda1c5..00000000
--- a/scripts/stash-watcher/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM python:3.11.5-alpine3.18
-
-WORKDIR /usr/src/app
-
-COPY requirements.txt ./
-RUN pip install --no-cache-dir -r requirements.txt
-
-COPY . .
-
-#Create an empty config file so that we can just use the defaults.  This file can be mounted if it needs to be
-#modified
-RUN touch /config.toml
-
-#Apparently using -u causes the logs to output immediately
-CMD [ "python", "-u", "./watcher.py", "/config.toml" ]
diff --git a/scripts/stash-watcher/README.md b/scripts/stash-watcher/README.md
deleted file mode 100644
index 8dc518c6..00000000
--- a/scripts/stash-watcher/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Stash Watcher
-Stash Watcher is a service that watches your Stash library directories for changes and then triggers a Metadata Scan when new files are added to those directories.  It then waits a period of time before triggering another scan to keep Stash from constantly scanning if you're making many changes.  Note that updates are watched during that window; the update is merely delayed.
-
-## Configuration
-Modify a [config.toml](config.toml) for your environment.  The defaults match the Stash docker defaults, so they may work for you.  You are likely to have to update `Paths` and possibly `ApiKey`.  Check out [default.toml](default.toml) for all configurable options.  You can configure:
-* Url (host, domain, port)
-* Api Key (if your Stash is password protected)
-* Paths
-* Timeout - the minimum time between Metadata Scans
-* Scan options - The options for the Metadata Scan
-* Enable Polling - see [SMB/CIFS Shares](#smbcifs-shares)
-
-## Running Stash Watcher
-You can run Stash Watcher directly from the [command line](#running-directly-with-python) or from inside [docker](#running-with-docker).  
-
-### Running directly with python
-The directs below are for linux, but they should work on other operating systems.
-#### Step 0: Create a Virtual Environment (optional, but recommended)
-```
-python -m venv venv
-. venv/bin/activate
-```
-#### Step 1: Install dependencies
-```
-pip install -r requirements.txt
-```
-#### Step 2: Create/Modify Configuration
-Following the directions in [Configuration](#configuration), modify [config.toml](config.toml) if necessary.
-
-#### Step 3: Execute 
-```
-python watcher.py path_to_config.toml
-```
-That's it.  Now when you make changes to watched directories, Stash Watcher will make an API call to trigger a metadata scan.
-
-### Running with docker
-There is currently no published docker image, so you'll have to build it yourself.  The easiest way to do this is with docker compose:
-```
-version: "3.4"
-services:
-  stash-watcher:
-  container_name: stash-watcher
-  build: <path_to_stash-watcher_directory>
-  volumes:
-    #This is only required if you have to modify config.toml (if the defaults are fine you don't have to map this file)
-    - ./config.toml:/config.toml:ro
-    #This is the path to your stash content.  If you have multiple paths, map them here
-    - /stash:/data:ro
-  restart: unless-stopped
-```
-
-Then you can run
-```
-docker compose up -d --build
-```
-To start the watcher.
-
-## Notes
-### SMB/CIFS shares
-The library ([watchdog](https://pypi.org/project/watchdog/)) that Stash Watcher uses has some limitations when dealing with SMB/CIFS shares.  If you encounter some problems, set [PollInterval in your config.toml](https://github.com/DuctTape42/CommunityScripts/blob/main/scripts/stash-watcher/defaults.toml#L28).  This is a lot less efficient than the default mechanism, but is more likely to work.
-
-In my testing (this is from Windows to a share on another machine), if the machine running Stash Watcher wrote to the share, then the normal watcher worked fine.  However, if a different machine wrote to the share, then Stash Watcher did not see the write unless I used Polling.
-
diff --git a/scripts/stash-watcher/config.toml b/scripts/stash-watcher/config.toml
deleted file mode 100644
index d478dbf3..00000000
--- a/scripts/stash-watcher/config.toml
+++ /dev/null
@@ -1,16 +0,0 @@
-#This is the information about your stash instance
-[Host]
-#The scheme (either http or https)
-Scheme = http
-#The full hostname for your stash instance.  If you're running in docker you might want the
-#service name and not localhost here.
-Host = localhost
-#The port number for your stash instance
-Port = 9999
-#The api key, if your stash instance is password protected
-ApiKey = 
-
-#Configuration for the listener itself
-[Config]
-#A comma separated list of paths to watch.
-Paths = /data
diff --git a/scripts/stash-watcher/defaults.toml b/scripts/stash-watcher/defaults.toml
deleted file mode 100644
index a110845d..00000000
--- a/scripts/stash-watcher/defaults.toml
+++ /dev/null
@@ -1,48 +0,0 @@
-#This is the information about your stash instance
-[Host]
-#The scheme (either http or https)
-Scheme = http
-#The full hostname for your stash instance.  If you're running in docker you might want the
-#service name and not localhost here.
-Host = localhost
-#The port number for your stash instance
-Port = 9999
-#The api key, if your stash instance is password protected
-ApiKey = 
-
-#Configuration for the listener itself
-[Config]
-#A comma separated list of paths to watch.
-Paths = /data
-#The minimum time to wait between triggering scans
-Cooldown = 300
-#A list of file extensions to watch.  If this is omitted, it uses the extensions that are defined
-#in your Stash library (for videos, images, and galleries)
-Extensions =
-#If this is set to a non-zero numeric value, this forces the use of polling to
-#determine file system changes.  If it is left blank, then the OS appropriate
-#mechanism is used.  This is much less efficient than the OS mechanism, so it
-#should be used with care.  The docs claim that this is required to watch SMB
-#shares, though in my testing I could watch them on Windows with the regular
-#WindowsApiObserver
-PollInterval=
-#This enables debug logging
-Debug=
-
-#Options for the Stash Scan.  Stash defaults to everything disabled, so this is the default
-#Generate options that match up with what we can do in Scan
-[ScanOptions]
-#"Generate scene covers" from the UI
-Covers=true
-#"Generate previews" from the UI
-Previews=true
-#"Generate animated image previews" from the UI
-ImagePreviews=false
-#"Generate scrubber sprites" from the UI
-Sprites=false
-#"Generate perceptual hashes" from the UI
-Phashes=true
-#"Generate thumbnails for images" from the UI
-Thumbnails=true
-#"Generate previews for image clips" from the UI
-ClipPreviews=false
diff --git a/scripts/stash-watcher/requirements.txt b/scripts/stash-watcher/requirements.txt
deleted file mode 100644
index d1fe8a2a..00000000
--- a/scripts/stash-watcher/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-argparse
-stashapp-tools
-watchdog
diff --git a/scripts/stash-watcher/watcher.py b/scripts/stash-watcher/watcher.py
deleted file mode 100644
index 5eb8328f..00000000
--- a/scripts/stash-watcher/watcher.py
+++ /dev/null
@@ -1,240 +0,0 @@
-#!/usr/bin/python -w
-import argparse
-import configparser
-import time
-import os
-from threading import Lock, Condition
-from watchdog.observers import Observer
-from watchdog.observers.polling import PollingObserver
-from watchdog.events import PatternMatchingEventHandler
-from stashapi.stashapp import StashInterface
-import logging
-import sys
-from enum import Enum
-
-#the type of watcher being used; controls how to interpret the events
-WatcherType = Enum('WatcherType', ['INOTIFY', 'WINDOWS', 'POLLING', 'KQUEUE'])
-
-#Setup logger
-logger = logging.getLogger("stash-watcher")
-logger.setLevel(logging.INFO)
-ch = logging.StreamHandler()
-ch.setLevel(logging.INFO)
-ch.setFormatter(logging.Formatter("%(asctime)s %(message)s"))
-logger.addHandler(ch)
-
-#This signals that we should 
-shouldUpdate = False
-mutex = Lock()
-signal = Condition(mutex)
-
-modifiedFiles = {}
-
-
-currentWatcherType = None
-
-
-def log(msg):
-    logger.info(msg)
-
-def debug(msg):
-    logger.debug(msg)
-
-def handleEvent(event):
-    global shouldUpdate
-    global currentWatcherType
-    debug("========EVENT========")
-    debug(str(event))
-    #log(modifiedFiles)
-    #Record if the file was modified.  When a file is closed, see if it was modified.  If so, trigger
-    shouldTrigger = False
-
-    if event.is_directory == True:
-        return
-    #Depending on the watcher type, we have to handle these events differently
-    if currentWatcherType == WatcherType.WINDOWS:
-        #On windows here's what happens:
-        # File moved into a watched directory - Created Event
-        # File moved out of a watched directory - Deleted Event
-        # Moved within a watched directory (src and dst in watched directory) - Moved event
-        
-        # echo blah > foo.mp4 - Created then Modified
-        # copying a small file - Created then Modified
-        # copying a large file - Created then two (or more) Modified events (appears to be one when the file is created and another when it's finished)
-
-        #It looks like you can get an optional Created Event and then 
-        #either one or two Modified events.  You can also get Moved events
-
-        #For local files on Windows, they can't be opened if they're currently
-        #being written to.  Therefore, every time we get an event, attempt to
-        #open the file.  If we're successful, assume the write is finished and
-        #trigger the update.  Otherwise wait until the next event and try again
-        if event.event_type == "created" or event.event_type == "modified":
-            try:
-                with open(event.src_path) as file:
-                    debug("Successfully opened file; triggering")
-                    shouldTrigger = True
-            except:
-                pass
-
-        if event.event_type == "moved":
-            shouldTrigger = True
-    elif currentWatcherType == WatcherType.POLLING:
-        #Every interval you get 1 event per changed file
-        #  - If the file was not present in the previous poll, then Created
-        #  - If the file was present and has a new size, then Modified
-        #  - If the file was moved within the directory, then Moved
-        #  - If the file is gone, then deleted
-        #
-        # For now, just trigger on the created event.  In the future, create
-        # a timer at 2x polling interval.  Reschedule the timer on each event
-        # when it fires, trigger the update.
-        if event.event_type == "moved" or event.event_type == "created":
-            shouldTrigger = True
-    #Until someone tests this on mac, just do what INOTIFY does
-    elif currentWatcherType == WatcherType.INOTIFY or currentWatcherType == WatcherType.KQUEUE:
-        if event.event_type == "modified":
-            modifiedFiles[event.src_path] = 1
-        #These are for files being copied into the target
-        elif event.event_type == "closed":
-            if event.src_path in modifiedFiles:
-                del modifiedFiles[event.src_path]
-                shouldTrigger = True
-        #For download managers and the like that write to a temporary file and then move to the destination (real)
-        #path.  Note that this actually triggers if the destination is in the watched location, and not just if it's
-        #moved out of a watched directory
-        elif event.event_type == "moved":
-            shouldTrigger = True
-    else:
-        print("Unknown watcher type " + str(currentWatcherType))
-        sys.exit(1)
-
-    #Trigger the update
-    if shouldTrigger:
-        debug("Triggering updates")
-        with mutex:
-            shouldUpdate = True
-            signal.notify()
-
-
-def main(stash, scanFlags, paths, extensions, timeout, pollInterval):
-    global shouldUpdate
-    global currentWatcherType
-
-    if len(extensions) == 1 and extensions[0] == "*":
-        patterns = ["*"]
-    else:
-        patterns = list(map(lambda x : "*." + x, extensions))
-    eventHandler = PatternMatchingEventHandler(patterns, None, False, True)
-    eventHandler.on_any_event = handleEvent
-    observer = Observer()
-    observerName = type(observer).__name__
-    if pollInterval != None and pollInterval > 0:
-        currentWatcherType = WatcherType.POLLING
-        observer = PollingObserver()
-    elif observerName == "WindowsApiObserver":
-        currentWatcherType = WatcherType.WINDOWS
-    elif observerName == "KqueueObserver":
-        currentWatcherType = WatcherType.KQUEUE
-    elif observerName == "InotifyObserver":
-        currentWatcherType = WatcherType.INOTIFY
-    else:
-        print("Unknown watcher type " + str(observer))
-        sys.exit(1)
-        
-    debug(str(observer))
-    for path in paths:
-        observer.schedule(eventHandler, path, recursive=True)
-    observer.start()
-    try:
-        while True:
-            with mutex:
-                while not shouldUpdate:
-                    signal.wait()
-                shouldUpdate = False
-            log("Triggering stash scan")
-            stash.metadata_scan(flags = scanFlags)
-            log("Sleeping for " + str(timeout) + " seconds")
-            time.sleep(timeout)
-    except KeyboardInterrupt:
-        observer.stop()
-        observer.join()
-
-def listConverter(item):
-    debug("listConverter(" + str(item) + ")")
-    if not item:
-        return None
-    listItems = [i.strip() for i in item.split(',')]
-    if not listItems or (len(listItems) == 1 and not listItems[0]):
-        return None
-    return listItems
-
-def makeArgParser():
-    parser = argparse.ArgumentParser(description='Stash file watcher')
-    parser.add_argument('config_path', nargs=1, help='Config file path (toml)')
-    return parser
-
-def parseConfig(path):
-    config = configparser.ConfigParser(converters={'list': listConverter })
-    
-
-    #Load the defaults first
-    defaults_path = os.path.join(os.path.dirname('__file__'), 'defaults.toml')
-    config.read(defaults_path)
-
-    #Now read the user config
-    config.read(path)
-
-    return config
-
-if __name__ == '__main__':
-    #Parse the arguments
-    parser = makeArgParser()
-    args = parser.parse_args()
-    configPath = args.config_path
-    config = parseConfig(configPath)
-
-    #Set up Stash
-    stashArgs = {
-        "scheme": config["Host"]["Scheme"],
-        "host": config["Host"]["Host"],
-        "port": config["Host"]["Port"]
-        }
-
-    if config["Host"]["ApiKey"]:
-        stashArgs["ApiKey"] = config["Host"]["ApiKey"]
-
-    stash = StashInterface(stashArgs)
-    
-    #And now the flags for the scan
-    scanFlags = {
-            "scanGenerateCovers": config["ScanOptions"].getboolean("Covers"),
-            "scanGeneratePreviews": config["ScanOptions"].getboolean("Previews"),
-            "scanGenerateImagePreviews": config["ScanOptions"].getboolean("ImagePreviews"),
-            "scanGenerateSprites": config["ScanOptions"].getboolean("Sprites"),
-            "scanGeneratePhashes": config["ScanOptions"].getboolean("Phashes"),
-            "scanGenerateThumbnails": config["ScanOptions"].getboolean("Thumbnails"),
-            "scanGenerateClipPreviews": config["ScanOptions"].getboolean("ClipPreviews")
-            }
-
-    paths = config.getlist("Config", "Paths")
-    timeout = config["Config"].getint("Cooldown")
-
-    #If the extensions are in the config, use them.  Otherwise pull them from stash.
-    extensions = config.getlist('Config', 'Extensions')
-    if not extensions:
-        stashConfig = stash.get_configuration()
-        extensions = stashConfig['general']['videoExtensions'] + stashConfig['general']['imageExtensions'] + stashConfig['general']['galleryExtensions']
-
-    pollIntervalStr = config.get('Config', 'PollInterval')
-    if pollIntervalStr:
-        pollInterval = int(pollIntervalStr)
-    else:
-        pollInterval = None
-
-    if config.get('Config', 'Debug') == "true":
-        logger.setLevel(logging.DEBUG)
-        ch.setLevel(logging.DEBUG)
-
-
-    main(stash, scanFlags, paths, extensions, timeout, pollInterval)
diff --git a/stable/CropperJS.zip b/stable/CropperJS.zip
new file mode 100644
index 0000000000000000000000000000000000000000..018db0747f6ba5e50c70336d67df7c2e20f3bd31
GIT binary patch
literal 26365
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
G%>EZ*@z?zT

literal 0
HcmV?d00001

diff --git a/stable/StashUserscriptLibrary.zip b/stable/StashUserscriptLibrary.zip
new file mode 100644
index 0000000000000000000000000000000000000000..bba9a707bcea01b43ce80b714f0dd583ad95d3d2
GIT binary patch
literal 10730
zcmaKyQ*b5hx8}2B+ctM>yJOq7v17Yqb?kJ~aXPluv2Ap0JM(=rb1~=CoPVuawchvU
zskNTVr+&(E5RjN)U|_Idv8I~ZyQe6sLo{GuD=T1NcwmHJZtf;-)*5aWu5M<oHqP$y
zHm0s7uHH<xZW`)vU=XkZ%NGAO$O{1s0C@rd1_l}UkJN>~o##4F{m#=nd_;CvAvJog
z{Pa0Y8_~8qF~;`j00zI{6S1eFn9T1%WJz1;v3Txkx5wpkly#$ejc{&Q)l~iuX`{D^
zpOOX2w3rp};r({H2O31`AXP@gpBj^{n$R$!Q%s@1aDcT+DXvqe*1rSKmQqQDVUDWu
zn1)4FO7A$7>aCvf><eZrvZkZupm=5IA0H<X{$yayKcFWLed#vbo`zZ2>*82ol1uRL
z#1=+KfecDhK$AtzD)o2HsD#AOyN0kUJZl*hQ06kAA4;LL@n)pe_>eFtq0=oPq-G#z
z&H4)MbTux-ps+jlPvl*IEeY7;V@NUpAfl7Cj98#4BJtapDpX&QE!C(GC1QvvrLma+
zuk9EHzLs_=8uzn0DO-zSka2e(O3t#XDiNSUYy6E9EIf=)5QY3%$r$UaCD1L!)EM>c
z{#5`zWszR)mrO49%T|I$5(I%02_a-LOns`o=)|qg!*rve#O_w7yk<<G#V!~r^x!yY
z**L?ET(fc7!gtdc+g=U^S8OEHDj<2*&2)09SDI!e<cicSCR}2W#Q9BoMGVz6EY+NI
zS;cS<US$dg0R}+)M>k$ne$ku)%Mf2klqd#QV%Qh6P8XA#<i%$-61-KKy2f=;#<b|1
z@HjF3GG#JQi5f4Pjte+Pk8LyKbz^5#kY6|ILoB0xUbSu+99$M?^r)p_4m=ERy-!wE
zhlqEgkl`1-ggRG?^EbCO3Dq^cq0ek+v3T_AD<w%#24hY}jPiH>60*W!LA}2~@`ZR7
zSs_IjW6w(m5X|`@+Z@Sgs*u~>9>v*fG#S>ZJ_4JNqhTTXym8?OsVCmBv;0Oa>!`~W
zqu~%IDiTtBTvUsP;KjMGNX+eZ+44h^ZY)us5`q;?I}t+WzN%>REfG7IZq<+?7!0Xx
zhy@TWPb6_;L!DKaMf>)A`drHaNo)r1)5aUwID>`r?xSNAn4Qs!$p%S!@xYmwB5kO1
zaQxU0Vju&Bo(@_Eb&9_=Wqk-iJZ>r|iAE0l{a#Iu)ih57+QEar^AxU9ekd88V~GxH
z(~*D?F)uGE+*=RO^2?&V!surT8(r;Ia2H0z6xF~<aWH`6cSbopY-NcA8GQL1>mzCg
z?HmpvcD5vrjL<kPwjZMK5%Bdq(foJ7#(7*JjIOKm`ECUYv9I;{eFn-@+M`P)@rnia
zr^h<{YT~aChq>9rxMp-QZ^jchTCu{XC%>J?2&FnkDB>c;%^v0jZd1b2!iaWLD6#+%
zH+h&5=1ye=T;xZhFajD2xA7-m_VeEz@DPzW`H#4{6P63pY<>7~6doomX=`38BYxKL
zF6Kh9TC4aGfS4W$3`G5r)CWNhT%U2;6J=`nsxi~Cic=&#Y)<}6aNZxav2b$AT|v#o
z70V5cEASo@V|PW6Z=G1Tv-BVQ9k$`8XGAXh4MS3MKis`!1)+>BJan@$uOqS&&G+Mm
z+xLtivJ2k0j1kOqb@u1%DlKs$5sB%TWHL8094EtzUe7;SdcV5ZT}5X~qO!v`ppVXg
z4RS6IW#l%-snmdm4|+;6;NBcPR7(m(9`&M>d;XM|gH?#tnP2o{J-kAFAJ^hew?;w=
zFq=}%Z~{goPr6m}`5W7Sd!nqk-DnaA+KXCSf7>WSiLqmRX@MyHsxV!DT*%eDKz07_
zJM-Md5o%+OL?*#}{VYMc1L-N0uZOVd(4X#DA~Z;1wZ>r(Qp~BQprlkfMTiPkR5Faw
zVmug<<DOv5Ux%b~d1eP(w_KWIhY+=(1}Bc*tRXbD(wU3Ew~-iW4hLhgm}q1BLpMmE
z!jhqF$a}4pRMlKaW2>$by=)XQqB_33uFD@JjWISINflA}-?C%Teag`J73rlz=*gMq
z#U-kUt9qD-88zd#7Pn?9{q978rETxtIoHbl{;?<->Q`rTLF$;pMxDU-`smZ>77nVW
z>}1&?NsNj=kWS*7^uOZ!AV@Y^6k3xIq975%o*S^p`ux|!QecOU{39QldBwUj;3nyA
z#-=>zSKB&(?#l-sOkIBOP^WLNuUP~GuDNHdlCc6(?9M#97;#&P<o4#@Jvq~y<QELb
z%Ypc{PyT!aFwu|~%px~Wyu0e^<?=rr<-f)_MhF@HIJeb&@9ZT9wwtL3+#fu$w3?~^
znIxdTjh^!AlluEkYgB!<{wI~>ws-tne_0*MWW+IFL=l{N-%h08oj9>>slmNoCGWET
z$)WCtM%5o)mRGycQ%L}2#7M1@qQ;keG+wO9m&@&|#)N{mPe2KaEGgP5M+b`^5IhIB
z0TEzFp?l&!^KIfJtM5<p2CPtY=I*ZaaLyG}A)+0!#ejVeKf@t8Hq0OOw0K-yG6f<7
z;CQekLc~2Ons{U)Re^!kp3dlsowL8OqJfr5+93)5Ue%B~XI#to9W0!-1TQB2HqvDF
zkYEDzSDIc?H9V-zkj9V`Huq7)%HY`=<QV{MNS1#^oU7s>$ME@|j1b2)xIR>^&?t)Q
z);UVKFK!Ceyv~48Ml+kB;O-a+G%d(7v)A}@9*CV{cd@^y@zOkJJQW$AcU8bNebMg%
z875|Rg2ZudE?-)85sp)#ovnk)y2R?3K4M`7gh$GDsxaD^d|a*IJL9IglOd^YZRU3%
zXbG?zuC-tJ$$#n1%=k5C-pZ=xZHAxmzhhjtXJ1crgz`-GDfkDx-iAvyqza?{g^kur
z0-sGvJiii1wkm!C_IV^lP8)Ya7D3$hYndqj6bX(D#`ZA`E=pJ%sTTG)IU7xwp=Fdg
zkVupHoL#>~b^A6C#bV5%v&_k4e!guxSMqzsi&@n}#~aN~4|DpPcM|*aw5xkwof7LO
zdlvSpPv!{e?>oQLC3~GX<0;jDwrMa;Hm7i0^3tajg7M{QH$U+Mm}9R3Q!yM=2}~~R
z$BZ4rQp2CbNA`FQ-AfH_@@;$<4qQj-bW+zXgeampEEy})+?^FH<0uJl@V~PU)A)7k
zOt(+09V*4$XO#|h>-=b0yNnLq`S8`Ryu;q)P{o$Kp*o{>*Q*4ThAk~e+VP=P&%&DB
zf_C9Nd)<i%RnUbE!Q(1ueXU{8Lh}RIHe@dQZ>xB6p<rM%3HLtQqU|!M<x@yyb=?H8
zwhIG&f!bU}iWfK3cy{Pm^tBP$+tl223!erz-!E!P5^RWkCg(k7H7bqeazs(*5SW4@
zz^;<3Fuplwt+hk3z-kNWVc8fu0pv7K-V)Aj5!7SiPkKuGA4l!RSKkr;q67AYJ83Bw
zrna*#<QDE*EU<UU=U8}{Q+SO!>e_^@@-=(?p2KFJk^HmL0IGRn(HSvi;dI^pkd_pt
zhDD`P_4p2Gm`&1B^6HYEx*G$96SPCdvS|zF5)wu~3RdK_rPyVRtU()Piqu%24YICW
z6*awwj6WKqx;W*Fz+jl&mfB|8wPMe!J>F?&ikBQjBcRZ>4FGtGsNTkJnc(Sda#1Zx
zj6=KVIe*uq$)_rG`4A!<d)M@0J#-4{MkEtxF=r@}E^1|YcSMdNop4Zy@l8OhXxo>f
zuP_Z9<E9z=Aw<5N(hWM4iAea0encYN;?&tLn<&V@m-txcY7-J@*O|sw98a~RN1|c<
zz742HmJO$B;(L*ceb<r|an5V7VIEqELS&kniSX0|Ip<@{&OMo%(XCk03{z&7^-4rY
zmc1Wwy_*OfLF+-!HCY&AC?Z&!@6eqg?}1-OUwoOZfy2_yl*0$#tqdGweZieYCmTY5
zdzUiJmW>w!{X;2zob?@vl_VC;K*w4wQrg({mn*b*Q{~;!lj4-4)^qvuy(TW~f|S@F
zp!?nGx?}Rr7FieAr(Zh<*Hc#gbuT+ix}ns)jhk`=u<qO@t{U<jGabj577GBUr1gR+
ztcRK!$QETsNO8b%Q0fDLt%X=%rbngX5kpOTMJZ~=zOk?l%Pgp&(gd@0@db+!Tpjjv
z+oO0Va^GWj_D1FU$+Gl~vDc#k7Fs+YkCz3lX)VMs7wC70U2?@jqgM?uMh3g%WE69{
z?|hk$rJ~B_Ol+}j9PL8}IkLU>;uU(TS&d$vm2=eI@ab;;PD%c08Ic_IElnXJWi#b2
z@AC24U+?`JL~b+RH)RugE|zQUYA35uj9tu8N67&Ze%n0!k99-)g-rtOnznFB80@UY
zj<>t_W@(RvI<#2JyoOAR9~7f_zUc0o#NrV$@u$xgN{4Q$ADei!ON(L{XFw3A6u}zS
zuLyz-k^G;=q509(BG70#jthY=WbFBBU@MCJI!a#p&uLroYh(3~qY5L9rG4{hZ4(@H
zR!Hs-SdRQKCKJgFv4UnB{Ea5(CrC4xsCy8+yznISc>VhOb~lp){P_-t_QvG*aRwrV
zdP=lminJi!ArV^JVoxCgBlMfpRGTn=U2Gjvp~`X0`)SI&SB~B?##FRDROpj)(#|`b
z`zPvq3L=&6??5?fAi`<m6qsIAX&DMWJ(keBM?yej%i<HAWqQPMvpfr$EHl9ShsI2s
zfdi1{0%rz44{?syB8FTI&Qy3^t57XObK@o9OuF&!S3;R(qcj(D%=jz>u>|3+?DDaI
z#VX?ba%E|K6YX*sIg_N2+!%xI1d##LTozPH5hQ$^zy=iU4;qdk$XWdS?CYmuIX6p4
zDfJ*l(p7BAMy$Ej45owcwN|c@<?~bw*7f0{V%{~86x>aaPYzKSqBc;IQ-F~(eG;|A
z$RNZx49wyVSAFd9MpHDRkZ~q$GY04JIwYA&tjGCvMAXH{BA>}`?I?aDV-oTR&*XP<
zb^b?9((w{J^EZv2R9q{$itj0dLs{!8EpqaCR9EuL>qm?#;}5V8_<AdR3@d9EuP74(
zbhV3a&1F`0S)Iv8W*dG26{Ksea^~MCu+gA~0F{X@lw#4b@hW9pQ6xzV==1Y=MUTY~
zBm^S|Q3_`=25goz1S>LCozWH^bLu25SlM`-FBQHD#J*5<qZ`#9;u>?0=Lm;kq*ZPT
z?VVP8q_Z3Yxa-at9VhFt>lnC0I6??d40;XucKU0Iza8qBXtnrt5((hGKIER?Vo`$<
zd*~4(H1^~RFyZ*D)}&T=`CQ`lu}x0PPL*L_-3>HP!d1aD-z{^6J&|eFNC~@mC|t7S
zs|Nb%dtFI~0_Fu+V#SJ1m!%3c@>an%MuNwahP#oN1T&ts`7Av!SC3FKa~AgGBOmX7
zsY3lQg><OCun0IA3ZK>(WtuZJ$g~P|;w`G?BV2jnk^4o$a82Nq^Q)X%4bphy?@#2T
zAeTuLKN2q0VS0;gWSLDal@ngXYGiVfO4^B(7&J#}BpAh>jM)5r4{-exuGv)_j-87A
zvYc4y^KY0d8=luYc)^`%_UPJw<6l&Gcv5J7A!-^cTu|-7!<x>9ny~n=L<Iupa+2e)
zr5T?KI6;W)kP4&FLLkO$6l9p(sS-2$1)D?GfOof&Al}VB#;7C6IvJg0Bi@5!_8~nq
zmwtT1x+Ui7K0eH2G<msc{G;lU&OtcoM<@iCtaT63=?dsQ82;5Nx0wapgi$US9J{dJ
z43GG4Q|%5*uVVxh(H3{rq7^B|P^&!KYj*alAqEZzB`**j-W?$IZ%Il>O-PjMR?lP(
zR$C<nc;HLA1fJXOKdOIl)=*v(k_cNniYq^%YfHU%g=Sp>JjMBNSvwm;CPNN7BkC+v
zb^r*V6=&S*{U|R?vw#-(6=3xX^s9}gdX?y1TJfhXsk;H=+z62)VC4ciD1aMG|LOf}
z_$bshv(w@Q?p50&+Z@T|Vz<!?+0-yqtAF)3lhH{Nj@r&#XF39vr4!4R*dZ4Tft>ZV
zJ2U}*!**?RN-V_ABvRQJ0sHEeHiW;(;lOI;0eNl;b~nPMpQT@?s%dX6M1e1IuUz?1
zm)J&Wc-oeyegiqQN&-*tQU$&v31P-Cy1c0Kx}&(!8XBXa1;(5-;q5EKNyoJ1A;84Y
z^KLNJK7&fF(MBntv326PMgEraz|dv=VKCKgon~A5k`&-0Gg+mVJ-B}Fe|!OlB*}5A
zG`)Jl-hUU5c*B=p=Z5R_V(ITWbB)sw;;+2Aau{<sq5U!EO;m;FX+bZl1(B9<OVIy!
zaPwY}Y|CSVEBmVb>h*mnazrMe<y+lus3i4u?8}3K>}3cggAQ8<{0dD_StC4Nv9}aV
zGlsGCCzq}@Y%V(DB4FRXE3roLxo^L-HEGOF{e!KVUO+sa`*#V)YxH_;ku7T2g82rm
zDBE61--)s+N|)FK^P5;pd3p2UpgR3H7v~A8!zK*-wY%*Sp#3X6Y-UdM=aj8hKJjkn
zDtUH8hz2asyg>uCyCCtgh@m=!GNWo9k@<4pVcS5KpCNUQ4pIf~DAM2nWjOx_mA`FO
zuYv68Yt52fcVojsfI|2Q9_Lj%DrJ8!wc}dQXtFdr^d##v;)nu9*GNME&&HWejKeRF
zLXrA|)3;QE_)wPIBT1Xmz5^sb+q<X`UTlf{A4VLQ0~NScTyZ6E{vAPU1GVF-g~1&H
z^$uC{L0F#8In?g+2J5Qg`^Mg(n`X{B9X#DIFTU%u?nTcg9@D41F_m$Nq*m5$=u3Dt
zse!J^Fhmnhph7h$fFvSq!4Xd#{UJ9tK$w3!gStHbF?PT>F74JG4zgK>clw?!)=H=I
zHmZhkoxiN_N;&IojNYX*#){Uwr#njJZ_oFrKI^3BXx!=h`WP!b@<R)5QP7W;mCg8~
z@t*`4YgM7$)?=)m0cn(fr3jsMz53nwk$wcN-WBCT7*yF?wU0e%7P_|Bc=iOJ^h7SX
zl^Qg~t7Mh0N78+-9C*h+)-QZV%0*(Y*w+!kxU&yL(fycT%k>p*RoGs)+t51Q8e7AL
z<b*fa|5RO7xb#oyz_nhNKnROZLdLg)z5H}V`*HUj6=kn2!moqQlRMddf}LIvVzYzI
zjGv+V+G|n2f+(A{n407@6D*_sX?9gG=*_9JnOoMkxUnaA&K7616@UJU!Un9C?d)7Q
zK0Qoo*JtzT{qH8t(3B?3nDMg*iY&lM(qeij0Hy1Cd{{4_JL?N&s2i>3obU9E)vn!1
z@OrDnYFoCJec4sMSj#?ifN=t0c-X_KuW)Oi%TaS=Viv7QIKKLsQ$g&>ebJ)sk;Boe
zi@%otFbC<I+X?~G)zshkGOf^Y!sa6{?%{oIneUO0*dH?lP>w#g?F`s!wW-{7EkJ@B
z{Xp}CqfJCKejozc_}X$fq?9iZ5zU-CnLx?KN-62C=2tc?-yO<difArSH8#N>sQ8t?
zGN8rIn)PXzxsxlMKSwNkh?{t~>A8by$^1?mV*A=#O31TylPlrvc>|m#SLkGa*=2(I
zS>em!uJp`&>rmD#Eqyz~g+2Lk8EHqW5=NnO<5CDhTk3{j#M^2F4|jRqZg}fWylrBo
z069?S`$AmwRq5VlUcKd6T(+O!r^oXjXg4RqgH7J`CZZ|hYAdN6l5K3KbrJ7<Tc<PD
zi;7W%`eXf|X@fKr10R3$q?gDW3?C(ViGh*(3RxPb03JxG=b)Wt2T_Bc>~~0Nb{MuW
zNSR&|-uzhLuH%q0dkQxj!`^HTt3FO9n!g2Iv|6PotKU!=MSV>T>-h@x@OxJ~q^+t`
z+$!TO3%4$4ndfZQ4;E}-U@l@Zg_UL?m;sI{j8D5^0TNN%Ha^N^q`q8C49(h@WVJ(`
z%){-p^@h<=&VnwtZ{@*J#9mnTN*kj;wU-62(Q^Vjyuy`Eo7NmA?BVQ1;z=mBU}qvw
z?>e6^8)LSn^Hqnava!dhCXB85O*mCOu^)4+$ySBUN}F7;!t=BWi*4iHP>$nd&k{Li
zLyzX437l`FJTzVu`N#bIhU2FE?kruHoLgHUc{gXy0n_DYL{kR)Mgu0UqFlE!YiSq-
z;E2p9vJ4O?_40dbEkU1}rS8vuusvw`?;lE}x}S$Bp6{xhQ86*s-Gr;yMWTj<?9KTz
z#r$cIX!(DA1D=E6FJ%zLUqX;+qQL_bZW+X?HpCUW!AfHCumCQ@x87X^^Ob>h$l=W<
z4YejX_d^VdKfn1s9(gL1WnEUV1$C>4&{vquG}CJi?<Y%p75}P!lU1+%bEz4SUPyD<
zydCbA9s1yfinD6W%-2cu1-Drr+Lw2P_1c>l!fe=5_AIJ5q<Rog9{shUS(kQYRB`Hb
zUIE%9g@+yqd>u81@V8lmHvGX=;x*rTCe62_9mK!$tot`{8__&k|7laHuWM)EdCCfC
z*HtazB<TAv?hPtO>fjX0Fq4MW(53&5c`aAPgY`H=er0&?eg(2U@^s&5SlBcdy&Cgp
zM!WB+kyBr4EwkHy<mRqJ$~M*Rh$n+iKrO(`Waj3)z%YbF-E@>Cg{4F8uggKbwR@Zx
z@2F}(Y4-5ekaeu%QWR`#kq>HZ5!}4Q^?>Q3`E_bZ*6_8*!)5d|EG+Z2(u78x=$!hj
zzApW=tyOQM3&%^1D4<I;CHFv@`Bl_B1&G|5Ik=2?=|$+75sI3yOQy8CwuH859ZnOH
zmOu86c+*^hER`U6%8vRuc}LM6wviXr*mhrBLDxgDI&At5byG2!$cLEz6|LtFt7=r%
z`!QD79ReLLBZR~BJZ@s@ESFC`FG;x!7aN5r<Fv2Jjn;otba;Q#Ax0pI5=`)mA`$C&
zBz8f%$Z)u@3|@47xz6A7A)f)1&!jys*!l2&zCFL%XF$)^4+GZFarO9!y`6L8*^P3E
zKfNZHf(4LH9>^i0p)eaPbWDBsY`1j9-T2{jJd1Vh33Ig|P<%%xdJ?&p-3jxood*K!
z76W6%UXCNZ4@Wadjdgr3p<Fn&YY)Np#N^&j3|(5EsWB7m_9<XW5z!kz(1WN77moJU
z0*jBpR%88r{E0`SVax-hP^$U?LYTcI1<1Lvtd=tb;0~cj(>{6;rXV8b@z#^zy`7ot
z{ZhyCFawgJLI$@FC%o@(&tFqD5q%XvO$jw)K{X4ZDD@h*O~$0JrX3U1?vnOFj55F?
z^r%&cz$8*e<6dgk{Ek4X1V=1UI{4uQ^icb5TyK;fO!I{xG4{Di=-vSGGqV>#%U<cd
z$KX|t;$3Ip-!s-#jbW-}LElp+7V=M%j+0z>rfYYjBnvNg1FWh$zDap@63jFF`~}pv
zt@5x|C!F`jdkn(>-{DNWb0{IbPh|d6!9bS#u7W2-BiJN?mCjHlnd?IXXVSb;77zlR
z9{{pn`z~1n3-JQ2c01|22M>dYdVSz7mbAz_#>@~8Gt=Liu;yP0z5=$f4?b0y@8j(a
zHz-E9$B=)F!>0Mj(mEHbSw5{|bERV2Dpt~$=0$8f*Oie&d$xL*^TkAt&|YJhW_e&Q
z?*`>Eu-KN}4iNKLKcgq}Lxn$Nu--AY@);RDl<;Ab0un_F+C8V?RMGA(evt_#u<z%y
zF6<k`vCNt2_&j1?c{N7(L0Q7j!!JNO_2rMO<W5QG^b4tz!>ZATVSQK{I#EL|cU9%3
z_5)Sfe3HNQqPXl~LExlq#k@_P1RcB$gznTn{>Zd&!SmzM)Z8V6w&kK&ijo}xQ~;M+
zRHjkZ^J*K8qzaziVs>a1mp}#wV{`(UX`|6lJBgeAktiAgVyzLv%YV~3{LptF*5jkx
z#k4III|iqN2~Hppcnk;^?QQfiYonVwdr^lwO^HM!FZ;f;8Ms|8{JsE0S<|V~kJM_M
z_{@=};4`$bK?uro`D#pLsL)4Fr&*B`jRz-2e(G%pBiQ(J7S&a_xB-~U4UEse^_YR!
z7znjXbo1~oon`sMjDb2q=}NITA>COg>@x~li>a7BP$Sfwn;I$W-5Uz*F6_?98!)!_
z;ZZ%`0&}hnI(j^;q9DE*xhM^u>Odfd=MoD0U|kMAr~i@Wdc)#PxT!d=H1SRuaWV?)
zA@yv0_{`#2FhwbSrathy@97^-%VqvkXDj%^muVTZc-P}ID7)o}zoY({Zc4iMX^Y#k
z2r0z-+C2o`3|k&0(-f=47=GL&je7OKwr$I+L8ID8pNkX<%0z;4sx+$7;(e`^;|yS>
zP+5rC7DRB&{5_mH_PjZn;E>aMVb9YbZDOgynL)N%P;lYTb}C*gQf3s_vMRuy!F(&9
z?K29ORl;(|Z8ph0be@^izm-EC_gq}ZM!LE3ZLj?3A+0>6q8fw@isSJtrhwYKn00hw
zc1+N%{5jQJ8Sp6PpOnYdPobN^BD;5G-c}TnNRjF^y-&!07Ppk9X))XAu!zl0?%HwD
zWPsQ`C8w!TEThWBoHJrgJN?BZ3fE{D8K8+R=NG)%9-EiPGwd17ICxuPnu#mKkuTOP
zIu5=KmTr?8#yW-;u6?(6OWNsF3Y_0ikP#vZL%G}@iR`-pncjSJNs$a*<$J2Om9$0h
zTGqR+26qsQu{XZ!_FHkoN@l-tj45w>LoNjVsc#Ki7&1~<j;@8Ol2hI37>+I$<^vhr
z<Yg^3%JPgi%Qe6L90Aw%2lC+Q*l7y^F3Vv$=|7WmFDWJK=wOa)=u8d8D4FK*92fWH
zaQnJQ-}7bZ+Ycf`1AS39MjU9~&&Z(TU4m205pXz0L6~w|Emc7W1n?|5Gf8dMmYucY
zN^z#CIA6T64ACOp`c|N^U{C`hfpmxV)^GS;`uY%bQ7!NF=wt+VNd@)L!{6%o?)fTY
zN%!60a?e7!y9hj~Tg`_yUT1M0c|TtS_E)+t)YaRO?y)<$Mz>Je$gHpE6RZ3VQAHN-
z%#y5#do#2yMsK1gxJ+h;D#caojHpkO<3c<b=tD1wf%`OvElCrF*9us#yEIw10_t~c
zll94tc>%*;40OK|6z4P`y$BxguUVF8raK*!S0^p4frgZ~U=3q@YQmB!3!YY$#MN^>
z4VCfOlP(Y_&xi@}31BR({vuW(iyb0<l8?Tmy=z)B-k*~Q|2ON5&8<@HW+H0T;C3D)
z*7~iO3S%*We@+HbI^OCN^ie^&v6vtsu+&EqyxAg$VDxd3jg!<X+3^MZjY(1-t`91%
z)4j@~#1gU&6^GGE?n=b&nV4hmj<&N!ch80krfq2w^Fg;XGoArhkqI#_x9+D;vV;(v
zqAg1#Oky^*@(1#uE_$Ty^ZDX1tA$0)65!1$b(G7Z+DQI_Kzlu?m(;D7@`^H)qB55|
z?lGNJk<C4>Ec{Frp3i&_k4^8f*q?N=gUiigQaktH`6Y}vdmvsyR>0S1a6ZC%R83KZ
z-(J!nX%yq7K*}{owfb)$H}OHew99ldNCBA>LXm17lOc}o>8)?dO!!9}oOtiUqVFUL
z-~6wuAUZb!$BiKCLO*^9Rmm;xcUEUXvTrN>i^CFfgEd1^F)^(jA_N4Rl=3)U1m2ge
zm7^n~y$(rS<(e$>06U#ZorQ<7c(qp__!jM!y_9)BvmMr|N&{IWj<x)bE`&l$Dz2wB
zdi3H@n;$pEpH27Qg{z7YC#P<WQOT4N9*f1%N#$0T8Whjux&92U&t(i5)lmJ}TXpGu
zqs`xSL@QUk(8#K2d_HShggLuEODHH(@OCX^WtwdszV;ISvu<W647<aj2Z7s_;V6@%
zVx*Qa`Fm^vVL4T@yM1$;CA_YQxJIY1YaW_iH)6TL6Uop<_879Tblfs+YNh$qF@K7+
zY@SwN$(SL)Ej?T(d~?{VsRkRmei++R4a?=W{cR<PI8{HE($iKa;Zt6CY>#a!X4cPO
z`8b=omb6Qk%DZ#o+h{wJfUP7)BPfnsS)nO6UKCK^?q}C``c;}!*e{FOx{cr}k@(ZZ
zjZmcl)s=8Vbm3Vy^nek0L_%^jdwpz@)kxhOHd6d-a4W;{+M?7Da7owe0B*^~v%v4@
zJ{aO8m%<cH1dZ0+ImK0K!I9n&`j9kMQkIj~^4C>C^=^pvc%7pq)Ye;L*|vFQ-F1^|
zUCnxWN~jQ8-&c?W@q%)m6$SCcxvy$+Fw2c^^8T6I_S;Feu=dvMjI2Nwk^w3I?st_K
zb`(}WJWi4%$7p%wflm3vfml|jy6&dMi>!Rw8ohZe>n<LIZwwQr&2rO;^D@RDvH5tT
zuK`s#Rn<FrlnZ()!zI6E8>HN57}aZp+zDmD4T8N*vkZYWemg2b9~1}k!K(1wee*`<
zjoEaxH!P@F!S36M98yDY*uvkDubTu;5)A5Nr9W~LShJjn;a?qe${|h{J+&kVDw0ZT
zN42~wK1`gq2Tacz)ttDT%*GsnLRlZgFLDUjM1DU+o0*3f6uHiaRoWt`G}8hw(z0?m
z%1%n2Z6&L?@7nb`<9rz#ks)rAg%%HbR3}Y=s<-{laB#6gp2S{sqsThwT3P0RymDsy
zcO}2@xVQG3hGK4-Uspyw-naLY^E6jRT>-cEA18rC!i$oQh3T5J$#8om*43M+Ut>2#
zhL$uSI4Exl31{{$7OHJ}{6eQm8t!Aol!lP9f}n4u@o*bOo67G(SkdrMAkn|p`Cw0H
zWF@+_nv!tw3^lgZY+#I<6nrUSZjJO@&j{fU$=f824M4rm^`=4Ff!ULJ?gT}no*Rx*
z(f9qTGHnfEbSVeX{K!-E0<tb9W+~GxSeG#vX>Mxiy;PL(iEyN}p?->JO0fY7O`eP_
zQ@oK{B+qq9z_OTpBQ*%W>3ig-MJKUu7WKerkrt02mv66hx9l~Y*r}(@Y1MwdJ^~$p
z`MIb|YHyg#`0{N0y%pH2S5=$G5<nZT4ZMz0OM++|euH1F0G<{dvO~q4YL|8kCCI0o
zroIHw$VTy30Mju=G1L8qX@cE9H+vB`jRW>F_KQV4zB4Bv8?^yTgjl7bVuYZog!UOs
zcxZ~Tpqzezo*4F09n-D$p<k~|8=#GXXFJ%b&)|fK%eWP1OA)2cHV{mWW8WL+)<Ahw
z?#f86rk`)b;Md#IIgnoJX`>o`$Pf||De#(7sZ=-^#^8MaI~``GffbcfE_<V^<*$hb
z@mdtYf3hBM@~CSWKa?CrJrb(R<Y3PEh;-mcHcsJkKRSRF=s{V>Ud!YE<b`3WhNa3W
zxiTFbJ(`9AD0Js{d%fPCRI0Ig>%QDDI&r9+#3~*$<Kq9y66F?Sn60=qkyS*767(wt
zp4BgjIpHb)38j^d=o`Gwgfzl%3lfB-9zHU0CLv_O*eOi;0=tz$k<NNimiH^nZaW52
zy&vf*K<6Wh>~;Cp?+&`Sjif@RP1ZFXq!9BdA|z9wLch<MW~{R+6TvOba+*9+0LEAc
zmD!mXdWwkDAW}ro68~6`&a(9Irl*t=K&n~LdCaOiX_v^nv-HO4#Y?HH1PdvmMY?l0
z%o6!in1G4dn0a?$M|!(#8ML3OQC1Z{{;0_o**q;bVTz4rFKkGlgMML>QSUD~<vmgp
zZioCWm$?JNnEI&*2AZLfbvYvsP0>l3h)<Iyxdcaj!pUR*-HGP#2d5zgGUCGp)zz!+
z$q_D@eb~XM*hb~{mkW0&E~aq8y<}9yVv4B;m3t3f@@FE`k(CCoV5{#DyLw04+hyp6
z+Ak$3a6~%c&nQ5KlL9U*|JN5l`M+?1v6obT%l|?9001yB{C~JWwf{dC=<Q(tpTI!L
z1O?;}5ybE(w`fnmcgIx%Zu{69Fi@!&T&%gSvg6gYnf}Ao*_qwXJh_e7#y$hyawRrg
zdT&bE282$|11z~5;Q@wBQ;w5COM#K&^zR|2U>Ee=6dKy%(3e#E0xlD~o6Zw9V>^F!
z$?A~3e~@LlO|!XZgETLtkk#4A6;$V4;kpa8Yx#rYx?G&`78bY4dD>NEVH!DR4}Hsn
zAl&O7znlVVtrz|OIUWE`4Dml<k+}aD@sAb%^v~dbU;hD;g!(^_<bMMs|GWHub@%_3
c$E5}Pk6!;z`cTmSE(ZQj_53rj=>GlvFGWFj!vFvP

literal 0
HcmV?d00001

diff --git a/stable/TPDBMarkers.zip b/stable/TPDBMarkers.zip
new file mode 100644
index 0000000000000000000000000000000000000000..1a97b575e0da8ca4b8a35173ae2fcf06bae61a10
GIT binary patch
literal 2216
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

literal 0
HcmV?d00001

diff --git a/stable/Theme-BlackHole.zip b/stable/Theme-BlackHole.zip
new file mode 100644
index 0000000000000000000000000000000000000000..1c9db8fac840e534318134dad0f40407a8ecbe32
GIT binary patch
literal 1237
zcmWIWW@Zs#U|`^2=t&BTSj8m$DjCRY0AgVV8HSLI)ZA2Er<}y(Y>)h$RK3dFoX`+X
z24)VM>!~1ITEWf0$nuhzfq|tSsO7Zx8Q-lz949@_`i5QzEjZ=rbMD)T^PW$=Jazr_
zPU&czJac}t6Nj_tvZvyjEYnrQ(lt~<wJcgw)6$<UogG~;b*Y$W^Hu4Wk}o6+rlv&|
zYHFy6i#KbqE_j)6c2~jSFAYI43;`(a?da0>5CGcF#*W>+$;HL^+}j%xoqyRtr0)HC
zixQ@TEt`vkC)lpNy2UR^{91?S9v{D&X%W6T$=2E2kM<Y8Sr!{@<ru2^@oCNdoi)#8
zWDjk4c2wlpF1Hg}IRc+pdG?=N8S?bF|A!A|k_R3JzJDR0cJpKkPx|ud%gxo}!>V5-
zdVE`Yb*<2YQugmm>w2a~eUx%r`*~O6=eFq*Yl?KmKCEV+u>Nh(iN&GWuc!b0ryVdW
z(&U8gozs?F8UdACjz^oFIXQoZ)559GgJi$geQ&Z~+@-zf<d#P7e-7&+C0<5Fi_e(6
zC#C83OFnDuL%kw=Y#-UrrzCIr8uL>$tK(DKABimO3r%4LIeV9j|2_VzahuYv@G}uN
z3wCqd&lL4n3g6=Wuy<zj<*gzKfjLe2%MCWiSRU4O<^6uk>6mwUN$<3M(n|u?ZO!cE
zp7K2=L8x-ZMYVm-PE8N<+WsoP==!;P*{+-iry>?bw#J4uKFs{kcK)UhSNu|isb3~t
zXEg6rI1`>bSzGUQuTF@@=~KaCY|YPSAB>lb^Vr|encsTlgX?sw6vdeC%F>X!6uo(y
z8p1v=ZTNDjK>A}7`_oAR8)iJK;+t%>;o6eS$Z4@ly|h=py2IshXtL<TqLweWmKb>0
zMdvi#+4bX|ioE@ixqc~ueG@$67jsKV2zK0dd?vf?u#ySW=ZD`WF+ZPISmeDlJ9Yi$
zhs~d*iy{`UkM3SQRp4=2{iB_$ADnr#NItgX&2Le;-ES(^EAZdry~lsgzRT#_ucIe_
zs>aNpGgoi+-t2V`_<JU{hjpCYx-9i-QF(s(`{#2*FC{0`9@)P@OtflQ*}?g8GXER;
z7<)7Fjz;V{X*!MRU^qu$+?Or6^U8lk=-xO}l)S5<rKD}j^h+f{JEAvA+b;GJDUp2`
z_G{JtaxI~62ZPRPEJ<g|EV;@zX~(I@9))XWXVfn(T;6f}Pq;`YZ`_XM9j!GUI-d?r
zR?5Eg<Zi6Ord|K^XI<8@-fvSa^J}7svf|;LMr-4J-IVt5M)pTedDv2_v%cE%O6{GR
zB#k`roP7P1JH8LIyLI!@r&cArn(>e;+rv!kjr*S8{R01inTwH0ju}^RAOXzb3=E7w
vyrdDt!df`6LJ9}8f&txN)O?F<@CGafgL5%1gIU=?Zeaq#O+cEL1;hgY>=yye

literal 0
HcmV?d00001

diff --git a/stable/Theme-ModernDark.zip b/stable/Theme-ModernDark.zip
new file mode 100644
index 0000000000000000000000000000000000000000..7ad34c13e2cf894c50533e7ca2c287ec7dab07b8
GIT binary patch
literal 3144
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
JJ&57=_Al@PxL^PP

literal 0
HcmV?d00001

diff --git a/stable/Theme-NeonDark.zip b/stable/Theme-NeonDark.zip
new file mode 100644
index 0000000000000000000000000000000000000000..cad71edffd0f8d3710019b489c13adc9bb4124a2
GIT binary patch
literal 4025
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
Cg`)`o

literal 0
HcmV?d00001

diff --git a/stable/Theme-Night.zip b/stable/Theme-Night.zip
new file mode 100644
index 0000000000000000000000000000000000000000..158b34fa8e77641c809cc70900a067627d86daa5
GIT binary patch
literal 1368
zcmWIWW@Zs#U|`^2=t&BTc(2mjkqG3K0Wm*=3`0mpYHq5oUuJqniC$%HPG|@x12c!s
z^;8fpt>9*0WO>QVz`#-uRDRm~jPKSUj*}i|eM2vVemL!OUgM#cr>>vgDIJZIXU=bK
z;&2pQ@>E=tWx9%3x<<y7XQ|JhPJgbcGHqJQ6Y<QVsY}H~o3Bd0kSv;-7FDRJp&~Bc
ztiifqXTsZE35&lp9ExEGKyhj893AhaK)bi`V7fH9xEP;H&xYO1du%3B`#pSvFpmJg
z53lM?PvymbTkO6q)nHrVq08aQC6cPH`|JJQC3{YYEj`0fyCO64S<$;=yKDb$`n6V1
zyE{i!s<BRd+3KxMDqV}OPG7%T^zt9szk8iDt_RKLu{ChxsJwZYYw^$Q%#!sMcKJg8
zZ?69rxmGDG$?xoHcJ{twB5cm~SAAFaE<MG!Vvdv@yXVPiIXlzW@`|%bpL)ITbil2B
zysPtftk$@GoF|P#(Eiak-kFmw9{-WqJc&iFVsggrdp&%<{54zNN^G0*Icln;*9p(2
z&I@v$3<foeOKLazsTZw1;PQU+uVXLGYUj;3(PiG<ADZj>AW3bx|FT`lW;*j0dQM#S
zGLLKPtFG>@sHg)Bx7C;w`jq>ohB3v(HfO75|A^1H%n+H{JIy%jZnVn1wajn!-F_~1
za_h3Zx|SQM!W<V2SG{_2;OS?!qeuQWvG-cInr#2-c;@btga@?_TnEgzGHIrk9C7&R
za^muy>j{qc6dpzji?|vt{x2}~_sZ@i=WnOX=1CE?P4JFv|6{-7`}K{#6dlt9BbV|Y
z>ZzTSnO!Oz5b*ul&WN@XE|&Sa>qNIISw&u+{G{}{*ROes&zC2LsHSvB^4nZ>zp!V~
zDv_Y+#q7(Xeoan3c=*}M(A&3*Z{)mt7P;{AzG$vxw~v&aGT>ippeJ>3iLNedm&4Ye
zibWzz3^jJi{5a?E^<UlO)Y?3sb3aSxJY{m6p_wahY#^N)^kM6Kx9KlW%A46UoYb4J
z?vnc#?Oi)#@=Cakv~o%#y#&Afj~3rweq-CTqE{Pd&pvDXd^UG{$Ljz4eWy*jzUSbc
z<Np%xM}Iu6{`k<7%kv}Kr2mS4GtS|?u-DknVzrw3^`8@xuA1jKeQbQ1SHZQ%&c&_4
zaltB&iMR9bPvgEEG3$$}SDVUyIriK?#ZHr!2UOME+;n$Bd-dg=OT(^ny?R>kG*)lQ
z0e7vX>*wE?{vliAUiQOZQd)&C?>XIczuzfx#i9S2<(xu=tc!g$W#=!f{2_6t@z3*i
zm)&1We=GXl`B2u@`Zeh6j*22irALbkc$3(cG;#7MuIFt(mAj(#S>Y6+eBtaP4_^Hc
z@R@#Z;lt(k7>!qczMk;#GtYt6kmo{SZNJ2d!u_l_?w>v}^JKcoV)LJW_bYh1U(H_V
zUm+(Gwf&rhygEmL*kxn3bE%m(AHKeM^I4P1OFh2n+x;TAWwXS!3a>BwJF{45&-w$g
zECIsn0+biN(EXgEqj~ON;ic~Z-HWpw(sM&5EN`*Cus^_?kx7mjSIHy+EN~bY7=d_6
sBZ!4jPO(DDDYP;Q-B8p*1liD4XoiA|6kLX~vVq*d1cV@MGgv@80D*-@`v3p{

literal 0
HcmV?d00001

diff --git a/stable/Theme-Plex.zip b/stable/Theme-Plex.zip
new file mode 100644
index 0000000000000000000000000000000000000000..02667ba2897f1ad4f930c6495a16fdbef7f951cc
GIT binary patch
literal 2823
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
SP4nYHz_YP`HXqXc*!=~Og7+T)

literal 0
HcmV?d00001

diff --git a/stable/Theme-PornHub.zip b/stable/Theme-PornHub.zip
new file mode 100644
index 0000000000000000000000000000000000000000..45668627d6406df0349e72b258152e0578fa4cb0
GIT binary patch
literal 5190
zcmaKwRa6v=x5Z}|x)FwMrMr>tkQRoL4r!2(Zb3l0VSoW;NI@Eg9O9!JR63+Xy8HUw
z`*Q!e&f4po^Kkask7xa~)j+5u0000J5ND-t$h3ARZTDvj{v#p)H9*ha*2R`f+s(sO
z<-HZRpNlg@4+{Xol$f#oTkm~w06^4T5CDK0^5=jnP8R<IFD~j)aBna`p~_D-F?|(;
zh4_Rfny$fqayJz{{i?OD(0x0U?QCr4n7z1}*?872b(}#_o+DpqX`+?9@43H{n5Cj^
z?0eI~nA)k#(S_|v0zD=|-qt5jW;<5Pn;CP^13>#95<7fQGmm@*0EDUiyTsO>p8qZJ
z4+&Gxbwu*fBUrTcatsz-`{GTll5Sm7GyHW<)M62TPCzzv0Yz2CN}UK7Xng5<@Nl``
zhk+GN&lF%s_f3#C_S#;M@*%$1Z6$eS#$)^|UYT$5W_@rV9HL(x-qzZV2vUv+95jM~
z`CkdhuICbUd1R=VDPr7G$D}aL39Iqn@H4Qfc^K<tpD?ofrqR4IQ#Bq?6<6*^!@b*E
zt6A;0nu<i9j?5wy%SSGD)0?RoQuLEK%M~!#GFmD^!L5hgH1tIl?}xZ5YS);)Zp6w-
zkKZI0>A<i$9fmD+l`{@5pXn!IA7II1I!@+-#hcxd!)|Of&2jn5A+m&XTAV`)dVEm!
zTl<!Wbc5cG1XcZL{;!7E5pXN54H(VuB<U`%uodKV8sqzPbMwO@&fYD3AlWp{c5Ch=
zKk;+~ohvZ|=~G8h6lciI^|oBCqbKS)GH3iP9qF+rhV<2OT|_?kUZQiHGI)9X?UUp2
z6Kg_!TieaMF!Fm5YN54?>RG*9wbL^+2A#BH>QahrLBGYMuN0y0piBW76VQs|bss<;
z{=`jiBwdrh76kh`g~iy^hZNzi3>-vNU+Fli$T}9Bhn%DNZ>ilQ@)(En36CLiC+prt
z^>X*ye8FNg*n_>K(yjp+fc;k;AZQ7%MRSpt@DV378+U^#^YG35f#{*YV71)>5K*Mn
zHYGXOBav4^#~s{^i1xev!b;Qg=mV~b75wsg$|l4DZNfW8vhG~I$-Ik-F<;=@2BW<G
zG9e*&m9VPSim9*~^<Dkr-o<nA9=%7n9lCz6u6`{0<;(~oOj(XZS@Zi$bcXF1;|b#n
z@txu)K#l)Bj)qj3uubsNW6Xi*^N^>y;9IK1=8fCC5J}{3L!zKBkrQ|!iTiRtZ|~@2
zY9>ByHV5CsfMf%lpEsn9M!j-EW0EZ(#R)c53PJKRh8<noDaEC#!Zwf^P&QGoJ3R?L
zUoB_}C?w`#1d>?-PGzfF7&-$xl4V?(;9pxW0{P65$RJ;2Zl(Uw_N3&JRD~>NVH8(v
z;Z5$OeS3%X<Sm0)-5kH=i9~irFaE|ersO2+jG=bLAG{-i+pQJa&eqx(np`5GH%LLK
zKHlSD=TuyZlb$Upp?%cpjnY}JZHJC%1mJ~SF$NT@yGV2YG2ZP=OijLyY#J?P5(6kx
zJV6IOk5T`H%+gotU`Oj+RdyPDa1lJ)*$(P$q~meZxe;)GQ@y@P_H5?$sTHM~Mhc+t
z3%3IWMBwtiBk+>!HEMRB;1Y196vHuCi)l%bz8#|>q9Qau&N+;&Yx-q0sT@=?+o1@p
zu=oM_j2PZJduE+hz>r^TA*owEjk+t*oaI{fI{6q6RuWYKkR6EHsREyA9GOhY%i!Sq
zV)293@lisF9(LR2CsFVP;&E{V@f0KuK3X(G+X<%29U^$$X)!|Q9;p&nnv4>JvkMX@
z?6!k~qH&;`GW)2_(Owx4CnK5$fWyPYr>I~Fcj3pFbC)Qq)n|y$NwjM}MX$UDA?qa9
zdv%3uT>*=|=l;SBTPveg5a`z(DWi&Yh=Icxo&IE??2*CM@SWF#OvBWR`4pmLJ?agQ
zOT2r5PxTES1xY2Um^=p@n@)Apz-$5NVqYbZx_3W1waqE^4itkW)#mVjt*d*ey`Aoj
zSAzs8ooK$K1w~DWtV(KzooS52XuOG6MZekEe<#WC5jkK`25Zz&=2nQ0TJd4<1Z#z*
z)_YIYZ51#R^#v-D;?x?l@m`4#+eNQPF3;5<xTHaqGL*hR)O|mNZQ=^J1w~l~n-ifu
z>;Su{Epi__tlO4eO0l~>3wBvsakh)onx2jRDzohh+9r>mhQV3J5w`vcW~3h9(-B4}
zhxTG2S2Exy?(WXl0^#zxB#Z;Zn@Q7)sHZ|w{)G+&B@)wDH1=qEig~LG>N~^O`^KoD
zPy}9y@tUBrw3F8x4yXle^%(YD1}tA%=jlF~jK=#Zf&0yu4`H%S84GNy0;on-b;^m}
zQ*JA#a8kQ>v<kQ^H?DP~><rI4AeOEce3+^^u5P1E$2V!rDvdfSLs)wYjPMd{ql#gE
zo4wnS^1t-YT3A|I_+B)YvjCJxx#G$iVXthuUTjPTLd)%`f@9?2MHVfaKV;oG?6<?L
z_xCz(PK%932%Xm|CF-v_*&<L!4&fD@-Ca`ZUtZ*SK}A5L8GK8^y=hC0Wex(Q!Txcb
z=-CgYl`pMZ1;#B7`*dlg<m^<ed2WNpFe#$aQVTf)F9F-qDHctTjZmX(<+@)V?R%b6
zH~$Pk2{AgAw|CNzS@^<V-+{72;HmX(^|a;XF4e{CagRpk!x*&Ip}1gMxr516Q-Hg`
z-C0Y;vTppBRO>$f@R^hjOP*$|c9ih8A7{0?ep<tQ+^6GprmS_E*8AEy1&l{sIE?YQ
z{2ARw5<#N`@e8q4$s_~!a5^-g9Kxa3qAq!i_3?TgQS3h193X8PXuSyUU^QK8M<!+-
z(d?Oz&cx1HfdwD8$R}>}fXDE&(jM5d5=u9@_rBHuFZZK7gbXX4^8t7*R|z*sVn)we
zzDW8@R@_+5t{0!#u*+9cOs=9Lt!0crxH)1OeZmt(t)pkf;-)HHytycSQ6TJ$Jr~vW
z@mVRJ^!$>7Ei#wrfuIc8<{(~mNP4YPfr7_<X3p1_yJKG1VkamRjfOCo8#a^s^*NCC
zwTm)+2nk4D(lz=PY^gTwS&?Mo8ilRc0CpZgwM(RM&VyV<Z_}(tJ6}DJ?XT{h;~5gK
zryD7|EMM=KUD~ZRZnTcAe_r6g&+E72QhvLX>$0h2x1_FCR3@??X|F#l>{#p>O?#3F
zy#{eVhaohn4Am$<c&ju(o$ll19q;k9jU@ce@tkvJYGV5&v~nO2h3JH#kKYMh^{~MH
zwvKpY?|)Al`rZ@>QSqdYUqO@JMT7tg^xe>7++sc=RWCXH6fhKh7T$iSlV+U__$I#O
zqc(ognHC3VNdEIlsAlnz4u&r|+y$bsghqwkXN3-Q9i?POH$W#*pU&pAT^}oD?<khx
zWP%;9byhl_OE%V%@RAWdSR<e-zxvU@)drtskrtYpU&S%QipFG>X)57sItol&h6#i7
zTMV~$qmI(N{)%#+RgH2?#^4V8%x>p!cO`;iRaUA_>3pfX1ZL(lTWR-$0*4gZ9`q2e
zGVSs%f`9_7IF%yZOy4(wxbYLhm8;j{B%&0B&6MMB7RLi|)9q?5)k)-x^66uLYB5(W
z>`s)kPgs74?cC8B?;H<LBXKLSY+B!bo4S|af{Q9|dRdc@S!)U`q-;D-zgW%~Qrx$(
zHLJ;84}q!S<aeb(B#8_OVtT0FEjjP#qf3m{kk6{6!gw2*1H7@cxiLfn`?wd*`p5J7
zj|FP0HM581@+2lg(M6Bo)cIyb)$#`3rlS&GB@@?1`L@iS(F2bIIGC*5NLF$@Ke@^N
zR@XEdTy1YihSJc+>o4k6?RqiaJ;-@l$G7d8TKtC$T7s$12`8kug)JUgZ)kuhzwkz7
z2<|C0kddB=u3L**_8K4gy{aw;l|1}qhp}h}x3%`587h<^49NZzDtZS+4}3mRRx2YQ
zN9sBZoPl$EbDCN)9Y@TL`7t*Wl@)HqKV_0r#t0@Z#S#*eQ^W(@9$uHT7=q?!eSc%x
z=M-l4o=R{iGPmhy)ZXRjia$!JQA}QU!F=vX$><k8(T#j0nMrUhdQQ`&_?V{Zu?mS2
zli^cJZLb}{q*eT@k`&WklkT_q&hu~^1;3wxIF;hR!+*BCcu6crEZ3D7c~Pk0Iy(Eg
zc*o*p9fM6G$Lls9Z4Me=E^-}Vv9|%YX(ufxMXJ0`fV?vH3`cg#d8eq&o*_~}^&H#}
z!b>?CBcbcx4;rUSI1vW|Ot^RkrAayl6223;=pw8~AMo)7_eF_5tJsfy>q1}IVFGR3
z6qeQB#ej5v84A%#>5M6y2MW@>pz8B{+nVOI>zyIGD(kcrg;|kcJ+dC^j&3F^RMnFF
z%jm+b+eDuNIQb#nz=)DlIdUDtgx`@YT{yAmuQmvKJg)aMQzgclvwpgopVdS2o#OR}
zz4h^2KMop|b-ZF4xXkx*wi3K7tUw_4&L@HZ<KNl@<*|wKl$9|S&xT*1er^V|BbLIK
z2$gCu6{VPR(JRY_KFR(C*<L;8tzDO3s#v{nm4;Bctiqx)i}%bA4l9BIQo3G0icRUY
z)~p5a#|U0Pp3x+$ej^CWG(=~k(9kI%w{^$!#PLRb1w6ur^PdNGGY+cSVZGxDMKv_N
znKGg1_CraNWCjr-JkCkJvvrL!a%+CC;@zXR^i1DF6Ow`7YF`_Hgy_}`^(sEyG(-u}
zQIxpdrUYg9w0XwEHIjvs-j-l}8>1u=ja{4H6WL&#d9~z7hbX}CK6^9mpgYjM{CHs%
zy#AVtk}0P{#%1>{3)f;qZAS{9H?hWVhs<Y+xGDhWlGwyfVs>qnFibIjULn=uxkO?y
zCR(IoL(ywWSMPZnH>k$@bqq-tVbdzy=QooAjYcdGNzuWd)Fe3mA4|I-{<0VpX5lMx
zjX<ovdC<$X&+Js2MwT9x)oS}<Jp>GI<Og(_Yek3Cjpppw)IF)IF6I%>wy6zrb`J=o
zSV;8V+l6Vr^HX9KrM=Fswjx3Z82V@(j3qVZGZ`qD__Ndm?#m+d3|2gw<n~;J)xGb$
zwo~fkBaXPWG};KX+N58)Q@{{y=O(0J$vl1hL%byH$)Qh@w!g_G!>GDg$ilv{ja9L-
zew&ck#BQ^MnYv+6S^OBL(hq!4Zz%rRa3U>(R9;Yr-nvPLPd#+>?PC<TBLHdQmD=t5
z);V5%7Q08=+n5O~mWB_H(sVo*^}{^t!~va^Gf)0I33dUs#`Grm=u}T8?jxQmW1iXR
znda4x%GSV@?@RTSZ%*=a{1aWj>heyRocGW=K4o7w1CTRncwVh#R(e4^;X~E+7w{#e
z$oapPY}7gE*WQ9CIfF-R&Ij};YCFWS<EX<6GI4~F>_L2HC09_2s#4oSlIX-`4AkF)
z{u8izgHgM=)VokgKC{qmzgsph_55*-!VsVA3I0^UD5f+;nY6T-PUmo>TDY*AE0tVk
z*h9G(!K;#w+`i@&jssob<*G$j+o>(n03q$p>16j!01<D7k$<g>|1rwuh7<o*!4|_Q
zkBg>HHMGoN7w)+6{lQqkiyyK5E_*fmWjm2$`!6YxTn~J>k3Ubvth!(T_esm+OBUA?
z)vLe-16}H)G8eC5++cTZ!lVZRA!Z!2oVdv2H8(>m_<L$4@SfUNDzpilxe{({z1@};
zhpD*JAy_W{q(gRuW3E?&XZX+S#R^v>rZLkuNQBL(7Tle8=3yfwW+i_*YtwY$20T67
z)$*fj3FA`>mGZp32-QI8!gq@p)zaV!h-Kbgbh3Y44ROdcT3Wo=EqKj4c7JS`vGDHX
z#K~!`4`)3uJbcD#yM5RS)GX^5f=1cV+;P00+aGud1-&#XxYqAp@w4YtVqGbRrVb{4
z-j`P1ysI>i*F)(h#ymV0I&50n62|YoMtPs=`gn_TuT-+={$Whom&2oq`5^mvtk`Bp
zLnjB+XV|&?JY?L1#v~pOR=n4E<Mmq_obrlDb|id~K@@1+)Y~=naS|uURCh7fC0Mz*
zjJx)xF{ob;8CL#ug_0lUldY-$<e2C}`sul|qe13x<6=B|9BWFiUw5hz?v|b>Rpj#0
zhVl>l!X8R<DNcKLZX|l4n?OymADi`rin9_PO&A|eI%h#4Ls`=2f~k|lZmc<{KMw<d
zU732f4QxPzb6r>%Wj~U^;@il{9J#I)jQ2qR%Li=7G%9h5d9*d`+1b+|5zlf6TH!g5
zgqy3sSsm^!8Q1&a?j#s~l=YG+zs{X}jB3%fH0YM;&f%(jwleIJvO2tFI#lR;9=bcG
zvJkC~RuUM4T;a~E-e)EFq}gbe?Er`55)W(9K*q>g2)-NQO)A0>(YQ5(jCXm;F0z-y
z+gV;nW`7{+Ri~xk_?U6?J`15P9_LW1!a;(0#gjDR(5GkfB?zs>6Kzr0A1|-Lh2m=s
zL){F$@=~^N5V)X84qRo8qQ{>*y}@+bU~DdHB^I*ISRK({(C)9vf@?f$I-hx~A)nRX
zC9_da!YOk|#2%?CfOF8hc(nUNo<}>seAcDOdnE)7arWt5fjQ597Tpx-L{ljENyGs<
zUXbUY*Gm-8ZPNcd;AZwd3}{x1qS|+klYC8v_MOfoyp+@=EA=O5!RQi7p#imKA{SoX
zgLI>n&qau~8W4pR^q&|U`5&+b009389`^V2Z-^Y){}H)=qH+Ih`;VaP|J&C7i|zkn
Wv;Sm^hW>XBlt1<DPY);ld;1^XBC3r5

literal 0
HcmV?d00001

diff --git a/stable/Theme-Pulsar.zip b/stable/Theme-Pulsar.zip
new file mode 100644
index 0000000000000000000000000000000000000000..db6344a4339d7e17c80c29f5869d0360e145c0e7
GIT binary patch
literal 13430
zcmaL8Q*bU!7^NHAwr$(CZS2_iVq?eIJGO1xw(aB#cWh(+Ip^lgOwFmTRoyr5s<&6)
zbanNkA`cFM0RjR70}^YdrPJ%d2xwyi0bzUv0YL#F0MW3vaIj!h0oc2lx-yx&xoK*^
zf`G#atXcd|0leTrKq3BtgMdH;{^xKcV3)MTm6#{k2X>mAl#xAtAigMbzq9&|y5)At
zqhz_dQB_sNC=*6uNs}nA_E10d^VNAr0*bb5?%L5)8AGlQ7A#fNwZP2b_5GDp6`gv4
z?X4u_n3RZh<TJw+%X6fd8W4{Q+uiR5mbd+WJ^TdgE!Hb6%=?qe^XIirF!_`6kM#(d
znnhTVsH3jxsIHvA8nVHkba9u<iKMhGOmFnPCReF|kZaf(*;a}hox~)k3C)R0IwkF6
zb+$b%&D2y1CD|5Bijp=rJp>rW2|{@^5Qx3o0gK^9IwK(zk^PgSqlqf}B<gB23h*<#
zPDK;}kM6{LStaeuBiXo#*zV$(EX@RmrE%R~vRc+|qx5<QAtu-8VkWED3r<^&oBi38
zO#1ru(D1$bV=<fv#uQtTDZi3-24e}Z0xV{OhVj#PL?4$TtF063fuNQ<rI_?6B+ofk
z^^b9b{8l4u^jx>;f5Lfn<cJy>br0b{(SD$PnXFMk!$DX~R9N&XC#GK6)%Pdi!iw`{
z;96z@-Fi)pU@Cd+>D;Dm3@)ZE%CCuc<Q*?{tv}=Xsf{62g32yu0x?A6*g+glG&9)j
z<XdFC{++dz-Pt*LV~*Xr4)C4{4zt?A+S<5XfWRqj<+<FXhnu|a@ipB}#ykPgzYzF*
z^FG0G#=Wtl$#N#jCYNJjJHk+lUomqpBjN?3J_+`XAwp28*n#ah{sA=uK8n~bckPt5
zQo`MO5>WME6zo$Q<Ux`b%Ex4}945jP3`)eIYf}q+onLP?Q0IyR>tmez&oI_E*xJo_
zfs6S)f6zO<5X`v$Ju>zFD1twc%EKvr9|pgv*Le{-{a0T?ZvZ4WF+6Eo=<}BYnC@WZ
zF9l4rRy~pL*BE#E%Cx#6?s9^cXbwN3_6K~wyw0p#A>-9gjqn95Yh^Mp{d_-b=YVR*
z_Cg+b#hQG+AJh?F3x(s=r%8IG^(wTE5LsWpfpPE!SrgII81yzmp0$ojkZ^#sO)pOB
zE-GdVOwar5G}0N(gT4(%N0vVFx_87B*$R^Po(c}-*+JR1+6J6*M2o=AMMebXW^JN!
zKF2bsw6x`7Fj!&q7iWBK`phz}$NC*YV<*S!A=_v!jNsL*#WD=QNY|WtYmHjpnArZt
zf+eO8n)>J38wP5uthD;Q|BJAnI&2O_i2OCS<M*C?S{-#0*%aOGhRZH1UIUn4%H-Ks
z^S6>vJ)<ui<C^uLjUMoYzI77kZR&XGlt4yTQVC$pdz>k?u@ejNCiwGu`!@O@us|<*
zkN@S@V~he(NW6X<ec<yJXbYv6%pbcF_<2@V_nq6}9qk%Qffj(~V}4`^g_PlJl{`|@
zNHBfb2nNJ55m?}2H$m`JG`NQccM86XhlT7SNTg62$caqbzLwT~H-uE=Zj^7GjC5}p
zX1JzO675I#Gzww|fme3g9+z!O9uUSy`NlZleW1|aZhxQ~`ICgrQtX9u8P;G&acVsh
z)QgEgyI=(xeZ1exU_FsbztNtwWs*y2@NRNOr$kr`bt)rI2H+kLG!Bt&1v%PhE_UmQ
zI=U@b!*$wVLi7wM=2q}Zn1MN__P5UNOWS8%h;B0iKV0R|jpjUQ4ss}rM7}QMH|9lU
zbkv)jjm4<q6@2OeeLcLzMeH{v$Vmu{=JwXo;5gQKLXw)r^>@JUU4jK6LngRPO)_VJ
z-%QVGAN=wtR<8{h6b=I-Tj`I;8o=WIC18ZeD;r0169?JB5^>eq39fBJ!(R`Yf%GYv
zM3maoR@>ZBS(n)~sLvDeqB5hy4scoS#nD@R8VYfUL=OB1)1$ZK4yjf@d;Kba*W{9R
z-ZZz7xhtj}4!M>ef4d5OPK^XaU#o03fn~UAoe_&?hq2FE4O(kSXH|lf<#7MYc3*}|
zX%IYUdHg1g$&hUf9HpHzTst05o12JYYKntFfcb$Q<SB@q1T|e5OrclkhYN}<!Bok{
zte119fsfZ(+Vr?8k#L;=D@gq5676rh6zHnsWP!VSz``GMMYe*}fhx;a?S@?8N2}rF
zmoC+zWzy2RJEt>d%FcYgl1Wb&R1xoM=3JT2{;6cA#z{~l><RHRhtU-uV+^HB`HZ5G
ztWq2p5fl9Zy#fOx*R?%%_YP3h#w&V*z=6xWCzjbMFAajsNAr>TEbt=Hz9);86Puu$
zxMq=HSi6HVS8g?El&m?or^90eKMTWjMWDFE0G9?v7!7NIf9FgM;Yb{S385F*e6n9<
z2!}v_!{ol2GqDzYbA&yUav)2qr9URD8-H7X#yZ~>cwyxZB(Zm4rOYEZ@SI21xUz_7
z@T&=-?ND+uOOh~AsylFyZdo`ydp5NlFf`xtidOn96CiR=&j5W(-Qgm{_UDImc=`GG
zQr2PjqM=ea2Rck?QFGuG^TZVrQ!?dxJ<nPv+mC`Xb#4)1d!xwJDdJ>2Bu`1etxRX?
z&C8Sd_HD9l5i8l4CR!mf_eNIm&Zy>THpGgZF`l=bHtbn5o+Mwq1wWS>ew)aHils_T
zUfJkh7}Eb;k1)_1#nPX0IWQ`R#6F;b@n~~KiL3OjM;LOZxPxS_xvoy;gCpdri#p_<
zHSI`X%5^4G8N$|e%@25?vht_XEnZ31z2VcR+lUa<8H8}M1>{hc^DC3`F<@PQc7T~B
zybT5Ug$^;R&cP)Cw3?Q5>SaejelGWweMJcef5$lUVuY3OodGg#7kXdpMM{gTU=GZh
zBPd+I+y@9DdT;QO3cMxW2aEdz<(tmku|_C!s2TVUg?HY|=tYp?aoDONlFtx=Z5Drb
zswN!gf6mL)Y01iSNM<jKFOcA%lmt`C@<|+{;EDN<|BAp0F19C7AV)EWxz?AcZy^+$
zI)t9p14quUI-}=y-%?fcefz0}NH?%hAT#WWo@Lt@-4<GAoS1y=V9iU#KRoSGk*Zma
z#&yAok9S|=2(?yLUwdBt?pCsp2YuSEknX<%Uy1@!Phb3D8w;d${oG4zW9$2Yd-#z4
z_2O+wtbjUqS+#`Tc75)QKgyVqWX1bTH}L1E>7giWV0RXX1MHt2WrZyJv0_0-?aB+r
zJlsg3S}%BDlkbmTMU6){fT6P3Cks7fA<yky+5?^Qvb3aj;L+<TwmG<|jphOFSpp-6
zuiXhw>gYxQ1%3lL-?sHbri3>hI?NtC)z}{btE}bg@UIF2yeUdRV}AG087750C{Ef(
z-k`{_$gSOhu3@K}{aT*Y!eh6FAr|fEBEJxivSk~z$yfUkx>%2}%ocUAS>wr?T4n<A
znP#US9q9ClmL73VK0>ZEq5bg=g+?NdEZ*VlI$3Br{LzxGoJ>r%n<=a&OmdCS*m}%t
z-37jp_LimdFtpow``-HJlL7Vo%sAMuZ`>g!>#5jYe>v#269xV&nB|Odo%^f<XBvc)
z1GMARHu{t_K<cug+Ue}wm;-X5_-Shse@<@3Gz?=-a-ypg9%v1!bJL2D+*XiinZ~8<
z%hjfnmg0~$C1WSPz~R9BL8=lyA=LFz{(+$dc@M%KV%~;#$)Ws;2TEu4aeywDPG2Jr
zMo8~|QQ6HJafBEPtOo~Jmqs+^Xze}*JES$5zj0){jL7pa0kaob@p2*y(jRHoE-Hcc
z(Zlt&>ccy&jbLZBE(~<WkL5w$Xs4~@Au4r`mh6(-DoX=J4`f4kV!c;;@uI9`FHRhI
z6W}rU98zS`aM%w2zN&yWUS5cFM3fW3n5+SLnZ~-FmxV~2KmoFzpLtYrM^l}K^kG@w
zpe8fCGj=HKxxRB9Z4{AOXB2j^9}R066+04SC~LJk9JzpFQGJv_>Cp_AtV~CLsP+9d
z=UrK_=Z!D=AL8DUeX8Wx1lhx!)YlY@TM{Kxt;r_5Lny}>^}!#4zgiC>l|;eI*d#(K
zMkBoDvBnz9P5Bc*43rSgANF)MPl8y-n{i&ye^Bu|RidJi8gFvn+<((uA;ho=l<x#?
z!7uGa%c^cEnXXO-qJpQQATy}YlFz)r2=@?q#CkXH9R%Jb6tfpz#_?d*5zTo6F}5Qp
z{$Q_Q4M!74Tv~bBZSerZdL*3<3K=k9UTrK5x%#!Ot@z)FwD=OYwZDc)*DVLWgnWoY
z5-7St@XE<ovGm3r)lo3i65pZpu!cUQNh~lU{JnBMy@v|Z6V(+hrLb>r?LizeA)sK4
z%3azdd=ISg20Hn6+Xm2<jw46c#7V{*T<<Nd$;Z0O(Kv{rrd;(e+NoT7i&o6ylyJiM
zd2|T{;j`*EnhH`aK%>3=;PFxct&#FZV<sYR8)Uf;$o&g+^4?g~?8M!`1N|p>hM6FP
zqK@{;qB<&UW6UjgQF^Ktkul}=)H(97dBI$_pfSTHEF3;?p4Vz7c@;|fwq~A{DYe;i
zqCyI2iX3F%w};^(y6xXhNF*Nwih(Rh`rmEa$rK!$r{HMa+s<<`w~6{}rUhoz;xohM
zl43D1_&^^L$(eB9AuET3j|L%4pQL%rfkgz<gf~-c?Gg)ujK=aQu*_4%9uv?|Ck(j9
zn#!;QZv-WiZoMZe-^i{oQ>482m{KsXfayI5c=I=XZ?W8qDJ%<Ys#0CAU~7<o&%dIt
zp#n2&41bw}>y&FN=HsBHYmrY^U6Mv@8s#0Qavl)9iI4zM*zm-0dAN(=NdG*FF1Oj}
zk4W>@KV0PMwaSb>pmPn%KD&{R?7=g`=~2FtPnfo-$ZEn$w*BF`vin-Ub0Mhy<zWH4
z?<?lftJnYDn6P*3!EOro^id<n0^evkgd9912E49O%l5r<&Vw9W7VP1Vi?0v0koztP
zE)I3qI*?XE^}>2e?aa$FwTj=^L~9!3iy}*|cD!>Ex=q^36DWOMYtFV(4X)Txu?B<r
zY#wDLPbZCtMJ00#M6(QP(hu!?Gd&hnrb*8?2?L!qUiRCs4_tO4#sI{!=QQ59;WcOl
zSV^k7^5B)N4@>k6+7eQG@Ir%1z!j>*9DjyEk2v|}q`@kBD)5Y<Mtvs0@T@10R<91U
zG8uI3_I_P!9{@$y(%&?X_zDXEL`mv553a``DK_)fp{9C!Uqk+s8KPMQjZ%~$2GBev
zC>qD=SvJE@HD|Vbe&^D(o6zHwI=XciwCM(~fc~I8<4dlL@f3^yMg=39{G@_Pi&z7l
zhRMB<MarW)*-Q*vTFAKlO~k9@Xd{c-d!?^wu(m~pN%k1io`0WMs*}H>&WT?pa3XD^
z4PM_{YW<J<y6%|(vt?yeNU%Yf^>PUU+Wt$hg+i>hv>jYxpy<k8z9S<aYSul~E~P_K
zE4axsdd$%3sUqr2wW+Py*dequPs^7L@)}TbQ0+1~`uin>e$kw#g=c3K*e*C0N5@v#
z)~H}%<Gbi4SZ4_Nu4gZrSTX_rMqhxR8z3P#qDgCmamoZW+tI!XEGE{3X1j1Eh!lZF
zRU!r_TNaHaf;1}+ZBG|~8kT`3)p3x|nX76xY{55@@xQ)%H?*7G<+7)df-LG4mEV*=
z1nf}4R&PYjHi&rE-|PGq1gRe5K$nN|8}p9e#Lwl=c&wG9`xf7Stu370g=~ZW!jHa-
zW8!M^I4jCGR43}DmDj>%Z|393`11o@_Eht}cw7Fy2;bu;hv}y@y=k=fbiAQKS-zEQ
z+vSq!MDIe|U!hU#)WYirSMjKb%N^688HJcO#$`+ng-$(c8YTcx(Qi^sD4>cr999ME
zz}~t@`TgXdS7!(kisXn^HrkdIt6|&T6w9d$lK`lHNK883RP)!YIIgpOE?3eNU@BP_
zQoC7BYF$&SY0K&;fX)OsHAYe)MT7fzcFnFbNG=+09ZKTjg4sj|8uS%8!9iXB9*Xer
zLi5SB><>hq>3g2lwGu%G^zXXcqqRlrEUBLEdr`CaUplijrVE*SW%5=zXu6baDNYb(
zR1y5+Mzknq9JhhfzwLTR6TAo}38h3q(2|7O^_GT}sUjV*%&<sd0}<<s;%DQhf6-g<
zB~CExA$(F30#(^*F)h?1`15+}RoDBgPX;&=R~fHOEwqoV)?}tqhuF>Ko7rIi3!8S6
zc-unP7csGfpWCn)T?FYZsmbvtNgo@K%=uMXAZRSB?+0Mqw6pTH&5uZm2jIz19bH&Z
z^nTtZdc=eS0i4ffU&e>FISvU>4c-0Zi?}C(WqeoByfr*qsYlUH4b>nY2^1!+bZlc9
zVyYtaUUzJjmaPo-SqzyE>%*J@FDIL9@<&gwff{qhXf7L~1X|)K!9R3e&|yQ%Hqf|n
zR*hBa3*Jhm+LZ-l*h5!O`{Un$jDZI5AM`pe6O>0|UqB#8UPI(rFA-Y|We!EN?1$NP
zh6kcpZSIfxwybkdHp-7DA<majF(LagxU3Agf93a}U94viPmEmUbKh4DQD8sN6V;6Z
z!DfBgF_UWkq1ao<o#?|NpRh<5Lz{3)UwNy~JrZql@h)_)F=nQGYB$pZKsFQL=hNRw
zm%>pi-ffeFQ>(Jf=vVvdD_sdDHMeMc#jxsvmJ^+2I^P@{(})&F<!qCkneBc^!nM&Y
zXk{OWqSU*`;2W_i?YT1DxTdGbm&FD04ibBr&5C?QV66X4+D+G-VzF?I#wecBF0}XI
z-^}is0UQ*iMw*|J@r92rj$cJ?Y~k~ZX?09m#e#nHHHYrF5h%I-=#78$m2w&&0DgdX
zrs?rMpUbV_`}lqng%mwpbm8QTJxsNI@;svu2iJ{DI>+NIx-5mPf*Kk&BOeWlLwoa|
zw(Ku;bPv)vk^F#69)D5;?AkkABRoxlmnaYRUL81yn3mJbp|6BKDIr{I3CSp#*TR9(
z`|U4KTE(sb@-xCob|h==wTrX4{55+I5(Dr>lEEVJtjDTAtc{(0h;L29#P(_#4c*N`
z$B>cnK{H5{I+NT<pJQ-`P?5qGZsbNI!)D%O`+pk9ydQ+lg-F@vfDzIrt<TIu{}9+u
z>6+F#w|~Q;HHdkG5*)lJGY-I$sKbrfB7qDnZ-{#sMT7G3#49R*7KhVL|66#9LTb;w
zNgOc&7d}{9T?f9@{`PJo#Z&_bh?rIj_g_1lfqb8ER?p_;v2vpw#UgLwmhmCtn7u(?
zSIboVfGw~25BKc{YxFC;^lBeyuxZnuqNp#u%xlFc82$l$bu;hXCjY4+^o{Fm*qkN_
zo}tew7D?IPb-b$76aep`pEClkja`StkBgj5cDS|0+dIai)yA~cvN+<so<0UxjWjzM
zI7Ko3@K-P1Kkbx+%PVK$0%<lkYTN_>?n;ohifm`<LygrHn%fWPzY~AguEm^b)<rgv
zG9F!XX}j7AYZo*;{h4Qx2Cc~!9l82G%znXB`cU+2jZLP`#@j9~53t98@5~Xvt3mlP
z%y}jh(NAnH7^oLmRhhL&83bZvj2ba#B(CpFOD4<;Cx;MbQ!o7v;xA5f*9hwLwx4i*
zvLLaLJs?esYk3J~Y>e~c4f$rO=clX1Ha|i0?Xf&AjC9KlIH@pyx>jbjayuMgke-;p
z){G80KfAaYJV-0WQJ(##jn|P<ia=*3{=0zk(+hL!)NPQ!&Fq9SVv8KFH5*ZUU6W|D
zM&UL|WbkL2ynF|9;vzwmx-7aX%sBCsbBjy}b?=yU;V$F-gk>6!wKe{C7!)51Yag+^
zH-d%Hdj&caowQSbMXPEy@8^o!CfEGp(_Xq2HdF6NQMB8765U>9CEh4Gr&CSEFZ{q1
zZQu2PP9k>`&K#kW8X>KdGe7$tEV;nDSw4E;9PUecLJqLI;1_Rrzm8<_?UleH7xSFc
zYKGHyZrLWg@Tt>3wh+IGqEZ}lLxj$_KsA8XC@DMxUaLL<AoW@w+`5S(&WZQl$QQjJ
zTN5sNd-1BM9~Rr(h>89|Pb~pzXSu6XS!3~#Z@2#8g~5<>ZOE}BKEX6XfR|<W2~wYs
zewI~a0GlEPOTniNb#9}O<CY8JMiO<YIH2k{-fdSaMPo|4by8h$7!z^_b|^MJv{D|c
z&8uJ$3)-ljt5yv;LVUq?TccM0qH4M3B%z19Z*4n#=7zIsr}&!lrQ-SdL+st?TuX1a
z-m;r($}a-HcV-i&{HZN>MS6GU*?JP*R+B$vvO?dkMwWUmti+!=@9;$$T2TUVFHr48
z_Mpp08Ya#54k|(3T=_+N*ICK?XJ=>Sx!r~Q-`uJ3LV7TAu3*bzo!V3cj&tKicJQTT
z1CmE5|0Q%>afT|xpJv+$_KyCyt0~XMXi1MYDUW9+(GXScEXBqNpSm&$Enb*mPKwiJ
zZTXNP3W4xQ7??#aug3Cj=#-V>!bo>1;%Su@q2O2(VHQ(Oi!#fcsB$Hui2kO-4n*SB
zt9PHFlO_v;pObu`1ZxK&WgYibDj^@})2m$)W!KZ8?O`NRm2Yb%d`9tL`7UP>(T&su
z`!h<K!?9cZ43}8!Hf5LUz*b^@RYYuzTfj^SGn<gli<%NtgPV-AfOQo?f7$uGK`zZH
zLtE+Sp_CC9ynlkhIw#iA+ks<OLlngaCi)5%-jgE}>d`NWd=RrkSSTT+9z8PdVeaAe
zGn^@~NID6Sx~)z+e!b9fS@MK1y-<<~%f$sgf^$0z=QzuA2x@+pai#GFbVGqpz)r&u
z&)sm0WGZh3q^L?oqzXnkE$((4A|1N40j(JYTg&REiA3GAogn2RE}~H*GQ2c;b{s(?
zM~gQhhChG0g*&vx4N~;!BSDDZQ4wfd3~AgHX<QX)++1VISHE{liXE!_I*NXWIc2b1
z(py=dxdUhg?k7*aMw8#!VUYXr$o{FQbDNG>8fc$)-xhq71UbV`2J~$;QL$iueP`dD
zL{H!S#rD{VuL<$G{{f|hDgSu?F5v<NFEQmj@6F#;b`rQ}f6=__(--(sq`^D+lHNm6
z^xF`JIh7uifTMIz1M@r*SVpY%cy~5!o}Yj~{yr;c>kL22gG9=9%2`^B$&GcJFAK6s
z!PrD$)`aPvPwdknrzb$TkWlX)k(%4W3NgmXl!jCxCeTh^L9GwHF?7nlF%v_SFwBjh
z$MC1#5;%)b1&fz4CR>{n<1>_5Y_|&m<r;s+MRK+CGO&bu#RC319QzzQZXM_&an>Zy
zE9ofMQlLFL5(U(=CVBj^bdRv%k;zyB?kb?m0h}1PaAXLYHzas%FUtM-W&a{TNVdb4
z5J-K*KBq?CEh-k14&^brx0Kr)AecfQNK~6RYO{>VrNP#FBxu0pa;1Dqt7*W^6;(Lv
z=#_L3_(qZ5Il9M9ldJ~UlT`kmTsLalj?Pv#noY#6y1U}3FiO={NtrV@)-elE0mmLE
zPFf88q&Xk`3h;i(CCTdFzdh-A$&5;f9m<i|19_1pTBpw0YgU<OT_WL9;-n1Lm@ZWE
zVK^_A%Brg;uD^xSLkDN{?#A^YB%%@Uk$f4YiI^U^=&>{ZtC%Yg4R(otPq+Zu@2~#2
z&V6)BL)ogl03j@GnD|l3V0SZdYmeXTB-iC6Comtqxo?Ky7do}Ja#(>auP>geI{K{0
zTcf&FYbe4M>_6N2Ul>rrHn>)}NwFrl7U~}iMUy0PgWc{J`Ta%xpadgWUcO)GA0rZZ
zp<p;-RBnr_?-O43$@fBW4ARJ_OG=LJN!g~*0Dp2A0Pt|On66{1p{4oqZ>`bMVKo?1
zNt>syBLF*^G!5x_B2d;D&v7SQL_}cgXUL;x`BqxLl$B3YlPS;#<$i?7CNhX-#`5re
z$S{#gKzQBl?{~;-xDSL7$?!}3=Wr5*b4@rynmAZRr!9Pac;<})A_1w7OG367Sd!w>
zVL%cez=>=>)7uoIMvs~5JY;nLnXgh&I>|(tuYz(lW4v(wCyw4^1^%@^;bHS7NPMa8
z?3gL-JyWcVoWm8I-Rteo;d#5<+Xgz1$5;=HTqL6m<3kj^6;gTH%bE?Tw#U)VyY3#|
zU%;Y-2G^au<{6IOqpS~Zx0+6ZX6e{I#GcA3a;pu22sD8Wx!-(1ah!sLHj%CAd`PKH
zD0I#9U;FY1cQH9N5>L1nh11RAf1Qfp)IkcHRHFz*cndS&nSEOE&g?=U**&g$w!gcc
znVO5lgC1<+OhjWfu)Nmcq9DUj^)xUgD(&lIb<W4Ci#T75WkoZ+y|i{Jl(&iQ+hy&7
zQCoa50+*tM31-3WP3HWin^6nw53+#?<4I*8AktWraMPJy1a|{vRE*f17V(vN_VMRQ
zx>qNPFO#2seTLDShubbwHC_TcOR{&G0hS3847YPPxO12&d#R^|<UXmzb24>hmR`Ax
zq)Yf)v>WLhn)gZtH;u8kB5V%0SV;>AW#iVs$hYMnY<yev3}YVDrX*sLM6A+FwvvbI
zgOdVARB;4nv2jg`pf8b9U~N_!4(`6lfP@@b9NL0f7`Xm#%hKJ)Wxr8V``4vg?ZG?z
zPTgV0)P^k0OUrc^JH$rPwrUm%)V3eyfgBsPdkK-ILLZ{viJ<eAhIxbbfntTxypc`1
z+P?dL9AW;^0>5hcrNPYunm1Hlm%F7Sz1Y`WRsVZ9DIFjMDfrW~$XhakS(2#``P#Bb
ze1H2Wcry{IET0<rKI!Lp4donLBSZUs@YLqiP)or{$w<prFmk(C-*3jKY5lgul#5*|
z%TmD9;nU|2(%AA!m{5m{e@$wdR3jAP9aOF^jY~^wK~ZHG1E@7aH?SyP<zIe!SHvsF
zu)(_<x%pN!OngFV7VU1_>DtsJo&LJq3V4igVuE0KaWmKVh<oKdhEA`LU7e-)!h9e|
zYJS&}qfV{$XJHatn-630Ic-WbVpRd_M-dZfoE@PlA4yk<F^xu>&W3%hI`E#1{lKo4
zBIl>aU(wY(JWgL;b~O<uZXp0jF-tG>5U5X%sH`r#Vq{#PsI%{Dkvzw9k)G>ZEbmi*
zo4X<UJXcvIoH<yP8J8K9-P<bUJAB>g?mP1^fxJWY{QATamTCNsw{j_izOFYdbVLq|
zS_>whLoIn4YP@31Gad93(t$8Eiot>y+=wpTVD3*%Sa&oLe{<eC1Wdj};`K1tG1sct
z;{<<%qIhQrQ1ypBr3hD*L)H{OaA#M`lcz@TEdhnJbi3WTUkQ|Y*e-P2V<0$@l+}p`
zv^>L^NfoJwQ=^BWazODG<~%3dxOtVLJ2j6Zmo%UhDnK+%pkm8cwK+bGz0C`oscwFc
z*Uta&!ZL@?+PmcTyY{%l-`<D}K%{{1^*zx4E7qjeRQAVstl_BmISUNzGVG>7RfALb
ze*H4u^9zL>7@mPaOg&5V=DpGip^fS95d4#!6d=KkV$I;j2xSRhj3=(OGMSZi4%TWN
z%WBl=0F)9YR`1<%^ai7f6ryotgk<E3D!ef}tb6SUT%YqKWg^+NcdF*fda5;Sld7wK
zcrNq^MiPHlSA#z6aFW*G4p1@9BLaN^T~DF>g>@pxix4V+Ty>Ad2Jxy)f73fEees)k
zK&o^&eX&&Q6*1};$RbhDZD^%I=?Sb4Ji}EflhUwQp{+F^EIy@+pAz@Q{;xl;%d);A
z#exowFl`a5v5ifF&8avWte+rkV;noi9}Kc6{zCA0znSr?I&FTja(<}NX}H}a`Do-r
zzAGT5n3VPP2ty)XQFy{NZU%}uMXT)|1wyD!m-FV#)QHVIOdDaIV+v-|4dA{!SA?xi
zdse7~3KU60x>dXJYd|rqzHQS+dsrOGj-t*dz9q_|qrp)g&4l;)^MM5-ZEt<~rFbje
zAit^y9~JD-Ue>cAS&9W7#2cj*u4U}e-za~YHaZ{vc1Clpe;_3`p8tUOGFrY<=zDoR
ziy7kTh31wB2w5_O@swPH5+uL2QPF4HlIT~5(SfyFCXuEtMq9glP!rUq>5jgY()?4q
zx7QgDkKMe@9>cYeqf8o;B^oDBsb6%%<LC~UR1P1TU5!Vdkmr>NYd;&?M}-RJ4)ptS
z=qKsNEzfMbD1)z}7&%puErs+*&ebG^Rmjwk0&|d+q?k|D5Ce0tfuxw{$@i1c4<s4^
zM+Viex%)ygu0vBT%qK0MdKjcWD0;ZMxas{kVJ4-=C!VYUv*vv<>F!k)Y_t+;*q|0}
zII8Ypm&d6YhwcI2ei6Olc=2cPYo0hcb5_nt!nFB$i{~bQ0Q8&2?4w4c%Ew|aKk~d6
zqkhh8)tOV>_TBx01CJPYf&X<3ED=+;{O@{MthWb$_Q3rzwPJn`BvU5tsQ4Ts4pdk?
zsy`W_Meh~E)^1FMZR5N2pwC(#48~LCmLpb2qYmG~q2Yn%8g38KL~(%CP6&QUO+e9a
zlp?c_Lxa7jT_{?m*UkGat_b^B!?j_5;|*X8Uu-qrxn1PMvcFo#Q;*}wzs2?QCS_S+
z{$?U9t?_$co>$7X+oyibnhieqqNpU!Kt>PvH<iX`rXck9`p?UYfy)u<uNY5I+OI~N
z6YiLBZKoKI?re%pn-_IO5j3r0G@gftvoXdk`51ms64VyTCk@Hy3O19w*fNh1r6t$i
zAMZ<?ss6ay<{Z(RTm{j^BoOMKm!p@ene%-0Y`u&_2*xnAC0xqOEed;jk<bFIw0fOt
z9*juHG-orkbk!AFwE%M|SY(AgJ!S+d!m>E%Aepf(=L=G36ig>Fc~OwD!g5S1TB7B`
zm~u`e3{mUz{aH4XG`=MGe#=M>GDT;_uXAIW01<8L?0mR5Nm>$~4$dMqCs%mJXoGq+
zY};uso=D%W15eBDh>%W)ywnmLJ7@jgmgS$r5{$eNcup)_r|hklls8Q8?U@CjT9UiC
zyq~)&2w%tRb-NDp=|o%XE`v6<s{&(E>^kj6ozsyMEG_M~Mtvg39_3mFB3doGaX4-r
zfL6OB?1@2hU=p_>GMw&LhL!6@(9ICj-O5_d>JB`Q+%R`iW%;my<Zo`UT~|3R2?<Fi
zc?SV8(0H2V!<PC*+8@veIES7>dve%-GZr>Yn1h4(qV9crS?`tLc9Yn(Ro#NdHH^+y
zj?e=%5Q!X+h$2Ew8z@9)d#IiFBFCHc-lOvA%iuipQBMr&lab?W$oYq~k~cMYef07>
z2<ARvN2H6#AwM?*({F>b<$LzG20?A8*DD{Z{kW_vAdN#!Ar57mt#qYl$BbXSvo;pj
zZykqN%u_k5^n3die>t7@7+?ES@~%nzoHCA|zt`y`XWBiu!C8fRv-Df#bMm&)0QQQz
z+d+oYlvkVew-o=Epa`SPh)0@)`ue?V9AY5a`_&ax+CvngAz^HteTKxqbxG{dp9&h8
z;`ozyA=MTmNQ_X^AvKcCI=$A6f1dmyTB_v?NDXdUQ)h13%126u%TmG@-3imPD{hvB
zv&Hk6vGQL%I19dGYccov5HH%Qp=dRefI?qA`?SxG^u4wJHnk%hzXjgjxdknRblHt?
zQs_1#rJh}fOKGY0w&t`)2Q2Du)*A(rnEyjnXrHxR?ewSdSMqo}SAgC%`pzB<&8iF|
z96D^Hj|4{RNx~4!bbpj#O;d`d@(hy&+^&nnyi9-~)s7o)QFeS{rK`v=;!l-RW)|;P
z<M8)U<4B|}Xhh?V?0#H7NyT@$rAFDjVX2hhuUSFM@+c20{*=dEH$jQj=CjO)C?mVW
z_~Nbx_UzuNfAO@f-qCXMP3-g|@KJ93PRQe9B!H9(2?T7*KYqw5A8qe{{S&%-PoA`3
ze=IKdXGX-$@$rM?M;`sL-s?)@s62~Xh3&ZwY_Na%cN|j~Vyd6C++rytZ@9+odZ*?8
zQ<6jpiM!b8O0Q{LSvE|)*?8&7BIcH&`!$JlA!eOw>_F_$fk1Xxe6r9`Sr}btN^3Xd
z{w*Pksb}FDj-c44VL%OXx<Hz}n$30WOv!UVu|QbaR*}n)VuyzgAH4-k2=1g3Yd2R{
z6+GXi7=-7jIxZC`O|j1T?LpIOr1TT4Q+Kz~*>>$f63QKr=FRRmT!+@jfdqnehfRNf
z-rKt<DxMt5=5p*u;vqwey=Y9Or*U(gKILY4ei@Mrox_4!!0j{R{zbiw!<0eC&ua}I
zlk!9Sd|GF01oNTfd-t+%EA0(6Ad8$i&-TpI0NRY&IW`H$o@!980oI2e!w&CJrkUX3
zyUnas(*=2LYxYYrP;DT*Rl~J`t0lYN4EZ7{v`bBxOPs5m!)WSTfu**fa7{rDptQX+
z+*T%8PhyZWM_WIyjn4P)E=}p5+Ana@*eTuBWx%11*G!y+pv~kNhfl8=TL#KkOjW9I
zEBz?RDSjClMH}~c2(uIR1L5f$Jmt+6jKV2;*74?crZ6#gm;*8HOADohAQ`#Iz~+A^
zv2{gStm0xqYuc3fT)iP7{Wl}UEgUt;q9%;GOyN4D;c|!$6WOPztpj5}%Q@Ga``>sU
zuc#Z&z&{|7((WP9P<HC5;6wjn_sNbIttD1O80k0Mfxlfj=U<3^$w<`{E_r(-dI7uj
zzhc^kPCL8XECZvxI4Vm9W~VRsJgtYEh(zt}W{f(C$?TdwZDv+u+J-(3+i+6S|Asqy
zF{_)GN^=5r7<sQbxI3dkSj!jMA0WBABjM0H#<T#trBf@2=tam(uGw3gmxxIZ1=}4l
zT`8^&vZ6Ku>Z`_wB^>KUsy1fqZG&Om{P)DSnRIxFGpgE-GU1yfRHeYiY|XVN1%;kE
zcXWa%YA_qm+(vJ8r>9RKPn;!nD-P%>#%y=TmS@ZQf^L*lSMte6*oAjtE}yHf-D*%B
zxRU05;19cuc6Wruut*kM8y+_}{95zpKWGqItKfjG*e~`xz{|(Io>#r<%Xwv*q*RH#
z*j)HqD<r|3S;JppKwQov8AjUea~5%c*8??jndm5$wIYW3(?Fy{sPsO6`fJ&U=Jb2=
za#d~jrj?LQrrhGA*s9leNJZP6dBb$SOg_21L0m^A;w%}fQ<iW%Xm*GW8};n2TRoXd
zdM&K9m5YBC)9Hr_0oWbw{oso_+GHhkc{z<UVxb1(WFhG=tNxtnZm-=?T@V@;8|~w@
zQPf8e;XhO8MMl%&s>-G9ufol_&?wCF$D9oIp&kRt>cXz$q`jG!8u$wCfFBz82PjEP
z8664z*C&8=%B6Ro|30WB(5Yf^BM8EQhZ)P$bzaz^uB7xdhf-1#p82kB4U5sw_TUum
zKoCJ2Ol9fRYqGLt6bb021-TF3%H1&`4mB(fv>t?XTK!X1B5lEj{&@BLF8BNaZ)>PG
z{4?Xhbhh>$&|x{Pv*O1}$%6k6Bvl3l(xyf+iFjB_0kHWn-z05fjX~ogJ9worr`XT0
zh^1T_&f)}z>J9rmFv=*xlTMZQA+1kqzByW{?tF8P`o>URt-tnrk;k$XCjM{Zxhv;O
z_=hgF(wF^9iTSBCUA<QdCHR=C&zTsDkhg#;_|wY5^eVKJ0Bcj4Y_cJvW|rm8)C<{~
z0i3yRu>3l%GDD&8edWF>*CH%aPPU;jD=~NUxd+Fz`w)>Yp|G787(ekb6<rxw&kF1-
zV)IhAyco>)J_mJV0`?ff0{bV*O5sg@PeKFyn4Kx34*krxhSKTFG}5bOFS;bVxy`r5
z9=E}y9td9Ku9rVyoT_x<@-kV%8CMIO?e$a7PLeHCp*Mf-)BWU@af{`Nk#=d(FC;^y
z%RCEQGA{2Em6URbn9xl5FwnxI_f8KHkuxIyBs3CQuyooacXSQd6=DL;zoeyJ+LiE9
z`x@9XJMD)yuH>03&-T12kRk|=S=%W>dF4SObRr|#-LD#!g~eYvVwJaH5+BJ=sL%#G
z{y@DBLsUM~3hY{V1LcfGB5pcxFx;zZbo9yr&POsnV5JM*U;I>XcU*HePX-<}60eq2
zb|I<0UMD73oLqGkWql)+@0+!4BLJho(8b4dzkGy~Q(_zP#Sl<wvtRP{OKiBaxTal+
zc0aQuki)?+g0o*8e~sm1)C6nwmyoHFM->ZVScgN4LV)6}zbKMH*Kf?**yl{pW6s4O
zG<4IVKVETsV@+Gp`+4q9!D9^V^W`cj*9)F~E%o6kUvCCZ@o2>>mOK-8kJ)Kg`2F3J
z%vFIE{xyMS?Y+0<pOm2FE6|b#YHCH0p=a+%LL9g)oicUzK@OPQ+WNZXqIw*PZYDn~
zrC`29ay@r(R4GdrE*VxyK3twx_U~|#WHA3mVT$@V{|p(lQ!xCZ$aZK&RsxBNCpmSJ
z!m$>JHitro<C06_rZSl;uZIZCa8*zrH%c!x5}S~|Lq*Rq?SS+wBJrhuOKzI5yl+e8
zVIOLi$tpTh@&}?x66cohUqWpJO#$-%vH$y|A_=e2EL|i>E`N%E5^7NTnq#vEpkC2b
zA9A@AtW3LS@`}QyWxah}C7dqwi#WCOgopR}E@mG{y6}yZtiMqeX_r3n3W??&yy8Pu
z!fo^iOS}YQ<%(OT{sE^L-$$*JQC)z2DpU|1XDVWVXOSF0^!P_YOhI@HeXa`#!5Cec
zhA|l5%Y-;l#D*<Cc5Bz$JU)iP%z15)lZQCNbOSO!MYr4tpGGUrwwn>U%`{cBB?-ES
z(x+9brTWj&Ns8roQjq7fVCUqTO{Rpe61T+qbcr;Y)q)j8WN8m4=gDLli?SkyTT@W<
z@LqtxoPeZ1(35J)z&V2P*3UpBHRN*zY&05rK!^PF=i*L20=ucKzY8Z^GPhob=IA*k
zC`z<hQJMP&58u+zcmO>2KgtV@FGMZAu-&+!>7F&?mi|4b2O0MWHJjJ6rukNc-KZHF
z5%>pR=Pbsv$PdYB_NOM$tImSaLgT$#E_3czxibZd-9;C9`budbe2r5asaYT1&BwA5
z5n3${vMO_=YyWDaP<Wi*G4r0mtKNxfBI_od!_uz@9nnvm%TKBt)`tH3^Z094H*n=j
zCu>Dq(2h)~U<iMoP3C1r%dv4pHc#kjUm?egI6+NSk4p=+^sANR_=cvL{^H)WcO%{P
z7@{d`@wzXl3p!WX8rluvl~f%E3Tqt1$P1x?zvlO4==wySk)(i52Qnq#d=$LS{rZCp
zMo5<D6)M352d4zvy0R6fbS(f0Zl>gb`|NOv`ZWVhwd4=g5pjeX_>2*&8)e}kwB`4h
z`LhB1xu=}g-|ymvY_wQ2*FPaxhh5LnSfW0x{X%}T=<x1;#D_zZa$UsX5i4?^$X2qh
zuIAIEk4ggwo2$Mep3FF3S@pQ0g)!bIF?fYkO~fvCkNlDBoSRH6?Y$4@>)6uYa$i@J
z2wl>u`Rlu`9|WrVmcrB3XMMer{UylM)#2J@KSl#klgJ^Ec}~mV%598L{A#f$;BK<w
zU+WrXEk3AK{ucn|A2l?V&3`b9&wu(q02prv`~N=xW=eiqu|*ALLS{x$b6yjMW`<UY
z0VpTSsKhkMKr=Bt*Q5qBE?W~sCo{#Y2E!!FFsmX{so^{|S2d}i$->6MHqXg+L?_Qk
z2UW$r+%(UAL^sn6R8x^*VuDhI6Db;?Ium1<2ak3G1yPX)1tS9gzfn6l|FsSR0{Wkd
zga7C1|73U||6hjZf8%%lch~<livO=GDEt5B`u_y;e{+R|`k!5Z{Wq%ro16cu1p)aV
DY0}Dr

literal 0
HcmV?d00001

diff --git a/stable/Theme-PulsarLight.zip b/stable/Theme-PulsarLight.zip
new file mode 100644
index 0000000000000000000000000000000000000000..5fdc1d40f96fc786b5a514e43c698ee1ed2396e1
GIT binary patch
literal 13481
zcmaL8Q*bU^5T^UZPIheX*tTsOJGO1xw)4fdZDYsgj&09B=iHo`nmM(qYptudR(JKq
zTh;w2%7B5R0RRAKK#Y;PCMFHX+!8YYaQgxPpabv#surfUrgVy~HqM4lvX<r+F7(FE
z&T6VK05E9YRnz|&t{!jz5b!fF007+oKba$5Yv)7ur2MNtfe%Z+)#ZUw(v7AwdR8Y5
z$+Fu=j@ahOHC0t~(jmV`(JB&B2wB)(HtV`T5&+PXjn3ZQYUz=-FyJ_X#k<>k>lzXg
zH-DEq%>=F+sp;33v+Ow^);39gGMq3Vl*a8q{g1*WBrdC(4x8#SUP68@3olP>QC4{k
zT?hD=99zsdx~msS%mWF<{raa1IiFuom+eM&O5MA&8VC!#G3>P(Om^>Wrg{wssr6Sa
zdn@JFd^A?Y^cz^spR$^Gdo#z56GqUxj<p~I_E7mf(r>%v(_i2*9DIFz9y`};SoEFM
z0gtZTQ@?oKK8b{yY`YJ}W`xZy)w<jDQ%C3(y2TRFOV~|2qpY`(WPPWxWZ#+JY&Di~
zGa3i=tUnM8`r0mB8p8IYZPIU}Y@={95)Aewt`W3411I=&ee>$oa!k9s!?oN!XJo)5
zd`}=QeTvh1j*lBDIc_sX2l05#Uq<3;9D@Oo-v)DHy5s>w0C*ZoPu+@%sz*|dy-J+Z
z;uvI9t9)xBeEns>xiQFt*=LwJ|K;<kCc#Eu=eP0hZBDx5$^%;XZ1ho{FX-@$4*Xwo
zGaC)FGK!1N9rdQBrX>ZAD!ns?sG0S-wi|tWzpsTK+b(YGZUe@T&Fc2!<Anv}0F!x#
zrN9-q%fp+e)2=rE)c!cY8V4EFW6#MQLe3m2(M~u0d3;+PYeZkQ3Q;RZ_krmbc)-p6
zV_M&?HK1<ND4TwbhJay30l@iPvvqy#e_nm7)_Qn}x%Gk?@Vz<rbiXU0jx(=827`yf
z1CA`XQ!3Sy*T4v!*B4M{9f!1ev&ktHaA`){@6RCHDTtHX0D;o<1U%9q0L$o3AgnnV
zZen?+jiEpAFyf23z?qNu<TjQ`;EsIq(NU#x;*_09gt}`0ZSU5dO^@6`0k6ND8ymZD
z@aT@)GZ#JDhS#J&yQ`*+%F6TDY2%gmfC<9F00>`)t)7t(G$#LJ`N+F@g=y9;jEQ=H
z74YAy3Tn#V&Fv;4Qp@#t(z{Z-;H0uMr`_0DP=FRNQd*-Cal!o(UN;Z<B2SJyb&q}|
zN|T|%U>P=T38(vc*URYp?zwH_LIEIXVRYS}w+0+ON}z7E%_EfiuC+l>5)lukW>iGe
zji;F+oKg!p6$lEWP&i&T<#R?z%Hua-g)BsvS|ajh(Mzq7iG7<Q$gMWYG*D-#(ima*
zC;t;1&J<t}0tKbNw-&g&Cpoz_2LsO|<+aa4kGA&LKY2a0mBCWpL3$Zn<48j6_!n@G
z6Q)X84ic%8upZrh5K%^!)9p^fWvFi=s=(-y`j5aU81YQ3FXnMBtso4ep7WJVk>O1e
zkq|2P4l&MB;iT&|3vOmTPH}SoL;bJ^lnr@x$qNFiEv~6#?U0>5PzCK?NaFn=HGTNF
zh3w3{T6gA9#o(J5i|ExFw9oF~zL_|8AmB@-a~;DJ|D+{&&Wrf4L0hB?wD2zs-~hyP
z&31}Fo4pnXlMnno4icll_|F<?UbFI&#_N#L=fTxEtBkb}(S5s&5O}(WK6x8J8PkEF
zyI1V$h#Q8J)P`P3fo2F$1L6t)O%6%__aCSk*ko2zh0m+F%!i4jp#Wa0&yetI3B&0V
z_pF8>$;Cn1zXeJVEzNx2*;SzAGPUHO*PtJEWgTY(xt*x(1k2h+tZzuOS%DeuYB}mi
zj3vEd5gim0X<wGxU#MTF-P|8anF{7N300LWyDye^%W!Vhs4g;~BI5r2wdhHeIL!JC
zJ{?2w&EN@|`e37;FkQ3(o0eL(Rkn|kQ8w5lqWaKt!Nf2M2j`xStK+u6w=q`?^JLf=
zq~|I0u_?|F!JkE&*~7V+B4u(-uYNby`d~=+pwHuTqc%xcol@vz#Lm14xcmcOZnBK=
zDsW=0!95-4q;y?hm7OrMg(X3R_?j!{{)I*3bmFODu5l;LW0wVxGf9Rcq2gags|Vps
zo^Zy98v*M`PM1<{$f)VZ68qbsU548{@#Zvv8O!P-<)}(PgstvjBxqiCDpBu%_S=UI
zI46oO35$8lf__hqXE6ufAWKd+a;hLP&mZ=$Aw~7Q-&xFbzXObZW_8w+DL?|OjW#vK
z8!<tVI!u|?jY>m{T(HLI7ro}^je@9q<h=W!MB;D-r+k9@G8WW_LOY+XMIl#Uy)YW_
zRba*^3M6?TY?DZJ;fc-hr3LYF5O(h`gvtEj4nrC#UQ81IE*hZ~%f`3aXm?kkVW@i}
zAzm1a7>b^;H0rJ;=Y-Pa@EYrCM+sx9NI?R-9>~m0bsG(kS^K|U2p*_Y<*&jXZB|bv
z+cs{e|1MhTPw?+%@YBqfG|S6bg^oc#Nfc7fOlY2ZmMEUtlW6A`##sf{TStW@iWBR}
zz=<^<qQ#dvw1saXb!jv`<;=-m67dEIX1nXz=&NE`kwaYrr3+{qeW?WxBMrDulUGSF
z3R(SEHB~@RE(ciX<!cg;#lnJ~9>K=*M!d%P0i|o7e&c!jx9*f7q3XD-P_{N}+!x1r
z!9oMYeuCt(Pz;?B_;lh^ccM8Wv9NNq_H#LhfN#C)VyNHXch-2UEMU~e__Ljp(7T4W
zy5F#$XGb78GT>uy%*qkRI-w<6rriI4B8*ef?=ERTHQqT7=7KuEhh<En@OUg{>o8S|
z1mBs*LO*2;ojs1>Q>)awT8@qQ-pFR*qJY_}Emxb#!qklS-UNJFc&T$9EUA9VXgyQI
zfn_&nW<mi6GX!2hLs1<Xc57}aaO6i1g;4=r^u^DUPK>;q+H~G)$|gPO-b%YM_0H9p
zzlMEum4_Iq29S7$i5-@~O2KA(g~-A_8t~zX8kK^E_nHm@)`a%Ry;wH?wL7tP$%CBz
z7352L*jUFz{}EA6D`q03pe(As;QRM4>6f(j$|i=+rD|ZNOtK2N$E$%kG9Q0^6S5xp
zqd&M<>TMVHsUj?P3xO7IT@<{F&taJ7LMUf3D6I#hl^N|k*+83v37XwTG>-O4VaA<?
zY1VvMW`s=_LebE)C7O+iG7XPw9T)ypL)qL5?h+>0SoOjBDIk~|RMPNwjg_Tho91^(
zFn0pfAi-KeeJDTF-W?O#%if+Z+UwpPy%_rvI?8b&4?UGKKL}7)m0MnXF<AEw=ZlHB
zZ!06=K_hAXDYlp;=cOURIRKm3$Dur|Z0O%26t5FKY7Nwk86wk(wQ-g**RQ}$VsoKq
zY1@pNQ<1|tQEJo$ugE;tvSnPUe&eRM!EIcM`&phV=wTJVlcqb5>g4Ho<>^9u3e%LL
zB43xoBP`*#B{{#x9NLYc&{lRYw70*(VeXmY=Tq~9e3(`nVFh&@>SNR%i;b*!A&Ux+
z;llGApQmRZZ+nW+<bwn~0lwAyAq{hXqfH{n;H7&1h=Y+1m}IRoQ0*vMHXz35@WdFy
z=m6F7kZdpRF6_1{EsOEX(4;cjS8{+H?EmT~fO>S?l(He%4c=puxMwQ`i~^(L98!0A
zvZ)5J{CYddRdmeW*nJOzEbL~s@S`x0S&n#x?OHh~f!2lw0QOcbpSsL@#JYrObuw=4
z=m)lIFRh?sR5>Npz(TC1BmQ`fvmmt>^srjshrScm5YL2%ArDR}`la6N&UIsq8l1G6
z|3_G8x{?DX<lg{hL$30!C}(zCgc?|ZMic@d*EEhw#9nu(b#4k{N!YX%f%F0?#uH2e
zQicY`2bcE2q~D+6b<mh}s>`?hfsB{A;)xkL9%I362P1bYMONWzAG06a=yo7P%zP~R
zTruO|Y}~O6M6Yi2HZL#xiqoa0?8V>lV{jv`Lc)b0;gS1i?srMKqiJso1nA4G2Rgo}
zYjK-w`g8mQ^b$e>e!FN}-o(4sUvWAqkslGt(Q-KXZm0Zi&*+yfBnp3?2xEmLqW|6u
zy%5tRS!gJdrrtECg^t;x1Zk%X_cqXmAAEV!PD&vn)m*$P;N}6Dc$O{9oIsGEL@fSN
zG78@c$9$ll!zm;~&u%O2x}{>Jj+*-Lg9qW!P}qmJy2z^O5#4EOt96Nww#e_<>N2cY
zgaod~C9}m9%)d!9;~HsUgk+p4C)9Tjk??yb2Z5I85|D3)8(65NPJ2la=1n5?D((vY
zg<nUnj7EyZTnOvFa7t%5$daL&Z$Pa*dH^SOK{X`Eanz_03!4r=_1Rg1rWLX^sW(m}
zwx1G*ltWS?0ZWk&E~hM{YQVNkxU>QzohR+jh9C?3yS@U|ym;a*>d`_xC7DBJ$y`{d
zTpdC)Y#b^K1%rF!MI=5G3w3zHKH<Ci+kVIFF3K=BWPUtFg+xiaBvLAxo36lXhZPrt
zF+$0x-(Jr=XGVn)^zX8jf~Yyn5O3CdGC3%TbXD8zV8>@IZDBu>Y4jqTiV9u#uxbB0
zr4hrW5UgekE|6~i`zTLZ&vX7jcJshg9o?yKIqovC9pfZ&tF*yvMBeW!b^8HJ#Zild
zq|0Ic@iv4EqOP8xECC`XL+D%;^SN+Jnv(01jpMIonu$gI;;XJXd*H*wYe(E%vhvZp
zJov+d(@<|n&)Xl^ki4z!7TjkAZDt0pkx@lfrTIesfE5ZQk&DTDA7~`L42Q!aBwYMx
zPgX0!=1y_49_-vbW|4t<`Q(rj_Fz498=ZSxw95PXHtpkbnx$2WV|)wH$oZ%c?mU{*
z59pk;@kpB^R>@yi`B#>guc;X#33Zr=gv)$hx-Scdo$-XLz9bFB<;Kj7l~&av;+{0F
zdyT(FhA9Z^Nq!-{%SVNvikD#DbAH4@Z?>pJ@hkwzXAFQiDZCQ?u5C(Y_1ZDa2nKAL
z8WKgwzy(Nngd$cxFfX0UMqr|>ckylKNMW|~-|>{;8tMO>IgVSDm19IScG7vmgj!$?
z$oM%5Y7{P`U=}FySa+H~?^RBUdOh2KS51Fkfq<KBHV95}0R1az154R-<D)ZXnrS#?
z?K|nU>x2fQEP7>MtbG&;>gx~l`D$xreB!Avvk|;({+laoE1KzrIlQxR(zQJLL@Zt^
zReEwDV^bcdJS+~Cxg?fWsHR32Gv@Ed<oUR|13c?$FDv7}IYBVv!B&8kv6QqWGLd$Q
zTqC%qaNw%Q!8!4pOMswP!G_5EGMTua*l`ifPw}P3FL|)9@s{_^#`1wE-jS5~0x6ny
z!j|q5-=@^cygLLFP3}|Wp@Np@S%gh+cOXx=m2+qBm?IMKC}nE7zA+}zk{A0`$RORh
z7nycEinq(WuhB!qQ7%R0_nsEb><j*0&Ugzk1z$Gqgv02epeT35!m)~AjLWZNia@Lj
zBKlGV5T*s8h+?;qqZ3!V^xe2o;T$N{@QY~(+QXFwizp(kBX|QBW~l9fJo<7xKxK9+
zwL6qQ8pxK{{u1(UcQ;;+&;0&;d2e?zu~%XT;YBYypf+wR+yg?)fPG<O^Kb&FJ9=_(
zSxQo8-9H`tjnna;@S|oW1*}*CwR6ux4b+N_sR}Ji-1oxiKg*z9wr|b(|2FmLV4r%l
z#lUjTgG&?cH-9@dv1+5I{1VzY$#Tfxtm;(C`4u;IzbJvj=Y|>gThh#_Zk=b5nuG@s
zmfJGH)?&8dQZzW0Yg<iaF}xz&ilbEWr4gTXA)a<tQISTTbJtv-oXdZ$YQN!KvD!7W
zg$6FS*P2c@@Hy-xk=imOJmV}f2mbs7O70}_&@Nro$_TSL%+}JXTEPcmwb2G|e%gH3
zL!tB%72HRa#QBggxbVE??caYSqr_wsiy3MJ4W!$>8;XOc<H8alK)6c4F04e&@qxwm
zz0Pfd`82DfFT7eCtwKMbr^xkr(>HiuyK^~EoF2XHzEu}w2TFD(j!T4DP`rmqVCVii
zWqqS~A2Qs``wD;?9zdu)Zv^ZXlCI8@QB3rTDbeJTi?+5$HMKp?Quloz$5*u#>qk=n
zDrxwbp(8Wprmfi9vN5$f+tpiMs23pAt!>gi&qjPT%oJEc=!o~9ec8Q=qdpApKeLRy
zv;$iN>&mOi8Fo66fbb#abk~*?>~H5$g{v;7RPclfJg_gi)H<xjS>J`911>o-X9sL)
zc~yWu;8W+?GD)M1AqFxibDav?f>{h$=}4^+VZ=xj3eYMoki2#s4-DTFre@DrGC!XJ
zac)UG+6=i(Ki#xszkxnlR(}?nV&)SaRf9@2jzAahvr3hV2vI~dcf`V+yvxg#cXzZu
z)v7$=Pa+JnkI7GI=RpJ54;Vv2LG*L}$CQ-fZSo^wK3w|412HOBk%Mr-nnoDZh8k=n
z;N4i)_7+fVdCfTWn4Nx|N;M@fjB~E?q@htP0{N=7q}=&)Wk2%@#@>gNUoKjl*qH-s
z)}Rl`V8ebp_&0>FtGoMh14M{JaGuff$Yha{`*E6|%R@`s&s+TAcMVUcF1-sO`9OLl
zHA9Ra4Ly4@eG99^0yyHf=PB5;TGhPoA<UoF{WqM<F(G!g9_b=_!$;b>)g7Z;vx$oK
z8A!RQ=4z`23()lQ+8Ov}br;+oA0n+ccWo710k(NF8kFX<8C?ldiW0GF&;leuku+)Y
zeT8z{kAx=bmR$6SZ*2}{S<+XbiKB4Q6W?|gqqc*jpa*W@axR(KNm{C>rzk)T>n`z+
z?NVn>iQmUH5n(tAt|8WWbSXz%0PTAF_5R}dvRGZ)-ORf8Ezw-9oeHbO+>Wn^=aon`
z;znZp9xoHn_*G2Zs+j5s%Eho%Z0FRIboNYEzavGX><51E_!7!>yQ7CBV%2RQNF$zq
z8i&V4G~>HdxE-!vLv*qsp<En^y?EN!ky_4pqRjGs#J;A+tC9HJ-)FP4ff{UynN9}k
z8RMH^;-|HR7{6b4o>ZbXleDprrkPmY-&r5~M$p+1b-b|uDg<IrKWH=;{AlRD4ql?^
z_4JkY1Hvf<HETRFLfo`+w6bfO(d4mcM`#GArJFyb>gcv7?4H>-)7_sM0%rm^gPD@B
zILH!9ykhTYi)ve0&dK)}F-2y23rHEV)dKZgI|_$co95u9Y0VITP|$RQ%ERRrr!+R4
zw$(i|R;{Dov>=xhc|?;sn`eIl9#*rvh<UAjJa(Tfkgszv>O3KWXB>V@sJytc(LgRC
zpk3_}kdJjao89G@5B8VF3lo|`^bUxXgf2B>{uDd6TX^^BU)K>dnWH_I>~nC=*Nk}L
zE9mSNc(-VilvgAtVr9i`VHMpu5jY0&SXq6@WX3dhED_3e#!&a$TG=<h?5X-}P^N!E
z6--2FZ5TUJS`4hY4Lw>#$oQS;c7~~JfA?VFH5XMx{OgFhiH@AgKP`N;BRpwv;jBbB
zm6*d<clp`p#4yE+KYZhNaiP+hl4yO3tIaYf+kAQv{_8m(T}u1J;jF~)gfwDcKJ#}9
zBhb4%-BmQ8Gw~8S=Lv${H1HpBdP0jvE?rctkA3iWR@0`YF3)HH<+ImNl~|@7RizxV
z<rBRGlex~J<;tGTI)$2l@WJT=q4to1Ejlpgi@|ab&W$?{a+5ea=I%u-r0=eB(yf3&
zM%8%RTbs)CXYmr&e(-W&dHYEGs_sT#0iM^>RomR9E020FG?|2dDrDmj6=1tDf5xsY
z#Y!BA81o{~EuC4<Qm05&gHa(m&cZUWf5^ji?gFP<3fe?%>Bg^=fU{1zdAe-$Tp!Nl
zs%Um`e^14L=~Sd6fPDd>_Wt3&B9`e#I}SMth7uVWWp8}zo|+DmKZ_EJPX)UXGJY1T
z5?kXdZjZp?<L+r>D>u=J=Z4#-e(WsHUK%O3p@Wnw-=L)>Av?TdT_=~)r2a%N1*hOt
zp39PhVyJxFKx>y=#B@G-$_7(tgspKFmfv&oR@uYvE}|^Ljlw))(Cu1{fqs7Kv`1qj
z1}8pt6>9%h#JpnrYiEi%wu$%yjv<*d{^h8>#)x6+-L;8ftUo4vP$KOfoOI*{N<W9a
zRx*Cfc)?27%T7C+W>NiNcssjR(%q1!PLhZ0q2VsAtfwxy3h%~^WoN~-mk)85!KQuq
z{bL2s{`)UyaZRPg(Z7-unQa`mSVpSW)R!KR_}Udjofj<rpMu(rLGve)UnCZHSqbit
zJTDq}3xxxO7q;<Np{ZqZbS4NH*7wITVYJj<nUjuWqI$1M%PQxM#h#vRvG-7jdPY0P
zshIA;P&cPm8oH+?UYe`E$?9jk!Cz<vgXt~RE-hqNidzN~!xz~<);RUHUSljXh<jWH
z&cxR@0sYy*d+h{`##kX?l~`qBhA-p9_@**i;q)dQcuPQ`L#{04S=gH^S)0+tnbPXB
zZd6)U{fA1c=Uc?WFgvn{uL_Iro9o(|w!}l}zPUP!7{+L1;YD9_l>jI#Z+!CrM?6t+
z&`S~|v~`rTLeVg~*imcBKHm#{SNYsZJLQx^JzVzT>+?>H+z<C@(LQ<oO)d<MheNBb
z2KmR2v^zbx*e;HAEVsonCCK|}sssl%vD##(h|&f9q76$XRUFQcG%*Fsy${QbL`BQJ
zf9p$pB}225;#n*Gm2uuJhf-IZay;J);T)?sUol`_y!KYuwb{7o4T=;??>x^Qu19K=
zsfX*eKx!0GooIu33N4+=yu+#)9)^kV^VfjH@oQ-YkvB)by)l-T!-M&F=U@KM`)+NR
zZGDg{UvTc_7K9~4rnRYk5A%(EcPCrC`<rzH>)wXOLUw49EbBLhB=*=*9^AH)Enq}l
zBDh$}U!QgZ?RIPaR0vN#7Trkoi-=B+gRq!QbXL%aq6o&be<Pk;J&OomI39RfFVZJC
zPzW^+U=G?j2f!3^7XM6jgBKso#e8<e|D4l)stafo{7vq<`dZ_4S!X|{VNR8YLeZ8E
zB7ILyK+h?0)j1JbiO;v|(fesP10I7FcZT(Hf*3g|*J&Y>6E>2}H`s}$gDk9yfK?f?
zo+bt^Qz2`9`5^UZm^(%2UYUFu#MnZ6Ld?Ie{*0hH12e)`fUc#r?q7B!>{!q&O$`*-
z)ED(@Jf6hZze605qmbiQuxo5--(@fp?~4Sq%Zt^A29;_N=fg4vre_Vpuyqe_&q2M8
zc*n`#M3T~B)r+W@awIDDc{NG@MY;Q;nxIv?$%6C4sK(rBi>jMHjnH~-%G;4kc`D_I
zz)(lm)Q9Aad+sruw*v~weUBo$t+t+~-e17ALVzd*xf``(0j)_EI-O*ETNNBzbw>tY
z^t?Sz=FHt1XS0DlSrE@wH@%bSQIo9Ds4DVOvdB%O7a(vt8mE9GH`HT&37Vo}u{5ul
z{kXxy{1<!q%Edjb?u`$23ayY!F-JiL*5&wS<SW1y$6J7}2)#t1SuG5`gj&MK=(Hz`
zNi)I*N9Z;O#I=Q#?X9#cYx0a*vgMU4T2c*3t9_JZ=;ZSiXd`sB^U5FdX7+ZVSdPsy
zl~8L`>HUPd<v51ioCF9pBP?FOl1)&XhCtJwn6FL^O&&=e>GKu+m{|$?ofEyOg`v0Z
zWZdoF6l+4h*5Dw*K6oh&uo7-27jgKD&$jGRG6p>Dx>p@(YS3jlBI^|XNrLdY*-%W5
z9zO3US6&r~0j;uDuF9S{U!Rm7IebaV10}54a+PycCONl)YtDxSTc~R8XexCO*~j-p
zWf)P;n0;uk-}NaBlH|{*`@cGur`OKP`8h|erJ>EzJ5eFx=#~c$4s|L`$EzBlGV9qW
zEOpL2D6@h(Wh6piUhM)V2VtyB@mIzUT{%`3FhmALBKbw?h#v0=V*fmhw`1J^+&~0o
z`_^;4F)d~b5!Rc9H9^A|A^BTfxXXUQJ%EBxvS-L*zOz_wmVc2`iJ~KAQM|+OynQz(
z{sEwdlGla$-=M1;8KL#hZo;@PN()|I_D1ws#`_Y~BGu_D$S9;BUsLSg4kku`mJ-d2
zW0*k6g5Gg;GUVg-WoV?31HD?wO(YXaaD}-jp)cLK(9ZsJ_=eFWcpRmpUX@Ktk>n{7
z3GOlplMBYxfPm@2QAGYkEpgMXP4!_bU}PLWU1gNhzLP)7_u6OnTS~SEDVseNl42Pe
zK_8AMEn+%7DxdH_EO1eD8ej7@vYAV$h>o{es3c<`PMwq4oZ2BKQ)2J6cy;?-!iuhg
z{l=dK4nqheaCgQ;VUnX0l?>EVla#~i%|q)qLC4CrJZ_zq4!uUE8>0E-l<iINJ~u}6
z&>AxgJ<C)Xz-v*!T^9>?fA@hu18>UA2f2=qvl-tZ0dD6yuuWeuD~v{%bBkJkJPlkq
z(n4;-oTD{*dIG;ewIRrCM0Y4c>Y`{MFiq>3rd_yCm;}mz6<N1VRG^qsw+{F>Q{F$5
znng0|kd97a+Y58V#MfmnyMK(<<)z)Srd;rl_KOd<5b0j5P7pg>2ZqWzcg9j#q!Bos
z?|24tS)BL+1Sn+q0v!PiY!W`yly_7RR<p9$%X)VeB#(Yt+k#B;W8ogTj7Xs4hnY$=
zo$s45${^0J6gO7KF3W^%=9tk@u{a=p${y;0SvW7%SghC8{##sZb|_)n1@&_|z3*Tz
zm&Bv<(2zUhlTqSo>gpaxY#j${S;ck!1#h-78f@p<H!iYNV$6K_9XLYgaRD@0nz(wx
z!13h;Zz<UKfA6`Q5b~t_nSpXw7Pe=YkFReuegNh(hM-iS3j>~2I>i2ZV&4F+%iLRD
z^0S(zP~tmmlrn#GDa*iu5HKqN=ttmgQxD_m-W6WO^v7Y@I}==ox6ooQ#v#rx2%XHi
zsM3=m7*`2nZQF_MA81>85XiPW2!jr`EXgmmr{q3L<8F1ptsNm<8CdBpj7DjPA8m)n
zc>8S^!pjl`2FcX6SV&NK83fjVa@Cf3N-0~zF)2L*1t9gI=cH*GAuSQlUW;3o?O5Rt
zWeUWp0z+fOF~W~VZ+YtNQO_^Ljdy`DU;b6U`&rD4o^&dqS8l~MVhBOD8$B}o;eR35
zOE|UQ)v2X43g7RWR|i}K3A#r2L-GC}xA<mgs2uP#82~A-H+P*#N}A7s=PhE{tWw>d
zv`Cj#{`q~6>IDup^2QDjzcwna7^5XRR1Hdb-=jYL+|z_?Y6nH#4DXq^$fG5r!|3Uq
z_>VVw(Gt<AXR)sJYWM9<7L-K%wwX>z7*3$C#U)@Hu_mH&^hFI<nY17dKvEYlJl&iu
zbkqAcLD`-}r2M2A{w6w@cmUbl+c^uUSw6^Z{Q&`^VGJaj=gb8d0H;m1;@kZKm3My=
zN1n>1u#Gr^<jXhI9(brBxe>%8<t!nKPX48iaPTbOr}UZ<L5TV%LPAJ{F88-@g(4CO
ztC6-Gmp{KmSvAqK>ar*$0^3{ZFT#>^{<srr_2aI6yO18wq+KxU8-qowl2P$zd^@p<
zmF#%izNQQU-z=(*b~!mDmUa*+fsHxLT&BHQA-AV64P2>48G9ohqgEM9Lx#_t>*Ri7
z(pyp!1_}kS342)ImpAw~uY)}jOOzRUkHDTnXkn;Znc})MMShn4ex7!E(MskYnmUC~
z!=m>CZD*9k>K9T%ziFKy!~Z-2OEo@W&Q*QvjbUN}H9pQ^;0`#NuHKDi<bwddD$kEy
z#<6kg3w|o95i4XUXOp2Ad~ZZ<TPH@Ndys%riz()LmoCI{czn#ei?8?LhK}yI*|e#e
z+#|el`(&v~vhdxjg@hbVZqjYZeEIs;-Nn1C8w$wKTWwrO-oX&kO&`)J6(^O(A)=^Z
zZ?}c$$Rwx`mA{e@6(a;N0gX}yRx+>==<weIPCRfBq>xhky$w0S0ki&`u<xcphGvBd
zHZGu&mrfX-Uvjta=k>0uFHAMCn}!26;$SKF?)=-AVDE7RiIEFtfK)aOk-(_Y<rXWs
zWC$vgmVj$A@xE`{Ff6wqj)fMPcV00wYR;2uuOQj$4Jmy$NrEXM8*cg;7*erovm=c>
z>^dP|JQG5E=P4dJ?6wlXa-m+@vv<l0+EpgQzR8mpE@{YpwP~G)JS5D*=OT_v>iRo}
z?)$w(P|fcP$#VF@WU5cN$D{P>?=1(u^X!F`Dj#zt|JLb9s2f@`VayAXySpy?QJitK
z0*Lr$wdKFn=+Kh}DO~NigUsfR3KGDywDN4WQh_ANL}I^CL}fIjH13<~S-D5bf0O>2
z&YT<nOwM=4+XIqcE{>|3PiVu0Fb)SllHX0+%`Y{B=2s>utg4{W$VS7z{hkftU4pa`
z2R=(Xw*&ulh!Q0++EIT+Hlj9J|I346z6cd+KERyg>u)+RZ4XKSgML28Zr(>(Ll+Y#
z@$3@p;EF%rrLMrE1XtEqf#Apznw&!a1r7+-yfb?`He-hSk>2TXvFgGpX;tZ9ZT~J(
zrR%^x_qfn1WZ5d&dK&iKzU5#^JP7f!?Nc|n-D|OFng2QDI@KRx**d0T$XS1my3FDI
z`UiCM6V)yx({&;dj`-v6qgkE)aOCawMZ3A$sDN+GwN|)ZS9fe5DM9hAn&HA4OL~&&
ziZaWRABsIT%HX<z;$Ea$+K0^)*)a*oC~>+#BN8L}Aa6-k_eG@)cpIsuo^HLL1%RY+
zkU38jJ_dxYU=l-(LoP<V2s4$*LgHD}KR5}*{`SifSwmxdKa2`azqK~HI-*Hez&{F`
z`NYij35*(5vFK8MV54-;DRe-Bt<(d{%aV8ZtLsAF%)l#2^}UrDJWVK?<_%9}0rC1|
z23uPzY5+&+>mO@F%KmtIeeijhH}cB8usB9tZ&=22q4S=ZO&TdbAx#TNO^@yv=jaQ_
z<Wk#Vb~TQDyqSr8dx*|oKpd;cZc)saY|5?(q#2(<;t<Iis?0hhzbUPdh1DBHY4Y4|
zw8N1fa#GN8_?P(8D4vTu;JAk)+9kqQ*WJ1$>IAap0cwK26bx$m3v*l1x!y$M-}5Mf
zjY`2c1ixj6`#j>n(v`KVx9@h#ORHf9iE5D#!Ubn9NfxBLF7LkHU@712W{dhD=IZ8%
z2vnQQZ(oelmhkE;dslfb>KU;J6D<^;=xu=R?F$|M8~%!SvYKfu;;$Tkf}54>*nA2z
zaQ&!H<{O(r;#gI*d~e6L9)Ii72i;HB?wbzVkAQgkX^GDCh^8HTcbf}Gt-F6_!Kiz~
zowat;_BNHm1GqAQ0lUd0q47mJ7hR$y3Fz~fVdkleL%mmPatdu%l4KomE+{-@dg6VD
zx@hLys#c4O=1`o{|IN}zr0;u&;g5>B3FWF1r=8x9T=o5N&ZWtZ;3w8C^X=VS1nxS@
zs*?wLvNVW}E16}^voJQv{#ZYJST*VW=WK_b33#`!z~B&Q7=mEpUY9GSKH6fA4G(VH
z($k|RX&BkvWTbAmXKL!{+<SUG6JWBzE!yt__r4)NtU<DIq(BXIYd089iz?eM1VD=%
zco(ahTck0Y4(&I)!jT7JZcmsRvYa1BTvAd>f}d>N)LplA=gvk^K9Zg9NGriFC*3H7
zR6uiq=fzP<slv!gPwxp#NLYpBfS%*weQaJrP&*;j8Ozy%4oC0BKWk^R^Jgv}Xq&vA
z7008Qsp+9MZMp6*<5s0MImfugptH}4Rc;kX>lzauG<gE4w+IpV-5swMMqhRgacPCS
z!n?mJJf~SnU7zQ|p9}FHs{Y&(B7N`?Z-w_DUWz@AU4=a)2QAXJ<xH02P4O0P2SpO-
z)FwK2(vHU@F9h$=!sAU{a`)tM&t`<-b{M6X4fWKX7h`Ke6?;=Q2%JB_QRL$%1;Usb
zXR)g-bK(d*7-=obA>)tslb?5zpJOV}1yiX<93o$7kIKKcfk-uZG^!R-C1{6e!Pru9
zQ<_>_L)HXb{>#S>ckJ152o1a?2}lo_QVhn-E1coXVr=!@VUqgtn#F<)-8f7Yrw*Oc
z>(cyFhdCh;==%ufuB^*oFgv9208{K{!-j=g^B_5~8~hdP^lNd3o7rsI=3vP>PYj1L
zie#tXsUrm8bEAz>Iju%H)pH>!Z^CZ2RF=T87oUOMd5^qQZB;to7(T$<GwTm}C|Z;f
z`r5MWa-k?qB`kI7?+g_763YdP3DIn7829Hj63f038*^t*c_2oRj2rbwE_8hdXqJkA
z=wxrc?siNj_-!OLCo5S!i*(0O;3dRiO`6OZD|O9;&!lE}i>J(&%i;uH(JNhoaMBH0
z?Y9Lr8C(1NxU{v;au}$z#OyzZP-Cr%&++SYSJ(&t!6=%N(`xjKt>W70MQv*<GztNh
z#DXo(rR|&5F1HH5iCoIxmuuFn$NzZ89&*nQJXKa@o<bM=^`gkWgesed>7Z}t9@`$)
znU{$n4AKonP1lA-lsiDO_uySwF{;$pM}Z*z%qmve#`;SIM#=G;TzzK(TXb(d<EKBs
z%}8)TD{XN<WO2Dpd7hN)P3sNqMBRH>X>E1OW6qwIw&@Npo_m4YDCz@vG282ka62N+
zXlMKdbWw&1BXxZ>7ABDf5U$u9sPF@fsNLFDwK<<yFbB7wepDir{fyk@-n!wqIP>Nu
zRmyMF+4iW%X|wP39gDuT?&(vmc2c<SI%87_E0G&xPsq*&#`)MKgmS-keJ%+2rOYP(
zTC=YweO(wG&Psj0r-Qk2K^cn&M(gaMZ(0nvHx-IktUfo2R|)YL^_U(exA?0#dvZgW
zFSCyks~MQ#(5Ny0O1vOxPsX&#De&_()O5^cSTOVs=wEWK2}Mt{8BQ@0@a+kwuxi$o
z<Qhm;Mfi?dTPz6^3K<M*imI`l>=lS%7qutYlqR-9o9NlZP974~G>;RNZTy>pFWawb
zW;6SIe(A3hMBD4qUlUQRd`nl)1@x2hnb~3P!)}(-Gm4mz?BY)vTmCn&TZx4nTsh3C
zwqFHwv}WIZ>-j(L?=9_iU8_G>_}^4W-2&$#LjjF*kqC<HA`+y>=w#ZHmy*Lr(?QFY
zd99oLmzcIEc7bYQkF<n-Y7Vw%nw9aL4Qc}!(MF{Th_#a$SV(IHi+VCE5?$VUelLF&
z2){3hpC!{7d`XQ{v`*vf9V~rTw!sQ;GrSsjU!0EK?hjNaqwP)IZtB+9e#kM(L7P=K
z4ChMlOiQi`mfGoPVKV3LLyBK~EPugj?gkVWJ3#ac$s`{4%D_5WdMoxvh1LZe_KiTX
z-}W<^9)5LyEQMw>(g2F#ep}+}_9$P19LHX}5!DkwB9+5$e<7&(B^c9+Ro%2QvjA+a
zLsb`-VI%!|Z*&b-Cay3uleGMV+Q|jQ6;nd1>iE=6XYgj6ioVk{vR%dgre*syC{K#c
za~g2&?y0M4#m<dp?{AG=B^lpAThR=89r>DkX4S3!*(h<ZS3&JOSb3ifas-83{0)<7
z1B9Lk(WEoGA0+3oB<->O4X-F~bviboV01Oca2MZQjKnJd-mM%*B17h){WdxbvY@fK
z@PZ9*BZk>B9BA}~5y6vflKM8LLIu*?U7%)FWh3ebcTb{`+Chhx#uNlo_8aXQ<#A=3
zq9yrj%hu)K6AKPEqG(ddL><YREPtu8m|xk%s)>iRGi_t+_h^@TO@`6W5C?~Onez}?
zKh-5d^{-hktxTQcESHi~oe`VG^6aKEgGxBWwToAs!};wGD)Y8WCPy@`Plyf6S<*s}
z*BJB#%2@;n2f=F6U2g%x4a++7%YmU(hkk7u^9tjN)ITgdd)aUDCQ`A1jc6h||84&X
zx{$*ja__B4Ht+rslS7G2Rj=5a7rMC0Q+@aqyXiPbIotE4W*Ky;W=cJ{q3}G{2(8Di
zb-qQdM31J2X&U$|8_ix{4bcQuulS|}sunG9J$=#}6&Sh<7Y92I0O_V#1{-3ngaYz6
zo>)7PX03mt+ea=Itw5g3sfQ|1NcXEorC`v_1*B(TVfvRPpl}VO@|*h&gJ{_2b7|PA
zh3IOWMqYqPtL;SoVW)<Ne-qLU#Z%=|S0w#cpCb++=cqQeO5lbJuK|~{=0BwBeD96h
zCH9b4SE#vShfK?F(@+k05fv#}n&IoO6GG9rhU??6g~6D>7$mmd;;X&Eq>+|fr5#G9
zy66-EP|is~4B;X4+KPoaS}VaVS1H<tD3$4v|483@JMOkmTJeyH56cCH;8F?7(b68x
zDcgs;>FgJ?+X*<Y;$Sl2!fuIB6SCv7Yqbd!Rm}v0-?R<@aeCa=#%+!PKRUIw-zBqg
z-;oPOL)-Th5H4zj;&+mcr5MQN_GCVXh+KV=IFCeg=u-vHO}}<ne|Tnd7R*s=RO-Wv
z=DT*s{jvFo&9$^OSoSr;^FI+SNK1Dh3h`;E^aOE$#o(wGp3i=W=);<G(0Xz1cNx7B
zluIe3x+0*iU92l`l94ergNwM=ULnnSM;fz;SrfZi=5h$@q-^m?y$Fu+=&l~qVNDDs
zAo3xC3mVGkvU^iH+p-mwjEVGUuHCKF*So;YbK(tJO=-IWn>y?>R#(+W^X#|n8L$_K
zfCe}RCnq@f_iCo0@PnKviH2nP4X4s&sx$*h_fG_{Py|dUHzIc|ULUdvNN#c|>6u^`
zdTDDw@Q7})?A!pkLiw(ef-x%Z2RfTjtNqXQ6qWTmJw?__SW}4}wC>?*Vze6YD9tJ7
zt0q4nui^T+EvMl<gk^<gg;q|6WsQ`g+2w{uTJ?@q-b6Yo&jS6Zq8fjunZeiLTWO-4
z4R$!zd=mB1VL1}(p2dE~Jt0*XaSX<DH>VkFxCLSSACJ%t88MUHgeGB7T|)uTccnqE
z6;#}+-W-ukLdlM(dZVcB(9!Jb2<q=cvWthQuA$_|;1rX`jS;QBTb#sKml0=+^X!kp
ziqq|ABM(M%OtRJE%($6v%gH|0J+M{pr+~4(&uu>fzH;oB<L1s>`oqVYN87Gb?DtM(
zufzh<dMDpyCJ|pf=Tha1>X*!zeP2QIWm4(!KRW_C&m}n_xNYSe*JE3NsE>)x?IVp{
z|7r$2pEj~}dLa+fdT0+h+PPwo#-?3>-pza-m-&}opQW8TzEw7=)i!~5kWAQi8lAgY
zvbBK!=|CcPCXfUhlnttO@H^aAXwoRj+IVgK(5Gp^jW6oANZz|U5Y72Zwg(kQJ<5<M
z6YVHG!qfsQJ^V6wZ6ZHU!p0zoFO)pkn1jG#(etK>==HZ@HbiGop?6ANLB$5iYwt53
zvn4gcszC$?Kxht))Q8MxT?E5zoNfN-zqJ6+#v?(-==PJmXQ}t{SMbO~3P>=$$}N$C
zk&s@!qRe<9pgnZx0~V;>A#u!r(r$Zg=)a^qgiavGX0`}!yo2lz_36gf$x{*ED@ztl
zls}rb={X61lA7?tj)_Q|r9+bevrWZ8VU-i(I-k>W+?69?y0?Mr*U4M`dz|^7IIf$0
zeMG}BSvL`bZ@hC3arig`uDy)>sjRrBoC1g7+Unchvpakh^@TExA2`MT1(Dei8@IRq
zk8}zAFaFPnjHj*5{~sbVB{MD8q6|GDIU}bwuLeyyLnTjpKOs9uxi2k6Cr>{~OF1z;
z*Q5+RE>#myDLuuY3{5XZJF6&Jsp>E_S2ZcC#>mXbd_*lnM-55CKL20WA5qUVA1EtI
z($hmK!3quyY`7*?&x1)jfdCX`KtKt={%?2>)_)lQ03iPb@P8)re}jD>{$JSVe*=B~
ocj^DNEdO6=QkMUd^#4<&|C=-f<p2B+=zpj6zkB;X0RZ5C00X)Ung9R*

literal 0
HcmV?d00001

diff --git a/stable/Theme-RoundedYellow.zip b/stable/Theme-RoundedYellow.zip
new file mode 100644
index 0000000000000000000000000000000000000000..1ac0edec38457b75e21850208b351552310578f6
GIT binary patch
literal 1847
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

literal 0
HcmV?d00001

diff --git a/stable/VideoScrollWheel.zip b/stable/VideoScrollWheel.zip
new file mode 100644
index 0000000000000000000000000000000000000000..8968dde72517dfc03e9f9fe4a58b4eca2f24d815
GIT binary patch
literal 2082
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

literal 0
HcmV?d00001

diff --git a/stable/comicInfoExtractor.zip b/stable/comicInfoExtractor.zip
new file mode 100644
index 0000000000000000000000000000000000000000..08780366f440fc85f5d9a3ea3883028d7209e498
GIT binary patch
literal 3540
zcma)<c{G%5AIAq-W=NJSg;IzbTgf)EW#6)7tdV8Rpuu29CZQ<8%viG}vJ)cNVzQPc
zOSFtZLgX=0!&u8Q@ASO?)N^`z-*cbeIoJKi{khM%zt?r{&)3R~W#2&n0KfsjdDuCe
zp(ZI7FaZEN%m4roAPTTC(ABpvkoSW@ZGiw5j&q}4KL!)Z31HesVF3X4MKT`svzdsW
z(BTT-wCA8%IoQzkTF&wqKd3pm7ATPDaUdBnfD@%IjoQ<siiaByQ5F^!j5R{>&jO~M
zeIaylwbTcCx?3y9fFg0_5dC>IuOxzCO*eJ<gs|ud_Qp){*{;}-;%hcr08H@it$T=<
zD7hq#`!l)bJ*b3rqgP7Lm(x3-@wBcqB2plZ)>|MGx2nxK&+P;&v0YrWFHwL09JT7F
zc~EUb&pe3csADENd0jjca&RkLOSjz>`bnO!G;KOOtC*xzq`SC?F^`Kvjdg7bQ#DJr
zWhpjnZ@jN%liBFy2ATO36ptx9Ri%cQH=!^Vm-%_ogC^*7e+otbzUTp@B4V~4z*r_0
zSda8d=*CGHpE?0fm7UXKsl__ZlYJ+&V@Rms`UmBpFN?A-Beq3a-{cR-{)J!#n~jV=
z9RCu6;__8oEvSZ6G#y(0fDF$SqHzyZ9QuB$KjZ^a>GBz_a}8Q^ZIox(-Mo|Oj?ONM
zQ^D)Z(q=xEH5J(05qq_yvtnz`?earb{fn9>2RV0e&GUg)?U3=vemI?!TD}Lc`X%I4
zu&A0QBjk0)fEXcr2Kd8$5b{_*<eyS@vF`8{JIzI;+H(=jK#3cB9Jd>Wd1U5>&r_^l
zk-o;0Nrt2nY~<x{#l^+aVTQGELoH-tf~*C;v@3k_?M?zZ7R^&DDdY#spiG0+Php+Z
zP4_F*Pe-@(VXt;0omNaLindigPgtXGS96(~$eB4Wn|mRQ^{y_0{WrA8BTt0=K3~)=
zJpA?^W!bT5j!;puGN4l8l{MQvIFlh~zJPn_$N>{|ap_k=<S2NWFErp_=0|b{ymOj1
zjiW?Li;s3a&oxLSli~F*N%S`syk~rZK|L4+dFPo?uH9F-$PXV&)1s83FRNV8OY3G!
zC7CV|lU?qwIXE~IWN5<Mt<PrRJA3Y%mA*#TWyjA<wT2a!woL_Q-vDDft+>}Lh+Jn0
zH>NCdzN~3Ld9*W`=Xv%oV-5&~00($W*C;~222k*EiNlEv0I*^lJb}Lh@bmFB@rMT(
zgrbAoJ<$O{@+j<|vUuk(88D&36FGXh<FUf)dEdS(0BxAd;eBQa#|PPvG43@aM|ZFp
zvk4+3dWYH~VGv)N_JTZt6HM-%rD}!drA#zf$M{IBMSFX>DogQa&*Z@hv;EpeH0#Wp
z`SU2dB`Ob8Jod+(>l_2E?|=JHz?6l_-`O&VXX2%H<U5Nmc_Lyu+%th~RY8g%@wSI<
zob^w85S=Z}o03yrEy)6sCRe`QZJ%G-S&}tLVOFVx4j!&+6@;=bCZ&%VbS`hkOx~0s
zx4^-ps_P|v$-H5figjSs$|#7OP)?HaWjIm`f%q!3JACfxb5H%_oUJhJ(?dmYjAv$9
zmeptWZyf5|WW{HK7`e|WeuqD8JwD*3e+<`)732}fy#Mga=W)*4@kF7!A!l~w2BSxn
z>1GX*NXeOx$fwg)iU+Q%dtO?>;okO*^iRrFiVz#e#rHfCRrgfO&OV`i$yzF|ej#|O
z+#*|!1;C5hey(<$su<>a|Cq#LI|$!bm0qi)dGv@zL+88j3qxi2^Liz&TDMg*X&nMI
z*;OH9dtSv8{{HQ#*8~<&^K=2z<P6C$Y0-!qc6Tj<plSzQ;#5p)metiwUInN(Zw-MJ
z5~?-)gtJ_oJu_&@IYxqzl?^%@d+jzJLw6=V5Vc2VubUQp-~GybHG?!~nD)K*wZs{-
z`tu<>%4fM$)8L$o`v!Ev_-a*J&Z|@xLLj&1K3pGlJC8nnuZ>LzR&JUBijYcC4=dPu
z=H?=*%`RcaGGSl2BlA#9>fW^1H$#$vsq_;E1Eb9@QL)09e4Aw11Y_MOhm`mYZ-2Ld
zOYru$@xVs@@R@UIHm;39l0f<`=j_;|<usvaRKrPrWihH@4~@_KWu#AbKpGjV!dv|e
zsh$qh*^@Z@UDM*x>%@M!AgBDfnjUa+y-65JwJvrBe=}4o>`<riMW!RUDcJAiRd406
zF~DZ5;GX464Xma8^~~D?ELPWS_>Sbesg%e(W)`r`=RRil{(@N8s;wyvmXPED@5yri
z78E*6DXws^Wgl<yz%K+%+VQRDt(1jedFQQDL}*>mOG|qF^gFy?Eou*IMC+|YxM>_0
zNd&()UZLZv9-|LsPF0A(<X2$Ti(jmy?;aXQ$ykxYtRL$H7F;|1@m7kv#(qn>#Z2a_
zqVe$Wk&{=BGfh55>nlrrlDvHV2EPMgv?ew*EQCPclJqY$weF{);<awvb+3#HsG%u0
zOdHyAq{GJ~m87^f1jy2P?YNW?Z%tD{vQf*9k!TTRTaxUl+!fQ*K2&CSgJq%~rb()w
z&9{rSt=-VU<XkLdYmhlttzMXLIPFaTfp^zN3*FqQHw?#EZ;K%)5_b$TZ2dfIwVXu6
zPFNTL0zHm)a)q$D@k_xUV6_F&@oOzzsYBHJp4H77moUt@yLs}K`Hw_DYrEJJPL0(y
zD2T4}b!(1gq8*;*L~0n^55pRGmJY_OPJ2PWEgn3<Oqi6I%t>TImWI?*#-+E<nM)GP
zqb{hfmi~1JLoZv{iQCpah*9goR6YlX5&LBk{l_lLBFZOUEv50gWd%mxI?CVIRb>gb
z&Pd9Ag>-{-M8I>){rGC*ZpL1Hm>MG*cc;ojo0~gmLuE-l`TNpHKc+w+hcyjM`yjrz
zqAsHEZ|lsvSawS+aXIvEz`{05_*pVp{!^;2sZ;|n+)_vA%2hOUE$Wc<LC8CHyo=tk
zE2?J;?5I@vYVAwm#LMBW&D*n!k0h=lgf2y2)7K3g>hkaDE$QB>gGfv+cNtyVmzIod
z#P2p(1;Db%PoH(1qI6b`s9R)w8#N@AN1iMyh*KaYC}i)IR0vq4RY21Rz1>a_cXTd3
z5?kTdm<`BzjDxJ%1sBPH!>{z!liTB$lKgW<+}mPE;dlDz#2r*v@j?80wn_|vrA|+2
z<IyRkp|mi`EQpuLnrPU1exqC8`}L|UFlC*EAO_{|?ASIq8z@Z<Kye&*KROm$&R_ah
z)b+qNgh=@94u=fokSbf_s3xTiR?TP`0O);P_#{i~XXTKz80H~}Ncyy-sa*0I;Jj0-
zA87iPXbaBDt4uM^KeDa$TT?T!W$*f&1HpGjJUv2jHQz_Kuxr=rxexee{Lr~+w^f2x
z^U`1&NFqT9c84k5x^4E&lz!$>8%MQ5QTF2Pds6g&m_jK*?c+s;C14mjDERvy)&H;t
zujIiCU5Y%nsMvU@B}$wvu)k`j>^w6NxB?(NGpU3$)PJbkf9GmX;5|F*>Xs+70o@li
z96Fv*@lmRyp`n_JCNFY9c<W>!l2|c+8WlS%VJ7EzUayrMN^k#w%CH}k0XFhDLgY-k
zEOISAe9CWZe8GJZ-oH)D7w)wiJ{{`-966DZFMpS6&`h|`rCT%`fr{y=9^f;$$!-f}
zLa~ES>+{tI9>=}MZZ<&(k<nsKv#wmbKxOTSA!tk>RJg|&Z+lXsFMI^shBvyH!RdHq
z|IuLcjhbZAal8pr&B7-QNuX;TzSNOxouer=Bnf#btQ_&EV8GwJ#4p)O8xK8V&LbU5
zTX2o|-fQ22=v<Yrub+$Dw9(_6pURqfL{aTETcgZv-RMwbttroni*S-($Um)Og6r=f
z6+xbK(bn`O*!!>e&We_ALabS7AWzvnrXMZ=VrVzuZ)4x|B9jFf>mS3zh$zS_5aSc%
z<>%#(4wgrUqW`23!D#njZ+8?*4jmAH3<jaFSa&}p$jXd~`3TFubpqiZF9tC71fb~V
zkJV2Nf%U%);UDebpSWM`^Jm;A2K8qb{r`Bs%GA$1IHRC=2K-j7{y+4u+y7_u0Y(77
nLH~Ui{>1*b+<s=)asqyn;=fT@86F7$urjVn#^>YX`f>Lkrkw?^

literal 0
HcmV?d00001

diff --git a/stable/date_parser.zip b/stable/date_parser.zip
new file mode 100644
index 0000000000000000000000000000000000000000..398c9defb2a182719406d438d2f370f717014d0a
GIT binary patch
literal 1601
zcmWIWW@Zs#U|`^2=t&BTIDKGR<6|ZU27Y!120jKEhLpsT)cAtLqT<vdy@JZn5KabW
z4x8(#AY59(&A`a=l9_>lr5>oiG&DB<mVrpE`y=~^Yg(4tOR{#WtH`Z7xXbJJJGETp
z6Glfk*9lo~@>TWv`F^+GoCz#qDjl`wEx-S|v9DuKz%8ZC#>!t(rpWLKtt|>M*nRQ{
zSEtq=-nPRB3m&u|GuoWk%3(ZJDNW!{MV#<Qeb==gUL51UR5W*kY5o+G??+}t#u?=9
zSSR^(h3HnL=cQ}pcF$^So}sRh?ldXENJgRJlF!<RFwx618&e%wFHO9&Mt+gz6~T3(
zaUDIAwVufJE|%<k^mq4R?V9-hJidcUT$v_r;elIJ>fV(eJf>g%c>n3YZ(j(s=Kr1{
zW<Benm+gwWIS)flBxNsTF=ud&%;9*$CLzHsnRPBnsG?$BlHW`}+Z{=I24^Jp#3YCx
zJ6)Cg^bzAt(|KDu6TTT=FIl_fNw)TsBc~TE>s~T7udCqHrk>Zb^JLz7w)CvL%{fcM
zSG(as8_V(7pZY05&oiGbxU%WVh9@!$*VbJATlhduhv#goq0_R8rVXc?-EBLpPYB$x
zE_YGdQFh{dx&8h6Irf+2KmY!jZ{zf1W@_|1rH9=b_Z~RMt2Q<>+T|{_y*R7>f9dy^
z8+D8BE|Z_dyFPBsrUJg@8jmNLbmuH8nCPS^>?-t!ansR^_(%NivkRJ8-6u-?Ji*7=
zx#P~Wm}YL>r`PH%KRT@rDNgQi2oKdgD0tvnc3i}^Q$KiI7M#%c`ZVqTgbR`ngMO|_
zJf*97*YLrCq?>->!9{7;rH_ByzV=Q6WB!qkVpsX*8l2u-$ZI;~i^0{b=n1bM@Vr>Y
zzRQw**W1Rt^9?%Zxf`a|wmZD@Zh2Vz(#T}}^NNB{nXhM<&dqwYp<s9EBPof4;`PVG
zfBsN9rkfh@=2F$Ivxb(wo$vovR?JXr@_#)2?poowd)x*1F0e^eXG-=@y!&C(b0v!p
z&mY{)+TAhl-?jp$_;CLVMF)EKY9|&&T{&_8xu^f{3!$r{+?KwaeXMUw@Q*Z>z96m0
zbDFxhC6~VAZ@#o^erUb?;e+-8C|RXzN9Vfjz=Y4w$iN@~%qm5xg{7HAsky0nCB=Fr
z6(#sGi)-J(zGed+m-iDtX+{WWZL>YFf5!v8i9wT&xn=$QwRQK@sxKAK&YlTTz4yqZ
z&5UJ-gGHtJ`iPlJZWirL?qUzEb!MMi&dnwId({%AFZYh79?pE@*!)yA`<|5XTcOEI
z&k5Z7^)XZ8-}<zLL78ryub!LUTfQ+ghFf*>mV2SUmOfX%B)#ZTvbvaAn#FCAzVqMP
z7_Xdf+LNT&`()0I1gjs%tu0G<>UKZ%sC0`hGkOsh+;#n)L1Kg7RI~tK4e-hW1%Mnd
z0Qk|$ipty^eEtvZx8*xzz|;DD&Y`5|?mc%W2pF3?EGvxee&Eu_9n!ITa+_YorayoF
z*m2)m*{CdaP||d=mH*CAzhi+?78@%*Y(B-rncJ}9LZO1D-2tUV-w!;KTe8!tZ1&#8
z;#+%}Bb;aDbOhbLYTddq-Evdiw$CTMS2fNySu4{$vFwJJ*wN+2XSV;@tsuIg=!*o?
z%aF<<LB@X({H;gWem!)Hyf)J)#&Gg{ch|JF^*Z19jwi6c&At)y{e}0PNl*3#cr!A|
zG2<#NC4gbUzyJ&kh9!+47JAvq3Mo6$%1v}LQIi$2ncBdj7Bi6%XDVu3A)Bhhg6dLm
V%;7SWl?~)EW+40zq;*(9JOFtemBRo4

literal 0
HcmV?d00001

diff --git a/stable/defaultDataForPath.zip b/stable/defaultDataForPath.zip
new file mode 100644
index 0000000000000000000000000000000000000000..30f6af0275c550c1e30252e1e96069af22e66395
GIT binary patch
literal 5548
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
T>aYF~{+w5T+Ku~bAb|e?LW4sY

literal 0
HcmV?d00001

diff --git a/stable/dupeMarker.zip b/stable/dupeMarker.zip
new file mode 100644
index 0000000000000000000000000000000000000000..e0e2573d1e220b5de1fc457b0a49322615f665f0
GIT binary patch
literal 1917
zcmWIWW@Zs#U|`^2=t&BTSm3VP@*K$PV`O09WRPJ9a&>g^b=AvF2@T<7VCJy7o(jUH
z72FJrEH9ZE7+C6oic<r22QeG+y!k77o6%fRenL}Mo04b=kFj9+qcsON=I6vt`d$6x
z&f<k1PTZPWrYfuXU##S@z!KHeIl9kd3PisuXnbX#W7l8)rQ!P4cdwt^VHeG=tvhHP
zoM&4X^iTiEo!PS@I2NpHu39(g0!!EBv}N-|=IP~V%xcTOl66^PZTFfkwtJBln?H(J
zC%5Zdvk%>CyW!>%iDfsn8}oxglJ-lzRp8Q;Xg_r=@z|lA|9)>#Dz!0oSknEabRw(1
zuKTg8#m}nu<wm95&u^Q4kG=ZT-J1Qb`S0&6e$o8)<l6pgBCk5W&gl8M$-Ckga{x+6
zZRD$$KLzx>88D>yfFYGqT9E3SSd^Vwq*s}ngD<#p{dfDZ0E6qZ=(TU#8_i^sT-{6K
z6NKKY?K<n+SG>XM<NKDJ))wy5{U3YO6IGbKwOQVuFi(o`IN_D{bVU@OtCJtwJ*Og3
z1IrHCu!CDSv3ENyR$uq(-sJ|nv*%ZR%sbFMC2PyQrXSx7Z_AX5u95S;xZd*Ev?iJB
z3j?<<(%<C97_&g;QL)t1FB;XiouZiPU$66gKDpRZO>~mL`i$TId*-h)zW>T|Lfguh
zUMH^k*Rp&#er9Kb>1TU8zb{?6)5Y(xJ<dP!#wuNQ`YU$S5Rqqi^Tz?0CN8rxFz}*=
zNI@mO0BH^N?Z0g%u=jQNh8*z)0nRUOw(>KYaWa+6Ho3Wo{jh*UVT$oYkJcr#B)b2;
zpQ)&M^3yYCaqlOy&ExZr?UG-^{ib>QvI{To&j0)6RYFy;k;4UBgO@Y8j7>c1CpE9L
zs$L@fM>8t@_fw^a+m+KEF5ftPSzSHfgY^j?m-0PlO#3ifSnh7t9z)(5ZoT%zL;DuL
z4_9l*R&DAQ&!4|{PxZg=wzrR-F|b*==fIH*L7Bmp6TGIR7JmQr%`!>t$2{-yFMl>X
z-y3>>-}Os#gX#W=4{~?@KX`RairM$VwGYmbD+(KSO@F6+kEPP(_le-Gw=}E-YU;)F
zx4$WqvAUa(%U^R?ibwmvyL-I>VeTAF*+)+=(h%9w({tZ6;lTgphc$0j2j+3N`EPJ6
zJJEXe_D1_h6Z>y$eP5z>>n`*0N6!Ro?;FWoP_MtU;o8Y$eziA~vX!#ddZ+lzJ~L}h
zoaMjT<FkZK<dY{TF$ptvExNR9Yt#M>iv!=d8JaFVTg2mIcCO05{3L6-xsT2p>1&Oi
zOZMq3pXISMNb%jq6`h*mPcC!3>p59`u6WH~2^G_hqdz9y+|PV6>d&&X25oOAcZZk!
z@jfZ{tfV+H{MyMGs*_A-$gS1mlk0w3&ULno>+o{Fw}H~tT7MM9<}PVg^{;$uS+~f9
z|DxOWH&H1aXMDWNWm+!I^wt;U<CRcdw<dToPmSNqL>+#S<7H)jj=2&?1F~JaPS$8H
zRN1&|V(j-zCm((}AFpJV;A|2iW-{ZX{N&B?o3Bc&p0Q-6vXHS@Y+TO);mV~xwhfAN
zA0JT3n#!IyzsuC~%}Wg*;R!E-rUjR@?7Hw$Ve9A5HY&T9T8o>0-_gJ2m(#7^lf&iL
zm?bUk_&e2ZMU~$f-)jpG9}Ui{>-f~b&3^lX@tp@I`{u1YyyZ$#Rd)B`KcVOHHP&fz
zCOglmTJxbS)m>e*Z~loBN2RRzvvYEetL(8^y7R;d2c!L0zPM^;7HU-3%hm6&T(<T|
z-la<mTm?H%@$P=}T1csMf<Q{u(@FELhAsS^GPA8y_e<o|y+_2-HIw*W>a*^C@3`yP
z5%G8Lb3RnM9}@4?{_krpXQ=m!p_RA5*6-@hF6V|XrMW5mrLwVCOfA>Hexu?VRKp6&
zhFrj+hyh%Lw>X(@=L51qSOAy}i&6_qGmBDlQ}arS^-3yA@a4qflEmVS#DW6dlKlLf
z;s9?(COKwYm4gJxLIz;z$FQUk#6qenSRqvfS~Y=g9BK)QY@8O*RP^$cI5SbpAY?Ob
nm{80Fl}PxE#1)>%MjmEmz!JK+Ol4&Qg%S%8`T)Hr4dwv=$)x{b

literal 0
HcmV?d00001

diff --git a/stable/filenameParser.zip b/stable/filenameParser.zip
new file mode 100644
index 0000000000000000000000000000000000000000..079d4e327c56edaf6b882e30d1c1e11306da9afb
GIT binary patch
literal 3059
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

literal 0
HcmV?d00001

diff --git a/stable/index.yml b/stable/index.yml
new file mode 100644
index 00000000..79a6662e
--- /dev/null
+++ b/stable/index.yml
@@ -0,0 +1,320 @@
+- id: CropperJS
+  name: Cropper.JS
+  metadata:
+    description: Exports cropper.js functionality for JS/Userscripts
+  version: 1.6.1-862f16b
+  date: 2024-02-11 08:41:16
+  path: CropperJS.zip
+  sha256: b9a4f217e8722dcc6e57604e15d2356f55d58fc200512e6022c9ed3c9ea740e3
+- id: date_parser
+  name: Date Parser
+  metadata:
+    description: Find date in path or filename and add it
+  version: 0.2-228c294
+  date: 2024-02-06 23:25:44
+  path: date_parser.zip
+  sha256: 2000df4bff1ea828d443d87ab08e5b9307744d9ee14a6a25295e891d994587da
+- id: stashBatchResultToggle
+  name: Stash Batch Result Toggle.
+  metadata:
+    description: In Scene Tagger, adds button to toggle all stashdb scene match
+      result fields. Saves clicks when you only want to save a few metadata
+      fields. Instead of turning off every field, you batch toggle them off,
+      then toggle on the ones you want
+  version: 1.0-862f16b
+  date: 2024-02-11 08:41:16
+  path: stashBatchResultToggle.zip
+  sha256: 155f211aa07ae559468af3a50a07fd8ef915dcf67d6a4fccee4db1f7e39eaa91
+  requires:
+    - StashUserscriptLibrary
+- id: TPDBMarkers
+  name: The Porn DB Markers
+  metadata:
+    description: Sync Markers from The Porn DB aka metadataapi.net
+  version: 0.1-5f4e7d0
+  date: 2024-02-22 07:41:42
+  path: TPDBMarkers.zip
+  sha256: 114cd3c5bb4e7702889904efe24e4ff89b8269d00c9d82cb73a098e8aa0d47f1
+- id: VideoScrollWheel
+  name: VideoScrollWheel
+  metadata:
+    description: Adds functionality to change volume/time in scene video player by
+      hovering over left/right side of player and scrolling with mouse
+      scrollwheel. Scroll while hovering on left side to adjust volume, scroll
+      on right side to skip forward/back.
+  version: 0.1-3bf16a6
+  date: 2024-02-17 18:13:36
+  path: VideoScrollWheel.zip
+  sha256: 9be70f61559650272a9c892c3300bca7d60a47892b84cd2e973d45374ceafc6f
+  requires:
+    - StashUserscriptLibrary
+- id: comicInfoExtractor
+  name: Comic Info Extractor
+  metadata:
+    description: Extract the metadata from cbz with the Comicrack standard (ComicInfo.xml)
+  version: 0.1-228c294
+  date: 2024-02-06 23:25:44
+  path: comicInfoExtractor.zip
+  sha256: 18ae25dc9f94e7052ed918e2492ddb60d013829a29c14d5ee0593dff09824fc4
+- id: defaultDataForPath
+  name: Default Data For Path
+  metadata:
+    description: Adds configured Tags, Performers and/or Studio to all newly scanned
+      Scenes, Images and Galleries.
+  version: 1.1-862f16b
+  date: 2024-02-11 08:41:16
+  path: defaultDataForPath.zip
+  sha256: 5be12f617b7238d3d79a95afbf370a73f253446b4e81cbfd1d5c13096ec7bb1f
+- id: dupeMarker
+  name: Dupe Marker Detector
+  metadata:
+    description: Finds and marks duplicate markers
+  version: 0.1-228c294
+  date: 2024-02-06 23:25:44
+  path: dupeMarker.zip
+  sha256: 3adbe485d7523f4df9a8b83774628420d5a655ffb0b3aac89bc0a7290ae22390
+- id: filenameParser
+  name: Filename parser
+  metadata:
+    description: Parses filename into studio, date, performers and title
+  version: 0.1-862f16b
+  date: 2024-02-11 08:41:16
+  path: filenameParser.zip
+  sha256: 3be795b183ff7e0b23071e1116b35ee70f77aa336be40ddfa09087989dd57529
+- id: markerTagToScene
+  name: Scene Marker Tags to Scene
+  metadata:
+    description: Adds primary tag of Scene Marker to the Scene on marker create/update.
+  version: 1.0-228c294
+  date: 2024-02-06 23:25:44
+  path: markerTagToScene.zip
+  sha256: a183833207f46523877304fd6a3a1cba5d25203e9ef4b2f5071fb5f2737855f4
+- id: miscTags
+  name: Misc Tags
+  metadata:
+    description: Add extra tags for VR and other ues
+  version: 0.2-228c294
+  date: 2024-02-06 23:25:44
+  path: miscTags.zip
+  sha256: a5c392b41fc643203ff96111872bd444b1c7639f11480ee46e866208cc635e28
+- id: pathParser
+  name: Path Parser
+  metadata:
+    description: Updates scene info based on the file path.
+  version: 1.0-862f16b
+  date: 2024-02-11 08:41:16
+  path: pathParser.zip
+  sha256: 8847d9d1d59802995c0b0cd34136d0efaa60b4961b7bdecd76acb56691fbfb06
+- id: phashDuplicateTagger
+  name: PHash Duplicate Tagger
+  metadata:
+    description: Will tag scenes based on duplicate PHashes for easier/safer removal.
+  version: 0.1.3-983b28b
+  date: 2024-02-17 17:39:10
+  path: phashDuplicateTagger.zip
+  sha256: bf91e1c7301a7dacc40a3e4004a288f1cac9e0f9cfc299ce464697d36ff6e134
+- id: renamerOnUpdate
+  name: renamerOnUpdate
+  metadata:
+    description: Rename/move filename based on a template.
+  version: 2.5.0-228c294
+  date: 2024-02-06 23:25:44
+  path: renamerOnUpdate.zip
+  sha256: 29514d2c98ecab1206c559566ad0df6419fafc83b7d3ab7924ed301ac563931c
+- id: sceneCoverCropper
+  name: Scene Cover Cropper
+  metadata:
+    description: Crop Scene Cover Images
+  version: 1.0-862f16b
+  date: 2024-02-11 08:41:16
+  path: sceneCoverCropper.zip
+  sha256: 4c95ae35f3f7acde0d05eaff90946338b3605053720e520f07ea06dac63f8f75
+  requires:
+    - CropperJS
+- id: set_scene_cover
+  name: Set Scene Cover
+  metadata:
+    description: searches Stash for Scenes with a cover image in the same folder and
+      sets the cover image in stash to that image
+  version: 0.4-228c294
+  date: 2024-02-06 23:25:44
+  path: set_scene_cover.zip
+  sha256: 5d5e9c248b252107e88c7580ee611a962bf073467260bcf403593d4f7ab06dc6
+- id: stashai
+  name: Stash AI
+  metadata:
+    description: Add Tags or Markers to a video using AI
+  version: 1.0.2-862f16b
+  date: 2024-02-11 08:41:16
+  path: stashai.zip
+  sha256: 1dfa9ef270b7f0cb41b249e480092facf31c4f3a839051e39050bccb16c30e8e
+  requires:
+    - StashUserscriptLibrary
+- id: stashNotes
+  name: Stash Notes
+  metadata:
+    description: Adds a button to the navigation bar which opens a small window for
+      writing notes to your browser's local storage.
+  version: 1.0-983b28b
+  date: 2024-02-17 17:39:10
+  path: stashNotes.zip
+  sha256: 9b927dbf5e290528fc159473dfb3be9f700802560425baf1eaf7e52d00029c92
+- id: stash-realbooru
+  name: Stash Realbooru
+  metadata:
+    description: Add tags based on the realbooru model, This works on individual images.
+  version: 1.0.1-862f16b
+  date: 2024-02-11 08:41:16
+  path: stash-realbooru.zip
+  sha256: 1d59bf47d17852296f296d91bd49802d4d1eafb0194fe3b814bbae5a04df92a3
+  requires:
+    - StashUserscriptLibrary
+- id: StashUserscriptLibrary
+  name: Stash Userscript Library
+  metadata:
+    description: Exports utility functions and a Stash class that emits events
+      whenever a GQL response is received and whenenever a page navigation
+      change is detected
+  version: 1.0-862f16b
+  date: 2024-02-11 08:41:16
+  path: StashUserscriptLibrary.zip
+  sha256: a8e89abaefff9a3abc9626949fd45979ad7db96d8c7bb2ffd2035343eac4d12c
+- id: stashdb-performer-gallery
+  name: stashdb performer gallery
+  metadata:
+    description: Automatically download performer images from stashdb or other
+      stash-boxes. Add the [Stashbox Performer Gallery] tag to a performer and
+      it will create a gallery of images from that stash-box database. Apply the
+      tag [Set Profile Image] to an image to set it as the profile image of that
+      performer. Note you will need to configure the download path and add this
+      as a path under settings > library
+  version: 0.1-228c294
+  date: 2024-02-06 23:25:44
+  path: stashdb-performer-gallery.zip
+  sha256: 12aecd9f5c043ad49dcf4e3d8d7f3fae39630358cdfdb66bb0ab37aebcd4c8db
+- id: stats
+  name: Extended Stats
+  metadata:
+    description: Adds new stats to the stats page
+  version: 1.0-862f16b
+  date: 2024-02-11 08:41:16
+  path: stats.zip
+  sha256: bffbc542bcc5a416c1b927059f4cc7604607238be471b1bf9a3bedcf7c77b5f3
+  requires:
+    - StashUserscriptLibrary
+- id: tag_graph
+  name: Tag Graph
+  metadata:
+    description: Creates a visual of the Tag relations
+  version: 0.2-228c294
+  date: 2024-02-06 23:25:44
+  path: tag_graph.zip
+  sha256: e38517fd1858964ddadb2bb38f7828e4417665e5e7e437abebfbc9438549792f
+- id: themeSwitch
+  name: Theme Switch
+  metadata:
+    description: Theme and CSS script manager located in main menu bar top right.
+  version: 2.1-5f4e7d0
+  date: 2024-02-22 07:41:42
+  path: themeSwitch.zip
+  sha256: 4f84628c85ec3c677bfe896ac5e6f8efad5bd44af1a6f5ee941b6038c7bc423e
+  requires:
+    - stashUserscriptLibrary
+- id: timestampTrade
+  name: Timestamp Trade
+  metadata:
+    description: Sync Markers with timestamp.trade, a new database for sharing markers.
+  version: 0.4-02894d1
+  date: 2024-02-21 04:37:10
+  path: timestampTrade.zip
+  sha256: 1087ceefdd4113be7f11a44b3796249feccb4fa9e254e3d68dd1a114b82f3972
+- id: titleFromFilename
+  name: titleFromFilename
+  metadata:
+    description: Set a scene's title from it's filename
+  version: 1.2-228c294
+  date: 2024-02-06 23:25:44
+  path: titleFromFilename.zip
+  sha256: 0eac47aafa8f37a043b210aff70268e1a165d5394b9888651cde85622deea3bc
+- id: visage
+  name: Visage
+  metadata:
+    description: Use facial Recognition To Lookup Performers.
+  version: 1.0.2-862f16b
+  date: 2024-02-11 08:41:16
+  path: visage.zip
+  sha256: 35668131588286df89668a42e6fa8844c50ac9d847c19a727a0e1e1427fdd269
+  requires:
+    - StashUserscriptLibrary
+- id: Theme-BlackHole
+  name: Theme - BlackHole
+  metadata:
+    description: BlackHole Theme for Stash by BViking78
+  version: 2.0.0-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-BlackHole.zip
+  sha256: 15885a1fc1b419b65fa576b6b8b24ee28852f5b4b69df1b2cc22c647df9bae89
+- id: Theme-ModernDark
+  name: Theme - ModernDark
+  metadata:
+    description: ModernDark Theme for Stash by cj13
+  version: 1.2-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-ModernDark.zip
+  sha256: ab2f231e8d923b5d362e4ee38a171c5b791cc0e2dfbb513504488c4428a94a3d
+- id: Theme-NeonDark
+  name: Theme - NeonDark
+  metadata:
+    description: NeonDark Theme for Stash by Dankonite
+  version: 1.0-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-NeonDark.zip
+  sha256: 32bf6593076317a39f99d4e39dca21147c549f9e572ef34b9725a25f47607ebd
+- id: Theme-Night
+  name: Theme - Night
+  metadata:
+    description: Night Theme for Stash (unknown author)
+  version: 0.1-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-Night.zip
+  sha256: ed73b02811986c15ff164020a6934d291589d9290b85fce1493bcc9d033b8f5f
+- id: Theme-Plex
+  name: Theme - Plex
+  metadata:
+    description: Plex Theme for Stash by Fidelio 2020
+  version: 1.0.5-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-Plex.zip
+  sha256: 8ebdab1b8d933c20fe904b465f89e598455ab508845decc31c17f28ba6c390f8
+- id: Theme-PornHub
+  name: Theme - Pornhub
+  metadata:
+    description: PornHub Theme for Stash by ronilaukkarinen
+  version: 1.0-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-PornHub.zip
+  sha256: 7740a87b98147193fd16306340a4a3528b5d2ac19362211606ce64af0167e253
+- id: Theme-Pulsar
+  name: Theme - Pulsar
+  metadata:
+    description: Plex Theme for Stash by Fonzie 2020-21
+  version: 1.8.1-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-Pulsar.zip
+  sha256: 462230dfe3831090ab61e2eaa02f74002c11f675bbac76f3b236af680d656c8f
+- id: Theme-PulsarLight
+  name: Theme - PulsarLight
+  metadata:
+    description: Plex Theme for Stash by Fonzie 2021
+  version: 0.3.1-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-PulsarLight.zip
+  sha256: 015a9f3c1db44e71447b8deab9ee063a46c16d5ced317b565f794c2c8db77921
+- id: Theme-RoundedYellow
+  name: Theme - Rounded Yellow
+  metadata:
+    description: Theme with rounded corners and yellow accents
+  version: 1.0-228c294
+  date: 2024-02-06 23:25:44
+  path: Theme-RoundedYellow.zip
+  sha256: 67b9b89da7f566e4978e6fcd90b37363bfa6bd7858f410ca3fd45e06654ac2df
diff --git a/stable/markerTagToScene.zip b/stable/markerTagToScene.zip
new file mode 100644
index 0000000000000000000000000000000000000000..ba111d3dccc9a3407bf1b1d9de6a9a731ce7a70d
GIT binary patch
literal 1191
zcmWIWW@Zs#U|`^2=t&BT5a!v%6vf2A@QIayL6|{?AvduoJGCezF+C(dI5{;hRWGYJ
zG=!6ZnZxFKDhQWWa5FHnykurzV5tWh(i(Cw@3sNY-rw31$quqA0p)$O4{wMmdRLa!
zeW*9py<2(bq&=n?f8Q@w@!Hs!WUaDozMSShcdxSw{9ziLuR?Sl+A?3b!x!}{oWb-)
z-3I9sS2g36ji%k4k?PB1748&t<Gt76z?GNFRdwq(Z(vn4oKkyvZQ|tCNjp~E-(C8|
zS8Qf~=ajha;-&ibtIGB}%efjf&Ck7R*KIZFY@@f`<H{q(6N;+2>n&uoDw7`?WSm|4
zR__8wWV^?dMgB3;Y`@uB_8KZob>&Rxx6$DA{1AL-{lSP&oPie|HqN;E>mwugs&r4c
zq!%_?l5cy;mE5#8KfRWJ>VC^cr)?qft4xDe?wIVj@x;FV`L1`2tCC_(`@Vj7vcN4<
zLq<>FSJb1&?`CzE#%%i*aVSeQ>7pk4C*hBdHX9SFC-}9zT@!1_?65p)+hcv_=qD}(
znhRf<tbgSlkjapKGJk@;cNh1&7X5tQ2{PCCpGlO>{h4;ce0pr_KGx?OJg%RPD{hWG
z|Ex02^|z<te2ZPnB=#>1-ZH&c>(i=rmAt``mTR6R?{+$&wd%;)xM~wykNMjS=dQlq
znEY?8xnlj9L(6B!$_Lj7er2=yf3ei^A>T36Lwoat?{6$Gt&qOU{QuaU)8)S(`iJPt
zmM<3m^&-es|B$Ieh)L;-JDPd%*4u(x*XP!rosecYwe^m`5uuPvnqCev@>WWm>3&XG
zR%>@XoLBYpJe!*T`R27Ywl`-9$ba6vUi<Z)ssEVv>`(ev7CB*cuwJ0EN0IH1Kk?1Z
zZ>qD-oymVC7nhdi?8Rggx7(4oL+hEXL;a!H*tB}a0F-1}tv7wmOJI7t%E-VVf-RX=
z=H}o_r(64N^9~#Ew3g3pa(I5~?W(nBV-`3}V%9LyUA?i+;gWC7Z>>qwnPROwtDY$D
z|ISjeeWMOXYGkd)gQ8hY;V0cp3QA@O*y+She2`+>{6ue+;LSh{p(3LXW_>)ZPFuD#
zM(|hudb`$aX5sasrW>j58LaJFd%j-GT6*+=PS6dWW`3jf;%|#&B6QAgoAPi%a!l}q
zw>R=O|8jfe_F+}L$i0h_tRMEQUw>fv9luxlVTzoWQet~U>x<8YzdLOEYNsKC`Jw2&
zd#77x@`koE{!{*zyguNA9Ov=xXH6bDUaP5{YG=~_?~G3UH|zTM{}}?j8JXmmapi9b
zU=T7e0K<@BNh64bHMg@uaywd1M>iNXMvx6&4lGVE3<k#!E|Xc=K#pMo!p%VX9<Xp>
GU;qHPJ>gpb

literal 0
HcmV?d00001

diff --git a/stable/miscTags.zip b/stable/miscTags.zip
new file mode 100644
index 0000000000000000000000000000000000000000..2d88802392511ef585fd0553bbacb3d05ecf1ff2
GIT binary patch
literal 2584
zcmaKuc{J4f8^^z9Fk!OPSVjg}u2LpRgdt^(Vi<-PMo408*>@>j``#GTNHHpj7(<L*
zgHS|NQg)`X4nm}>^ZV!Cd(Qox&w0-0dCqyB_h0XG-Y>K%m=gv7z&;?^8EZR;@a3E1
z0Dwg>06+l=!0Wodi`A8D{>V@-g0&S70N#fhzWTcYL-+s=PUhYkXY}56O4i%d0cAnP
zQfOj7d7x<Rc9`c!uEPtoQp#E)E<980zzDlw(J(%E0v@8m2oe>UlQFxXN?zLTolS6-
zMUI<k@`n$-JpW)4D}JKduGM5;vyl%x<mtImC5fQsY+xarD%dBiKt&?RHc2ucuJAN$
zFqBwzS&af6iL4hv<d<YPrm25YEPD-;g~K_F$+E9<D1%RJIhL-4t-pd6W_`2!RK9NP
zn^C4RV14+m(TIv!A5j~|-;ndv-{K}uzkWemDh`U#7anou(KWutt>*Qv*6(@2L3!H8
zt~Z+)8}H3i@q>aAv@0Qn<wX_AwB1L#k(Kf|pCxY-_n}L07cG@PVfSLO{Ey>r!H&OB
zP(KTwu=A;@Q7^qjp03!2XfrQMkUDw-b3fSr<O$u;$uALdY#>Mf!nQh-CI1{X_(h~1
zlDa)83W$JiEHteq4ZmqFJeN;`Fi~^Fu&iX>$&8^3ill&e^LJJfEv$H`0M)qZq4stA
z#s-IlER9hkWRq^jtjG8Ijr?GP^7U&u!Iz59Etbv9NvKK)JNEQxe~oVSTX9XzN0zht
z9@?5~JbIj;{ZzoPkMzDFs8RZPH-#X!ON+pw!i&GA{M?m&EmDgun+JU?Ft8KhZmKjt
z1XlJq=luttTJAOk{SUYNqB|$ga|3`9902(K?iSzB|7Vt7TbB2T8f>?`MB0`!t8TCg
zv!();OfSA5u6lt_YrmS<okH8}UIvjf!vw(@TB6-XCd{S}#$^&}n93K=9>_(_PL7WU
zBW3XNeu@d{jkcRSOUEZQR=93Pn~@l$H(Kd(w>?vYc6E~EO!cA}5~maw4R(JRv|H>V
zw-Pl{vnm4eHvJ8`i-s38Cx{9d=G$=v1m5>#J$v?{xuG(uFm*MV?owEwR4k2>vp6n_
z%FE)iRkz>lzsGgkNFPa}Ww?G8x@eLv1Z?X5lt!yLmKd!luE<In#hY(Wwc~kd=I9B{
zvXnSee5$L+vKaT#$bfsSaiQ1J6umJE8RaeAUMM|{*|jw;d>_!wWZ>ETU6YMiX2XJ+
zjUP;X@Jl594CO)K$_m>>5Al9?H%a8k3A~RkJTfdA^*I)tXe~iC{2ZUcNRE<PpiW1e
ziOZ0R)jdUI3h2?HB4>GTrQTJy|NM#9a`oG{pvXS2u&IeQsWZ^m3fCTObVPeIw9dGX
zA*hoG6xR~+{+3tFa@3}3yJ|#WU(6wL^O(BRdQ^4Ad8EiZxn-^?j<k8c(?I;%ssW<1
zFpSh|1HExs_f8M~Mkv0O-Z1*)=XbrMyKXg``H7pX(TVb76XiikP46bs_~o!C?{8Ic
zQAQxfu4c{WL6xWeXm@AG%<%58)`itvcg&i-D_@$XK;7)+`xU}tGqoR1cVt7xBHm&=
z-YTn?$|d_NY7JvF%#1j*w8t%v-ZaVBK3raka<nb&Z7GpBG&^zdLz2nH{d6Oa)Y`2<
zo!sJ{9D?s%w;oncZa}}~3H%G;-e)?FEQbtbvo3L?9;`)z*&nn^PHiEU$zyI8N8vul
zHHA4N*ckLfJyR>KP`uLAWs_;1kN$z+i<dm{?6BHUA;7M(Q>jJqmG4BxSK}ICc2Roe
z6;`bWHNn!mTYTsw&P7I0C^fXjt>%m?|6P43$c8a>N9cnN9}IuUsrf5IOlRwY|4Y|q
z78Z`9Xt+qF{ba%4!88lXaY(C(iqoQV*mfDzCXd>~31@gmjht!r#r8&#f%Y^|oBR9S
zX35J=N*wPn3&Mopn8rxU{pi@K`)u9fIK)mAHKt0g*&0%Jw332uiXV<@lMRs>k*Qn6
z989Z}e>Oc7^89RE*OAX2#Ol10FP6t@m){qSeo*V;4`@5ii{twd-U}XBbM<$CLM7w;
zw7i&C1jRIY<f1d41a4M$06O^-K!HyJSH!1Dj)IxpeAypG>$GZ{(blG7Rq&$MYnW<c
z$_P}7FrFw)`BBs<CGC~d;=p6;a>tLm#Wn?!e5>Ms(P6ww66%O=z4;=Vk<H@IA;{y(
z@e0jKym2mJlYAmu$CgnMcOtJ|cTnAk__Iv@z>+sE0Hj3kPC*`l9D8!Io-}=&LP#m_
z7>Icl{A9)BwJXtZN+p%FP(xH?M{ij5%W3yoD}xZK0J>WAm6P#>fy)wc5#-`V&L6d3
zNN#kp-lFAdM!lXVL4-6IT*jd`-zQN(d{Hx${D4u27huxjJ#$8lllI@&ZD@JMsren5
zC)&COCw6=KQ{u0*x#hlG+?UI4Usqf&t4?6XbJm6DEZPKVU$5xlkMqzT8Sk~*=Ov0&
z=XUHpP4V}jelt*p8Qdg)L*y~sxdZNAt=g8V8TJUYw{frPR+d89?)H@#6`)k<`e35*
zjvGtO6j~cX>j6>n@@V_1Fr~Ugu;h(9!JKRJ?75xQ`pN#a<(+%9&M#Zt$xMM`o|W_I
zlHEL=S2K%mLGti~o6hAb<$4I*qkEK&2ESnE0y*DdYfH(kTy!M)Y0)820NaHN5}b4|
zZ{h_dL}2Fo_i+agD4VY<<y<ZJ?eoOmC{UA_c;sylsZPF~s^NvT)&}kR9Cy~?&oEe+
zWT>N9Uw}_t;Lx;F!%Dk9{V>(wb-L2m<SLqqc_^W;wJHT_Rb_Acc&4CPzjy;duwv(n
zC8Ukkoc#on*E)R)LsvYKkk^Eznl#C@>04AAY!8<<>Q#91XJ&&}!cyMsr_LOG{PL~~
zEpUZcD@#n4_ZG;K{vvH2n(a!mTZX{G&&JRu9d%nFLqXEAT*wD!6x!Mbk|w)LnR6i_
zktkKR9sC=_bjhg(9Vn~TmdSS-ix(I0*!bYRztcb9$rs0ltgC9XLR1lcY?`oWm1v^<
zoUYO{1W8nWV7o5N8`mE*Q`EC;DEtVGZxRcnhxZ?Q#eqq(QfHM+cl;_@eOq!ZXP|AI
z`FQ4l(&-_=EII*QI&)->SHCOP?s{yMv#Axnxnte}`Ucls7PR7YOT!w#Ec%Z$p2K}n
zsDP`82|m5ZioixKMkK}+MQUBAPC;`Zjx3SY)M+WSDF;Xr{9k}2wueptu*X|K(aqo8
tKXHref4KE8)cUvLKSTKMib&Ak6n{tZe+hE!WjFwU_THntAJ6l9`U?pGs(k<e

literal 0
HcmV?d00001

diff --git a/stable/pathParser.zip b/stable/pathParser.zip
new file mode 100644
index 0000000000000000000000000000000000000000..355be8572e568c2a50476c27eaeb0dd6cf7c8a61
GIT binary patch
literal 5783
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
U70v(v^51p)_l*9lo&kXW0!c&CX#fBK

literal 0
HcmV?d00001

diff --git a/stable/phashDuplicateTagger.zip b/stable/phashDuplicateTagger.zip
new file mode 100644
index 0000000000000000000000000000000000000000..f2b61a7091118a95aae27bad5715f19e5aa41cb7
GIT binary patch
literal 6788
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
C84vdW

literal 0
HcmV?d00001

diff --git a/stable/renamerOnUpdate.zip b/stable/renamerOnUpdate.zip
new file mode 100644
index 0000000000000000000000000000000000000000..6c59db555d53ff5220a9afd5ee03a706bce73909
GIT binary patch
literal 22325
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

literal 0
HcmV?d00001

diff --git a/stable/sceneCoverCropper.zip b/stable/sceneCoverCropper.zip
new file mode 100644
index 0000000000000000000000000000000000000000..63b6a78813a226d8235f80a8c888093b2904eb44
GIT binary patch
literal 1934
zcmaKtc{J4f8^^!Km<SOvZVCz6MwYpj8M>G#Gib=v6q%(gO?D9{``BW*_B1h(t!(4E
zwj^OJg{)Bx8I#CXS;vy<=ic8x_ukXJ=X2iY^L+mJyv})^Kb{vB!w;4M06-9+k<Z~3
zX2C%X0svqq2>?>SA;AB#i<b+^JJ7`s<>&3=<Km}9@y9s`0sMl-uU!5}K#(xN2cF{x
z0C4y&Wd!e-J_eTx;}DJ*yL2+Fa_Y22l!kRb+7n5SW4tgVnOK~r^8QTa^J(eXw%?Ga
z(!7_IuLNI~*Ig*^e;R_|dBifHv-);h6x=wrwlVv~z#03W&;!+`8fYOL=F#_+WhfNN
zRfpap+2?7S%O4ki_cHI~bIr@-Bu3tW8M+qxdTE5FUmp}|s$c3u7F4!(r{XC^@zyID
zdnJ!0kWmC5%Dpzgmg>%ZE$}uU!#obIE|9}U*;JbyNxFzuF44iEO9xWL_o9uI3eB9z
zphz3LPPI`foh6We@`+zH)_)nlpP8oCm~oXZ?7H`~Xb){)4#Im=RRWu5uuP{D9t@?>
zmz?|FUYtv>G)Z`JtN!2`l2G}^o>cYyb6DG%OFA|-44e@yxtpl5J|2%z6LF0y)d1my
zGy@vpWV*vz3zS-c#lI2(9T(;`H7Jq@IH@B7#hLgT&H3oP^Sz7N3Vu+3p)HWXl*rwr
z7B!fplm^{5XFxmK=qD3l6;;9e^LV!$v$Ec(*^RjHHCSPg&Ddeyk&@Deq8t@S0uiYh
zNE4ruewXNUTd}62l)|~4Mhv@eCB$+X4P{Fw)T-r8AT4`4XI9JN?m-HiFc0JJW}2Qh
zi`$e)u5ET@w`Zql<10(RWgD4X_LCwd3!0gAN{{GNvtnji<mNm&m*zVrRFyRk*_tI8
zbZafdR<C#BopWS^=>{E?7wy{2{%+I4+O)u$^2O+4m_mNaoUD~QzH=rB-4ku*#%-fJ
zn|n8lZELDcJVhQ`tV^_Qc8uXQ<q%@(97I@Odu2MZ9!1)bz_C||5~renMV6VX=w9+|
z6jK@bJ(RBg=$dNyG`kANUE(v&F{g-%*o7t=IVP&<!AC|e@Y|xy8fq$iXY}YF`_+OR
zQJJsLrRtTp_}yXkrPsSnZD;l5QjMRlI)IDlkVDLNG~<EwXl3Fw4ClBBsYn3TW#_Sm
z?zo{gTpPzs>nKu`MHVc-S7=Y(qGduI)Rz1JW?X*l=J<!tWZM37Z4-QVqDFBRglM7D
zJF-3#mJ}xRy@dSrEmLkH%<x(*DgX$P>?2mH_*i(^L^F(GOr@93s<iI8`xaWP`DAxt
zJrj<yw9s^@rHUcEyXN4WJy~Dl)qc?%4WwKAA-~LnSR*l88*()axwCIKk0a1keUpK~
zp5A(8MRr?1Z+q}$UJQyhKQulp9x=>jjzR)zzDEeBBOD`+(moLlXAhasU!H^@`J8O}
z4^FSv6~*dgIySvmSj?)Att@PHT{?+^Q}={p?j*}KNqApjcv$vLc&bi^%B!kaJSm4;
z1!pP2WoN0j!5XQkf<d$a@&d~L=$lW|j|m@UTf1&oCAFhxqN0iMpx&h*`NJx+^}h|b
zF&aB%rhIO=Tz|%sd_P8^4RSKFR=pImP&I~L>3+GdpXGjGHjbz_+hG?KOYi=60<x9E
z5sog^P0AM!{J<|UWmxDxIlw+qOxX@H<q4)Zf0bF2=}Z+|FjqRZ{2;9L;q1`}`0Mx*
z#D)iWL5GJhaF2L#{>-2lr$v=zH@q%!uoE_JP<5@JYtkOrHAXWvqq<%sqDX;x>pSkm
z>}P)d*41^BSzm@Dhnpx?UjipdiKfPm<t$bGA;c<gJwV1LSxQ@%IU&s6Q^EE8x*)w}
z)QIt)YBQ|>+V&JtVeHJJ5Q%`0%5T>(4H@f*PH@vx>Zv%nb)WP79yr4$R&NF~Iih&y
z@jWK1+Ik(YK_Lh+hXU|kx$1Mt#tJd|XlbstbW3a*=^edU7?C~T*xHDn?ARtwK3;Vu
zVt-!SB4W`rDqk!4BZrMp?84kC5HKnJUYEMV5ua>MvUgo*PI}h?srnwh;RX(7_}-0}
zNsPN!8WwOklyM=%Z*^bHr?5WrXMNN4_L-p}0$*pIiecM&UvheQD_6s<m$SGV;&0Zz
z@nipHfxI=|XRqCDUcH+GKeRxwr^kP307ui=N7WVwf4SL#en?Flh2e%)Kt1J(M@h&V
zksJJwj6%mG*JE3$`z{d`*~VuFDOxe=P*u)Z2Ric2@97L_c-EQTt6kxou2};7LJ5vL
zF@7b%cFD6sw&9ypB=LY)81Lpzh6m==O1=U0IS7m41Ih9Ko5W;xn*ad5-4sUtQT<qH
o0{>UqKXmp_^4|yZS26_hBl4eP`Zu(|?iT<6?Vj4*oAu}Gf3c!s-T(jq

literal 0
HcmV?d00001

diff --git a/stable/set_scene_cover.zip b/stable/set_scene_cover.zip
new file mode 100644
index 0000000000000000000000000000000000000000..d032d0843db99ab36fb38c9d11c4a8459857debf
GIT binary patch
literal 1574
zcmWIWW@Zs#U|`^2=t&BTxII0MLyM7tA%=;8L6|{?p*Xc9zBoBGFEu_nzbv&#uQE3$
zG=!6ZnZxFKDhQWWa5FHnykurzV5tWhQXAx$cUVDS&*!etcbv9go<vX8lK;T0)pgx$
zRisYY-7BkpeP5@zc9DjzdO~@6o8$@CoCU6p*OV1yE?cKvR{SlK#@Q*AP;#^X#D%WM
zg1@F@>mRl}!NK>(j9GCPqoTlxjssk)=LRolb)TEWG5wIQzPN{HRB_PyUb6zlIt!aw
zs{Xt^O2+2b_)cx#BUjTkE%k==BA0J7l43MY+!8yPqpE!C1=G#Ss5Xb3se3i_`mLXe
z_$N9w%fFCj-q2n-)iChpJG<8xiciGfzT+)eGvoSPPL&ze&#$h3bIxt*{=&J-vlf+0
zvmL1Y{wjF)gq;x;sVw5%%S;SXo}>!xJMhJi-@j7B<aXD}V5M~~`}au2^}fyjw7W-D
z#Qn9a)O7v}%U!*%8?JgXyX9Z__vBeW*#c04U0Y^S><VBYN^vkS@IZqd65s`u_`<t1
z)VKe(nZVxH;R0t8Rj+)FYm(uSXx&(Pn^h=(qA!<7pW=l}9?#afaH&i+`S5FhdfO7a
zIZO7<kmI|*XJ)1GwA|&r$+y&u=J4>S|1LGLi(K3GIWVH)vz6zZpS!#y>e$NF-*}c3
z-Fz{N^Yn+)@!@XUFE72kYvbX`US<=l=enPe-}`u>w4BYQ_tj4ige+=c`KP_0_|06s
z-)v>K{w}Nz&Fj6WX7IWvMDMHnuMhR5=S3V&&PfYWthj7Y-ef43ZF_0b(z$Qk`Wug|
zpI3cMTv_2`eDcf*>72(}x^+D7<(A2t=YRgr&o6&t*4r&i$Kp0dua4evRpP>(vO{w_
zTL1ODPw5olS~w*nVyB|gjU@|S%hVbswtBQJ-@o?G%KU!)x!W>oKFZx(u6k?!u3t-o
zOOH)f(Oj6cc7oPfC&gE8@~%f>1Ex*j7QW@Y_UzJERqc!~*uVKtG3(9r+-jn5%H;5t
z6L*~#JTFzh#F=_tS7K3Y#?l1^LE3dE{@hl~<1zWM_~@s@^Ddj(w-_wmvFCu6+3FW5
z-)lDHy?j%4(9dbA#_E8X7saKxuj^~)I+^XvZwpz&Hr-#$TI79u!Q}Jj7r6%J{S{C1
z-)z9$o4k=_QU=$?B~@CrH@DCAJul-MA+;|l#{RRnnXs|t|3g32k8Zy4+_KqZf>Ny8
zr;;x}*A^a|UJ_-ODRS(L;RcI+mAcVcXTJt4V|GwzTpMu9_4(^1`#7AL{Iu(q|6cZ`
zZmxmYjmiT%COr8Y9mqU?R`P+bZmx}@3l1pp$3IO~4V}q;+vLR6UuQV^xl7b;p73f~
zn05F4yL)wiYJZ;)@2MB_<<D4?ch1gi|IQeLWaU?4Q=*F_KPASsi!51H5_R{7>7jQk
z7Dy!cr*5zQWS`<_sxs}s%Yw?8n|5~wL@e=qmEFet(5d=Ih+)68fbg~QL*HJ0kJXfE
zVOpR!;jmT(yWNbm8-fcLt-dkCyX@-B31at4VwDSj{uIB`S<I}FCU3plMQHJwf9Vnh
ztF$Bg->$69N_o|*uyy$!H;Lxc&urEh+ElVWN-(MA{QqFr<u`})0vVdGTP3~!DXNg$
z#^HJVMQ?SI5Z~?O>OFFNoBz4oSP}7M#_{Lv&Sx(Bo8<QWd4INjznG4G0kgd8M;YOH
zq8|!xTzr19-lOS|)Y`jEQ!m{xh?vL5cUSzPjlbZgY~BgVKYy}c=W=+)Hf?ReQO&)-
z)HyzI@7nvn`1^;t>g|<x{-s3ru3XX>HRl^k<L8)8u}^ni8=rr<U+Mf}o5S+%pLhej
z8JXmmaTT)?z><@J0a)rXENKL>uok+kkU|%&z(qG0wID$@xEyFc$Y4aVg3Cl!HjpEj
MfN(XCPGtr00HlGYDF6Tf

literal 0
HcmV?d00001

diff --git a/stable/stash-realbooru.zip b/stable/stash-realbooru.zip
new file mode 100644
index 0000000000000000000000000000000000000000..755eaab32c96384b60a203d7e57a62a6f71badf1
GIT binary patch
literal 96547
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
be+yguF9}0`?HLRV^6P;AN)poTKl}cF(ll^c

literal 0
HcmV?d00001

diff --git a/stable/stashBatchResultToggle.zip b/stable/stashBatchResultToggle.zip
new file mode 100644
index 0000000000000000000000000000000000000000..fa9261de2430f9bb6a9c3d53e2d11d1dbb345506
GIT binary patch
literal 3638
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
V|0GXC`}Z-*KhgQ8Ix_#A{sk~~pa1{>

literal 0
HcmV?d00001

diff --git a/stable/stashNotes.zip b/stable/stashNotes.zip
new file mode 100644
index 0000000000000000000000000000000000000000..cd28f7e2543ecbeb61dea9ad6fd6992dcddb8ec9
GIT binary patch
literal 1466
zcmWIWW@Zs#U|`^2=t&BTcyW!*_AWC6gBcG4122ONLvcxBafV-hNouiPR&i(uCj&Ew
z&Gl3eF0J5ZU}Sj-RLfEi)V?*$H~+Djz~1NKXI=$y2DE(JAkMD2;bh)~1veH%yr0)3
zlhL`YGiZrJ&^M{J|JChFTqbT4-p*Pz$>p5*{c0KCYuQ}4G{R=Td8QTrZIPJ|*9q<$
z@r+l3GMJYn7jQ?bN$p(w@5$e;PJh|moWJjDtmKVa5c~Ar^0l^iz8>=kJQRLYfUo^v
z&*oO8uE5y4o|zjME*<sr{-nb@S32zfR_n)~6<U98SsJyiM9(r?E&TPe_o=r%9b4CO
z@)!NyZGAdpQEy0!>;DDTcg{U)d$G0rbe_`c>1{9jCdYElnsxr)Us2gRKeb$VWqHp|
zZ^@2Q={t0+C{OQ|<Z>Nvn-vP&eztbW2ZJx&Sz&j!Vd~!31yPgLq+fMye70^MhbV(y
z_Mzu;)3}&zC2u_w_ED{vKKr1}x%vF7+5dB}|J@XG>DH6VNyo(>H`!|3<dfXEY)Qja
zPew)KXuhZJ?_4?f89xUvHav7NJo?b-*Bh3tcsW%<YrUvz)4qaRi>f{yJf3fxAhSD)
zZ}p<*dwg_)o~Lh;T)LlK^POeZ&xsvv!KU6C_9E}wHmVo4rIuW9oa5)W`QvJy+h%jG
zm@Mg*>|Xn9MR$UTi&3P7M7zqPGuQsk>bNSRD85*PUF^_FzSio(3G$0>TP3BGR`v*4
z$;RKcwRz~B!SS`?{MY~9sTN-xGJeeCILKvr@z=~P9HD9_p6xR4G2Yxfjq{q&yr~n{
zCbmUe-!FSKm$B)lpxES-iB-1YtBxM$>U&sRcEzpx;AdXFrVBEX;m3_WR|co{W>4(<
zb4g{+3+uq{*nZA^XJQxKvwgAk&bdom8z;G6yKpmbs&Lx-Nv|J;_fIh~yjQIv=3MzK
zJz@4oRlb@9@25S!l%1VoW$;0tYu9AolFi90=arx5`J2h1m-=+}uPtiVeM<H=E)98W
zs&znPW>(0_wet?<??09;edzZ_QI|JtFRhw3@&~xT(R^vSc7sXIhpF8mE}Qi9=47ok
z;(z9PxIfb2FX!)OBbOQckx!nTWH@r-EYlXoMU0_GSRxV_=3C#?j)>q`@yqr1|H~E@
zAs-@dZQj||dDbr@O=6#6;zpISnpJ;t4^8YWjtKa&J^0F{1!8Mw&4^%>Jbb&v=Sq?4
zjENUcwT0cRpKy}7FK}a?KDX+kcRSWc-pnt!;`Agych(|1sYPXxGruh_4nM>AX4|F>
zMU9*4V?35`n7l0Y2cz;!ho36vAFa^KW{sO@rS-mdUq-#5tl`&PQ2|TDo^M;fLh$!_
zrB%Nk-rhYoWJB{|6N_@MvRxj#Z=Jre)#+T-*^0#)WmC92=KN2dYsB+FC_MSWCzWF}
zcPjCmI(*eCHRr(ltBt@&;<Enump1^VjQHthcVi+j%O3$^KGZUzGB*cbA)(r5$k%Kj
zz*4<GX?KXDr}uRJB`3N03N}pK+5L`h%^$lNQ&!8q<-06Zy=RWjLrpndpNnp1<<B3o
zmAjmxz%zTdLCgcqrp)ukrVPxQS*MblYLv{cglVywepV69x6C>_uaa&1SF?{(eGONH
zbXOUQNUl5(Gv(QhR@+r`uYZ3hw(Smk!os=#{B#+wH`~?t-_6_jfjPjNkx7mjSMetS
z^dJKRBM>iX1hLQxLsm#(h*l7y8;KfP$VRHLpcn}bJ6vY6vVk1H1cb|h^k1M(1_l83
C;CK-L

literal 0
HcmV?d00001

diff --git a/stable/stashai.zip b/stable/stashai.zip
new file mode 100644
index 0000000000000000000000000000000000000000..c7d2b5b0f73a71c15c519dfd76a6e587b133f506
GIT binary patch
literal 27399
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
Ny8gU>e7*(-_Ftr$Dgyuj

literal 0
HcmV?d00001

diff --git a/stable/stashdb-performer-gallery.zip b/stable/stashdb-performer-gallery.zip
new file mode 100644
index 0000000000000000000000000000000000000000..1a775196640fd3fc524fcff354b2cf91c735bdbd
GIT binary patch
literal 3780
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
FKLBv-y%qof

literal 0
HcmV?d00001

diff --git a/stable/stats.zip b/stable/stats.zip
new file mode 100644
index 0000000000000000000000000000000000000000..4d567fdc0976a64dedc0955a49457ec3685edf17
GIT binary patch
literal 1420
zcmWIWW@Zs#U|`^2=t&BT2!9>^<rXso!ylj!2ZIblaY<rHv0hejXb2|*Gl$LfR1hw$
z;AUWCc?nd;QV-PmG$J=!+EU=(z4(QCmWy)V`sxQ*$S{@H7V1xU&3)2wA+KBP$&D|f
zik3#2Km1U?{@%CR<mH||#Yg1#M7=#@+@F@_zWU(hm?a06I#{^<w{=>v$6r+WfM3Ib
z*F9%vGR*N}Y~fzU#$l0?(~#B^pm%Psnv<IY^Cdr4StYH@ceK>xRyA~L#JhcLy!>I4
z=Pbds{X5%Q0=kr~SGS)zExu^!*A^Wyp9|BC=LNoD?D6P6uu^qL+u=p$4sdSw+@V^w
zbccb6-%VDD0`*G~9<yg%e!1!Q?cZ;A{b{P0o%o?{e#+cbf#}o5FD#c#P4)h=)WiDZ
z1fxV_r}KSrd;J-;f9{p6I=XMKl0#3RefNb)8h-myeELsmIv;xEv&@Eh*{jce^XB<l
z%#|qPKFMk#uWT}XivP~g?tA;J=kEFY{fC9r6_v27zLq-d_luV4xi58i^6ugc?pI;U
zKKdOzd9L^Fk1s`uLbc01Z+3pSd46Th=gSitj;9|poZnhGSL=h5rG(^`I~NQBZAuzM
zD;T!EJI8wC;j7INtn6#}W<{nga*2<!6z22UCoGpXc}mL7+5E>XT(tXyv-CV&O$$Ht
zuHoJE+g|b(yDakrhfS|t66%9Ftd?5*IKQW%HQq3<rDlDat(*Ua_vhyw<vd}yKSAXE
z@fVt1b=vWBPTX{Pc=p=F+4lmt?-`p;%{q5Q_DZvBW9j-Vr=5pNEpIN3TNPTg)n-j&
zS<%MstBv=o7+3sYoqlJL*q4^C4}bhm)Bn%*J%2aflxOwp#O65o?cCGN&&*!3epN&K
z?OVAkJ#T4$QHyW9dbf3!fbWU7`M>5})4%ogzx%(v58LiNzqj`Ni*qk{w|_B=^g4R5
zMn5;*{d@7`%*3=7ho^58-(3p({4DxQ+muZ^Ln0*>tmw$zS|yu%qO-o^SJn}oH@f}R
z#qA~Ciyaqi`q*&6DCF{6eW}tn+UMAHPuMv}uTYvB?3hrw*PmJZ@2P2=^#SW!@61-6
zvM)|b^me2{*p%!8FK%Wyp1XPCYtkadtnZxyn~oe0Vy)KKv)AJ|(`6<0_HE$4KO(ct
zr2fCG5@+5Ly{)kAvd;4obGzcEe?K3-lW99&e*TnISmfRfFPM*P+A%G%rt8DwO|3=e
z7N``v6i#_2^`z#-ZqH+~fimW&Ch)skDL<N%dZ{cqV%m-+)`^ndj#}4OdwF#(x*Qa4
zzT<j!>CgFs{wB@)8ASe1Vm>Um{Mc^WnA=fnpZRMUFIV5Za325v4Uc!qPLx@)cca9!
zM~AO77<ZcpCUV6Y1hdTWpHkH8x>;+@$5Z>xJBF`%uf0LL?CQb7-jrhdS6th=LsU0b
zh3x-z#QgtiiP`_<15nC_i2?%8s(|@@FA#IW%ZAF_9DIdCY42XXLk>L6-)&k|)3hS;
zlM|AiZ5$pb&GL%zo+MUL{fjv%Y4h6iWe;boyqT}4>V3@6VosRB&hJ@|GQIZL?VJ(s
zv)kgu%^Pu3Qa|3B))ITJPl^9Wi2Ig~D7$5kS6?u=mR=N{yW+ab58EE8i2uJCrQ|A3
z?t5VqW9pY5;LXS+$Be6JlK^^xfq@Z-mo$P{h=Pt4QqZ9la_FX^1_rWeGAuCDz(Iq{
UI94{0wM;-b7f9a(YGPmj0Bx3RegFUf

literal 0
HcmV?d00001

diff --git a/stable/tag_graph.zip b/stable/tag_graph.zip
new file mode 100644
index 0000000000000000000000000000000000000000..f2485df38641e72b3bb698b760fb7fe102bc8ab9
GIT binary patch
literal 4433
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
bzaxJ+$A2Rdll(ez;)@S`aRd2OzefK8pd_2q

literal 0
HcmV?d00001

diff --git a/stable/themeSwitch.zip b/stable/themeSwitch.zip
new file mode 100644
index 0000000000000000000000000000000000000000..7f377b98dcb2cbb29025cf8492a9c27120e98323
GIT binary patch
literal 108068
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

literal 0
HcmV?d00001

diff --git a/stable/timestampTrade.zip b/stable/timestampTrade.zip
new file mode 100644
index 0000000000000000000000000000000000000000..963f3313a5f169344041038754b14ef9cdd57ebb
GIT binary patch
literal 6021
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

literal 0
HcmV?d00001

diff --git a/stable/titleFromFilename.zip b/stable/titleFromFilename.zip
new file mode 100644
index 0000000000000000000000000000000000000000..6c2618987701e2f6e68083786651c9a69f85191e
GIT binary patch
literal 4134
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
N$l;t>FZtQq{{ij+$>sn6

literal 0
HcmV?d00001

diff --git a/stable/visage.zip b/stable/visage.zip
new file mode 100644
index 0000000000000000000000000000000000000000..868f6751f8b1151c15dbe7e829112b0207ed5d4a
GIT binary patch
literal 104263
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
C2{Nhx

literal 0
HcmV?d00001

diff --git a/themes/plex/README.md b/themes/plex/README.md
deleted file mode 100644
index 64c6bb24..00000000
--- a/themes/plex/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-![plex theme logo](https://user-images.githubusercontent.com/63812189/79496351-dddbf780-7fda-11ea-9e68-46d0eeb4e92f.png)
-
-![plex theme preview](https://user-images.githubusercontent.com/1358708/178891502-c71e4278-0378-4154-91a6-07e1a8eaa1df.png)
-
-This is a community created theme for Stash inspired by the popular Plex Interface. Installation is quick and easy so you should be ready to install it in just a few simple steps.
-
-Feel free to experiment with CSS and modify it to fit your needs. In case you have any issues or improvements we will be happy to hear from you on our [Discord server](https://discord.gg/2TsNFKt)! You can also submit a PR to share improvements with others!
-
-The Plex Theme will only change the look and feel of the Stash interface. It will not affect any other data, so you are all safe and sound! :heart:
-
-## Install
-
-1. Open User Interface Configuration panel in settings. (http://localhost:9999/settings?tab=interface)
-
-2. Tick/Enable Custom CSS ✅
-
-3. Copy & Paste [CSS Code](https://github.com/stashapp/CommunityScripts/blob/main/themes/plex/plex.css) to the Custom CSS text area.
-
-### Optional - Host Backgrounds Locally
-
-_These steps are optional, by default this theme uses the Github hosted image links._
-
-1. Download [background.png](https://user-images.githubusercontent.com/63812189/79506691-4af78900-7feb-11ea-883e-87b8e05ceb1c.png) and [noise.png](https://user-images.githubusercontent.com/63812189/79506696-4c28b600-7feb-11ea-8176-12a46454d87a.png)
-
-2. Place `background.png` and `noise.png` in `~/.stash` on macOS / Linux or `C:\Users\YourUsername\.stash` on Windows. Then edit the `background-image: url("")` attributes like below:  
-
-The [body](https://github.com/stashapp/CommunityScripts/blob/main/themes/plex/plex.css#L7) one `background-image: url("./background.png");`
-
-The [root](https://github.com/stashapp/CommunityScripts/blob/main/themes/plex/plex.css#L18) one `background: rgba(0, 0, 0, 0) url("./noise.png") repeat scroll 0% 0%;`
diff --git a/themes/plex/plex.css b/themes/plex/plex.css
deleted file mode 100644
index 0eb2166e..00000000
--- a/themes/plex/plex.css
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-Originally created by Fidelio 2020
-StashApp Plex Theme - v1.0.5
-*/
-
-body {
-	background-image: url("https://user-images.githubusercontent.com/63812189/79506691-4af78900-7feb-11ea-883e-87b8e05ceb1c.png");
-	width: 100%;
-	height: 100%;
-	background-size: cover;
-	background-repeat: no-repeat;
-	background-color: #3f4245;
-	background-attachment: fixed;
-	background-position: center;
-}
-
-#root {
-	background: rgba(0, 0, 0, 0) url("https://user-images.githubusercontent.com/63812189/79506696-4c28b600-7feb-11ea-8176-12a46454d87a.png") repeat scroll 0% 0%;
-	position: absolute;
-	width: 100%;
-	height: 100%;
-	z-index: 2;
-}
-
-* {
-	scrollbar-color: hsla(0, 0%, 100%, .2) transparent;
-}
-
-.bg-dark {
-	background-color: #1f2326!important;
-}
-
-.job-table.card,
-.card {
-	background-color: #30404d;
-	border-radius: 3px;
-	box-shadow: 0 0 0 1px rgba(16, 22, 26, .4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
-	padding: 20px;
-	background-color: rgba(0, 0, 0, .3);
-}
-
-.bg-secondary {
-	background-color: #313437 !important;
-}
-
-.text-white {
-	color: #eee !important;
-}
-
-.border-secondary {
-	border-color: #2f3335 !important;
-}
-
-.btn-secondary.filter-item.col-1.d-none.d-sm-inline.form-control {
-	background-color: rgba(0, 0, 0, .15);
-}
-
-.btn-secondary {
-	color: #eee;
-	background-color: rgba(0, 0, 0, .15);
-}
-
-a {
-	color: hsla(0, 0%, 100%, .45);
-}
-
-.btn.active {
-	background-color: #2f3335;
-	color: #f5f8fa;
-}
-
-minimal.w-100.active.btn.btn-primary {
-	background-color: #2f3335;
-	color: #f5f8fa;
-}
-
-.btn-primary {
-	color: #fff;
-	background-color: #1f2326;
-	border-color: #374242;
-}
-
-.nav-tabs .nav-link.active {
-	color: #eee;
-}
-
-.nav-tabs .nav-link.active:hover {
-	border-bottom-color: #eee;
-	outline: 0;
-}
-
-.nav-tabs .nav-link {
-	outline: 0;
-}
-
-.input-control,
-.input-control:focus {
-	background-color: rgba(16, 22, 26, .3);
-}
-
-#performer-page .image-container .performer {
-	background-color: rgba(0, 0, 0, .45);
-	box-shadow: 0 0 2px rgba(0, 0, 0, .35);
-}
-
-.btn-primary:not(:disabled):not(.disabled).active,
-.btn-primary:not(:disabled):not(.disabled):active,
-.show>.btn-primary.dropdown-toggle {
-	color: #fff;
-	border-color: #eee;
-}
-
-.nav-pills .nav-link.active,
-.nav-pills .show>.nav-link {
-	background-color: #1f2326;
-}
-
-.btn-primary.focus,
-.btn-primary:focus,
-.btn-primary:not(:disabled):not(.disabled).active:focus,
-.btn-primary:not(:disabled):not(.disabled):active:focus,
-.show>.btn-primary.dropdown-toggle:focus {
-	box-shadow: none;
-}
-
-.btn-primary:not(:disabled):not(.disabled).active,
-.btn-primary:not(:disabled):not(.disabled):active,
-.show>.btn-primary.dropdown-toggle {
-	color: #fff;
-	background-color: #2f3335;
-	border-color: #eee;
-}
-
-input[type="range"]::-moz-range-track {
-	background: hsla(0, 0%, 100%, .25);
-}
-
-input[type="range"]::-moz-range-thumb {
-	background: #bcbcbc;
-}
-
-div.react-select__control {
-	background-color: hsla(0, 0%, 39.2%, .4);
-	color: #182026;
-	border-color: #394b59;
-	cursor: pointer;
-}
-
-.scene-wall-item-text-container {
-	background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%);
-	color: #eee;
-}
-
-.filter-container,
-.operation-container {
-	background-color: rgba(0, 0, 0, .15);
-	box-shadow: none;
-	margin-top: -10px;
-	padding: 10px;
-}
-
-.container-fluid,
-.container-lg,
-.container-md,
-.container-sm,
-.container-xl {
-	width: 100%;
-	margin-right: 0px;
-	margin-left: 0px;
-}
-
-.btn-link {
-	font-weight: 500;
-	color: #eee;
-	text-decoration: none;
-}
-
-button.minimal.brand-link.d-none.d-md-inline-block.btn.btn-primary {
-	text-transform: uppercase;
-	font-weight: bold;
-}
-
-a:hover {
-	color: hsla(0, 0%, 100%, .7);
-}
-
-option {
-	background-color: #1f2326;
-}
-.folder-list .btn-link {
-    color: #2c2e30;
-}
-
-#performer-scraper-popover {
-  z-index: 10;
-}
-
-#tasks-panel .tasks-panel-queue {
-  background: rgba(0, 0, 0, 0);
-}
-
-div.react-select__menu-portal {
-  z-index: 2;
-}
diff --git a/userscripts/StashDB_Submission_Helper/README.md b/userscripts/StashDB_Submission_Helper/README.md
deleted file mode 100644
index fdabf91b..00000000
--- a/userscripts/StashDB_Submission_Helper/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# StashDB Submission Helper
-
-- Adds button to add all unmatched aliases to performer
-- Adds button to add all unmatched urls to performer
-- Adds button to add all unmatched measurements to performer (if they match expected formats)
-- Convert unmatched urls from regular strings to linked strings
-
-## [**INSTALL USERSCRIPT**](https://raw.githubusercontent.com/stashapp/CommunityScripts/main/userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js)
-
-Installation requires a browser extension such as [Violentmonkey](https://violentmonkey.github.io/) / [Tampermonkey](https://www.tampermonkey.net/) / [Greasemonkey](https://www.greasespot.net/).
-
-### Screenshot
-![script preview](https://user-images.githubusercontent.com/1358708/178110989-3bc33371-e3bb-4064-8851-a9356b5a4882.png)
-
-### Demo GIF:
-![demo gif](https://monosnap.com/image/p4pkcqrKWYp3V5quHl5LWOAZUG3oAP)
-
-## Changelog
-
-### 0.7
-- Allow alias separator to also be `/` or ` or ` (space on either side of the or).
-- Allow measurements to be added without the cup size
-- Support full current list of sites for adding URLS (previously only IAFD, DATA18, Indexxx, and Twitter were supported because I forgot to add the others)
-
-### 0.6
-- Add input field / button to performer edit pages to add a comma separated list of aliases to a performer
-![alias input](https://user-images.githubusercontent.com/1358708/179358258-89385345-36ed-42ea-8b71-4f7e84d3a253.png)
-- Cleaned up code so that it doesn't run on non-performer drafts
-- Added performer add and edit pages to the pages it runs on (since alias function isn't just draft related)
-
-### 0.5
-Public Release
diff --git a/userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js b/userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js
deleted file mode 100644
index e125cf32..00000000
--- a/userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js
+++ /dev/null
@@ -1,360 +0,0 @@
-// ==UserScript==
-// @name        StashDB Submission Helper
-// @author      halorrr
-// @version     0.7
-// @description Adds button to add all unmatched aliases, measurements, and urls to a performer.
-// @icon        https://raw.githubusercontent.com/stashapp/stash/develop/ui/v2.5/public/favicon.png
-// @namespace   https://github.com/halorrr
-// @match       https://stashdb.org/drafts/*
-// @match       https://stashdb.org/performers/*/edit
-// @match       https://stashdb.org/performers/add
-// @homepageURL https://github.com/stashapp/CommunityScripts/tree/main/userscripts/StashDB_Submission_Helper
-// @downloadURL https://raw.githubusercontent.com/stashapp/CommunityScripts/main/userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js
-// @updateURL   https://raw.githubusercontent.com/stashapp/CommunityScripts/main/userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js
-// ==/UserScript==
-
-function setNativeValue(element, value) {
-  const valueSetter = Object.getOwnPropertyDescriptor(element, 'value')?.set;
-  const prototype = Object.getPrototypeOf(element);
-  const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype, 'value')?.set;
-
-  if (prototypeValueSetter && valueSetter !== prototypeValueSetter) {
-    prototypeValueSetter.call(element, value);
-  } else if (valueSetter) {
-    valueSetter.call(element, value);
-  } else {
-    throw new Error('The given element does not have a value setter');
-  };
-
-  const eventName = element instanceof HTMLSelectElement ? 'change' : 'input';
-  element.dispatchEvent(new Event(eventName, { bubbles: true }));
-};
-
-function waitForElm(selector) {
-    return new Promise(resolve => {
-        if (document.querySelector(selector)) {
-            return resolve(document.querySelector(selector));
-        };
-
-        const observer = new MutationObserver(mutations => {
-            if (document.querySelector(selector)) {
-                resolve(document.querySelector(selector));
-                observer.disconnect();
-            };
-        });
-
-        observer.observe(document.body, {
-            childList: true,
-            subtree: true
-        });
-    });
-};
-
-const aliasInputSelector = 'label[for="aliases"] + div input';
-
-function unmatchedTargetElement(targetProperty) {
-  var targetRegex = '//h6/following-sibling::ul/li[b[contains(text(), "' + targetProperty + '")]]/span/text()';
-  var targetElement = document.evaluate(targetRegex, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
-  return targetElement;
-};
-
-function unmatchedTargetValue(targetProperty) {
-  var targetElement = unmatchedTargetElement(targetProperty)
-  if (targetElement == null) {
-    return;
-  }
-  return targetElement.data;
-};
-
-function unmatchedTargetButton(targetProperty) {
-  var targetRegex = '//h6/following-sibling::ul/li[b[contains(text(), "' + targetProperty + '")]]';
-  var targetElement = document.evaluate(targetRegex, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
-  return targetElement;
-};
-
-function wrapUrlTag(url) {
-  return "<a href='" + url + "' target='_blank'>" + url + "</a>";
-};
-
-function makeUrlLink(element) {
-  const currentUrls = element.data.split(", ");
-
-  const wrappedUrls = currentUrls.map(url => {
-    return wrapUrlTag(url);
-  });
-
-  element.parentElement.innerHTML = wrappedUrls.join(", ");
-};
-
-function formTab(tabName) {
-  const tabRegex = '//ul[@role="tablist"]/li/button[contains(text(), "' + tabName + '")]';
-  return document.evaluate(tabRegex, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
-};
-
-function addAlias(alias) {
-  alias = alias.trim()
-  const existingAliases = Array.from(document.querySelectorAll('label[for="aliases"] + div .react-select__multi-value__label'));
-  let aliasMatch = existingAliases.find(element => { return element.innerText == alias; });
-  if (typeof aliasMatch !== 'undefined') {
-    console.warn("Skipping alias '" + alias + "' as it is already added to this performer.");
-    return;
-  };
-  const aliasInput = document.querySelector(aliasInputSelector);
-  setNativeValue(aliasInput, alias);
-  var addButton = document.querySelector('label[for="aliases"] + div .react-select__option');
-  formTab("Personal Information").click();
-  addButton.click();
-};
-
-function existingUrlObjects() {
-  const existingUrls = Array.from(document.querySelectorAll('.URLInput ul .input-group'));
-  const urlObjects = existingUrls.map(urlGroup => {
-    let site = urlGroup.childNodes[1].innerText;
-    let url = urlGroup.childNodes[2].innerText;
-    let urlObject = {
-      site: site,
-      url: url
-    };
-    return urlObject;
-  });
-  return urlObjects;
-};
-
-function urlSite(url) {
-  let site;
-  if (/(^https?:\/\/(?:www\.)?adultfilmdatabase\.com\/(?:video|studio|actor)\/.+)\??/.test(url)) {
-    site = 'AFDB'
-  } else if (/(https?:\/\/www.babepedia.com\/babe\/[^?]+)\??/.test(url)) {
-    site = 'Babepedia'
-  } else if (/(^https?:\/\/(?:www\.)?bgafd\.co\.uk\/(?:films|actresses)\/details.php\/id\/[^?]+)\??/.test(url)) {
-    site = 'BGAFD'
-  } else if (/(https?:\/\/www.boobpedia.com\/boobs\/[^?]+)\??/.test(url)) {
-    site = 'Boobpedia'
-  } else if (/(https?:\/\/www.data18.com\/[^?]+)\??/.test(url)) {
-    site = 'DATA18'
-  } else if (/(^https?:\/\/(?:www\.)?egafd\.com\/(?:films|actresses)\/details.php\/id\/[^?]+)\??/.test(url)) {
-    site = 'EGAFD'
-  } else if (/(https?:\/\/(www\.)?eurobabeindex.com\/sbandoindex\/.*?.html)/.test(url)) {
-    site = 'Eurobabeindex'
-  } else if (/(^https?:\/\/(?:www.)?facebook\.com\/[^?]+)/.test(url)) {
-    site = 'Facebook'
-  } else if (/(https?:\/\/www.freeones.com\/[^/?]+)\??/.test(url)) {
-    site = 'FreeOnes'
-  } else if (/(https?:\/\/www.iafd.com\/[^?]+)\??/.test(url)) {
-    site = 'IAFD'
-  } else if (/(^https?:\/\/(?:www\.)?imdb\.com\/(?:name|title)\/[^?]+)\/?/.test(url)) {
-    site = 'IMDB'
-  } else if (/(https?:\/\/www.indexxx.com\/[^?]+)\??/.test(url)) {
-    site = 'Indexxx'
-  } else if (/(https?:\/\/www.instagram.com\/[^/?]+)\??/.test(url)) {
-    site = 'Instagram'
-  } else if (/(https?:\/\/www.manyvids.com\/[^?]+)\??/.test(url)) {
-    site = 'ManyVids'
-  } else if (/(^https?:\/\/(?:www.)?minnano-av\.com\/actress\d+.html)/.test(url)) {
-    site = 'Minnano-av'
-  } else if (/(^https?:\/\/(?:www.)?myspace\.com\/[^?]+)/.test(url)) {
-    site = 'Myspace'
-  } else if (/(https?:\/\/onlyfans.com\/[^?]+)\??/.test(url)) {
-    site = 'OnlyFans'
-  } else if (/(https?:\/\/www.thenude.com\/[^?]+\.htm)/.test(url)) {
-    site = 'theNude'
-  } else if (/(^https?:\/\/(?:www.)?tiktok\.com\/@[^?]+)/.test(url)) {
-    site = 'TikTok'
-  } else if (/(https?:\/\/twitter.com\/[^?]+)\??/.test(url)) {
-    site = 'Twitter'
-  } else if (/(^https?:\/\/(www\.)?wikidata.org\/wiki\/[^?]+)/.test(url)) {
-    site = 'Wikidata'
-  } else if (/(^https?:\/\/(?:\w+\.)?wikipedia\.org\/wiki\/[^?]+)/.test(url)) {
-    site = 'Wikipedia'
-  } else if (/(^https?:\/\/xslist\.org\/en\/model\/\d+\.html)/.test(url)) {
-    site = 'XsList'
-  } else if (/(^https?:\/\/(?:www.)?youtube\.com\/(?:c(?:hannel)?|user)\/[^?]+)/.test(url)) {
-    site = 'YouTube'
-  } else {
-    return;
-  };
-
-  return site;
-};
-
-function siteMatch(url, selections) {
-  const match = Array.from(selections.options).find((option) => option.text == urlSite(url));
-
-  return match;
-}
-
-function addUrl(url) {
-  const existingUrls = existingUrlObjects();
-  let urlMatch = existingUrls.find(element => { return element.url == url; });
-  if (typeof urlMatch !== 'undefined') {
-    console.warn("Skipping url '" + url + "' as it is already added to this performer.");
-    return;
-  };
-
-  const urlForm = document.querySelector('form .URLInput');
-  const urlInput = urlForm.querySelector(':scope > .input-group');
-  const selections = (urlInput.children[1]);
-  const inputField = (urlInput.children[2]);
-  const addButton = (urlInput.children[3]);
-
-  const selection = siteMatch(url, selections);
-  setNativeValue(selections, selection.value);
-  setNativeValue(inputField, url);
-  if (addButton.disabled) {
-    console.warn("Unable to add url (Add button is disabled)");
-  };
-
-  formTab("Links").click();
-  addButton.click();
-};
-
-function setStyles(element, styles) {
-  Object.assign(element.style, styles);
-  return element;
-};
-
-function baseButtonContainer() {
-  const container = document.createElement("span");
-  return container;
-};
-
-function baseButtonSet(name) {
-  const set = document.createElement("a");
-  set.innerText = "add " + name;
-  set.classList.add("fw-bold");
-  setStyles(set, { color: "var(--bs-yellow)", cursor: "pointer", "margin-left": "0.5em", });
-  return set;
-};
-
-function insertButton(action, element, name) {
-  const container = baseButtonContainer();
-  const set = baseButtonSet(name);
-  set.addEventListener("click", action);
-  container.append(set);
-  element.appendChild(container);
-};
-
-function addMeasurements(measurements) {
-  const splitMeasurements = measurements.split("-");
-
-  if (splitMeasurements.length > 0) {
-    const braSize = splitMeasurements[0].trim();
-    const braInput = document.querySelector('input[name="braSize"]');
-    setNativeValue(braInput, braSize);
-  };
-
-  if (splitMeasurements.length > 1) {
-    const waistSize = splitMeasurements[1].trim();
-    const waistInput = document.querySelector('input[name="waistSize"]');
-    setNativeValue(waistInput, waistSize);
-  };
-
-  if (splitMeasurements.length > 2) {
-    const hipSize = splitMeasurements[2].trim();
-    const hipInput = document.querySelector('input[name="hipSize"]');
-    setNativeValue(hipInput, hipSize);
-  };
-
-  formTab("Personal Information").click();
-}
-
-function createAliasButton(unmatched, element) {
-  const addAliases = () => unmatched.forEach(addAlias);
-  insertButton(addAliases, element, "aliases");
-};
-
-function createMeasurementsButton(unmatched, element) {
-  const insertMeasurements = () => addMeasurements(unmatched);
-  insertButton(insertMeasurements, element, "measurements");
-};
-
-function createUrlsButton(unmatched, element) {
-  const addUrls = () => unmatched.forEach(addUrl);
-  insertButton(addUrls, element, "urls");
-};
-
-function isValidMeasurements(measurements) {
-  const measurementsRegex = /(\d\d\w?\w?\w?\s?)(-\s?\d\d\s?)?(-\s?\d\d)?/;
-  const isValid = measurementsRegex.test(measurements);
-  if (!isValid) { console.warn("Measurement format '" + measurements + "' is invalid and cannot be automatically added.") };
-  return measurementsRegex.test(measurements);
-};
-
-function addAliasInputContainer() {
-  const performerForm = document.querySelector(".PerformerForm");
-  const aliasContainer = document.createElement ('div');
-  aliasContainer.innerHTML = '<button id="aliasButton">Add Aliases</button>';
-  aliasContainer.setAttribute ('id', 'aliasContainer');
-  performerForm.prepend(aliasContainer);
-
-  const aliasButton = document.createElement("input");
-  aliasButton.innerText = "Add Aliases";
-  aliasButton.setAttribute("id", "aliasButton");
-  aliasButton.setAttribute("style", "border-radius: 0.25rem;")
-
-  const aliasField = document.createElement("input");
-  aliasField.setAttribute("id", "aliasField");
-  aliasField.setAttribute("placeholder", " Comma separated aliases");
-  aliasField.setAttribute("size", "50px");
-  aliasField.setAttribute("style", "border-radius: 0.25rem; margin-right: 0.5rem;");
-
-  document.getElementById("aliasContainer").prepend(aliasField);
-  const enteredAliases = document.getElementById("aliasField").value;
-
-  document.getElementById("aliasButton").addEventListener('click', function handleClick(event) {
-    event.preventDefault();
-    const aliasField = document.getElementById("aliasField");
-    if (aliasField.value != '') {
-      aliasField.value.split(/,|\/|\sor\s/).forEach(addAlias);
-      aliasField.value = "";
-    };
-  });
-};
-
-function performerEditPage() {
-  const aliasValues = unmatchedTargetValue("Aliases");
-  if (aliasValues != null) {
-    const unmatchedAliases = aliasValues.split(/,|\/|\sor\s/);
-    const aliasElement = unmatchedTargetButton("Aliases");
-    createAliasButton(unmatchedAliases, aliasElement);
-  };
-
-  const urlsValues = unmatchedTargetValue("URLs");
-  if (urlsValues != null) {
-    const unmatchedUrls = urlsValues.split(", ");
-    if (unmatchedUrls) {
-      const umatchedUrlsElement = unmatchedTargetElement("URLs")
-      makeUrlLink(umatchedUrlsElement);
-    };
-    const urlsElement = unmatchedTargetButton("URLs");
-    createUrlsButton(unmatchedUrls, urlsElement);
-  };
-
-  const unmatchedMeasurements = unmatchedTargetValue("Measurements");
-  if (unmatchedMeasurements != null) {
-    if (isValidMeasurements(unmatchedMeasurements)) {
-      const measurementsElement = unmatchedTargetButton("Measurements");
-      createMeasurementsButton(unmatchedMeasurements, measurementsElement);
-    };
-  };
-
-  addAliasInputContainer();
-};
-
-function sceneEditPage() {
-  return;
-};
-
-function pageType() {
-  return document.querySelector(".NarrowPage form").className.replace("Form", "");
-};
-
-waitForElm(aliasInputSelector).then(() => {
-  if (pageType() == "Performer") {
-    performerEditPage();
-  } else if (pageType() == "Scene") {
-    sceneEditPage();
-  } else {
-    return;
-  };
-});