span rel=""> 146
+# pytype static type analyzer
147
+.pytype/
148
+
149
+# Cython debug symbols
150
+cython_debug/
151
+
152
+# End of https://www.toptal.com/developers/gitignore/api/django
153
+data/
154
+media/
155
+mongodb/
156
+app/media/
157
+app/staticfiles/
158
+CACHE/
159
+media.zip
160
+data.zip
161
+app/staticfiles/

+ 29 - 0
Dockerfile

@@ -0,0 +1,29 @@
1
+# syntax=docker/dockerfile:1
2
+FROM python:3 as base
3
+ENV PYTHONDONTWRITEBYTECODE=1
4
+ENV PYTHONUNBUFFERED=1
5
+RUN apt-get update && apt-get install apt-transport-https
6
+RUN apt-get install -y libjpeg62 libjpeg62-turbo-dev  zlib1g-dev gettext entr poppler-utils gettext xfonts-thai vim
7
+
8
+RUN wget ftp://ftp.psu.ac.th/pub/thaifonts/sipa-fonts/*ttf -P /usr/share/fonts/truetype/thai
9
+COPY fonts/*ttf  /usr/share/fonts/truetype/thai
10
+
11
+RUN \
12
+        echo "Installing Node and Yarn" && \
13
+        echo "deb https://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/nodesource.list && \
14
+        wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
15
+        echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list && \
16
+        wget -qO- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
17
+        apt-get update && \
18
+        apt-get install -yqq nodejs yarn npm  && \
19
+        npm install -g nodemon mjml && \ 
20
+        rm -rf /var/lib/apt/lists/* 
21
+
22
+FROM base as install_package
23
+WORKDIR /code
24
+COPY requirements.txt /code/
25
+RUN --mount=type=cache,target=/root/.cache pip install -r requirements.txt
26
+COPY app /code/
27
+RUN chmod a+x server-entrypoint.sh
28
+RUN chmod a+x worker-entrypoint.sh
29
+

+ 96 - 0
app/authentication.py

@@ -0,0 +1,96 @@
1
+#!/usr/bin/env python
2
+
3
+import asyncio
4
+import json
5
+
6
+#import aioredis
7
+from redis import asyncio as aioredis
8
+import django
9
+import websockets
10
+from pprint import pprint
11
+
12
+django.setup()
13
+
14
+from django.contrib.contenttypes.models import ContentType
15
+from sesame.utils import get_user
16
+
17
+
18
+CONNECTIONS = {}
19
+
20
+
21
+def get_content_types(user):
22
+    """Return the set of IDs of content types visible by user."""
23
+    # This does only three database queries because Django caches
24
+    # all permissions on the first call to user.has_perm(...).
25
+    return {
26
+        ct.id
27
+        for ct in ContentType.objects.all()
28
+        if user.has_perm(f"{ct.app_label}.view_{ct.model}")
29
+        or user.has_perm(f"{ct.app_label}.change_{ct.model}")
30
+    }
31
+
32
+
33
+async def handler(websocket):
34
+    """Authenticate user and register connection in CONNECTIONS."""
35
+    sesame = await websocket.recv()
36
+    user = await asyncio.to_thread(get_user, sesame)
37
+    if user is None:
38
+        await websocket.close(1011, "authentication failed")
39
+        return
40
+
41
+    ct_ids = await asyncio.to_thread(get_content_types, user)
42
+    CONNECTIONS[websocket] = {"content_type_ids": ct_ids}
43
+    pprint("Connections")
44
+    pprint(CONNECTIONS)
45
+    try:
46
+        await websocket.wait_closed()
47
+    finally:
48
+        del CONNECTIONS[websocket]
49
+
50
+
51
+async def process_events():
52
+    """Listen to events in Redis and process them."""
53
+    redis = aioredis.from_url("redis://redis:6379/1")
54
+    pubsub = redis.pubsub()
55
+    await pubsub.subscribe("events", "flash_sale")
56
+
57
+
58
+    async for message in pubsub.listen():
59
+        pprint("process events")
60
+        pprint(message)
61
+        if message["type"] != "message":
62
+            continue
63
+        payload = message["data"].decode()
64
+        # Broadcast event to all users who have permissions to see it.
65
+        event = json.loads(payload)
66
+        #pprint("current channel")
67
+        #pprint(str(message['channel']))
68
+        ch = message["channel"].decode()
69
+        if ch == "events":
70
+            pprint("event send ..")
71
+            recipients = (
72
+                websocket
73
+                for websocket, connection in CONNECTIONS.items()
74
+                if event["content_type_id"] in connection["content_type_ids"]
75
+            )
76
+            websockets.broadcast(recipients, payload)
77
+
78
+        if ch == "flash_sale":
79
+            pprint("flash sale send >> ..")
80
+            recipients = (
81
+                websocket
82
+                for websocket, connection in CONNECTIONS.items()
83
+            )
84
+            pprint("test msg >> ..")
85
+            websockets.broadcast(recipients, payload)
86
+
87
+
88
+
89
+async def main():
90
+    async with websockets.serve(handler, "0.0.0.0", 8888):
91
+        await process_events()  # runs forever
92
+        #process_flashsale()
93
+
94
+
95
+if __name__ == "__main__":
96
+    asyncio.run(main(), debug=True)

+ 0 - 0
app/backend/__init__.py


+ 3 - 0
app/backend/admin.py

@@ -0,0 +1,3 @@
1
+from django.contrib import admin
2
+
3
+# Register your models here.

+ 6 - 0
app/backend/apps.py

@@ -0,0 +1,6 @@
1
+from django.apps import AppConfig
2
+
3
+
4
+class BackendConfig(AppConfig):
5
+    default_auto_field = 'django.db.models.BigAutoField'
6
+    name = 'backend'

+ 0 - 0
app/backend/migrations/__init__.py


+ 3 - 0
app/backend/models.py

@@ -0,0 +1,3 @@
1
+from django.db import models
2
+
3
+# Create your models here.

+ 147 - 0
app/backend/templates/backend/index.html

@@ -0,0 +1,147 @@
1
+{% extends "base.html" %}
2
+{% block content %}
3
+      <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
4
+        <h1 class="h2">Dashboard</h1>
5
+        <div class="btn-toolbar mb-2 mb-md-0">
6
+          <div class="btn-group me-2">
7
+            <button type="button" class="btn btn-sm btn-outline-secondary">Share</button>
8
+            <button type="button" class="btn btn-sm btn-outline-secondary">Export</button>
9
+          </div>
10
+          <button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle">
11
+            <span data-feather="calendar"></span>
12
+            This week
13
+          </button>
14
+        </div>
15
+      </div>
16
+
17
+      <canvas class="my-4 w-100" id="myChart" width="900" height="380"></canvas>
18
+
19
+      <h2>Section title</h2>
20
+      <div class="table-responsive">
21
+        <table class="table table-striped table-sm">
22
+          <thead>
23
+            <tr>
24
+              <th scope="col">#</th>
25
+              <th scope="col">Header</th>
26
+              <th scope="col">Header</th>
27
+              <th scope="col">Header</th>
28
+              <th scope="col">Header</th>
29
+            </tr>
30
+          </thead>
31
+          <tbody>
32
+            <tr>
33
+              <td>1,001</td>
34
+              <td>random</td>
35
+              <td>data</td>
36
+              <td>placeholder</td>
37
+              <td>text</td>
38
+            </tr>
39
+            <tr>
40
+              <td>1,002</td>
41
+              <td>placeholder</td>
42
+              <td>irrelevant</td>
43
+              <td>visual</td>
44
+              <td>layout</td>
45
+            </tr>
46
+            <tr>
47
+              <td>1,003</td>
48
+              <td>data</td>
49
+              <td>rich</td>
50
+              <td>dashboard</td>
51
+              <td>tabular</td>
52
+            </tr>
53
+            <tr>
54
+              <td>1,003</td>
55
+              <td>information</td>
56
+              <td>placeholder</td>
57
+              <td>illustrative</td>
58
+              <td>data</td>
59
+            </tr>
60
+            <tr>
61
+              <td>1,004</td>
62
+              <td>text</td>
63
+              <td>random</td>
64
+              <td>layout</td>
65
+              <td>dashboard</td>
66
+            </tr>
67
+            <tr>
68
+              <td>1,005</td>
69
+              <td>dashboard</td>
70
+              <td>irrelevant</td>
71
+              <td>text</td>
72
+              <td>placeholder</td>
73
+            </tr>
74
+            <tr>
75
+              <td>1,006</td>
76
+              <td>dashboard</td>
77
+              <td>illustrative</td>
78
+              <td>rich</td>
79
+              <td>data</td>
80
+            </tr>
81
+            <tr>
82
+              <td>1,007</td>
83
+              <td>placeholder</td>
84
+              <td>tabular</td>
85
+              <td>information</td>
86
+              <td>irrelevant</td>
87
+            </tr>
88
+            <tr>
89
+              <td>1,008</td>
90
+              <td>random</td>
91
+              <td>data</td>
92
+              <td>placeholder</td>
93
+              <td>text</td>
94
+            </tr>
95
+            <tr>
96
+              <td>1,009</td>
97
+              <td>placeholder</td>
98
+              <td>irrelevant</td>
99
+              <td>visual</td>
100
+              <td>layout</td>
101
+            </tr>
102
+            <tr>
103
+              <td>1,010</td>
104
+              <td>data</td>
105
+              <td>rich</td>
106
+              <td>dashboard</td>
107
+              <td>tabular</td>
108
+            </tr>
109
+            <tr>
110
+              <td>1,011</td>
111
+              <td>information</td>
112
+              <td>placeholder</td>
113
+              <td>illustrative</td>
114
+              <td>data</td>
115
+            </tr>
116
+            <tr>
117
+              <td>1,012</td>
118
+              <td>text</td>
119
+              <td>placeholder</td>
120
+              <td>layout</td>
121
+              <td>dashboard</td>
122
+            </tr>
123
+            <tr>
124
+              <td>1,013</td>
125
+              <td>dashboard</td>
126
+              <td>irrelevant</td>
127
+              <td>text</td>
128
+              <td>visual</td>
129
+            </tr>
130
+            <tr>
131
+              <td>1,014</td>
132
+              <td>dashboard</td>
133
+              <td>illustrative</td>
134
+              <td>rich</td>
135
+              <td>data</td>
136
+            </tr>
137
+            <tr>
138
+              <td>1,015</td>
139
+              <td>random</td>
140
+              <td>tabular</td>
141
+              <td>information</td>
142
+              <td>text</td>
143
+            </tr>
144
+          </tbody>
145
+        </table>
146
+      </div>
147
+{% endblock %}

+ 3 - 0
app/backend/tests.py

@@ -0,0 +1,3 @@
1
+from django.test import TestCase
2
+
3
+# Create your tests here.

+ 9 - 0
app/backend/urls.py

@@ -0,0 +1,9 @@
1
+from django.urls import path
2
+from . import views
3
+
4
+app_name = 'backend'
5
+
6
+
7
+urlpatterns = [
8
+    path('', views.index, name='index'),
9
+]

+ 6 - 0
app/backend/views.py

@@ -0,0 +1,6 @@
1
+from django.shortcuts import render
2
+
3
+# Create your views here.
4
+
5
+def index(request):
6
+    return render(request, 'backend/index.html')

+ 22 - 0
app/manage.py

@@ -0,0 +1,22 @@
1
+#!/usr/bin/env python
2
+"""Django's command-line utility for administrative tasks."""
3
+import os
4
+import sys
5
+
6
+
7
+def main():
8
+    """Run administrative tasks."""
9
+    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network_report.settings')
10
+    try:
11
+        from django.core.management import execute_from_command_line
12
+    except ImportError as exc:
13
+        raise ImportError(
14
+            "Couldn't import Django. Are you sure it's installed and "
15
+            "available on your PYTHONPATH environment variable? Did you "
16
+            "forget to activate a virtual environment?"
17
+        ) from exc
18
+    execute_from_command_line(sys.argv)
19
+
20
+
21
+if __name__ == '__main__':
22
+    main()

+ 0 - 0
app/network_report/__init__.py


+ 16 - 0
app/network_report/asgi.py

@@ -0,0 +1,16 @@
1
+"""
2
+ASGI config for network_report project.
3
+
4
+It exposes the ASGI callable as a module-level variable named ``application``.
5
+
6
+For more information on this file, see
7
+https://docs.djangoproject.com/en/4.1/howto/deployment/asgi/
8
+"""
9
+
10
+import os
11
+
12
+from django.core.asgi import get_asgi_application
13
+
14
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network_report.settings')
15
+
16
+application = get_asgi_application()

+ 193 - 0
app/network_report/settings.py

@@ -0,0 +1,193 @@
1
+"""
2
+Django settings for network_report project.
3
+
4
+Generated by 'django-admin startproject' using Django 4.1.5.
5
+
6
+For more information on this file, see
7
+https://docs.djangoproject.com/en/4.1/topics/settings/
8
+
9
+For the full list of settings and their values, see
10
+https://docs.djangoproject.com/en/4.1/ref/settings/
11
+"""
12
+
13
+from pathlib import Path
14
+import os
15
+import os
16
+import environ
17
+from pprint import pprint
18
+import django
19
+from django.utils.encoding import smart_str
20
+
21
+django.utils.encoding.smart_text = smart_str
22
+
23
+env = environ.Env()
24
+environ.Env.read_env()
25
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
26
+BASE_DIR = Path(__file__).resolve().parent.parent
27
+
28
+
29
+# Quick-start development settings - unsuitable for production
30
+# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
31
+
32
+# SECURITY WARNING: keep the secret key used in production secret!
33
+SECRET_KEY = 'django-insecure-e197skh+hf2!q)k&z9a*=#_mnr4y(+x@i856z76oxpz!19%3u='
34
+
35
+# SECURITY WARNING: don't run with debug turned on in production!
36
+DEBUG = True
37
+
38
+mode = os.getenv('MODE')
39
+pprint(f"==== {mode} ====")
40
+if mode == "dev" or mode == "":
41
+    DEBUG = True
42
+else:
43
+    DEBUG = False
44
+ALLOWED_HOSTS = ['*']
45
+
46
+
47
+# Application definition
48
+
49
+INSTALLED_APPS = [
50
+    'django.contrib.admin',
51
+    'django.contrib.auth',
52
+    'django.contrib.contenttypes',
53
+    'django.contrib.sessions',
54
+    'django.contrib.messages',
55
+    'django.contrib.staticfiles',
56
+    'django.contrib.humanize',
57
+    'django.contrib.postgres',
58
+    'crispy_forms',
59
+    "crispy_bootstrap5",
60
+    "django_browser_reload",
61
+    'widget_tweaks',
62
+    'django_bootstrap_breadcrumbs',
63
+    'django_filters',
64
+    'django_yarnpkg',
65
+    'backend.apps.BackendConfig',
66
+]
67
+
68
+MIDDLEWARE = [
69
+    'django.middleware.security.SecurityMiddleware',
70
+    'django.contrib.sessions.middleware.SessionMiddleware',
71
+    'django.middleware.common.CommonMiddleware',
72
+    'django.middleware.csrf.CsrfViewMiddleware',
73
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
74
+    'django.contrib.messages.middleware.MessageMiddleware',
75
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
76
+    "django_browser_reload.middleware.BrowserReloadMiddleware",
77
+]
78
+
79
+ROOT_URLCONF = 'network_report.urls'
80
+
81
+TEMPLATES = [
82
+    {
83
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
84
+        'DIRS': [os.path.join(BASE_DIR,'templates')],
85
+        'APP_DIRS': True,
86
+        'OPTIONS': {
87
+            'context_processors': [
88
+                'django.template.context_processors.debug',
89
+                'django.template.context_processors.request',
90
+                'django.contrib.auth.context_processors.auth',
91
+                'django.contrib.messages.context_processors.messages',
92
+            ],
93
+        },
94
+    },
95
+]
96
+
97
+WSGI_APPLICATION = 'network_report.wsgi.application'
98
+
99
+
100
+# Database
101
+# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
102
+
103
+DATABASES = {
104
+    'default': {
105
+        'ENGINE': 'django.db.backends.postgresql_psycopg2',
106
+        'NAME': env("POSTGRES_NAME"),
107
+        'USER': env("POSTGRES_USER"),
108
+        'PASSWORD': env("POSTGRES_PASSWORD"),
109
+        'HOST': 'db',
110
+        'PORT': '5432',
111
+    }
112
+}
113
+
114
+
115
+# Password validation
116
+# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
117
+
118
+AUTH_PASSWORD_VALIDATORS = [
119
+    {
120
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
121
+    },
122
+    {
123
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
124
+    },
125
+    {
126
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
127
+    },
128
+    {
129
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
130
+    },
131
+]
132
+
133
+
134
+# Internationalization
135
+# https://docs.djangoproject.com/en/4.1/topics/i18n/
136
+
137
+LANGUAGE_CODE = 'en-us'
138
+
139
+TIME_ZONE = 'UTC'
140
+
141
+USE_I18N = True
142
+
143
+USE_TZ = True
144
+
145
+
146
+# Static files (CSS, JavaScript, Images)
147
+# https://docs.djangoproject.com/en/4.1/howto/static-files/
148
+
149
+STATIC_URL = 'static/'
150
+
151
+# Default primary key field type
152
+# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
153
+
154
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
155
+
156
+MEDIA_URL = '/media/'
157
+MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
158
+
159
+
160
+CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
161
+
162
+CRISPY_TEMPLATE_PACK = "bootstrap5"
163
+
164
+STATICFILES_DIRS = [
165
+    BASE_DIR / "static",
166
+]
167
+
168
+STATIC_ROOT = BASE_DIR / 'staticfiles'
169
+
170
+STATICFILES_FINDERS = [
171
+    'django.contrib.staticfiles.finders.FileSystemFinder',
172
+    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
173
+    'django_yarnpkg.finders.NodeModulesFinder',
174
+    'compressor.finders.CompressorFinder'
175
+]
176
+
177
+
178
+YARN_INSTALLED_APPS = (
179
+    'bootstrap@^5.0',
180
+    'underscore@^1.6.1',
181
+    'alpinejs@^3.10.5',
182
+    'axios@^1.2.2',
183
+    'tailwindcss@^3.2.4',
184
+    'sortablejs@^1.1.5',
185
+    'chart.js@^4.1.1',
186
+    'datatables.net-bs5',
187
+    'lightbox2',
188
+    'granim', 
189
+    'slick-carousel',
190
+    'mjml',
191
+    'tailwind-color-palette', 
192
+    'paper-css'
193
+)

+ 31 - 0
app/network_report/urls.py

@@ -0,0 +1,31 @@
1
+"""network_report URL Configuration
2
+
3
+The `urlpatterns` list routes URLs to views. For more information please see:
4
+    https://docs.djangoproject.com/en/4.1/topics/http/urls/
5
+Examples:
6
+Function views
7
+    1. Add an import:  from my_app import views
8
+    2. Add a URL to urlpatterns:  path('', views.home, name='home')
9
+Class-based views
10
+    1. Add an import:  from other_app.views import Home
11
+    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
12
+Including another URLconf
13
+    1. Import the include() function: from django.urls import include, path
14
+    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
15
+"""
16
+from django.contrib import admin
17
+from django.urls import path, include, re_path
18
+from django.conf import settings
19
+from django.conf.urls.static import static
20
+from django.views.generic.base import RedirectView
21
+
22
+urlpatterns = [
23
+    path('admin/', admin.site.urls),
24
+    path('backend/', include('backend.urls')),
25
+    path("__reload__/", include("django_browser_reload.urls")),
26
+    path('', RedirectView.as_view(pattern_name='backend:index', permanent=True)),
27
+] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
28
+
29
+if settings.DEBUG:
30
+    urlpatterns += static(settings.MEDIA_URL,
31
+                          document_root=settings.MEDIA_ROOT)

+ 16 - 0
app/network_report/wsgi.py

@@ -0,0 +1,16 @@
1
+"""
2
+WSGI config for network_report project.
3
+
4
+It exposes the WSGI callable as a module-level variable named ``application``.
5
+
6
+For more information on this file, see
7
+https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/
8
+"""
9
+
10
+import os
11
+
12
+from django.core.wsgi import get_wsgi_application
13
+
14
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network_report.settings')
15
+
16
+application = get_wsgi_application()

+ 1 - 0
app/node_modules/.bin/css-beautify

@@ -0,0 +1 @@
1
+../js-beautify/js/bin/css-beautify.js

+ 1 - 0
app/node_modules/.bin/cssesc

@@ -0,0 +1 @@
1
+../cssesc/bin/cssesc

+ 1 - 0
app/node_modules/.bin/editorconfig

@@ -0,0 +1 @@
1
+../editorconfig/bin/editorconfig

+ 1 - 0
app/node_modules/.bin/he

@@ -0,0 +1 @@
1
+../he/bin/he

+ 1 - 0
app/node_modules/.bin/html-beautify

@@ -0,0 +1 @@
1
+../js-beautify/js/bin/html-beautify.js

+ 1 - 0
app/node_modules/.bin/html-minifier

@@ -0,0 +1 @@
1
+../html-minifier/cli.js

+ 1 - 0
app/node_modules/.bin/jiti

@@ -0,0 +1 @@
1
+../jiti/bin/jiti.js

+ 1 - 0
app/node_modules/.bin/js-beautify

@@ -0,0 +1 @@
1
+../js-beautify/js/bin/js-beautify.js

+ 1 - 0
app/node_modules/.bin/juice

@@ -0,0 +1 @@
1
+../juice/bin/juice

+ 1 - 0
app/node_modules/.bin/migrate

@@ -0,0 +1 @@
1
+../mjml-migrate/lib/cli.js

+ 1 - 0
app/node_modules/.bin/mime

@@ -0,0 +1 @@
1
+../mime/cli.js

+ 1 - 0
app/node_modules/.bin/mjml

@@ -0,0 +1 @@
1
+../mjml/bin/mjml

+ 1 - 0
app/node_modules/.bin/mjml-cli

@@ -0,0 +1 @@
1
+../mjml-cli/bin/mjml

+ 1 - 0
app/node_modules/.bin/nanoid

@@ -0,0 +1 @@
1
+../nanoid/bin/nanoid.cjs

+ 1 - 0
app/node_modules/.bin/nopt

@@ -0,0 +1 @@
1
+../nopt/bin/nopt.js

+ 1 - 0
app/node_modules/.bin/resolve

@@ -0,0 +1 @@
1
+../resolve/bin/resolve

+ 1 - 0
app/node_modules/.bin/semver

@@ -0,0 +1 @@
1
+../semver/bin/semver.js

+ 1 - 0
app/node_modules/.bin/sucrase

@@ -0,0 +1 @@
1
+../sucrase/bin/sucrase

+ 1 - 0
app/node_modules/.bin/sucrase-node

@@ -0,0 +1 @@
1
+../sucrase/bin/sucrase-node

+ 1 - 0
app/node_modules/.bin/tailwind

@@ -0,0 +1 @@
1
+../tailwindcss/lib/cli.js

+ 1 - 0
app/node_modules/.bin/tailwindcss

@@ -0,0 +1 @@
1
+../tailwindcss/lib/cli.js

+ 1 - 0
app/node_modules/.bin/uglifyjs

@@ -0,0 +1 @@
1
+../uglify-js/bin/uglifyjs

+ 272 - 0
app/node_modules/.yarn-integrity

@@ -0,0 +1,272 @@
1
+{
2
+  "systemParams": "linux-arm64-108",
3
+  "modulesFolders": [
4
+    "node_modules"
5
+  ],
6
+  "flags": [],
7
+  "linkedModules": [],
8
+  "topLevelPatterns": [
9
+    "alpinejs@^3.10.5",
10
+    "axios@^1.2.2",
11
+    "bootstrap@^5.0",
12
+    "chart.js@^4.1.1",
13
+    "datatables.net-bs5@^1.13.6",
14
+    "granim@^2.0.0",
15
+    "lightbox2@^2.11.4",
16
+    "mjml@^4.14.1",
17
+    "paper-css@^0.4.1",
18
+    "slick-carousel@^1.8.1",
19
+    "sortablejs@^1.1.5",
20
+    "tailwind-color-palette@^1.0.3",
21
+    "tailwindcss@^3.2.4",
22
+    "underscore@^1.6.1"
23
+  ],
24
+  "lockfileEntries": {
25
+    "@alloc/quick-lru@^5.2.0": "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30",
26
+    "@babel/runtime@^7.14.6": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8",
27
+    "@jridgewell/gen-mapping@^0.3.2": "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098",
28
+    "@jridgewell/resolve-uri@^3.1.0": "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721",
29
+    "@jridgewell/set-array@^1.0.1": "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72",
30
+    "@jridgewell/sourcemap-codec@^1.4.10": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32",
31
+    "@jridgewell/sourcemap-codec@^1.4.14": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32",
32
+    "@jridgewell/trace-mapping@^0.3.9": "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811",
33
+    "@kurkle/color@^0.3.0": "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f",
34
+    "@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5",
35
+    "@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b",
36
+    "@nodelib/fs.stat@^2.0.2": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b",
37
+    "@nodelib/fs.walk@^1.2.3": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a",
38
+    "@one-ini/wasm@0.1.1": "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323",
39
+    "@vue/reactivity@~3.1.1": "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.5.tgz#dbec4d9557f7c8f25c2635db1e23a78a729eb991",
40
+    "@vue/shared@3.1.5": "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.5.tgz#74ee3aad995d0a3996a6bb9533d4d280514ede03",
41
+    "abbrev@^1.0.0": "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8",
42
+    "alpinejs@^3.10.5": "https://registry.yarnpkg.com/alpinejs/-/alpinejs-3.13.0.tgz#0334d5f9edb612be33f1f8a7eb3a579b53e4f04e",
43
+    "ansi-colors@^4.1.1": "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b",
44
+    "ansi-regex@^5.0.1": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304",
45
+    "ansi-styles@^4.0.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937",
46
+    "any-promise@^1.0.0": "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f",
47
+    "anymatch@~3.1.2": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e",
48
+    "arg@^5.0.2": "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c",
49
+    "asynckit@^0.4.0": "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79",
50
+    "axios@^1.2.2": "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267",
51
+    "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee",
52
+    "binary-extensions@^2.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d",
53
+    "boolbase@^1.0.0": "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e",
54
+    "bootstrap@^5.0": "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.2.tgz#97226583f27aae93b2b28ab23f4c114757ff16ae",
55
+    "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
56
+    "brace-expansion@^2.0.1": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae",
57
+    "braces@^3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
58
+    "braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
59
+    "camel-case@^3.0.0": "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73",
60
+    "camelcase-css@^2.0.1": "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5",
61
+    "chart.js@^4.1.1": "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.0.tgz#df843fdd9ec6bd88d7f07e2b95348d221bd2698c",
62
+    "cheerio-select@^2.1.0": "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4",
63
+    "cheerio@1.0.0-rc.12": "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683",
64
+    "cheerio@^1.0.0-rc.12": "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683",
65
+    "chokidar@^3.0.0": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd",
66
+    "chokidar@^3.5.3": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd",
67
+    "clean-css@^4.2.1": "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178",
68
+    "cliui@^7.0.2": "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f",
69
+    "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3",
70
+    "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2",
71
+    "combined-stream@^1.0.8": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f",
72
+    "commander@^10.0.0": "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06",
73
+    "commander@^2.19.0": "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33",
74
+    "commander@^4.0.0": "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068",
75
+    "commander@^6.1.0": "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c",
76
+    "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b",
77
+    "config-chain@^1.1.13": "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4",
78
+    "css-select@^5.1.0": "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6",
79
+    "css-what@^6.1.0": "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4",
80
+    "cssesc@^3.0.0": "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee",
81
+    "datatables.net-bs5@^1.13.6": "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.6.tgz#33bf10c0844bb08e17327d841089c1f277f796ff",
82
+    "datatables.net@>=1.13.4": "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.6.tgz#6e282adbbb2732e8df495611b8bb54e19f7a943e",
83
+    "delayed-stream@~1.0.0": "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619",
84
+    "detect-node@2.0.4": "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c",
85
+    "detect-node@^2.0.4": "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1",
86
+    "didyoumean@^1.2.2": "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037",
87
+    "dlv@^1.1.3": "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79",
88
+    "dom-serializer@^1.0.1": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30",
89
+    "dom-serializer@^2.0.0": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53",
90
+    "domelementtype@^2.0.1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d",
91
+    "domelementtype@^2.2.0": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d",
92
+    "domelementtype@^2.3.0": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d",
93
+    "domhandler@^3.3.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a",
94
+    "domhandler@^4.2.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c",
95
+    "domhandler@^5.0.2": "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31",
96
+    "domhandler@^5.0.3": "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31",
97
+    "domutils@^2.4.2": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135",
98
+    "domutils@^3.0.1": "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e",
99
+    "editorconfig@^1.0.3": "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3",
100
+    "emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37",
101
+    "entities@^2.0.0": "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55",
102
+    "entities@^4.2.0": "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48",
103
+    "entities@^4.4.0": "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48",
104
+    "escalade@^3.1.1": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40",
105
+    "escape-goat@^3.0.0": "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c",
106
+    "fast-glob@^3.2.12": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4",
107
+    "fastq@^1.6.0": "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a",
108
+    "fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40",
109
+    "follow-redirects@^1.15.0": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13",
110
+    "form-data@^4.0.0": "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452",
111
+    "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f",
112
+    "fsevents@~2.3.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6",
113
+    "function-bind@^1.1.1": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d",
114
+    "get-caller-file@^2.0.5": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e",
115
+    "glob-parent@^5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4",
116
+    "glob-parent@^6.0.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3",
117
+    "glob-parent@~5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4",
118
+    "glob@7.1.6": "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6",
119
+    "glob@^7.1.1": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b",
120
+    "glob@^8.1.0": "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e",
121
+    "granim@^2.0.0": "https://registry.yarnpkg.com/granim/-/granim-2.0.0.tgz#cd3905e97dd5cb5ef0b164b68d5073ac43f1eec6",
122
+    "has@^1.0.3": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796",
123
+    "he@^1.2.0": "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f",
124
+    "html-minifier@^4.0.0": "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56",
125
+    "htmlparser2@^5.0.0": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7",
126
+    "htmlparser2@^8.0.1": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21",
127
+    "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9",
128
+    "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
129
+    "ini@^1.3.4": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c",
130
+    "is-binary-path@~2.1.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09",
131
+    "is-core-module@^2.13.0": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db",
132
+    "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2",
133
+    "is-fullwidth-code-point@^3.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d",
134
+    "is-glob@^4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084",
135
+    "is-glob@^4.0.3": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084",
136
+    "is-glob@~4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084",
137
+    "is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b",
138
+    "jiti@^1.18.2": "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42",
139
+    "jquery@>=1.7": "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de",
140
+    "js-beautify@^1.6.14": "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.9.tgz#a5db728bc5a0d84d3b1a597c376b29bd4d39c8e5",
141
+    "juice@^9.0.0": "https://registry.yarnpkg.com/juice/-/juice-9.1.0.tgz#3ef8a12392d44c1cd996022aa977581049a65050",
142
+    "lightbox2@^2.11.4": "https://registry.yarnpkg.com/lightbox2/-/lightbox2-2.11.4.tgz#3ba020011ecea9237d0905c47db4026e9ab64400",
143
+    "lilconfig@^2.0.5": "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52",
144
+    "lilconfig@^2.1.0": "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52",
145
+    "lines-and-columns@^1.1.6": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632",
146
+    "lodash@^4.17.15": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c",
147
+    "lodash@^4.17.21": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c",
148
+    "lower-case@^1.1.1": "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac",
149
+    "lru-cache@^6.0.0": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94",
150
+    "mensch@^0.3.4": "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd",
151
+    "merge2@^1.3.0": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae",
152
+    "micromatch@^4.0.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6",
153
+    "micromatch@^4.0.5": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6",
154
+    "mime-db@1.52.0": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70",
155
+    "mime-types@^2.1.12": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a",
156
+    "mime@^2.4.6": "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367",
157
+    "minimatch@9.0.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253",
158
+    "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b",
159
+    "minimatch@^3.1.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b",
160
+    "minimatch@^5.0.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96",
161
+    "mjml-accordion@4.14.1": "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.14.1.tgz#39977d426ed4e828614245c8b2e8212085394d14",
162
+    "mjml-body@4.14.1": "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.14.1.tgz#31c79c25a74257ff042e287c09fb363a98e1209f",
163
+    "mjml-button@4.14.1": "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.14.1.tgz#a1779555ca4a479c5a52cc0025e8ca0f8e74dad8",
164
+    "mjml-carousel@4.14.1": "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.14.1.tgz#dc90116af6adab22bf2074e54165c3b5b7998328",
165
+    "mjml-cli@4.14.1": "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.14.1.tgz#4f445e30a3573c9bd57ee6d5a2a6bf8d5b1a0b20",
166
+    "mjml-column@4.14.1": "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.14.1.tgz#828cd4e5f82dcbc6d91bd2ac83d56e7b262becbe",
167
+    "mjml-core@4.14.1": "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.14.1.tgz#f748a137c280b89a8d09fab1a988014c3fc8dcd2",
168
+    "mjml-divider@4.14.1": "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.14.1.tgz#c5f90bffc0cd1321b6a73342163311221dff1d26",
169
+    "mjml-group@4.14.1": "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.14.1.tgz#5c3f1a99f0f338241697c2971964a6f89a1fd2a7",
170
+    "mjml-head-attributes@4.14.1": "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.14.1.tgz#cd864f46e039823c4c0c1070745865dac83101d7",
171
+    "mjml-head-breakpoint@4.14.1": "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.14.1.tgz#60900466174b0e9dc1d763a4836917351a3cc074",
172
+    "mjml-head-font@4.14.1": "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.14.1.tgz#b642dff1f0542df701ececb80f8ca625d9efb48e",
173
+    "mjml-head-html-attributes@4.14.1": "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.14.1.tgz#c9fddb0e8cb813a7f929c17ee8ae2dfdc397611e",
174
+    "mjml-head-preview@4.14.1": "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.14.1.tgz#b7db35020229aadec857f292f9725cd81014c51f",
175
+    "mjml-head-style@4.14.1": "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.14.1.tgz#6bec3b30fd0ac6ca3ee9806d8721c9e32b0968b6",
176
+    "mjml-head-title@4.14.1": "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.14.1.tgz#ff1af20467e8ea7f65a29bbc0c58e05d98cb45a6",
177
+    "mjml-head@4.14.1": "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.14.1.tgz#27ae83d9023b6b2126cd4dd105685b0b08a8baa3",
178
+    "mjml-hero@4.14.1": "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.14.1.tgz#6e969e24ae1eacff037c3170849f1eb51cda1253",
179
+    "mjml-image@4.14.1": "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.14.1.tgz#825566ce9d79692b3c841f85597e533217a0a960",
180
+    "mjml-migrate@4.14.1": "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.14.1.tgz#e3e1402f9310c1fed8a0a1c800fab316fbc56d12",
181
+    "mjml-navbar@4.14.1": "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.14.1.tgz#7979049759a7850f239fd2ee63bc47cc02c5c2e9",
182
+    "mjml-parser-xml@4.14.1": "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.14.1.tgz#bf20f06614569a2adf017698bb411e16dcd831c2",
183
+    "mjml-preset-core@4.14.1": "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.14.1.tgz#9b465f4d1227c928497973b34c5d0903f04dc649",
184
+    "mjml-raw@4.14.1": "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.14.1.tgz#d543e40f7e1c3468593d6783e7e4ce10bfd9b2d8",
185
+    "mjml-section@4.14.1": "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.14.1.tgz#3309aae46aca1b33f034c5f3b9dad883c52f2267",
186
+    "mjml-social@4.14.1": "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.14.1.tgz#7fe45c7c8c328142d2514e5c61d8c3939ee97e3f",
187
+    "mjml-spacer@4.14.1": "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.14.1.tgz#24fa57fb5e7781825ab3f03c1bec108afd0e97da",
188
+    "mjml-table@4.14.1": "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.14.1.tgz#f22ff9ec9b74cd4c3d677866b68e740b07fdf700",
189
+    "mjml-text@4.14.1": "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.14.1.tgz#09ba10828976fc7e2493ac3187f6a6e5e5b50442",
190
+    "mjml-validator@4.13.0": "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.13.0.tgz#a05bac51535cb8073a253304105ffbaf88f85d26",
191
+    "mjml-wrapper@4.14.1": "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.14.1.tgz#d52478d0529584343aa7924a012e26c084673ae0",
192
+    "mjml@^4.14.1": "https://registry.yarnpkg.com/mjml/-/mjml-4.14.1.tgz#4c9ca49bb6a4df51c204d2448e3385d5e166ec00",
193
+    "mz@^2.7.0": "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32",
194
+    "nanoid@^3.3.6": "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c",
195
+    "no-case@^2.2.0": "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac",
196
+    "node-fetch@^2.6.0": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d",
197
+    "nopt@^6.0.0": "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d",
198
+    "normalize-path@^3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
199
+    "normalize-path@~3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
200
+    "nth-check@^2.0.1": "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d",
201
+    "object-assign@^4.0.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863",
202
+    "object-hash@^3.0.0": "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9",
203
+    "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1",
204
+    "paper-css@^0.4.1": "https://registry.yarnpkg.com/paper-css/-/paper-css-0.4.1.tgz#170ce3f3f6969f20e0c8830163c9ab8aed2b8f36",
205
+    "param-case@^2.1.1": "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247",
206
+    "parse5-htmlparser2-tree-adapter@^7.0.0": "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1",
207
+    "parse5@^7.0.0": "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32",
208
+    "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f",
209
+    "path-parse@^1.0.7": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735",
210
+    "picocolors@^1.0.0": "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c",
211
+    "picomatch@^2.0.4": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
212
+    "picomatch@^2.2.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
213
+    "picomatch@^2.3.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
214
+    "pify@^2.3.0": "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c",
215
+    "pirates@^4.0.1": "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9",
216
+    "postcss-import@^15.1.0": "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70",
217
+    "postcss-js@^4.0.1": "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2",
218
+    "postcss-load-config@^4.0.1": "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd",
219
+    "postcss-nested@^6.0.1": "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c",
220
+    "postcss-selector-parser@^6.0.11": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b",
221
+    "postcss-value-parser@^4.0.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514",
222
+    "postcss@^8.4.23": "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd",
223
+    "proto-list@~1.2.1": "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849",
224
+    "proxy-from-env@^1.1.0": "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2",
225
+    "queue-microtask@^1.2.2": "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243",
226
+    "read-cache@^1.0.0": "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774",
227
+    "readdirp@~3.6.0": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7",
228
+    "regenerator-runtime@^0.14.0": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45",
229
+    "relateurl@^0.2.7": "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9",
230
+    "require-directory@^2.1.1": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42",
231
+    "resolve@^1.1.7": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362",
232
+    "resolve@^1.22.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362",
233
+    "reusify@^1.0.4": "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76",
234
+    "run-parallel@^1.1.9": "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee",
235
+    "semver@^7.5.3": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e",
236
+    "slick-carousel@^1.8.1": "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d",
237
+    "slick@^1.12.2": "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7",
238
+    "sortablejs@^1.1.5": "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a",
239
+    "source-map-js@^1.0.2": "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c",
240
+    "source-map@~0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263",
241
+    "string-width@^4.1.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010",
242
+    "string-width@^4.2.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010",
243
+    "strip-ansi@^6.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9",
244
+    "strip-ansi@^6.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9",
245
+    "sucrase@^3.32.0": "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f",
246
+    "supports-preserve-symlinks-flag@^1.0.0": "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09",
247
+    "tailwind-color-palette@^1.0.3": "https://registry.yarnpkg.com/tailwind-color-palette/-/tailwind-color-palette-1.0.3.tgz#568dcd499530665216eeeb18b8101d5dfa2ee582",
248
+    "tailwindcss@^3.2.4": "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf",
249
+    "thenify-all@^1.0.0": "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726",
250
+    "thenify@>= 3.1.0 < 4": "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f",
251
+    "to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4",
252
+    "tr46@~0.0.3": "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a",
253
+    "ts-interface-checker@^0.1.9": "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699",
254
+    "uglify-js@^3.5.1": "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c",
255
+    "underscore@^1.6.1": "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441",
256
+    "upper-case@^1.1.1": "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598",
257
+    "util-deprecate@^1.0.2": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf",
258
+    "valid-data-url@^3.0.0": "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f",
259
+    "web-resource-inliner@^6.0.1": "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz#df0822f0a12028805fe80719ed52ab6526886e02",
260
+    "webidl-conversions@^3.0.0": "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871",
261
+    "whatwg-url@^5.0.0": "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d",
262
+    "wrap-ansi@^7.0.0": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43",
263
+    "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
264
+    "y18n@^5.0.5": "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55",
265
+    "yallist@^4.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72",
266
+    "yaml@^2.1.1": "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144",
267
+    "yargs-parser@^20.2.2": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee",
268
+    "yargs@^16.1.0": "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
269
+  },
270
+  "files": [],
271
+  "artifacts": {}
272
+}

+ 128 - 0
app/node_modules/@alloc/quick-lru/index.d.ts

@@ -0,0 +1,128 @@
1
+declare namespace QuickLRU {
2
+	interface Options<KeyType, ValueType> {
3
+		/**
4
+		The maximum number of milliseconds an item should remain in the cache.
5
+
6
+		@default Infinity
7
+
8
+		By default, `maxAge` will be `Infinity`, which means that items will never expire.
9
+		Lazy expiration upon the next write or read call.
10
+
11
+		Individual expiration of an item can be specified by the `set(key, value, maxAge)` method.
12
+		*/
13
+		readonly maxAge?: number;
14
+
15
+		/**
16
+		The maximum number of items before evicting the least recently used items.
17
+		*/
18
+		readonly maxSize: number;
19
+
20
+		/**
21
+		Called right before an item is evicted from the cache.
22
+
23
+		Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
24
+		*/
25
+		onEviction?: (key: KeyType, value: ValueType) => void;
26
+	}
27
+}
28
+
29
+declare class QuickLRU<KeyType, ValueType>
30
+	implements Iterable<[KeyType, ValueType]> {
31
+	/**
32
+	The stored item count.
33
+	*/
34
+	readonly size: number;
35
+
36
+	/**
37
+	Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
38
+
39
+	The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
40
+
41
+	@example
42
+	```
43
+	import QuickLRU = require('quick-lru');
44
+
45
+	const lru = new QuickLRU({maxSize: 1000});
46
+
47
+	lru.set('🦄', '🌈');
48
+
49
+	lru.has('🦄');
50
+	//=> true
51
+
52
+	lru.get('🦄');
53
+	//=> '🌈'
54
+	```
55
+	*/
56
+	constructor(options: QuickLRU.Options<KeyType, ValueType>);
57
+
58
+	[Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
59
+
60
+	/**
61
+	Set an item. Returns the instance.
62
+
63
+	Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified in the constructor, otherwise the item will never expire.
64
+
65
+	@returns The list instance.
66
+	*/
67
+	set(key: KeyType, value: ValueType, options?: {maxAge?: number}): this;
68
+
69
+	/**
70
+	Get an item.
71
+
72
+	@returns The stored item or `undefined`.
73
+	*/
74
+	get(key: KeyType): ValueType | undefined;
75
+
76
+	/**
77
+	Check if an item exists.
78
+	*/
79
+	has(key: KeyType): boolean;
80
+
81
+	/**
82
+	Get an item without marking it as recently used.
83
+
84
+	@returns The stored item or `undefined`.
85
+	*/
86
+	peek(key: KeyType): ValueType | undefined;
87
+
88
+	/**
89
+	Delete an item.
90
+
91
+	@returns `true` if the item is removed or `false` if the item doesn't exist.
92
+	*/
93
+	delete(key: KeyType): boolean;
94
+
95
+	/**
96
+	Delete all items.
97
+	*/
98
+	clear(): void;
99
+
100
+	/**
101
+	Update the `maxSize` in-place, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
102
+
103
+	Useful for on-the-fly tuning of cache sizes in live systems.
104
+	*/
105
+	resize(maxSize: number): void;
106
+
107
+	/**
108
+	Iterable for all the keys.
109
+	*/
110
+	keys(): IterableIterator<KeyType>;
111
+
112
+	/**
113
+	Iterable for all the values.
114
+	*/
115
+	values(): IterableIterator<ValueType>;
116
+
117
+	/**
118
+	Iterable for all entries, starting with the oldest (ascending in recency).
119
+	*/
120
+	entriesAscending(): IterableIterator<[KeyType, ValueType]>;
121
+
122
+	/**
123
+	Iterable for all entries, starting with the newest (descending in recency).
124
+	*/
125
+	entriesDescending(): IterableIterator<[KeyType, ValueType]>;
126
+}
127
+
128
+export = QuickLRU;

+ 263 - 0
app/node_modules/@alloc/quick-lru/index.js

@@ -0,0 +1,263 @@
1
+'use strict';
2
+
3
+class QuickLRU {
4
+	constructor(options = {}) {
5
+		if (!(options.maxSize && options.maxSize > 0)) {
6
+			throw new TypeError('`maxSize` must be a number greater than 0');
7
+		}
8
+
9
+		if (typeof options.maxAge === 'number' && options.maxAge === 0) {
10
+			throw new TypeError('`maxAge` must be a number greater than 0');
11
+		}
12
+
13
+		this.maxSize = options.maxSize;
14
+		this.maxAge = options.maxAge || Infinity;
15
+		this.onEviction = options.onEviction;
16
+		this.cache = new Map();
17
+		this.oldCache = new Map();
18
+		this._size = 0;
19
+	}
20
+
21
+	_emitEvictions(cache) {
22
+		if (typeof this.onEviction !== 'function') {
23
+			return;
24
+		}
25
+
26
+		for (const [key, item] of cache) {
27
+			this.onEviction(key, item.value);
28
+		}
29
+	}
30
+
31
+	_deleteIfExpired(key, item) {
32
+		if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {
33
+			if (typeof this.onEviction === 'function') {
34
+				this.onEviction(key, item.value);
35
+			}
36
+
37
+			return this.delete(key);
38
+		}
39
+
40
+		return false;
41
+	}
42
+
43
+	_getOrDeleteIfExpired(key, item) {
44
+		const deleted = this._deleteIfExpired(key, item);
45
+		if (deleted === false) {
46
+			return item.value;
47
+		}
48
+	}
49
+
50
+	_getItemValue(key, item) {
51
+		return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;
52
+	}
53
+
54
+	_peek(key, cache) {
55
+		const item = cache.get(key);
56
+
57
+		return this._getItemValue(key, item);
58
+	}
59
+
60
+	_set(key, value) {
61
+		this.cache.set(key, value);
62
+		this._size++;
63
+
64
+		if (this._size >= this.maxSize) {
65
+			this._size = 0;
66
+			this._emitEvictions(this.oldCache);
67
+			this.oldCache = this.cache;
68
+			this.cache = new Map();
69
+		}
70
+	}
71
+
72
+	_moveToRecent(key, item) {
73
+		this.oldCache.delete(key);
74
+		this._set(key, item);
75
+	}
76
+
77
+	* _entriesAscending() {
78
+		for (const item of this.oldCache) {
79
+			const [key, value] = item;
80
+			if (!this.cache.has(key)) {
81
+				const deleted = this._deleteIfExpired(key, value);
82
+				if (deleted === false) {
83
+					yield item;
84
+				}
85
+			}
86
+		}
87
+
88
+		for (const item of this.cache) {
89
+			const [key, value] = item;
90
+			const deleted = this._deleteIfExpired(key, value);
91
+			if (deleted === false) {
92
+				yield item;
93
+			}
94
+		}
95
+	}
96
+
97
+	get(key) {
98
+		if (this.cache.has(key)) {
99
+			const item = this.cache.get(key);
100
+
101
+			return this._getItemValue(key, item);
102
+		}
103
+
104
+		if (this.oldCache.has(key)) {
105
+			const item = this.oldCache.get(key);
106
+			if (this._deleteIfExpired(key, item) === false) {
107
+				this._moveToRecent(key, item);
108
+				return item.value;
109
+			}
110
+		}
111
+	}
112
+
113
+	set(key, value, {maxAge = this.maxAge === Infinity ? undefined : Date.now() + this.maxAge} = {}) {
114
+		if (this.cache.has(key)) {
115
+			this.cache.set(key, {
116
+				value,
117
+				maxAge
118
+			});
119
+		} else {
120
+			this._set(key, {value, expiry: maxAge});
121
+		}
122
+	}
123
+
124
+	has(key) {
125
+		if (this.cache.has(key)) {
126
+			return !this._deleteIfExpired(key, this.cache.get(key));
127
+		}
128
+
129
+		if (this.oldCache.has(key)) {
130
+			return !this._deleteIfExpired(key, this.oldCache.get(key));
131
+		}
132
+
133
+		return false;
134
+	}
135
+
136
+	peek(key) {
137
+		if (this.cache.has(key)) {
138
+			return this._peek(key, this.cache);
139
+		}
140
+
141
+		if (this.oldCache.has(key)) {
142
+			return this._peek(key, this.oldCache);
143
+		}
144
+	}
145
+
146
+	delete(key) {
147
+		const deleted = this.cache.delete(key);
148
+		if (deleted) {
149
+			this._size--;
150
+		}
151
+
152
+		return this.oldCache.delete(key) || deleted;
153
+	}
154
+
155
+	clear() {
156
+		this.cache.clear();
157
+		this.oldCache.clear();
158
+		this._size = 0;
159
+	}
160
+	
161
+	resize(newSize) {
162
+		if (!(newSize && newSize > 0)) {
163
+			throw new TypeError('`maxSize` must be a number greater than 0');
164
+		}
165
+
166
+		const items = [...this._entriesAscending()];
167
+		const removeCount = items.length - newSize;
168
+		if (removeCount < 0) {
169
+			this.cache = new Map(items);
170
+			this.oldCache = new Map();
171
+			this._size = items.length;
172
+		} else {
173
+			if (removeCount > 0) {
174
+				this._emitEvictions(items.slice(0, removeCount));
175
+			}
176
+
177
+			this.oldCache = new Map(items.slice(removeCount));
178
+			this.cache = new Map();
179
+			this._size = 0;
180
+		}
181
+
182
+		this.maxSize = newSize;
183
+	}
184
+
185
+	* keys() {
186
+		for (const [key] of this) {
187
+			yield key;
188
+		}
189
+	}
190
+
191
+	* values() {
192
+		for (const [, value] of this) {
193
+			yield value;
194
+		}
195
+	}
196
+
197
+	* [Symbol.iterator]() {
198
+		for (const item of this.cache) {
199
+			const [key, value] = item;
200
+			const deleted = this._deleteIfExpired(key, value);
201
+			if (deleted === false) {
202
+				yield [key, value.value];
203
+			}
204
+		}
205
+
206
+		for (const item of this.oldCache) {
207
+			const [key, value] = item;
208
+			if (!this.cache.has(key)) {
209
+				const deleted = this._deleteIfExpired(key, value);
210
+				if (deleted === false) {
211
+					yield [key, value.value];
212
+				}
213
+			}
214
+		}
215
+	}
216
+
217
+	* entriesDescending() {
218
+		let items = [...this.cache];
219
+		for (let i = items.length - 1; i >= 0; --i) {
220
+			const item = items[i];
221
+			const [key, value] = item;
222
+			const deleted = this._deleteIfExpired(key, value);
223
+			if (deleted === false) {
224
+				yield [key, value.value];
225
+			}
226
+		}
227
+
228
+		items = [...this.oldCache];
229
+		for (let i = items.length - 1; i >= 0; --i) {
230
+			const item = items[i];
231
+			const [key, value] = item;
232
+			if (!this.cache.has(key)) {
233
+				const deleted = this._deleteIfExpired(key, value);
234
+				if (deleted === false) {
235
+					yield [key, value.value];
236
+				}
237
+			}
238
+		}
239
+	}
240
+
241
+	* entriesAscending() {
242
+		for (const [key, value] of this._entriesAscending()) {
243
+			yield [key, value.value];
244
+		}
245
+	}
246
+
247
+	get size() {
248
+		if (!this._size) {
249
+			return this.oldCache.size;
250
+		}
251
+
252
+		let oldCacheSize = 0;
253
+		for (const key of this.oldCache.keys()) {
254
+			if (!this.cache.has(key)) {
255
+				oldCacheSize++;
256
+			}
257
+		}
258
+
259
+		return Math.min(this._size + oldCacheSize, this.maxSize);
260
+	}
261
+}
262
+
263
+module.exports = QuickLRU;

+ 9 - 0
app/node_modules/@alloc/quick-lru/license

@@ -0,0 +1,9 @@
1
+MIT License
2
+
3
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 43 - 0
app/node_modules/@alloc/quick-lru/package.json

@@ -0,0 +1,43 @@
1
+{
2
+	"name": "@alloc/quick-lru",
3
+	"version": "5.2.0",
4
+	"description": "Simple “Least Recently Used” (LRU) cache",
5
+	"license": "MIT",
6
+	"repository": "sindresorhus/quick-lru",
7
+	"funding": "https://github.com/sponsors/sindresorhus",
8
+	"author": {
9
+		"name": "Sindre Sorhus",
10
+		"email": "sindresorhus@gmail.com",
11
+		"url": "https://sindresorhus.com"
12
+	},
13
+	"engines": {
14
+		"node": ">=10"
15
+	},
16
+	"scripts": {
17
+		"test": "xo && nyc ava && tsd"
18
+	},
19
+	"files": [
20
+		"index.js",
21
+		"index.d.ts"
22
+	],
23
+	"keywords": [
24
+		"lru",
25
+		"quick",
26
+		"cache",
27
+		"caching",
28
+		"least",
29
+		"recently",
30
+		"used",
31
+		"fast",
32
+		"map",
33
+		"hash",
34
+		"buffer"
35
+	],
36
+	"devDependencies": {
37
+		"ava": "^2.0.0",
38
+		"coveralls": "^3.0.3",
39
+		"nyc": "^15.0.0",
40
+		"tsd": "^0.11.0",
41
+		"xo": "^0.26.0"
42
+	}
43
+}

+ 139 - 0
app/node_modules/@alloc/quick-lru/readme.md

@@ -0,0 +1,139 @@
1
+# quick-lru [![Build Status](https://travis-ci.org/sindresorhus/quick-lru.svg?branch=master)](https://travis-ci.org/sindresorhus/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/quick-lru?branch=master)
2
+
3
+> Simple [“Least Recently Used” (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)
4
+
5
+Useful when you need to cache something and limit memory usage.
6
+
7
+Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`.
8
+
9
+## Install
10
+
11
+```
12
+$ npm install quick-lru
13
+```
14
+
15
+## Usage
16
+
17
+```js
18
+const QuickLRU = require('quick-lru');
19
+
20
+const lru = new QuickLRU({maxSize: 1000});
21
+
22
+lru.set('🦄', '🌈');
23
+
24
+lru.has('🦄');
25
+//=> true
26
+
27
+lru.get('🦄');
28
+//=> '🌈'
29
+```
30
+
31
+## API
32
+
33
+### new QuickLRU(options?)
34
+
35
+Returns a new instance.
36
+
37
+### options
38
+
39
+Type: `object`
40
+
41
+#### maxSize
42
+
43
+*Required*\
44
+Type: `number`
45
+
46
+The maximum number of items before evicting the least recently used items.
47
+
48
+#### maxAge
49
+
50
+Type: `number`\
51
+Default: `Infinity`
52
+
53
+The maximum number of milliseconds an item should remain in cache.
54
+By default maxAge will be Infinity, which means that items will never expire.
55
+
56
+Lazy expiration happens upon the next `write` or `read` call.
57
+
58
+Individual expiration of an item can be specified by the `set(key, value, options)` method.
59
+
60
+#### onEviction
61
+
62
+*Optional*\
63
+Type: `(key, value) => void`
64
+
65
+Called right before an item is evicted from the cache.
66
+
67
+Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
68
+
69
+### Instance
70
+
71
+The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
72
+
73
+Both `key` and `value` can be of any type.
74
+
75
+#### .set(key, value, options?)
76
+
77
+Set an item. Returns the instance.
78
+
79
+Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified on the constructor, otherwise the item will never expire.
80
+
81
+#### .get(key)
82
+
83
+Get an item.
84
+
85
+#### .has(key)
86
+
87
+Check if an item exists.
88
+
89
+#### .peek(key)
90
+
91
+Get an item without marking it as recently used.
92
+
93
+#### .delete(key)
94
+
95
+Delete an item.
96
+
97
+Returns `true` if the item is removed or `false` if the item doesn't exist.
98
+
99
+#### .clear()
100
+
101
+Delete all items.
102
+
103
+#### .resize(maxSize)
104
+
105
+Update the `maxSize`, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
106
+
107
+Useful for on-the-fly tuning of cache sizes in live systems.
108
+
109
+#### .keys()
110
+
111
+Iterable for all the keys.
112
+
113
+#### .values()
114
+
115
+Iterable for all the values.
116
+
117
+#### .entriesAscending()
118
+
119
+Iterable for all entries, starting with the oldest (ascending in recency).
120
+
121
+#### .entriesDescending()
122
+
123
+Iterable for all entries, starting with the newest (descending in recency).
124
+
125
+#### .size
126
+
127
+The stored item count.
128
+
129
+---
130
+
131
+<div align="center">
132
+	<b>
133
+		<a href="https://tidelift.com/subscription/pkg/npm-quick-lru?utm_source=npm-quick-lru&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
134
+	</b>
135
+	<br>
136
+	<sub>
137
+		Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
138
+	</sub>
139
+</div>

+ 22 - 0
app/node_modules/@babel/runtime/LICENSE

@@ -0,0 +1,22 @@
1
+MIT License
2
+
3
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining
6
+a copy of this software and associated documentation files (the
7
+"Software"), to deal in the Software without restriction, including
8
+without limitation the rights to use, copy, modify, merge, publish,
9
+distribute, sublicense, and/or sell copies of the Software, and to
10
+permit persons to whom the Software is furnished to do so, subject to
11
+the following conditions:
12
+
13
+The above copyright notice and this permission notice shall be
14
+included in all copies or substantial portions of the Software.
15
+
16
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 19 - 0
app/node_modules/@babel/runtime/README.md

@@ -0,0 +1,19 @@
1
+# @babel/runtime
2
+
3
+> babel's modular runtime helpers
4
+
5
+See our website [@babel/runtime](https://babeljs.io/docs/babel-runtime) for more information.
6
+
7
+## Install
8
+
9
+Using npm:
10
+
11
+```sh
12
+npm install --save @babel/runtime
13
+```
14
+
15
+or using yarn:
16
+
17
+```sh
18
+yarn add @babel/runtime
19
+```

+ 64 - 0
app/node_modules/@babel/runtime/helpers/AsyncGenerator.js

@@ -0,0 +1,64 @@
1
+var OverloadYield = require("./OverloadYield.js");
2
+function AsyncGenerator(e) {
3
+  var r, t;
4
+  function resume(r, t) {
5
+    try {
6
+      var n = e[r](t),
7
+        o = n.value,
8
+        u = o instanceof OverloadYield;
9
+      Promise.resolve(u ? o.v : o).then(function (t) {
10
+        if (u) {
11
+          var i = "return" === r ? "return" : "next";
12
+          if (!o.k || t.done) return resume(i, t);
13
+          t = e[i](t).value;
14
+        }
15
+        settle(n.done ? "return" : "normal", t);
16
+      }, function (e) {
17
+        resume("throw", e);
18
+      });
19
+    } catch (e) {
20
+      settle("throw", e);
21
+    }
22
+  }
23
+  function settle(e, n) {
24
+    switch (e) {
25
+      case "return":
26
+        r.resolve({
27
+          value: n,
28
+          done: !0
29
+        });
30
+        break;
31
+      case "throw":
32
+        r.reject(n);
33
+        break;
34
+      default:
35
+        r.resolve({
36
+          value: n,
37
+          done: !1
38
+        });
39
+    }
40
+    (r = r.next) ? resume(r.key, r.arg) : t = null;
41
+  }
42
+  this._invoke = function (e, n) {
43
+    return new Promise(function (o, u) {
44
+      var i = {
45
+        key: e,
46
+        arg: n,
47
+        resolve: o,
48
+        reject: u,
49
+        next: null
50
+      };
51
+      t ? t = t.next = i : (r = t = i, resume(e, n));
52
+    });
53
+  }, "function" != typeof e["return"] && (this["return"] = void 0);
54
+}
55
+AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
56
+  return this;
57
+}, AsyncGenerator.prototype.next = function (e) {
58
+  return this._invoke("next", e);
59
+}, AsyncGenerator.prototype["throw"] = function (e) {
60
+  return this._invoke("throw", e);
61
+}, AsyncGenerator.prototype["return"] = function (e) {
62
+  return this._invoke("return", e);
63
+};
64
+module.exports = AsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/AwaitValue.js

@@ -0,0 +1,4 @@
1
+function _AwaitValue(value) {
2
+  this.wrapped = value;
3
+}
4
+module.exports = _AwaitValue, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/OverloadYield.js

@@ -0,0 +1,4 @@
1
+function _OverloadYield(t, e) {
2
+  this.v = t, this.k = e;
3
+}
4
+module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 24 - 0
app/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js

@@ -0,0 +1,24 @@
1
+function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
2
+  var desc = {};
3
+  Object.keys(descriptor).forEach(function (key) {
4
+    desc[key] = descriptor[key];
5
+  });
6
+  desc.enumerable = !!desc.enumerable;
7
+  desc.configurable = !!desc.configurable;
8
+  if ('value' in desc || desc.initializer) {
9
+    desc.writable = true;
10
+  }
11
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
12
+    return decorator(target, property, desc) || desc;
13
+  }, desc);
14
+  if (context && desc.initializer !== void 0) {
15
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
16
+    desc.initializer = undefined;
17
+  }
18
+  if (desc.initializer === void 0) {
19
+    Object.defineProperty(target, property, desc);
20
+    desc = null;
21
+  }
22
+  return desc;
23
+}
24
+module.exports = _applyDecoratedDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 236 - 0
app/node_modules/@babel/runtime/helpers/applyDecs.js

@@ -0,0 +1,236 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function old_createMetadataMethodsForProperty(e, t, a, r) {
3
+  return {
4
+    getMetadata: function getMetadata(o) {
5
+      old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
6
+      var i = e[o];
7
+      if (void 0 !== i) if (1 === t) {
8
+        var n = i["public"];
9
+        if (void 0 !== n) return n[a];
10
+      } else if (2 === t) {
11
+        var l = i["private"];
12
+        if (void 0 !== l) return l.get(a);
13
+      } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
14
+    },
15
+    setMetadata: function setMetadata(o, i) {
16
+      old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
17
+      var n = e[o];
18
+      if (void 0 === n && (n = e[o] = {}), 1 === t) {
19
+        var l = n["public"];
20
+        void 0 === l && (l = n["public"] = {}), l[a] = i;
21
+      } else if (2 === t) {
22
+        var s = n.priv;
23
+        void 0 === s && (s = n["private"] = new Map()), s.set(a, i);
24
+      } else n.constructor = i;
25
+    }
26
+  };
27
+}
28
+function old_convertMetadataMapToFinal(e, t) {
29
+  var a = e[Symbol.metadata || Symbol["for"]("Symbol.metadata")],
30
+    r = Object.getOwnPropertySymbols(t);
31
+  if (0 !== r.length) {
32
+    for (var o = 0; o < r.length; o++) {
33
+      var i = r[o],
34
+        n = t[i],
35
+        l = a ? a[i] : null,
36
+        s = n["public"],
37
+        c = l ? l["public"] : null;
38
+      s && c && Object.setPrototypeOf(s, c);
39
+      var d = n["private"];
40
+      if (d) {
41
+        var u = Array.from(d.values()),
42
+          f = l ? l["private"] : null;
43
+        f && (u = u.concat(f)), n["private"] = u;
44
+      }
45
+      l && Object.setPrototypeOf(n, l);
46
+    }
47
+    a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol["for"]("Symbol.metadata")] = t;
48
+  }
49
+}
50
+function old_createAddInitializerMethod(e, t) {
51
+  return function (a) {
52
+    old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
53
+  };
54
+}
55
+function old_memberDec(e, t, a, r, o, i, n, l, s) {
56
+  var c;
57
+  switch (i) {
58
+    case 1:
59
+      c = "accessor";
60
+      break;
61
+    case 2:
62
+      c = "method";
63
+      break;
64
+    case 3:
65
+      c = "getter";
66
+      break;
67
+    case 4:
68
+      c = "setter";
69
+      break;
70
+    default:
71
+      c = "field";
72
+  }
73
+  var d,
74
+    u,
75
+    f = {
76
+      kind: c,
77
+      name: l ? "#" + t : t,
78
+      isStatic: n,
79
+      isPrivate: l
80
+    },
81
+    p = {
82
+      v: !1
83
+    };
84
+  if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
85
+    d = 2, u = Symbol(t);
86
+    var v = {};
87
+    0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
88
+      return a.value;
89
+    } : (1 !== i && 3 !== i || (v.get = function () {
90
+      return a.get.call(this);
91
+    }), 1 !== i && 4 !== i || (v.set = function (e) {
92
+      a.set.call(this, e);
93
+    })), f.access = v;
94
+  } else d = 1, u = t;
95
+  try {
96
+    return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
97
+  } finally {
98
+    p.v = !0;
99
+  }
100
+}
101
+function old_assertNotFinished(e, t) {
102
+  if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
103
+}
104
+function old_assertMetadataKey(e) {
105
+  if ("symbol" != _typeof(e)) throw new TypeError("Metadata keys must be symbols, received: " + e);
106
+}
107
+function old_assertCallable(e, t) {
108
+  if ("function" != typeof e) throw new TypeError(t + " must be a function");
109
+}
110
+function old_assertValidReturnValue(e, t) {
111
+  var a = _typeof(t);
112
+  if (1 === e) {
113
+    if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
114
+    void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
115
+  } else if ("function" !== a) {
116
+    var r;
117
+    throw r = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(r + " decorators must return a function or void 0");
118
+  }
119
+}
120
+function old_getInit(e) {
121
+  var t;
122
+  return null == (t = e.init) && (t = e.initializer) && "undefined" != typeof console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
123
+}
124
+function old_applyMemberDec(e, t, a, r, o, i, n, l, s) {
125
+  var c,
126
+    d,
127
+    u,
128
+    f,
129
+    p,
130
+    v,
131
+    h = a[0];
132
+  if (n ? c = 0 === o || 1 === o ? {
133
+    get: a[3],
134
+    set: a[4]
135
+  } : 3 === o ? {
136
+    get: a[3]
137
+  } : 4 === o ? {
138
+    set: a[3]
139
+  } : {
140
+    value: a[3]
141
+  } : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? u = {
142
+    get: c.get,
143
+    set: c.set
144
+  } : 2 === o ? u = c.value : 3 === o ? u = c.get : 4 === o && (u = c.set), "function" == typeof h) void 0 !== (f = old_memberDec(h, r, c, l, s, o, i, n, u)) && (old_assertValidReturnValue(o, f), 0 === o ? d = f : 1 === o ? (d = old_getInit(f), p = f.get || u.get, v = f.set || u.set, u = {
145
+    get: p,
146
+    set: v
147
+  }) : u = f);else for (var y = h.length - 1; y >= 0; y--) {
148
+    var b;
149
+    if (void 0 !== (f = old_memberDec(h[y], r, c, l, s, o, i, n, u))) old_assertValidReturnValue(o, f), 0 === o ? b = f : 1 === o ? (b = old_getInit(f), p = f.get || u.get, v = f.set || u.set, u = {
150
+      get: p,
151
+      set: v
152
+    }) : u = f, void 0 !== b && (void 0 === d ? d = b : "function" == typeof d ? d = [d, b] : d.push(b));
153
+  }
154
+  if (0 === o || 1 === o) {
155
+    if (void 0 === d) d = function d(e, t) {
156
+      return t;
157
+    };else if ("function" != typeof d) {
158
+      var g = d;
159
+      d = function d(e, t) {
160
+        for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);
161
+        return a;
162
+      };
163
+    } else {
164
+      var m = d;
165
+      d = function d(e, t) {
166
+        return m.call(e, t);
167
+      };
168
+    }
169
+    e.push(d);
170
+  }
171
+  0 !== o && (1 === o ? (c.get = u.get, c.set = u.set) : 2 === o ? c.value = u : 3 === o ? c.get = u : 4 === o && (c.set = u), n ? 1 === o ? (e.push(function (e, t) {
172
+    return u.get.call(e, t);
173
+  }), e.push(function (e, t) {
174
+    return u.set.call(e, t);
175
+  })) : 2 === o ? e.push(u) : e.push(function (e, t) {
176
+    return u.call(e, t);
177
+  }) : Object.defineProperty(t, r, c));
178
+}
179
+function old_applyMemberDecs(e, t, a, r, o) {
180
+  for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {
181
+    var d = o[c];
182
+    if (Array.isArray(d)) {
183
+      var u,
184
+        f,
185
+        p,
186
+        v = d[1],
187
+        h = d[2],
188
+        y = d.length > 3,
189
+        b = v >= 5;
190
+      if (b ? (u = t, f = r, 0 !== (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !y) {
191
+        var g = b ? s : l,
192
+          m = g.get(h) || 0;
193
+        if (!0 === m || 3 === m && 4 !== v || 4 === m && 3 !== v) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
194
+        !m && v > 2 ? g.set(h, v) : g.set(h, !0);
195
+      }
196
+      old_applyMemberDec(e, u, d, h, v, b, y, f, p);
197
+    }
198
+  }
199
+  old_pushInitializers(e, i), old_pushInitializers(e, n);
200
+}
201
+function old_pushInitializers(e, t) {
202
+  t && e.push(function (e) {
203
+    for (var a = 0; a < t.length; a++) t[a].call(e);
204
+    return e;
205
+  });
206
+}
207
+function old_applyClassDecs(e, t, a, r) {
208
+  if (r.length > 0) {
209
+    for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {
210
+      var s = {
211
+        v: !1
212
+      };
213
+      try {
214
+        var c = Object.assign({
215
+            kind: "class",
216
+            name: n,
217
+            addInitializer: old_createAddInitializerMethod(o, s)
218
+          }, old_createMetadataMethodsForProperty(a, 0, n, s)),
219
+          d = r[l](i, c);
220
+      } finally {
221
+        s.v = !0;
222
+      }
223
+      void 0 !== d && (old_assertValidReturnValue(10, d), i = d);
224
+    }
225
+    e.push(i, function () {
226
+      for (var e = 0; e < o.length; e++) o[e].call(i);
227
+    });
228
+  }
229
+}
230
+function applyDecs(e, t, a) {
231
+  var r = [],
232
+    o = {},
233
+    i = {};
234
+  return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;
235
+}
236
+module.exports = applyDecs, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 187 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2203.js

@@ -0,0 +1,187 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function applyDecs2203Factory() {
3
+  function createAddInitializerMethod(e, t) {
4
+    return function (r) {
5
+      !function (e, t) {
6
+        if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
7
+      }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
8
+    };
9
+  }
10
+  function memberDec(e, t, r, a, n, i, s, o) {
11
+    var c;
12
+    switch (n) {
13
+      case 1:
14
+        c = "accessor";
15
+        break;
16
+      case 2:
17
+        c = "method";
18
+        break;
19
+      case 3:
20
+        c = "getter";
21
+        break;
22
+      case 4:
23
+        c = "setter";
24
+        break;
25
+      default:
26
+        c = "field";
27
+    }
28
+    var l,
29
+      u,
30
+      f = {
31
+        kind: c,
32
+        name: s ? "#" + t : t,
33
+        "static": i,
34
+        "private": s
35
+      },
36
+      p = {
37
+        v: !1
38
+      };
39
+    0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function l() {
40
+      return this[t];
41
+    }, u = function u(e) {
42
+      this[t] = e;
43
+    }) : 2 === n ? l = function l() {
44
+      return r.value;
45
+    } : (1 !== n && 3 !== n || (l = function l() {
46
+      return r.get.call(this);
47
+    }), 1 !== n && 4 !== n || (u = function u(e) {
48
+      r.set.call(this, e);
49
+    })), f.access = l && u ? {
50
+      get: l,
51
+      set: u
52
+    } : l ? {
53
+      get: l
54
+    } : {
55
+      set: u
56
+    };
57
+    try {
58
+      return e(o, f);
59
+    } finally {
60
+      p.v = !0;
61
+    }
62
+  }
63
+  function assertCallable(e, t) {
64
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
65
+  }
66
+  function assertValidReturnValue(e, t) {
67
+    var r = _typeof(t);
68
+    if (1 === e) {
69
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
70
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
71
+    } else if ("function" !== r) {
72
+      var a;
73
+      throw a = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(a + " decorators must return a function or void 0");
74
+    }
75
+  }
76
+  function applyMemberDec(e, t, r, a, n, i, s, o) {
77
+    var c,
78
+      l,
79
+      u,
80
+      f,
81
+      p,
82
+      d,
83
+      h = r[0];
84
+    if (s ? c = 0 === n || 1 === n ? {
85
+      get: r[3],
86
+      set: r[4]
87
+    } : 3 === n ? {
88
+      get: r[3]
89
+    } : 4 === n ? {
90
+      set: r[3]
91
+    } : {
92
+      value: r[3]
93
+    } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {
94
+      get: c.get,
95
+      set: c.set
96
+    } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
97
+      get: p,
98
+      set: d
99
+    }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
100
+      var g;
101
+      if (void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u))) assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
102
+        get: p,
103
+        set: d
104
+      }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g));
105
+    }
106
+    if (0 === n || 1 === n) {
107
+      if (void 0 === l) l = function l(e, t) {
108
+        return t;
109
+      };else if ("function" != typeof l) {
110
+        var y = l;
111
+        l = function l(e, t) {
112
+          for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);
113
+          return r;
114
+        };
115
+      } else {
116
+        var m = l;
117
+        l = function l(e, t) {
118
+          return m.call(e, t);
119
+        };
120
+      }
121
+      e.push(l);
122
+    }
123
+    0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {
124
+      return u.get.call(e, t);
125
+    }), e.push(function (e, t) {
126
+      return u.set.call(e, t);
127
+    })) : 2 === n ? e.push(u) : e.push(function (e, t) {
128
+      return u.call(e, t);
129
+    }) : Object.defineProperty(t, a, c));
130
+  }
131
+  function pushInitializers(e, t) {
132
+    t && e.push(function (e) {
133
+      for (var r = 0; r < t.length; r++) t[r].call(e);
134
+      return e;
135
+    });
136
+  }
137
+  return function (e, t, r) {
138
+    var a = [];
139
+    return function (e, t, r) {
140
+      for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {
141
+        var c = r[o];
142
+        if (Array.isArray(c)) {
143
+          var l,
144
+            u,
145
+            f = c[1],
146
+            p = c[2],
147
+            d = c.length > 3,
148
+            h = f >= 5;
149
+          if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {
150
+            var v = h ? s : i,
151
+              g = v.get(p) || 0;
152
+            if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
153
+            !g && f > 2 ? v.set(p, f) : v.set(p, !0);
154
+          }
155
+          applyMemberDec(e, l, c, p, f, h, d, u);
156
+        }
157
+      }
158
+      pushInitializers(e, a), pushInitializers(e, n);
159
+    }(a, e, t), function (e, t, r) {
160
+      if (r.length > 0) {
161
+        for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {
162
+          var o = {
163
+            v: !1
164
+          };
165
+          try {
166
+            var c = r[s](n, {
167
+              kind: "class",
168
+              name: i,
169
+              addInitializer: createAddInitializerMethod(a, o)
170
+            });
171
+          } finally {
172
+            o.v = !0;
173
+          }
174
+          void 0 !== c && (assertValidReturnValue(10, c), n = c);
175
+        }
176
+        e.push(n, function () {
177
+          for (var e = 0; e < a.length; e++) a[e].call(n);
178
+        });
179
+      }
180
+    }(a, e, r), a;
181
+  };
182
+}
183
+var applyDecs2203Impl;
184
+function applyDecs2203(e, t, r) {
185
+  return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);
186
+}
187
+module.exports = applyDecs2203, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 191 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2203R.js

@@ -0,0 +1,191 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function applyDecs2203RFactory() {
3
+  function createAddInitializerMethod(e, t) {
4
+    return function (r) {
5
+      !function (e, t) {
6
+        if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
7
+      }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
8
+    };
9
+  }
10
+  function memberDec(e, t, r, n, a, i, s, o) {
11
+    var c;
12
+    switch (a) {
13
+      case 1:
14
+        c = "accessor";
15
+        break;
16
+      case 2:
17
+        c = "method";
18
+        break;
19
+      case 3:
20
+        c = "getter";
21
+        break;
22
+      case 4:
23
+        c = "setter";
24
+        break;
25
+      default:
26
+        c = "field";
27
+    }
28
+    var l,
29
+      u,
30
+      f = {
31
+        kind: c,
32
+        name: s ? "#" + t : t,
33
+        "static": i,
34
+        "private": s
35
+      },
36
+      p = {
37
+        v: !1
38
+      };
39
+    0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function l() {
40
+      return this[t];
41
+    }, u = function u(e) {
42
+      this[t] = e;
43
+    }) : 2 === a ? l = function l() {
44
+      return r.value;
45
+    } : (1 !== a && 3 !== a || (l = function l() {
46
+      return r.get.call(this);
47
+    }), 1 !== a && 4 !== a || (u = function u(e) {
48
+      r.set.call(this, e);
49
+    })), f.access = l && u ? {
50
+      get: l,
51
+      set: u
52
+    } : l ? {
53
+      get: l
54
+    } : {
55
+      set: u
56
+    };
57
+    try {
58
+      return e(o, f);
59
+    } finally {
60
+      p.v = !0;
61
+    }
62
+  }
63
+  function assertCallable(e, t) {
64
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
65
+  }
66
+  function assertValidReturnValue(e, t) {
67
+    var r = _typeof(t);
68
+    if (1 === e) {
69
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
70
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
71
+    } else if ("function" !== r) {
72
+      var n;
73
+      throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0");
74
+    }
75
+  }
76
+  function applyMemberDec(e, t, r, n, a, i, s, o) {
77
+    var c,
78
+      l,
79
+      u,
80
+      f,
81
+      p,
82
+      d,
83
+      h = r[0];
84
+    if (s ? c = 0 === a || 1 === a ? {
85
+      get: r[3],
86
+      set: r[4]
87
+    } : 3 === a ? {
88
+      get: r[3]
89
+    } : 4 === a ? {
90
+      set: r[3]
91
+    } : {
92
+      value: r[3]
93
+    } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = {
94
+      get: c.get,
95
+      set: c.set
96
+    } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
97
+      get: p,
98
+      set: d
99
+    }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
100
+      var g;
101
+      if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
102
+        get: p,
103
+        set: d
104
+      }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g));
105
+    }
106
+    if (0 === a || 1 === a) {
107
+      if (void 0 === l) l = function l(e, t) {
108
+        return t;
109
+      };else if ("function" != typeof l) {
110
+        var y = l;
111
+        l = function l(e, t) {
112
+          for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r);
113
+          return r;
114
+        };
115
+      } else {
116
+        var m = l;
117
+        l = function l(e, t) {
118
+          return m.call(e, t);
119
+        };
120
+      }
121
+      e.push(l);
122
+    }
123
+    0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) {
124
+      return u.get.call(e, t);
125
+    }), e.push(function (e, t) {
126
+      return u.set.call(e, t);
127
+    })) : 2 === a ? e.push(u) : e.push(function (e, t) {
128
+      return u.call(e, t);
129
+    }) : Object.defineProperty(t, n, c));
130
+  }
131
+  function applyMemberDecs(e, t) {
132
+    for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) {
133
+      var c = t[o];
134
+      if (Array.isArray(c)) {
135
+        var l,
136
+          u,
137
+          f = c[1],
138
+          p = c[2],
139
+          d = c.length > 3,
140
+          h = f >= 5;
141
+        if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {
142
+          var v = h ? s : i,
143
+            g = v.get(p) || 0;
144
+          if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
145
+          !g && f > 2 ? v.set(p, f) : v.set(p, !0);
146
+        }
147
+        applyMemberDec(a, l, c, p, f, h, d, u);
148
+      }
149
+    }
150
+    return pushInitializers(a, r), pushInitializers(a, n), a;
151
+  }
152
+  function pushInitializers(e, t) {
153
+    t && e.push(function (e) {
154
+      for (var r = 0; r < t.length; r++) t[r].call(e);
155
+      return e;
156
+    });
157
+  }
158
+  return function (e, t, r) {
159
+    return {
160
+      e: applyMemberDecs(e, t),
161
+      get c() {
162
+        return function (e, t) {
163
+          if (t.length > 0) {
164
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
165
+              var s = {
166
+                v: !1
167
+              };
168
+              try {
169
+                var o = t[i](n, {
170
+                  kind: "class",
171
+                  name: a,
172
+                  addInitializer: createAddInitializerMethod(r, s)
173
+                });
174
+              } finally {
175
+                s.v = !0;
176
+              }
177
+              void 0 !== o && (assertValidReturnValue(10, o), n = o);
178
+            }
179
+            return [n, function () {
180
+              for (var e = 0; e < r.length; e++) r[e].call(n);
181
+            }];
182
+          }
183
+        }(e, r);
184
+      }
185
+    };
186
+  };
187
+}
188
+function applyDecs2203R(e, t, r) {
189
+  return (module.exports = applyDecs2203R = applyDecs2203RFactory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r);
190
+}
191
+module.exports = applyDecs2203R, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 222 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2301.js

@@ -0,0 +1,222 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+var checkInRHS = require("./checkInRHS.js");
3
+function applyDecs2301Factory() {
4
+  function createAddInitializerMethod(e, t) {
5
+    return function (r) {
6
+      !function (e, t) {
7
+        if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
8
+      }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
9
+    };
10
+  }
11
+  function assertInstanceIfPrivate(e, t) {
12
+    if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
13
+  }
14
+  function memberDec(e, t, r, n, a, i, s, o, c) {
15
+    var u;
16
+    switch (a) {
17
+      case 1:
18
+        u = "accessor";
19
+        break;
20
+      case 2:
21
+        u = "method";
22
+        break;
23
+      case 3:
24
+        u = "getter";
25
+        break;
26
+      case 4:
27
+        u = "setter";
28
+        break;
29
+      default:
30
+        u = "field";
31
+    }
32
+    var l,
33
+      f,
34
+      p = {
35
+        kind: u,
36
+        name: s ? "#" + t : t,
37
+        "static": i,
38
+        "private": s
39
+      },
40
+      d = {
41
+        v: !1
42
+      };
43
+    if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {
44
+      if (2 === a) l = function l(e) {
45
+        return assertInstanceIfPrivate(c, e), r.value;
46
+      };else {
47
+        var h = 0 === a || 1 === a;
48
+        (h || 3 === a) && (l = s ? function (e) {
49
+          return assertInstanceIfPrivate(c, e), r.get.call(e);
50
+        } : function (e) {
51
+          return r.get.call(e);
52
+        }), (h || 4 === a) && (f = s ? function (e, t) {
53
+          assertInstanceIfPrivate(c, e), r.set.call(e, t);
54
+        } : function (e, t) {
55
+          r.set.call(e, t);
56
+        });
57
+      }
58
+    } else l = function l(e) {
59
+      return e[t];
60
+    }, 0 === a && (f = function f(e, r) {
61
+      e[t] = r;
62
+    });
63
+    var v = s ? c.bind() : function (e) {
64
+      return t in e;
65
+    };
66
+    p.access = l && f ? {
67
+      get: l,
68
+      set: f,
69
+      has: v
70
+    } : l ? {
71
+      get: l,
72
+      has: v
73
+    } : {
74
+      set: f,
75
+      has: v
76
+    };
77
+    try {
78
+      return e(o, p);
79
+    } finally {
80
+      d.v = !0;
81
+    }
82
+  }
83
+  function assertCallable(e, t) {
84
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
85
+  }
86
+  function assertValidReturnValue(e, t) {
87
+    var r = _typeof(t);
88
+    if (1 === e) {
89
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
90
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
91
+    } else if ("function" !== r) {
92
+      var n;
93
+      throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0");
94
+    }
95
+  }
96
+  function curryThis2(e) {
97
+    return function (t) {
98
+      e(this, t);
99
+    };
100
+  }
101
+  function applyMemberDec(e, t, r, n, a, i, s, o, c) {
102
+    var u,
103
+      l,
104
+      f,
105
+      p,
106
+      d,
107
+      h,
108
+      v,
109
+      g = r[0];
110
+    if (s ? u = 0 === a || 1 === a ? {
111
+      get: (p = r[3], function () {
112
+        return p(this);
113
+      }),
114
+      set: curryThis2(r[4])
115
+    } : 3 === a ? {
116
+      get: r[3]
117
+    } : 4 === a ? {
118
+      set: r[3]
119
+    } : {
120
+      value: r[3]
121
+    } : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {
122
+      get: u.get,
123
+      set: u.set
124
+    } : 2 === a ? f = u.value : 3 === a ? f = u.get : 4 === a && (f = u.set), "function" == typeof g) void 0 !== (d = memberDec(g, n, u, o, a, i, s, f, c)) && (assertValidReturnValue(a, d), 0 === a ? l = d : 1 === a ? (l = d.init, h = d.get || f.get, v = d.set || f.set, f = {
125
+      get: h,
126
+      set: v
127
+    }) : f = d);else for (var y = g.length - 1; y >= 0; y--) {
128
+      var m;
129
+      if (void 0 !== (d = memberDec(g[y], n, u, o, a, i, s, f, c))) assertValidReturnValue(a, d), 0 === a ? m = d : 1 === a ? (m = d.init, h = d.get || f.get, v = d.set || f.set, f = {
130
+        get: h,
131
+        set: v
132
+      }) : f = d, void 0 !== m && (void 0 === l ? l = m : "function" == typeof l ? l = [l, m] : l.push(m));
133
+    }
134
+    if (0 === a || 1 === a) {
135
+      if (void 0 === l) l = function l(e, t) {
136
+        return t;
137
+      };else if ("function" != typeof l) {
138
+        var b = l;
139
+        l = function l(e, t) {
140
+          for (var r = t, n = 0; n < b.length; n++) r = b[n].call(e, r);
141
+          return r;
142
+        };
143
+      } else {
144
+        var I = l;
145
+        l = function l(e, t) {
146
+          return I.call(e, t);
147
+        };
148
+      }
149
+      e.push(l);
150
+    }
151
+    0 !== a && (1 === a ? (u.get = f.get, u.set = f.set) : 2 === a ? u.value = f : 3 === a ? u.get = f : 4 === a && (u.set = f), s ? 1 === a ? (e.push(function (e, t) {
152
+      return f.get.call(e, t);
153
+    }), e.push(function (e, t) {
154
+      return f.set.call(e, t);
155
+    })) : 2 === a ? e.push(f) : e.push(function (e, t) {
156
+      return f.call(e, t);
157
+    }) : Object.defineProperty(t, n, u));
158
+  }
159
+  function applyMemberDecs(e, t, r) {
160
+    for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {
161
+      var l = t[u];
162
+      if (Array.isArray(l)) {
163
+        var f,
164
+          p,
165
+          d = l[1],
166
+          h = l[2],
167
+          v = l.length > 3,
168
+          g = d >= 5,
169
+          y = r;
170
+        if (g ? (f = e, 0 !== (d -= 5) && (p = a = a || []), v && !i && (i = function i(t) {
171
+          return checkInRHS(t) === e;
172
+        }), y = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {
173
+          var m = g ? c : o,
174
+            b = m.get(h) || 0;
175
+          if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
176
+          !b && d > 2 ? m.set(h, d) : m.set(h, !0);
177
+        }
178
+        applyMemberDec(s, f, l, h, d, g, v, p, y);
179
+      }
180
+    }
181
+    return pushInitializers(s, n), pushInitializers(s, a), s;
182
+  }
183
+  function pushInitializers(e, t) {
184
+    t && e.push(function (e) {
185
+      for (var r = 0; r < t.length; r++) t[r].call(e);
186
+      return e;
187
+    });
188
+  }
189
+  return function (e, t, r, n) {
190
+    return {
191
+      e: applyMemberDecs(e, t, n),
192
+      get c() {
193
+        return function (e, t) {
194
+          if (t.length > 0) {
195
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
196
+              var s = {
197
+                v: !1
198
+              };
199
+              try {
200
+                var o = t[i](n, {
201
+                  kind: "class",
202
+                  name: a,
203
+                  addInitializer: createAddInitializerMethod(r, s)
204
+                });
205
+              } finally {
206
+                s.v = !0;
207
+              }
208
+              void 0 !== o && (assertValidReturnValue(10, o), n = o);
209
+            }
210
+            return [n, function () {
211
+              for (var e = 0; e < r.length; e++) r[e].call(n);
212
+            }];
213
+          }
214
+        }(e, r);
215
+      }
216
+    };
217
+  };
218
+}
219
+function applyDecs2301(e, t, r, n) {
220
+  return (module.exports = applyDecs2301 = applyDecs2301Factory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r, n);
221
+}
222
+module.exports = applyDecs2301, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 220 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2305.js

@@ -0,0 +1,220 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+var checkInRHS = require("./checkInRHS.js");
3
+function createAddInitializerMethod(e, t) {
4
+  return function (r) {
5
+    assertNotFinished(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
6
+  };
7
+}
8
+function assertInstanceIfPrivate(e, t) {
9
+  if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
10
+}
11
+function memberDec(e, t, r, n, a, i, s, o, c, l) {
12
+  var u;
13
+  switch (i) {
14
+    case 1:
15
+      u = "accessor";
16
+      break;
17
+    case 2:
18
+      u = "method";
19
+      break;
20
+    case 3:
21
+      u = "getter";
22
+      break;
23
+    case 4:
24
+      u = "setter";
25
+      break;
26
+    default:
27
+      u = "field";
28
+  }
29
+  var f,
30
+    d,
31
+    p = {
32
+      kind: u,
33
+      name: o ? "#" + r : r,
34
+      "static": s,
35
+      "private": o
36
+    },
37
+    h = {
38
+      v: !1
39
+    };
40
+  if (0 !== i && (p.addInitializer = createAddInitializerMethod(a, h)), o || 0 !== i && 2 !== i) {
41
+    if (2 === i) f = function f(e) {
42
+      return assertInstanceIfPrivate(l, e), n.value;
43
+    };else {
44
+      var v = 0 === i || 1 === i;
45
+      (v || 3 === i) && (f = o ? function (e) {
46
+        return assertInstanceIfPrivate(l, e), n.get.call(e);
47
+      } : function (e) {
48
+        return n.get.call(e);
49
+      }), (v || 4 === i) && (d = o ? function (e, t) {
50
+        assertInstanceIfPrivate(l, e), n.set.call(e, t);
51
+      } : function (e, t) {
52
+        n.set.call(e, t);
53
+      });
54
+    }
55
+  } else f = function f(e) {
56
+    return e[r];
57
+  }, 0 === i && (d = function d(e, t) {
58
+    e[r] = t;
59
+  });
60
+  var y = o ? l.bind() : function (e) {
61
+    return r in e;
62
+  };
63
+  p.access = f && d ? {
64
+    get: f,
65
+    set: d,
66
+    has: y
67
+  } : f ? {
68
+    get: f,
69
+    has: y
70
+  } : {
71
+    set: d,
72
+    has: y
73
+  };
74
+  try {
75
+    return e.call(t, c, p);
76
+  } finally {
77
+    h.v = !0;
78
+  }
79
+}
80
+function assertNotFinished(e, t) {
81
+  if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
82
+}
83
+function assertCallable(e, t) {
84
+  if ("function" != typeof e) throw new TypeError(t + " must be a function");
85
+}
86
+function assertValidReturnValue(e, t) {
87
+  var r = _typeof(t);
88
+  if (1 === e) {
89
+    if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
90
+    void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
91
+  } else if ("function" !== r) {
92
+    var n;
93
+    throw n = 0 === e ? "field" : 5 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0");
94
+  }
95
+}
96
+function curryThis1(e) {
97
+  return function () {
98
+    return e(this);
99
+  };
100
+}
101
+function curryThis2(e) {
102
+  return function (t) {
103
+    e(this, t);
104
+  };
105
+}
106
+function applyMemberDec(e, t, r, n, a, i, s, o, c, l) {
107
+  var u,
108
+    f,
109
+    d,
110
+    p,
111
+    h,
112
+    v,
113
+    y = r[0];
114
+  n || Array.isArray(y) || (y = [y]), o ? u = 0 === i || 1 === i ? {
115
+    get: curryThis1(r[3]),
116
+    set: curryThis2(r[4])
117
+  } : 3 === i ? {
118
+    get: r[3]
119
+  } : 4 === i ? {
120
+    set: r[3]
121
+  } : {
122
+    value: r[3]
123
+  } : 0 !== i && (u = Object.getOwnPropertyDescriptor(t, a)), 1 === i ? d = {
124
+    get: u.get,
125
+    set: u.set
126
+  } : 2 === i ? d = u.value : 3 === i ? d = u.get : 4 === i && (d = u.set);
127
+  for (var g = n ? 2 : 1, m = y.length - 1; m >= 0; m -= g) {
128
+    var b;
129
+    if (void 0 !== (p = memberDec(y[m], n ? y[m - 1] : void 0, a, u, c, i, s, o, d, l))) assertValidReturnValue(i, p), 0 === i ? b = p : 1 === i ? (b = p.init, h = p.get || d.get, v = p.set || d.set, d = {
130
+      get: h,
131
+      set: v
132
+    }) : d = p, void 0 !== b && (void 0 === f ? f = b : "function" == typeof f ? f = [f, b] : f.push(b));
133
+  }
134
+  if (0 === i || 1 === i) {
135
+    if (void 0 === f) f = function f(e, t) {
136
+      return t;
137
+    };else if ("function" != typeof f) {
138
+      var I = f;
139
+      f = function f(e, t) {
140
+        for (var r = t, n = I.length - 1; n >= 0; n--) r = I[n].call(e, r);
141
+        return r;
142
+      };
143
+    } else {
144
+      var w = f;
145
+      f = function f(e, t) {
146
+        return w.call(e, t);
147
+      };
148
+    }
149
+    e.push(f);
150
+  }
151
+  0 !== i && (1 === i ? (u.get = d.get, u.set = d.set) : 2 === i ? u.value = d : 3 === i ? u.get = d : 4 === i && (u.set = d), o ? 1 === i ? (e.push(function (e, t) {
152
+    return d.get.call(e, t);
153
+  }), e.push(function (e, t) {
154
+    return d.set.call(e, t);
155
+  })) : 2 === i ? e.push(d) : e.push(function (e, t) {
156
+    return d.call(e, t);
157
+  }) : Object.defineProperty(t, a, u));
158
+}
159
+function applyMemberDecs(e, t, r) {
160
+  for (var n, a, i, s = [], o = new Map(), c = new Map(), l = 0; l < t.length; l++) {
161
+    var u = t[l];
162
+    if (Array.isArray(u)) {
163
+      var f,
164
+        d,
165
+        p = u[1],
166
+        h = u[2],
167
+        v = u.length > 3,
168
+        y = 16 & p,
169
+        g = !!(8 & p),
170
+        m = r;
171
+      if (p &= 7, g ? (f = e, 0 !== p && (d = a = a || []), v && !i && (i = function i(t) {
172
+        return checkInRHS(t) === e;
173
+      }), m = i) : (f = e.prototype, 0 !== p && (d = n = n || [])), 0 !== p && !v) {
174
+        var b = g ? c : o,
175
+          I = b.get(h) || 0;
176
+        if (!0 === I || 3 === I && 4 !== p || 4 === I && 3 !== p) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
177
+        b.set(h, !(!I && p > 2) || p);
178
+      }
179
+      applyMemberDec(s, f, u, y, h, p, g, v, d, m);
180
+    }
181
+  }
182
+  return pushInitializers(s, n), pushInitializers(s, a), s;
183
+}
184
+function pushInitializers(e, t) {
185
+  t && e.push(function (e) {
186
+    for (var r = 0; r < t.length; r++) t[r].call(e);
187
+    return e;
188
+  });
189
+}
190
+function applyClassDecs(e, t, r) {
191
+  if (t.length) {
192
+    for (var n = [], a = e, i = e.name, s = r ? 2 : 1, o = t.length - 1; o >= 0; o -= s) {
193
+      var c = {
194
+        v: !1
195
+      };
196
+      try {
197
+        var l = t[o].call(r ? t[o - 1] : void 0, a, {
198
+          kind: "class",
199
+          name: i,
200
+          addInitializer: createAddInitializerMethod(n, c)
201
+        });
202
+      } finally {
203
+        c.v = !0;
204
+      }
205
+      void 0 !== l && (assertValidReturnValue(5, l), a = l);
206
+    }
207
+    return [a, function () {
208
+      for (var e = 0; e < n.length; e++) n[e].call(a);
209
+    }];
210
+  }
211
+}
212
+function applyDecs2305(e, t, r, n, a) {
213
+  return {
214
+    e: applyMemberDecs(e, t, a),
215
+    get c() {
216
+      return applyClassDecs(e, r, n);
217
+    }
218
+  };
219
+}
220
+module.exports = applyDecs2305, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js

@@ -0,0 +1,6 @@
1
+function _arrayLikeToArray(arr, len) {
2
+  if (len == null || len > arr.length) len = arr.length;
3
+  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
4
+  return arr2;
5
+}
6
+module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/arrayWithHoles.js

@@ -0,0 +1,4 @@
1
+function _arrayWithHoles(arr) {
2
+  if (Array.isArray(arr)) return arr;
3
+}
4
+module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 5 - 0
app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js

@@ -0,0 +1,5 @@
1
+var arrayLikeToArray = require("./arrayLikeToArray.js");
2
+function _arrayWithoutHoles(arr) {
3
+  if (Array.isArray(arr)) return arrayLikeToArray(arr);
4
+}
5
+module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/assertThisInitialized.js

@@ -0,0 +1,7 @@
1
+function _assertThisInitialized(self) {
2
+  if (self === void 0) {
3
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
4
+  }
5
+  return self;
6
+}
7
+module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 24 - 0
app/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js

@@ -0,0 +1,24 @@
1
+var OverloadYield = require("./OverloadYield.js");
2
+function _asyncGeneratorDelegate(t) {
3
+  var e = {},
4
+    n = !1;
5
+  function pump(e, r) {
6
+    return n = !0, r = new Promise(function (n) {
7
+      n(t[e](r));
8
+    }), {
9
+      done: !1,
10
+      value: new OverloadYield(r, 1)
11
+    };
12
+  }
13
+  return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
14
+    return this;
15
+  }, e.next = function (t) {
16
+    return n ? (n = !1, t) : pump("next", t);
17
+  }, "function" == typeof t["throw"] && (e["throw"] = function (t) {
18
+    if (n) throw n = !1, t;
19
+    return pump("throw", t);
20
+  }), "function" == typeof t["return"] && (e["return"] = function (t) {
21
+    return n ? (n = !1, t) : pump("return", t);
22
+  }), e;
23
+}
24
+module.exports = _asyncGeneratorDelegate, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 45 - 0
app/node_modules/@babel/runtime/helpers/asyncIterator.js

@@ -0,0 +1,45 @@
1
+function _asyncIterator(r) {
2
+  var n,
3
+    t,
4
+    o,
5
+    e = 2;
6
+  for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
7
+    if (t && null != (n = r[t])) return n.call(r);
8
+    if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
9
+    t = "@@asyncIterator", o = "@@iterator";
10
+  }
11
+  throw new TypeError("Object is not async iterable");
12
+}
13
+function AsyncFromSyncIterator(r) {
14
+  function AsyncFromSyncIteratorContinuation(r) {
15
+    if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
16
+    var n = r.done;
17
+    return Promise.resolve(r.value).then(function (r) {
18
+      return {
19
+        value: r,
20
+        done: n
21
+      };
22
+    });
23
+  }
24
+  return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {
25
+    this.s = r, this.n = r.next;
26
+  }, AsyncFromSyncIterator.prototype = {
27
+    s: null,
28
+    n: null,
29
+    next: function next() {
30
+      return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
31
+    },
32
+    "return": function _return(r) {
33
+      var n = this.s["return"];
34
+      return void 0 === n ? Promise.resolve({
35
+        value: r,
36
+        done: !0
37
+      }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
38
+    },
39
+    "throw": function _throw(r) {
40
+      var n = this.s["return"];
41
+      return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
42
+    }
43
+  }, new AsyncFromSyncIterator(r);
44
+}
45
+module.exports = _asyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 31 - 0
app/node_modules/@babel/runtime/helpers/asyncToGenerator.js

@@ -0,0 +1,31 @@
1
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+  try {
3
+    var info = gen[key](arg);
4
+    var value = info.value;
5
+  } catch (error) {
6
+    reject(error);
7
+    return;
8
+  }
9
+  if (info.done) {
10
+    resolve(value);
11
+  } else {
12
+    Promise.resolve(value).then(_next, _throw);
13
+  }
14
+}
15
+function _asyncToGenerator(fn) {
16
+  return function () {
17
+    var self = this,
18
+      args = arguments;
19
+    return new Promise(function (resolve, reject) {
20
+      var gen = fn.apply(self, args);
21
+      function _next(value) {
22
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
23
+      }
24
+      function _throw(err) {
25
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
26
+      }
27
+      _next(undefined);
28
+    });
29
+  };
30
+}
31
+module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 5 - 0
app/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js

@@ -0,0 +1,5 @@
1
+var OverloadYield = require("./OverloadYield.js");
2
+function _awaitAsyncGenerator(e) {
3
+  return new OverloadYield(e, 0);
4
+}
5
+module.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/checkInRHS.js

@@ -0,0 +1,6 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function _checkInRHS(e) {
3
+  if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null"));
4
+  return e;
5
+}
6
+module.exports = _checkInRHS, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js

@@ -0,0 +1,6 @@
1
+function _checkPrivateRedeclaration(obj, privateCollection) {
2
+  if (privateCollection.has(obj)) {
3
+    throw new TypeError("Cannot initialize the same private elements twice on an object");
4
+  }
5
+}
6
+module.exports = _checkPrivateRedeclaration, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 18 - 0
app/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js

@@ -0,0 +1,18 @@
1
+function _classApplyDescriptorDestructureSet(receiver, descriptor) {
2
+  if (descriptor.set) {
3
+    if (!("__destrObj" in descriptor)) {
4
+      descriptor.__destrObj = {
5
+        set value(v) {
6
+          descriptor.set.call(receiver, v);
7
+        }
8
+      };
9
+    }
10
+    return descriptor.__destrObj;
11
+  } else {
12
+    if (!descriptor.writable) {
13
+      throw new TypeError("attempted to set read only private field");
14
+    }
15
+    return descriptor;
16
+  }
17
+}
18
+module.exports = _classApplyDescriptorDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js

@@ -0,0 +1,7 @@
1
+function _classApplyDescriptorGet(receiver, descriptor) {
2
+  if (descriptor.get) {
3
+    return descriptor.get.call(receiver);
4
+  }
5
+  return descriptor.value;
6
+}
7
+module.exports = _classApplyDescriptorGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 11 - 0
app/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js

@@ -0,0 +1,11 @@
1
+function _classApplyDescriptorSet(receiver, descriptor, value) {
2
+  if (descriptor.set) {
3
+    descriptor.set.call(receiver, value);
4
+  } else {
5
+    if (!descriptor.writable) {
6
+      throw new TypeError("attempted to set read only private field");
7
+    }
8
+    descriptor.value = value;
9
+  }
10
+}
11
+module.exports = _classApplyDescriptorSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classCallCheck.js

@@ -0,0 +1,6 @@
1
+function _classCallCheck(instance, Constructor) {
2
+  if (!(instance instanceof Constructor)) {
3
+    throw new TypeError("Cannot call a class as a function");
4
+  }
5
+}
6
+module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js

@@ -0,0 +1,6 @@
1
+function _classCheckPrivateStaticAccess(receiver, classConstructor) {
2
+  if (receiver !== classConstructor) {
3
+    throw new TypeError("Private static access of wrong provenance");
4
+  }
5
+}
6
+module.exports = _classCheckPrivateStaticAccess, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js

@@ -0,0 +1,6 @@
1
+function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
2
+  if (descriptor === undefined) {
3
+    throw new TypeError("attempted to " + action + " private static field before its declaration");
4
+  }
5
+}
6
+module.exports = _classCheckPrivateStaticFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js

@@ -0,0 +1,7 @@
1
+function _classExtractFieldDescriptor(receiver, privateMap, action) {
2
+  if (!privateMap.has(receiver)) {
3
+    throw new TypeError("attempted to " + action + " private field on non-instance");
4
+  }
5
+  return privateMap.get(receiver);
6
+}
7
+module.exports = _classExtractFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/classNameTDZError.js

@@ -0,0 +1,4 @@
1
+function _classNameTDZError(name) {
2
+  throw new ReferenceError("Class \"" + name + "\" cannot be referenced in computed property keys.");
3
+}
4
+module.exports = _classNameTDZError, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js

@@ -0,0 +1,7 @@
1
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
2
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
3
+function _classPrivateFieldDestructureSet(receiver, privateMap) {
4
+  var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
5
+  return classApplyDescriptorDestructureSet(receiver, descriptor);
6
+}
7
+module.exports = _classPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js

@@ -0,0 +1,7 @@
1
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
2
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
3
+function _classPrivateFieldGet(receiver, privateMap) {
4
+  var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
5
+  return classApplyDescriptorGet(receiver, descriptor);
6
+}
7
+module.exports = _classPrivateFieldGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js

@@ -0,0 +1,6 @@
1
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
2
+function _classPrivateFieldInitSpec(obj, privateMap, value) {
3
+  checkPrivateRedeclaration(obj, privateMap);
4
+  privateMap.set(obj, value);
5
+}
6
+module.exports = _classPrivateFieldInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js

@@ -0,0 +1,7 @@
1
+function _classPrivateFieldBase(receiver, privateKey) {
2
+  if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
3
+    throw new TypeError("attempted to use private field on non-instance");
4
+  }
5
+  return receiver;
6
+}
7
+module.exports = _classPrivateFieldBase, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 5 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js

@@ -0,0 +1,5 @@
1
+var id = 0;
2
+function _classPrivateFieldKey(name) {
3
+  return "__private_" + id++ + "_" + name;
4
+}
5
+module.exports = _classPrivateFieldKey, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 8 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js

@@ -0,0 +1,8 @@
1
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
2
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
3
+function _classPrivateFieldSet(receiver, privateMap, value) {
4
+  var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
5
+  classApplyDescriptorSet(receiver, descriptor, value);
6
+  return value;
7
+}
8
+module.exports = _classPrivateFieldSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js

@@ -0,0 +1,7 @@
1
+function _classPrivateMethodGet(receiver, privateSet, fn) {
2
+  if (!privateSet.has(receiver)) {
3
+    throw new TypeError("attempted to get private field on non-instance");
4
+  }
5
+  return fn;
6
+}
7
+module.exports = _classPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js

@@ -0,0 +1,6 @@
1
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
2
+function _classPrivateMethodInitSpec(obj, privateSet) {
3
+  checkPrivateRedeclaration(obj, privateSet);
4
+  privateSet.add(obj);
5
+}
6
+module.exports = _classPrivateMethodInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js

@@ -0,0 +1,4 @@
1
+function _classPrivateMethodSet() {
2
+  throw new TypeError("attempted to reassign private method");
3
+}
4
+module.exports = _classPrivateMethodSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 9 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js

@@ -0,0 +1,9 @@
1
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
2
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
3
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
4
+function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
5
+  classCheckPrivateStaticAccess(receiver, classConstructor);
6
+  classCheckPrivateStaticFieldDescriptor(descriptor, "set");
7
+  return classApplyDescriptorDestructureSet(receiver, descriptor);
8
+}
9
+module.exports = _classStaticPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 9 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js

@@ -0,0 +1,9 @@
1
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
2
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
3
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
4
+function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
5
+  classCheckPrivateStaticAccess(receiver, classConstructor);
6
+  classCheckPrivateStaticFieldDescriptor(descriptor, "get");
7
+  return classApplyDescriptorGet(receiver, descriptor);
8
+}
9
+module.exports = _classStaticPrivateFieldSpecGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 10 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js

@@ -0,0 +1,10 @@
1
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
2
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
3
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
4
+function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
5
+  classCheckPrivateStaticAccess(receiver, classConstructor);
6
+  classCheckPrivateStaticFieldDescriptor(descriptor, "set");
7
+  classApplyDescriptorSet(receiver, descriptor, value);
8
+  return value;
9
+}
10
+module.exports = _classStaticPrivateFieldSpecSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js

@@ -0,0 +1,6 @@
1
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
2
+function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
3
+  classCheckPrivateStaticAccess(receiver, classConstructor);
4
+  return method;
5
+}
6
+module.exports = _classStaticPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js

@@ -0,0 +1,4 @@
1
+function _classStaticPrivateMethodSet() {
2
+  throw new TypeError("attempted to set read only static private field");
3
+}
4
+module.exports = _classStaticPrivateMethodSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 18 - 0
app/node_modules/@babel/runtime/helpers/construct.js

@@ -0,0 +1,18 @@
1
+var setPrototypeOf = require("./setPrototypeOf.js");
2
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
3
+function _construct(Parent, args, Class) {
4
+  if (isNativeReflectConstruct()) {
5
+    module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
6
+  } else {
7
+    module.exports = _construct = function _construct(Parent, args, Class) {
8
+      var a = [null];
9
+      a.push.apply(a, args);
10
+      var Constructor = Function.bind.apply(Parent, a);
11
+      var instance = new Constructor();
12
+      if (Class) setPrototypeOf(instance, Class.prototype);
13
+      return instance;
14
+    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
15
+  }
16
+  return _construct.apply(null, arguments);
17
+}
18
+module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 19 - 0
app/node_modules/@babel/runtime/helpers/createClass.js

@@ -0,0 +1,19 @@
1
+var toPropertyKey = require("./toPropertyKey.js");
2
+function _defineProperties(target, props) {
3
+  for (var i = 0; i < props.length; i++) {
4
+    var descriptor = props[i];
5
+    descriptor.enumerable = descriptor.enumerable || false;
6
+    descriptor.configurable = true;
7
+    if ("value" in descriptor) descriptor.writable = true;
8
+    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
9
+  }
10
+}
11
+function _createClass(Constructor, protoProps, staticProps) {
12
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
13
+  if (staticProps) _defineProperties(Constructor, staticProps);
14
+  Object.defineProperty(Constructor, "prototype", {
15
+    writable: false
16
+  });
17
+  return Constructor;
18
+}
19
+module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 53 - 0
app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js

@@ -0,0 +1,53 @@
1
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
2
+function _createForOfIteratorHelper(o, allowArrayLike) {
3
+  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
4
+  if (!it) {
5
+    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
6
+      if (it) o = it;
7
+      var i = 0;
8
+      var F = function F() {};
9
+      return {
10
+        s: F,
11
+        n: function n() {
12
+          if (i >= o.length) return {
13
+            done: true
14
+          };
15
+          return {
16
+            done: false,
17
+            value: o[i++]
18
+          };
19
+        },
20
+        e: function e(_e) {
21
+          throw _e;
22
+        },
23
+        f: F
24
+      };
25
+    }
26
+    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
27
+  }
28
+  var normalCompletion = true,
29
+    didErr = false,
30
+    err;
31
+  return {
32
+    s: function s() {
33
+      it = it.call(o);
34
+    },
35
+    n: function n() {
36
+      var step = it.next();
37
+      normalCompletion = step.done;
38
+      return step;
39
+    },
40
+    e: function e(_e2) {
41
+      didErr = true;
42
+      err = _e2;
43
+    },
44
+    f: function f() {
45
+      try {
46
+        if (!normalCompletion && it["return"] != null) it["return"]();
47
+      } finally {
48
+        if (didErr) throw err;
49
+      }
50
+    }
51
+  };
52
+}
53
+module.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 20 - 0
app/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js

@@ -0,0 +1,20 @@
1
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
2
+function _createForOfIteratorHelperLoose(o, allowArrayLike) {
3
+  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
4
+  if (it) return (it = it.call(o)).next.bind(it);
5
+  if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
6
+    if (it) o = it;
7
+    var i = 0;
8
+    return function () {
9
+      if (i >= o.length) return {
10
+        done: true
11
+      };
12
+      return {
13
+        done: false,
14
+        value: o[i++]
15
+      };
16
+    };
17
+  }
18
+  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
19
+}
20
+module.exports = _createForOfIteratorHelperLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 18 - 0
app/node_modules/@babel/runtime/helpers/createSuper.js

@@ -0,0 +1,18 @@
1
+var getPrototypeOf = require("./getPrototypeOf.js");
2
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
3
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
4
+function _createSuper(Derived) {
5
+  var hasNativeReflectConstruct = isNativeReflectConstruct();
6
+  return function _createSuperInternal() {
7
+    var Super = getPrototypeOf(Derived),
8
+      result;
9
+    if (hasNativeReflectConstruct) {
10
+      var NewTarget = getPrototypeOf(this).constructor;
11
+      result = Reflect.construct(Super, arguments, NewTarget);
12
+    } else {
13
+      result = Super.apply(this, arguments);
14
+    }
15
+    return possibleConstructorReturn(this, result);
16
+  };
17
+}
18
+module.exports = _createSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 343 - 0
app/node_modules/@babel/runtime/helpers/decorate.js

@@ -0,0 +1,343 @@
1
+var toArray = require("./toArray.js");
2
+var toPropertyKey = require("./toPropertyKey.js");
3
+function _decorate(decorators, factory, superClass, mixins) {
4
+  var api = _getDecoratorsApi();
5
+  if (mixins) {
6
+    for (var i = 0; i < mixins.length; i++) {
7
+      api = mixins[i](api);
8
+    }
9
+  }
10
+  var r = factory(function initialize(O) {
11
+    api.initializeInstanceElements(O, decorated.elements);
12
+  }, superClass);
13
+  var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);
14
+  api.initializeClassElements(r.F, decorated.elements);
15
+  return api.runClassFinishers(r.F, decorated.finishers);
16
+}
17
+function _getDecoratorsApi() {
18
+  _getDecoratorsApi = function _getDecoratorsApi() {
19
+    return api;
20
+  };
21
+  var api = {
22
+    elementsDefinitionOrder: [["method"], ["field"]],
23
+    initializeInstanceElements: function initializeInstanceElements(O, elements) {
24
+      ["method", "field"].forEach(function (kind) {
25
+        elements.forEach(function (element) {
26
+          if (element.kind === kind && element.placement === "own") {
27
+            this.defineClassElement(O, element);
28
+          }
29
+        }, this);
30
+      }, this);
31
+    },
32
+    initializeClassElements: function initializeClassElements(F, elements) {
33
+      var proto = F.prototype;
34
+      ["method", "field"].forEach(function (kind) {
35
+        elements.forEach(function (element) {
36
+          var placement = element.placement;
37
+          if (element.kind === kind && (placement === "static" || placement === "prototype")) {
38
+            var receiver = placement === "static" ? F : proto;
39
+            this.defineClassElement(receiver, element);
40
+          }
41
+        }, this);
42
+      }, this);
43
+    },
44
+    defineClassElement: function defineClassElement(receiver, element) {
45
+      var descriptor = element.descriptor;
46
+      if (element.kind === "field") {
47
+        var initializer = element.initializer;
48
+        descriptor = {
49
+          enumerable: descriptor.enumerable,
50
+          writable: descriptor.writable,
51
+          configurable: descriptor.configurable,
52
+          value: initializer === void 0 ? void 0 : initializer.call(receiver)
53
+        };
54
+      }
55
+      Object.defineProperty(receiver, element.key, descriptor);
56
+    },
57
+    decorateClass: function decorateClass(elements, decorators) {
58
+      var newElements = [];
59
+      var finishers = [];
60
+      var placements = {
61
+        "static": [],
62
+        prototype: [],
63
+        own: []
64
+      };
65
+      elements.forEach(function (element) {
66
+        this.addElementPlacement(element, placements);
67
+      }, this);
68
+      elements.forEach(function (element) {
69
+        if (!_hasDecorators(element)) return newElements.push(element);
70
+        var elementFinishersExtras = this.decorateElement(element, placements);
71
+        newElements.push(elementFinishersExtras.element);
72
+        newElements.push.apply(newElements, elementFinishersExtras.extras);
73
+        finishers.push.apply(finishers, elementFinishersExtras.finishers);
74
+      }, this);
75
+      if (!decorators) {
76
+        return {
77
+          elements: newElements,
78
+          finishers: finishers
79
+        };
80
+      }
81
+      var result = this.decorateConstructor(newElements, decorators);
82
+      finishers.push.apply(finishers, result.finishers);
83
+      result.finishers = finishers;
84
+      return result;
85
+    },
86
+    addElementPlacement: function addElementPlacement(element, placements, silent) {
87
+      var keys = placements[element.placement];
88
+      if (!silent && keys.indexOf(element.key) !== -1) {
89
+        throw new TypeError("Duplicated element (" + element.key + ")");
90
+      }
91
+      keys.push(element.key);
92
+    },
93
+    decorateElement: function decorateElement(element, placements) {
94
+      var extras = [];
95
+      var finishers = [];
96
+      for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
97
+        var keys = placements[element.placement];
98
+        keys.splice(keys.indexOf(element.key), 1);
99
+        var elementObject = this.fromElementDescriptor(element);
100
+        var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
101
+        element = elementFinisherExtras.element;
102
+        this.addElementPlacement(element, placements);
103
+        if (elementFinisherExtras.finisher) {
104
+          finishers.push(elementFinisherExtras.finisher);
105
+        }
106
+        var newExtras = elementFinisherExtras.extras;
107
+        if (newExtras) {
108
+          for (var j = 0; j < newExtras.length; j++) {
109
+            this.addElementPlacement(newExtras[j], placements);
110
+          }
111
+          extras.push.apply(extras, newExtras);
112
+        }
113
+      }
114
+      return {
115
+        element: element,
116
+        finishers: finishers,
117
+        extras: extras
118
+      };
119
+    },
120
+    decorateConstructor: function decorateConstructor(elements, decorators) {
121
+      var finishers = [];
122
+      for (var i = decorators.length - 1; i >= 0; i--) {
123
+        var obj = this.fromClassDescriptor(elements);
124
+        var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);
125
+        if (elementsAndFinisher.finisher !== undefined) {
126
+          finishers.push(elementsAndFinisher.finisher);
127
+        }
128
+        if (elementsAndFinisher.elements !== undefined) {
129
+          elements = elementsAndFinisher.elements;
130
+          for (var j = 0; j < elements.length - 1; j++) {
131
+            for (var k = j + 1; k < elements.length; k++) {
132
+              if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {
133
+                throw new TypeError("Duplicated element (" + elements[j].key + ")");
134
+              }
135
+            }
136
+          }
137
+        }
138
+      }
139
+      return {
140
+        elements: elements,
141
+        finishers: finishers
142
+      };
143
+    },
144
+    fromElementDescriptor: function fromElementDescriptor(element) {
145
+      var obj = {
146
+        kind: element.kind,
147
+        key: element.key,
148
+        placement: element.placement,
149
+        descriptor: element.descriptor
150
+      };
151
+      var desc = {
152
+        value: "Descriptor",
153
+        configurable: true
154
+      };
155
+      Object.defineProperty(obj, Symbol.toStringTag, desc);
156
+      if (element.kind === "field") obj.initializer = element.initializer;
157
+      return obj;
158
+    },
159
+    toElementDescriptors: function toElementDescriptors(elementObjects) {
160
+      if (elementObjects === undefined) return;
161
+      return toArray(elementObjects).map(function (elementObject) {
162
+        var element = this.toElementDescriptor(elementObject);
163
+        this.disallowProperty(elementObject, "finisher", "An element descriptor");
164
+        this.disallowProperty(elementObject, "extras", "An element descriptor");
165
+        return element;
166
+      }, this);
167
+    },
168
+    toElementDescriptor: function toElementDescriptor(elementObject) {
169
+      var kind = String(elementObject.kind);
170
+      if (kind !== "method" && kind !== "field") {
171
+        throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"');
172
+      }
173
+      var key = toPropertyKey(elementObject.key);
174
+      var placement = String(elementObject.placement);
175
+      if (placement !== "static" && placement !== "prototype" && placement !== "own") {
176
+        throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"');
177
+      }
178
+      var descriptor = elementObject.descriptor;
179
+      this.disallowProperty(elementObject, "elements", "An element descriptor");
180
+      var element = {
181
+        kind: kind,
182
+        key: key,
183
+        placement: placement,
184
+        descriptor: Object.assign({}, descriptor)
185
+      };
186
+      if (kind !== "field") {
187
+        this.disallowProperty(elementObject, "initializer", "A method descriptor");
188
+      } else {
189
+        this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor");
190
+        this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor");
191
+        this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor");
192
+        element.initializer = elementObject.initializer;
193
+      }
194
+      return element;
195
+    },
196
+    toElementFinisherExtras: function toElementFinisherExtras(elementObject) {
197
+      var element = this.toElementDescriptor(elementObject);
198
+      var finisher = _optionalCallableProperty(elementObject, "finisher");
199
+      var extras = this.toElementDescriptors(elementObject.extras);
200
+      return {
201
+        element: element,
202
+        finisher: finisher,
203
+        extras: extras
204
+      };
205
+    },
206
+    fromClassDescriptor: function fromClassDescriptor(elements) {
207
+      var obj = {
208
+        kind: "class",
209
+        elements: elements.map(this.fromElementDescriptor, this)
210
+      };
211
+      var desc = {
212
+        value: "Descriptor",
213
+        configurable: true
214
+      };
215
+      Object.defineProperty(obj, Symbol.toStringTag, desc);
216
+      return obj;
217
+    },
218
+    toClassDescriptor: function toClassDescriptor(obj) {
219
+      var kind = String(obj.kind);
220
+      if (kind !== "class") {
221
+        throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"');
222
+      }
223
+      this.disallowProperty(obj, "key", "A class descriptor");
224
+      this.disallowProperty(obj, "placement", "A class descriptor");
225
+      this.disallowProperty(obj, "descriptor", "A class descriptor");
226
+      this.disallowProperty(obj, "initializer", "A class descriptor");
227
+      this.disallowProperty(obj, "extras", "A class descriptor");
228
+      var finisher = _optionalCallableProperty(obj, "finisher");
229
+      var elements = this.toElementDescriptors(obj.elements);
230
+      return {
231
+        elements: elements,
232
+        finisher: finisher
233
+      };
234
+    },
235
+    runClassFinishers: function runClassFinishers(constructor, finishers) {
236
+      for (var i = 0; i < finishers.length; i++) {
237
+        var newConstructor = (0, finishers[i])(constructor);
238
+        if (newConstructor !== undefined) {
239
+          if (typeof newConstructor !== "function") {
240
+            throw new TypeError("Finishers must return a constructor.");
241
+          }
242
+          constructor = newConstructor;
243
+        }
244
+      }
245
+      return constructor;
246
+    },
247
+    disallowProperty: function disallowProperty(obj, name, objectType) {
248
+      if (obj[name] !== undefined) {
249
+        throw new TypeError(objectType + " can't have a ." + name + " property.");
250
+      }
251
+    }
252
+  };
253
+  return api;
254
+}
255
+function _createElementDescriptor(def) {
256
+  var key = toPropertyKey(def.key);
257
+  var descriptor;
258
+  if (def.kind === "method") {
259
+    descriptor = {
260
+      value: def.value,
261
+      writable: true,
262
+      configurable: true,
263
+      enumerable: false
264
+    };
265
+  } else if (def.kind === "get") {
266
+    descriptor = {
267
+      get: def.value,
268
+      configurable: true,
269
+      enumerable: false
270
+    };
271
+  } else if (def.kind === "set") {
272
+    descriptor = {
273
+      set: def.value,
274
+      configurable: true,
275
+      enumerable: false
276
+    };
277
+  } else if (def.kind === "field") {
278
+    descriptor = {
279
+      configurable: true,
280
+      writable: true,
281
+      enumerable: true
282
+    };
283
+  }
284
+  var element = {
285
+    kind: def.kind === "field" ? "field" : "method",
286
+    key: key,
287
+    placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype",
288
+    descriptor: descriptor
289
+  };
290
+  if (def.decorators) element.decorators = def.decorators;
291
+  if (def.kind === "field") element.initializer = def.value;
292
+  return element;
293
+}
294
+function _coalesceGetterSetter(element, other) {
295
+  if (element.descriptor.get !== undefined) {
296
+    other.descriptor.get = element.descriptor.get;
297
+  } else {
298
+    other.descriptor.set = element.descriptor.set;
299
+  }
300
+}
301
+function _coalesceClassElements(elements) {
302
+  var newElements = [];
303
+  var isSameElement = function isSameElement(other) {
304
+    return other.kind === "method" && other.key === element.key && other.placement === element.placement;
305
+  };
306
+  for (var i = 0; i < elements.length; i++) {
307
+    var element = elements[i];
308
+    var other;
309
+    if (element.kind === "method" && (other = newElements.find(isSameElement))) {
310
+      if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
311
+        if (_hasDecorators(element) || _hasDecorators(other)) {
312
+          throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated.");
313
+        }
314
+        other.descriptor = element.descriptor;
315
+      } else {
316
+        if (_hasDecorators(element)) {
317
+          if (_hasDecorators(other)) {
318
+            throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ").");
319
+          }
320
+          other.decorators = element.decorators;
321
+        }
322
+        _coalesceGetterSetter(element, other);
323
+      }
324
+    } else {
325
+      newElements.push(element);
326
+    }
327
+  }
328
+  return newElements;
329
+}
330
+function _hasDecorators(element) {
331
+  return element.decorators && element.decorators.length;
332
+}
333
+function _isDataDescriptor(desc) {
334
+  return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
335
+}
336
+function _optionalCallableProperty(obj, name) {
337
+  var value = obj[name];
338
+  if (value !== undefined && typeof value !== "function") {
339
+    throw new TypeError("Expected '" + name + "' to be a function");
340
+  }
341
+  return value;
342
+}
343
+module.exports = _decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 12 - 0
app/node_modules/@babel/runtime/helpers/defaults.js

@@ -0,0 +1,12 @@
1
+function _defaults(obj, defaults) {
2
+  var keys = Object.getOwnPropertyNames(defaults);
3
+  for (var i = 0; i < keys.length; i++) {
4
+    var key = keys[i];
5
+    var value = Object.getOwnPropertyDescriptor(defaults, key);
6
+    if (value && value.configurable && obj[key] === undefined) {
7
+      Object.defineProperty(obj, key, value);
8
+    }
9
+  }
10
+  return obj;
11
+}
12
+module.exports = _defaults, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 8 - 0
app/node_modules/@babel/runtime/helpers/defineAccessor.js

@@ -0,0 +1,8 @@
1
+function _defineAccessor(e, r, n, t) {
2
+  var c = {
3
+    configurable: !0,
4
+    enumerable: !0
5
+  };
6
+  return c[e] = t, Object.defineProperty(r, n, c);
7
+}
8
+module.exports = _defineAccessor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 20 - 0
app/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js

@@ -0,0 +1,20 @@
1
+function _defineEnumerableProperties(obj, descs) {
2
+  for (var key in descs) {
3
+    var desc = descs[key];
4
+    desc.configurable = desc.enumerable = true;
5
+    if ("value" in desc) desc.writable = true;
6
+    Object.defineProperty(obj, key, desc);
7
+  }
8
+  if (Object.getOwnPropertySymbols) {
9
+    var objectSymbols = Object.getOwnPropertySymbols(descs);
10
+    for (var i = 0; i < objectSymbols.length; i++) {
11
+      var sym = objectSymbols[i];
12
+      var desc = descs[sym];
13
+      desc.configurable = desc.enumerable = true;
14
+      if ("value" in desc) desc.writable = true;
15
+      Object.defineProperty(obj, sym, desc);
16
+    }
17
+  }
18
+  return obj;
19
+}
20
+module.exports = _defineEnumerableProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 16 - 0
app/node_modules/@babel/runtime/helpers/defineProperty.js

@@ -0,0 +1,16 @@
1
+var toPropertyKey = require("./toPropertyKey.js");
2
+function _defineProperty(obj, key, value) {
3
+  key = toPropertyKey(key);
4
+  if (key in obj) {
5
+    Object.defineProperty(obj, key, {
6
+      value: value,
7
+      enumerable: true,
8
+      configurable: true,
9
+      writable: true
10
+    });
11
+  } else {
12
+    obj[key] = value;
13
+  }
14
+  return obj;
15
+}
16
+module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 0 - 0
app/node_modules/@babel/runtime/helpers/dispose.js


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor

tum/whitesports - Gogs: Simplico Git Service

Ei kuvausta

plugin.php 32KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955
  1. <?php
  2. /**
  3. * The plugin API is located in this file, which allows for creating actions
  4. * and filters and hooking functions, and methods. The functions or methods will
  5. * then be run when the action or filter is called.
  6. *
  7. * The API callback examples reference functions, but can be methods of classes.
  8. * To hook methods, you'll need to pass an array one of two ways.
  9. *
  10. * Any of the syntaxes explained in the PHP documentation for the
  11. * {@link https://www.php.net/manual/en/language.pseudo-types.php#language.types.callback 'callback'}
  12. * type are valid.
  13. *
  14. * Also see the {@link https://developer.wordpress.org/plugins/ Plugin API} for
  15. * more information and examples on how to use a lot of these functions.
  16. *
  17. * This file should have no external dependencies.
  18. *
  19. * @package WordPress
  20. * @subpackage Plugin
  21. * @since 1.5.0
  22. */
  23. // Initialize the filter globals.
  24. require __DIR__ . '/class-wp-hook.php';
  25. /** @var WP_Hook[] $wp_filter */
  26. global $wp_filter;
  27. /** @var int[] $wp_actions */
  28. global $wp_actions;
  29. /** @var string[] $wp_current_filter */
  30. global $wp_current_filter;
  31. if ( $wp_filter ) {
  32. $wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
  33. } else {
  34. $wp_filter = array();
  35. }
  36. if ( ! isset( $wp_actions ) ) {
  37. $wp_actions = array();
  38. }
  39. if ( ! isset( $wp_current_filter ) ) {
  40. $wp_current_filter = array();
  41. }
  42. /**
  43. * Adds a callback function to a filter hook.
  44. *
  45. * WordPress offers filter hooks to allow plugins to modify
  46. * various types of internal data at runtime.
  47. *
  48. * A plugin can modify data by binding a callback to a filter hook. When the filter
  49. * is later applied, each bound callback is run in order of priority, and given
  50. * the opportunity to modify a value by returning a new value.
  51. *
  52. * The following example shows how a callback function is bound to a filter hook.
  53. *
  54. * Note that `$example` is passed to the callback, (maybe) modified, then returned:
  55. *
  56. * function example_callback( $example ) {
  57. * // Maybe modify $example in some way.
  58. * return $example;
  59. * }
  60. * add_filter( 'example_filter', 'example_callback' );
  61. *
  62. * Bound callbacks can accept from none to the total number of arguments passed as parameters
  63. * in the corresponding apply_filters() call.
  64. *
  65. * In other words, if an apply_filters() call passes four total arguments, callbacks bound to
  66. * it can accept none (the same as 1) of the arguments or up to four. The important part is that
  67. * the `$accepted_args` value must reflect the number of arguments the bound callback *actually*
  68. * opted to accept. If no arguments were accepted by the callback that is considered to be the
  69. * same as accepting 1 argument. For example:
  70. *
  71. * // Filter call.
  72. * $value = apply_filters( 'hook', $value, $arg2, $arg3 );
  73. *
  74. * // Accepting zero/one arguments.
  75. * function example_callback() {
  76. * ...
  77. * return 'some value';
  78. * }
  79. * add_filter( 'hook', 'example_callback' ); // Where $priority is default 10, $accepted_args is default 1.
  80. *
  81. * // Accepting two arguments (three possible).
  82. * function example_callback( $value, $arg2 ) {
  83. * ...
  84. * return $maybe_modified_value;
  85. * }
  86. * add_filter( 'hook', 'example_callback', 10, 2 ); // Where $priority is 10, $accepted_args is 2.
  87. *
  88. * *Note:* The function will return true whether or not the callback is valid.
  89. * It is up to you to take care. This is done for optimization purposes, so
  90. * everything is as quick as possible.
  91. *
  92. * @since 0.71
  93. *
  94. * @global WP_Hook[] $wp_filter A multidimensional array of all hooks and the callbacks hooked to them.
  95. *
  96. * @param string $hook_name The name of the filter to add the callback to.
  97. * @param callable $callback The callback to be run when the filter is applied.
  98. * @param int $priority Optional. Used to specify the order in which the functions
  99. * associated with a particular filter are executed.
  100. * Lower numbers correspond with earlier execution,
  101. * and functions with the same priority are executed
  102. * in the order in which they were added to the filter. Default 10.
  103. * @param int $accepted_args Optional. The number of arguments the function accepts. Default 1.
  104. * @return true Always returns true.
  105. */
  106. function add_filter( $hook_name, $callback, $priority = 10, $accepted_args = 1 ) {
  107. global $wp_filter;
  108. if ( ! isset( $wp_filter[ $hook_name ] ) ) {
  109. $wp_filter[ $hook_name ] = new WP_Hook();
  110. }
  111. $wp_filter[ $hook_name ]->add_filter( $hook_name, $callback, $priority, $accepted_args );
  112. return true;
  113. }
  114. /**
  115. * Calls the callback functions that have been added to a filter hook.
  116. *
  117. * This function invokes all functions attached to filter hook `$hook_name`.
  118. * It is possible to create new filter hooks by simply calling this function,
  119. * specifying the name of the new hook using the `$hook_name` parameter.
  120. *
  121. * The function also allows for multiple additional arguments to be passed to hooks.
  122. *
  123. * Example usage:
  124. *
  125. * // The filter callback function.
  126. * function example_callback( $string, $arg1, $arg2 ) {
  127. * // (maybe) modify $string.
  128. * return $string;
  129. * }
  130. * add_filter( 'example_filter', 'example_callback', 10, 3 );
  131. *
  132. * /*
  133. * * Apply the filters by calling the 'example_callback()' function
  134. * * that's hooked onto `example_filter` above.
  135. * *
  136. * * - 'example_filter' is the filter hook.
  137. * * - 'filter me' is the value being filtered.
  138. * * - $arg1 and $arg2 are the additional arguments passed to the callback.
  139. * $value = apply_filters( 'example_filter', 'filter me', $arg1, $arg2 );
  140. *
  141. * @since 0.71
  142. *
  143. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  144. * @global string[] $wp_current_filter Stores the list of current filters with the current one last.
  145. *
  146. * @param string $hook_name The name of the filter hook.
  147. * @param mixed $value The value to filter.
  148. * @param mixed ...$args Additional parameters to pass to the callback functions.
  149. * @return mixed The filtered value after all hooked functions are applied to it.
  150. */
  151. function apply_filters( $hook_name, $value ) {
  152. global $wp_filter, $wp_current_filter;
  153. $args = func_get_args();
  154. // Do 'all' actions first.
  155. if ( isset( $wp_filter['all'] ) ) {
  156. $wp_current_filter[] = $hook_name;
  157. _wp_call_all_hook( $args );
  158. }
  159. if ( ! isset( $wp_filter[ $hook_name ] ) ) {
  160. if ( isset( $wp_filter['all'] ) ) {
  161. array_pop( $wp_current_filter );
  162. }
  163. return $value;
  164. }
  165. if ( ! isset( $wp_filter['all'] ) ) {
  166. $wp_current_filter[] = $hook_name;
  167. }
  168. // Don't pass the tag name to WP_Hook.
  169. array_shift( $args );
  170. $filtered = $wp_filter[ $hook_name ]->apply_filters( $value, $args );
  171. array_pop( $wp_current_filter );
  172. return $filtered;
  173. }
  174. /**
  175. * Calls the callback functions that have been added to a filter hook, specifying arguments in an array.
  176. *
  177. * @since 3.0.0
  178. *
  179. * @see apply_filters() This function is identical, but the arguments passed to the
  180. * functions hooked to `$hook_name` are supplied using an array.
  181. *
  182. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  183. * @global string[] $wp_current_filter Stores the list of current filters with the current one last.
  184. *
  185. * @param string $hook_name The name of the filter hook.
  186. * @param array $args The arguments supplied to the functions hooked to `$hook_name`.
  187. * @return mixed The filtered value after all hooked functions are applied to it.
  188. */
  189. function apply_filters_ref_array( $hook_name, $args ) {
  190. global $wp_filter, $wp_current_filter;
  191. // Do 'all' actions first.
  192. if ( isset( $wp_filter['all'] ) ) {
  193. $wp_current_filter[] = $hook_name;
  194. $all_args = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
  195. _wp_call_all_hook( $all_args );
  196. }
  197. if ( ! isset( $wp_filter[ $hook_name ] ) ) {
  198. if ( isset( $wp_filter['all'] ) ) {
  199. array_pop( $wp_current_filter );
  200. }
  201. return $args[0];
  202. }
  203. if ( ! isset( $wp_filter['all'] ) ) {
  204. $wp_current_filter[] = $hook_name;
  205. }
  206. $filtered = $wp_filter[ $hook_name ]->apply_filters( $args[0], $args );
  207. array_pop( $wp_current_filter );
  208. return $filtered;
  209. }
  210. /**
  211. * Checks if any filter has been registered for a hook.
  212. *
  213. * When using the `$callback` argument, this function may return a non-boolean value
  214. * that evaluates to false (e.g. 0), so use the `===` operator for testing the return value.
  215. *
  216. * @since 2.5.0
  217. *
  218. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  219. *
  220. * @param string $hook_name The name of the filter hook.
  221. * @param callable|false $callback Optional. The callback to check for. Default false.
  222. * @return bool|int If `$callback` is omitted, returns boolean for whether the hook has
  223. * anything registered. When checking a specific function, the priority
  224. * of that hook is returned, or false if the function is not attached.
  225. */
  226. function has_filter( $hook_name, $callback = false ) {
  227. global $wp_filter;
  228. if ( ! isset( $wp_filter[ $hook_name ] ) ) {
  229. return false;
  230. }
  231. return $wp_filter[ $hook_name ]->has_filter( $hook_name, $callback );
  232. }
  233. /**
  234. * Removes a callback function from a filter hook.
  235. *
  236. * This can be used to remove default functions attached to a specific filter
  237. * hook and possibly replace them with a substitute.
  238. *
  239. * To remove a hook, the `$callback` and `$priority` arguments must match
  240. * when the hook was added. This goes for both filters and actions. No warning
  241. * will be given on removal failure.
  242. *
  243. * @since 1.2.0
  244. *
  245. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  246. *
  247. * @param string $hook_name The filter hook to which the function to be removed is hooked.
  248. * @param callable $callback The name of the function which should be removed.
  249. * @param int $priority Optional. The exact priority used when adding the original
  250. * filter callback. Default 10.
  251. * @return bool Whether the function existed before it was removed.
  252. */
  253. function remove_filter( $hook_name, $callback, $priority = 10 ) {
  254. global $wp_filter;
  255. $r = false;
  256. if ( isset( $wp_filter[ $hook_name ] ) ) {
  257. $r = $wp_filter[ $hook_name ]->remove_filter( $hook_name, $callback, $priority );
  258. if ( ! $wp_filter[ $hook_name ]->callbacks ) {
  259. unset( $wp_filter[ $hook_name ] );
  260. }
  261. }
  262. return $r;
  263. }
  264. /**
  265. * Removes all of the callback functions from a filter hook.
  266. *
  267. * @since 2.7.0
  268. *
  269. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  270. *
  271. * @param string $hook_name The filter to remove callbacks from.
  272. * @param int|false $priority Optional. The priority number to remove them from.
  273. * Default false.
  274. * @return true Always returns true.
  275. */
  276. function remove_all_filters( $hook_name, $priority = false ) {
  277. global $wp_filter;
  278. if ( isset( $wp_filter[ $hook_name ] ) ) {
  279. $wp_filter[ $hook_name ]->remove_all_filters( $priority );
  280. if ( ! $wp_filter[ $hook_name ]->has_filters() ) {
  281. unset( $wp_filter[ $hook_name ] );
  282. }
  283. }
  284. return true;
  285. }
  286. /**
  287. * Retrieves the name of the current filter hook.
  288. *
  289. * @since 2.5.0
  290. *
  291. * @global string[] $wp_current_filter Stores the list of current filters with the current one last
  292. *
  293. * @return string Hook name of the current filter.
  294. */
  295. function current_filter() {
  296. global $wp_current_filter;
  297. return end( $wp_current_filter );
  298. }
  299. /**
  300. * Returns whether or not a filter hook is currently being processed.
  301. *
  302. * The function current_filter() only returns the most recent filter or action
  303. * being executed. did_action() returns true once the action is initially
  304. * processed.
  305. *
  306. * This function allows detection for any filter currently being executed
  307. * (regardless of whether it's the most recent filter to fire, in the case of
  308. * hooks called from hook callbacks) to be verified.
  309. *
  310. * @since 3.9.0
  311. *
  312. * @see current_filter()
  313. * @see did_action()
  314. * @global string[] $wp_current_filter Current filter.
  315. *
  316. * @param null|string $hook_name Optional. Filter hook to check. Defaults to null,
  317. * which checks if any filter is currently being run.
  318. * @return bool Whether the filter is currently in the stack.
  319. */
  320. function doing_filter( $hook_name = null ) {
  321. global $wp_current_filter;
  322. if ( null === $hook_name ) {
  323. return ! empty( $wp_current_filter );
  324. }
  325. return in_array( $hook_name, $wp_current_filter, true );
  326. }
  327. /**
  328. * Adds a callback function to an action hook.
  329. *
  330. * Actions are the hooks that the WordPress core launches at specific points
  331. * during execution, or when specific events occur. Plugins can specify that
  332. * one or more of its PHP functions are executed at these points, using the
  333. * Action API.
  334. *
  335. * @since 1.2.0
  336. *
  337. * @param string $hook_name The name of the action to add the callback to.
  338. * @param callable $callback The callback to be run when the action is called.
  339. * @param int $priority Optional. Used to specify the order in which the functions
  340. * associated with a particular action are executed.
  341. * Lower numbers correspond with earlier execution,
  342. * and functions with the same priority are executed
  343. * in the order in which they were added to the action. Default 10.
  344. * @param int $accepted_args Optional. The number of arguments the function accepts. Default 1.
  345. * @return true Always returns true.
  346. */
  347. function add_action( $hook_name, $callback, $priority = 10, $accepted_args = 1 ) {
  348. return add_filter( $hook_name, $callback, $priority, $accepted_args );
  349. }
  350. /**
  351. * Calls the callback functions that have been added to an action hook.
  352. *
  353. * This function invokes all functions attached to action hook `$hook_name`.
  354. * It is possible to create new action hooks by simply calling this function,
  355. * specifying the name of the new hook using the `$hook_name` parameter.
  356. *
  357. * You can pass extra arguments to the hooks, much like you can with `apply_filters()`.
  358. *
  359. * Example usage:
  360. *
  361. * // The action callback function.
  362. * function example_callback( $arg1, $arg2 ) {
  363. * // (maybe) do something with the args.
  364. * }
  365. * add_action( 'example_action', 'example_callback', 10, 2 );
  366. *
  367. * /*
  368. * * Trigger the actions by calling the 'example_callback()' function
  369. * * that's hooked onto `example_action` above.
  370. * *
  371. * * - 'example_action' is the action hook.
  372. * * - $arg1 and $arg2 are the additional arguments passed to the callback.
  373. * $value = do_action( 'example_action', $arg1, $arg2 );
  374. *
  375. * @since 1.2.0
  376. * @since 5.3.0 Formalized the existing and already documented `...$arg` parameter
  377. * by adding it to the function signature.
  378. *
  379. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  380. * @global int[] $wp_actions Stores the number of times each action was triggered.
  381. * @global string[] $wp_current_filter Stores the list of current filters with the current one last.
  382. *
  383. * @param string $hook_name The name of the action to be executed.
  384. * @param mixed ...$arg Optional. Additional arguments which are passed on to the
  385. * functions hooked to the action. Default empty.
  386. */
  387. function do_action( $hook_name, ...$arg ) {
  388. global $wp_filter, $wp_actions, $wp_current_filter;
  389. if ( ! isset( $wp_actions[ $hook_name ] ) ) {
  390. $wp_actions[ $hook_name ] = 1;
  391. } else {
  392. ++$wp_actions[ $hook_name ];
  393. }
  394. // Do 'all' actions first.
  395. if ( isset( $wp_filter['all'] ) ) {
  396. $wp_current_filter[] = $hook_name;
  397. $all_args = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
  398. _wp_call_all_hook( $all_args );
  399. }
  400. if ( ! isset( $wp_filter[ $hook_name ] ) ) {
  401. if ( isset( $wp_filter['all'] ) ) {
  402. array_pop( $wp_current_filter );
  403. }
  404. return;
  405. }
  406. if ( ! isset( $wp_filter['all'] ) ) {
  407. $wp_current_filter[] = $hook_name;
  408. }
  409. if ( empty( $arg ) ) {
  410. $arg[] = '';
  411. } elseif ( is_array( $arg[0] ) && 1 === count( $arg[0] ) && isset( $arg[0][0] ) && is_object( $arg[0][0] ) ) {
  412. // Backward compatibility for PHP4-style passing of `array( &$this )` as action `$arg`.
  413. $arg[0] = $arg[0][0];
  414. }
  415. $wp_filter[ $hook_name ]->do_action( $arg );
  416. array_pop( $wp_current_filter );
  417. }
  418. /**
  419. * Calls the callback functions that have been added to an action hook, specifying arguments in an array.
  420. *
  421. * @since 2.1.0
  422. *
  423. * @see do_action() This function is identical, but the arguments passed to the
  424. * functions hooked to `$hook_name` are supplied using an array.
  425. *
  426. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  427. * @global int[] $wp_actions Stores the number of times each action was triggered.
  428. * @global string[] $wp_current_filter Stores the list of current filters with the current one last.
  429. *
  430. * @param string $hook_name The name of the action to be executed.
  431. * @param array $args The arguments supplied to the functions hooked to `$hook_name`.
  432. */
  433. function do_action_ref_array( $hook_name, $args ) {
  434. global $wp_filter, $wp_actions, $wp_current_filter;
  435. if ( ! isset( $wp_actions[ $hook_name ] ) ) {
  436. $wp_actions[ $hook_name ] = 1;
  437. } else {
  438. ++$wp_actions[ $hook_name ];
  439. }
  440. // Do 'all' actions first.
  441. if ( isset( $wp_filter['all'] ) ) {
  442. $wp_current_filter[] = $hook_name;
  443. $all_args = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
  444. _wp_call_all_hook( $all_args );
  445. }
  446. if ( ! isset( $wp_filter[ $hook_name ] ) ) {
  447. if ( isset( $wp_filter['all'] ) ) {
  448. array_pop( $wp_current_filter );
  449. }
  450. return;
  451. }
  452. if ( ! isset( $wp_filter['all'] ) ) {
  453. $wp_current_filter[] = $hook_name;
  454. }
  455. $wp_filter[ $hook_name ]->do_action( $args );
  456. array_pop( $wp_current_filter );
  457. }
  458. /**
  459. * Checks if any action has been registered for a hook.
  460. *
  461. * When using the `$callback` argument, this function may return a non-boolean value
  462. * that evaluates to false (e.g. 0), so use the `===` operator for testing the return value.
  463. *
  464. * @since 2.5.0
  465. *
  466. * @see has_filter() has_action() is an alias of has_filter().
  467. *
  468. * @param string $hook_name The name of the action hook.
  469. * @param callable|false $callback Optional. The callback to check for. Default false.
  470. * @return bool|int If `$callback` is omitted, returns boolean for whether the hook has
  471. * anything registered. When checking a specific function, the priority
  472. * of that hook is returned, or false if the function is not attached.
  473. */
  474. function has_action( $hook_name, $callback = false ) {
  475. return has_filter( $hook_name, $callback );
  476. }
  477. /**
  478. * Removes a callback function from an action hook.
  479. *
  480. * This can be used to remove default functions attached to a specific action
  481. * hook and possibly replace them with a substitute.
  482. *
  483. * To remove a hook, the `$callback` and `$priority` arguments must match
  484. * when the hook was added. This goes for both filters and actions. No warning
  485. * will be given on removal failure.
  486. *
  487. * @since 1.2.0
  488. *
  489. * @param string $hook_name The action hook to which the function to be removed is hooked.
  490. * @param callable $callback The name of the function which should be removed.
  491. * @param int $priority Optional. The exact priority used when adding the original
  492. * action callback. Default 10.
  493. * @return bool Whether the function is removed.
  494. */
  495. function remove_action( $hook_name, $callback, $priority = 10 ) {
  496. return remove_filter( $hook_name, $callback, $priority );
  497. }
  498. /**
  499. * Removes all of the callback functions from an action hook.
  500. *
  501. * @since 2.7.0
  502. *
  503. * @param string $hook_name The action to remove callbacks from.
  504. * @param int|false $priority Optional. The priority number to remove them from.
  505. * Default false.
  506. * @return true Always returns true.
  507. */
  508. function remove_all_actions( $hook_name, $priority = false ) {
  509. return remove_all_filters( $hook_name, $priority );
  510. }
  511. /**
  512. * Retrieves the name of the current action hook.
  513. *
  514. * @since 3.9.0
  515. *
  516. * @return string Hook name of the current action.
  517. */
  518. function current_action() {
  519. return current_filter();
  520. }
  521. /**
  522. * Returns whether or not an action hook is currently being processed.
  523. *
  524. * @since 3.9.0
  525. *
  526. * @param string|null $hook_name Optional. Action hook to check. Defaults to null,
  527. * which checks if any action is currently being run.
  528. * @return bool Whether the action is currently in the stack.
  529. */
  530. function doing_action( $hook_name = null ) {
  531. return doing_filter( $hook_name );
  532. }
  533. /**
  534. * Retrieves the number of times an action has been fired during the current request.
  535. *
  536. * @since 2.1.0
  537. *
  538. * @global int[] $wp_actions Stores the number of times each action was triggered.
  539. *
  540. * @param string $hook_name The name of the action hook.
  541. * @return int The number of times the action hook has been fired.
  542. */
  543. function did_action( $hook_name ) {
  544. global $wp_actions;
  545. if ( ! isset( $wp_actions[ $hook_name ] ) ) {
  546. return 0;
  547. }
  548. return $wp_actions[ $hook_name ];
  549. }
  550. /**
  551. * Fires functions attached to a deprecated filter hook.
  552. *
  553. * When a filter hook is deprecated, the apply_filters() call is replaced with
  554. * apply_filters_deprecated(), which triggers a deprecation notice and then fires
  555. * the original filter hook.
  556. *
  557. * Note: the value and extra arguments passed to the original apply_filters() call
  558. * must be passed here to `$args` as an array. For example:
  559. *
  560. * // Old filter.
  561. * return apply_filters( 'wpdocs_filter', $value, $extra_arg );
  562. *
  563. * // Deprecated.
  564. * return apply_filters_deprecated( 'wpdocs_filter', array( $value, $extra_arg ), '4.9.0', 'wpdocs_new_filter' );
  565. *
  566. * @since 4.6.0
  567. *
  568. * @see _deprecated_hook()
  569. *
  570. * @param string $hook_name The name of the filter hook.
  571. * @param array $args Array of additional function arguments to be passed to apply_filters().
  572. * @param string $version The version of WordPress that deprecated the hook.
  573. * @param string $replacement Optional. The hook that should have been used. Default empty.
  574. * @param string $message Optional. A message regarding the change. Default empty.
  575. */
  576. function apply_filters_deprecated( $hook_name, $args, $version, $replacement = '', $message = '' ) {
  577. if ( ! has_filter( $hook_name ) ) {
  578. return $args[0];
  579. }
  580. _deprecated_hook( $hook_name, $version, $replacement, $message );
  581. return apply_filters_ref_array( $hook_name, $args );
  582. }
  583. /**
  584. * Fires functions attached to a deprecated action hook.
  585. *
  586. * When an action hook is deprecated, the do_action() call is replaced with
  587. * do_action_deprecated(), which triggers a deprecation notice and then fires
  588. * the original hook.
  589. *
  590. * @since 4.6.0
  591. *
  592. * @see _deprecated_hook()
  593. *
  594. * @param string $hook_name The name of the action hook.
  595. * @param array $args Array of additional function arguments to be passed to do_action().
  596. * @param string $version The version of WordPress that deprecated the hook.
  597. * @param string $replacement Optional. The hook that should have been used. Default empty.
  598. * @param string $message Optional. A message regarding the change. Default empty.
  599. */
  600. function do_action_deprecated( $hook_name, $args, $version, $replacement = '', $message = '' ) {
  601. if ( ! has_action( $hook_name ) ) {
  602. return;
  603. }
  604. _deprecated_hook( $hook_name, $version, $replacement, $message );
  605. do_action_ref_array( $hook_name, $args );
  606. }
  607. //
  608. // Functions for handling plugins.
  609. //
  610. /**
  611. * Gets the basename of a plugin.
  612. *
  613. * This method extracts the name of a plugin from its filename.
  614. *
  615. * @since 1.5.0
  616. *
  617. * @global array $wp_plugin_paths
  618. *
  619. * @param string $file The filename of plugin.
  620. * @return string The name of a plugin.
  621. */
  622. function plugin_basename( $file ) {
  623. global $wp_plugin_paths;
  624. // $wp_plugin_paths contains normalized paths.
  625. $file = wp_normalize_path( $file );
  626. arsort( $wp_plugin_paths );
  627. foreach ( $wp_plugin_paths as $dir => $realdir ) {
  628. if ( strpos( $file, $realdir ) === 0 ) {
  629. $file = $dir . substr( $file, strlen( $realdir ) );
  630. }
  631. }
  632. $plugin_dir = wp_normalize_path( WP_PLUGIN_DIR );
  633. $mu_plugin_dir = wp_normalize_path( WPMU_PLUGIN_DIR );
  634. // Get relative path from plugins directory.
  635. $file = preg_replace( '#^' . preg_quote( $plugin_dir, '#' ) . '/|^' . preg_quote( $mu_plugin_dir, '#' ) . '/#', '', $file );
  636. $file = trim( $file, '/' );
  637. return $file;
  638. }
  639. /**
  640. * Register a plugin's real path.
  641. *
  642. * This is used in plugin_basename() to resolve symlinked paths.
  643. *
  644. * @since 3.9.0
  645. *
  646. * @see wp_normalize_path()
  647. *
  648. * @global array $wp_plugin_paths
  649. *
  650. * @param string $file Known path to the file.
  651. * @return bool Whether the path was able to be registered.
  652. */
  653. function wp_register_plugin_realpath( $file ) {
  654. global $wp_plugin_paths;
  655. // Normalize, but store as static to avoid recalculation of a constant value.
  656. static $wp_plugin_path = null, $wpmu_plugin_path = null;
  657. if ( ! isset( $wp_plugin_path ) ) {
  658. $wp_plugin_path = wp_normalize_path( WP_PLUGIN_DIR );
  659. $wpmu_plugin_path = wp_normalize_path( WPMU_PLUGIN_DIR );
  660. }
  661. $plugin_path = wp_normalize_path( dirname( $file ) );
  662. $plugin_realpath = wp_normalize_path( dirname( realpath( $file ) ) );
  663. if ( $plugin_path === $wp_plugin_path || $plugin_path === $wpmu_plugin_path ) {
  664. return false;
  665. }
  666. if ( $plugin_path !== $plugin_realpath ) {
  667. $wp_plugin_paths[ $plugin_path ] = $plugin_realpath;
  668. }
  669. return true;
  670. }
  671. /**
  672. * Get the filesystem directory path (with trailing slash) for the plugin __FILE__ passed in.
  673. *
  674. * @since 2.8.0
  675. *
  676. * @param string $file The filename of the plugin (__FILE__).
  677. * @return string the filesystem path of the directory that contains the plugin.
  678. */
  679. function plugin_dir_path( $file ) {
  680. return trailingslashit( dirname( $file ) );
  681. }
  682. /**
  683. * Get the URL directory path (with trailing slash) for the plugin __FILE__ passed in.
  684. *
  685. * @since 2.8.0
  686. *
  687. * @param string $file The filename of the plugin (__FILE__).
  688. * @return string the URL path of the directory that contains the plugin.
  689. */
  690. function plugin_dir_url( $file ) {
  691. return trailingslashit( plugins_url( '', $file ) );
  692. }
  693. /**
  694. * Set the activation hook for a plugin.
  695. *
  696. * When a plugin is activated, the action 'activate_PLUGINNAME' hook is
  697. * called. In the name of this hook, PLUGINNAME is replaced with the name
  698. * of the plugin, including the optional subdirectory. For example, when the
  699. * plugin is located in wp-content/plugins/sampleplugin/sample.php, then
  700. * the name of this hook will become 'activate_sampleplugin/sample.php'.
  701. *
  702. * When the plugin consists of only one file and is (as by default) located at
  703. * wp-content/plugins/sample.php the name of this hook will be
  704. * 'activate_sample.php'.
  705. *
  706. * @since 2.0.0
  707. *
  708. * @param string $file The filename of the plugin including the path.
  709. * @param callable $callback The function hooked to the 'activate_PLUGIN' action.
  710. */
  711. function register_activation_hook( $file, $callback ) {
  712. $file = plugin_basename( $file );
  713. add_action( 'activate_' . $file, $callback );
  714. }
  715. /**
  716. * Sets the deactivation hook for a plugin.
  717. *
  718. * When a plugin is deactivated, the action 'deactivate_PLUGINNAME' hook is
  719. * called. In the name of this hook, PLUGINNAME is replaced with the name
  720. * of the plugin, including the optional subdirectory. For example, when the
  721. * plugin is located in wp-content/plugins/sampleplugin/sample.php, then
  722. * the name of this hook will become 'deactivate_sampleplugin/sample.php'.
  723. *
  724. * When the plugin consists of only one file and is (as by default) located at
  725. * wp-content/plugins/sample.php the name of this hook will be
  726. * 'deactivate_sample.php'.
  727. *
  728. * @since 2.0.0
  729. *
  730. * @param string $file The filename of the plugin including the path.
  731. * @param callable $callback The function hooked to the 'deactivate_PLUGIN' action.
  732. */
  733. function register_deactivation_hook( $file, $callback ) {
  734. $file = plugin_basename( $file );
  735. add_action( 'deactivate_' . $file, $callback );
  736. }
  737. /**
  738. * Sets the uninstallation hook for a plugin.
  739. *
  740. * Registers the uninstall hook that will be called when the user clicks on the
  741. * uninstall link that calls for the plugin to uninstall itself. The link won't
  742. * be active unless the plugin hooks into the action.
  743. *
  744. * The plugin should not run arbitrary code outside of functions, when
  745. * registering the uninstall hook. In order to run using the hook, the plugin
  746. * will have to be included, which means that any code laying outside of a
  747. * function will be run during the uninstallation process. The plugin should not
  748. * hinder the uninstallation process.
  749. *
  750. * If the plugin can not be written without running code within the plugin, then
  751. * the plugin should create a file named 'uninstall.php' in the base plugin
  752. * folder. This file will be called, if it exists, during the uninstallation process
  753. * bypassing the uninstall hook. The plugin, when using the 'uninstall.php'
  754. * should always check for the 'WP_UNINSTALL_PLUGIN' constant, before
  755. * executing.
  756. *
  757. * @since 2.7.0
  758. *
  759. * @param string $file Plugin file.
  760. * @param callable $callback The callback to run when the hook is called. Must be
  761. * a static method or function.
  762. */
  763. function register_uninstall_hook( $file, $callback ) {
  764. if ( is_array( $callback ) && is_object( $callback[0] ) ) {
  765. _doing_it_wrong( __FUNCTION__, __( 'Only a static class method or function can be used in an uninstall hook.' ), '3.1.0' );
  766. return;
  767. }
  768. /*
  769. * The option should not be autoloaded, because it is not needed in most
  770. * cases. Emphasis should be put on using the 'uninstall.php' way of
  771. * uninstalling the plugin.
  772. */
  773. $uninstallable_plugins = (array) get_option( 'uninstall_plugins' );
  774. $plugin_basename = plugin_basename( $file );
  775. if ( ! isset( $uninstallable_plugins[ $plugin_basename ] ) || $uninstallable_plugins[ $plugin_basename ] !== $callback ) {
  776. $uninstallable_plugins[ $plugin_basename ] = $callback;
  777. update_option( 'uninstall_plugins', $uninstallable_plugins );
  778. }
  779. }
  780. /**
  781. * Calls the 'all' hook, which will process the functions hooked into it.
  782. *
  783. * The 'all' hook passes all of the arguments or parameters that were used for
  784. * the hook, which this function was called for.
  785. *
  786. * This function is used internally for apply_filters(), do_action(), and
  787. * do_action_ref_array() and is not meant to be used from outside those
  788. * functions. This function does not check for the existence of the all hook, so
  789. * it will fail unless the all hook exists prior to this function call.
  790. *
  791. * @since 2.5.0
  792. * @access private
  793. *
  794. * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
  795. *
  796. * @param array $args The collected parameters from the hook that was called.
  797. */
  798. function _wp_call_all_hook( $args ) {
  799. global $wp_filter;
  800. $wp_filter['all']->do_all_hook( $args );
  801. }
  802. /**
  803. * Builds Unique ID for storage and retrieval.
  804. *
  805. * The old way to serialize the callback caused issues and this function is the
  806. * solution. It works by checking for objects and creating a new property in
  807. * the class to keep track of the object and new objects of the same class that
  808. * need to be added.
  809. *
  810. * It also allows for the removal of actions and filters for objects after they
  811. * change class properties. It is possible to include the property $wp_filter_id
  812. * in your class and set it to "null" or a number to bypass the workaround.
  813. * However this will prevent you from adding new classes and any new classes
  814. * will overwrite the previous hook by the same class.
  815. *
  816. * Functions and static method callbacks are just returned as strings and
  817. * shouldn't have any speed penalty.
  818. *
  819. * @link https://core.trac.wordpress.org/ticket/3875
  820. *
  821. * @since 2.2.3
  822. * @since 5.3.0 Removed workarounds for spl_object_hash().
  823. * `$hook_name` and `$priority` are no longer used,
  824. * and the function always returns a string.
  825. * @access private
  826. *
  827. * @param string $hook_name Unused. The name of the filter to build ID for.
  828. * @param callable $callback The function to generate ID for.
  829. * @param int $priority Unused. The order in which the functions
  830. * associated with a particular action are executed.
  831. * @return string Unique function ID for usage as array key.
  832. */
  833. function _wp_filter_build_unique_id( $hook_name, $callback, $priority ) {
  834. if ( is_string( $callback ) ) {
  835. return $callback;
  836. }
  837. if ( is_object( $callback ) ) {
  838. // Closures are currently implemented as objects.
  839. $callback = array( $callback, '' );
  840. } else {
  841. $callback = (array) $callback;
  842. }
  843. if ( is_object( $callback[0] ) ) {
  844. // Object class calling.
  845. return spl_object_hash( $callback[0] ) . $callback[1];
  846. } elseif ( is_string( $callback[0] ) ) {
  847. // Static calling.
  848. return $callback[0] . '::' . $callback[1];
  849. }
  850. }