diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml
index 732fb75..45aa628 100644
--- a/.gitea/workflows/build.yaml
+++ b/.gitea/workflows/build.yaml
@@ -13,7 +13,7 @@ jobs:
uses: actions/checkout@v3
- run: echo "The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "The workflow is now ready to test your code on the runner."
- - name: List files in the repository
+ - name: List files in the repository:
run: |
ls ${{ github.workspace }}
- run: echo "This job's status is ${{ job.status }}."
diff --git a/Dockerfile b/Dockerfile
index 9f88544..a5d1263 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,63 +1,57 @@
################## First Stage - Creating base #########################
# Created a variable to hold our node base image
-ARG NODE_IMAGE=node:22-trixie-slim
+ARG NODE_IMAGE=node:22-bookworm-slim
FROM $NODE_IMAGE AS base
-
# Install dumb-init and ClamAV, and perform ClamAV database update
-RUN apt-get update \
- && apt-get install -y --no-install-recommends \
- dumb-init \
- clamav \
- clamav-daemon \
- clamdscan \
- ca-certificates \
+RUN apt update \
+ && apt-get install -y dumb-init clamav clamav-daemon nano \
&& rm -rf /var/lib/apt/lists/* \
# Creating folders and changing ownerships
- && mkdir -p /home/node/app \
- && mkdir -p /var/lib/clamav \
+ && mkdir -p /home/node/app && chown node:node /home/node/app \
+ && mkdir -p /var/lib/clamav \
&& mkdir /usr/local/share/clamav \
+ && chown -R node:clamav /var/lib/clamav /usr/local/share/clamav /etc/clamav \
+ # permissions
&& mkdir /var/run/clamav \
- && mkdir -p /var/log/clamav \
- && mkdir -p /tmp/clamav-logs \
-
- # Set ownership and permissions
- && chown node:node /home/node/app \
- # && chown -R node:clamav /var/lib/clamav /usr/local/share/clamav /etc/clamav /var/run/clamav \
- && chown -R node:clamav /var/lib/clamav /usr/local/share/clamav /etc/clamav /var/run/clamav /var/log/clamav \
- && chown -R node:clamav /etc/clamav \
- && chmod 755 /tmp/clamav-logs \
- && chmod 750 /var/run/clamav \
- && chmod 755 /var/lib/clamav \
- && chmod 755 /var/log/clamav \
- # Add node user to clamav group and allow sudo for clamav commands
- && usermod -a -G clamav node
- # && chmod 666 /var/run/clamav/clamd.socket
- # Make directories group-writable so node (as member of clamav group) can access them
- # && chmod 750 /var/run/clamav /var/lib/clamav /var/log/clamav /tmp/clamav-logs
+ && chown node:clamav /var/run/clamav \
+ && chmod 750 /var/run/clamav
+# -----------------------------------------------
+# --- ClamAV & FeshClam -------------------------
+# -----------------------------------------------
+# RUN \
+# chmod 644 /etc/clamav/freshclam.conf && \
+# freshclam && \
+# mkdir /var/run/clamav && \
+ # chown -R clamav:root /var/run/clamav
+# # initial update of av databases
+# RUN freshclam
-# Configure ClamAV - copy config files before switching user
-# COPY --chown=node:clamav ./*.conf /etc/clamav/
+# Configure Clam AV...
COPY --chown=node:clamav ./*.conf /etc/clamav/
-
-
+# # permissions
+# RUN mkdir /var/run/clamav && \
+# chown node:clamav /var/run/clamav && \
+# chmod 750 /var/run/clamav
# Setting the working directory
WORKDIR /home/node/app
# Changing the current active user to "node"
-
-# Download initial ClamAV database as root before switching users
USER node
-RUN freshclam --quiet || echo "Initial database download failed - will retry at runtime"
-# Copy entrypoint script
+# initial update of av databases
+RUN freshclam
+
+# VOLUME /var/lib/clamav
COPY --chown=node:clamav docker-entrypoint.sh /home/node/app/docker-entrypoint.sh
RUN chmod +x /home/node/app/docker-entrypoint.sh
ENV TZ="Europe/Vienna"
+
+
################## Second Stage - Installing dependencies ##########
# In this stage, we will start installing dependencies
FROM base AS dependencies
@@ -76,6 +70,7 @@ ENV NODE_ENV=production
# We run "node ace build" to build the app (dist folder) for production
RUN node ace build --ignore-ts-errors
# RUN node ace build --production
+# RUN node ace build --ignore-ts-errors
################## Final Stage - Production #########################
@@ -93,7 +88,6 @@ RUN npm ci --omit=dev
# Copy files to the working directory from the build folder the user
COPY --chown=node:node --from=build /home/node/app/build .
# Expose port
-# EXPOSE 3310
EXPOSE 3333
ENTRYPOINT ["/home/node/app/docker-entrypoint.sh"]
# Run the command to start the server using "dumb-init"
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 23bb390..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-
-MIT License
-
-Copyright (c) 2025 Tethys Research Repository
-
-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:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-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
\ No newline at end of file
diff --git a/adonisrc.ts b/adonisrc.ts
index 824d4c8..19e946c 100644
--- a/adonisrc.ts
+++ b/adonisrc.ts
@@ -11,10 +11,9 @@ export default defineConfig({
*/
commands: [
- () => import('@adonisjs/core/commands'),
- () => import('@adonisjs/lucid/commands'),
- () => import('@adonisjs/mail/commands')
- ],
+ () => import('@adonisjs/core/commands'),
+ () => import('@adonisjs/lucid/commands'),
+ () => import('@adonisjs/mail/commands')],
/*
|--------------------------------------------------------------------------
| Preloads
@@ -27,17 +26,16 @@ export default defineConfig({
() => import('./start/routes.js'),
() => import('./start/kernel.js'),
() => import('#start/validator'),
- // () => import('#start/rules/unique'),
- // () => import('#start/rules/translated_language'),
- // () => import('#start/rules/unique_person'),
- // // () => import('#start/rules/file_length'),
- // // () => import('#start/rules/file_scan'),
- // // () => import('#start/rules/allowed_extensions_mimetypes'),
- // () => import('#start/rules/dependent_array_min_length'),
- // () => import('#start/rules/referenceValidation'),
- // () => import('#start/rules/valid_mimetype'),
- // () => import('#start/rules/array_contains_types'),
- // () => import('#start/rules/orcid'),
+ () => import('#start/rules/unique'),
+ () => import('#start/rules/translated_language'),
+ () => import('#start/rules/unique_person'),
+ () => import('#start/rules/file_length'),
+ () => import('#start/rules/file_scan'),
+ () => import('#start/rules/allowed_extensions_mimetypes'),
+ () => import('#start/rules/dependent_array_min_length'),
+ () => import('#start/rules/referenceValidation'),
+ () => import('#start/rules/valid_mimetype'),
+ () => import('#start/rules/array_contains_types'),
],
/*
|--------------------------------------------------------------------------
@@ -72,7 +70,7 @@ export default defineConfig({
() => import('#providers/stardust_provider'),
() => import('#providers/query_builder_provider'),
() => import('#providers/token_worker_provider'),
- () => import('#providers/rule_provider'),
+ // () => import('#providers/validator_provider'),
// () => import('#providers/drive/provider/drive_provider'),
() => import('@adonisjs/drive/drive_provider'),
// () => import('@adonisjs/core/providers/vinejs_provider'),
diff --git a/app/Controllers/Http/Admin/MimetypeController.ts b/app/Controllers/Http/Admin/MimetypeController.ts
index 561c0ad..1d9d2a7 100644
--- a/app/Controllers/Http/Admin/MimetypeController.ts
+++ b/app/Controllers/Http/Admin/MimetypeController.ts
@@ -64,7 +64,7 @@ export default class MimetypeController {
'maxLength': '{{ field }} must be less then {{ max }} characters long',
'isUnique': '{{ field }} must be unique, and this value is already taken',
'required': '{{ field }} is required',
- 'file_extension.array.minLength': 'at least {{ min }} mimetypes must be defined',
+ 'file_extension.minLength': 'at least {{ min }} mimetypes must be defined',
'file_extension.*.string': 'Each file extension must be a valid string', // Adjusted to match the type
};
diff --git a/app/Controllers/Http/Admin/mailsettings_controller.ts b/app/Controllers/Http/Admin/mailsettings_controller.ts
index 628a9fc..43e9dc7 100644
--- a/app/Controllers/Http/Admin/mailsettings_controller.ts
+++ b/app/Controllers/Http/Admin/mailsettings_controller.ts
@@ -76,24 +76,23 @@ export default class MailSettingsController {
public async sendTestMail({ response, auth }: HttpContext) {
const user = auth.user!;
const userEmail = user.email;
-
+
// let mailManager = await app.container.make('mail.manager');
- // let iwas = mailManager.use();
+ // let iwas = mailManager.use();
// let test = mail.config.mailers.smtp();
if (!userEmail) {
return response.badRequest({ message: 'User email is not set. Please update your profile.' });
}
try {
- await mail.send(
- (message) => {
- message
- // .from(Config.get('mail.from.address'))
- .from('tethys@geosphere.at')
- .to(userEmail)
- .subject('Test Email')
- .html('
If you received this email, the email configuration seems to be correct.
');
- });
+ await mail.send((message) => {
+ message
+ // .from(Config.get('mail.from.address'))
+ .from('tethys@geosphere.at')
+ .to(userEmail)
+ .subject('Test Email')
+ .html('If you received this email, the email configuration seems to be correct.
');
+ });
return response.json({ success: true, message: 'Test email sent successfully' });
// return response.flash('Test email sent successfully!', 'message').redirect().back();
diff --git a/app/Controllers/Http/Api/AuthorsController.ts b/app/Controllers/Http/Api/AuthorsController.ts
index 2b0bae1..7209699 100644
--- a/app/Controllers/Http/Api/AuthorsController.ts
+++ b/app/Controllers/Http/Api/AuthorsController.ts
@@ -4,29 +4,20 @@ import Person from '#models/person';
// node ace make:controller Author
export default class AuthorsController {
- public async index({}: HttpContext) {
-
+ public async index({}: HttpContext) {
+ // select * from gba.persons
+ // where exists (select * from gba.documents inner join gba.link_documents_persons on "documents"."id" = "link_documents_persons"."document_id"
+ // where ("link_documents_persons"."role" = 'author') and ("persons"."id" = "link_documents_persons"."person_id"));
const authors = await Person.query()
- .select([
- 'id',
- 'academic_title',
- 'first_name',
- 'last_name',
- 'identifier_orcid',
- 'status',
- 'name_type',
- 'created_at'
- // Note: 'email' is omitted
- ])
- .preload('datasets')
- .where('name_type', 'Personal')
- .whereHas('datasets', (dQuery) => {
- dQuery.wherePivot('role', 'author');
- })
- .withCount('datasets', (query) => {
- query.as('datasets_count');
- })
- .orderBy('datasets_count', 'desc');
+ .preload('datasets')
+ .where('name_type', 'Personal')
+ .whereHas('datasets', (dQuery) => {
+ dQuery.wherePivot('role', 'author');
+ })
+ .withCount('datasets', (query) => {
+ query.as('datasets_count');
+ })
+ .orderBy('datasets_count', 'desc');
return authors;
}
diff --git a/app/Controllers/Http/Api/AvatarController.ts b/app/Controllers/Http/Api/AvatarController.ts
index d7c532f..74fe135 100644
--- a/app/Controllers/Http/Api/AvatarController.ts
+++ b/app/Controllers/Http/Api/AvatarController.ts
@@ -2,46 +2,26 @@ import type { HttpContext } from '@adonisjs/core/http';
import { StatusCodes } from 'http-status-codes';
import redis from '@adonisjs/redis/services/main';
-const PREFIXES = ['von', 'van', 'de', 'del', 'della', 'di', 'da', 'dos', 'du', 'le', 'la'];
+const PREFIXES = ['von', 'van'];
const DEFAULT_SIZE = 50;
-const MIN_SIZE = 16;
-const MAX_SIZE = 512;
const FONT_SIZE_RATIO = 0.4;
const COLOR_LIGHTENING_PERCENT = 60;
const COLOR_DARKENING_FACTOR = 0.6;
-const CACHE_TTL = 24 * 60 * 60; // 24 hours instead of 1 hour
export default class AvatarController {
public async generateAvatar({ request, response }: HttpContext) {
try {
const { name, size = DEFAULT_SIZE } = request.only(['name', 'size']);
-
- // Enhanced validation
- if (!name || typeof name !== 'string' || name.trim().length === 0) {
- return response.status(StatusCodes.BAD_REQUEST).json({
- error: 'Name is required and must be a non-empty string',
- });
- }
-
- const parsedSize = this.validateSize(size);
- if (!parsedSize.isValid) {
- return response.status(StatusCodes.BAD_REQUEST).json({
- error: parsedSize.error,
- });
+ if (!name) {
+ return response.status(StatusCodes.BAD_REQUEST).json({ error: 'Name is required' });
}
// Build a unique cache key for the given name and size
- const cacheKey = `avatar:${this.sanitizeName(name)}-${parsedSize.value}`;
- // const cacheKey = `avatar:${name.trim().toLowerCase()}-${size}`;
- try {
- const cachedSvg = await redis.get(cacheKey);
- if (cachedSvg) {
- this.setResponseHeaders(response);
- return response.send(cachedSvg);
- }
- } catch (redisError) {
- // Log redis error but continue without cache
- console.warn('Redis cache read failed:', redisError);
+ const cacheKey = `avatar:${name.trim().toLowerCase()}-${size}`;
+ const cachedSvg = await redis.get(cacheKey);
+ if (cachedSvg) {
+ this.setResponseHeaders(response);
+ return response.send(cachedSvg);
}
const initials = this.getInitials(name);
@@ -49,85 +29,41 @@ export default class AvatarController {
const svgContent = this.createSvg(size, colors, initials);
// // Cache the generated avatar for future use, e.g. 1 hour expiry
- try {
- await redis.setex(cacheKey, CACHE_TTL, svgContent);
- } catch (redisError) {
- // Log but don't fail the request
- console.warn('Redis cache write failed:', redisError);
- }
+ await redis.setex(cacheKey, 3600, svgContent);
this.setResponseHeaders(response);
return response.send(svgContent);
} catch (error) {
- console.error('Avatar generation error:', error);
- return response.status(StatusCodes.INTERNAL_SERVER_ERROR).json({
- error: 'Failed to generate avatar',
- });
+ return response.status(StatusCodes.INTERNAL_SERVER_ERROR).json({ error: error.message });
}
}
- private validateSize(size: any): { isValid: boolean; value?: number; error?: string } {
- const numSize = Number(size);
-
- if (isNaN(numSize)) {
- return { isValid: false, error: 'Size must be a valid number' };
- }
-
- if (numSize < MIN_SIZE || numSize > MAX_SIZE) {
- return {
- isValid: false,
- error: `Size must be between ${MIN_SIZE} and ${MAX_SIZE}`,
- };
- }
-
- return { isValid: true, value: Math.floor(numSize) };
- }
-
- private sanitizeName(name: string): string {
- return name
- .trim()
- .toLowerCase()
- .replace(/[^a-z0-9\s-]/gi, '');
- }
-
private getInitials(name: string): string {
- const sanitized = name.trim().replace(/\s+/g, ' '); // normalize whitespace
- const parts = sanitized
+ const parts = name
+ .trim()
.split(' ')
- .filter((part) => part.length > 0)
- .map((part) => part.trim());
+ .filter((part) => part.length > 0);
if (parts.length === 0) {
return 'NA';
}
- if (parts.length === 1) {
- // For single word, take first 2 characters or first char if only 1 char
- return parts[0].substring(0, Math.min(2, parts[0].length)).toUpperCase();
+ if (parts.length >= 2) {
+ return this.getMultiWordInitials(parts);
}
-
- return this.getMultiWordInitials(parts);
+ return parts[0].substring(0, 2).toUpperCase();
}
private getMultiWordInitials(parts: string[]): string {
- // Filter out prefixes and short words
- const significantParts = parts.filter((part) => !PREFIXES.includes(part.toLowerCase()) && part.length > 1);
+ const firstName = parts[0];
+ const lastName = parts[parts.length - 1];
+ const firstInitial = firstName.charAt(0).toUpperCase();
+ const lastInitial = lastName.charAt(0).toUpperCase();
- if (significantParts.length === 0) {
- // Fallback to first and last regardless of prefixes
- const firstName = parts[0];
- const lastName = parts[parts.length - 1];
- return (firstName.charAt(0) + lastName.charAt(0)).toUpperCase();
+ if (PREFIXES.includes(lastName.toLowerCase()) && lastName === lastName.toUpperCase()) {
+ return firstInitial + lastName.charAt(1).toUpperCase();
}
-
- if (significantParts.length === 1) {
- return significantParts[0].substring(0, 2).toUpperCase();
- }
-
- // Take first and last significant parts
- const firstName = significantParts[0];
- const lastName = significantParts[significantParts.length - 1];
- return (firstName.charAt(0) + lastName.charAt(0)).toUpperCase();
+ return firstInitial + lastInitial;
}
private generateColors(name: string): { background: string; text: string } {
@@ -139,44 +75,31 @@ export default class AvatarController {
}
private createSvg(size: number, colors: { background: string; text: string }, initials: string): string {
- const fontSize = Math.max(12, Math.floor(size * FONT_SIZE_RATIO)); // Ensure readable font size
-
- // Escape any potential HTML/XML characters in initials
- const escapedInitials = this.escapeXml(initials);
-
- return ``;
- }
-
- private escapeXml(text: string): string {
- return text.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''');
+ const fontSize = size * FONT_SIZE_RATIO;
+ return `
+
+ `;
}
private setResponseHeaders(response: HttpContext['response']): void {
- response.header('Content-Type', 'image/svg+xml');
- response.header('Cache-Control', 'public, max-age=86400'); // Cache for 1 day
- response.header('ETag', `"${Date.now()}"`); // Simple ETag
+ response.header('Content-type', 'image/svg+xml');
+ response.header('Cache-Control', 'no-cache');
+ response.header('Pragma', 'no-cache');
+ response.header('Expires', '0');
}
private getColorFromName(name: string): string {
let hash = 0;
- const normalizedName = name.toLowerCase().trim();
-
- for (let i = 0; i < normalizedName.length; i++) {
- hash = normalizedName.charCodeAt(i) + ((hash << 5) - hash);
- hash = hash & hash; // Convert to 32-bit integer
+ for (let i = 0; i < name.length; i++) {
+ hash = name.charCodeAt(i) + ((hash << 5) - hash);
}
- // Ensure we get vibrant colors by constraining the color space
const colorParts = [];
for (let i = 0; i < 3; i++) {
- let value = (hash >> (i * 8)) & 0xff;
- // Ensure minimum color intensity for better contrast
- value = Math.max(50, value);
+ const value = (hash >> (i * 8)) & 0xff;
colorParts.push(value.toString(16).padStart(2, '0'));
}
return colorParts.join('');
@@ -187,7 +110,7 @@ export default class AvatarController {
const g = parseInt(hexColor.substring(2, 4), 16);
const b = parseInt(hexColor.substring(4, 6), 16);
- const lightenValue = (value: number) => Math.min(255, Math.floor(value + (255 - value) * (percent / 100)));
+ const lightenValue = (value: number) => Math.min(255, Math.floor((value * (100 + percent)) / 100));
const newR = lightenValue(r);
const newG = lightenValue(g);
@@ -201,7 +124,7 @@ export default class AvatarController {
const g = parseInt(hexColor.slice(2, 4), 16);
const b = parseInt(hexColor.slice(4, 6), 16);
- const darkenValue = (value: number) => Math.max(0, Math.floor(value * COLOR_DARKENING_FACTOR));
+ const darkenValue = (value: number) => Math.round(value * COLOR_DARKENING_FACTOR);
const darkerR = darkenValue(r);
const darkerG = darkenValue(g);
diff --git a/app/Controllers/Http/Api/DatasetController.ts b/app/Controllers/Http/Api/DatasetController.ts
index 9106521..b80949d 100644
--- a/app/Controllers/Http/Api/DatasetController.ts
+++ b/app/Controllers/Http/Api/DatasetController.ts
@@ -1,36 +1,24 @@
import type { HttpContext } from '@adonisjs/core/http';
+// import Person from 'App/Models/Person';
import Dataset from '#models/dataset';
import { StatusCodes } from 'http-status-codes';
-import DatasetReference from '#models/dataset_reference';
// node ace make:controller Author
export default class DatasetController {
- /**
- * GET /api/datasets
- * Find all published datasets
- */
- public async index({ response }: HttpContext) {
- try {
- const datasets = await Dataset.query()
- .where(function (query) {
- query.where('server_state', 'published').orWhere('server_state', 'deleted');
- })
- .preload('titles')
- .preload('identifier')
- .orderBy('server_date_published', 'desc');
+ public async index({}: HttpContext) {
+ // Select datasets with server_state 'published' or 'deleted' and sort by the last published date
+ const datasets = await Dataset.query()
+ .where(function (query) {
+ query.where('server_state', 'published')
+ .orWhere('server_state', 'deleted');
+ })
+ .preload('titles')
+ .preload('identifier')
+ .orderBy('server_date_published', 'desc');
- return response.status(StatusCodes.OK).json(datasets);
- } catch (error) {
- return response.status(StatusCodes.INTERNAL_SERVER_ERROR).json({
- message: error.message || 'Some error occurred while retrieving datasets.',
- });
- }
+ return datasets;
}
- /**
- * GET /api/dataset
- * Find all published datasets
- */
public async findAll({ response }: HttpContext) {
try {
const datasets = await Dataset.query()
@@ -46,279 +34,34 @@ export default class DatasetController {
}
}
- /**
- * GET /api/dataset/:publish_id
- * Find one dataset by publish_id
- */
- public async findOne({ response, params }: HttpContext) {
- try {
- const dataset = await Dataset.query()
- .where('publish_id', params.publish_id)
- .preload('titles')
- .preload('descriptions') // Using 'descriptions' instead of 'abstracts'
- .preload('user', (builder) => {
- builder.select(['id', 'firstName', 'lastName', 'avatar', 'login']);
- })
- .preload('authors', (builder) => {
- builder
- .select(['id', 'academic_title', 'first_name', 'last_name', 'identifier_orcid', 'status', 'name_type'])
- .withCount('datasets', (query) => {
- query.as('datasets_count');
- })
- .pivotColumns(['role', 'sort_order'])
- .orderBy('pivot_sort_order', 'asc');
- })
- .preload('contributors', (builder) => {
- builder
- .select(['id', 'academic_title', 'first_name', 'last_name', 'identifier_orcid', 'status', 'name_type'])
- .withCount('datasets', (query) => {
- query.as('datasets_count');
- })
- .pivotColumns(['role', 'sort_order', 'contributor_type'])
- .orderBy('pivot_sort_order', 'asc');
- })
- .preload('subjects')
- .preload('coverage')
- .preload('licenses')
- .preload('references')
- .preload('project')
- // .preload('referenced_by', (builder) => {
- // builder.preload('dataset', (builder) => {
- // builder.preload('identifier');
- // });
- // })
- .preload('files', (builder) => {
- builder.preload('hashvalues');
- })
- .preload('identifier')
- .first(); // Use first() instead of firstOrFail() to handle not found gracefully
-
- if (!dataset) {
- return response.status(StatusCodes.NOT_FOUND).json({
- message: `Cannot find Dataset with publish_id=${params.publish_id}.`,
+ public async findOne({ params }: HttpContext) {
+ const datasets = await Dataset.query()
+ .where('publish_id', params.publish_id)
+ .preload('titles')
+ .preload('descriptions')
+ .preload('user')
+ .preload('authors', (builder) => {
+ builder.orderBy('pivot_sort_order', 'asc');
+ })
+ .preload('contributors', (builder) => {
+ builder.orderBy('pivot_sort_order', 'asc');
+ })
+ .preload('subjects')
+ .preload('coverage')
+ .preload('licenses')
+ .preload('references')
+ .preload('project')
+ .preload('referenced_by', (builder) => {
+ builder.preload('dataset', (builder) => {
+ builder.preload('identifier');
});
- }
+ })
+ .preload('files', (builder) => {
+ builder.preload('hashvalues');
+ })
+ .preload('identifier')
+ .firstOrFail();
- // Build the version chain
- const versionChain = await this.buildVersionChain(dataset);
-
- // Add version chain to response
- const responseData = {
- ...dataset.toJSON(),
- versionChain: versionChain,
- };
-
- // return response.status(StatusCodes.OK).json(dataset);
- return response.status(StatusCodes.OK).json(responseData);
- } catch (error) {
- return response.status(StatusCodes.INTERNAL_SERVER_ERROR).json({
- message: error.message || `Error retrieving Dataset with publish_id=${params.publish_id}.`,
- });
- }
- }
-
- /**
- * GET /:prefix/:value
- * Find dataset by identifier (e.g., https://doi.tethys.at/10.24341/tethys.99.2)
- */
- public async findByIdentifier({ response, params }: HttpContext) {
- const identifierValue = `${params.prefix}/${params.value}`;
-
- // Optional: Validate DOI format
- if (!identifierValue.match(/^10\.\d+\/[a-zA-Z0-9._-]+\.[0-9]+(?:\.[0-9]+)*$/)) {
- return response.status(StatusCodes.BAD_REQUEST).json({
- message: `Invalid DOI format: ${identifierValue}`,
- });
- }
-
- try {
- // Method 1: Using subquery with whereIn (most similar to your original)
- const dataset = await Dataset.query()
- // .whereIn('id', (subQuery) => {
- // subQuery.select('dataset_id').from('dataset_identifiers').where('value', identifierValue);
- // })
- .whereHas('identifier', (builder) => {
- builder.where('value', identifierValue);
- })
- .preload('titles')
- .preload('descriptions') // Using 'descriptions' instead of 'abstracts'
- .preload('user', (builder) => {
- builder.select(['id', 'firstName', 'lastName', 'avatar', 'login']);
- })
- .preload('authors', (builder) => {
- builder
- .select(['id', 'academic_title', 'first_name', 'last_name', 'identifier_orcid', 'status', 'name_type'])
- .withCount('datasets', (query) => {
- query.as('datasets_count');
- })
- .pivotColumns(['role', 'sort_order'])
- .wherePivot('role', 'author')
- .orderBy('pivot_sort_order', 'asc');
- })
- .preload('contributors', (builder) => {
- builder
- .select(['id', 'academic_title', 'first_name', 'last_name', 'identifier_orcid', 'status', 'name_type'])
- .withCount('datasets', (query) => {
- query.as('datasets_count');
- })
- .pivotColumns(['role', 'sort_order', 'contributor_type'])
- .wherePivot('role', 'contributor')
- .orderBy('pivot_sort_order', 'asc');
- })
- .preload('subjects')
- .preload('coverage')
- .preload('licenses')
- .preload('references')
- .preload('project')
- // .preload('referenced_by', (builder) => {
- // builder.preload('dataset', (builder) => {
- // builder.preload('identifier');
- // });
- // })
- .preload('files', (builder) => {
- builder.preload('hashvalues');
- })
- .preload('identifier')
- .first();
-
- if (!dataset) {
- return response.status(StatusCodes.NOT_FOUND).json({
- message: `Cannot find Dataset with identifier=${identifierValue}.`,
- });
- }
- // Build the version chain
- const versionChain = await this.buildVersionChain(dataset);
-
- // Add version chain to response
- const responseData = {
- ...dataset.toJSON(),
- versionChain: versionChain,
- };
-
- // return response.status(StatusCodes.OK).json(dataset);
- return response.status(StatusCodes.OK).json(responseData);
- } catch (error) {
- return response.status(StatusCodes.INTERNAL_SERVER_ERROR).json({
- message: error.message || `Error retrieving Dataset with identifier=${identifierValue}.`,
- });
- }
- }
-
- /**
- * Build the complete version chain for a dataset
- * Traverses both backwards (previous versions) and forwards (newer versions)
- */
- private async buildVersionChain(dataset: Dataset) {
- const versionChain = {
- current: {
- id: dataset.id,
- publish_id: dataset.publish_id,
- doi: dataset.identifier?.value || null,
- main_title: dataset.mainTitle || null,
- server_date_published: dataset.server_date_published,
- },
- previousVersions: [] as any[],
- newerVersions: [] as any[],
- };
-
- // Get all previous versions (going backwards in time)
- versionChain.previousVersions = await this.getPreviousVersions(dataset.id);
-
- // Get all newer versions (going forwards in time)
- versionChain.newerVersions = await this.getNewerVersions(dataset.id);
-
- return versionChain;
- }
-
- /**
- * Recursively get all previous versions
- */
- private async getPreviousVersions(datasetId: number, visited: Set = new Set()): Promise {
- // Prevent infinite loops
- if (visited.has(datasetId)) {
- return [];
- }
- visited.add(datasetId);
-
- const previousVersions: any[] = [];
-
- // Find references where this dataset "IsNewVersionOf" another dataset
- const previousRefs = await DatasetReference.query()
- .where('document_id', datasetId)
- .where('relation', 'IsNewVersionOf')
- .whereNotNull('related_document_id');
-
- for (const ref of previousRefs) {
- if (!ref.related_document_id) continue;
-
- const previousDataset = await Dataset.query()
- .where('id', ref.related_document_id)
- .preload('identifier')
- .preload('titles')
- .first();
-
- if (previousDataset) {
- const versionInfo = {
- id: previousDataset.id,
- publish_id: previousDataset.publish_id,
- doi: previousDataset.identifier?.value || null,
- main_title: previousDataset.mainTitle || null,
- server_date_published: previousDataset.server_date_published,
- relation: 'IsPreviousVersionOf', // From perspective of current dataset
- };
-
- previousVersions.push(versionInfo);
-
- // Recursively get even older versions
- const olderVersions = await this.getPreviousVersions(previousDataset.id, visited);
- previousVersions.push(...olderVersions);
- }
- }
-
- return previousVersions;
- }
-
- /**
- * Recursively get all newer versions
- */
- private async getNewerVersions(datasetId: number, visited: Set = new Set()): Promise {
- // Prevent infinite loops
- if (visited.has(datasetId)) {
- return [];
- }
- visited.add(datasetId);
-
- const newerVersions: any[] = [];
-
- // Find references where this dataset "IsPreviousVersionOf" another dataset
- const newerRefs = await DatasetReference.query()
- .where('document_id', datasetId)
- .where('relation', 'IsPreviousVersionOf')
- .whereNotNull('related_document_id');
-
- for (const ref of newerRefs) {
- if (!ref.related_document_id) continue;
-
- const newerDataset = await Dataset.query().where('id', ref.related_document_id).preload('identifier').preload('titles').first();
-
- if (newerDataset) {
- const versionInfo = {
- id: newerDataset.id,
- publish_id: newerDataset.publish_id,
- doi: newerDataset.identifier?.value || null,
- main_title: newerDataset.mainTitle || null,
- server_date_published: newerDataset.server_date_published,
- relation: 'IsNewVersionOf', // From perspective of current dataset
- };
-
- newerVersions.push(versionInfo);
-
- // Recursively get even newer versions
- const evenNewerVersions = await this.getNewerVersions(newerDataset.id, visited);
- newerVersions.push(...evenNewerVersions);
- }
- }
-
- return newerVersions;
+ return datasets;
}
}
diff --git a/app/Controllers/Http/Api/FileController.ts b/app/Controllers/Http/Api/FileController.ts
index 8a400ad..8080479 100644
--- a/app/Controllers/Http/Api/FileController.ts
+++ b/app/Controllers/Http/Api/FileController.ts
@@ -2,103 +2,53 @@ import type { HttpContext } from '@adonisjs/core/http';
import File from '#models/file';
import { StatusCodes } from 'http-status-codes';
import * as fs from 'fs';
-import { DateTime } from 'luxon';
+import * as path from 'path';
// node ace make:controller Author
export default class FileController {
// @Get("download/:id")
public async findOne({ response, params }: HttpContext) {
const id = params.id;
- // const file = await File.findOrFail(id);
- // Load file with its related dataset to check embargo
- const file = await File.query()
- .where('id', id)
- .preload('dataset') // or 'dataset' - whatever your relationship is named
- .firstOrFail();
+ const file = await File.findOrFail(id);
+ // const file = await File.findOne({
+ // where: { id: id },
+ // });
+ if (file) {
+ const filePath = '/storage/app/data/' + file.pathName;
+ const ext = path.extname(filePath);
+ const fileName = file.label + ext;
+ try {
+ fs.accessSync(filePath, fs.constants.R_OK); //| fs.constants.W_OK);
+ // console.log("can read/write:", path);
+
+ response
+ .header('Cache-Control', 'no-cache private')
+ .header('Content-Description', 'File Transfer')
+ .header('Content-Type', file.mimeType)
+ .header('Content-Disposition', 'inline; filename=' + fileName)
+ .header('Content-Transfer-Encoding', 'binary')
+ .header('Access-Control-Allow-Origin', '*')
+ .header('Access-Control-Allow-Methods', 'GET,POST');
+
+ response.status(StatusCodes.OK).download(filePath);
+ } catch (err) {
+ // console.log("no access:", path);
+ response.status(StatusCodes.NOT_FOUND).send({
+ message: `File with id ${id} doesn't exist on file server`,
+ });
+ }
- if (!file) {
- return response.status(StatusCodes.NOT_FOUND).send({
+ // res.status(StatusCodes.OK).sendFile(filePath, (err) => {
+ // // res.setHeader("Content-Type", "application/json");
+ // // res.removeHeader("Content-Disposition");
+ // res.status(StatusCodes.NOT_FOUND).send({
+ // message: `File with id ${id} doesn't exist on file server`,
+ // });
+ // });
+ } else {
+ response.status(StatusCodes.NOT_FOUND).send({
message: `Cannot find File with id=${id}.`,
});
}
-
- const dataset = file.dataset;
- // Files from unpublished datasets are now blocked
- if (dataset.server_state !== 'published') {
- return response.status(StatusCodes.FORBIDDEN).send({
- message: `File access denied: Dataset is not published.`,
- });
- }
- if (dataset && this.isUnderEmbargo(dataset.embargo_date)) {
- return response.status(StatusCodes.FORBIDDEN).send({
- message: `File is under embargo until ${dataset.embargo_date?.toFormat('yyyy-MM-dd')}`,
- });
- }
-
- // Proceed with file download
- const filePath = '/storage/app/data/' + file.pathName;
- const fileExt = file.filePath.split('.').pop() || '';
- // const fileName = file.label + fileExt;
- const fileName = file.label.toLowerCase().endsWith(`.${fileExt.toLowerCase()}`) ? file.label : `${file.label}.${fileExt}`;
-
- // Determine if file can be previewed inline in browser
- const canPreviewInline = (mimeType: string): boolean => {
- const type = mimeType.toLowerCase();
- return (
- type === 'application/pdf' ||
- type.startsWith('image/') ||
- type.startsWith('text/') ||
- type === 'application/json' ||
- type === 'application/xml' ||
- // Uncomment if you want video/audio inline
- type.startsWith('video/') ||
- type.startsWith('audio/')
- );
- };
- const disposition = canPreviewInline(file.mimeType) ? 'inline' : 'attachment';
-
- try {
- fs.accessSync(filePath, fs.constants.R_OK); //| fs.constants.W_OK);
- // console.log("can read/write:", filePath);
-
- response
- .header('Cache-Control', 'no-cache private')
- .header('Content-Description', 'File Transfer')
- .header('Content-Type', file.mimeType)
- .header('Content-Disposition', `${disposition}; filename="${fileName}"`)
- .header('Content-Transfer-Encoding', 'binary')
- .header('Access-Control-Allow-Origin', '*')
- .header('Access-Control-Allow-Methods', 'GET');
-
- response.status(StatusCodes.OK).download(filePath);
- } catch (err) {
- // console.log("no access:", path);
- response.status(StatusCodes.NOT_FOUND).send({
- message: `File with id ${id} doesn't exist on file server`,
- });
- }
- }
-
- /**
- * Check if the dataset is under embargo
- * Compares only dates (ignoring time) for embargo check
- * @param embargoDate - The embargo date from dataset
- * @returns true if under embargo, false if embargo has passed or no embargo set
- */
- private isUnderEmbargo(embargoDate: DateTime | null): boolean {
- // No embargo date set - allow download
- if (!embargoDate) {
- return false;
- }
-
- // Get current date at start of day (00:00:00)
- const today = DateTime.now().startOf('day');
-
- // Get embargo date at start of day (00:00:00)
- const embargoDateOnly = embargoDate.startOf('day');
-
- // File is under embargo if embargo date is after today
- // This means the embargo lifts at the start of the embargo date
- return embargoDateOnly >= today;
}
}
diff --git a/app/Controllers/Http/Editor/DatasetController.ts b/app/Controllers/Http/Editor/DatasetController.ts
index f2a0417..23466d9 100644
--- a/app/Controllers/Http/Editor/DatasetController.ts
+++ b/app/Controllers/Http/Editor/DatasetController.ts
@@ -3,7 +3,7 @@ import { Client } from '@opensearch-project/opensearch';
import User from '#models/user';
import Dataset from '#models/dataset';
import DatasetIdentifier from '#models/dataset_identifier';
-import DatasetXmlSerializer from '#app/Library/DatasetXmlSerializer';
+import XmlModel from '#app/Library/XmlModel';
import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
import { create } from 'xmlbuilder2';
import { readFileSync } from 'fs';
@@ -188,16 +188,10 @@ export default class DatasetsController {
}
}
- public async approve({ request, inertia, response, auth }: HttpContext) {
+ public async approve({ request, inertia, response }: HttpContext) {
const id = request.param('id');
-
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
// $dataset = Dataset::with('user:id,login')->findOrFail($id);
- const dataset = await Dataset.query().where('id', id).where('editor_id', user.id).firstOrFail();
+ const dataset = await Dataset.findOrFail(id);
const validStates = ['editor_accepted', 'rejected_reviewer'];
if (!validStates.includes(dataset.server_state)) {
@@ -223,7 +217,7 @@ export default class DatasetsController {
});
}
- public async approveUpdate({ request, response, auth }: HttpContext) {
+ public async approveUpdate({ request, response }: HttpContext) {
const approveDatasetSchema = vine.object({
reviewer_id: vine.number(),
});
@@ -236,11 +230,7 @@ export default class DatasetsController {
throw error;
}
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
- const dataset = await Dataset.query().where('id', id).where('editor_id', user.id).firstOrFail();
+ const dataset = await Dataset.findOrFail(id);
const validStates = ['editor_accepted', 'rejected_reviewer'];
if (!validStates.includes(dataset.server_state)) {
@@ -262,6 +252,7 @@ export default class DatasetsController {
dataset.reject_editor_note = null;
}
+
//save main and additional titles
const reviewer_id = request.input('reviewer_id', null);
dataset.reviewer_id = reviewer_id;
@@ -271,15 +262,10 @@ export default class DatasetsController {
}
}
- public async reject({ request, inertia, response, auth }: HttpContext) {
+ public async reject({ request, inertia, response }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
const dataset = await Dataset.query()
.where('id', id)
- .where('editor_id', user.id) // Ensure the user is the editor of the dataset
// .preload('titles')
// .preload('descriptions')
.preload('user', (builder) => {
@@ -304,17 +290,14 @@ export default class DatasetsController {
});
}
+
+
public async rejectUpdate({ request, response, auth }: HttpContext) {
const authUser = auth.user!;
-
- if (!authUser) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
const id = request.param('id');
const dataset = await Dataset.query()
.where('id', id)
- .where('editor_id', authUser.id) // Ensure the user is the editor of the dataset
.preload('user', (builder) => {
builder.select('id', 'login', 'email');
})
@@ -397,14 +380,9 @@ export default class DatasetsController {
public async publish({ request, inertia, response, auth }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
const dataset = await Dataset.query()
.where('id', id)
- .where('editor_id', user.id) // Ensure the user is the editor of the dataset
.preload('titles')
.preload('authors')
// .preload('persons', (builder) => {
@@ -424,16 +402,18 @@ export default class DatasetsController {
.back();
}
+
+
return inertia.render('Editor/Dataset/Publish', {
dataset,
- can: {
- reject: await auth.user?.can(['dataset-editor-reject']),
+ can: {
+ reject: await auth.user?.can(['dataset-editor-reject']),
publish: await auth.user?.can(['dataset-publish']),
},
});
}
- public async publishUpdate({ request, response, auth }: HttpContext) {
+ public async publishUpdate({ request, response }: HttpContext) {
const publishDatasetSchema = vine.object({
publisher_name: vine.string().trim(),
});
@@ -445,12 +425,7 @@ export default class DatasetsController {
throw error;
}
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- const dataset = await Dataset.query().where('id', id).where('editor_id', user.id).firstOrFail();
+ const dataset = await Dataset.findOrFail(id);
// let test = await Dataset.getMax('publish_id');
// const maxPublishId = await Database.from('documents').max('publish_id as max_publish_id').first();
@@ -476,16 +451,10 @@ export default class DatasetsController {
}
}
- public async rejectToReviewer({ request, inertia, response, auth }: HttpContext) {
+ public async rejectToReviewer({ request, inertia, response }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
const dataset = await Dataset.query()
- .where('id', id)
- .where('editor_id', user.id) // Ensure the user is the editor of the dataset
+ .where('id', id)
.preload('reviewer', (builder) => {
builder.select('id', 'login', 'email');
})
@@ -511,14 +480,9 @@ export default class DatasetsController {
public async rejectToReviewerUpdate({ request, response, auth }: HttpContext) {
const authUser = auth.user!;
- if (!authUser) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
const id = request.param('id');
const dataset = await Dataset.query()
.where('id', id)
- .where('editor_id', authUser.id) // Ensure the user is the editor of the dataset
.preload('reviewer', (builder) => {
builder.select('id', 'login', 'email');
})
@@ -591,6 +555,7 @@ export default class DatasetsController {
}
}
+
return response
.flash(
`You have successfully rejected dataset ${dataset.id} reviewed by ${dataset.reviewer.login}.${emailStatusMessage}`,
@@ -599,16 +564,10 @@ export default class DatasetsController {
.toRoute('editor.dataset.list');
}
- public async doiCreate({ request, inertia, auth, response }: HttpContext) {
+ public async doiCreate({ request, inertia }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
const dataset = await Dataset.query()
.where('id', id)
- .where('editor_id', user.id) // Ensure the user is the editor of the dataset
.preload('titles')
.preload('descriptions')
// .preload('identifier')
@@ -619,110 +578,60 @@ export default class DatasetsController {
});
}
- public async doiStore({ request, response, auth }: HttpContext) {
+ public async doiStore({ request, response }: HttpContext) {
const dataId = request.param('publish_id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- // Load dataset with minimal required relationships
const dataset = await Dataset.query()
- .where('editor_id', user.id) // Ensure the user is the editor of the dataset
+ // .preload('xmlCache')
.where('publish_id', dataId)
.firstOrFail();
-
- const prefix = process.env.DATACITE_PREFIX || '';
- const base_domain = process.env.BASE_DOMAIN || '';
-
- // Generate DOI metadata XML
const xmlMeta = (await Index.getDoiRegisterString(dataset)) as string;
- // Prepare DOI registration data
- const doiValue = `${prefix}/tethys.${dataset.publish_id}`; //'10.21388/tethys.213'
- const landingPageUrl = `https://doi.${getDomain(base_domain)}/${prefix}/tethys.${dataset.publish_id}`; //https://doi.dev.tethys.at/10.21388/tethys.213
+ let prefix = '';
+ let base_domain = '';
+ // const datacite_environment = process.env.DATACITE_ENVIRONMENT || 'debug';
+ prefix = process.env.DATACITE_PREFIX || '';
+ base_domain = process.env.BASE_DOMAIN || '';
- // Register DOI with DataCite
+ // register DOI:
+ const doiValue = prefix + '/tethys.' + dataset.publish_id; //'10.21388/tethys.213'
+ const landingPageUrl = 'https://doi.' + getDomain(base_domain) + '/' + prefix + '/tethys.' + dataset.publish_id; //https://doi.dev.tethys.at/10.21388/tethys.213
const doiClient = new DoiClient();
const dataciteResponse = await doiClient.registerDoi(doiValue, xmlMeta, landingPageUrl);
- if (dataciteResponse?.status !== 201) {
+ if (dataciteResponse?.status === 201) {
+ // if response OK 201; save the Identifier value into db
+ const doiIdentifier = new DatasetIdentifier();
+ doiIdentifier.value = doiValue;
+ doiIdentifier.dataset_id = dataset.id;
+ doiIdentifier.type = 'doi';
+ doiIdentifier.status = 'findable';
+ // save modified date of datset for re-caching model in db an update the search index
+ dataset.server_date_modified = DateTime.now();
+
+ // save updated dataset to db an index to OpenSearch
+ try {
+ await dataset.related('identifier').save(doiIdentifier);
+ const index_name = 'tethys-records';
+ await Index.indexDocument(dataset, index_name);
+ } catch (error) {
+ logger.error(`${__filename}: Indexing document ${dataset.id} failed: ${error.message}`);
+ // Log the error or handle it as needed
+ throw new HttpException(error.message);
+ }
+ return response.toRoute('editor.dataset.list').flash('message', 'You have successfully created a DOI for the dataset!');
+ } else {
const message = `Unexpected DataCite MDS response code ${dataciteResponse?.status}`;
+ // Log the error or handle it as needed
throw new DoiClientException(dataciteResponse?.status, message);
}
-
- // DOI registration successful - persist and index
- try {
- // Save identifier
- await this.persistDoiAndIndex(dataset, doiValue);
-
- return response.toRoute('editor.dataset.list').flash('message', 'You have successfully created a DOI for the dataset!');
- } catch (error) {
- logger.error(`${__filename}: Failed to persist DOI and index dataset ${dataset.id}: ${error.message}`);
- throw new HttpException(error.message);
- }
-
// return response.toRoute('editor.dataset.list').flash('message', xmlMeta);
}
- /**
- * Persist DOI identifier and update search index
- * Handles cache invalidation to ensure fresh indexing
- */
- private async persistDoiAndIndex(dataset: Dataset, doiValue: string): Promise {
- // Create DOI identifier
- const doiIdentifier = new DatasetIdentifier();
- doiIdentifier.value = doiValue;
- doiIdentifier.dataset_id = dataset.id;
- doiIdentifier.type = 'doi';
- doiIdentifier.status = 'findable';
-
- // Save identifier (this will trigger database insert)
- await dataset.related('identifier').save(doiIdentifier);
-
- // Update dataset modification timestamp to reflect the change
- dataset.server_date_modified = DateTime.now();
- await dataset.save();
-
- // Invalidate stale XML cache
- await this.invalidateDatasetCache(dataset);
-
- // Reload dataset with fresh state for indexing
- const freshDataset = await Dataset.query().where('id', dataset.id).preload('identifier').preload('xmlCache').firstOrFail();
-
- // Index to OpenSearch with fresh data
- const index_name = process.env.OPENSEARCH_INDEX || 'tethys-records';
- await Index.indexDocument(freshDataset, index_name);
-
- logger.info(`Successfully created DOI ${doiValue} and indexed dataset ${dataset.id}`);
- }
-
- /**
- * Invalidate XML cache for dataset
- * Ensures fresh cache generation on next access
- */
- private async invalidateDatasetCache(dataset: Dataset): Promise {
- await dataset.load('xmlCache');
-
- if (dataset.xmlCache) {
- await dataset.xmlCache.delete();
- logger.debug(`Invalidated XML cache for dataset ${dataset.id}`);
- }
- }
-
public async show({}: HttpContext) {}
- public async edit({ request, inertia, response, auth }: HttpContext) {
+ public async edit({ request, inertia, response }: HttpContext) {
const id = request.param('id');
-
- // Check if user is authenticated
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- // Prefilter by both id AND editor_id to ensure user has permission to edit
- const datasetQuery = Dataset.query().where('id', id).where('editor_id', user.id);
+ const datasetQuery = Dataset.query().where('id', id);
datasetQuery
.preload('titles', (query) => query.orderBy('id', 'asc'))
.preload('descriptions', (query) => query.orderBy('id', 'asc'))
@@ -739,7 +648,6 @@ export default class DatasetsController {
query.orderBy('sort_order', 'asc'); // Sort by sort_order column
});
- // This will throw 404 if editor_id does not match logged in user
const dataset = await datasetQuery.firstOrFail();
const validStates = ['editor_accepted', 'rejected_reviewer'];
if (!validStates.includes(dataset.server_state)) {
@@ -813,16 +721,11 @@ export default class DatasetsController {
});
}
- public async update({ request, response, session, auth }: HttpContext) {
+ public async update({ request, response, session }: HttpContext) {
// Get the dataset id from the route parameter
const datasetId = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
// Retrieve the dataset and load its existing files
- const dataset = await Dataset.query().where('id', datasetId).where('editor_id', user.id).firstOrFail();
+ const dataset = await Dataset.findOrFail(datasetId);
await dataset.load('files');
let trx: TransactionClientContract | null = null;
@@ -831,7 +734,7 @@ export default class DatasetsController {
trx = await db.transaction();
// const user = (await User.find(auth.user?.id)) as User;
// await this.createDatasetAndAssociations(user, request, trx);
- // const dataset = await Dataset.findOrFail(datasetId);
+ const dataset = await Dataset.findOrFail(datasetId);
// save the licenses
const licenses: number[] = request.input('licenses', []);
@@ -997,7 +900,6 @@ export default class DatasetsController {
const input = request.only(['project_id', 'embargo_date', 'language', 'type', 'creating_corporation']);
// dataset.type = request.input('type');
dataset.merge(input);
- dataset.server_date_modified = DateTime.now();
// let test: boolean = dataset.$isDirty;
await dataset.useTransaction(trx).save();
@@ -1017,15 +919,10 @@ export default class DatasetsController {
}
}
- public async categorize({ inertia, request, response, auth }: HttpContext) {
+ public async categorize({ inertia, request, response }: HttpContext) {
const id = request.param('id');
- // Check if user is authenticated
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
// Preload dataset and its "collections" relation
- const dataset = await Dataset.query().where('id', id).where('editor_id', user.id).preload('collections').firstOrFail();
+ const dataset = await Dataset.query().where('id', id).preload('collections').firstOrFail();
const validStates = ['editor_accepted', 'rejected_reviewer'];
if (!validStates.includes(dataset.server_state)) {
// session.flash('errors', 'Invalid server state!');
@@ -1039,7 +936,6 @@ export default class DatasetsController {
}
const collectionRoles = await CollectionRole.query()
- .whereIn('name', ['ddc', 'ccs'])
.preload('collections', (coll: Collection) => {
// preloa only top level collection with noparent_id
coll.whereNull('parent_id').orderBy('number', 'asc');
@@ -1053,15 +949,10 @@ export default class DatasetsController {
});
}
- public async categorizeUpdate({ request, response, session, auth }: HttpContext) {
+ public async categorizeUpdate({ request, response, session }: HttpContext) {
// Get the dataset id from the route parameter
const id = request.param('id');
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
- // Retrieve the dataset and load its existing files
- const dataset = await Dataset.query().preload('files').where('id', id).where('editor_id', user.id).firstOrFail();
+ const dataset = await Dataset.query().preload('files').where('id', id).firstOrFail();
const validStates = ['editor_accepted', 'rejected_reviewer'];
if (!validStates.includes(dataset.server_state)) {
@@ -1229,20 +1120,9 @@ export default class DatasetsController {
// const filePath = await drive.use('local').getUrl('/'+ file.filePath)
const filePath = file.filePath;
const fileExt = file.filePath.split('.').pop() || '';
-
- // Check if label already includes the extension
- const fileName = file.label.toLowerCase().endsWith(`.${fileExt.toLowerCase()}`) ? file.label : `${file.label}.${fileExt}`;
-
// Set the response headers and download the file
- response
- .header('Cache-Control', 'no-cache private')
- .header('Content-Description', 'File Transfer')
- .header('Content-Type', file.mime_type || 'application/octet-stream')
- // .header('Content-Disposition', 'inline; filename=' + fileName)
- .header('Content-Transfer-Encoding', 'binary')
- .header('Access-Control-Allow-Origin', '*')
- .header('Access-Control-Allow-Methods', 'GET');
- response.attachment(fileName);
+ response.header('Content-Type', file.mime_type || 'application/octet-stream');
+ response.attachment(`${file.label}.${fileExt}`);
return response.download(filePath);
}
@@ -1255,18 +1135,19 @@ export default class DatasetsController {
}
}
- private async getDatasetXmlDomNode(dataset: Dataset): Promise {
- const serializer = new DatasetXmlSerializer(dataset).enableCaching().excludeEmptyFields();
+ private async getDatasetXmlDomNode(dataset: Dataset) {
+ const xmlModel = new XmlModel(dataset);
// xmlModel.setModel(dataset);
-
- // Load existing cache if available
- await dataset.load('xmlCache');
+ xmlModel.excludeEmptyFields();
+ xmlModel.caching = true;
+ // const cache = dataset.xmlCache ? dataset.xmlCache : null;
+ // dataset.load('xmlCache');
if (dataset.xmlCache) {
- serializer.setCache(dataset.xmlCache);
+ xmlModel.xmlCache = dataset.xmlCache;
}
// return cache.getDomDocument();
- const xmlDocument: XMLBuilder | null = await serializer.toXmlDocument();
- return xmlDocument;
+ const domDocument: XMLBuilder | null = await xmlModel.getDomDocument();
+ return domDocument;
}
}
diff --git a/app/Controllers/Http/Oai/OaiController.ts b/app/Controllers/Http/Oai/OaiController.ts
index 47d1708..db49a32 100644
--- a/app/Controllers/Http/Oai/OaiController.ts
+++ b/app/Controllers/Http/Oai/OaiController.ts
@@ -15,7 +15,7 @@ import { OaiModelException, BadOaiModelException } from '#app/exceptions/OaiMode
import Dataset from '#models/dataset';
import Collection from '#models/collection';
import { getDomain, preg_match } from '#app/utils/utility-functions';
-import DatasetXmlSerializer from '#app/Library/DatasetXmlSerializer';
+import XmlModel from '#app/Library/XmlModel';
import logger from '@adonisjs/core/services/logger';
import ResumptionToken from '#app/Library/Oai/ResumptionToken';
// import Config from '@ioc:Adonis/Core/Config';
@@ -292,7 +292,7 @@ export default class OaiController {
this.xsltParameter['repIdentifier'] = repIdentifier;
const datasetNode = this.xml.root().ele('Datasets');
- const paginationParams: PagingParameter = {
+ const paginationParams: PagingParameter ={
cursor: 0,
totalLength: 0,
start: maxRecords + 1,
@@ -333,7 +333,7 @@ export default class OaiController {
}
private async handleNoResumptionToken(oaiRequest: Dictionary, paginationParams: PagingParameter, maxRecords: number) {
- this.validateMetadataPrefix(oaiRequest, paginationParams);
+ this.validateMetadataPrefix(oaiRequest, paginationParams);
const finder: ModelQueryBuilderContract = Dataset.query().whereIn(
'server_state',
this.deliveringDocumentStates,
@@ -347,20 +347,16 @@ export default class OaiController {
finder: ModelQueryBuilderContract,
paginationParams: PagingParameter,
oaiRequest: Dictionary,
- maxRecords: number,
+ maxRecords: number
) {
const totalResult = await finder
.clone()
.count('* as total')
.first()
.then((res) => res?.$extras.total);
- paginationParams.totalLength = Number(totalResult);
+ paginationParams.totalLength = Number(totalResult);
- const combinedRecords: Dataset[] = await finder
- .select('publish_id')
- .orderBy('publish_id')
- .offset(0)
- .limit(maxRecords * 2);
+ const combinedRecords: Dataset[] = await finder.select('publish_id').orderBy('publish_id').offset(0).limit(maxRecords*2);
paginationParams.activeWorkIds = combinedRecords.slice(0, 100).map((dat) => Number(dat.publish_id));
paginationParams.nextDocIds = combinedRecords.slice(100).map((dat) => Number(dat.publish_id));
@@ -606,17 +602,19 @@ export default class OaiController {
}
private async getDatasetXmlDomNode(dataset: Dataset) {
- const serializer = new DatasetXmlSerializer(dataset).enableCaching().excludeEmptyFields();
-
+ const xmlModel = new XmlModel(dataset);
+ // xmlModel.setModel(dataset);
+ xmlModel.excludeEmptyFields();
+ xmlModel.caching = true;
// const cache = dataset.xmlCache ? dataset.xmlCache : null;
// dataset.load('xmlCache');
if (dataset.xmlCache) {
- serializer.setCache(dataset.xmlCache);
+ xmlModel.xmlCache = dataset.xmlCache;
}
- // return cache.toXmlDocument();
- const xmlDocument: XMLBuilder | null = await serializer.toXmlDocument();
- return xmlDocument;
+ // return cache.getDomDocument();
+ const domDocument: XMLBuilder | null = await xmlModel.getDomDocument();
+ return domDocument;
}
private addSpecInformation(domNode: XMLBuilder, information: string) {
diff --git a/app/Controllers/Http/Reviewer/DatasetController.ts b/app/Controllers/Http/Reviewer/DatasetController.ts
index 27f9b46..6b54772 100644
--- a/app/Controllers/Http/Reviewer/DatasetController.ts
+++ b/app/Controllers/Http/Reviewer/DatasetController.ts
@@ -107,12 +107,13 @@ export default class DatasetsController {
}
return inertia.render('Reviewer/Dataset/Review', {
- dataset,
+ dataset,
can: {
review: await auth.user?.can(['dataset-review']),
reject: await auth.user?.can(['dataset-review-reject']),
},
});
+
}
public async review_old({ request, inertia, response, auth }: HttpContext) {
@@ -369,19 +370,6 @@ export default class DatasetsController {
.flash(`You have rejected dataset ${dataset.id}! to editor ${dataset.editor.login}`, 'message');
}
- // public async download({ params, response }: HttpContext) {
- // const id = params.id;
- // // Find the file by ID
- // const file = await File.findOrFail(id);
- // // const filePath = await drive.use('local').getUrl('/'+ file.filePath)
- // const filePath = file.filePath;
- // const fileExt = file.filePath.split('.').pop() || '';
- // // Set the response headers and download the file
- // response.header('Content-Type', file.mime_type || 'application/octet-stream');
- // response.attachment(`${file.label}.${fileExt}`);
- // return response.download(filePath);
- // }
-
public async download({ params, response }: HttpContext) {
const id = params.id;
// Find the file by ID
@@ -389,20 +377,9 @@ export default class DatasetsController {
// const filePath = await drive.use('local').getUrl('/'+ file.filePath)
const filePath = file.filePath;
const fileExt = file.filePath.split('.').pop() || '';
-
- // Check if label already includes the extension
- const fileName = file.label.toLowerCase().endsWith(`.${fileExt.toLowerCase()}`) ? file.label : `${file.label}.${fileExt}`;
-
// Set the response headers and download the file
- response
- .header('Cache-Control', 'no-cache private')
- .header('Content-Description', 'File Transfer')
- .header('Content-Type', file.mime_type || 'application/octet-stream')
- // .header('Content-Disposition', 'inline; filename=' + fileName)
- .header('Content-Transfer-Encoding', 'binary')
- .header('Access-Control-Allow-Origin', '*')
- .header('Access-Control-Allow-Methods', 'GET');
- response.attachment(fileName);
+ response.header('Content-Type', file.mime_type || 'application/octet-stream');
+ response.attachment(`${file.label}.${fileExt}`);
return response.download(filePath);
}
}
diff --git a/app/Controllers/Http/Submitter/DatasetController.ts b/app/Controllers/Http/Submitter/DatasetController.ts
index d666e6f..e6018cc 100644
--- a/app/Controllers/Http/Submitter/DatasetController.ts
+++ b/app/Controllers/Http/Submitter/DatasetController.ts
@@ -105,7 +105,6 @@ export default class DatasetController {
'reviewed',
'rejected_editor',
'rejected_reviewer',
- 'rejected_to_reviewer',
])
.where('account_id', user.id)
.preload('titles')
@@ -234,9 +233,8 @@ export default class DatasetController {
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
}),
)
.minLength(1)
@@ -251,9 +249,8 @@ export default class DatasetController {
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
pivot_contributor_type: vine.enum(Object.keys(ContributorTypes)),
}),
)
@@ -327,9 +324,8 @@ export default class DatasetController {
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
}),
)
.minLength(1)
@@ -344,9 +340,8 @@ export default class DatasetController {
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
pivot_contributor_type: vine.enum(Object.keys(ContributorTypes)),
}),
)
@@ -824,20 +819,13 @@ export default class DatasetController {
};
// public async release({ params, view }) {
- public async release({ request, inertia, response, auth }: HttpContext) {
+ public async release({ request, inertia, response }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
-
- // Check if user is authenticated
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
const dataset = await Dataset.query()
.preload('user', (builder) => {
builder.select('id', 'login');
})
- .where('account_id', user.id) // Only fetch if user owns it
.where('id', id)
.firstOrFail();
@@ -858,20 +846,9 @@ export default class DatasetController {
});
}
- public async releaseUpdate({ request, response, auth }: HttpContext) {
+ public async releaseUpdate({ request, response }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
-
- // Check if user is authenticated
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- const dataset = await Dataset.query()
- .preload('files')
- .where('id', id)
- .where('account_id', user.id) // Only fetch if user owns it
- .firstOrFail();
+ const dataset = await Dataset.query().preload('files').where('id', id).firstOrFail();
const validStates = ['inprogress', 'rejected_editor'];
if (!validStates.includes(dataset.server_state)) {
@@ -951,15 +928,7 @@ export default class DatasetController {
public async edit({ request, inertia, response, auth }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
-
- // Check if user is authenticated
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- // Prefilter by both id AND account_id
- const datasetQuery = Dataset.query().where('id', id).where('account_id', user.id); // Only fetch if user owns it
+ const datasetQuery = Dataset.query().where('id', id);
datasetQuery
.preload('titles', (query) => query.orderBy('id', 'asc'))
.preload('descriptions', (query) => query.orderBy('id', 'asc'))
@@ -975,9 +944,8 @@ export default class DatasetController {
.preload('files', (query) => {
query.orderBy('sort_order', 'asc'); // Sort by sort_order column
});
- // This will throw 404 if dataset doesn't exist OR user doesn't own it
- const dataset = await datasetQuery.firstOrFail();
+ const dataset = await datasetQuery.firstOrFail();
const validStates = ['inprogress', 'rejected_editor'];
if (!validStates.includes(dataset.server_state)) {
// session.flash('errors', 'Invalid server state!');
@@ -1015,6 +983,19 @@ export default class DatasetController {
const years = Array.from({ length: currentYear - 1990 + 1 }, (_, index) => 1990 + index);
const licenses = await License.query().select('id', 'name_long').where('active', 'true').pluck('name_long', 'id');
+ // const userHasRoles = user.roles;
+ // const datasetHasLicenses = await dataset.related('licenses').query().pluck('id');
+ // const checkeds = dataset.licenses.first().id;
+
+ // const doctypes = {
+ // analysisdata: { label: 'Analysis', value: 'analysisdata' },
+ // measurementdata: { label: 'Measurements', value: 'measurementdata' },
+ // monitoring: 'Monitoring',
+ // remotesensing: 'Remote Sensing',
+ // gis: 'GIS',
+ // models: 'Models',
+ // mixedtype: 'Mixed Type',
+ // };
return inertia.render('Submitter/Dataset/Edit', {
dataset,
@@ -1034,37 +1015,18 @@ export default class DatasetController {
referenceIdentifierTypes: Object.entries(ReferenceIdentifierTypes).map(([key, value]) => ({ value: key, label: value })),
relationTypes: Object.entries(RelationTypes).map(([key, value]) => ({ value: key, label: value })),
doctypes: DatasetTypes,
- can: {
+ can: {
edit: await auth.user?.can(['dataset-edit']),
delete: await auth.user?.can(['dataset-delete']),
},
});
}
- public async update({ request, response, session, auth }: HttpContext) {
+ public async update({ request, response, session }: HttpContext) {
// Get the dataset id from the route parameter
const datasetId = request.param('id');
- const user = auth.user;
-
- // Check if user is authenticated
- if (!user) {
- return response.flash('You must be logged in to update a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- // Prefilter by both id AND account_id
- const dataset = await Dataset.query()
- .where('id', datasetId)
- .where('account_id', user.id) // Only fetch if user owns it
- .firstOrFail();
-
- // // Check if the authenticated user is the owner of the dataset
- // if (dataset.account_id !== user.id) {
- // return response
- // .flash(`Unauthorized access. You are not the owner of dataset with id ${id}.`, 'error')
- // .redirect()
- // .toRoute('dataset.list');
- // }
-
+ // Retrieve the dataset and load its existing files
+ const dataset = await Dataset.findOrFail(datasetId);
await dataset.load('files');
// Accumulate the size of the already related files
// const preExistingFileSize = dataset.files.reduce((acc, file) => acc + file.fileSize, 0);
@@ -1201,93 +1163,42 @@ export default class DatasetController {
}
}
- // ============================================
- // IMPROVED SUBJECTS PROCESSING
- // ============================================
- const subjects = request.input('subjects', []);
- const currentDatasetSubjectIds = new Set();
-
+ // Process all subjects/keywords from the request
+ const subjects = request.input('subjects');
for (const subjectData of subjects) {
- let subjectToRelate: Subject;
-
- // Case 1: Subject has an ID (existing subject being updated)
+ // Case 1: Subject already exists in the database (has an ID)
if (subjectData.id) {
+ // Retrieve the existing subject
const existingSubject = await Subject.findOrFail(subjectData.id);
- // Check if the updated value conflicts with another existing subject
- const duplicateSubject = await Subject.query()
- .where('value', subjectData.value)
- .where('type', subjectData.type)
- .where('language', subjectData.language || 'en') // Default language if not provided
- .where('id', '!=', subjectData.id) // Exclude the current subject
- .first();
+ // Update subject properties from the request data
+ existingSubject.value = subjectData.value;
+ existingSubject.type = subjectData.type;
+ existingSubject.external_key = subjectData.external_key;
- if (duplicateSubject) {
- // A duplicate exists - use the existing duplicate instead
- subjectToRelate = duplicateSubject;
-
- // Check if the original subject should be deleted (if it's only used by this dataset)
- const originalSubjectUsage = await Subject.query()
- .where('id', existingSubject.id)
- .withCount('datasets')
- .firstOrFail();
-
- if (originalSubjectUsage.$extras.datasets_count <= 1) {
- // Only used by this dataset, safe to delete after detaching
- await dataset.useTransaction(trx).related('subjects').detach([existingSubject.id]);
- await existingSubject.useTransaction(trx).delete();
- } else {
- // Used by other datasets, just detach from this one
- await dataset.useTransaction(trx).related('subjects').detach([existingSubject.id]);
- }
- } else {
- // No duplicate found, update the existing subject
- existingSubject.value = subjectData.value;
- existingSubject.type = subjectData.type;
- existingSubject.language = subjectData.language;
- existingSubject.external_key = subjectData.external_key;
-
- if (existingSubject.$isDirty) {
- await existingSubject.useTransaction(trx).save();
- }
-
- subjectToRelate = existingSubject;
+ // Only save if there are actual changes
+ if (existingSubject.$isDirty) {
+ await existingSubject.save();
}
+
+ // Note: The relationship between dataset and subject is already established,
+ // so we don't need to attach it again
}
// Case 2: New subject being added (no ID)
else {
- // Use firstOrNew to either find existing or create new subject
- subjectToRelate = await Subject.firstOrNew(
- {
- value: subjectData.value,
- type: subjectData.type,
- language: subjectData.language || 'en',
- },
- {
- value: subjectData.value,
- type: subjectData.type,
- language: subjectData.language || 'en',
- external_key: subjectData.external_key,
- },
- );
+ // Check if a subject with the same value and type already exists in the database
+ const subject = await Subject.firstOrNew({ value: subjectData.value, type: subjectData.type }, subjectData);
- if (subjectToRelate.$isNew) {
- await subjectToRelate.useTransaction(trx).save();
+ if (subject.$isNew === true) {
+ // If it's a completely new subject, create and associate it with the dataset
+ await dataset.useTransaction(trx).related('subjects').save(subject);
+ } else {
+ // If the subject already exists, just create the relationship
+ await dataset.useTransaction(trx).related('subjects').attach([subject.id]);
}
}
-
- // Ensure the relationship exists between dataset and subject
- const relationshipExists = await dataset.related('subjects').query().where('subject_id', subjectToRelate.id).first();
-
- if (!relationshipExists) {
- await dataset.useTransaction(trx).related('subjects').attach([subjectToRelate.id]);
- }
-
- // Track which subjects should remain associated with this dataset
- currentDatasetSubjectIds.add(subjectToRelate.id);
}
- // Handle explicit deletions
const subjectsToDelete = request.input('subjectsToDelete', []);
for (const subjectData of subjectsToDelete) {
if (subjectData.id) {
@@ -1300,16 +1211,16 @@ export default class DatasetController {
.withCount('datasets')
.firstOrFail();
- // Detach the subject from this dataset
- await dataset.useTransaction(trx).related('subjects').detach([subject.id]);
+ // Check if the subject is used by multiple datasets
+ if (subject.$extras.datasets_count > 1) {
+ // If used by multiple datasets, just detach it from the current dataset
+ await dataset.useTransaction(trx).related('subjects').detach([subject.id]);
+ } else {
+ // If only used by this dataset, delete the subject completely
- // If this was the only dataset using this subject, delete it entirely
- if (subject.$extras.datasets_count <= 1) {
+ await dataset.useTransaction(trx).related('subjects').detach([subject.id]);
await subject.useTransaction(trx).delete();
}
-
- // Remove from current set if it was added earlier
- currentDatasetSubjectIds.delete(subjectData.id);
}
}
@@ -1488,26 +1399,16 @@ export default class DatasetController {
}
}
- public async delete({ request, inertia, response, session, auth }: HttpContext) {
+ public async delete({ request, inertia, response, session }: HttpContext) {
const id = request.param('id');
- const user = auth.user;
-
- // Check if user is authenticated
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
try {
- // This will throw 404 if dataset doesn't exist OR user doesn't own it
const dataset = await Dataset.query()
.preload('user', (builder) => {
builder.select('id', 'login');
})
.where('id', id)
- .where('account_id', user.id) // Only fetch if user owns it
.preload('files')
.firstOrFail();
-
const validStates = ['inprogress', 'rejected_editor'];
if (!validStates.includes(dataset.server_state)) {
// session.flash('errors', 'Invalid server state!');
@@ -1532,27 +1433,9 @@ export default class DatasetController {
}
}
- public async deleteUpdate({ params, session, response, auth }: HttpContext) {
+ public async deleteUpdate({ params, session, response }: HttpContext) {
try {
- const user = auth.user;
- if (!user) {
- return response.flash('You must be logged in to edit a dataset.', 'error').redirect().toRoute('app.login.show');
- }
-
- // This will throw 404 if dataset doesn't exist OR user doesn't own it
- const dataset = await Dataset.query()
- .where('id', params.id)
- .where('account_id', user.id) // Only fetch if user owns it
- .preload('files')
- .firstOrFail();
-
- // // Check if the authenticated user is the owner of the dataset
- // if (dataset.account_id !== user.id) {
- // return response
- // .flash(`Unauthorized access. You are not the owner of dataset with id ${params.id}.`, 'error')
- // .redirect()
- // .toRoute('dataset.list');
- // }
+ const dataset = await Dataset.query().where('id', params.id).preload('files').firstOrFail();
const validStates = ['inprogress', 'rejected_editor'];
if (validStates.includes(dataset.server_state)) {
@@ -1617,7 +1500,6 @@ export default class DatasetController {
}
const collectionRoles = await CollectionRole.query()
- .whereIn('name', ['ddc', 'ccs'])
.preload('collections', (coll: Collection) => {
// preloa only top level collection with noparent_id
coll.whereNull('parent_id').orderBy('number', 'asc');
diff --git a/app/Library/DatasetXmlSerializer.ts b/app/Library/DatasetXmlSerializer.ts
deleted file mode 100644
index f84d3b7..0000000
--- a/app/Library/DatasetXmlSerializer.ts
+++ /dev/null
@@ -1,231 +0,0 @@
-import DocumentXmlCache from '#models/DocumentXmlCache';
-import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
-import Dataset from '#models/dataset';
-import Strategy from './Strategy.js';
-import { builder } from 'xmlbuilder2';
-import logger from '@adonisjs/core/services/logger';
-
-/**
- * Configuration for XML serialization
- *
- * @interface XmlSerializationConfig
- */
-export interface XmlSerializationConfig {
- /** The dataset model to serialize */
- model: Dataset;
- /** DOM representation (if available) */
- dom?: XMLBuilder;
- /** Fields to exclude from serialization */
- excludeFields: Array;
- /** Whether to exclude empty fields */
- excludeEmpty: boolean;
- /** Base URI for xlink:ref elements */
- baseUri: string;
-}
-
-/**
- * Options for controlling serialization behavior
- */
-export interface SerializationOptions {
- /** Enable XML caching */
- enableCaching?: boolean;
- /** Exclude empty fields from output */
- excludeEmptyFields?: boolean;
- /** Custom base URI */
- baseUri?: string;
- /** Fields to exclude */
- excludeFields?: string[];
-}
-
-/**
- * DatasetXmlSerializer
- *
- * Handles XML serialization of Dataset models with intelligent caching.
- * Generates XML representations and manages cache lifecycle to optimize performance.
- *
- * @example
- * ```typescript
- * const serializer = new DatasetXmlSerializer(dataset);
- * serializer.enableCaching();
- * serializer.excludeEmptyFields();
- *
- * const xmlDocument = await serializer.toXmlDocument();
- * ```
- */
-export default class DatasetXmlSerializer {
- private readonly config: XmlSerializationConfig;
- private readonly strategy: Strategy;
- private cache: DocumentXmlCache | null = null;
- private cachingEnabled = false;
-
- constructor(dataset: Dataset, options: SerializationOptions = {}) {
- this.config = {
- model: dataset,
- excludeEmpty: options.excludeEmptyFields ?? false,
- baseUri: options.baseUri ?? '',
- excludeFields: options.excludeFields ?? [],
- };
-
- this.strategy = new Strategy({
- excludeEmpty: options.excludeEmptyFields ?? false,
- baseUri: options.baseUri ?? '',
- excludeFields: options.excludeFields ?? [],
- model: dataset,
- });
-
- if (options.enableCaching) {
- this.cachingEnabled = true;
- }
- }
-
- /**
- * Enable caching for XML generation
- * When enabled, generated XML is stored in database for faster retrieval
- */
- public enableCaching(): this {
- this.cachingEnabled = true;
- return this;
- }
-
- /**
- * Disable caching for XML generation
- */
- public disableCaching(): this {
- this.cachingEnabled = false;
- return this;
- }
-
- set model(model: Dataset) {
- this.config.model = model;
- }
-
- /**
- * Configure to exclude empty fields from XML output
- */
- public excludeEmptyFields(): this {
- this.config.excludeEmpty = true;
- return this;
- }
-
- /**
- * Set the cache instance directly (useful when preloading)
- * @param cache - The DocumentXmlCache instance
- */
- public setCache(cache: DocumentXmlCache): this {
- this.cache = cache;
- return this;
- }
-
- /**
- * Get the current cache instance
- */
- public getCache(): DocumentXmlCache | null {
- return this.cache;
- }
-
- /**
- * Get DOM document with intelligent caching
- * Returns cached version if valid, otherwise generates new document
- */
- public async toXmlDocument(): Promise {
- const dataset = this.config.model;
-
- // Try to get from cache first
- let cachedDocument: XMLBuilder | null = await this.retrieveFromCache();
-
- if (cachedDocument) {
- logger.debug(`Using cached XML for dataset ${dataset.id}`);
- return cachedDocument;
- }
-
- // Generate fresh document
- logger.debug(`[DatasetXmlSerializer] Cache miss - generating fresh XML for dataset ${dataset.id}`);
- const freshDocument = await this.strategy.createDomDocument();
-
- if (!freshDocument) {
- logger.error(`[DatasetXmlSerializer] Failed to generate XML for dataset ${dataset.id}`);
- return null;
- }
-
- // Cache if caching is enabled
- if (this.cachingEnabled) {
- await this.persistToCache(freshDocument, dataset);
- }
-
- // Extract the dataset-specific node
- return this.extractDatasetNode(freshDocument);
- }
-
- /**
- * Generate XML string representation
- * Convenience method that converts XMLBuilder to string
- */
- public async toXmlString(): Promise {
- const document = await this.toXmlDocument();
- return document ? document.end({ prettyPrint: false }) : null;
- }
-
- /**
- * Persist generated XML document to cache
- * Non-blocking - failures are logged but don't interrupt the flow
- */
- private async persistToCache(domDocument: XMLBuilder, dataset: Dataset): Promise {
- try {
- this.cache = this.cache || new DocumentXmlCache();
- this.cache.document_id = dataset.id;
- this.cache.xml_version = 1;
- this.cache.server_date_modified = dataset.server_date_modified.toFormat('yyyy-MM-dd HH:mm:ss');
- this.cache.xml_data = domDocument.end();
-
- await this.cache.save();
- logger.debug(`Cached XML for dataset ${dataset.id}`);
- } catch (error) {
- logger.error(`Failed to cache XML for dataset ${dataset.id}: ${error.message}`);
- // Don't throw - caching failure shouldn't break the flow
- }
- }
-
- /**
- * Extract the Rdr_Dataset node from full document
- */
- private extractDatasetNode(domDocument: XMLBuilder): XMLBuilder | null {
- const node = domDocument.find((n) => n.node.nodeName === 'Rdr_Dataset', false, true)?.node;
-
- if (node) {
- return builder({ version: '1.0', encoding: 'UTF-8', standalone: true }, node);
- }
-
- return domDocument;
- }
-
- /**
- * Attempt to retrieve valid cached XML document
- * Returns null if cache doesn't exist or is stale
- */
- private async retrieveFromCache(): Promise {
- const dataset: Dataset = this.config.model;
- if (!this.cache) {
- return null;
- }
-
- // Check if cache is still valid
- const actuallyCached = await DocumentXmlCache.hasValidEntry(dataset.id, dataset.server_date_modified);
-
- if (!actuallyCached) {
- logger.debug(`Cache invalid for dataset ${dataset.id}`);
- return null;
- }
-
- //cache is actual return cached document
- try {
- if (this.cache) {
- return this.cache.getDomDocument();
- } else {
- return null;
- }
- } catch (error) {
- logger.error(`Failed to retrieve cached document for dataset ${dataset.id}: ${error.message}`);
- return null;
- }
- }
-}
diff --git a/app/Library/Doi/DoiClient.ts b/app/Library/Doi/DoiClient.ts
index 4232ac4..86151e7 100644
--- a/app/Library/Doi/DoiClient.ts
+++ b/app/Library/Doi/DoiClient.ts
@@ -1,3 +1,6 @@
+// import { Client } from 'guzzle';
+// import { Log } from '@adonisjs/core/build/standalone';
+// import { DoiInterface } from './interfaces/DoiInterface';
import DoiClientContract from '#app/Library/Doi/DoiClientContract';
import DoiClientException from '#app/exceptions/DoiClientException';
import { StatusCodes } from 'http-status-codes';
@@ -9,14 +12,14 @@ export class DoiClient implements DoiClientContract {
public username: string;
public password: string;
public serviceUrl: string;
- public apiUrl: string;
constructor() {
// const datacite_environment = process.env.DATACITE_ENVIRONMENT || 'debug';
this.username = process.env.DATACITE_USERNAME || '';
this.password = process.env.DATACITE_PASSWORD || '';
this.serviceUrl = process.env.DATACITE_SERVICE_URL || '';
- this.apiUrl = process.env.DATACITE_API_URL || 'https://api.datacite.org';
+ // this.prefix = process.env.DATACITE_PREFIX || '';
+ // this.base_domain = process.env.BASE_DOMAIN || '';
if (this.username === '' || this.password === '' || this.serviceUrl === '') {
const message = 'issing configuration settings to properly initialize DOI client';
@@ -87,240 +90,4 @@ export class DoiClient implements DoiClientContract {
throw new DoiClientException(error.response.status, error.response.data);
}
}
-
- /**
- * Retrieves DOI information from DataCite REST API
- *
- * @param doiValue The DOI identifier e.g. '10.5072/tethys.999'
- * @returns Promise with DOI information or null if not found
- */
- public async getDoiInfo(doiValue: string): Promise {
- try {
- // Use configurable DataCite REST API URL
- const dataciteApiUrl = `${this.apiUrl}/dois/${doiValue}`;
- const response = await axios.get(dataciteApiUrl, {
- headers: {
- Accept: 'application/vnd.api+json',
- },
- });
-
- if (response.status === 200 && response.data.data) {
- return {
- created: response.data.data.attributes.created,
- registered: response.data.data.attributes.registered,
- updated: response.data.data.attributes.updated,
- published: response.data.data.attributes.published,
- state: response.data.data.attributes.state,
- url: response.data.data.attributes.url,
- metadata: response.data.data.attributes,
- };
- }
- } catch (error) {
- if (error.response?.status === 404) {
- logger.debug(`DOI ${doiValue} not found in DataCite`);
- return null;
- }
-
- logger.debug(`DataCite REST API failed for ${doiValue}: ${error.message}`);
-
- // Fallback to MDS API
- return await this.getDoiInfoFromMds(doiValue);
- }
-
- return null;
- }
-
- /**
- * Fallback method to get DOI info from MDS API
- *
- * @param doiValue The DOI identifier
- * @returns Promise with basic DOI information or null
- */
- private async getDoiInfoFromMds(doiValue: string): Promise {
- try {
- const auth = {
- username: this.username,
- password: this.password,
- };
-
- // Get DOI URL
- const doiResponse = await axios.get(`${this.serviceUrl}/doi/${doiValue}`, { auth });
-
- if (doiResponse.status === 200) {
- // Get metadata if available
- try {
- const metadataResponse = await axios.get(`${this.serviceUrl}/metadata/${doiValue}`, {
- auth,
- headers: {
- Accept: 'application/xml',
- },
- });
-
- return {
- url: doiResponse.data.trim(),
- metadata: metadataResponse.data,
- created: new Date().toISOString(), // MDS doesn't provide creation dates
- registered: new Date().toISOString(), // Use current time as fallback
- source: 'mds',
- };
- } catch (metadataError) {
- // Return basic info even if metadata fetch fails
- return {
- url: doiResponse.data.trim(),
- created: new Date().toISOString(),
- registered: new Date().toISOString(),
- source: 'mds',
- };
- }
- }
- } catch (error) {
- if (error.response?.status === 404) {
- logger.debug(`DOI ${doiValue} not found in DataCite MDS`);
- return null;
- }
-
- logger.debug(`DataCite MDS API failed for ${doiValue}: ${error.message}`);
- }
-
- return null;
- }
-
- /**
- * Checks if a DOI exists in DataCite
- *
- * @param doiValue The DOI identifier
- * @returns Promise True if DOI exists
- */
- public async doiExists(doiValue: string): Promise {
- const doiInfo = await this.getDoiInfo(doiValue);
- return doiInfo !== null;
- }
-
- /**
- * Gets the last modification date of a DOI
- *
- * @param doiValue The DOI identifier
- * @returns Promise Last modification date or creation date if never updated, null if not found
- */
- public async getDoiLastModified(doiValue: string): Promise {
- const doiInfo = await this.getDoiInfo(doiValue);
-
- if (doiInfo) {
- // Use updated date if available, otherwise fall back to created/registered date
- const dateToUse = doiInfo.updated || doiInfo.registered || doiInfo.created;
-
- if (dateToUse) {
- logger.debug(
- `DOI ${doiValue}: Using ${doiInfo.updated ? 'updated' : doiInfo.registered ? 'registered' : 'created'} date: ${dateToUse}`,
- );
- return new Date(dateToUse);
- }
- }
-
- return null;
- }
-
- /**
- * Makes a DOI unfindable (registered but not discoverable)
- * Note: DOIs cannot be deleted, only made unfindable
- * await doiClient.makeDoiUnfindable('10.21388/tethys.231');
- *
- * @param doiValue The DOI identifier e.g. '10.5072/tethys.999'
- * @returns Promise> The http response
- */
- public async makeDoiUnfindable(doiValue: string): Promise> {
- const auth = {
- username: this.username,
- password: this.password,
- };
-
- try {
- // First, check if DOI exists
- const exists = await this.doiExists(doiValue);
- if (!exists) {
- throw new DoiClientException(404, `DOI ${doiValue} not found`);
- }
-
- // Delete the DOI URL mapping to make it unfindable
- // This removes the URL but keeps the metadata registered
- const response = await axios.delete(`${this.serviceUrl}/doi/${doiValue}`, { auth });
-
- // Response Codes for DELETE /doi/{doi}
- // 200 OK: operation successful
- // 401 Unauthorized: no login
- // 403 Forbidden: login problem, quota exceeded
- // 404 Not Found: DOI does not exist
- if (response.status !== 200) {
- const message = `Unexpected DataCite MDS response code ${response.status}`;
- logger.error(message);
- throw new DoiClientException(response.status, message);
- }
-
- logger.info(`DOI ${doiValue} successfully made unfindable`);
- return response;
- } catch (error) {
- logger.error(`Failed to make DOI ${doiValue} unfindable: ${error.message}`);
- if (error instanceof DoiClientException) {
- throw error;
- }
- throw new DoiClientException(error.response?.status || 500, error.response?.data || error.message);
- }
- }
-
- /**
- * Makes a DOI findable again by re-registering the URL
- * await doiClient.makeDoiFindable(
- * '10.21388/tethys.231',
- * 'https://doi.dev.tethys.at/10.21388/tethys.231'
- * );
- *
- * @param doiValue The DOI identifier e.g. '10.5072/tethys.999'
- * @param landingPageUrl The landing page URL
- * @returns Promise> The http response
- */
- public async makeDoiFindable(doiValue: string, landingPageUrl: string): Promise> {
- const auth = {
- username: this.username,
- password: this.password,
- };
-
- try {
- // Re-register the DOI with its URL to make it findable again
- const response = await axios.put(`${this.serviceUrl}/doi/${doiValue}`, `doi=${doiValue}\nurl=${landingPageUrl}`, { auth });
-
- // Response Codes for PUT /doi/{doi}
- // 201 Created: operation successful
- // 400 Bad Request: request body must be exactly two lines: DOI and URL
- // 401 Unauthorized: no login
- // 403 Forbidden: login problem, quota exceeded
- // 412 Precondition failed: metadata must be uploaded first
- if (response.status !== 201) {
- const message = `Unexpected DataCite MDS response code ${response.status}`;
- logger.error(message);
- throw new DoiClientException(response.status, message);
- }
-
- logger.info(`DOI ${doiValue} successfully made findable again`);
- return response;
- } catch (error) {
- logger.error(`Failed to make DOI ${doiValue} findable: ${error.message}`);
- if (error instanceof DoiClientException) {
- throw error;
- }
- throw new DoiClientException(error.response?.status || 500, error.response?.data || error.message);
- }
- }
-
- /**
- * Gets the current state of a DOI (draft, registered, findable)
- * const state = await doiClient.getDoiState('10.21388/tethys.231');
- * console.log(`Current state: ${state}`); // 'findable'
- *
- * @param doiValue The DOI identifier
- * @returns Promise The DOI state or null if not found
- */
- public async getDoiState(doiValue: string): Promise {
- const doiInfo = await this.getDoiInfo(doiValue);
- return doiInfo?.state || null;
- }
}
diff --git a/app/Library/Utils/Index.ts b/app/Library/Utils/Index.ts
index 20253a4..9bc21f7 100644
--- a/app/Library/Utils/Index.ts
+++ b/app/Library/Utils/Index.ts
@@ -2,7 +2,7 @@ import Dataset from '#models/dataset';
import { Client } from '@opensearch-project/opensearch';
import { create } from 'xmlbuilder2';
import SaxonJS from 'saxon-js';
-import DatasetXmlSerializer from '#app/Library/DatasetXmlSerializer';
+import XmlModel from '#app/Library/XmlModel';
import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
import logger from '@adonisjs/core/services/logger';
import { readFileSync } from 'fs';
@@ -72,42 +72,31 @@ export default {
}
},
- /**
- * Index a dataset document to OpenSearch/Elasticsearch
- */
async indexDocument(dataset: Dataset, index_name: string): Promise {
try {
- // Load XSLT transformation file
- const xsltProc = readFileSync('public/assets2/solr.sef.json');
+ const proc = readFileSync('public/assets2/solr.sef.json');
+ const doc: string = await this.getTransformedString(dataset, proc);
- // Transform dataset to JSON document
- const jsonDoc: string = await this.getTransformedString(dataset, xsltProc);
-
- const document = JSON.parse(jsonDoc);
-
- // Index document to OpenSearch with doument json body
+ let document = JSON.parse(doc);
await this.client.index({
id: dataset.publish_id?.toString(),
index: index_name,
body: document,
- refresh: true, // make immediately searchable
+ refresh: true,
});
- logger.info(`Dataset ${dataset.publish_id} successfully indexed to ${index_name}`);
+ logger.info(`dataset with publish_id ${dataset.publish_id} successfully indexed`);
} catch (error) {
- logger.error(`Failed to index dataset ${dataset.publish_id}: ${error.message}`);
- throw error; // Re-throw to allow caller to handle
+ logger.error(`An error occurred while indexing datsaet with publish_id ${dataset.publish_id}.`);
}
},
- /**
- * Transform dataset XML to JSON using XSLT
- */
async getTransformedString(dataset: Dataset, proc: Buffer): Promise {
- // Generate XML string from dataset
- const xmlString = await this.generateDatasetXml(dataset);
+ let xml = create({ version: '1.0', encoding: 'UTF-8', standalone: true }, '');
+ const datasetNode = xml.root().ele('Dataset');
+ await createXmlRecord(dataset, datasetNode);
+ const xmlString = xml.end({ prettyPrint: false });
try {
- // Apply XSLT transformation
const result = await SaxonJS.transform({
stylesheetText: proc,
destination: 'serialized',
@@ -119,18 +108,6 @@ export default {
return '';
}
},
-
- /**
- * Generate XML string from dataset model
- */
- async generateDatasetXml(dataset: Dataset): Promise {
- const xml = create({ version: '1.0', encoding: 'UTF-8', standalone: true }, '');
- const datasetNode = xml.root().ele('Dataset');
-
- await createXmlRecord(dataset, datasetNode);
-
- return xml.end({ prettyPrint: false });
- },
};
/**
* Return the default global focus trap stack
@@ -138,49 +115,74 @@ export default {
* @return {import('focus-trap').FocusTrap[]}
*/
-/**
- * Create complete XML record for dataset
- * Handles caching and metadata enrichment
- */
+// export const indexDocument = async (dataset: Dataset, index_name: string, proc: Buffer): Promise => {
+// try {
+// const doc = await getJsonString(dataset, proc);
+
+// let document = JSON.parse(doc);
+// await client.index({
+// id: dataset.publish_id?.toString(),
+// index: index_name,
+// body: document,
+// refresh: true,
+// });
+// Logger.info(`dataset with publish_id ${dataset.publish_id} successfully indexed`);
+// } catch (error) {
+// Logger.error(`An error occurred while indexing datsaet with publish_id ${dataset.publish_id}.`);
+// }
+// };
+
+// const getJsonString = async (dataset, proc): Promise => {
+// let xml = create({ version: '1.0', encoding: 'UTF-8', standalone: true }, '');
+// const datasetNode = xml.root().ele('Dataset');
+// await createXmlRecord(dataset, datasetNode);
+// const xmlString = xml.end({ prettyPrint: false });
+
+// try {
+// const result = await transform({
+// stylesheetText: proc,
+// destination: 'serialized',
+// sourceText: xmlString,
+// });
+// return result.principalResult;
+// } catch (error) {
+// Logger.error(`An error occurred while creating the user, error: ${error.message},`);
+// return '';
+// }
+// };
+
const createXmlRecord = async (dataset: Dataset, datasetNode: XMLBuilder): Promise => {
const domNode = await getDatasetXmlDomNode(dataset);
-
- if (!domNode) {
- throw new Error(`Failed to generate XML DOM node for dataset ${dataset.id}`);
- }
-
- // Enrich with landing page URL
- if (dataset.publish_id) {
- addLandingPageAttribute(domNode, dataset.publish_id.toString());
- }
-
- // Add data type specification
- addSpecInformation(domNode, `data-type:${dataset.type}`);
-
- // Add collection information
- if (dataset.collections) {
- for (const coll of dataset.collections) {
- const collRole = coll.collectionRole;
- addSpecInformation(domNode, `${collRole.oai_name}:${coll.number}`);
+ if (domNode) {
+ // add frontdoor url and data-type
+ dataset.publish_id && addLandingPageAttribute(domNode, dataset.publish_id.toString());
+ addSpecInformation(domNode, 'data-type:' + dataset.type);
+ if (dataset.collections) {
+ for (const coll of dataset.collections) {
+ const collRole = coll.collectionRole;
+ addSpecInformation(domNode, collRole.oai_name + ':' + coll.number);
+ }
}
- }
- datasetNode.import(domNode);
+ datasetNode.import(domNode);
+ }
};
const getDatasetXmlDomNode = async (dataset: Dataset): Promise => {
- const serializer = new DatasetXmlSerializer(dataset).enableCaching().excludeEmptyFields();
+ const xmlModel = new XmlModel(dataset);
// xmlModel.setModel(dataset);
-
- // Load cache relationship if not already loaded
+ xmlModel.excludeEmptyFields();
+ xmlModel.caching = true;
+ // const cache = dataset.xmlCache ? dataset.xmlCache : null;
+ // dataset.load('xmlCache');
await dataset.load('xmlCache');
if (dataset.xmlCache) {
- serializer.setCache(dataset.xmlCache);
+ xmlModel.xmlCache = dataset.xmlCache;
}
- // Generate or retrieve cached DOM document
- const xmlDocument: XMLBuilder | null = await serializer.toXmlDocument();
- return xmlDocument;
+ // return cache.getDomDocument();
+ const domDocument: XMLBuilder | null = await xmlModel.getDomDocument();
+ return domDocument;
};
const addLandingPageAttribute = (domNode: XMLBuilder, dataid: string) => {
@@ -190,6 +192,6 @@ const addLandingPageAttribute = (domNode: XMLBuilder, dataid: string) => {
domNode.att('landingpage', url);
};
-const addSpecInformation = (domNode: XMLBuilder, information: string) => {
+const addSpecInformation= (domNode: XMLBuilder, information: string) => {
domNode.ele('SetSpec').att('Value', information);
-};
+};
\ No newline at end of file
diff --git a/app/Library/XmlModel.ts b/app/Library/XmlModel.ts
new file mode 100644
index 0000000..6f76474
--- /dev/null
+++ b/app/Library/XmlModel.ts
@@ -0,0 +1,129 @@
+import DocumentXmlCache from '#models/DocumentXmlCache';
+import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
+import Dataset from '#models/dataset';
+import Strategy from './Strategy.js';
+import { DateTime } from 'luxon';
+import { builder } from 'xmlbuilder2';
+
+/**
+ * This is the description of the interface
+ *
+ * @interface Conf
+ * @member {Model} model holds the current dataset model
+ * @member {XMLBuilder} dom holds the current DOM representation
+ * @member {Array} excludeFields List of fields to skip on serialization.
+ * @member {boolean} excludeEmpty True, if empty fields get excluded from serialization.
+ * @member {string} baseUri Base URI for xlink:ref elements
+ */
+export interface Conf {
+ model: Dataset;
+ dom?: XMLBuilder;
+ excludeFields: Array;
+ excludeEmpty: boolean;
+ baseUri: string;
+}
+
+export default class XmlModel {
+ private config: Conf;
+ // private strategy = null;
+ private cache: DocumentXmlCache | null = null;
+ private _caching = false;
+ private strategy: Strategy;
+
+ constructor(dataset: Dataset) {
+ // $this->strategy = new Strategy();// Opus_Model_Xml_Version1;
+ // $this->config = new Conf();
+ // $this->strategy->setup($this->config);
+
+ this.config = {
+ excludeEmpty: false,
+ baseUri: '',
+ excludeFields: [],
+ model: dataset,
+ };
+
+ this.strategy = new Strategy({
+ excludeEmpty: true,
+ baseUri: '',
+ excludeFields: [],
+ model: dataset,
+ });
+ }
+
+ set model(model: Dataset) {
+ this.config.model = model;
+ }
+
+ public excludeEmptyFields(): void {
+ this.config.excludeEmpty = true;
+ }
+
+ get xmlCache(): DocumentXmlCache | null {
+ return this.cache;
+ }
+
+ set xmlCache(cache: DocumentXmlCache) {
+ this.cache = cache;
+ }
+
+ get caching(): boolean {
+ return this._caching;
+ }
+ set caching(caching: boolean) {
+ this._caching = caching;
+ }
+
+ public async getDomDocument(): Promise {
+ const dataset = this.config.model;
+
+ let domDocument: XMLBuilder | null = await this.getDomDocumentFromXmlCache();
+ if (domDocument == null) {
+ domDocument = await this.strategy.createDomDocument();
+ // domDocument = create({ version: '1.0', encoding: 'UTF-8', standalone: true }, '');
+ if (this._caching) {
+ // caching is desired:
+ this.cache = this.cache || new DocumentXmlCache();
+ this.cache.document_id = dataset.id;
+ this.cache.xml_version = 1; // (int)$this->strategy->getVersion();
+ this.cache.server_date_modified = dataset.server_date_modified.toFormat('yyyy-MM-dd HH:mm:ss');
+ this.cache.xml_data = domDocument.end();
+ await this.cache.save();
+ }
+ const node = domDocument.find(
+ (n) => {
+ const test = n.node.nodeName == 'Rdr_Dataset';
+ return test;
+ },
+ false,
+ true,
+ )?.node;
+ if (node != undefined) {
+ domDocument = builder({ version: '1.0', encoding: 'UTF-8', standalone: true }, node);
+ }
+ }
+ return domDocument;
+ }
+
+ private async getDomDocumentFromXmlCache(): Promise {
+ const dataset: Dataset = this.config.model;
+ if (!this.cache) {
+ return null;
+ }
+ //.toFormat('YYYY-MM-DD HH:mm:ss');
+ let date: DateTime = dataset.server_date_modified;
+ const actuallyCached: boolean = await DocumentXmlCache.hasValidEntry(dataset.id, date);
+ if (!actuallyCached) {
+ return null;
+ }
+ //cache is actual return it for oai:
+ try {
+ if (this.cache) {
+ return this.cache.getDomDocument();
+ } else {
+ return null;
+ }
+ } catch (error) {
+ return null;
+ }
+ }
+}
diff --git a/app/controllers/projects_controller.ts b/app/controllers/projects_controller.ts
deleted file mode 100644
index 21e20df..0000000
--- a/app/controllers/projects_controller.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-// app/controllers/projects_controller.ts
-import Project from '#models/project';
-import type { HttpContext } from '@adonisjs/core/http';
-import { createProjectValidator, updateProjectValidator } from '#validators/project';
-
-export default class ProjectsController {
- // GET /settings/projects
- public async index({ inertia, auth }: HttpContext) {
- const projects = await Project.all();
- // return inertia.render('Admin/Project/Index', { projects });
- return inertia.render('Admin/Project/Index', {
- projects: projects,
- can: {
- edit: await auth.user?.can(['settings']),
- create: await auth.user?.can(['settings']),
- },
- });
- }
-
- // GET /settings/projects/create
- public async create({ inertia }: HttpContext) {
- return inertia.render('Admin/Project/Create');
- }
-
- // POST /settings/projects
- public async store({ request, response, session }: HttpContext) {
- // Validate the request data
- const data = await request.validateUsing(createProjectValidator);
-
- await Project.create(data);
-
- session.flash('success', 'Project created successfully');
- return response.redirect().toRoute('settings.project.index');
- }
-
- // GET /settings/projects/:id/edit
- public async edit({ params, inertia }: HttpContext) {
- const project = await Project.findOrFail(params.id);
- return inertia.render('Admin/Project/Edit', { project });
- }
-
- // PUT /settings/projects/:id
- public async update({ params, request, response, session }: HttpContext) {
- const project = await Project.findOrFail(params.id);
-
- // Validate the request data
- const data = await request.validateUsing(updateProjectValidator);
-
- await project.merge(data).save();
-
- session.flash('success', 'Project updated successfully');
- return response.redirect().toRoute('settings.project.index');
- }
-}
diff --git a/app/models/DocumentXmlCache.ts b/app/models/DocumentXmlCache.ts
index de8defc..ed7315e 100644
--- a/app/models/DocumentXmlCache.ts
+++ b/app/models/DocumentXmlCache.ts
@@ -4,8 +4,7 @@ import { builder, create } from 'xmlbuilder2';
import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
import db from '@adonisjs/lucid/services/db';
import { DateTime } from 'luxon';
-import type { BelongsTo } from '@adonisjs/lucid/types/relations';
-import logger from '@adonisjs/core/services/logger';
+import type { BelongsTo } from "@adonisjs/lucid/types/relations";
export default class DocumentXmlCache extends BaseModel {
public static namingStrategy = new SnakeCaseNamingStrategy();
@@ -67,38 +66,33 @@ export default class DocumentXmlCache extends BaseModel {
}
/**
- * Check if a valid (non-stale) cache entry exists
- * Cache is valid only if it was created AFTER the dataset's last modification
+ * Check if a dataset in a specific xml version is already cached or not.
*
- * @param datasetId - The dataset ID to check
- * @param datasetServerDateModified - The dataset's last modification timestamp
- * @returns true if valid cache exists, false otherwise
+ * @param mixed datasetId
+ * @param mixed serverDateModified
+ * @returns {Promise} Returns true on cached hit else false.
*/
+ // public static async hasValidEntry(datasetId: number, datasetServerDateModified: DateTime): Promise {
+ // // const formattedDate = dayjs(datasetServerDateModified).format('YYYY-MM-DD HH:mm:ss');
+
+ // const query = Database.from(this.table)
+ // .where('document_id', datasetId)
+ // .where('server_date_modified', '2023-08-17 16:51:03')
+ // .first();
+
+ // const row = await query;
+ // return !!row;
+ // }
+
+ // Assuming 'DocumentXmlCache' has a table with a 'server_date_modified' column in your database
public static async hasValidEntry(datasetId: number, datasetServerDateModified: DateTime): Promise {
const serverDateModifiedString: string = datasetServerDateModified.toFormat('yyyy-MM-dd HH:mm:ss'); // Convert DateTime to ISO string
-
- const row = await db
- .from(this.table)
+ const query = db.from(this.table)
.where('document_id', datasetId)
- .where('server_date_modified', '>', serverDateModifiedString) // Check if server_date_modified is newer or equal
+ .where('server_date_modified', '>=', serverDateModifiedString) // Check if server_date_modified is newer or equal
.first();
- const isValid = !!row;
-
- if (isValid) {
- logger.debug(`Valid cache found for dataset ${datasetId}`);
- } else {
- logger.debug(`No valid cache for dataset ${datasetId} (dataset modified: ${serverDateModifiedString})`);
- }
-
- return isValid;
- }
-
- /**
- * Invalidate (delete) cache entry
- */
- public async invalidate(): Promise {
- await this.delete();
- logger.debug(`Invalidated cache for document ${this.document_id}`);
+ const row = await query;
+ return !!row;
}
}
diff --git a/app/models/person.ts b/app/models/person.ts
index f4cf3a2..cdc612d 100644
--- a/app/models/person.ts
+++ b/app/models/person.ts
@@ -30,7 +30,7 @@ export default class Person extends BaseModel {
@column({})
public lastName: string;
- @column({ columnName: 'identifier_orcid' })
+ @column({})
public identifierOrcid: string;
@column({})
@@ -95,34 +95,4 @@ export default class Person extends BaseModel {
pivotColumns: ['role', 'sort_order', 'allow_email_contact'],
})
public datasets: ManyToMany;
-
- // public toJSON() {
- // const json = super.toJSON();
-
- // // Check if this person is loaded through a pivot relationship with sensitive roles
- // const pivotRole = this.$extras?.pivot_role;
- // if (pivotRole === 'author' || pivotRole === 'contributor') {
- // // Remove sensitive information for public-facing roles
- // delete json.email;
- // // delete json.identifierOrcid;
- // }
-
- // return json;
- // }
-
- // @afterFind()
- // public static async afterFindHook(person: Person) {
- // if (person.$extras?.pivot_role === 'author' || person.$extras?.pivot_role === 'contributor') {
- // person.email = undefined as any;
- // }
- // }
-
- // @afterFetch()
- // public static async afterFetchHook(persons: Person[]) {
- // persons.forEach(person => {
- // if (person.$extras?.pivot_role === 'author' || person.$extras?.pivot_role === 'contributor') {
- // person.email = undefined as any;
- // }
- // });
- // }
}
diff --git a/app/models/user.ts b/app/models/user.ts
index 7be02b9..5dbaab4 100644
--- a/app/models/user.ts
+++ b/app/models/user.ts
@@ -89,11 +89,24 @@ export default class User extends compose(BaseModel, AuthFinder) {
@column({})
public avatar: string;
+ // @hasOne(() => TotpSecret, {
+ // foreignKey: 'user_id',
+ // })
+ // public totp_secret: HasOne;
+
+ // @beforeSave()
+ // public static async hashPassword(user: User) {
+ // if (user.$dirty.password) {
+ // user.password = await hash.use('laravel').make(user.password);
+ // }
+ // }
+
public get isTwoFactorEnabled(): boolean {
return Boolean(this?.twoFactorSecret && this.state == TotpState.STATE_ENABLED);
// return Boolean(this.totp_secret?.twoFactorSecret);
}
+
@manyToMany(() => Role, {
pivotForeignKey: 'account_id',
pivotRelatedForeignKey: 'role_id',
@@ -129,9 +142,7 @@ export default class User extends compose(BaseModel, AuthFinder) {
@beforeFind()
@beforeFetch()
public static preloadRoles(user: User) {
- user.preload('roles', (builder) => {
- builder.select(['id', 'name', 'display_name', 'description']);
- });
+ user.preload('roles')
}
public async getBackupCodes(this: User): Promise {
diff --git a/app/validators/dataset.ts b/app/validators/dataset.ts
index f670b81..5417463 100644
--- a/app/validators/dataset.ts
+++ b/app/validators/dataset.ts
@@ -55,8 +55,8 @@ export const createDatasetValidator = vine.compile(
.translatedLanguage({ mainLanguageField: 'language', typeField: 'type' }),
}),
)
- // .minLength(1),
- .arrayContainsTypes({ typeA: 'abstract', typeB: 'translated' }),
+ // .minLength(1),
+ .arrayContainsTypes({ typeA: 'abstract', typeB: 'translated' }),
authors: vine
.array(
vine.object({
@@ -67,9 +67,8 @@ export const createDatasetValidator = vine.compile(
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
}),
)
.minLength(1)
@@ -84,10 +83,9 @@ export const createDatasetValidator = vine.compile(
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
pivot_contributor_type: vine.enum(Object.keys(ContributorTypes)),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
}),
)
.distinct('email')
@@ -160,8 +158,7 @@ export const createDatasetValidator = vine.compile(
.fileScan({ removeInfected: true }),
)
.minLength(1),
- }),
-);
+ }),);
/**
* Validates the dataset's update action
@@ -217,9 +214,8 @@ export const updateDatasetValidator = vine.compile(
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
}),
)
.minLength(1)
@@ -234,9 +230,8 @@ export const updateDatasetValidator = vine.compile(
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
pivot_contributor_type: vine.enum(Object.keys(ContributorTypes)),
}),
)
@@ -310,13 +305,12 @@ export const updateDatasetValidator = vine.compile(
.fileScan({ removeInfected: true }),
)
.dependentArrayMinLength({ dependentArray: 'fileInputs', min: 1 }),
- fileInputs: vine
- .array(
- vine.object({
- label: vine.string().trim().maxLength(100),
- }),
- )
- .optional(),
+ fileInputs: vine.array(
+ vine.object({
+ label: vine.string().trim().maxLength(100),
+ //extnames: extensions,
+ }),
+ ),
}),
);
@@ -371,9 +365,8 @@ export const updateEditorDatasetValidator = vine.compile(
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
}),
)
.minLength(1)
@@ -388,9 +381,8 @@ export const updateEditorDatasetValidator = vine.compile(
.email()
.normalizeEmail()
.isUniquePerson({ table: 'persons', column: 'email', idField: 'id' }),
- first_name: vine.string().trim().minLength(3).maxLength(255).optional().requiredWhen('name_type', '=', 'Personal'),
+ first_name: vine.string().trim().minLength(3).maxLength(255),
last_name: vine.string().trim().minLength(3).maxLength(255),
- identifier_orcid: vine.string().trim().maxLength(255).orcid().optional(),
pivot_contributor_type: vine.enum(Object.keys(ContributorTypes)),
}),
)
@@ -504,7 +496,7 @@ let messagesProvider = new SimpleMessagesProvider({
'files.array.minLength': 'At least {{ min }} file upload is required.',
'files.*.size': 'file size is to big',
'files.*.extnames': 'file extension is not supported',
- 'embargo_date.date.afterOrEqual': `Embargo date must be on or after ${dayjs().add(10, 'day').format('DD.MM.YYYY')}`,
+ 'embargo_date.date.afterOrEqual': `Embargo date must be on or after ${dayjs().add(10, 'day').format('DD.MM.YYYY')}`,
});
createDatasetValidator.messagesProvider = messagesProvider;
diff --git a/app/validators/project.ts b/app/validators/project.ts
deleted file mode 100644
index 7f3d1f8..0000000
--- a/app/validators/project.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-// app/validators/project.ts
-import vine from '@vinejs/vine';
-
-export const createProjectValidator = vine.compile(
- vine.object({
- label: vine.string().trim().minLength(1).maxLength(50) .regex(/^[a-z0-9-]+$/),
- name: vine
- .string()
- .trim()
- .minLength(3)
- .maxLength(255)
- .regex(/^[a-zA-Z0-9รครถรผรรรร\s-]+$/),
- description: vine.string().trim().maxLength(255).minLength(5).optional(),
- }),
-);
-
-export const updateProjectValidator = vine.compile(
- vine.object({
- // label is NOT included since it's readonly
- name: vine
- .string()
- .trim()
- .minLength(3)
- .maxLength(255)
- .regex(/^[a-zA-Z0-9รครถรผรรรร\s-]+$/),
- description: vine.string().trim().maxLength(255).minLength(5).optional(),
- }),
-);
diff --git a/app/validators/role.ts b/app/validators/role.ts
index 81262d9..61e8ecd 100644
--- a/app/validators/role.ts
+++ b/app/validators/role.ts
@@ -8,20 +8,20 @@ export const createRoleValidator = vine.compile(
vine.object({
name: vine
.string()
+ .isUnique({ table: 'roles', column: 'name' })
.trim()
.minLength(3)
.maxLength(255)
- .isUnique({ table: 'roles', column: 'name' })
- .regex(/^[a-zA-Z0-9]+$/), // Must be alphanumeric
+ .regex(/^[a-zA-Z0-9]+$/), //Must be alphanumeric with hyphens or underscores
display_name: vine
.string()
+ .isUnique({ table: 'roles', column: 'display_name' })
.trim()
.minLength(3)
.maxLength(255)
- .isUnique({ table: 'roles', column: 'display_name' })
.regex(/^[a-zA-Z0-9]+$/),
description: vine.string().trim().escape().minLength(3).maxLength(255).optional(),
- permissions: vine.array(vine.number()).minLength(1), // At least one permission required
+ permissions: vine.array(vine.number()).minLength(1), // define at least one permission for the new role
}),
);
@@ -29,28 +29,21 @@ export const updateRoleValidator = vine.withMetaData<{ roleId: number }>().compi
vine.object({
name: vine
.string()
- .trim()
- .minLength(3)
- .maxLength(255)
+ // .unique(async (db, value, field) => {
+ // const result = await db.from('roles').select('id').whereNot('id', field.meta.roleId).where('name', value).first();
+ // return result.length ? false : true;
+ // })
.isUnique({
table: 'roles',
column: 'name',
whereNot: (field) => field.meta.roleId,
})
- .regex(/^[a-zA-Z0-9]+$/),
- display_name: vine
- .string()
.trim()
.minLength(3)
- .maxLength(255)
- .isUnique({
- table: 'roles',
- column: 'display_name',
- whereNot: (field) => field.meta.roleId,
- })
- .regex(/^[a-zA-Z0-9]+$/),
+ .maxLength(255),
+
description: vine.string().trim().escape().minLength(3).maxLength(255).optional(),
- permissions: vine.array(vine.number()).minLength(1), // At least one permission required
+ permissions: vine.array(vine.number()).minLength(1), // define at least one permission for the new role
}),
);
diff --git a/clamd.conf b/clamd.conf
index f066387..171396d 100644
--- a/clamd.conf
+++ b/clamd.conf
@@ -5,23 +5,7 @@ LogSyslog no
LogVerbose yes
DatabaseDirectory /var/lib/clamav
LocalSocket /var/run/clamav/clamd.socket
-# LocalSocketMode 666
-# Optional: allow multiple threads
-MaxThreads 20
-# Disable TCP socket
-# TCPSocket 0
-
-# TCP port address.
-# Default: no
-# TCPSocket 3310
-# TCP address.
-# By default we bind to INADDR_ANY, probably not wise.
-# Enable the following to provide some degree of protection
-# from the outside world.
-# Default: no
-# TCPAddr 127.0.0.1
-
Foreground no
PidFile /var/run/clamav/clamd.pid
-# LocalSocketGroup node # Changed from 'clamav'
-# User node # Changed from 'clamav' - clamd runs as clamav user
\ No newline at end of file
+LocalSocketGroup node
+User node
\ No newline at end of file
diff --git a/commands/fix_dataset_cross_references.ts b/commands/fix_dataset_cross_references.ts
deleted file mode 100644
index baa2e0e..0000000
--- a/commands/fix_dataset_cross_references.ts
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
-|--------------------------------------------------------------------------
-| node ace make:command fix-dataset-cross-references
-| DONE: create commands/fix_dataset_cross_references.ts
-|--------------------------------------------------------------------------
-*/
-import { BaseCommand, flags } from '@adonisjs/core/ace';
-import type { CommandOptions } from '@adonisjs/core/types/ace';
-import { DateTime } from 'luxon';
-import Dataset from '#models/dataset';
-import DatasetReference from '#models/dataset_reference';
-import AppConfig from '#models/appconfig';
-// import env from '#start/env';
-
-interface MissingCrossReference {
- sourceDatasetId: number;
- targetDatasetId: number;
- sourcePublishId: number | null;
- targetPublishId: number | null;
- sourceDoi: string | null;
- targetDoi: string | null;
- referenceType: string;
- relation: string;
- doi: string | null;
- reverseRelation: string;
- sourceReferenceLabel: string | null;
-}
-
-export default class DetectMissingCrossReferences extends BaseCommand {
- static commandName = 'detect:missing-cross-references';
- static description = 'Detect missing bidirectional cross-references between versioned datasets';
-
- public static needsApplication = true;
-
- @flags.boolean({ alias: 'f', description: 'Fix missing cross-references automatically' })
- public fix: boolean = false;
-
- @flags.boolean({ alias: 'v', description: 'Verbose output' })
- public verbose: boolean = false;
-
- @flags.number({ alias: 'p', description: 'Filter by specific publish_id (source or target dataset)' })
- public publish_id?: number;
-
- // example: node ace detect:missing-cross-references --verbose -p 227 //if you want to filter by specific publish_id with details
- // example: node ace detect:missing-cross-references --verbose
- // example: node ace detect:missing-cross-references --fix -p 227 //if you want to filter by specific publish_id and fix it
- // example: node ace detect:missing-cross-references
-
- public static options: CommandOptions = {
- startApp: true,
- staysAlive: false,
- };
-
- // Define the allowed relations that we want to process
- private readonly ALLOWED_RELATIONS = [
- 'IsNewVersionOf',
- 'IsPreviousVersionOf',
- 'IsVariantFormOf',
- 'IsOriginalFormOf',
- 'Continues',
- 'IsContinuedBy',
- 'HasPart',
- 'IsPartOf',
- ];
- // private readonly ALLOWED_RELATIONS = ['IsPreviousVersionOf', 'IsOriginalFormOf'];
-
- async run() {
- this.logger.info('๐ Detecting missing cross-references...');
- this.logger.info(`๐ Processing only these relations: ${this.ALLOWED_RELATIONS.join(', ')}`);
-
- if (this.publish_id) {
- this.logger.info(`Filtering by publish_id: ${this.publish_id}`);
- }
-
- try {
- const missingReferences = await this.findMissingCrossReferences();
-
- // Store count in AppConfig if not fixing and count >= 1
- if (!this.fix && missingReferences.length >= 1) {
- await this.storeMissingCrossReferencesCount(missingReferences.length);
- }
-
- if (missingReferences.length === 0) {
- const filterMsg = this.publish_id ? ` for publish_id ${this.publish_id}` : '';
- this.logger.success(`All cross-references are properly linked for the specified relations${filterMsg}!`);
- // Clear the count if no missing references
- if (!this.fix) {
- await this.storeMissingCrossReferencesCount(0);
- }
- return;
- }
-
- const filterMsg = this.publish_id ? ` (filtered by publish_id ${this.publish_id})` : '';
- this.logger.warning(`Found ${missingReferences.length} missing cross-reference(s)${filterMsg}:`);
-
- // Show brief list if not verbose mode
- if (!this.verbose) {
- for (const missing of missingReferences) {
- const sourceDoi = missing.sourceDoi ? ` DOI: ${missing.sourceDoi}` : '';
- const targetDoi = missing.targetDoi ? ` DOI: ${missing.targetDoi}` : '';
-
- this.logger.info(
- `Dataset ${missing.sourceDatasetId} (Publish ID: ${missing.sourcePublishId}${sourceDoi}) ${missing.relation} Dataset ${missing.targetDatasetId} (Publish ID: ${missing.targetPublishId}${targetDoi}) โ missing reverse: ${missing.reverseRelation}`,
- );
- }
- } else {
- // Verbose mode - show detailed info
- for (const missing of missingReferences) {
- this.logger.info(
- `Dataset ${missing.sourceDatasetId} references ${missing.targetDatasetId}, but reverse reference is missing`,
- );
- this.logger.info(` - Reference type: ${missing.referenceType}`);
- this.logger.info(` - Relation: ${missing.relation}`);
- this.logger.info(` - DOI: ${missing.doi}`);
- }
- }
-
- if (this.fix) {
- await this.fixMissingReferences(missingReferences);
- // Clear the count after fixing
- await this.storeMissingCrossReferencesCount(0);
- this.logger.success('All missing cross-references have been fixed!');
- } else {
- if (this.verbose) {
- this.printMissingReferencesList(missingReferences);
- }
- this.logger.info('๐ก Run with --fix flag to automatically create missing cross-references');
- if (this.publish_id) {
- this.logger.info(`๐ฏ Currently filtering by publish_id: ${this.publish_id}`);
- }
- }
- } catch (error) {
- this.logger.error('Error detecting missing cross-references:', error);
- process.exit(1);
- }
- }
-
- private async storeMissingCrossReferencesCount(count: number): Promise {
- try {
- await AppConfig.updateOrCreate(
- {
- appid: 'commands',
- configkey: 'missing_cross_references_count',
- },
- {
- configvalue: count.toString(),
- },
- );
-
- this.logger.info(`๐ Stored missing cross-references count in database: ${count}`);
- } catch (error) {
- this.logger.error('Failed to store missing cross-references count:', error);
- }
- }
-
- private async findMissingCrossReferences(): Promise {
- const missingReferences: {
- sourceDatasetId: number;
- targetDatasetId: number;
- sourcePublishId: number | null;
- targetPublishId: number | null;
- sourceDoi: string | null;
- targetDoi: string | null;
- referenceType: string;
- relation: string;
- doi: string | null;
- reverseRelation: string;
- sourceReferenceLabel: string | null;
- }[] = [];
-
- this.logger.info('๐ Querying dataset references...');
-
- // Find all references that point to Tethys datasets (DOI or URL containing tethys DOI)
- // Only from datasets that are published AND only for allowed relations
- const tethysReferencesQuery = DatasetReference.query()
- .whereIn('type', ['DOI', 'URL'])
- .whereIn('relation', this.ALLOWED_RELATIONS) // Only process allowed relations
- .where((query) => {
- query.where('value', 'like', '%doi.org/10.24341/tethys.%').orWhere('value', 'like', '%tethys.at/dataset/%');
- })
- .preload('dataset', (datasetQuery) => {
- datasetQuery.preload('identifier');
- })
- .whereHas('dataset', (datasetQuery) => {
- datasetQuery.where('server_state', 'published');
- });
- if (typeof this.publish_id === 'number') {
- tethysReferencesQuery.whereHas('dataset', (datasetQuery) => {
- datasetQuery.where('publish_id', this.publish_id as number);
- });
- }
-
- const tethysReferences = await tethysReferencesQuery.exec();
-
- this.logger.info(`๐ Found ${tethysReferences.length} Tethys references from published datasets (allowed relations only)`);
-
- let processedCount = 0;
- let skippedCount = 0;
-
- for (const reference of tethysReferences) {
- processedCount++;
-
- // if (this.verbose && processedCount % 10 === 0) {
- // this.logger.info(`๐ Processed ${processedCount}/${tethysReferences.length} references...`);
- // }
-
- // Double-check that this relation is in our allowed list (safety check)
- if (!this.ALLOWED_RELATIONS.includes(reference.relation)) {
- skippedCount++;
- if (this.verbose) {
- this.logger.info(`โญ๏ธ Skipping relation "${reference.relation}" - not in allowed list`);
- }
- continue;
- }
-
- // Extract dataset publish_id from DOI or URL
- // const targetDatasetPublish = this.extractDatasetPublishIdFromReference(reference.value);
- // Extract DOI from reference URL
- const doi = this.extractDoiFromReference(reference.value);
-
- // if (!targetDatasetPublish) {
- // if (this.verbose) {
- // this.logger.warning(`Could not extract publish ID from: ${reference.value}`);
- // }
- // continue;
- // }
- if (!doi) {
- if (this.verbose) {
- this.logger.warning(`Could not extract DOI from: ${reference.value}`);
- }
- continue;
- }
-
- // // Check if target dataset exists and is published
- // const targetDataset = await Dataset.query()
- // .where('publish_id', targetDatasetPublish)
- // .where('server_state', 'published')
- // .preload('identifier')
- // .first();
- // Check if target dataset exists and is published by querying via identifier
- const targetDataset = await Dataset.query()
- .where('server_state', 'published')
- .whereHas('identifier', (query) => {
- query.where('value', doi);
- })
- .preload('identifier')
- .first();
-
- if (!targetDataset) {
- if (this.verbose) {
- this.logger.warning(`โ ๏ธ Target dataset with publish_id ${doi} not found or not published`);
- }
- continue;
- }
-
- // Ensure we have a valid source dataset with proper preloading
- if (!reference.dataset) {
- this.logger.warning(`โ ๏ธ Source dataset ${reference.document_id} not properly loaded, skipping...`);
- continue;
- }
-
- // Check if reverse reference exists
- const reverseReferenceExists = await this.checkReverseReferenceExists(
- targetDataset.id,
- reference.document_id,
- reference.relation,
- reference.dataset.identifier.value
- );
-
- if (!reverseReferenceExists) {
- const reverseRelation = this.getReverseRelation(reference.relation);
- if (reverseRelation) {
- // Only add if we have a valid reverse relation
- missingReferences.push({
- sourceDatasetId: reference.document_id,
- targetDatasetId: targetDataset.id,
- sourcePublishId: reference.dataset.publish_id || null,
- targetPublishId: targetDataset.publish_id || null,
- referenceType: reference.type,
- relation: reference.relation,
- doi: reference.value,
- reverseRelation: reverseRelation,
- sourceDoi: reference.dataset.identifier ? reference.dataset.identifier.value : null,
- targetDoi: targetDataset.identifier ? targetDataset.identifier.value : null,
- sourceReferenceLabel: reference.label || null,
- });
- }
- }
- }
-
- this.logger.info(`โ
Processed ${processedCount} references (${skippedCount} skipped due to relation filtering)`);
- return missingReferences;
- }
-
- private extractDoiFromReference(reference: string): string | null {
- // Match DOI pattern, with or without URL prefix
- const doiPattern = /(?:https?:\/\/)?(?:doi\.org\/)?(.+)/i;
- const match = reference.match(doiPattern);
-
- if (match && match[1]) {
- return match[1]; // Returns just "10.24341/tethys.99.2"
- }
-
- return null;
- }
-
- private extractDatasetPublishIdFromReference(value: string): number | null {
- // Extract from DOI: https://doi.org/10.24341/tethys.107 -> 107
- const doiMatch = value.match(/10\.24341\/tethys\.(\d+)/);
- if (doiMatch) {
- return parseInt(doiMatch[1]);
- }
-
- // Extract from URL: https://tethys.at/dataset/107 -> 107
- const urlMatch = value.match(/tethys\.at\/dataset\/(\d+)/);
- if (urlMatch) {
- return parseInt(urlMatch[1]);
- }
-
- return null;
- }
-
- private async checkReverseReferenceExists(
- targetDatasetId: number,
- sourceDatasetId: number,
- originalRelation: string,
- sourceDatasetIdentifier: string | null,
- ): Promise {
- const reverseRelation = this.getReverseRelation(originalRelation);
-
- if (!reverseRelation) {
- return true; // If no reverse relation is defined, consider it as "exists" to skip processing
- }
-
- // Only check for reverse references where the source dataset is also published
- const reverseReference = await DatasetReference.query()
- // We don't filter by source document_id here to find any incoming reference from any published dataset
- .where('document_id', targetDatasetId)
- // .where('related_document_id', sourceDatasetId) // Ensure it's an incoming reference
- .where('relation', reverseRelation)
- .where('value', 'like', `%${sourceDatasetIdentifier}`) // Basic check to ensure it points back to source dataset
- .first();
-
- return !!reverseReference;
- }
-
- private getReverseRelation(relation: string): string | null {
- const relationMap: Record = {
- IsNewVersionOf: 'IsPreviousVersionOf',
- IsPreviousVersionOf: 'IsNewVersionOf',
- IsVariantFormOf: 'IsOriginalFormOf',
- IsOriginalFormOf: 'IsVariantFormOf',
- Continues: 'IsContinuedBy',
- IsContinuedBy: 'Continues',
- HasPart: 'IsPartOf',
- IsPartOf: 'HasPart',
- };
-
- // Only return reverse relation if it exists in our map, otherwise return null
- return relationMap[relation] || null;
- }
-
- private printMissingReferencesList(missingReferences: MissingCrossReference[]) {
- console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
- console.log('โ MISSING CROSS-REFERENCES REPORT โ');
- console.log('โ (Published Datasets Only - Filtered Relations) โ');
- console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
- console.log();
-
- missingReferences.forEach((missing, index) => {
- console.log(
- `${index + 1}. Dataset ${missing.sourceDatasetId} (Publish ID: ${missing.sourcePublishId} Identifier: ${missing.sourceDoi})
- ${missing.relation} Dataset ${missing.targetDatasetId} (Publish ID: ${missing.targetPublishId} Identifier: ${missing.targetDoi})`,
- );
- console.log(` โโ Current relation: "${missing.relation}"`);
- console.log(` โโ Missing reverse relation: "${missing.reverseRelation}"`);
- console.log(` โโ Reference type: ${missing.referenceType}`);
- console.log(` โโ DOI/URL: ${missing.doi}`);
- console.log();
- });
-
- console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
- console.log(`โ SUMMARY: ${missingReferences.length} missing reverse reference(s) detected โ`);
- console.log(`โ Processed relations: ${this.ALLOWED_RELATIONS.join(', ')} โ`);
- console.log('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
- }
-
- private async fixMissingReferences(missingReferences: MissingCrossReference[]) {
- this.logger.info('๐ง Creating missing cross-references in database...');
-
- let fixedCount = 0;
- let errorCount = 0;
-
- for (const [index, missing] of missingReferences.entries()) {
- try {
- // Get both source and target datasets
- const sourceDataset = await Dataset.query()
- .where('id', missing.sourceDatasetId)
- .where('server_state', 'published')
- .preload('identifier')
- .preload('titles') // Preload titles to get mainTitle
- .first();
-
- const targetDataset = await Dataset.query().where('id', missing.targetDatasetId).where('server_state', 'published').first();
-
- if (!sourceDataset) {
- this.logger.warning(`โ ๏ธ Source dataset ${missing.sourceDatasetId} not found or not published, skipping...`);
- errorCount++;
- continue;
- }
-
- if (!targetDataset) {
- this.logger.warning(`โ ๏ธ Target dataset ${missing.targetDatasetId} not found or not published, skipping...`);
- errorCount++;
- continue;
- }
-
- // **NEW: Update the original reference if related_document_id is missing**
- const originalReference = await DatasetReference.query()
- .where('document_id', missing.sourceDatasetId)
- .where('relation', missing.relation)
- .where('value', 'like', `%${missing.targetDoi}%`)
- .first();
- if (originalReference && !originalReference.related_document_id) {
- originalReference.related_document_id = missing.targetDatasetId;
- await originalReference.save();
- if (this.verbose) {
- this.logger.info(`๐ Updated original reference with related_document_id: ${missing.targetDatasetId}`);
- }
- }
-
- // Create the reverse reference using the referenced_by relationship
- // Example: If Dataset 297 IsNewVersionOf Dataset 144
- // We create an incoming reference for Dataset 144 that shows Dataset 297 IsPreviousVersionOf it
- const reverseReference = new DatasetReference();
- // Don't set document_id - this creates an incoming reference via related_document_id
- reverseReference.document_id = missing.targetDatasetId; //
- reverseReference.related_document_id = missing.sourceDatasetId;
- reverseReference.type = 'DOI';
- reverseReference.relation = missing.reverseRelation;
-
- // Use the source dataset's DOI for the value (what's being referenced)
- if (sourceDataset.identifier?.value) {
- reverseReference.value = `https://doi.org/${sourceDataset.identifier.value}`;
- } else {
- // Fallback to dataset URL if no DOI
- reverseReference.value = `https://tethys.at/dataset/${sourceDataset.publish_id || missing.sourceDatasetId}`;
- }
-
- // Use the source dataset's main title for the label
- //reverseReference.label = sourceDataset.mainTitle || `Dataset ${missing.sourceDatasetId}`;
- // get label of forward reference
- reverseReference.label = missing.sourceReferenceLabel || sourceDataset.mainTitle || `Dataset ${missing.sourceDatasetId}`;
- // reverseReference.notes = `Auto-created by detect:missing-cross-references command on ${DateTime.now().toISO()} to fix missing bidirectional reference.`;
-
- // Save the new reverse reference
- // Also save 'server_date_modified' on target dataset to trigger any downstream updates (e.g. search index)
- targetDataset.server_date_modified = DateTime.now();
- await targetDataset.save();
-
- await reverseReference.save();
- fixedCount++;
-
- if (this.verbose) {
- this.logger.info(
- `โ
[${index + 1}/${missingReferences.length}] Created reverse reference: Dataset ${missing.sourceDatasetId} -> ${missing.targetDatasetId} (${missing.reverseRelation})`,
- );
- } else if ((index + 1) % 10 === 0) {
- this.logger.info(`๐ Fixed ${fixedCount}/${missingReferences.length} references...`);
- }
- } catch (error) {
- this.logger.error(
- `โ Error creating reverse reference for datasets ${missing.targetDatasetId} -> ${missing.sourceDatasetId}:`,
- error,
- );
- errorCount++;
- }
- }
-
- this.logger.info(`๐ Fix completed: ${fixedCount} created, ${errorCount} errors`);
- }
-}
diff --git a/commands/index_datasets.ts b/commands/index_datasets.ts
index 322d4b8..ee76268 100644
--- a/commands/index_datasets.ts
+++ b/commands/index_datasets.ts
@@ -4,7 +4,7 @@
import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
import { create } from 'xmlbuilder2';
import Dataset from '#models/dataset';
-import XmlModel from '#app/Library/DatasetXmlSerializer';
+import XmlModel from '#app/Library/XmlModel';
import { readFileSync } from 'fs';
import SaxonJS from 'saxon-js';
import { Client } from '@opensearch-project/opensearch';
@@ -12,8 +12,10 @@ import { getDomain } from '#app/utils/utility-functions';
import { BaseCommand, flags } from '@adonisjs/core/ace';
import { CommandOptions } from '@adonisjs/core/types/ace';
import env from '#start/env';
+// import db from '@adonisjs/lucid/services/db';
+// import { default as Dataset } from '#models/dataset';
import logger from '@adonisjs/core/services/logger';
-import { DateTime } from 'luxon';
+
const opensearchNode = env.get('OPENSEARCH_HOST', 'localhost');
const client = new Client({ node: `${opensearchNode}` }); // replace with your OpenSearch endpoint
@@ -28,10 +30,11 @@ export default class IndexDatasets extends BaseCommand {
public publish_id: number;
public static options: CommandOptions = {
- startApp: true, // Ensures the IoC container is ready to use
- staysAlive: false, // Command exits after running
+ startApp: true,
+ staysAlive: false,
};
+
async run() {
logger.debug('Hello world!');
// const { default: Dataset } = await import('#models/dataset');
@@ -41,12 +44,10 @@ export default class IndexDatasets extends BaseCommand {
const index_name = 'tethys-records';
for (var dataset of datasets) {
- const shouldUpdate = await this.shouldUpdateDataset(dataset, index_name);
- if (shouldUpdate) {
- await this.indexDocument(dataset, index_name, proc);
- } else {
- logger.info(`Dataset with publish_id ${dataset.publish_id} is up to date, skipping indexing`);
- }
+ // Logger.info(`File publish_id ${dataset.publish_id}`);
+ // const jsonString = await this.getJsonString(dataset, proc);
+ // console.log(jsonString);
+ await this.indexDocument(dataset, index_name, proc);
}
}
@@ -64,46 +65,6 @@ export default class IndexDatasets extends BaseCommand {
return await query.exec();
}
- private async shouldUpdateDataset(dataset: Dataset, index_name: string): Promise {
- try {
- // Check if publish_id exists before proceeding
- if (!dataset.publish_id) {
- // Return true to update since document doesn't exist in OpenSearch yet
- return true;
- }
- // Get the existing document from OpenSearch
- const response = await client.get({
- index: index_name,
- id: dataset.publish_id?.toString(),
- });
-
- const existingDoc = response.body._source;
-
- // Compare server_date_modified
- if (existingDoc && existingDoc.server_date_modified) {
- // Convert Unix timestamp (seconds) to milliseconds for DateTime.fromMillis()
- const existingModified = DateTime.fromMillis(Number(existingDoc.server_date_modified) * 1000);
- const currentModified = dataset.server_date_modified;
-
- // Only update if the dataset has been modified more recently
- if (currentModified <= existingModified) {
- return false;
- }
- }
-
- return true;
- } catch (error) {
- // If document doesn't exist or other error, we should index it
- if (error.statusCode === 404) {
- logger.info(`Dataset with publish_id ${dataset.publish_id} not found in index, will create new document`);
- return true;
- }
-
- logger.warn(`Error checking existing document for publish_id ${dataset.publish_id}: ${error.message}`);
- return true; // Index anyway if we can't determine the status
- }
- }
-
private async indexDocument(dataset: Dataset, index_name: string, proc: Buffer): Promise {
try {
const doc = await this.getJsonString(dataset, proc);
@@ -117,8 +78,7 @@ export default class IndexDatasets extends BaseCommand {
});
logger.info(`dataset with publish_id ${dataset.publish_id} successfully indexed`);
} catch (error) {
- logger.error(`An error occurred while indexing dataset with publish_id ${dataset.publish_id}.
- Error: ${error.message}`);
+ logger.error(`An error occurred while indexing dataset with publish_id ${dataset.publish_id}.`);
}
}
@@ -151,16 +111,19 @@ export default class IndexDatasets extends BaseCommand {
}
private async getDatasetXmlDomNode(dataset: Dataset): Promise {
- const serializer = new XmlModel(dataset).enableCaching().excludeEmptyFields();
+ const xmlModel = new XmlModel(dataset);
// xmlModel.setModel(dataset);
-
+ xmlModel.excludeEmptyFields();
+ xmlModel.caching = true;
+ // const cache = dataset.xmlCache ? dataset.xmlCache : null;
+ // dataset.load('xmlCache');
if (dataset.xmlCache) {
- serializer.setCache(dataset.xmlCache);
+ xmlModel.xmlCache = dataset.xmlCache;
}
- // return cache.toXmlDocument();
- const xmlDocument: XMLBuilder | null = await serializer.toXmlDocument();
- return xmlDocument;
+ // return cache.getDomDocument();
+ const domDocument: XMLBuilder | null = await xmlModel.getDomDocument();
+ return domDocument;
}
private addSpecInformation(domNode: XMLBuilder, information: string) {
diff --git a/commands/list_updatable_datacite.ts b/commands/list_updatable_datacite.ts
deleted file mode 100644
index aed411a..0000000
--- a/commands/list_updatable_datacite.ts
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
-|--------------------------------------------------------------------------
-| node ace make:command list-updateable-datacite
-| DONE: create commands/list_updeatable_datacite.ts
-|--------------------------------------------------------------------------
-*/
-import { BaseCommand, flags } from '@adonisjs/core/ace';
-import { CommandOptions } from '@adonisjs/core/types/ace';
-import Dataset from '#models/dataset';
-import { DoiClient } from '#app/Library/Doi/DoiClient';
-import env from '#start/env';
-import logger from '@adonisjs/core/services/logger';
-import { DateTime } from 'luxon';
-import pLimit from 'p-limit';
-
-export default class ListUpdateableDatacite extends BaseCommand {
- static commandName = 'list:updateable-datacite';
- static description = 'List all datasets that need DataCite DOI updates';
-
- public static needsApplication = true;
-
- // private chunkSize = 100; // Set chunk size for pagination
-
- @flags.boolean({ alias: 'v', description: 'Verbose output showing detailed information' })
- public verbose: boolean = false;
-
- @flags.boolean({ alias: 'c', description: 'Show only count of updatable datasets' })
- public countOnly: boolean = false;
-
- @flags.boolean({ alias: 'i', description: 'Show only publish IDs (useful for scripting)' })
- public idsOnly: boolean = false;
-
- @flags.number({ description: 'Chunk size for processing datasets (default: 50)' })
- public chunkSize: number = 50;
-
- //example: node ace list:updateable-datacite
- //example: node ace list:updateable-datacite --verbose
- //example: node ace list:updateable-datacite --count-only
- //example: node ace list:updateable-datacite --ids-only
- //example: node ace list:updateable-datacite --chunk-size 50
-
- public static options: CommandOptions = {
- startApp: true,
- stayAlive: false,
- };
-
- async run() {
- const prefix = env.get('DATACITE_PREFIX', '');
- const base_domain = env.get('BASE_DOMAIN', '');
-
- if (!prefix || !base_domain) {
- logger.error('Missing DATACITE_PREFIX or BASE_DOMAIN environment variables');
- return;
- }
-
- // Prevent conflicting flags
- if ((this.verbose && this.countOnly) || (this.verbose && this.idsOnly)) {
- logger.error('Flags --verbose cannot be combined with --count-only or --ids-only');
- return;
- }
-
- const chunkSize = this.chunkSize || 50;
- let page = 1;
- let hasMoreDatasets = true;
- let totalProcessed = 0;
- const updatableDatasets: Dataset[] = [];
-
- if (!this.countOnly && !this.idsOnly) {
- logger.info(`Processing datasets in chunks of ${chunkSize}...`);
- }
-
- while (hasMoreDatasets) {
- const datasets = await this.getDatasets(page, chunkSize);
-
- if (datasets.length === 0) {
- hasMoreDatasets = false;
- break;
- }
-
- if (!this.countOnly && !this.idsOnly) {
- logger.info(`Processing chunk ${page} (${datasets.length} datasets)...`);
- }
-
- const chunkUpdatableDatasets = await this.processChunk(datasets);
- updatableDatasets.push(...chunkUpdatableDatasets);
- totalProcessed += datasets.length;
-
- page += 1;
- if (datasets.length < chunkSize) {
- hasMoreDatasets = false;
- }
- }
-
- if (!this.countOnly && !this.idsOnly) {
- logger.info(`Processed ${totalProcessed} datasets total, found ${updatableDatasets.length} that need updates`);
- }
-
- if (this.countOnly) {
- console.log(updatableDatasets.length);
- } else if (this.idsOnly) {
- updatableDatasets.forEach((dataset) => console.log(dataset.publish_id));
- } else if (this.verbose) {
- await this.showVerboseOutput(updatableDatasets);
- } else {
- this.showSimpleOutput(updatableDatasets);
- }
- }
-
- /**
- * Processes a chunk of datasets to determine which ones need DataCite updates
- *
- * This method handles parallel processing of datasets within a chunk, providing
- * efficient error handling and filtering of results.
- *
- * @param datasets - Array of Dataset objects to process
- * @returns Promise - Array of datasets that need updates
- */
- // private async processChunk(datasets: Dataset[]): Promise {
- // // Process datasets in parallel using Promise.allSettled for better error handling
- // //
- // // Why Promise.allSettled vs Promise.all?
- // // - Promise.all fails fast: if ANY promise rejects, the entire operation fails
- // // - Promise.allSettled waits for ALL promises: some can fail, others succeed
- // // - This is crucial for batch processing where we don't want one bad dataset
- // // to stop processing of the entire chunk
- // const results = await Promise.allSettled(
- // datasets.map(async (dataset) => {
- // try {
- // // Check if this specific dataset needs a DataCite update
- // const needsUpdate = await this.shouldUpdateDataset(dataset);
-
- // // Return the dataset if it needs update, null if it doesn't
- // // This creates a sparse array that we'll filter later
- // return needsUpdate ? dataset : null;
- // } catch (error) {
- // // Error handling for individual dataset checks
- // //
- // // Log warnings only if we're not in silent modes (count-only or ids-only)
- // // This prevents log spam when running automated scripts
- // if (!this.countOnly && !this.idsOnly) {
- // logger.warn(`Error checking dataset ${dataset.publish_id}: ${error.message}`);
- // }
-
- // // IMPORTANT DECISION: Return the dataset anyway if we can't determine status
- // //
- // // Why? It's safer to include a dataset that might not need updating
- // // than to miss one that actually does need updating. This follows the
- // // "fail-safe" principle - if we're unsure, err on the side of caution
- // return dataset;
- // }
- // }),
- // );
-
- // // Filter and extract results from Promise.allSettled response
- // //
- // // Promise.allSettled returns an array of objects with this structure:
- // // - { status: 'fulfilled', value: T } for successful promises
- // // - { status: 'rejected', reason: Error } for failed promises
- // //
- // // We need to:
- // // 1. Only get fulfilled results (rejected ones are already handled above)
- // // 2. Filter out null values (datasets that don't need updates)
- // // 3. Extract the actual Dataset objects from the wrapper
- // return results
- // .filter(
- // (result): result is PromiseFulfilledResult =>
- // // Type guard: only include fulfilled results that have actual values
- // // This filters out:
- // // - Rejected promises (shouldn't happen due to try/catch, but safety first)
- // // - Fulfilled promises that returned null (datasets that don't need updates)
- // result.status === 'fulfilled' && result.value !== null,
- // )
- // .map((result) => result.value!); // Extract the Dataset from the wrapper
- // // The ! is safe here because we filtered out null values above
- // }
-
- private async processChunk(datasets: Dataset[]): Promise {
- // Limit concurrency to avoid API flooding (e.g., max 5 at once)
- const limit = pLimit(5);
-
- const tasks = datasets.map((dataset) =>
- limit(async () => {
- try {
- const needsUpdate = await this.shouldUpdateDataset(dataset);
- return needsUpdate ? dataset : null;
- } catch (error) {
- if (!this.countOnly && !this.idsOnly) {
- logger.warn(
- `Error checking dataset ${dataset.publish_id}: ${
- error instanceof Error ? error.message : JSON.stringify(error)
- }`,
- );
- }
- // Fail-safe: include dataset if uncertain
- return dataset;
- }
- }),
- );
-
- const results = await Promise.allSettled(tasks);
-
- return results
- .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled' && result.value !== null)
- .map((result) => result.value!);
- }
-
- private async getDatasets(page: number, chunkSize: number): Promise {
- return await Dataset.query()
- .orderBy('publish_id', 'asc')
- .preload('identifier')
- .preload('xmlCache')
- .preload('titles')
- .where('server_state', 'published')
- .whereHas('identifier', (identifierQuery) => {
- identifierQuery.where('type', 'doi');
- })
- .forPage(page, chunkSize); // Get files for the current page
- }
-
- private async shouldUpdateDataset(dataset: Dataset): Promise {
- try {
- let doiIdentifier = dataset.identifier;
- if (!doiIdentifier) {
- await dataset.load('identifier');
- doiIdentifier = dataset.identifier;
- }
-
- if (!doiIdentifier || doiIdentifier.type !== 'doi') {
- return false;
- }
-
- const datasetModified =
- dataset.server_date_modified instanceof DateTime
- ? dataset.server_date_modified
- : DateTime.fromJSDate(dataset.server_date_modified);
-
- if (!datasetModified) {
- return true;
- }
-
- if (datasetModified > DateTime.now()) {
- return false;
- }
-
- const doiClient = new DoiClient();
- const DOI_CHECK_TIMEOUT = 300; // ms
-
- const doiLastModified = await Promise.race([
- doiClient.getDoiLastModified(doiIdentifier.value),
- this.createTimeoutPromise(DOI_CHECK_TIMEOUT),
- ]).catch(() => null);
-
- if (!doiLastModified) {
- // If uncertain, better include dataset for update
- return true;
- }
-
- const doiModified = DateTime.fromJSDate(doiLastModified);
- if (datasetModified > doiModified) {
- const diffInSeconds = Math.abs(datasetModified.diff(doiModified, 'seconds').seconds);
- const toleranceSeconds = 600;
- return diffInSeconds > toleranceSeconds;
- }
- return false;
- } catch (error) {
- return true; // safer: include dataset if unsure
- }
- }
-
- /**
- * Create a timeout promise for API calls
- */
- private createTimeoutPromise(timeoutMs: number): Promise {
- return new Promise((_, reject) => {
- setTimeout(() => reject(new Error(`API call timeout after ${timeoutMs}ms`)), timeoutMs);
- });
- }
-
- private showSimpleOutput(updatableDatasets: Dataset[]): void {
- if (updatableDatasets.length === 0) {
- console.log('No datasets need DataCite updates.');
- return;
- }
-
- console.log(`\nFound ${updatableDatasets.length} dataset(s) that need DataCite updates:\n`);
-
- updatableDatasets.forEach((dataset) => {
- console.log(`publish_id ${dataset.publish_id} needs update - ${dataset.mainTitle || 'Untitled'}`);
- });
-
- console.log(`\nTo update these datasets, run:`);
- console.log(` node ace update:datacite`);
- console.log(`\nOr update specific datasets:`);
- console.log(` node ace update:datacite -p `);
- }
-
- private async showVerboseOutput(updatableDatasets: Dataset[]): Promise {
- if (updatableDatasets.length === 0) {
- console.log('No datasets need DataCite updates.');
- return;
- }
-
- console.log(`\nFound ${updatableDatasets.length} dataset(s) that need DataCite updates:\n`);
-
- for (const dataset of updatableDatasets) {
- await this.showDatasetDetails(dataset);
- }
-
- console.log(`\nSummary: ${updatableDatasets.length} datasets need updates`);
- }
-
- private async showDatasetDetails(dataset: Dataset): Promise {
- try {
- let doiIdentifier = dataset.identifier;
-
- if (!doiIdentifier) {
- await dataset.load('identifier');
- doiIdentifier = dataset.identifier;
- }
-
- const doiValue = doiIdentifier?.value || 'N/A';
- const datasetModified = dataset.server_date_modified;
-
- // Get DOI info from DataCite
- const doiClient = new DoiClient();
- const doiLastModified = await doiClient.getDoiLastModified(doiValue);
- const doiState = await doiClient.getDoiState(doiValue);
-
- console.log(`โโ Dataset ${dataset.publish_id} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`);
- console.log(`โ Title: ${dataset.mainTitle || 'Untitled'}`);
- console.log(`โ DOI: ${doiValue}`);
- console.log(`โ DOI State: ${doiState || 'Unknown'}`);
- console.log(`โ Dataset Modified: ${datasetModified ? datasetModified.toISO() : 'N/A'}`);
- console.log(`โ DOI Modified: ${doiLastModified ? DateTime.fromJSDate(doiLastModified).toISO() : 'N/A'}`);
- console.log(`โ Status: NEEDS UPDATE`);
- console.log(`โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n`);
- } catch (error) {
- console.log(`โโ Dataset ${dataset.publish_id} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`);
- console.log(`โ Title: ${dataset.mainTitle || 'Untitled'}`);
- console.log(`โ DOI: ${dataset.identifier?.value || 'N/A'}`);
- console.log(`โ Error: ${error.message}`);
- console.log(`โ Status: NEEDS UPDATE (Error checking)`);
- console.log(`โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n`);
- }
- }
-}
diff --git a/commands/update_datacite.ts b/commands/update_datacite.ts
deleted file mode 100644
index 7ccb0f0..0000000
--- a/commands/update_datacite.ts
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
-|--------------------------------------------------------------------------
-| node ace make:command update-datacite
-| DONE: create commands/update_datacite.ts
-|--------------------------------------------------------------------------
-*/
-import { BaseCommand, flags } from '@adonisjs/core/ace';
-import { CommandOptions } from '@adonisjs/core/types/ace';
-import Dataset from '#models/dataset';
-import { DoiClient } from '#app/Library/Doi/DoiClient';
-import DoiClientException from '#app/exceptions/DoiClientException';
-import Index from '#app/Library/Utils/Index';
-import env from '#start/env';
-import logger from '@adonisjs/core/services/logger';
-import { DateTime } from 'luxon';
-import { getDomain } from '#app/utils/utility-functions';
-
-export default class UpdateDatacite extends BaseCommand {
- static commandName = 'update:datacite';
- static description = 'Update DataCite DOI records for published datasets';
-
- public static needsApplication = true;
-
- @flags.number({ alias: 'p', description: 'Specific publish_id to update' })
- public publish_id: number;
-
- @flags.boolean({ alias: 'f', description: 'Force update all records regardless of modification date' })
- public force: boolean = false;
-
- @flags.boolean({ alias: 'd', description: 'Dry run - show what would be updated without making changes' })
- public dryRun: boolean = false;
-
- @flags.boolean({ alias: 's', description: 'Show detailed stats for each dataset that needs updating' })
- public stats: boolean = false;
-
- //example: node ace update:datacite -p 123 --force --dry-run
-
- public static options: CommandOptions = {
- startApp: true, // Whether to boot the application before running the command
- stayAlive: false, // Whether to keep the process alive after the command has executed
- };
-
- async run() {
- logger.info('Starting DataCite update process...');
-
- const prefix = env.get('DATACITE_PREFIX', '');
- const base_domain = env.get('BASE_DOMAIN', '');
- const apiUrl = env.get('DATACITE_API_URL', 'https://api.datacite.org');
-
- if (!prefix || !base_domain) {
- logger.error('Missing DATACITE_PREFIX or BASE_DOMAIN environment variables');
- return;
- }
-
- logger.info(`Using DataCite API: ${apiUrl}`);
-
- const datasets = await this.getDatasets();
- logger.info(`Found ${datasets.length} datasets to process`);
-
- let updated = 0;
- let skipped = 0;
- let errors = 0;
-
- for (const dataset of datasets) {
- try {
- const shouldUpdate = this.force || (await this.shouldUpdateDataset(dataset));
-
- if (this.stats) {
- // Stats mode: show detailed information for datasets that need updating
- if (shouldUpdate) {
- await this.showDatasetStats(dataset);
- updated++;
- } else {
- skipped++;
- }
- continue;
- }
-
- if (!shouldUpdate) {
- logger.info(`Dataset ${dataset.publish_id}: Up to date, skipping`);
- skipped++;
- continue;
- }
-
- if (this.dryRun) {
- logger.info(`Dataset ${dataset.publish_id}: Would update DataCite record (dry run)`);
- updated++;
- continue;
- }
-
- await this.updateDataciteRecord(dataset, prefix, base_domain);
- logger.info(`Dataset ${dataset.publish_id}: Successfully updated DataCite record`);
- updated++;
- } catch (error) {
- logger.error(`Dataset ${dataset.publish_id}: Failed to update - ${error.message}`);
- errors++;
- }
- }
-
- if (this.stats) {
- logger.info(`\nDataCite Stats Summary: ${updated} datasets need updating, ${skipped} are up to date`);
- } else {
- logger.info(`DataCite update completed. Updated: ${updated}, Skipped: ${skipped}, Errors: ${errors}`);
- }
- }
-
- private async getDatasets(): Promise {
- const query = Dataset.query()
- .preload('identifier')
- .preload('xmlCache')
- .where('server_state', 'published')
- .whereHas('identifier', (identifierQuery) => {
- identifierQuery.where('type', 'doi');
- });
-
- if (this.publish_id) {
- query.where('publish_id', this.publish_id);
- }
-
- return await query.exec();
- }
-
- private async shouldUpdateDataset(dataset: Dataset): Promise {
- try {
- let doiIdentifier = dataset.identifier;
-
- if (!doiIdentifier) {
- await dataset.load('identifier');
- doiIdentifier = dataset.identifier;
- }
-
- if (!doiIdentifier || doiIdentifier.type !== 'doi') {
- return false;
- }
-
- const datasetModified = dataset.server_date_modified;
- const now = DateTime.now();
-
- if (!datasetModified) {
- return true; // Update if modification date is missing
- }
-
- if (datasetModified > now) {
- return false; // Skip invalid future dates
- }
-
- // Check DataCite DOI modification date
- const doiClient = new DoiClient();
- const doiLastModified = await doiClient.getDoiLastModified(doiIdentifier.value);
-
- if (!doiLastModified) {
- return false; // not Update if we can't get DOI info
- }
-
- const doiModified = DateTime.fromJSDate(doiLastModified);
- if (datasetModified > doiModified) {
- // if dataset was modified after DOI creation
- // Calculate the difference in seconds
- const diffInSeconds = Math.abs(datasetModified.diff(doiModified, 'seconds').seconds);
-
- // Define tolerance threshold (60 seconds = 1 minute)
- const toleranceSeconds = 60;
-
- // Only update if the difference is greater than the tolerance
- // This prevents unnecessary updates for minor timestamp differences
- return diffInSeconds > toleranceSeconds;
- } else {
- return false; // No update needed
- }
- } catch (error) {
- return false; // not update if we can't determine status or other error
- }
- }
-
- private async updateDataciteRecord(dataset: Dataset, prefix: string, base_domain: string): Promise {
- try {
- // Get the DOI identifier (HasOne relationship)
- let doiIdentifier = dataset.identifier;
-
- if (!doiIdentifier) {
- await dataset.load('identifier');
- doiIdentifier = dataset.identifier;
- }
-
- if (!doiIdentifier || doiIdentifier.type !== 'doi') {
- throw new Error('No DOI identifier found for dataset');
- }
-
- // Generate XML metadata
- const xmlMeta = (await Index.getDoiRegisterString(dataset)) as string;
- if (!xmlMeta) {
- throw new Error('Failed to generate XML metadata');
- }
-
- // Construct DOI value and landing page URL
- const doiValue = doiIdentifier.value; // Use existing DOI value
- const landingPageUrl = `https://doi.${getDomain(base_domain)}/${doiValue}`;
-
- // Update DataCite record
- const doiClient = new DoiClient();
- const dataciteResponse = await doiClient.registerDoi(doiValue, xmlMeta, landingPageUrl);
-
- if (dataciteResponse?.status === 201) {
- // // Update dataset modification date
- // dataset.server_date_modified = DateTime.now();
- // await dataset.save();
-
- // // Update search index
- // const index_name = 'tethys-records';
- // await Index.indexDocument(dataset, index_name);
-
- logger.debug(`Dataset ${dataset.publish_id}: DataCite record and search index updated successfully`);
- } else {
- throw new DoiClientException(
- dataciteResponse?.status || 500,
- `Unexpected DataCite response code: ${dataciteResponse?.status}`,
- );
- }
- } catch (error) {
- if (error instanceof DoiClientException) {
- throw error;
- }
- throw new Error(`Failed to update DataCite record: ${error.message}`);
- }
- }
-
- /**
- * Shows detailed statistics for a dataset that needs updating
- */
- private async showDatasetStats(dataset: Dataset): Promise {
- try {
- let doiIdentifier = dataset.identifier;
-
- if (!doiIdentifier) {
- await dataset.load('identifier');
- doiIdentifier = dataset.identifier;
- }
-
- const doiValue = doiIdentifier?.value || 'N/A';
- const doiStatus = doiIdentifier?.status || 'N/A';
- const datasetModified = dataset.server_date_modified;
-
- // Get DOI info from DataCite
- const doiClient = new DoiClient();
- const doiLastModified = await doiClient.getDoiLastModified(doiValue);
- const doiState = await doiClient.getDoiState(doiValue);
-
- console.log(`
- โโ Dataset ${dataset.publish_id} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- โ DOI Value: ${doiValue}
- โ DOI Status (DB): ${doiStatus}
- โ DOI State (DataCite): ${doiState || 'Unknown'}
- โ Dataset Modified: ${datasetModified ? datasetModified.toISO() : 'N/A'}
- โ DOI Modified: ${doiLastModified ? DateTime.fromJSDate(doiLastModified).toISO() : 'N/A'}
- โ Needs Update: YES - Dataset newer than DOI
- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`);
- } catch (error) {
- console.log(`
- โโ Dataset ${dataset.publish_id} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- โ DOI Value: ${dataset.identifier?.value || 'N/A'}
- โ Error: ${error.message}
- โ Needs Update: YES - Error checking status
- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`);
- }
- }
-}
diff --git a/components.d.ts b/components.d.ts
index 001762d..3834bf1 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -11,21 +11,3 @@ declare module '@vue/runtime-core' {
NInput: (typeof import('naive-ui'))['NInput'];
}
}
-
-// types/leaflet-src-dom-DomEvent.d.ts
-declare module 'leaflet/src/dom/DomEvent' {
- export type DomEventHandler = (e?: any) => void;
-
- // Attach event listeners. `obj` can be any DOM node or object with event handling.
- export function on(obj: any, types: string, fn: DomEventHandler, context?: any): void;
-
- // Detach event listeners.
- export function off(obj: any, types: string, fn?: DomEventHandler, context?: any): void;
-
- // Prevent default on native events
- export function preventDefault(ev?: Event | undefined): void;
-
- // Optional: other helpers you might need later
- export function stopPropagation(ev?: Event | undefined): void;
- export function stop(ev?: Event | undefined): void;
-}
\ No newline at end of file
diff --git a/config/mail.ts b/config/mail.ts
index a97489f..8016c29 100644
--- a/config/mail.ts
+++ b/config/mail.ts
@@ -16,7 +16,7 @@ const mailConfig = defineConfig({
host: env.get('SMTP_HOST', ''),
port: env.get('SMTP_PORT'),
secure: false,
- ignoreTLS: true,
+ // ignoreTLS: true,
requireTLS: false,
/**
diff --git a/database/factories/create_collections_data_ccs.sql b/database/factories/create_collections_data_ccs.sql
deleted file mode 100644
index e6b14df..0000000
--- a/database/factories/create_collections_data_ccs.sql
+++ /dev/null
@@ -1,1472 +0,0 @@
--- ACM Computing Classification System (CCS) โ a widely used system for classifying academic literature in computer science and related disciplines.
-/* The main classes are: see number at db
-A. General Literature
-B. Hardware
-C. Computer Systems Organization
-D. Software
-E. Data
-F. Theory of Computation
-G. Mathematics of Computing
-H. Information Systems
-I. Computing Methodologies
-J. Computer Applications
-K. Computing Milieux
-
-These classes help in organizing research papers, indexing databases, and guiding publication categorization
-*/
-INSERT INTO collections (id, role_id, number, name, oai_subset, left_id, right_id, parent_id, visible, visible_publish) VALUES
-(1030,3,'A.','General Literature','A.',2,17,NULL,1,1),
-(1031,3,'B.','Hardware','B.',18,379,NULL,1,1),
-(1032,3,'C.','Computer Systems Organization','C.',380,567,NULL,1,1),
-(1033,3,'D.','Software','D.',568,1035,NULL,1,1),
-(1034,3,'E.','Data','E.',1036,1101,NULL,1,1),
-(1035,3,'F.','Theory of Computation','F.',1102,1291,NULL,1,1),
-(1036,3,'G.','Mathematics of Computing','G.',1292,1587,NULL,1,1),
-(1037,3,'H.','Information Systems','H.',1588,1919,NULL,1,1),
-(1038,3,'I.','Computing Methodologies','I.',1920,2537,NULL,1,1),
-(1039,3,'J.','Computer Applications','J.',2538,2637,NULL,1,1),
-(1040,3,'K.','Computing Milieux','K.',2638,2911,NULL,1,1),
-(1041,3,'A.0','GENERAL','A.0',3,10,1030,1,1),
-(1042,3,'A.1','INTRODUCTORY AND SURVEY','A.1',11,12,1030,1,1),
-(1043,3,'A.2','REFERENCE (e.g., dictionaries, encyclopedias, glossaries)','A.2',13,14,1030,1,1),
-(1044,3,'A.m','MISCELLANEOUS','A.m',15,16,1030,1,1),
-(1045,3,'B.0','GENERAL','B.0',19,20,1031,1,1),
-(1046,3,'B.1','CONTROL STRUCTURES AND MICROPROGRAMMING (D.3.2)','B.1',21,76,1031,1,1),
-(1047,3,'B.2','ARITHMETIC AND LOGIC STRUCTURES','B.2',77,114,1031,1,1),
-(1048,3,'B.3','MEMORY STRUCTURES','B.3',115,164,1031,1,1),
-(1049,3,'B.4','INPUT/OUTPUT AND DATA COMMUNICATIONS','B.4',165,226,1031,1,1),
-(1050,3,'B.5','REGISTER-TRANSFER-LEVEL IMPLEMENTATION','B.5',227,268,1031,1,1),
-(1051,3,'B.6','LOGIC DESIGN','B.6',269,316,1031,1,1),
-(1052,3,'B.7','INTEGRATED CIRCUITS','B.7',317,364,1031,1,1),
-(1053,3,'B.8','PERFORMANCE AND RELIABILITY (C.4) (NEW)','B.8',365,374,1031,1,1),
-(1054,3,'B.m','MISCELLANEOUS','B.m',375,378,1031,1,1),
-(1055,3,'C.0','GENERAL','C.0',381,382,1032,1,1),
-(1056,3,'C.1','PROCESSOR ARCHITECTURES','C.1',383,450,1032,1,1),
-(1057,3,'C.2','COMPUTER-COMMUNICATION NETWORKS','C.2',451,534,1032,1,1),
-(1058,3,'C.3','SPECIAL-PURPOSE AND APPLICATION-BASED SYSTEMS (J.7)','C.3',535,536,1032,1,1),
-(1059,3,'C.4','PERFORMANCE OF SYSTEMS','C.4',537,538,1032,1,1),
-(1060,3,'C.5','COMPUTER SYSTEM IMPLEMENTATION','C.5',539,564,1032,1,1),
-(1061,3,'C.m','MISCELLANEOUS','C.m',565,566,1032,1,1),
-(1062,3,'D.0','GENERAL','D.0',569,570,1033,1,1),
-(1063,3,'D.1','PROGRAMMING TECHNIQUES (E)','D.1',571,594,1033,1,1),
-(1064,3,'D.2','SOFTWARE ENGINEERING (K.6.3)','D.2',595,796,1033,1,1),
-(1065,3,'D.3','PROGRAMMING LANGUAGES','D.3',797,900,1033,1,1),
-(1066,3,'D.4','OPERATING SYSTEMS (C)','D.4',901,1030,1033,1,1),
-(1067,3,'D.m','MISCELLANEOUS','D.m',1031,1034,1033,1,1),
-(1068,3,'E.0','GENERAL','E.0',1037,1038,1034,1,1),
-(1069,3,'E.1','DATA STRUCTURES','E.1',1039,1054,1034,1,1),
-(1070,3,'E.2','DATA STORAGE REPRESENTATIONS','E.2',1055,1068,1034,1,1),
-(1071,3,'E.3','DATA ENCRYPTION','E.3',1069,1078,1034,1,1),
-(1072,3,'E.4','CODING AND INFORMATION THEORY (H.1.1)','E.4',1079,1088,1034,1,1),
-(1073,3,'E.5','FILES (D.4.3, F.2.2, H.2)','E.5',1089,1098,1034,1,1),
-(1074,3,'E.m','MISCELLANEOUS','E.m',1099,1100,1034,1,1),
-(1075,3,'F.0','GENERAL','F.0',1103,1104,1035,1,1),
-(1076,3,'F.1','COMPUTATION BY ABSTRACT DEVICES','F.1',1105,1152,1035,1,1),
-(1077,3,'F.2','ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY (B.6-7, F.1.3)','F.2',1153,1188,1035,1,1),
-(1078,3,'F.3','LOGICS AND MEANINGS OF PROGRAMS','F.3',1189,1234,1035,1,1),
-(1079,3,'F.4','MATHEMATICAL LOGIC AND FORMAL LANGUAGES','F.4',1235,1288,1035,1,1),
-(1080,3,'F.m','MISCELLANEOUS','F.m',1289,1290,1035,1,1),
-(1081,3,'G.0','GENERAL','G.0',1293,1294,1036,1,1),
-(1082,3,'G.1','NUMERICAL ANALYSIS','G.1',1295,1490,1036,1,1),
-(1083,3,'G.2','DISCRETE MATHEMATICS','G.2',1491,1524,1036,1,1),
-(1084,3,'G.3','PROBABILITY AND STATISTICS','G.3',1525,1562,1036,1,1),
-(1085,3,'G.4','MATHEMATICAL SOFTWARE','G.4',1563,1582,1036,1,1),
-(1086,3,'G.m','MISCELLANEOUS','G.m',1583,1586,1036,1,1),
-(1087,3,'H.0','GENERAL','H.0',1589,1590,1037,1,1),
-(1088,3,'H.1','MODELS AND PRINCIPLES','H.1',1591,1612,1037,1,1),
-(1089,3,'H.2','DATABASE MANAGEMENT (E.5)','H.2',1613,1700,1037,1,1),
-(1090,3,'H.3','INFORMATION STORAGE AND RETRIEVAL','H.3',1701,1778,1037,1,1),
-(1091,3,'H.4','INFORMATION SYSTEMS APPLICATIONS','H.4',1779,1818,1037,1,1),
-(1092,3,'H.5','INFORMATION INTERFACES AND PRESENTATION (e.g., HCI) (I.7)','H.5',1819,1916,1037,1,1),
-(1093,3,'H.m','MISCELLANEOUS','H.m',1917,1918,1037,1,1),
-(1094,3,'I.0','GENERAL','I.0',1921,1922,1038,1,1),
-(1095,3,'I.1','SYMBOLIC AND ALGEBRAIC MANIPULATION (REVISED)','I.1',1923,1956,1038,1,1),
-(1096,3,'I.2','ARTIFICIAL INTELLIGENCE','I.2',1957,2132,1038,1,1),
-(1097,3,'I.3','COMPUTER GRAPHICS','I.3',2133,2252,1038,1,1),
-(1098,3,'I.4','IMAGE PROCESSING AND COMPUTER VISION (REVISED)','I.4',2253,2382,1038,1,1),
-(1099,3,'I.5','PATTERN RECOGNITION','I.5',2383,2432,1038,1,1),
-(1100,3,'I.6','SIMULATION AND MODELING (G.3)','I.6',2433,2482,1038,1,1),
-(1101,3,'I.7','DOCUMENT AND TEXT PROCESSING (H.4-5) (REVISED)','I.7',2483,2534,1038,1,1),
-(1102,3,'I.m','MISCELLANEOUS','I.m',2535,2536,1038,1,1),
-(1103,3,'J.0','GENERAL','J.0',2539,2540,1039,1,1),
-(1104,3,'J.1','ADMINISTRATIVE DATA PROCESSING','J.1',2541,2558,1039,1,1),
-(1105,3,'J.2','PHYSICAL SCIENCES AND ENGINEERING','J.2',2559,2578,1039,1,1),
-(1106,3,'J.3','LIFE AND MEDICAL SCIENCES','J.3',2579,2586,1039,1,1),
-(1107,3,'J.4','SOCIAL AND BEHAVIORAL SCIENCES','J.4',2587,2594,1039,1,1),
-(1108,3,'J.5','ARTS AND HUMANITIES','J.5',2595,2612,1039,1,1),
-(1109,3,'J.6','COMPUTER-AIDED ENGINEERING','J.6',2613,2618,1039,1,1),
-(1110,3,'J.7','COMPUTERS IN OTHER SYSTEMS (C.3)','J.7',2619,2634,1039,1,1),
-(1111,3,'J.m','MISCELLANEOUS','J.m',2635,2636,1039,1,1),
-(1112,3,'K.0','GENERAL','K.0',2639,2640,1040,1,1),
-(1113,3,'K.1','THE COMPUTER INDUSTRY','K.1',2641,2650,1040,1,1),
-(1114,3,'K.2','HISTORY OF COMPUTING','K.2',2651,2662,1040,1,1),
-(1115,3,'K.3','COMPUTERS AND EDUCATION','K.3',2663,2696,1040,1,1),
-(1116,3,'K.4','COMPUTERS AND SOCIETY','K.4',2697,2756,1040,1,1),
-(1117,3,'K.5','LEGAL ASPECTS OF COMPUTING','K.5',2757,2786,1040,1,1),
-(1118,3,'K.6','MANAGEMENT OF COMPUTING AND INFORMATION SYSTEMS','K.6',2787,2856,1040,1,1),
-(1119,3,'K.7','THE COMPUTING PROFESSION','K.7',2857,2880,1040,1,1),
-(1120,3,'K.8','PERSONAL COMPUTING','K.8',2881,2908,1040,1,1),
-(1121,3,'K.m','MISCELLANEOUS','K.m',2909,2910,1040,1,1),
-(1122,3,NULL,'Biographies/autobiographies',NULL,4,5,1041,1,1),
-(1123,3,NULL,'Conference proceedings',NULL,6,7,1041,1,1),
-(1124,3,NULL,'General literary works (e.g., fiction, plays)',NULL,8,9,1041,1,1),
-(1125,3,'B.1.0','General','B.1.0',22,23,1046,1,1),
-(1126,3,'B.1.1','Control Design Styles','B.1.1',24,31,1046,1,1),
-(1127,3,NULL,'Hardwired control**',NULL,25,26,1126,1,1),
-(1128,3,NULL,'Microprogrammed logic arrays**',NULL,27,28,1126,1,1),
-(1129,3,NULL,'Writable control store**',NULL,29,30,1126,1,1),
-(1130,3,'B.1.2','Control Structure Performance Analysis and Design Aids','B.1.2',32,39,1046,1,1),
-(1131,3,NULL,'Automatic synthesis**',NULL,33,34,1130,1,1),
-(1132,3,NULL,'Formal models**',NULL,35,36,1130,1,1),
-(1133,3,NULL,'Simulation**',NULL,37,38,1130,1,1),
-(1134,3,'B.1.3','Control Structure Reliability, Testing, and Fault-Tolerance** (B.8)','B.1.3',40,49,1046,1,1),
-(1135,3,NULL,'Diagnostics**',NULL,41,42,1134,1,1),
-(1136,3,NULL,'Error-checking**',NULL,43,44,1134,1,1),
-(1137,3,NULL,'Redundant design**',NULL,45,46,1134,1,1),
-(1138,3,NULL,'Test generation**',NULL,47,48,1134,1,1),
-(1139,3,'B.1.4','Microprogram Design Aids (D.2.2, D.2.4, D.3.2, D.3.4)','B.1.4',50,61,1046,1,1),
-(1140,3,NULL,'Firmware engineering**',NULL,51,52,1139,1,1),
-(1141,3,NULL,'Languages and compilers',NULL,53,54,1139,1,1),
-(1142,3,NULL,'Machine-independent microcode generation**',NULL,55,56,1139,1,1),
-(1143,3,NULL,'Optimization',NULL,57,58,1139,1,1),
-(1144,3,NULL,'Verification**',NULL,59,60,1139,1,1),
-(1145,3,'B.1.5','Microcode Applications','B.1.5',62,73,1046,1,1),
-(1146,3,NULL,'Direct data manipulation**',NULL,63,64,1145,1,1),
-(1147,3,NULL,'Firmware support of operating systems/instruction sets**',NULL,65,66,1145,1,1),
-(1148,3,NULL,'Instruction set interpretation',NULL,67,68,1145,1,1),
-(1149,3,NULL,'Peripheral control**',NULL,69,70,1145,1,1),
-(1150,3,NULL,'Special-purpose**',NULL,71,72,1145,1,1),
-(1151,3,'B.1.m','Miscellaneous','B.1.m',74,75,1046,1,1),
-(1152,3,'B.2.0','General','B.2.0',78,79,1047,1,1),
-(1153,3,'B.2.1','Design Styles (C.1.1-2)','B.2.1',80,87,1047,1,1),
-(1154,3,NULL,'Calculator**',NULL,81,82,1153,1,1),
-(1155,3,NULL,'Parallel',NULL,83,84,1153,1,1),
-(1156,3,NULL,'Pipeline',NULL,85,86,1153,1,1),
-(1157,3,'B.2.2','Performance Analysis and Design Aids** (B.8)','B.2.2',88,95,1047,1,1),
-(1158,3,NULL,'Simulation**',NULL,89,90,1157,1,1),
-(1159,3,NULL,'Verification**',NULL,91,92,1157,1,1),
-(1160,3,NULL,'Worst-case analysis**',NULL,93,94,1157,1,1),
-(1161,3,'B.2.3','Reliability, Testing, and Fault-Tolerance** (B.8)','B.2.3',96,105,1047,1,1),
-(1162,3,NULL,'Diagnostics**',NULL,97,98,1161,1,1),
-(1163,3,NULL,'Error-checking**',NULL,99,100,1161,1,1),
-(1164,3,NULL,'Redundant design**',NULL,101,102,1161,1,1),
-(1165,3,NULL,'Test generation**',NULL,103,104,1161,1,1),
-(1166,3,'B.2.4','High-Speed Arithmetic (NEW)','B.2.4',106,111,1047,1,1),
-(1167,3,NULL,'Algorithms (NEW)',NULL,107,108,1166,1,1),
-(1168,3,NULL,'Cost/performance (NEW)',NULL,109,110,1166,1,1),
-(1169,3,'B.2.m','Miscellaneous','B.2.m',112,113,1047,1,1),
-(1170,3,'B.3.0','General','B.3.0',116,117,1048,1,1),
-(1171,3,'B.3.1','Semiconductor Memories (NEW) (B.7.1)','B.3.1',118,125,1048,1,1),
-(1172,3,NULL,'Dynamic memory (DRAM) (NEW)',NULL,119,120,1171,1,1),
-(1173,3,NULL,'Read-only memory (ROM) (NEW)',NULL,121,122,1171,1,1),
-(1174,3,NULL,'Static memory (SRAM) (NEW)',NULL,123,124,1171,1,1),
-(1175,3,'B.3.2','Design Styles (D.4.2)','B.3.2',126,143,1048,1,1),
-(1176,3,NULL,'Associative memories',NULL,127,128,1175,1,1),
-(1177,3,NULL,'Cache memories',NULL,129,130,1175,1,1),
-(1178,3,NULL,'Interleaved memories**',NULL,131,132,1175,1,1),
-(1179,3,NULL,'Mass storage (e.g., magnetic, optical, RAID) (REVISED)',NULL,133,134,1175,1,1),
-(1180,3,NULL,'Primary memory',NULL,135,136,1175,1,1),
-(1181,3,NULL,'Sequential-access memory**',NULL,137,138,1175,1,1),
-(1182,3,NULL,'Shared memory',NULL,139,140,1175,1,1),
-(1183,3,NULL,'Virtual memory',NULL,141,142,1175,1,1),
-(1184,3,'B.3.3','Performance Analysis and Design Aids** (B.8, C.4)','B.3.3',144,151,1048,1,1),
-(1185,3,NULL,'Formal models**',NULL,145,146,1184,1,1),
-(1186,3,NULL,'Simulation**',NULL,147,148,1184,1,1),
-(1187,3,NULL,'Worst-case analysis**',NULL,149,150,1184,1,1),
-(1188,3,'B.3.4','Reliability, Testing, and Fault-Tolerance** (B.8)','B.3.4',152,161,1048,1,1),
-(1189,3,NULL,'Diagnostics**',NULL,153,154,1188,1,1),
-(1190,3,NULL,'Error-checking**',NULL,155,156,1188,1,1),
-(1191,3,NULL,'Redundant design**',NULL,157,158,1188,1,1),
-(1192,3,NULL,'Test generation**',NULL,159,160,1188,1,1),
-(1193,3,'B.3.m','Miscellaneous','B.3.m',162,163,1048,1,1),
-(1194,3,'B.4.0','General','B.4.0',166,167,1049,1,1),
-(1195,3,'B.4.1','Data Communications Devices','B.4.1',168,175,1049,1,1),
-(1196,3,NULL,'Processors**',NULL,169,170,1195,1,1),
-(1197,3,NULL,'Receivers (e.g., voice, data, image)**',NULL,171,172,1195,1,1),
-(1198,3,NULL,'Transmitters**',NULL,173,174,1195,1,1),
-(1199,3,'B.4.2','Input/Output Devices','B.4.2',176,185,1049,1,1),
-(1200,3,NULL,'Channels and controllers',NULL,177,178,1199,1,1),
-(1201,3,NULL,'Data terminals and printers',NULL,179,180,1199,1,1),
-(1202,3,NULL,'Image display',NULL,181,182,1199,1,1),
-(1203,3,NULL,'Voice',NULL,183,184,1199,1,1),
-(1204,3,'B.4.3','Interconnections (Subsystems)','B.4.3',186,199,1049,1,1),
-(1205,3,NULL,'Asynchronous/synchronous operation',NULL,187,188,1204,1,1),
-(1206,3,NULL,'Fiber optics',NULL,189,190,1204,1,1),
-(1207,3,NULL,'Interfaces',NULL,191,192,1204,1,1),
-(1208,3,NULL,'Parallel I/O (NEW)',NULL,193,194,1204,1,1),
-(1209,3,NULL,'Physical structures (e.g., backplanes, cables, chip carriers)**',NULL,195,196,1204,1,1),
-(1210,3,NULL,'Topology (e.g., bus, point-to-point)',NULL,197,198,1204,1,1),
-(1211,3,'B.4.4','Performance Analysis and Design Aids** (B.8)','B.4.4',200,209,1049,1,1),
-(1212,3,NULL,'Formal models**',NULL,201,202,1211,1,1),
-(1213,3,NULL,'Simulation**',NULL,203,204,1211,1,1),
-(1214,3,NULL,'Verification**',NULL,205,206,1211,1,1),
-(1215,3,NULL,'Worst-case analysis**',NULL,207,208,1211,1,1),
-(1216,3,'B.4.5','Reliability, Testing, and Fault-Tolerance** (B.8)','B.4.5',210,223,1049,1,1),
-(1217,3,NULL,'Built-in tests**',NULL,211,212,1216,1,1),
-(1218,3,NULL,'Diagnostics**',NULL,213,214,1216,1,1),
-(1219,3,NULL,'Error-checking**',NULL,215,216,1216,1,1),
-(1220,3,NULL,'Hardware reliability**',NULL,217,218,1216,1,1),
-(1221,3,NULL,'Redundant design**',NULL,219,220,1216,1,1),
-(1222,3,NULL,'Test generation**',NULL,221,222,1216,1,1),
-(1223,3,'B.4.m','Miscellaneous','B.4.m',224,225,1049,1,1),
-(1224,3,'B.5.0','General','B.5.0',228,229,1050,1,1),
-(1225,3,'B.5.1','Design','B.5.1',230,241,1050,1,1),
-(1226,3,NULL,'Arithmetic and logic units',NULL,231,232,1225,1,1),
-(1227,3,NULL,'Control design',NULL,233,234,1225,1,1),
-(1228,3,NULL,'Data-path design',NULL,235,236,1225,1,1),
-(1229,3,NULL,'Memory design',NULL,237,238,1225,1,1),
-(1230,3,NULL,'Styles (e.g., parallel, pipeline, special-purpose)',NULL,239,240,1225,1,1),
-(1231,3,'B.5.2','Design Aids','B.5.2',242,253,1050,1,1),
-(1232,3,NULL,'Automatic synthesis',NULL,243,244,1231,1,1),
-(1233,3,NULL,'Hardware description languages',NULL,245,246,1231,1,1),
-(1234,3,NULL,'Optimization',NULL,247,248,1231,1,1),
-(1235,3,NULL,'Simulation',NULL,249,250,1231,1,1),
-(1236,3,NULL,'Verification',NULL,251,252,1231,1,1),
-(1237,3,'B.5.3','Reliability and Testing** (B.8)','B.5.3',254,265,1050,1,1),
-(1238,3,NULL,'Built-in tests**',NULL,255,256,1237,1,1),
-(1239,3,NULL,'Error-checking**',NULL,257,258,1237,1,1),
-(1240,3,NULL,'Redundant design**',NULL,259,260,1237,1,1),
-(1241,3,NULL,'Test generation**',NULL,261,262,1237,1,1),
-(1242,3,NULL,'Testability**',NULL,263,264,1237,1,1),
-(1243,3,'B.5.m','Miscellaneous','B.5.m',266,267,1050,1,1),
-(1244,3,'B.6.0','General','B.6.0',270,271,1051,1,1),
-(1245,3,'B.6.1','Design Styles','B.6.1',272,287,1051,1,1),
-(1246,3,NULL,'Cellular arrays and automata',NULL,273,274,1245,1,1),
-(1247,3,NULL,'Combinational logic',NULL,275,276,1245,1,1),
-(1248,3,NULL,'Logic arrays',NULL,277,278,1245,1,1),
-(1249,3,NULL,'Memory control and access**',NULL,279,280,1245,1,1),
-(1250,3,NULL,'Memory used as logic**',NULL,281,282,1245,1,1),
-(1251,3,NULL,'Parallel circuits',NULL,283,284,1245,1,1),
-(1252,3,NULL,'Sequential circuits',NULL,285,286,1245,1,1),
-(1253,3,'B.6.2','Reliability and Testing** (B.8)','B.6.2',288,299,1051,1,1),
-(1254,3,NULL,'Built-in tests**',NULL,289,290,1253,1,1),
-(1255,3,NULL,'Error-checking**',NULL,291,292,1253,1,1),
-(1256,3,NULL,'Redundant design**',NULL,293,294,1253,1,1),
-(1257,3,NULL,'Test generation**',NULL,295,296,1253,1,1),
-(1258,3,NULL,'Testability**',NULL,297,298,1253,1,1),
-(1259,3,'B.6.3','Design Aids','B.6.3',300,313,1051,1,1),
-(1260,3,NULL,'Automatic synthesis',NULL,301,302,1259,1,1),
-(1261,3,NULL,'Hardware description languages',NULL,303,304,1259,1,1),
-(1262,3,NULL,'Optimization',NULL,305,306,1259,1,1),
-(1263,3,NULL,'Simulation',NULL,307,308,1259,1,1),
-(1264,3,NULL,'Switching theory',NULL,309,310,1259,1,1),
-(1265,3,NULL,'Verification',NULL,311,312,1259,1,1),
-(1266,3,'B.6.m','Miscellaneous','B.6.m',314,315,1051,1,1),
-(1267,3,'B.7.0','General','B.7.0',318,319,1052,1,1),
-(1268,3,'B.7.1','Types and Design Styles','B.7.1',320,337,1052,1,1),
-(1269,3,NULL,'Advanced technologies',NULL,321,322,1268,1,1),
-(1270,3,NULL,'Algorithms implemented in hardware',NULL,323,324,1268,1,1),
-(1271,3,NULL,'Gate arrays',NULL,325,326,1268,1,1),
-(1272,3,NULL,'Input/output circuits',NULL,327,328,1268,1,1),
-(1273,3,NULL,'Memory technologies',NULL,329,330,1268,1,1),
-(1274,3,NULL,'Microprocessors and microcomputers',NULL,331,332,1268,1,1),
-(1275,3,NULL,'Standard cells**',NULL,333,334,1268,1,1),
-(1276,3,NULL,'VLSI (very large scale integration)',NULL,335,336,1268,1,1),
-(1277,3,'B.7.2','Design Aids','B.7.2',338,349,1052,1,1),
-(1278,3,NULL,'Graphics',NULL,339,340,1277,1,1),
-(1279,3,NULL,'Layout',NULL,341,342,1277,1,1),
-(1280,3,NULL,'Placement and routing',NULL,343,344,1277,1,1),
-(1281,3,NULL,'Simulation',NULL,345,346,1277,1,1),
-(1282,3,NULL,'Verification',NULL,347,348,1277,1,1),
-(1283,3,'B.7.3','Reliability and Testing** (B.8)','B.7.3',350,361,1052,1,1),
-(1284,3,NULL,'Built-in tests**',NULL,351,352,1283,1,1),
-(1285,3,NULL,'Error-checking**',NULL,353,354,1283,1,1),
-(1286,3,NULL,'Redundant design**',NULL,355,356,1283,1,1),
-(1287,3,NULL,'Test generation**',NULL,357,358,1283,1,1),
-(1288,3,NULL,'Testability**',NULL,359,360,1283,1,1),
-(1289,3,'B.7.m','Miscellaneous','B.7.m',362,363,1052,1,1),
-(1290,3,'B.8.0','General (NEW)','B.8.0',366,367,1053,1,1),
-(1291,3,'B.8.1','Reliability, Testing, and Fault-Tolerance (NEW)','B.8.1',368,369,1053,1,1),
-(1292,3,'B.8.2','Performance Analysis and Design Aids (NEW)','B.8.2',370,371,1053,1,1),
-(1293,3,'B.8.m','Miscellaneous (NEW)','B.8.m',372,373,1053,1,1),
-(1294,3,NULL,'Design management',NULL,376,377,1054,1,1),
-(1295,3,'C.1.0','General','C.1.0',384,385,1056,1,1),
-(1296,3,'C.1.1','Single Data Stream Architectures','C.1.1',386,397,1056,1,1),
-(1297,3,NULL,'Multiple-instruction-stream, single-data-stream processors (MISD)**',NULL,387,388,1296,1,1),
-(1298,3,NULL,'Pipeline processors**',NULL,389,390,1296,1,1),
-(1299,3,NULL,'RISC/CISC, VLIW architectures (NEW)',NULL,391,392,1296,1,1),
-(1300,3,NULL,'Single-instruction-stream, single-data-stream processors (SISD)**',NULL,393,394,1296,1,1),
-(1301,3,NULL,'Von Neumann architectures**',NULL,395,396,1296,1,1),
-(1302,3,'C.1.2','Multiple Data Stream Architectures (Multiprocessors)','C.1.2',398,415,1056,1,1),
-(1303,3,NULL,'Array and vector processors',NULL,399,400,1302,1,1),
-(1304,3,NULL,'Associative processors',NULL,401,402,1302,1,1),
-(1305,3,NULL,'Connection machines',NULL,403,404,1302,1,1),
-(1306,3,NULL,'Interconnection architectures (e.g., common bus, multiport memory, crossbar switch)',NULL,405,406,1302,1,1),
-(1307,3,NULL,'Multiple-instruction-stream, multiple-data-stream processors (MIMD)',NULL,407,408,1302,1,1),
-(1308,3,NULL,'Parallel processors**',NULL,409,410,1302,1,1),
-(1309,3,NULL,'Pipeline processors**',NULL,411,412,1302,1,1),
-(1310,3,NULL,'Single-instruction-stream, multiple-data-stream processors (SIMD)',NULL,413,414,1302,1,1),
-(1311,3,'C.1.3','Other Architecture Styles','C.1.3',416,437,1056,1,1),
-(1312,3,NULL,'Adaptable architectures',NULL,417,418,1311,1,1),
-(1313,3,NULL,'Analog computers (NEW)',NULL,419,420,1311,1,1),
-(1314,3,NULL,'Capability architectures**',NULL,421,422,1311,1,1),
-(1315,3,NULL,'Cellular architecture (e.g., mobile) (REVISED)',NULL,423,424,1311,1,1),
-(1316,3,NULL,'Data-flow architectures',NULL,425,426,1311,1,1),
-(1317,3,NULL,'Heterogeneous (hybrid) systems (NEW)',NULL,427,428,1311,1,1),
-(1318,3,NULL,'High-level language architectures**',NULL,429,430,1311,1,1),
-(1319,3,NULL,'Neural nets',NULL,431,432,1311,1,1),
-(1320,3,NULL,'Pipeline processors (NEW)',NULL,433,434,1311,1,1),
-(1321,3,NULL,'Stack-oriented processors**',NULL,435,436,1311,1,1),
-(1322,3,'C.1.4','Parallel Architectures (NEW)','C.1.4',438,443,1056,1,1),
-(1323,3,NULL,'Distributed architectures (NEW)',NULL,439,440,1322,1,1),
-(1324,3,NULL,'Mobile processors (NEW)',NULL,441,442,1322,1,1),
-(1325,3,'C.1.m','Miscellaneous','C.1.m',444,449,1056,1,1),
-(1326,3,NULL,'Analog computers**',NULL,445,446,1325,1,1),
-(1327,3,NULL,'Hybrid systems**',NULL,447,448,1325,1,1),
-(1328,3,'C.2.0','General','C.2.0',452,459,1057,1,1),
-(1329,3,NULL,'Data communications',NULL,453,454,1328,1,1),
-(1330,3,NULL,'Open Systems Interconnection reference model (OSI)',NULL,455,456,1328,1,1),
-(1331,3,NULL,'Security and protection (e.g., firewalls) (REVISED)',NULL,457,458,1328,1,1),
-(1332,3,'C.2.1','Network Architecture and Design','C.2.1',460,483,1057,1,1),
-(1333,3,NULL,'Asynchronous Transfer Mode (ATM) (NEW)',NULL,461,462,1332,1,1),
-(1334,3,NULL,'Centralized networks**',NULL,463,464,1332,1,1),
-(1335,3,NULL,'Circuit-switching networks',NULL,465,466,1332,1,1),
-(1336,3,NULL,'Distributed networks',NULL,467,468,1332,1,1),
-(1337,3,NULL,'Frame relay networks (NEW)',NULL,469,470,1332,1,1),
-(1338,3,NULL,'ISDN (Integrated Services Digital Network)',NULL,471,472,1332,1,1),
-(1339,3,NULL,'Network communications',NULL,473,474,1332,1,1),
-(1340,3,NULL,'Network topology',NULL,475,476,1332,1,1),
-(1341,3,NULL,'Packet-switching networks (REVISED)',NULL,477,478,1332,1,1),
-(1342,3,NULL,'Store and forward networks',NULL,479,480,1332,1,1),
-(1343,3,NULL,'Wireless communication (NEW)',NULL,481,482,1332,1,1),
-(1344,3,'C.2.2','Network Protocols','C.2.2',484,493,1057,1,1),
-(1345,3,NULL,'Applications (SMTP, FTP, etc.) (NEW)',NULL,485,486,1344,1,1),
-(1346,3,NULL,'Protocol architecture (OSI model) (REVISED)',NULL,487,488,1344,1,1),
-(1347,3,NULL,'Protocol verification',NULL,489,490,1344,1,1),
-(1348,3,NULL,'Routing protocols (NEW)',NULL,491,492,1344,1,1),
-(1349,3,'C.2.3','Network Operations','C.2.3',494,501,1057,1,1),
-(1350,3,NULL,'Network management',NULL,495,496,1349,1,1),
-(1351,3,NULL,'Network monitoring',NULL,497,498,1349,1,1),
-(1352,3,NULL,'Public networks',NULL,499,500,1349,1,1),
-(1353,3,'C.2.4','Distributed Systems','C.2.4',502,511,1057,1,1),
-(1354,3,NULL,'Client/server (NEW)',NULL,503,504,1353,1,1),
-(1355,3,NULL,'Distributed applications',NULL,505,506,1353,1,1),
-(1356,3,NULL,'Distributed databases',NULL,507,508,1353,1,1),
-(1357,3,NULL,'Network operating systems',NULL,509,510,1353,1,1),
-(1358,3,'C.2.5','Local and Wide-Area Networks (REVISED)','C.2.5',512,525,1057,1,1),
-(1359,3,NULL,'Access schemes',NULL,513,514,1358,1,1),
-(1360,3,NULL,'Buses',NULL,515,516,1358,1,1),
-(1361,3,NULL,'Ethernet (e.g., CSMA/CD) (NEW)',NULL,517,518,1358,1,1),
-(1362,3,NULL,'High-speed (e.g., FDDI, fiber channel, ATM) (NEW)',NULL,519,520,1358,1,1),
-(1363,3,NULL,'Internet (e.g., TCP/IP) (NEW)',NULL,521,522,1358,1,1),
-(1364,3,NULL,'Token rings (REVISED)',NULL,523,524,1358,1,1),
-(1365,3,'C.2.6','Internetworking (C.2.2) (NEW)','C.2.6',526,531,1057,1,1),
-(1366,3,NULL,'Routers (NEW)',NULL,527,528,1365,1,1),
-(1367,3,NULL,'Standards (e.g., TCP/IP) (NEW)',NULL,529,530,1365,1,1),
-(1368,3,'C.2.m','Miscellaneous','C.2.m',532,533,1057,1,1),
-(1369,3,'C.5.0','General','C.5.0',540,541,1060,1,1),
-(1370,3,'C.5.1','Large and Medium Mainframe Computers','C.5.1',542,545,1060,1,1),
-(1371,3,NULL,'Super (very large) computers',NULL,543,544,1370,1,1),
-(1372,3,'C.5.2','Minicomputers**','C.5.2',546,547,1060,1,1),
-(1373,3,'C.5.3','Microcomputers','C.5.3',548,557,1060,1,1),
-(1374,3,NULL,'Microprocessors',NULL,549,550,1373,1,1),
-(1375,3,NULL,'Personal computers',NULL,551,552,1373,1,1),
-(1376,3,NULL,'Portable devices (e.g., laptops, personal digital assistants) (NEW)',NULL,553,554,1373,1,1),
-(1377,3,NULL,'Workstations',NULL,555,556,1373,1,1),
-(1378,3,'C.5.4','VLSI Systems','C.5.4',558,559,1060,1,1),
-(1379,3,'C.5.5','Servers (NEW)','C.5.5',560,561,1060,1,1),
-(1380,3,'C.5.m','Miscellaneous','C.5.m',562,563,1060,1,1),
-(1381,3,'D.1.0','General','D.1.0',572,573,1063,1,1),
-(1382,3,'D.1.1','Applicative (Functional) Programming','D.1.1',574,575,1063,1,1),
-(1383,3,'D.1.2','Automatic Programming (I.2.2)','D.1.2',576,577,1063,1,1),
-(1384,3,'D.1.3','Concurrent Programming','D.1.3',578,583,1063,1,1),
-(1385,3,NULL,'Distributed programming',NULL,579,580,1384,1,1),
-(1386,3,NULL,'Parallel programming',NULL,581,582,1384,1,1),
-(1387,3,'D.1.4','Sequential Programming','D.1.4',584,585,1063,1,1),
-(1388,3,'D.1.5','Object-oriented Programming','D.1.5',586,587,1063,1,1),
-(1389,3,'D.1.6','Logic Programming','D.1.6',588,589,1063,1,1),
-(1390,3,'D.1.7','Visual Programming','D.1.7',590,591,1063,1,1),
-(1391,3,'D.1.m','Miscellaneous','D.1.m',592,593,1063,1,1),
-(1392,3,'D.2.0','General (K.5.1)','D.2.0',596,601,1064,1,1),
-(1393,3,NULL,'Protection mechanisms',NULL,597,598,1392,1,1),
-(1394,3,NULL,'Standards',NULL,599,600,1392,1,1),
-(1395,3,'D.2.1','Requirements/Specifications (D.3.1)','D.2.1',602,611,1064,1,1),
-(1396,3,NULL,'Elicitation methods (e.g., rapid prototyping, interviews, JAD) (NEW)',NULL,603,604,1395,1,1),
-(1397,3,NULL,'Languages',NULL,605,606,1395,1,1),
-(1398,3,NULL,'Methodologies (e.g., object-oriented, structured) (REVISED)',NULL,607,608,1395,1,1),
-(1399,3,NULL,'Tools',NULL,609,610,1395,1,1),
-(1400,3,'D.2.2','Design Tools and Techniques (REVISED)','D.2.2',612,639,1064,1,1),
-(1401,3,NULL,'Computer-aided software engineering (CASE)',NULL,613,614,1400,1,1),
-(1402,3,NULL,'Decision tables',NULL,615,616,1400,1,1),
-(1403,3,NULL,'Evolutionary prototyping (NEW)',NULL,617,618,1400,1,1),
-(1404,3,NULL,'Flow charts',NULL,619,620,1400,1,1),
-(1405,3,NULL,'Modules and interfaces',NULL,621,622,1400,1,1),
-(1406,3,NULL,'Object-oriented design methods (NEW)',NULL,623,624,1400,1,1),
-(1407,3,NULL,'Petri nets',NULL,625,626,1400,1,1),
-(1408,3,NULL,'Programmer workbench**',NULL,627,628,1400,1,1),
-(1409,3,NULL,'Software libraries',NULL,629,630,1400,1,1),
-(1410,3,NULL,'State diagrams (NEW)',NULL,631,632,1400,1,1),
-(1411,3,NULL,'Structured programming**',NULL,633,634,1400,1,1),
-(1412,3,NULL,'Top-down programming**',NULL,635,636,1400,1,1),
-(1413,3,NULL,'User interfaces',NULL,637,638,1400,1,1),
-(1414,3,'D.2.3','Coding Tools and Techniques (REVISED)','D.2.3',640,655,1064,1,1),
-(1415,3,NULL,'Object-oriented programming (NEW)',NULL,641,642,1414,1,1),
-(1416,3,NULL,'Pretty printers',NULL,643,644,1414,1,1),
-(1417,3,NULL,'Program editors',NULL,645,646,1414,1,1),
-(1418,3,NULL,'Reentrant code**',NULL,647,648,1414,1,1),
-(1419,3,NULL,'Standards',NULL,649,650,1414,1,1),
-(1420,3,NULL,'Structured programming (NEW)',NULL,651,652,1414,1,1),
-(1421,3,NULL,'Top-down programming (NEW)',NULL,653,654,1414,1,1),
-(1422,3,'D.2.4','Software/Program Verification (F.3.1) (REVISED)','D.2.4',656,675,1064,1,1),
-(1423,3,NULL,'Assertion checkers',NULL,657,658,1422,1,1),
-(1424,3,NULL,'Class invariants (NEW)',NULL,659,660,1422,1,1),
-(1425,3,NULL,'Correctness proofs',NULL,661,662,1422,1,1),
-(1426,3,NULL,'Formal methods (NEW)',NULL,663,664,1422,1,1),
-(1427,3,NULL,'Model checking (NEW)',NULL,665,666,1422,1,1),
-(1428,3,NULL,'Programming by contract (NEW)',NULL,667,668,1422,1,1),
-(1429,3,NULL,'Reliability',NULL,669,670,1422,1,1),
-(1430,3,NULL,'Statistical methods (NEW)',NULL,671,672,1422,1,1),
-(1431,3,NULL,'Validation',NULL,673,674,1422,1,1),
-(1432,3,'D.2.5','Testing and Debugging','D.2.5',676,697,1064,1,1),
-(1433,3,NULL,'Code inspections and walk-throughs',NULL,677,678,1432,1,1),
-(1434,3,NULL,'Debugging aids',NULL,679,680,1432,1,1),
-(1435,3,NULL,'Diagnostics',NULL,681,682,1432,1,1),
-(1436,3,NULL,'Distributed debugging (NEW)',NULL,683,684,1432,1,1),
-(1437,3,NULL,'Dumps**',NULL,685,686,1432,1,1),
-(1438,3,NULL,'Error handling and recovery',NULL,687,688,1432,1,1),
-(1439,3,NULL,'Monitors',NULL,689,690,1432,1,1),
-(1440,3,NULL,'Symbolic execution',NULL,691,692,1432,1,1),
-(1441,3,NULL,'Testing tools (e.g., data generators, coverage testing) (REVISED)',NULL,693,694,1432,1,1),
-(1442,3,NULL,'Tracing',NULL,695,696,1432,1,1),
-(1443,3,'D.2.6','Programming Environments','D.2.6',698,707,1064,1,1),
-(1444,3,NULL,'Graphical environments (NEW)',NULL,699,700,1443,1,1),
-(1445,3,NULL,'Integrated environments (NEW)',NULL,701,702,1443,1,1),
-(1446,3,NULL,'Interactive environments (REVISED)',NULL,703,704,1443,1,1),
-(1447,3,NULL,'Programmer workbench (NEW)',NULL,705,706,1443,1,1),
-(1448,3,'D.2.7','Distribution, Maintenance, and Enhancement (REVISED)','D.2.7',708,723,1064,1,1),
-(1449,3,NULL,'Corrections**',NULL,709,710,1448,1,1),
-(1450,3,NULL,'Documentation',NULL,711,712,1448,1,1),
-(1451,3,NULL,'Enhancement**',NULL,713,714,1448,1,1),
-(1452,3,NULL,'Extensibility**',NULL,715,716,1448,1,1),
-(1453,3,NULL,'Portability',NULL,717,718,1448,1,1),
-(1454,3,NULL,'Restructuring, reverse engineering, and reengineering (REVISED)',NULL,719,720,1448,1,1),
-(1455,3,NULL,'Version control',NULL,721,722,1448,1,1),
-(1456,3,'D.2.8','Metrics (D.4.8)','D.2.8',724,735,1064,1,1),
-(1457,3,NULL,'Complexity measures',NULL,725,726,1456,1,1),
-(1458,3,NULL,'Performance measures',NULL,727,728,1456,1,1),
-(1459,3,NULL,'Process metrics (NEW)',NULL,729,730,1456,1,1),
-(1460,3,NULL,'Product metrics (NEW)',NULL,731,732,1456,1,1),
-(1461,3,NULL,'Software science**',NULL,733,734,1456,1,1),
-(1462,3,'D.2.9','Management (K.6.3, K.6.4)','D.2.9',736,755,1064,1,1),
-(1463,3,NULL,'Copyrights**',NULL,737,738,1462,1,1),
-(1464,3,NULL,'Cost estimation',NULL,739,740,1462,1,1),
-(1465,3,NULL,'Life cycle',NULL,741,742,1462,1,1),
-(1466,3,NULL,'Productivity',NULL,743,744,1462,1,1),
-(1467,3,NULL,'Programming teams',NULL,745,746,1462,1,1),
-(1468,3,NULL,'Software configuration management',NULL,747,748,1462,1,1),
-(1469,3,NULL,'Software process models (e.g., CMM, ISO, PSP) (NEW)',NULL,749,750,1462,1,1),
-(1470,3,NULL,'Software quality assurance (SQA)',NULL,751,752,1462,1,1),
-(1471,3,NULL,'Time estimation',NULL,753,754,1462,1,1),
-(1472,3,'D.2.10','Design** (D.2.2)','D.2.10',756,761,1064,1,1),
-(1473,3,NULL,'Methodologies**',NULL,757,758,1472,1,1),
-(1474,3,NULL,'Representation**',NULL,759,760,1472,1,1),
-(1475,3,'D.2.11','Software Architectures (NEW)','D.2.11',762,773,1064,1,1),
-(1476,3,NULL,'Data abstraction (NEW)',NULL,763,764,1475,1,1),
-(1477,3,NULL,'Domain-specific architectures (NEW)',NULL,765,766,1475,1,1),
-(1478,3,NULL,'Information hiding (NEW)',NULL,767,768,1475,1,1),
-(1479,3,NULL,'Languages (e.g., description, interconnection, definition) (NEW)',NULL,769,770,1475,1,1),
-(1480,3,NULL,'Patterns (e.g., client/server, pipeline, blackboard) (NEW)',NULL,771,772,1475,1,1),
-(1481,3,'D.2.12','Interoperability (NEW)','D.2.12',774,781,1064,1,1),
-(1482,3,NULL,'Data mapping (NEW)',NULL,775,776,1481,1,1),
-(1483,3,NULL,'Distributed objects (NEW)',NULL,777,778,1481,1,1),
-(1484,3,NULL,'Interface definition languages (NEW)',NULL,779,780,1481,1,1),
-(1485,3,'D.2.13','Reusable Software (NEW)','D.2.13',782,789,1064,1,1),
-(1486,3,NULL,'Domain engineering (NEW)',NULL,783,784,1485,1,1),
-(1487,3,NULL,'Reusable libraries (NEW)',NULL,785,786,1485,1,1),
-(1488,3,NULL,'Reuse models (NEW)',NULL,787,788,1485,1,1),
-(1489,3,'D.2.m','Miscellaneous','D.2.m',790,795,1064,1,1),
-(1490,3,NULL,'Rapid prototyping**',NULL,791,792,1489,1,1),
-(1491,3,NULL,'Reusable software**',NULL,793,794,1489,1,1),
-(1492,3,'D.3.0','General','D.3.0',798,801,1065,1,1),
-(1493,3,NULL,'Standards',NULL,799,800,1492,1,1),
-(1494,3,'D.3.1','Formal Definitions and Theory (D.2.1, F.3.1-2, F.4.2-3)','D.3.1',802,807,1065,1,1),
-(1495,3,NULL,'Semantics',NULL,803,804,1494,1,1),
-(1496,3,NULL,'Syntax',NULL,805,806,1494,1,1),
-(1497,3,'D.3.2','Language Classifications','D.3.2',808,837,1065,1,1),
-(1498,3,NULL,'Applicative (functional) languages (REVISED)',NULL,809,810,1497,1,1),
-(1499,3,NULL,'Concurrent, distributed, and parallel languages',NULL,811,812,1497,1,1),
-(1500,3,NULL,'Constraint and logic languages (NEW)',NULL,813,814,1497,1,1),
-(1501,3,NULL,'Data-flow languages',NULL,815,816,1497,1,1),
-(1502,3,NULL,'Design languages',NULL,817,818,1497,1,1),
-(1503,3,NULL,'Extensible languages',NULL,819,820,1497,1,1),
-(1504,3,NULL,'Macro and assembly languages',NULL,821,822,1497,1,1),
-(1505,3,NULL,'Microprogramming languages**',NULL,823,824,1497,1,1),
-(1506,3,NULL,'Multiparadigm languages (NEW)',NULL,825,826,1497,1,1),
-(1507,3,NULL,'Nondeterministic languages**',NULL,827,828,1497,1,1),
-(1508,3,NULL,'Nonprocedural languages**',NULL,829,830,1497,1,1),
-(1509,3,NULL,'Object-oriented languages',NULL,831,832,1497,1,1),
-(1510,3,NULL,'Specialized application languages',NULL,833,834,1497,1,1),
-(1511,3,NULL,'Very high-level languages',NULL,835,836,1497,1,1),
-(1512,3,'D.3.3','Language Constructs and Features (E.2)','D.3.3',838,871,1065,1,1),
-(1513,3,NULL,'Abstract data types',NULL,839,840,1512,1,1),
-(1514,3,NULL,'Classes and objects (NEW)',NULL,841,842,1512,1,1),
-(1515,3,NULL,'Concurrent programming structures',NULL,843,844,1512,1,1),
-(1516,3,NULL,'Constraints (NEW)',NULL,845,846,1512,1,1),
-(1517,3,NULL,'Control structures',NULL,847,848,1512,1,1),
-(1518,3,NULL,'Coroutines',NULL,849,850,1512,1,1),
-(1519,3,NULL,'Data types and structures',NULL,851,852,1512,1,1),
-(1520,3,NULL,'Dynamic storage management',NULL,853,854,1512,1,1),
-(1521,3,NULL,'Frameworks (NEW)',NULL,855,856,1512,1,1),
-(1522,3,NULL,'Inheritance (NEW)',NULL,857,858,1512,1,1),
-(1523,3,NULL,'Input/output',NULL,859,860,1512,1,1),
-(1524,3,NULL,'Modules, packages',NULL,861,862,1512,1,1),
-(1525,3,NULL,'Patterns (NEW)',NULL,863,864,1512,1,1),
-(1526,3,NULL,'Polymorphism (NEW)',NULL,865,866,1512,1,1),
-(1527,3,NULL,'Procedures, functions, and subroutines',NULL,867,868,1512,1,1),
-(1528,3,NULL,'Recursion',NULL,869,870,1512,1,1),
-(1529,3,'D.3.4','Processors','D.3.4',872,897,1065,1,1),
-(1530,3,NULL,'Code generation',NULL,873,874,1529,1,1),
-(1531,3,NULL,'Compilers',NULL,875,876,1529,1,1),
-(1532,3,NULL,'Debuggers (NEW)',NULL,877,878,1529,1,1),
-(1533,3,NULL,'Incremental compilers (NEW)',NULL,879,880,1529,1,1),
-(1534,3,NULL,'Interpreters',NULL,881,882,1529,1,1),
-(1535,3,NULL,'Memory management (garbage collection) (NEW)',NULL,883,884,1529,1,1),
-(1536,3,NULL,'Optimization',NULL,885,886,1529,1,1),
-(1537,3,NULL,'Parsing',NULL,887,888,1529,1,1),
-(1538,3,NULL,'Preprocessors',NULL,889,890,1529,1,1),
-(1539,3,NULL,'Retargetable compilers (NEW)',NULL,891,892,1529,1,1),
-(1540,3,NULL,'Run-time environments',NULL,893,894,1529,1,1),
-(1541,3,NULL,'Translator writing systems and compiler generators',NULL,895,896,1529,1,1),
-(1542,3,'D.3.m','Miscellaneous','D.3.m',898,899,1065,1,1),
-(1543,3,'D.4.0','General','D.4.0',902,903,1066,1,1),
-(1544,3,'D.4.1','Process Management','D.4.1',904,919,1066,1,1),
-(1545,3,NULL,'Concurrency',NULL,905,906,1544,1,1),
-(1546,3,NULL,'Deadlocks',NULL,907,908,1544,1,1),
-(1547,3,NULL,'Multiprocessing/multiprogramming/multitasking (REVISED)',NULL,909,910,1544,1,1),
-(1548,3,NULL,'Mutual exclusion',NULL,911,912,1544,1,1),
-(1549,3,NULL,'Scheduling',NULL,913,914,1544,1,1),
-(1550,3,NULL,'Synchronization',NULL,915,916,1544,1,1),
-(1551,3,NULL,'Threads (NEW)',NULL,917,918,1544,1,1),
-(1552,3,'D.4.2','Storage Management','D.4.2',920,939,1066,1,1),
-(1553,3,NULL,'Allocation/deallocation strategies',NULL,921,922,1552,1,1),
-(1554,3,NULL,'Distributed memories',NULL,923,924,1552,1,1),
-(1555,3,NULL,'Garbage collection (NEW)',NULL,925,926,1552,1,1),
-(1556,3,NULL,'Main memory',NULL,927,928,1552,1,1),
-(1557,3,NULL,'Secondary storage',NULL,929,930,1552,1,1),
-(1558,3,NULL,'Segmentation**',NULL,931,932,1552,1,1),
-(1559,3,NULL,'Storage hierarchies',NULL,933,934,1552,1,1),
-(1560,3,NULL,'Swapping**',NULL,935,936,1552,1,1),
-(1561,3,NULL,'Virtual memory',NULL,937,938,1552,1,1),
-(1562,3,'D.4.3','File Systems Management (E.5)','D.4.3',940,951,1066,1,1),
-(1563,3,NULL,'Access methods',NULL,941,942,1562,1,1),
-(1564,3,NULL,'Directory structures',NULL,943,944,1562,1,1),
-(1565,3,NULL,'Distributed file systems',NULL,945,946,1562,1,1),
-(1566,3,NULL,'File organization',NULL,947,948,1562,1,1),
-(1567,3,NULL,'Maintenance**',NULL,949,950,1562,1,1),
-(1568,3,'D.4.4','Communications Management (C.2)','D.4.4',952,963,1066,1,1),
-(1569,3,NULL,'Buffering',NULL,953,954,1568,1,1),
-(1570,3,NULL,'Input/output',NULL,955,956,1568,1,1),
-(1571,3,NULL,'Message sending',NULL,957,958,1568,1,1),
-(1572,3,NULL,'Network communication',NULL,959,960,1568,1,1),
-(1573,3,NULL,'Terminal management**',NULL,961,962,1568,1,1),
-(1574,3,'D.4.5','Reliability','D.4.5',964,973,1066,1,1),
-(1575,3,NULL,'Backup procedures',NULL,965,966,1574,1,1),
-(1576,3,NULL,'Checkpoint/restart',NULL,967,968,1574,1,1),
-(1577,3,NULL,'Fault-tolerance',NULL,969,970,1574,1,1),
-(1578,3,NULL,'Verification',NULL,971,972,1574,1,1),
-(1579,3,'D.4.6','Security and Protection (K.6.5)','D.4.6',974,989,1066,1,1),
-(1580,3,NULL,'Access controls',NULL,975,976,1579,1,1),
-(1581,3,NULL,'Authentication',NULL,977,978,1579,1,1),
-(1582,3,NULL,'Cryptographic controls',NULL,979,980,1579,1,1),
-(1583,3,NULL,'Information flow controls',NULL,981,982,1579,1,1),
-(1584,3,NULL,'Invasive software (e.g., viruses, worms, Trojan horses)',NULL,983,984,1579,1,1),
-(1585,3,NULL,'Security kernels**',NULL,985,986,1579,1,1),
-(1586,3,NULL,'Verification**',NULL,987,988,1579,1,1),
-(1587,3,'D.4.7','Organization and Design','D.4.7',990,1001,1066,1,1),
-(1588,3,NULL,'Batch processing systems**',NULL,991,992,1587,1,1),
-(1589,3,NULL,'Distributed systems',NULL,993,994,1587,1,1),
-(1590,3,NULL,'Hierarchical design**',NULL,995,996,1587,1,1),
-(1591,3,NULL,'Interactive systems',NULL,997,998,1587,1,1),
-(1592,3,NULL,'Real-time systems and embedded systems',NULL,999,1000,1587,1,1),
-(1593,3,'D.4.8','Performance (C.4, D.2.8, I.6)','D.4.8',1002,1017,1066,1,1),
-(1594,3,NULL,'Measurements',NULL,1003,1004,1593,1,1),
-(1595,3,NULL,'Modeling and prediction',NULL,1005,1006,1593,1,1),
-(1596,3,NULL,'Monitors',NULL,1007,1008,1593,1,1),
-(1597,3,NULL,'Operational analysis',NULL,1009,1010,1593,1,1),
-(1598,3,NULL,'Queueing theory',NULL,1011,1012,1593,1,1),
-(1599,3,NULL,'Simulation',NULL,1013,1014,1593,1,1),
-(1600,3,NULL,'Stochastic analysis',NULL,1015,1016,1593,1,1),
-(1601,3,'D.4.9','Systems Programs and Utilities','D.4.9',1018,1027,1066,1,1),
-(1602,3,NULL,'Command and control languages',NULL,1019,1020,1601,1,1),
-(1603,3,NULL,'Linkers**',NULL,1021,1022,1601,1,1),
-(1604,3,NULL,'Loaders**',NULL,1023,1024,1601,1,1),
-(1605,3,NULL,'Window managers',NULL,1025,1026,1601,1,1),
-(1606,3,'D.4.m','Miscellaneous','D.4.m',1028,1029,1066,1,1),
-(1607,3,NULL,'Software psychology**',NULL,1032,1033,1067,1,1),
-(1608,3,NULL,'Arrays',NULL,1040,1041,1069,1,1),
-(1609,3,NULL,'Distributed data structures (NEW)',NULL,1042,1043,1069,1,1),
-(1610,3,NULL,'Graphs and networks (REVISED)',NULL,1044,1045,1069,1,1),
-(1611,3,NULL,'Lists, stacks, and queues (REVISED)',NULL,1046,1047,1069,1,1),
-(1612,3,NULL,'Records (NEW)',NULL,1048,1049,1069,1,1),
-(1613,3,NULL,'Tables**',NULL,1050,1051,1069,1,1),
-(1614,3,NULL,'Trees',NULL,1052,1053,1069,1,1),
-(1615,3,NULL,'Composite structures**',NULL,1056,1057,1070,1,1),
-(1616,3,NULL,'Contiguous representations**',NULL,1058,1059,1070,1,1),
-(1617,3,NULL,'Hash-table representations',NULL,1060,1061,1070,1,1),
-(1618,3,NULL,'Linked representations',NULL,1062,1063,1070,1,1),
-(1619,3,NULL,'Object representation (NEW)',NULL,1064,1065,1070,1,1),
-(1620,3,NULL,'Primitive data items**',NULL,1066,1067,1070,1,1),
-(1621,3,NULL,'Code breaking (NEW)',NULL,1070,1071,1071,1,1),
-(1622,3,NULL,'Data encryption standard (DES)**',NULL,1072,1073,1071,1,1),
-(1623,3,NULL,'Public key cryptosystems',NULL,1074,1075,1071,1,1),
-(1624,3,NULL,'Standards (e.g., DES, PGP, RSA) (NEW)',NULL,1076,1077,1071,1,1),
-(1625,3,NULL,'Data compaction and compression',NULL,1080,1081,1072,1,1),
-(1626,3,NULL,'Error control codes',NULL,1082,1083,1072,1,1),
-(1627,3,NULL,'Formal models of communication',NULL,1084,1085,1072,1,1),
-(1628,3,NULL,'Nonsecret encoding schemes**',NULL,1086,1087,1072,1,1),
-(1629,3,NULL,'Backup/recovery',NULL,1090,1091,1073,1,1),
-(1630,3,NULL,'Optimization**',NULL,1092,1093,1073,1,1),
-(1631,3,NULL,'Organization/structure',NULL,1094,1095,1073,1,1),
-(1632,3,NULL,'Sorting/searching',NULL,1096,1097,1073,1,1),
-(1633,3,'F.1.0','General','F.1.0',1106,1107,1076,1,1),
-(1634,3,'F.1.1','Models of Computation (F.4.1)','F.1.1',1108,1121,1076,1,1),
-(1635,3,NULL,'Automata (e.g., finite, push-down, resource-bounded)',NULL,1109,1110,1634,1,1),
-(1636,3,NULL,'Bounded-action devices (e.g., Turing machines, random access machines)',NULL,1111,1112,1634,1,1),
-(1637,3,NULL,'Computability theory',NULL,1113,1114,1634,1,1),
-(1638,3,NULL,'Relations between models',NULL,1115,1116,1634,1,1),
-(1639,3,NULL,'Self-modifying machines (e.g., neural networks)',NULL,1117,1118,1634,1,1),
-(1640,3,NULL,'Unbounded-action devices (e.g., cellular automata, circuits, networks of machines)',NULL,1119,1120,1634,1,1),
-(1641,3,'F.1.2','Modes of Computation','F.1.2',1122,1137,1076,1,1),
-(1642,3,NULL,'Alternation and nondeterminism',NULL,1123,1124,1641,1,1),
-(1643,3,NULL,'Interactive and reactive computation (REVISED)',NULL,1125,1126,1641,1,1),
-(1644,3,NULL,'Online computation',NULL,1127,1128,1641,1,1),
-(1645,3,NULL,'Parallelism and concurrency',NULL,1129,1130,1641,1,1),
-(1646,3,NULL,'Probabilistic computation',NULL,1131,1132,1641,1,1),
-(1647,3,NULL,'Relations among modes**',NULL,1133,1134,1641,1,1),
-(1648,3,NULL,'Relativized computation',NULL,1135,1136,1641,1,1),
-(1649,3,'F.1.3','Complexity Measures and Classes (F.2) (REVISED)','F.1.3',1138,1149,1076,1,1),
-(1650,3,NULL,'Complexity hierarchies',NULL,1139,1140,1649,1,1),
-(1651,3,NULL,'Machine-independent complexity**',NULL,1141,1142,1649,1,1),
-(1652,3,NULL,'Reducibility and completeness',NULL,1143,1144,1649,1,1),
-(1653,3,NULL,'Relations among complexity classes',NULL,1145,1146,1649,1,1),
-(1654,3,NULL,'Relations among complexity measures',NULL,1147,1148,1649,1,1),
-(1655,3,'F.1.m','Miscellaneous','F.1.m',1150,1151,1076,1,1),
-(1656,3,'F.2.0','General','F.2.0',1154,1155,1077,1,1),
-(1657,3,'F.2.1','Numerical Algorithms and Problems (G.1, G.4, I.1)','F.2.1',1156,1167,1077,1,1),
-(1658,3,NULL,'Computation of transforms (e.g., fast Fourier transform)',NULL,1157,1158,1657,1,1),
-(1659,3,NULL,'Computations in finite fields',NULL,1159,1160,1657,1,1),
-(1660,3,NULL,'Computations on matrices',NULL,1161,1162,1657,1,1),
-(1661,3,NULL,'Computations on polynomials',NULL,1163,1164,1657,1,1),
-(1662,3,NULL,'Number-theoretic computations (e.g., factoring, primality testing)',NULL,1165,1166,1657,1,1),
-(1663,3,'F.2.2','Nonnumerical Algorithms and Problems (E.2-5, G.2, H.2-3)','F.2.2',1168,1183,1077,1,1),
-(1664,3,NULL,'Complexity of proof procedures',NULL,1169,1170,1663,1,1),
-(1665,3,NULL,'Computations on discrete structures',NULL,1171,1172,1663,1,1),
-(1666,3,NULL,'Geometrical problems and computations',NULL,1173,1174,1663,1,1),
-(1667,3,NULL,'Pattern matching',NULL,1175,1176,1663,1,1),
-(1668,3,NULL,'Routing and layout',NULL,1177,1178,1663,1,1),
-(1669,3,NULL,'Sequencing and scheduling',NULL,1179,1180,1663,1,1),
-(1670,3,NULL,'Sorting and searching',NULL,1181,1182,1663,1,1),
-(1671,3,'F.2.3','Tradeoffs between Complexity Measures (F.1.3)','F.2.3',1184,1185,1077,1,1),
-(1672,3,'F.2.m','Miscellaneous','F.2.m',1186,1187,1077,1,1),
-(1673,3,'F.3.0','General','F.3.0',1190,1191,1078,1,1),
-(1674,3,'F.3.1','Specifying and Verifying and Reasoning about Programs (D.2.1, D.2.4, D.3.1, E.1)','F.3.1',1192,1205,1078,1,1),
-(1675,3,NULL,'Assertions',NULL,1193,1194,1674,1,1),
-(1676,3,NULL,'Invariants',NULL,1195,1196,1674,1,1),
-(1677,3,NULL,'Logics of programs',NULL,1197,1198,1674,1,1),
-(1678,3,NULL,'Mechanical verification',NULL,1199,1200,1674,1,1),
-(1679,3,NULL,'Pre- and post-conditions',NULL,1201,1202,1674,1,1),
-(1680,3,NULL,'Specification techniques',NULL,1203,1204,1674,1,1),
-(1681,3,'F.3.2','Semantics of Programming Languages (D.3.1)','F.3.2',1206,1219,1078,1,1),
-(1682,3,NULL,'Algebraic approaches to semantics',NULL,1207,1208,1681,1,1),
-(1683,3,NULL,'Denotational semantics',NULL,1209,1210,1681,1,1),
-(1684,3,NULL,'Operational semantics',NULL,1211,1212,1681,1,1),
-(1685,3,NULL,'Partial evaluation (NEW)',NULL,1213,1214,1681,1,1),
-(1686,3,NULL,'Process models (NEW)',NULL,1215,1216,1681,1,1),
-(1687,3,NULL,'Program analysis (NEW)',NULL,1217,1218,1681,1,1),
-(1688,3,'F.3.3','Studies of Program Constructs (D.3.2-3)','F.3.3',1220,1231,1078,1,1),
-(1689,3,NULL,'Control primitives',NULL,1221,1222,1688,1,1),
-(1690,3,NULL,'Functional constructs',NULL,1223,1224,1688,1,1),
-(1691,3,NULL,'Object-oriented constructs (NEW)',NULL,1225,1226,1688,1,1),
-(1692,3,NULL,'Program and recursion schemes',NULL,1227,1228,1688,1,1),
-(1693,3,NULL,'Type structure',NULL,1229,1230,1688,1,1),
-(1694,3,'F.3.m','Miscellaneous','F.3.m',1232,1233,1078,1,1),
-(1695,3,'F.4.0','General','F.4.0',1236,1237,1079,1,1),
-(1696,3,'F.4.1','Mathematical Logic (F.1.1, I.2.2-4)','F.4.1',1238,1261,1079,1,1),
-(1697,3,NULL,'Computability theory',NULL,1239,1240,1696,1,1),
-(1698,3,NULL,'Computational logic',NULL,1241,1242,1696,1,1),
-(1699,3,NULL,'Lambda calculus and related systems',NULL,1243,1244,1696,1,1),
-(1700,3,NULL,'Logic and constraint programming (REVISED)',NULL,1245,1246,1696,1,1),
-(1701,3,NULL,'Mechanical theorem proving',NULL,1247,1248,1696,1,1),
-(1702,3,NULL,'Modal logic (NEW)',NULL,1249,1250,1696,1,1),
-(1703,3,NULL,'Model theory',NULL,1251,1252,1696,1,1),
-(1704,3,NULL,'Proof theory',NULL,1253,1254,1696,1,1),
-(1705,3,NULL,'Recursive function theory',NULL,1255,1256,1696,1,1),
-(1706,3,NULL,'Set theory (NEW)',NULL,1257,1258,1696,1,1),
-(1707,3,NULL,'Temporal logic (NEW)',NULL,1259,1260,1696,1,1),
-(1708,3,'F.4.2','Grammars and Other Rewriting Systems (D.3.1)','F.4.2',1262,1273,1079,1,1),
-(1709,3,NULL,'Decision problems',NULL,1263,1264,1708,1,1),
-(1710,3,NULL,'Grammar types (e.g., context-free, context-sensitive)',NULL,1265,1266,1708,1,1),
-(1711,3,NULL,'Parallel rewriting systems (e.g., developmental systems, L-systems)',NULL,1267,1268,1708,1,1),
-(1712,3,NULL,'Parsing',NULL,1269,1270,1708,1,1),
-(1713,3,NULL,'Thue systems',NULL,1271,1272,1708,1,1),
-(1714,3,'F.4.3','Formal Languages (D.3.1)','F.4.3',1274,1285,1079,1,1),
-(1715,3,NULL,'Algebraic language theory',NULL,1275,1276,1714,1,1),
-(1716,3,NULL,'Classes defined by grammars or automata (e.g., context-free languages, regular sets, recursive sets)',NULL,1277,1278,1714,1,1),
-(1717,3,NULL,'Classes defined by resource-bounded automata**',NULL,1279,1280,1714,1,1),
-(1718,3,NULL,'Decision problems',NULL,1281,1282,1714,1,1),
-(1719,3,NULL,'Operations on languages',NULL,1283,1284,1714,1,1),
-(1720,3,'F.4.m','Miscellaneous','F.4.m',1286,1287,1079,1,1),
-(1721,3,'G.1.0','General','G.1.0',1296,1313,1082,1,1),
-(1722,3,NULL,'Computer arithmetic',NULL,1297,1298,1721,1,1),
-(1723,3,NULL,'Conditioning (and ill-conditioning) (REVISED)',NULL,1299,1300,1721,1,1),
-(1724,3,NULL,'Error analysis',NULL,1301,1302,1721,1,1),
-(1725,3,NULL,'Interval arithmetic (NEW)',NULL,1303,1304,1721,1,1),
-(1726,3,NULL,'Multiple precision arithmetic (NEW)',NULL,1305,1306,1721,1,1),
-(1727,3,NULL,'Numerical algorithms',NULL,1307,1308,1721,1,1),
-(1728,3,NULL,'Parallel algorithms',NULL,1309,1310,1721,1,1),
-(1729,3,NULL,'Stability (and instability)',NULL,1311,1312,1721,1,1),
-(1730,3,'G.1.1','Interpolation (I.3.5, I.3.7)','G.1.1',1314,1325,1082,1,1),
-(1731,3,NULL,'Difference formulas**',NULL,1315,1316,1730,1,1),
-(1732,3,NULL,'Extrapolation',NULL,1317,1318,1730,1,1),
-(1733,3,NULL,'Interpolation formulas',NULL,1319,1320,1730,1,1),
-(1734,3,NULL,'Smoothing',NULL,1321,1322,1730,1,1),
-(1735,3,NULL,'Spline and piecewise polynomial interpolation',NULL,1323,1324,1730,1,1),
-(1736,3,'G.1.2','Approximation','G.1.2',1326,1351,1082,1,1),
-(1737,3,NULL,'Approximation of surfaces and contours (NEW)',NULL,1327,1328,1736,1,1),
-(1738,3,NULL,'Chebyshev approximation and theory',NULL,1329,1330,1736,1,1),
-(1739,3,NULL,'Elementary function approximation',NULL,1331,1332,1736,1,1),
-(1740,3,NULL,'Fast Fourier transforms (FFT) (NEW)',NULL,1333,1334,1736,1,1),
-(1741,3,NULL,'Least squares approximation',NULL,1335,1336,1736,1,1),
-(1742,3,NULL,'Linear approximation',NULL,1337,1338,1736,1,1),
-(1743,3,NULL,'Minimax approximation and algorithms',NULL,1339,1340,1736,1,1),
-(1744,3,NULL,'Nonlinear approximation',NULL,1341,1342,1736,1,1),
-(1745,3,NULL,'Rational approximation',NULL,1343,1344,1736,1,1),
-(1746,3,NULL,'Special function approximations (NEW)',NULL,1345,1346,1736,1,1),
-(1747,3,NULL,'Spline and piecewise polynomial approximation',NULL,1347,1348,1736,1,1),
-(1748,3,NULL,'Wavelets and fractals (NEW)',NULL,1349,1350,1736,1,1),
-(1749,3,'G.1.3','Numerical Linear Algebra','G.1.3',1352,1371,1082,1,1),
-(1750,3,NULL,'Conditioning',NULL,1353,1354,1749,1,1),
-(1751,3,NULL,'Determinants**',NULL,1355,1356,1749,1,1),
-(1752,3,NULL,'Eigenvalues and eigenvectors (direct and iterative methods) (REVISED)',NULL,1357,1358,1749,1,1),
-(1753,3,NULL,'Error analysis',NULL,1359,1360,1749,1,1),
-(1754,3,NULL,'Linear systems (direct and iterative methods)',NULL,1361,1362,1749,1,1),
-(1755,3,NULL,'Matrix inversion',NULL,1363,1364,1749,1,1),
-(1756,3,NULL,'Pseudoinverses**',NULL,1365,1366,1749,1,1),
-(1757,3,NULL,'Singular value decomposition (NEW)',NULL,1367,1368,1749,1,1),
-(1758,3,NULL,'Sparse, structured, and very large systems (direct and iterative methods) (REVISED)',NULL,1369,1370,1749,1,1),
-(1759,3,'G.1.4','Quadrature and Numerical Differentiation (F.2.1)','G.1.4',1372,1389,1082,1,1),
-(1760,3,NULL,'Adaptive and iterative quadrature (REVISED)',NULL,1373,1374,1759,1,1),
-(1761,3,NULL,'Automatic differentiation (NEW)',NULL,1375,1376,1759,1,1),
-(1762,3,NULL,'Equal interval integration**',NULL,1377,1378,1759,1,1),
-(1763,3,NULL,'Error analysis',NULL,1379,1380,1759,1,1),
-(1764,3,NULL,'Finite difference methods',NULL,1381,1382,1759,1,1),
-(1765,3,NULL,'Gaussian quadrature',NULL,1383,1384,1759,1,1),
-(1766,3,NULL,'Iterative methods',NULL,1385,1386,1759,1,1),
-(1767,3,NULL,'Multidimensional (multiple) quadrature (REVISED)',NULL,1387,1388,1759,1,1),
-(1768,3,'G.1.5','Roots of Nonlinear Equations','G.1.5',1390,1403,1082,1,1),
-(1769,3,NULL,'Continuation (homotopy) methods (NEW)',NULL,1391,1392,1768,1,1),
-(1770,3,NULL,'Convergence',NULL,1393,1394,1768,1,1),
-(1771,3,NULL,'Error analysis',NULL,1395,1396,1768,1,1),
-(1772,3,NULL,'Iterative methods',NULL,1397,1398,1768,1,1),
-(1773,3,NULL,'Polynomials, methods for',NULL,1399,1400,1768,1,1),
-(1774,3,NULL,'Systems of equations',NULL,1401,1402,1768,1,1),
-(1775,3,'G.1.6','Optimization','G.1.6',1404,1429,1082,1,1),
-(1776,3,NULL,'Constrained optimization',NULL,1405,1406,1775,1,1),
-(1777,3,NULL,'Convex programming (NEW)',NULL,1407,1408,1775,1,1),
-(1778,3,NULL,'Global optimization (NEW)',NULL,1409,1410,1775,1,1),
-(1779,3,NULL,'Gradient methods',NULL,1411,1412,1775,1,1),
-(1780,3,NULL,'Integer programming',NULL,1413,1414,1775,1,1),
-(1781,3,NULL,'Least squares methods',NULL,1415,1416,1775,1,1),
-(1782,3,NULL,'Linear programming',NULL,1417,1418,1775,1,1),
-(1783,3,NULL,'Nonlinear programming',NULL,1419,1420,1775,1,1),
-(1784,3,NULL,'Quadratic programming methods (NEW)',NULL,1421,1422,1775,1,1),
-(1785,3,NULL,'Simulated annealing (NEW)',NULL,1423,1424,1775,1,1),
-(1786,3,NULL,'Stochastic programming (NEW)',NULL,1425,1426,1775,1,1),
-(1787,3,NULL,'Unconstrained optimization (NEW)',NULL,1427,1428,1775,1,1),
-(1788,3,'G.1.7','Ordinary Differential Equations','G.1.7',1430,1451,1082,1,1),
-(1789,3,NULL,'Boundary value problems',NULL,1431,1432,1788,1,1),
-(1790,3,NULL,'Chaotic systems (NEW)',NULL,1433,1434,1788,1,1),
-(1791,3,NULL,'Convergence and stability',NULL,1435,1436,1788,1,1),
-(1792,3,NULL,'Differential-algebraic equations (NEW)',NULL,1437,1438,1788,1,1),
-(1793,3,NULL,'Error analysis',NULL,1439,1440,1788,1,1),
-(1794,3,NULL,'Finite difference methods (NEW)',NULL,1441,1442,1788,1,1),
-(1795,3,NULL,'Initial value problems',NULL,1443,1444,1788,1,1),
-(1796,3,NULL,'Multistep and multivalue methods (REVISED)',NULL,1445,1446,1788,1,1),
-(1797,3,NULL,'One-step (single step) methods (REVISED)',NULL,1447,1448,1788,1,1),
-(1798,3,NULL,'Stiff equations',NULL,1449,1450,1788,1,1),
-(1799,3,'G.1.8','Partial Differential Equations','G.1.8',1452,1477,1082,1,1),
-(1800,3,NULL,'Domain decomposition methods (NEW)',NULL,1453,1454,1799,1,1),
-(1801,3,NULL,'Elliptic equations',NULL,1455,1456,1799,1,1),
-(1802,3,NULL,'Finite difference methods (REVISED)',NULL,1457,1458,1799,1,1),
-(1803,3,NULL,'Finite element methods',NULL,1459,1460,1799,1,1),
-(1804,3,NULL,'Finite volume methods (NEW)',NULL,1461,1462,1799,1,1),
-(1805,3,NULL,'Hyperbolic equations',NULL,1463,1464,1799,1,1),
-(1806,3,NULL,'Inverse problems (NEW)',NULL,1465,1466,1799,1,1),
-(1807,3,NULL,'Iterative solution techniques (NEW)',NULL,1467,1468,1799,1,1),
-(1808,3,NULL,'Method of lines',NULL,1469,1470,1799,1,1),
-(1809,3,NULL,'Multigrid and multilevel methods (NEW)',NULL,1471,1472,1799,1,1),
-(1810,3,NULL,'Parabolic equations',NULL,1473,1474,1799,1,1),
-(1811,3,NULL,'Spectral methods (NEW)',NULL,1475,1476,1799,1,1),
-(1812,3,'G.1.9','Integral Equations','G.1.9',1478,1487,1082,1,1),
-(1813,3,NULL,'Delay equations (NEW)',NULL,1479,1480,1812,1,1),
-(1814,3,NULL,'Fredholm equations',NULL,1481,1482,1812,1,1),
-(1815,3,NULL,'Integro-differential equations',NULL,1483,1484,1812,1,1),
-(1816,3,NULL,'Volterra equations',NULL,1485,1486,1812,1,1),
-(1817,3,'G.1.m','Miscellaneous','G.1.m',1488,1489,1082,1,1),
-(1818,3,'G.2.0','General','G.2.0',1492,1493,1083,1,1),
-(1819,3,'G.2.1','Combinatorics (F.2.2)','G.2.1',1494,1505,1083,1,1),
-(1820,3,NULL,'Combinatorial algorithms',NULL,1495,1496,1819,1,1),
-(1821,3,NULL,'Counting problems',NULL,1497,1498,1819,1,1),
-(1822,3,NULL,'Generating functions',NULL,1499,1500,1819,1,1),
-(1823,3,NULL,'Permutations and combinations',NULL,1501,1502,1819,1,1),
-(1824,3,NULL,'Recurrences and difference equations',NULL,1503,1504,1819,1,1),
-(1825,3,'G.2.2','Graph Theory (F.2.2)','G.2.2',1506,1519,1083,1,1),
-(1826,3,NULL,'Graph algorithms',NULL,1507,1508,1825,1,1),
-(1827,3,NULL,'Graph labeling (NEW)',NULL,1509,1510,1825,1,1),
-(1828,3,NULL,'Hypergraphs (NEW)',NULL,1511,1512,1825,1,1),
-(1829,3,NULL,'Network problems',NULL,1513,1514,1825,1,1),
-(1830,3,NULL,'Path and circuit problems',NULL,1515,1516,1825,1,1),
-(1831,3,NULL,'Trees',NULL,1517,1518,1825,1,1),
-(1832,3,'G.2.3','Applications (NEW)','G.2.3',1520,1521,1083,1,1),
-(1833,3,'G.2.m','Miscellaneous','G.2.m',1522,1523,1083,1,1),
-(1834,3,NULL,'Contingency table analysis (NEW)',NULL,1526,1527,1084,1,1),
-(1835,3,NULL,'Correlation and regression analysis (NEW)',NULL,1528,1529,1084,1,1),
-(1836,3,NULL,'Distribution functions (NEW)',NULL,1530,1531,1084,1,1),
-(1837,3,NULL,'Experimental design (NEW)',NULL,1532,1533,1084,1,1),
-(1838,3,NULL,'Markov processes (NEW)',NULL,1534,1535,1084,1,1),
-(1839,3,NULL,'Multivariate statistics (NEW)',NULL,1536,1537,1084,1,1),
-(1840,3,NULL,'Nonparametric statistics (NEW)',NULL,1538,1539,1084,1,1),
-(1841,3,NULL,'Probabilistic algorithms (including Monte Carlo)',NULL,1540,1541,1084,1,1),
-(1842,3,NULL,'Queueing theory (NEW)',NULL,1542,1543,1084,1,1),
-(1843,3,NULL,'Random number generation',NULL,1544,1545,1084,1,1),
-(1844,3,NULL,'Reliability and life testing (NEW)',NULL,1546,1547,1084,1,1),
-(1845,3,NULL,'Renewal theory (NEW)',NULL,1548,1549,1084,1,1),
-(1846,3,NULL,'Robust regression (NEW)',NULL,1550,1551,1084,1,1),
-(1847,3,NULL,'Statistical computing',NULL,1552,1553,1084,1,1),
-(1848,3,NULL,'Statistical software',NULL,1554,1555,1084,1,1),
-(1849,3,NULL,'Stochastic processes (NEW)',NULL,1556,1557,1084,1,1),
-(1850,3,NULL,'Survival analysis (NEW)',NULL,1558,1559,1084,1,1),
-(1851,3,NULL,'Time series analysis (NEW)',NULL,1560,1561,1084,1,1),
-(1852,3,NULL,'Algorithm design and analysis (REVISED)',NULL,1564,1565,1085,1,1),
-(1853,3,NULL,'Certification and testing',NULL,1566,1567,1085,1,1),
-(1854,3,NULL,'Documentation (NEW)',NULL,1568,1569,1085,1,1),
-(1855,3,NULL,'Efficiency',NULL,1570,1571,1085,1,1),
-(1856,3,NULL,'Parallel and vector implementations (NEW)',NULL,1572,1573,1085,1,1),
-(1857,3,NULL,'Portability**',NULL,1574,1575,1085,1,1),
-(1858,3,NULL,'Reliability and robustness',NULL,1576,1577,1085,1,1),
-(1859,3,NULL,'User interfaces (NEW)',NULL,1578,1579,1085,1,1),
-(1860,3,NULL,'Verification**',NULL,1580,1581,1085,1,1),
-(1861,3,NULL,'Queueing theory**',NULL,1584,1585,1086,1,1),
-(1862,3,'H.1.0','General','H.1.0',1592,1593,1088,1,1),
-(1863,3,'H.1.1','Systems and Information Theory (E.4)','H.1.1',1594,1601,1088,1,1),
-(1864,3,NULL,'General systems theory',NULL,1595,1596,1863,1,1),
-(1865,3,NULL,'Information theory',NULL,1597,1598,1863,1,1),
-(1866,3,NULL,'Value of information',NULL,1599,1600,1863,1,1),
-(1867,3,'H.1.2','User/Machine Systems','H.1.2',1602,1609,1088,1,1),
-(1868,3,NULL,'Human factors',NULL,1603,1604,1867,1,1),
-(1869,3,NULL,'Human information processing',NULL,1605,1606,1867,1,1),
-(1870,3,NULL,'Software psychology (NEW)',NULL,1607,1608,1867,1,1),
-(1871,3,'H.1.m','Miscellaneous','H.1.m',1610,1611,1088,1,1),
-(1872,3,'H.2.0','General','H.2.0',1614,1617,1089,1,1),
-(1873,3,NULL,'Security, integrity, and protection**',NULL,1615,1616,1872,1,1),
-(1874,3,'H.2.1','Logical Design','H.2.1',1618,1625,1089,1,1),
-(1875,3,NULL,'Data models',NULL,1619,1620,1874,1,1),
-(1876,3,NULL,'Normal forms',NULL,1621,1622,1874,1,1),
-(1877,3,NULL,'Schema and subschema',NULL,1623,1624,1874,1,1),
-(1878,3,'H.2.2','Physical Design','H.2.2',1626,1633,1089,1,1),
-(1879,3,NULL,'Access methods',NULL,1627,1628,1878,1,1),
-(1880,3,NULL,'Deadlock avoidance',NULL,1629,1630,1878,1,1),
-(1881,3,NULL,'Recovery and restart',NULL,1631,1632,1878,1,1),
-(1882,3,'H.2.3','Languages (D.3.2)','H.2.3',1634,1645,1089,1,1),
-(1883,3,NULL,'Data description languages (DDL)',NULL,1635,1636,1882,1,1),
-(1884,3,NULL,'Data manipulation languages (DML)',NULL,1637,1638,1882,1,1),
-(1885,3,NULL,'Database (persistent) programming languages',NULL,1639,1640,1882,1,1),
-(1886,3,NULL,'Query languages',NULL,1641,1642,1882,1,1),
-(1887,3,NULL,'Report writers',NULL,1643,1644,1882,1,1),
-(1888,3,'H.2.4','Systems','H.2.4',1646,1667,1089,1,1),
-(1889,3,NULL,'Concurrency',NULL,1647,1648,1888,1,1),
-(1890,3,NULL,'Distributed databases (REVISED)',NULL,1649,1650,1888,1,1),
-(1891,3,NULL,'Multimedia databases (NEW)',NULL,1651,1652,1888,1,1),
-(1892,3,NULL,'Object-oriented databases (NEW)',NULL,1653,1654,1888,1,1),
-(1893,3,NULL,'Parallel databases (NEW)',NULL,1655,1656,1888,1,1),
-(1894,3,NULL,'Query processing',NULL,1657,1658,1888,1,1),
-(1895,3,NULL,'Relational databases (NEW)',NULL,1659,1660,1888,1,1),
-(1896,3,NULL,'Rule-based databases (NEW)',NULL,1661,1662,1888,1,1),
-(1897,3,NULL,'Textual databases (NEW)',NULL,1663,1664,1888,1,1),
-(1898,3,NULL,'Transaction processing',NULL,1665,1666,1888,1,1),
-(1899,3,'H.2.5','Heterogeneous Databases','H.2.5',1668,1673,1089,1,1),
-(1900,3,NULL,'Data translation**',NULL,1669,1670,1899,1,1),
-(1901,3,NULL,'Program translation**',NULL,1671,1672,1899,1,1),
-(1902,3,'H.2.6','Database Machines','H.2.6',1674,1675,1089,1,1),
-(1903,3,'H.2.7','Database Administration','H.2.7',1676,1685,1089,1,1),
-(1904,3,NULL,'Data dictionary/directory',NULL,1677,1678,1903,1,1),
-(1905,3,NULL,'Data warehouse and repository (NEW)',NULL,1679,1680,1903,1,1),
-(1906,3,NULL,'Logging and recovery',NULL,1681,1682,1903,1,1),
-(1907,3,NULL,'Security, integrity, and protection (NEW)',NULL,1683,1684,1903,1,1),
-(1908,3,'H.2.8','Database Applications','H.2.8',1686,1697,1089,1,1),
-(1909,3,NULL,'Data mining (NEW)',NULL,1687,1688,1908,1,1),
-(1910,3,NULL,'Image databases (NEW)',NULL,1689,1690,1908,1,1),
-(1911,3,NULL,'Scientific databases (NEW)',NULL,1691,1692,1908,1,1),
-(1912,3,NULL,'Spatial databases and GIS (NEW)',NULL,1693,1694,1908,1,1),
-(1913,3,NULL,'Statistical databases (NEW)',NULL,1695,1696,1908,1,1),
-(1914,3,'H.2.m','Miscellaneous','H.2.m',1698,1699,1089,1,1),
-(1915,3,'H.3.0','General','H.3.0',1702,1703,1090,1,1),
-(1916,3,'H.3.1','Content Analysis and Indexing','H.3.1',1704,1715,1090,1,1),
-(1917,3,NULL,'Abstracting methods',NULL,1705,1706,1916,1,1),
-(1918,3,NULL,'Dictionaries',NULL,1707,1708,1916,1,1),
-(1919,3,NULL,'Indexing methods',NULL,1709,1710,1916,1,1),
-(1920,3,NULL,'Linguistic processing',NULL,1711,1712,1916,1,1),
-(1921,3,NULL,'Thesauruses',NULL,1713,1714,1916,1,1),
-(1922,3,'H.3.2','Information Storage','H.3.2',1716,1721,1090,1,1),
-(1923,3,NULL,'File organization',NULL,1717,1718,1922,1,1),
-(1924,3,NULL,'Record classification**',NULL,1719,1720,1922,1,1),
-(1925,3,'H.3.3','Information Search and Retrieval','H.3.3',1722,1737,1090,1,1),
-(1926,3,NULL,'Clustering',NULL,1723,1724,1925,1,1),
-(1927,3,NULL,'Information filtering (NEW)',NULL,1725,1726,1925,1,1),
-(1928,3,NULL,'Query formulation',NULL,1727,1728,1925,1,1),
-(1929,3,NULL,'Relevance feedback (NEW)',NULL,1729,1730,1925,1,1),
-(1930,3,NULL,'Retrieval models',NULL,1731,1732,1925,1,1),
-(1931,3,NULL,'Search process',NULL,1733,1734,1925,1,1),
-(1932,3,NULL,'Selection process',NULL,1735,1736,1925,1,1),
-(1933,3,'H.3.4','Systems and Software','H.3.4',1738,1751,1090,1,1),
-(1934,3,NULL,'Current awareness systems (selective dissemination of information--SDI)**',NULL,1739,1740,1933,1,1),
-(1935,3,NULL,'Distributed systems (NEW)',NULL,1741,1742,1933,1,1),
-(1936,3,NULL,'Information networks',NULL,1743,1744,1933,1,1),
-(1937,3,NULL,'Performance evaluation (efficiency and effectiveness) (NEW)',NULL,1745,1746,1933,1,1),
-(1938,3,NULL,'Question-answering (fact retrieval) systems**',NULL,1747,1748,1933,1,1),
-(1939,3,NULL,'User profiles and alert services (NEW)',NULL,1749,1750,1933,1,1),
-(1940,3,'H.3.5','Online Information Services','H.3.5',1752,1759,1090,1,1),
-(1941,3,NULL,'Commercial services (NEW)',NULL,1753,1754,1940,1,1),
-(1942,3,NULL,'Data sharing (REVISED)',NULL,1755,1756,1940,1,1),
-(1943,3,NULL,'Web-based services (NEW)',NULL,1757,1758,1940,1,1),
-(1944,3,'H.3.6','Library Automation','H.3.6',1760,1763,1090,1,1),
-(1945,3,NULL,'Large text archives',NULL,1761,1762,1944,1,1),
-(1946,3,'H.3.7','Digital Libraries (NEW)','H.3.7',1764,1775,1090,1,1),
-(1947,3,NULL,'Collection (NEW)',NULL,1765,1766,1946,1,1),
-(1948,3,NULL,'Dissemination (NEW)',NULL,1767,1768,1946,1,1),
-(1949,3,NULL,'Standards (NEW)',NULL,1769,1770,1946,1,1),
-(1950,3,NULL,'Systems issues (NEW)',NULL,1771,1772,1946,1,1),
-(1951,3,NULL,'User issues (NEW)',NULL,1773,1774,1946,1,1),
-(1952,3,'H.3.m','Miscellaneous','H.3.m',1776,1777,1090,1,1),
-(1953,3,'H.4.0','General','H.4.0',1780,1781,1091,1,1),
-(1954,3,'H.4.1','Office Automation (I.7)','H.4.1',1782,1797,1091,1,1),
-(1955,3,NULL,'Desktop publishing (NEW)',NULL,1783,1784,1954,1,1),
-(1956,3,NULL,'Equipment**',NULL,1785,1786,1954,1,1),
-(1957,3,NULL,'Groupware (NEW)',NULL,1787,1788,1954,1,1),
-(1958,3,NULL,'Spreadsheets',NULL,1789,1790,1954,1,1),
-(1959,3,NULL,'Time management (e.g., calendars, schedules)',NULL,1791,1792,1954,1,1),
-(1960,3,NULL,'Word processing',NULL,1793,1794,1954,1,1),
-(1961,3,NULL,'Workflow management (NEW)',NULL,1795,1796,1954,1,1),
-(1962,3,'H.4.2','Types of Systems','H.4.2',1798,1803,1091,1,1),
-(1963,3,NULL,'Decision support (e.g., MIS)',NULL,1799,1800,1962,1,1),
-(1964,3,NULL,'Logistics',NULL,1801,1802,1962,1,1),
-(1965,3,'H.4.3','Communications Applications','H.4.3',1804,1815,1091,1,1),
-(1966,3,NULL,'Bulletin boards',NULL,1805,1806,1965,1,1),
-(1967,3,NULL,'Computer conferencing, teleconferencing, and videoconferencing (REVISED)',NULL,1807,1808,1965,1,1),
-(1968,3,NULL,'Electronic mail',NULL,1809,1810,1965,1,1),
-(1969,3,NULL,'Information browsers (NEW)',NULL,1811,1812,1965,1,1),
-(1970,3,NULL,'Videotex',NULL,1813,1814,1965,1,1),
-(1971,3,'H.4.m','Miscellaneous','H.4.m',1816,1817,1091,1,1),
-(1972,3,'H.5.0','General','H.5.0',1820,1821,1092,1,1),
-(1973,3,'H.5.1','Multimedia Information Systems','H.5.1',1822,1835,1092,1,1),
-(1974,3,NULL,'Animations',NULL,1823,1824,1973,1,1),
-(1975,3,NULL,'Artificial, augmented, and virtual realities (REVISED)',NULL,1825,1826,1973,1,1),
-(1976,3,NULL,'Audio input/output',NULL,1827,1828,1973,1,1),
-(1977,3,NULL,'Evaluation/methodology',NULL,1829,1830,1973,1,1),
-(1978,3,NULL,'Hypertext navigation and maps**',NULL,1831,1832,1973,1,1),
-(1979,3,NULL,'Video (e.g., tape, disk, DVI)',NULL,1833,1834,1973,1,1),
-(1980,3,'H.5.2','User Interfaces (D.2.2, H.1.2, I.3.6)','H.5.2',1836,1875,1092,1,1),
-(1981,3,NULL,'Auditory (non-speech) feedback (NEW)',NULL,1837,1838,1980,1,1),
-(1982,3,NULL,'Benchmarking (NEW)',NULL,1839,1840,1980,1,1),
-(1983,3,NULL,'Ergonomics',NULL,1841,1842,1980,1,1),
-(1984,3,NULL,'Evaluation/methodology',NULL,1843,1844,1980,1,1),
-(1985,3,NULL,'Graphical user interfaces (GUI) (NEW)',NULL,1845,1846,1980,1,1),
-(1986,3,NULL,'Haptic I/O (NEW)',NULL,1847,1848,1980,1,1),
-(1987,3,NULL,'Input devices and strategies (e.g., mouse, touchscreen)',NULL,1849,1850,1980,1,1),
-(1988,3,NULL,'Interaction styles (e.g., commands, menus, forms, direct manipulation)',NULL,1851,1852,1980,1,1),
-(1989,3,NULL,'Natural language (NEW)',NULL,1853,1854,1980,1,1),
-(1990,3,NULL,'Prototyping (NEW)',NULL,1855,1856,1980,1,1),
-(1991,3,NULL,'Screen design (e.g., text, graphics, color)',NULL,1857,1858,1980,1,1),
-(1992,3,NULL,'Standardization (NEW)',NULL,1859,1860,1980,1,1),
-(1993,3,NULL,'Style guides (NEW)',NULL,1861,1862,1980,1,1),
-(1994,3,NULL,'Theory and methods',NULL,1863,1864,1980,1,1),
-(1995,3,NULL,'Training, help, and documentation',NULL,1865,1866,1980,1,1),
-(1996,3,NULL,'User-centered design (NEW)',NULL,1867,1868,1980,1,1),
-(1997,3,NULL,'User interface management systems (UIMS)',NULL,1869,1870,1980,1,1),
-(1998,3,NULL,'Voice I/O (NEW)',NULL,1871,1872,1980,1,1),
-(1999,3,NULL,'Windowing systems',NULL,1873,1874,1980,1,1),
-(2000,3,'H.5.3','Group and Organization Interfaces','H.5.3',1876,1893,1092,1,1),
-(2001,3,NULL,'Asynchronous interaction',NULL,1877,1878,2000,1,1),
-(2002,3,NULL,'Collaborative computing (NEW)',NULL,1879,1880,2000,1,1),
-(2003,3,NULL,'Computer-supported cooperative work (NEW)',NULL,1881,1882,2000,1,1),
-(2004,3,NULL,'Evaluation/methodology',NULL,1883,1884,2000,1,1),
-(2005,3,NULL,'Organizational design',NULL,1885,1886,2000,1,1),
-(2006,3,NULL,'Synchronous interaction',NULL,1887,1888,2000,1,1),
-(2007,3,NULL,'Theory and models',NULL,1889,1890,2000,1,1),
-(2008,3,NULL,'Web-based interaction (NEW)',NULL,1891,1892,2000,1,1),
-(2009,3,'H.5.4','Hypertext/Hypermedia (I.7, J.7) (NEW)','H.5.4',1894,1903,1092,1,1),
-(2010,3,NULL,'Architectures (NEW)',NULL,1895,1896,2009,1,1),
-(2011,3,NULL,'Navigation (NEW)',NULL,1897,1898,2009,1,1),
-(2012,3,NULL,'Theory (NEW)',NULL,1899,1900,2009,1,1),
-(2013,3,NULL,'User issues (NEW)',NULL,1901,1902,2009,1,1),
-(2014,3,'H.5.5','Sound and Music Computing (J.5) (NEW)','H.5.5',1904,1913,1092,1,1),
-(2015,3,NULL,'Methodologies and techniques (NEW)',NULL,1905,1906,2014,1,1),
-(2016,3,NULL,'Modeling (NEW)',NULL,1907,1908,2014,1,1),
-(2017,3,NULL,'Signal analysis, synthesis, and processing (NEW)',NULL,1909,1910,2014,1,1),
-(2018,3,NULL,'Systems (NEW)',NULL,1911,1912,2014,1,1),
-(2019,3,'H.5.m','Miscellaneous (NEW)','H.5.m',1914,1915,1092,1,1),
-(2020,3,'I.1.0','General','I.1.0',1924,1925,1095,1,1),
-(2021,3,'I.1.1','Expressions and Their Representation (E.1-2)','I.1.1',1926,1931,1095,1,1),
-(2022,3,NULL,'Representations (general and polynomial)',NULL,1927,1928,2021,1,1),
-(2023,3,NULL,'Simplification of expressions',NULL,1929,1930,2021,1,1),
-(2024,3,'I.1.2','Algorithms (F.2.1-2)','I.1.2',1932,1939,1095,1,1),
-(2025,3,NULL,'Algebraic algorithms',NULL,1933,1934,2024,1,1),
-(2026,3,NULL,'Analysis of algorithms',NULL,1935,1936,2024,1,1),
-(2027,3,NULL,'Nonalgebraic algorithms',NULL,1937,1938,2024,1,1),
-(2028,3,'I.1.3','Languages and Systems (D.3.2-3, F.2.2)','I.1.3',1940,1951,1095,1,1),
-(2029,3,NULL,'Evaluation strategies',NULL,1941,1942,2028,1,1),
-(2030,3,NULL,'Nonprocedural languages**',NULL,1943,1944,2028,1,1),
-(2031,3,NULL,'Special-purpose algebraic systems',NULL,1945,1946,2028,1,1),
-(2032,3,NULL,'Special-purpose hardware**',NULL,1947,1948,2028,1,1),
-(2033,3,NULL,'Substitution mechanisms**',NULL,1949,1950,2028,1,1),
-(2034,3,'I.1.4','Applications','I.1.4',1952,1953,1095,1,1),
-(2035,3,'I.1.m','Miscellaneous','I.1.m',1954,1955,1095,1,1),
-(2036,3,'I.2.0','General','I.2.0',1958,1963,1096,1,1),
-(2037,3,NULL,'Cognitive simulation',NULL,1959,1960,2036,1,1),
-(2038,3,NULL,'Philosophical foundations',NULL,1961,1962,2036,1,1),
-(2039,3,'I.2.1','Applications and Expert Systems (H.4, J)','I.2.1',1964,1979,1096,1,1),
-(2040,3,NULL,'Cartography',NULL,1965,1966,2039,1,1),
-(2041,3,NULL,'Games',NULL,1967,1968,2039,1,1),
-(2042,3,NULL,'Industrial automation',NULL,1969,1970,2039,1,1),
-(2043,3,NULL,'Law',NULL,1971,1972,2039,1,1),
-(2044,3,NULL,'Medicine and science',NULL,1973,1974,2039,1,1),
-(2045,3,NULL,'Natural language interfaces',NULL,1975,1976,2039,1,1),
-(2046,3,NULL,'Office automation',NULL,1977,1978,2039,1,1),
-(2047,3,'I.2.2','Automatic Programming (D.1.2, F.3.1, F.4.1)','I.2.2',1980,1991,1096,1,1),
-(2048,3,NULL,'Automatic analysis of algorithms',NULL,1981,1982,2047,1,1),
-(2049,3,NULL,'Program modification',NULL,1983,1984,2047,1,1),
-(2050,3,NULL,'Program synthesis',NULL,1985,1986,2047,1,1),
-(2051,3,NULL,'Program transformation',NULL,1987,1988,2047,1,1),
-(2052,3,NULL,'Program verification',NULL,1989,1990,2047,1,1),
-(2053,3,'I.2.3','Deduction and Theorem Proving (F.4.1)','I.2.3',1992,2009,1096,1,1),
-(2054,3,NULL,'Answer/reason extraction',NULL,1993,1994,2053,1,1),
-(2055,3,NULL,'Deduction (e.g., natural, rule-based)',NULL,1995,1996,2053,1,1),
-(2056,3,NULL,'Inference engines (NEW)',NULL,1997,1998,2053,1,1),
-(2057,3,NULL,'Logic programming',NULL,1999,2000,2053,1,1),
-(2058,3,NULL,'Mathematical induction',NULL,2001,2002,2053,1,1),
-(2059,3,NULL,'Metatheory**',NULL,2003,2004,2053,1,1),
-(2060,3,NULL,'Nonmonotonic reasoning and belief revision',NULL,2005,2006,2053,1,1),
-(2061,3,NULL,'Resolution',NULL,2007,2008,2053,1,1),
-(2062,3,'I.2.4','Knowledge Representation Formalisms and Methods (F.4.1)','I.2.4',2010,2027,1096,1,1),
-(2063,3,NULL,'Frames and scripts',NULL,2011,2012,2062,1,1),
-(2064,3,NULL,'Modal logic (NEW)',NULL,2013,2014,2062,1,1),
-(2065,3,NULL,'Predicate logic',NULL,2015,2016,2062,1,1),
-(2066,3,NULL,'Relation systems',NULL,2017,2018,2062,1,1),
-(2067,3,NULL,'Representation languages',NULL,2019,2020,2062,1,1),
-(2068,3,NULL,'Representations (procedural and rule-based)',NULL,2021,2022,2062,1,1),
-(2069,3,NULL,'Semantic networks',NULL,2023,2024,2062,1,1),
-(2070,3,NULL,'Temporal logic (NEW)',NULL,2025,2026,2062,1,1),
-(2071,3,'I.2.5','Programming Languages and Software (D.3.2)','I.2.5',2028,2031,1096,1,1),
-(2072,3,NULL,'Expert system tools and techniques',NULL,2029,2030,2071,1,1),
-(2073,3,'I.2.6','Learning (K.3.2)','I.2.6',2032,2047,1096,1,1),
-(2074,3,NULL,'Analogies',NULL,2033,2034,2073,1,1),
-(2075,3,NULL,'Concept learning',NULL,2035,2036,2073,1,1),
-(2076,3,NULL,'Connectionism and neural nets',NULL,2037,2038,2073,1,1),
-(2077,3,NULL,'Induction',NULL,2039,2040,2073,1,1),
-(2078,3,NULL,'Knowledge acquisition',NULL,2041,2042,2073,1,1),
-(2079,3,NULL,'Language acquisition',NULL,2043,2044,2073,1,1),
-(2080,3,NULL,'Parameter learning',NULL,2045,2046,2073,1,1),
-(2081,3,'I.2.7','Natural Language Processing','I.2.7',2048,2063,1096,1,1),
-(2082,3,NULL,'Discourse',NULL,2049,2050,2081,1,1),
-(2083,3,NULL,'Language generation',NULL,2051,2052,2081,1,1),
-(2084,3,NULL,'Language models',NULL,2053,2054,2081,1,1),
-(2085,3,NULL,'Language parsing and understanding',NULL,2055,2056,2081,1,1),
-(2086,3,NULL,'Machine translation',NULL,2057,2058,2081,1,1),
-(2087,3,NULL,'Speech recognition and synthesis',NULL,2059,2060,2081,1,1),
-(2088,3,NULL,'Text analysis',NULL,2061,2062,2081,1,1),
-(2089,3,'I.2.8','Problem Solving, Control Methods, and Search (F.2.2)','I.2.8',2064,2079,1096,1,1),
-(2090,3,NULL,'Backtracking',NULL,2065,2066,2089,1,1),
-(2091,3,NULL,'Control theory (NEW)',NULL,2067,2068,2089,1,1),
-(2092,3,NULL,'Dynamic programming',NULL,2069,2070,2089,1,1),
-(2093,3,NULL,'Graph and tree search strategies',NULL,2071,2072,2089,1,1),
-(2094,3,NULL,'Heuristic methods',NULL,2073,2074,2089,1,1),
-(2095,3,NULL,'Plan execution, formation, and generation',NULL,2075,2076,2089,1,1),
-(2096,3,NULL,'Scheduling (NEW)',NULL,2077,2078,2089,1,1),
-(2097,3,'I.2.9','Robotics','I.2.9',2080,2097,1096,1,1),
-(2098,3,NULL,'Autonomous vehicles (NEW)',NULL,2081,2082,2097,1,1),
-(2099,3,NULL,'Commercial robots and applications (NEW)',NULL,2083,2084,2097,1,1),
-(2100,3,NULL,'Kinematics and dynamics (NEW)',NULL,2085,2086,2097,1,1),
-(2101,3,NULL,'Manipulators',NULL,2087,2088,2097,1,1),
-(2102,3,NULL,'Operator interfaces (NEW)',NULL,2089,2090,2097,1,1),
-(2103,3,NULL,'Propelling mechanisms',NULL,2091,2092,2097,1,1),
-(2104,3,NULL,'Sensors',NULL,2093,2094,2097,1,1),
-(2105,3,NULL,'Workcell organization and planning (NEW)',NULL,2095,2096,2097,1,1),
-(2106,3,'I.2.10','Vision and Scene Understanding (I.4.8, I.5)','I.2.10',2098,2119,1096,1,1),
-(2107,3,NULL,'3D/stereo scene analysis (NEW)',NULL,2099,2100,2106,1,1),
-(2108,3,NULL,'Architecture and control structures**',NULL,2101,2102,2106,1,1),
-(2109,3,NULL,'Intensity, color, photometry, and thresholding',NULL,2103,2104,2106,1,1),
-(2110,3,NULL,'Modeling and recovery of physical attributes',NULL,2105,2106,2106,1,1),
-(2111,3,NULL,'Motion',NULL,2107,2108,2106,1,1),
-(2112,3,NULL,'Perceptual reasoning',NULL,2109,2110,2106,1,1),
-(2113,3,NULL,'Representations, data structures, and transforms',NULL,2111,2112,2106,1,1),
-(2114,3,NULL,'Shape',NULL,2113,2114,2106,1,1),
-(2115,3,NULL,'Texture',NULL,2115,2116,2106,1,1),
-(2116,3,NULL,'Video analysis (NEW)',NULL,2117,2118,2106,1,1),
-(2117,3,'I.2.11','Distributed Artificial Intelligence','I.2.11',2120,2129,1096,1,1),
-(2118,3,NULL,'Coherence and coordination',NULL,2121,2122,2117,1,1),
-(2119,3,NULL,'Intelligent agents (NEW)',NULL,2123,2124,2117,1,1),
-(2120,3,NULL,'Languages and structures',NULL,2125,2126,2117,1,1),
-(2121,3,NULL,'Multiagent systems (NEW)',NULL,2127,2128,2117,1,1),
-(2122,3,'I.2.m','Miscellaneous','I.2.m',2130,2131,1096,1,1),
-(2123,3,'I.3.0','General','I.3.0',2134,2135,1097,1,1),
-(2124,3,'I.3.1','Hardware Architecture (B.4.2)','I.3.1',2136,2153,1097,1,1),
-(2125,3,NULL,'Graphics processors',NULL,2137,2138,2124,1,1),
-(2126,3,NULL,'Hardcopy devices**',NULL,2139,2140,2124,1,1),
-(2127,3,NULL,'Input devices',NULL,2141,2142,2124,1,1),
-(2128,3,NULL,'Parallel processing',NULL,2143,2144,2124,1,1),
-(2129,3,NULL,'Raster display devices',NULL,2145,2146,2124,1,1),
-(2130,3,NULL,'Storage devices**',NULL,2147,2148,2124,1,1),
-(2131,3,NULL,'Three-dimensional displays**',NULL,2149,2150,2124,1,1),
-(2132,3,NULL,'Vector display devices**',NULL,2151,2152,2124,1,1),
-(2133,3,'I.3.2','Graphics Systems (C.2.1, C.2.4, C.3)','I.3.2',2154,2161,1097,1,1),
-(2134,3,NULL,'Distributed/network graphics',NULL,2155,2156,2133,1,1),
-(2135,3,NULL,'Remote systems**',NULL,2157,2158,2133,1,1),
-(2136,3,NULL,'Stand-alone systems**',NULL,2159,2160,2133,1,1),
-(2137,3,'I.3.3','Picture/Image Generation','I.3.3',2162,2175,1097,1,1),
-(2138,3,NULL,'Antialiasing**',NULL,2163,2164,2137,1,1),
-(2139,3,NULL,'Bitmap and framebuffer operations',NULL,2165,2166,2137,1,1),
-(2140,3,NULL,'Digitizing and scanning',NULL,2167,2168,2137,1,1),
-(2141,3,NULL,'Display algorithms',NULL,2169,2170,2137,1,1),
-(2142,3,NULL,'Line and curve generation',NULL,2171,2172,2137,1,1),
-(2143,3,NULL,'Viewing algorithms',NULL,2173,2174,2137,1,1),
-(2144,3,'I.3.4','Graphics Utilities','I.3.4',2176,2195,1097,1,1),
-(2145,3,NULL,'Application packages',NULL,2177,2178,2144,1,1),
-(2146,3,NULL,'Device drivers**',NULL,2179,2180,2144,1,1),
-(2147,3,NULL,'Graphics editors',NULL,2181,2182,2144,1,1),
-(2148,3,NULL,'Graphics packages',NULL,2183,2184,2144,1,1),
-(2149,3,NULL,'Meta files**',NULL,2185,2186,2144,1,1),
-(2150,3,NULL,'Paint systems',NULL,2187,2188,2144,1,1),
-(2151,3,NULL,'Picture description languages**',NULL,2189,2190,2144,1,1),
-(2152,3,NULL,'Software support',NULL,2191,2192,2144,1,1),
-(2153,3,NULL,'Virtual device interfaces',NULL,2193,2194,2144,1,1),
-(2154,3,'I.3.5','Computational Geometry and Object Modeling','I.3.5',2196,2215,1097,1,1),
-(2155,3,NULL,'Boundary representations',NULL,2197,2198,2154,1,1),
-(2156,3,NULL,'Constructive solid geometry (CSG)**',NULL,2199,2200,2154,1,1),
-(2157,3,NULL,'Curve, surface, solid, and object representations',NULL,2201,2202,2154,1,1),
-(2158,3,NULL,'Geometric algorithms, languages, and systems',NULL,2203,2204,2154,1,1),
-(2159,3,NULL,'Hierarchy and geometric transformations',NULL,2205,2206,2154,1,1),
-(2160,3,NULL,'Modeling packages',NULL,2207,2208,2154,1,1),
-(2161,3,NULL,'Object hierarchies',NULL,2209,2210,2154,1,1),
-(2162,3,NULL,'Physically based modeling',NULL,2211,2212,2154,1,1),
-(2163,3,NULL,'Splines',NULL,2213,2214,2154,1,1),
-(2164,3,'I.3.6','Methodology and Techniques','I.3.6',2216,2229,1097,1,1),
-(2165,3,NULL,'Device independence**',NULL,2217,2218,2164,1,1),
-(2166,3,NULL,'Ergonomics',NULL,2219,2220,2164,1,1),
-(2167,3,NULL,'Graphics data structures and data types',NULL,2221,2222,2164,1,1),
-(2168,3,NULL,'Interaction techniques',NULL,2223,2224,2164,1,1),
-(2169,3,NULL,'Languages',NULL,2225,2226,2164,1,1),
-(2170,3,NULL,'Standards',NULL,2227,2228,2164,1,1),
-(2171,3,'I.3.7','Three-Dimensional Graphics and Realism','I.3.7',2230,2247,1097,1,1),
-(2172,3,NULL,'Animation',NULL,2231,2232,2171,1,1),
-(2173,3,NULL,'Color, shading, shadowing, and texture',NULL,2233,2234,2171,1,1),
-(2174,3,NULL,'Fractals',NULL,2235,2236,2171,1,1),
-(2175,3,NULL,'Hidden line/surface removal',NULL,2237,2238,2171,1,1),
-(2176,3,NULL,'Radiosity',NULL,2239,2240,2171,1,1),
-(2177,3,NULL,'Raytracing',NULL,2241,2242,2171,1,1),
-(2178,3,NULL,'Virtual reality',NULL,2243,2244,2171,1,1),
-(2179,3,NULL,'Visible line/surface algorithms',NULL,2245,2246,2171,1,1),
-(2180,3,'I.3.8','Applications','I.3.8',2248,2249,1097,1,1),
-(2181,3,'I.3.m','Miscellaneous','I.3.m',2250,2251,1097,1,1),
-(2182,3,'I.4.0','General','I.4.0',2254,2259,1098,1,1),
-(2183,3,NULL,'Image displays',NULL,2255,2256,2182,1,1),
-(2184,3,NULL,'Image processing software',NULL,2257,2258,2182,1,1),
-(2185,3,'I.4.1','Digitization and Image Capture (REVISED)','I.4.1',2260,2275,1098,1,1),
-(2186,3,NULL,'Camera calibration (NEW)',NULL,2261,2262,2185,1,1),
-(2187,3,NULL,'Imaging geometry (NEW)',NULL,2263,2264,2185,1,1),
-(2188,3,NULL,'Quantization',NULL,2265,2266,2185,1,1),
-(2189,3,NULL,'Radiometry (NEW)',NULL,2267,2268,2185,1,1),
-(2190,3,NULL,'Reflectance (NEW)',NULL,2269,2270,2185,1,1),
-(2191,3,NULL,'Sampling',NULL,2271,2272,2185,1,1),
-(2192,3,NULL,'Scanning',NULL,2273,2274,2185,1,1),
-(2193,3,'I.4.2','Compression (Coding) (E.4)','I.4.2',2276,2281,1098,1,1),
-(2194,3,NULL,'Approximate methods',NULL,2277,2278,2193,1,1),
-(2195,3,NULL,'Exact coding**',NULL,2279,2280,2193,1,1),
-(2196,3,'I.4.3','Enhancement','I.4.3',2282,2295,1098,1,1),
-(2197,3,NULL,'Filtering',NULL,2283,2284,2196,1,1),
-(2198,3,NULL,'Geometric correction',NULL,2285,2286,2196,1,1),
-(2199,3,NULL,'Grayscale manipulation',NULL,2287,2288,2196,1,1),
-(2200,3,NULL,'Registration',NULL,2289,2290,2196,1,1),
-(2201,3,NULL,'Sharpening and deblurring**',NULL,2291,2292,2196,1,1),
-(2202,3,NULL,'Smoothing',NULL,2293,2294,2196,1,1),
-(2203,3,'I.4.4','Restoration','I.4.4',2296,2305,1098,1,1),
-(2204,3,NULL,'Inverse filtering**',NULL,2297,2298,2203,1,1),
-(2205,3,NULL,'Kalman filtering',NULL,2299,2300,2203,1,1),
-(2206,3,NULL,'Pseudoinverse restoration**',NULL,2301,2302,2203,1,1),
-(2207,3,NULL,'Wiener filtering**',NULL,2303,2304,2203,1,1),
-(2208,3,'I.4.5','Reconstruction','I.4.5',2306,2313,1098,1,1),
-(2209,3,NULL,'Series expansion methods',NULL,2307,2308,2208,1,1),
-(2210,3,NULL,'Summation methods**',NULL,2309,2310,2208,1,1),
-(2211,3,NULL,'Transform methods',NULL,2311,2312,2208,1,1),
-(2212,3,'I.4.6','Segmentation','I.4.6',2314,2323,1098,1,1),
-(2213,3,NULL,'Edge and feature detection',NULL,2315,2316,2212,1,1),
-(2214,3,NULL,'Pixel classification',NULL,2317,2318,2212,1,1),
-(2215,3,NULL,'Region growing, partitioning',NULL,2319,2320,2212,1,1),
-(2216,3,NULL,'Relaxation (NEW)',NULL,2321,2322,2212,1,1),
-(2217,3,'I.4.7','Feature Measurement','I.4.7',2324,2337,1098,1,1),
-(2218,3,NULL,'Feature representation (NEW)',NULL,2325,2326,2217,1,1),
-(2219,3,NULL,'Invariants',NULL,2327,2328,2217,1,1),
-(2220,3,NULL,'Moments',NULL,2329,2330,2217,1,1),
-(2221,3,NULL,'Projections',NULL,2331,2332,2217,1,1),
-(2222,3,NULL,'Size and shape',NULL,2333,2334,2217,1,1),
-(2223,3,NULL,'Texture',NULL,2335,2336,2217,1,1),
-(2224,3,'I.4.8','Scene Analysis','I.4.8',2338,2365,1098,1,1),
-(2225,3,NULL,'Color (NEW)',NULL,2339,2340,2224,1,1),
-(2226,3,NULL,'Depth cues',NULL,2341,2342,2224,1,1),
-(2227,3,NULL,'Motion (NEW)',NULL,2343,2344,2224,1,1),
-(2228,3,NULL,'Object recognition (NEW)',NULL,2345,2346,2224,1,1),
-(2229,3,NULL,'Photometry',NULL,2347,2348,2224,1,1),
-(2230,3,NULL,'Range data',NULL,2349,2350,2224,1,1),
-(2231,3,NULL,'Sensor fusion',NULL,2351,2352,2224,1,1),
-(2232,3,NULL,'Shading (NEW)',NULL,2353,2354,2224,1,1),
-(2233,3,NULL,'Shape (NEW)',NULL,2355,2356,2224,1,1),
-(2234,3,NULL,'Stereo',NULL,2357,2358,2224,1,1),
-(2235,3,NULL,'Surface fitting (NEW)',NULL,2359,2360,2224,1,1),
-(2236,3,NULL,'Time-varying imagery',NULL,2361,2362,2224,1,1),
-(2237,3,NULL,'Tracking (NEW)',NULL,2363,2364,2224,1,1),
-(2238,3,'I.4.9','Applications','I.4.9',2366,2367,1098,1,1),
-(2239,3,'I.4.10','Image Representation','I.4.10',2368,2379,1098,1,1),
-(2240,3,NULL,'Hierarchical',NULL,2369,2370,2239,1,1),
-(2241,3,NULL,'Morphological',NULL,2371,2372,2239,1,1),
-(2242,3,NULL,'Multidimensional',NULL,2373,2374,2239,1,1),
-(2243,3,NULL,'Statistical',NULL,2375,2376,2239,1,1),
-(2244,3,NULL,'Volumetric',NULL,2377,2378,2239,1,1),
-(2245,3,'I.4.m','Miscellaneous','I.4.m',2380,2381,1098,1,1),
-(2246,3,'I.5.0','General','I.5.0',2384,2385,1099,1,1),
-(2247,3,'I.5.1','Models','I.5.1',2386,2399,1099,1,1),
-(2248,3,NULL,'Deterministic**',NULL,2387,2388,2247,1,1),
-(2249,3,NULL,'Fuzzy set',NULL,2389,2390,2247,1,1),
-(2250,3,NULL,'Geometric',NULL,2391,2392,2247,1,1),
-(2251,3,NULL,'Neural nets',NULL,2393,2394,2247,1,1),
-(2252,3,NULL,'Statistical',NULL,2395,2396,2247,1,1),
-(2253,3,NULL,'Structural',NULL,2397,2398,2247,1,1),
-(2254,3,'I.5.2','Design Methodology','I.5.2',2400,2407,1099,1,1),
-(2255,3,NULL,'Classifier design and evaluation',NULL,2401,2402,2254,1,1),
-(2256,3,NULL,'Feature evaluation and selection',NULL,2403,2404,2254,1,1),
-(2257,3,NULL,'Pattern analysis',NULL,2405,2406,2254,1,1),
-(2258,3,'I.5.3','Clustering','I.5.3',2408,2413,1099,1,1),
-(2259,3,NULL,'Algorithms',NULL,2409,2410,2258,1,1),
-(2260,3,NULL,'Similarity measures',NULL,2411,2412,2258,1,1),
-(2261,3,'I.5.4','Applications','I.5.4',2414,2423,1099,1,1),
-(2262,3,NULL,'Computer vision',NULL,2415,2416,2261,1,1),
-(2263,3,NULL,'Signal processing',NULL,2417,2418,2261,1,1),
-(2264,3,NULL,'Text processing',NULL,2419,2420,2261,1,1),
-(2265,3,NULL,'Waveform analysis',NULL,2421,2422,2261,1,1),
-(2266,3,'I.5.5','Implementation (C.3)','I.5.5',2424,2429,1099,1,1),
-(2267,3,NULL,'Interactive systems',NULL,2425,2426,2266,1,1),
-(2268,3,NULL,'Special architectures',NULL,2427,2428,2266,1,1),
-(2269,3,'I.5.m','Miscellaneous','I.5.m',2430,2431,1099,1,1),
-(2270,3,'I.6.0','General','I.6.0',2434,2435,1100,1,1),
-(2271,3,'I.6.1','Simulation Theory','I.6.1',2436,2443,1100,1,1),
-(2272,3,NULL,'Model classification',NULL,2437,2438,2271,1,1),
-(2273,3,NULL,'Systems theory',NULL,2439,2440,2271,1,1),
-(2274,3,NULL,'Types of simulation (continuous and discrete)*',NULL,2441,2442,2271,1,1),
-(2275,3,'I.6.2','Simulation Languages','I.6.2',2444,2445,1100,1,1),
-(2276,3,'I.6.3','Applications','I.6.3',2446,2447,1100,1,1),
-(2277,3,'I.6.4','Model Validation and Analysis','I.6.4',2448,2449,1100,1,1),
-(2278,3,'I.6.5','Model Development','I.6.5',2450,2453,1100,1,1),
-(2279,3,NULL,'Modeling methodologies',NULL,2451,2452,2278,1,1),
-(2280,3,'I.6.6','Simulation Output Analysis','I.6.6',2454,2455,1100,1,1),
-(2281,3,'I.6.7','Simulation Support Systems','I.6.7',2456,2459,1100,1,1),
-(2282,3,NULL,'Environments',NULL,2457,2458,2281,1,1),
-(2283,3,'I.6.8','Types of Simulation','I.6.8',2460,2479,1100,1,1),
-(2284,3,NULL,'Animation',NULL,2461,2462,2283,1,1),
-(2285,3,NULL,'Combined',NULL,2463,2464,2283,1,1),
-(2286,3,NULL,'Continuous',NULL,2465,2466,2283,1,1),
-(2287,3,NULL,'Discrete event',NULL,2467,2468,2283,1,1),
-(2288,3,NULL,'Distributed',NULL,2469,2470,2283,1,1),
-(2289,3,NULL,'Gaming',NULL,2471,2472,2283,1,1),
-(2290,3,NULL,'Monte Carlo',NULL,2473,2474,2283,1,1),
-(2291,3,NULL,'Parallel',NULL,2475,2476,2283,1,1),
-(2292,3,NULL,'Visual',NULL,2477,2478,2283,1,1),
-(2293,3,'I.6.m','Miscellaneous','I.6.m',2480,2481,1100,1,1),
-(2294,3,'I.7.0','General','I.7.0',2484,2485,1101,1,1),
-(2295,3,'I.7.1','Document and Text Editing (REVISED)','I.7.1',2486,2495,1101,1,1),
-(2296,3,NULL,'Document management (NEW)',NULL,2487,2488,2295,1,1),
-(2297,3,NULL,'Languages**',NULL,2489,2490,2295,1,1),
-(2298,3,NULL,'Spelling**',NULL,2491,2492,2295,1,1),
-(2299,3,NULL,'Version control (NEW)',NULL,2493,2494,2295,1,1),
-(2300,3,'I.7.2','Document Preparation','I.7.2',2496,2517,1101,1,1),
-(2301,3,NULL,'Desktop publishing',NULL,2497,2498,2300,1,1),
-(2302,3,NULL,'Format and notation',NULL,2499,2500,2300,1,1),
-(2303,3,NULL,'Hypertext/hypermedia',NULL,2501,2502,2300,1,1),
-(2304,3,NULL,'Index generation (NEW)',NULL,2503,2504,2300,1,1),
-(2305,3,NULL,'Languages and systems',NULL,2505,2506,2300,1,1),
-(2306,3,NULL,'Markup languages (NEW)',NULL,2507,2508,2300,1,1),
-(2307,3,NULL,'Multi/mixed media',NULL,2509,2510,2300,1,1),
-(2308,3,NULL,'Photocomposition/typesetting',NULL,2511,2512,2300,1,1),
-(2309,3,NULL,'Scripting languages (NEW)',NULL,2513,2514,2300,1,1),
-(2310,3,NULL,'Standards',NULL,2515,2516,2300,1,1),
-(2311,3,'I.7.3','Index Generation**','I.7.3',2518,2519,1101,1,1),
-(2312,3,'I.7.4','Electronic Publishing (H.5.4, J.7) (NEW)','I.7.4',2520,2521,1101,1,1),
-(2313,3,'I.7.5','Document Capture (I.4.1) (NEW)','I.7.5',2522,2531,1101,1,1),
-(2314,3,NULL,'Document analysis (NEW)',NULL,2523,2524,2313,1,1),
-(2315,3,NULL,'Graphics recognition and interpretation (NEW)',NULL,2525,2526,2313,1,1),
-(2316,3,NULL,'Optical character recognition (OCR) (NEW)',NULL,2527,2528,2313,1,1),
-(2317,3,NULL,'Scanning (NEW)',NULL,2529,2530,2313,1,1),
-(2318,3,'I.7.m','Miscellaneous','I.7.m',2532,2533,1101,1,1),
-(2319,3,NULL,'Business',NULL,2542,2543,1104,1,1),
-(2320,3,NULL,'Education',NULL,2544,2545,1104,1,1),
-(2321,3,NULL,'Financial (e.g., EFTS)',NULL,2546,2547,1104,1,1),
-(2322,3,NULL,'Government',NULL,2548,2549,1104,1,1),
-(2323,3,NULL,'Law',NULL,2550,2551,1104,1,1),
-(2324,3,NULL,'Manufacturing',NULL,2552,2553,1104,1,1),
-(2325,3,NULL,'Marketing',NULL,2554,2555,1104,1,1),
-(2326,3,NULL,'Military',NULL,2556,2557,1104,1,1),
-(2327,3,NULL,'Aerospace',NULL,2560,2561,1105,1,1),
-(2328,3,NULL,'Archaeology (NEW)',NULL,2562,2563,1105,1,1),
-(2329,3,NULL,'Astronomy',NULL,2564,2565,1105,1,1),
-(2330,3,NULL,'Chemistry',NULL,2566,2567,1105,1,1),
-(2331,3,NULL,'Earth and atmospheric sciences',NULL,2568,2569,1105,1,1),
-(2332,3,NULL,'Electronics',NULL,2570,2571,1105,1,1),
-(2333,3,NULL,'Engineering',NULL,2572,2573,1105,1,1),
-(2334,3,NULL,'Mathematics and statistics',NULL,2574,2575,1105,1,1),
-(2335,3,NULL,'Physics',NULL,2576,2577,1105,1,1),
-(2336,3,NULL,'Biology and genetics (REVISED)',NULL,2580,2581,1106,1,1),
-(2337,3,NULL,'Health',NULL,2582,2583,1106,1,1),
-(2338,3,NULL,'Medical information systems',NULL,2584,2585,1106,1,1),
-(2339,3,NULL,'Economics',NULL,2588,2589,1107,1,1),
-(2340,3,NULL,'Psychology',NULL,2590,2591,1107,1,1),
-(2341,3,NULL,'Sociology',NULL,2592,2593,1107,1,1),
-(2342,3,NULL,'Architecture (NEW)',NULL,2596,2597,1108,1,1),
-(2343,3,NULL,'Arts, fine and performing**',NULL,2598,2599,1108,1,1),
-(2344,3,NULL,'Fine arts (NEW)',NULL,2600,2601,1108,1,1),
-(2345,3,NULL,'Language translation',NULL,2602,2603,1108,1,1),
-(2346,3,NULL,'Linguistics',NULL,2604,2605,1108,1,1),
-(2347,3,NULL,'Literature',NULL,2606,2607,1108,1,1),
-(2348,3,NULL,'Music**',NULL,2608,2609,1108,1,1),
-(2349,3,NULL,'Performing arts (e.g., dance, music) (NEW)',NULL,2610,2611,1108,1,1),
-(2350,3,NULL,'Computer-aided design (CAD)',NULL,2614,2615,1109,1,1),
-(2351,3,NULL,'Computer-aided manufacturing (CAM)',NULL,2616,2617,1109,1,1),
-(2352,3,NULL,'Command and control',NULL,2620,2621,1110,1,1),
-(2353,3,NULL,'Consumer products',NULL,2622,2623,1110,1,1),
-(2354,3,NULL,'Industrial control',NULL,2624,2625,1110,1,1),
-(2355,3,NULL,'Military',NULL,2626,2627,1110,1,1),
-(2356,3,NULL,'Process control',NULL,2628,2629,1110,1,1),
-(2357,3,NULL,'Publishing',NULL,2630,2631,1110,1,1),
-(2358,3,NULL,'Real time',NULL,2632,2633,1110,1,1),
-(2359,3,NULL,'Markets',NULL,2642,2643,1113,1,1),
-(2360,3,NULL,'Standards',NULL,2644,2645,1113,1,1),
-(2361,3,NULL,'Statistics',NULL,2646,2647,1113,1,1),
-(2362,3,NULL,'Suppliers',NULL,2648,2649,1113,1,1),
-(2363,3,NULL,'Hardware',NULL,2652,2653,1114,1,1),
-(2364,3,NULL,'People',NULL,2654,2655,1114,1,1),
-(2365,3,NULL,'Software',NULL,2656,2657,1114,1,1),
-(2366,3,NULL,'Systems',NULL,2658,2659,1114,1,1),
-(2367,3,NULL,'Theory',NULL,2660,2661,1114,1,1),
-(2368,3,'K.3.0','General','K.3.0',2664,2665,1115,1,1),
-(2369,3,'K.3.1','Computer Uses in Education','K.3.1',2666,2675,1115,1,1),
-(2370,3,NULL,'Collaborative learning (NEW)',NULL,2667,2668,2369,1,1),
-(2371,3,NULL,'Computer-assisted instruction (CAI)',NULL,2669,2670,2369,1,1),
-(2372,3,NULL,'Computer-managed instruction (CMI)',NULL,2671,2672,2369,1,1),
-(2373,3,NULL,'Distance learning (NEW)',NULL,2673,2674,2369,1,1),
-(2374,3,'K.3.2','Computer and Information Science Education','K.3.2',2676,2689,1115,1,1),
-(2375,3,NULL,'Accreditation (NEW)',NULL,2677,2678,2374,1,1),
-(2376,3,NULL,'Computer science education',NULL,2679,2680,2374,1,1),
-(2377,3,NULL,'Curriculum',NULL,2681,2682,2374,1,1),
-(2378,3,NULL,'Information systems education',NULL,2683,2684,2374,1,1),
-(2379,3,NULL,'Literacy (NEW)',NULL,2685,2686,2374,1,1),
-(2380,3,NULL,'Self-assessment',NULL,2687,2688,2374,1,1),
-(2381,3,'K.3.m','Miscellaneous','K.3.m',2690,2695,1115,1,1),
-(2382,3,NULL,'Accreditation**',NULL,2691,2692,2381,1,1),
-(2383,3,NULL,'Computer literacy**',NULL,2693,2694,2381,1,1),
-(2384,3,'K.4.0','General','K.4.0',2698,2699,1116,1,1),
-(2385,3,'K.4.1','Public Policy Issues','K.4.1',2700,2719,1116,1,1),
-(2386,3,NULL,'Abuse and crime involving computers (NEW)',NULL,2701,2702,2385,1,1),
-(2387,3,NULL,'Computer-related health issues (NEW)',NULL,2703,2704,2385,1,1),
-(2388,3,NULL,'Ethics (NEW)',NULL,2705,2706,2385,1,1),
-(2389,3,NULL,'Human safety',NULL,2707,2708,2385,1,1),
-(2390,3,NULL,'Intellectual property rights (NEW)',NULL,2709,2710,2385,1,1),
-(2391,3,NULL,'Privacy',NULL,2711,2712,2385,1,1),
-(2392,3,NULL,'Regulation',NULL,2713,2714,2385,1,1),
-(2393,3,NULL,'Transborder data flow',NULL,2715,2716,2385,1,1),
-(2394,3,NULL,'Use/abuse of power (NEW)',NULL,2717,2718,2385,1,1),
-(2395,3,'K.4.2','Social Issues','K.4.2',2720,2729,1116,1,1),
-(2396,3,NULL,'Abuse and crime involving computers**',NULL,2721,2722,2395,1,1),
-(2397,3,NULL,'Assistive technologies for persons with disabilities (NEW)',NULL,2723,2724,2395,1,1),
-(2398,3,NULL,'Employment',NULL,2725,2726,2395,1,1),
-(2399,3,NULL,'Handicapped persons/special needs**',NULL,2727,2728,2395,1,1),
-(2400,3,'K.4.3','Organizational Impacts','K.4.3',2730,2739,1116,1,1),
-(2401,3,NULL,'Automation (NEW)',NULL,2731,2732,2400,1,1),
-(2402,3,NULL,'Computer-supported collaborative work (NEW)',NULL,2733,2734,2400,1,1),
-(2403,3,NULL,'Employment (NEW)',NULL,2735,2736,2400,1,1),
-(2404,3,NULL,'Reengineering (NEW)',NULL,2737,2738,2400,1,1),
-(2405,3,'K.4.4','Electronic Commerce (J.1) (NEW)','K.4.4',2740,2753,1116,1,1),
-(2406,3,NULL,'Cybercash, digital cash (NEW)',NULL,2741,2742,2405,1,1),
-(2407,3,NULL,'Distributed commercial transactions (NEW)',NULL,2743,2744,2405,1,1),
-(2408,3,NULL,'Electronic data interchange (EDI) (NEW)',NULL,2745,2746,2405,1,1),
-(2409,3,NULL,'Intellectual property (NEW)',NULL,2747,2748,2405,1,1),
-(2410,3,NULL,'Payment schemes (NEW)',NULL,2749,2750,2405,1,1),
-(2411,3,NULL,'Security (NEW)',NULL,2751,2752,2405,1,1),
-(2412,3,'K.4.m','Miscellaneous','K.4.m',2754,2755,1116,1,1),
-(2413,3,'K.5.0','General','K.5.0',2758,2759,1117,1,1),
-(2414,3,'K.5.1','Hardware/Software Protection (REVISED)','K.5.1',2760,2771,1117,1,1),
-(2415,3,NULL,'Copyrights',NULL,2761,2762,2414,1,1),
-(2416,3,NULL,'Licensing (NEW)',NULL,2763,2764,2414,1,1),
-(2417,3,NULL,'Patents',NULL,2765,2766,2414,1,1),
-(2418,3,NULL,'Proprietary rights',NULL,2767,2768,2414,1,1),
-(2419,3,NULL,'Trade secrets**',NULL,2769,2770,2414,1,1),
-(2420,3,'K.5.2','Governmental Issues','K.5.2',2772,2779,1117,1,1),
-(2421,3,NULL,'Censorship (NEW)',NULL,2773,2774,2420,1,1),
-(2422,3,NULL,'Regulation',NULL,2775,2776,2420,1,1),
-(2423,3,NULL,'Taxation',NULL,2777,2778,2420,1,1),
-(2424,3,'K.5.m','Miscellaneous','K.5.m',2780,2785,1117,1,1),
-(2425,3,NULL,'Contracts**',NULL,2781,2782,2424,1,1),
-(2426,3,NULL,'Hardware patents**',NULL,2783,2784,2424,1,1),
-(2427,3,'K.6.0','General','K.6.0',2788,2791,1118,1,1),
-(2428,3,NULL,'Economics',NULL,2789,2790,2427,1,1),
-(2429,3,'K.6.1','Project and People Management','K.6.1',2792,2807,1118,1,1),
-(2430,3,NULL,'Life cycle',NULL,2793,2794,2429,1,1),
-(2431,3,NULL,'Management techniques (e.g., PERT/CPM)',NULL,2795,2796,2429,1,1),
-(2432,3,NULL,'Staffing',NULL,2797,2798,2429,1,1),
-(2433,3,NULL,'Strategic information systems planning (NEW)',NULL,2799,2800,2429,1,1),
-(2434,3,NULL,'Systems analysis and design',NULL,2801,2802,2429,1,1),
-(2435,3,NULL,'Systems development',NULL,2803,2804,2429,1,1),
-(2436,3,NULL,'Training',NULL,2805,2806,2429,1,1),
-(2437,3,'K.6.2','Installation Management','K.6.2',2808,2819,1118,1,1),
-(2438,3,NULL,'Benchmarks',NULL,2809,2810,2437,1,1),
-(2439,3,NULL,'Computer selection',NULL,2811,2812,2437,1,1),
-(2440,3,NULL,'Computing equipment management',NULL,2813,2814,2437,1,1),
-(2441,3,NULL,'Performance and usage measurement',NULL,2815,2816,2437,1,1),
-(2442,3,NULL,'Pricing and resource allocation',NULL,2817,2818,2437,1,1),
-(2443,3,'K.6.3','Software Management (D.2.9)','K.6.3',2820,2829,1118,1,1),
-(2444,3,NULL,'Software development',NULL,2821,2822,2443,1,1),
-(2445,3,NULL,'Software maintenance',NULL,2823,2824,2443,1,1),
-(2446,3,NULL,'Software process (NEW)',NULL,2825,2826,2443,1,1),
-(2447,3,NULL,'Software selection',NULL,2827,2828,2443,1,1),
-(2448,3,'K.6.4','System Management','K.6.4',2830,2837,1118,1,1),
-(2449,3,NULL,'Centralization/decentralization',NULL,2831,2832,2448,1,1),
-(2450,3,NULL,'Management audit',NULL,2833,2834,2448,1,1),
-(2451,3,NULL,'Quality assurance',NULL,2835,2836,2448,1,1),
-(2452,3,'K.6.5','Security and Protection (D.4.6, K.4.2)','K.6.5',2838,2849,1118,1,1),
-(2453,3,NULL,'Authentication',NULL,2839,2840,2452,1,1),
-(2454,3,NULL,'Insurance**',NULL,2841,2842,2452,1,1),
-(2455,3,NULL,'Invasive software (e.g., viruses, worms, Trojan horses)',NULL,2843,2844,2452,1,1),
-(2456,3,NULL,'Physical security**',NULL,2845,2846,2452,1,1),
-(2457,3,NULL,'Unauthorized access (e.g., hacking, phreaking) (NEW)',NULL,2847,2848,2452,1,1),
-(2458,3,'K.6.m','Miscellaneous','K.6.m',2850,2855,1118,1,1),
-(2459,3,NULL,'Insurance*',NULL,2851,2852,2458,1,1),
-(2460,3,NULL,'Security*',NULL,2853,2854,2458,1,1),
-(2461,3,'K.7.0','General','K.7.0',2858,2859,1119,1,1),
-(2462,3,'K.7.1','Occupations','K.7.1',2860,2861,1119,1,1),
-(2463,3,'K.7.2','Organizations','K.7.2',2862,2863,1119,1,1),
-(2464,3,'K.7.3','Testing, Certification, and Licensing','K.7.3',2864,2865,1119,1,1),
-(2465,3,'K.7.4','Professional Ethics (K.4) (NEW)','K.7.4',2866,2873,1119,1,1),
-(2466,3,NULL,'Codes of ethics (NEW)',NULL,2867,2868,2465,1,1),
-(2467,3,NULL,'Codes of good practice (NEW)',NULL,2869,2870,2465,1,1),
-(2468,3,NULL,'Ethical dilemmas (NEW)',NULL,2871,2872,2465,1,1),
-(2469,3,'K.7.m','Miscellaneous','K.7.m',2874,2879,1119,1,1),
-(2470,3,NULL,'Codes of good practice**',NULL,2875,2876,2469,1,1),
-(2471,3,NULL,'Ethics**',NULL,2877,2878,2469,1,1),
-(2472,3,NULL,'Games*',NULL,2882,2883,1120,1,1),
-(2473,3,'K.8.0','General','K.8.0',2884,2887,1120,1,1),
-(2474,3,NULL,'Games',NULL,2885,2886,2473,1,1),
-(2475,3,'K.8.1','Application Packages','K.8.1',2888,2901,1120,1,1),
-(2476,3,NULL,'Data communications',NULL,2889,2890,2475,1,1),
-(2477,3,NULL,'Database processing',NULL,2891,2892,2475,1,1),
-(2478,3,NULL,'Freeware/shareware (NEW)',NULL,2893,2894,2475,1,1),
-(2479,3,NULL,'Graphics',NULL,2895,2896,2475,1,1),
-(2480,3,NULL,'Spreadsheets',NULL,2897,2898,2475,1,1),
-(2481,3,NULL,'Word processing',NULL,2899,2900,2475,1,1),
-(2482,3,'K.8.2','Hardware','K.8.2',2902,2903,1120,1,1),
-(2483,3,'K.8.3','Management/Maintenance','K.8.3',2904,2905,1120,1,1),
-(2484,3,'K.8.m','Miscellaneous (NEW)','K.8.m',2906,2907,1120,1,1);
\ No newline at end of file
diff --git a/database/factories/create_collections_data_ddc.sql b/database/factories/create_collections_data_ddc.sql
deleted file mode 100644
index 38e789c..0000000
--- a/database/factories/create_collections_data_ddc.sql
+++ /dev/null
@@ -1,1044 +0,0 @@
--- Dewey classification
-/* The ten main classes are: see number at db below
-0 Computer science, information & general works
-1 Philosophy & psychology
-2 Religion
-3 Social sciences
-4 Language
-5 Science
-6 Technology
-7 Arts & recreation
-8 Literature
-9 History & geography
-*/
-
-INSERT INTO collections (id, role_id, number, name, oai_subset, left_id, right_id, parent_id, visible, visible_publish) VALUES
-(3,2,'0','Informatik, Informationswissenschaft, allgemeine Werke','0',2,189,NULL,1,1),
-(4,2,'1','Philosophie und Psychologie','1',190,389,NULL,1,1),
-(5,2,'2','Religion','2',390,589,NULL,1,1),
-(6,2,'3','Sozialwissenschaften','3',590,791,NULL,1,1),
-(7,2,'4','Sprache','4',792,983,NULL,1,1),
-(8,2,'5','Naturwissenschaften und Mathematik','5',984,1191,NULL,1,1),
-(9,2,'6','Technik, Medizin, angewandte Wissenschaften','6',1192,1399,NULL,1,1),
-(10,2,'7','Kรผnste und Unterhaltung','7',1400,1613,NULL,1,1),
-(11,2,'8','Literatur','8',1614,1833,NULL,1,1),
-(12,2,'9','Geschichte und Geografie','9',1834,2053,NULL,1,1),
-(13,2,'00','Informatik, Wissen, Systeme','00',3,18,3,1,1),
-(14,2,'01','Bibliografien','01',19,38,3,1,1),
-(15,2,'02','Bibliotheks- und Informationswissenschaften','02',39,56,3,1,1),
-(16,2,'03','Enzyklopรคdien, Faktenbรผcher','03',57,78,3,1,1),
-(17,2,'05','Zeitschriften, fortlaufende Sammelwerke','05',79,100,3,1,1),
-(18,2,'06','Verbรคnde, Organisationen, Museen','06',101,122,3,1,1),
-(19,2,'07','Publizistische Medien, Journalismus, Verlagswesen','07',123,144,3,1,1),
-(20,2,'08','Allgemeine Sammelwerke, Zitatensammlungen','08',145,166,3,1,1),
-(21,2,'09','Handschriften, seltene Bรผcher','09',167,188,3,1,1),
-(22,2,'10','Philosophie','10',191,210,4,1,1),
-(23,2,'11','Metaphysik','11',211,230,4,0,1),
-(24,2,'12','Epistemologie','12',231,250,4,0,1),
-(25,2,'13','Parapsychologie, Okkultismus','13',251,266,4,1,1),
-(26,2,'14','Philosophische Schulen','14',267,288,4,0,1),
-(27,2,'15','Psychologie','15',289,304,4,1,1),
-(28,2,'16','Logik','16',305,322,4,0,1),
-(29,2,'17','Ethik','17',323,344,4,0,1),
-(30,2,'18','Antike, mittelalterliche und รถstliche Philosophie','18',345,366,4,0,1),
-(31,2,'19','Neuzeitliche westliche Philosophie','19',367,388,4,0,1),
-(32,2,'20','Religion','20',391,412,5,1,1),
-(33,2,'21','Religionsphilosophie, Religionstheorie','21',413,428,5,0,1),
-(34,2,'22','Bibel','22',429,450,5,1,1),
-(35,2,'23','Christentum, Christliche Theologie','23',451,470,5,1,1),
-(36,2,'24','Christliche Erfahrung, christliches Leben','24',471,488,5,0,1),
-(37,2,'25','Christliche Pastoraltheologie, Ordensgemeinschaften','25',489,504,5,0,1),
-(38,2,'26','Kirchenorganisation, Sozialarbeit, Religionsausรผbung','26',505,526,5,0,1),
-(39,2,'27','Geschichte des Christentums','27',527,548,5,0,1),
-(40,2,'28','Christliche Konfessionen','28',549,568,5,0,1),
-(41,2,'29','Andere Religionen','29',569,588,5,1,1),
-(42,2,'30','Sozialwissenschaften, Soziologie','30',591,608,6,1,1),
-(43,2,'31','Statistiken','31',609,624,6,1,1),
-(44,2,'32','Politikwissenschaft','32',625,644,6,1,1),
-(45,2,'33','Wirtschaft','33',645,666,6,1,1),
-(46,2,'34','Recht','34',667,688,6,1,1),
-(47,2,'35','รffentliche Verwaltung, Militรคrwissenschaft','35',689,710,6,1,1),
-(48,2,'36','Soziale Probleme, Sozialdienste','36',711,732,6,1,1),
-(49,2,'37','Bildung und Erziehung','37',733,750,6,1,1),
-(50,2,'38','Handel, Kommunikation, Verkehr','38',751,772,6,1,1),
-(51,2,'39','Brรคuche, Etikette, Folklore','39',773,790,6,1,1),
-(52,2,'40','Sprache','40',793,814,7,1,1),
-(53,2,'41','Linguistik','41',815,834,7,0,1),
-(54,2,'42','Englisch, Altenglisch','42',835,852,7,1,1),
-(55,2,'43','Deutsch, germanische Sprachen allgemein','43',853,870,7,1,1),
-(56,2,'44','Franzรถsisch, romanische Sprachen allgemein','44',871,888,7,1,1),
-(57,2,'45','Italienisch, Rumรคnisch, Rรคtoromanisch','45',889,906,7,1,1),
-(58,2,'46','Spanisch, Portugiesisch','46',907,924,7,1,1),
-(59,2,'47','Latein, italische Sprachen','47',925,942,7,1,1),
-(60,2,'48','Griechisch','48',943,960,7,1,1),
-(61,2,'49','Andere Sprachen','49',961,982,7,1,1),
-(62,2,'50','Naturwissenschaften','50',985,1004,8,1,1),
-(63,2,'51','Mathematik','51',1005,1024,8,1,1),
-(64,2,'52','Astronomie','52',1025,1044,8,1,1),
-(65,2,'53','Physik','53',1045,1066,8,1,1),
-(66,2,'54','Chemie','54',1067,1084,8,1,1),
-(67,2,'55','Geowissenschaften, Geologie','55',1085,1106,8,1,1),
-(68,2,'56','Fossilien, Palรคontologie','56',1107,1128,8,1,1),
-(69,2,'57','Biowissenschaften, Biologie','57',1129,1148,8,1,1),
-(70,2,'58','Pflanzen (Botanik)','58',1149,1168,8,1,1),
-(71,2,'59','Tiere (Zoologie)','59',1169,1190,8,1,1),
-(72,2,'60','Technik','60',1193,1214,9,1,1),
-(73,2,'61','Medizin und Gesundheit','61',1215,1234,9,1,1),
-(74,2,'62','Ingenieurwissenschaften','62',1235,1254,9,1,1),
-(75,2,'63','Landwirtschaft','63',1255,1276,9,1,1),
-(76,2,'64','Hauswirtschaft und Familie','64',1277,1298,9,1,1),
-(77,2,'65','Management, รffentlichkeitsarbeit','65',1299,1314,9,1,1),
-(78,2,'66','Chemische Verfahrenstechnik','66',1315,1336,9,1,1),
-(79,2,'67','Industrielle Fertigung','67',1337,1358,9,1,1),
-(80,2,'68','Industrielle Fertigung fรผr einzelne Verwendungszwecke','68',1359,1378,9,0,1),
-(81,2,'69','Hausbau, Bauhandwerk','69',1379,1398,9,1,1),
-(82,2,'70','Kรผnste','70',1401,1422,10,1,1),
-(83,2,'71','Landschaftsgestaltung, Raumplanung','71',1423,1444,10,1,1),
-(84,2,'72','Architektur','72',1445,1466,10,1,1),
-(85,2,'73','Bildhauerkunst, Keramik, Metallkunst','73',1467,1488,10,1,1),
-(86,2,'74','Zeichnung, angewandte Kunst','74',1489,1510,10,1,1),
-(87,2,'75','Malerei','75',1511,1530,10,1,1),
-(88,2,'76','Grafik','76',1531,1548,10,1,1),
-(89,2,'77','Fotografie, Computerkunst','77',1549,1568,10,1,1),
-(90,2,'78','Musik','78',1569,1590,10,1,1),
-(91,2,'79','Sport, Spiele, Unterhaltung','79',1591,1612,10,1,1),
-(92,2,'80','Literatur, Rhetorik, Literaturwissenschaft','80',1615,1634,11,1,1),
-(93,2,'81','Amerikanische Literatur in Englisch','81',1635,1656,11,1,1),
-(94,2,'82','Englische, altenglische Literaturen','82',1657,1678,11,1,1),
-(95,2,'83','Deutsche und verwandte Literaturen','83',1679,1700,11,1,1),
-(96,2,'84','Franzรถsische und verwandte Literaturen','84',1701,1722,11,1,1),
-(97,2,'85','Italienische, rumรคnische, rรคtoromanische Literaturen','85',1723,1744,11,1,1),
-(98,2,'86','Spanische, portugiesische Literaturen','86',1745,1766,11,1,1),
-(99,2,'87','Lateinische, italische Literaturen','87',1767,1788,11,1,1),
-(100,2,'88','Griechische Literaturen','88',1789,1810,11,1,1),
-(101,2,'89','Andere Literaturen','89',1811,1832,11,1,1),
-(102,2,'90','Geschichte','90',1835,1856,12,1,1),
-(103,2,'91','Geografie, Reisen','91',1857,1880,12,1,1),
-(104,2,'92','Biografie, Genealogie','92',1881,1902,12,1,1),
-(105,2,'93','Geschichte des Altertums (bis ca. 499), Archรคologie','93',1903,1924,12,1,1),
-(106,2,'94','Geschichte Europas','94',1925,1946,12,1,1),
-(107,2,'95','Geschichte Asiens','95',1947,1968,12,1,1),
-(108,2,'96','Geschichte Afrikas','96',1969,1990,12,1,1),
-(109,2,'97','Geschichte Nordamerikas','97',1991,2012,12,1,1),
-(110,2,'98','Geschichte Sรผdamerikas','98',2013,2034,12,1,1),
-(111,2,'99','Geschichte anderer Gebiete','99',2035,2052,12,1,1),
-(112,2,'000','Informatik, Informationswissenschaft, allgemeine Werke','000',4,5,13,1,1),
-(113,2,'001','Wissen','001',6,7,13,0,1),
-(114,2,'002','Das Buch','002',8,9,13,0,1),
-(115,2,'003','Systeme','003',10,11,13,0,1),
-(116,2,'004','Datenverarbeitung, Informatik','004',12,13,13,1,1),
-(117,2,'005','Computerprogrammierung, Programme, Daten','005',14,15,13,0,1),
-(118,2,'006','Spezielle Computerverfahren','006',16,17,13,0,1),
-(119,2,'010','Bibliografie','010',20,21,14,0,1),
-(120,2,'011','Bibliografien','011',22,23,14,0,1),
-(121,2,'012','Bibliografien von Einzelpersonen','012',24,25,14,0,1),
-(122,2,'014','Bibliografien anonymer und pseudonymer Werke','014',26,27,14,0,1),
-(123,2,'015','Bibliografien von Werken aus einzelnen Orten','015',28,29,14,0,1),
-(124,2,'016','Bibliografien von Werken รผber einzelne Themen','016',30,31,14,0,1),
-(125,2,'017','Allgemeine Sachkataloge','017',32,33,14,0,1),
-(126,2,'018','Kataloge nach Autor, Erscheinungsjahr usw.','018',34,35,14,0,1),
-(127,2,'019','Kreuzkataloge','019',36,37,14,0,1),
-(128,2,'020','Bibliotheks- und Informationswissenschaften','020',40,41,15,0,1),
-(129,2,'021','Beziehungen zwischen Bibliotheken','021',42,43,15,0,1),
-(130,2,'022','Verwaltung von Bibliotheksgebรคuden','022',44,45,15,0,1),
-(131,2,'023','Personalmanagement','023',46,47,15,0,1),
-(132,2,'025','Bibliothekarische Tรคtigkeiten','025',48,49,15,0,1),
-(133,2,'026','Spezialbibliotheken','026',50,51,15,0,1),
-(134,2,'027','Allgemeinbibliotheken','027',52,53,15,0,1),
-(135,2,'028','Lesen und Nutzung anderer Informationsmedien','028',54,55,15,0,1),
-(136,2,'030','Allgemeinenzyklopรคdien','030',58,59,16,0,1),
-(137,2,'031','Enzyklopรคdien in amerikanischem Englisch','031',60,61,16,0,1),
-(138,2,'032','Enzyklopรคdien in Englisch','032',62,63,16,0,1),
-(139,2,'033','Enzyklopรคdien in Deutsch und Niederlรคndisch','033',64,65,16,0,1),
-(140,2,'034','Enzyklopรคdien in Franzรถsisch, Okzitanisch und Katalanisch','034',66,67,16,0,1),
-(141,2,'035','Enzyklopรคdien in Italienisch, Rumรคnisch und Rรคtoromanisch','035',68,69,16,0,1),
-(142,2,'036','Enzyklopรคdien in Spanisch und Portugiesisch','036',70,71,16,0,1),
-(143,2,'037','Enzyklopรคdien in slawischen Sprachen','037',72,73,16,0,1),
-(144,2,'038','Enzyklopรคdien in skandinavischen Sprachen','038',74,75,16,0,1),
-(145,2,'039','Enzyklopรคdien in anderen Sprachen','039',76,77,16,0,1),
-(146,2,'050','Zeitschriften, allgemeine fortlaufende Sammelwerke','050',80,81,17,0,1),
-(147,2,'051','Fortlaufende Sammelwerke in amerikanischem Englisch','051',82,83,17,0,1),
-(148,2,'052','Fortlaufende Sammelwerke in Englisch','052',84,85,17,0,1),
-(149,2,'053','Fortlaufende Sammelwerke in Deutsch und Niederlรคndisch','053',86,87,17,0,1),
-(150,2,'054','Fortlaufende Sammelwerke in Franzรถsisch, Okzitanisch und Katalanisch','054',88,89,17,0,1),
-(151,2,'055','Fortlaufende Sammelwerke in Italienisch, Rumรคnisch und Rรคtoromanisch','055',90,91,17,0,1),
-(152,2,'056','Fortlaufende Sammelwerke in Spanisch und Portugiesisch','056',92,93,17,0,1),
-(153,2,'057','Fortlaufende Sammelwerke in slawischen Sprachen','057',94,95,17,0,1),
-(154,2,'058','Fortlaufende Sammelwerke in skandinavischen Sprachen','058',96,97,17,0,1),
-(155,2,'059','Fortlaufende Sammelwerke in anderen Sprachen','059',98,99,17,0,1),
-(156,2,'060','Allgemeine Organisationen, Museumswissenschaft','060',102,103,18,0,1),
-(157,2,'061','Allgemeine Organisationen in Nordamerika','061',104,105,18,0,1),
-(158,2,'062','Allgemeine Organisationen auf den Britischen Inseln, in England','062',106,107,18,0,1),
-(159,2,'063','Allgemeine Organisationen in Mitteleuropa, in Deutschland','063',108,109,18,0,1),
-(160,2,'064','Allgemeine Organisationen in Frankreich und Monaco','064',110,111,18,0,1),
-(161,2,'065','Allgemeine Organisationen in Italien und auf benachbarten Inseln','065',112,113,18,0,1),
-(162,2,'066','Allgemeine Organisationen auf der Iberischen Halbinsel und benachbarten Inseln','066',114,115,18,0,1),
-(163,2,'067','Allgemeine Organisationen in Osteuropa, in Russland','067',116,117,18,0,1),
-(164,2,'068','Allgemeine Organisationen in anderen geografischen Gebieten','068',118,119,18,0,1),
-(165,2,'069','Museumswissenschaft','069',120,121,18,0,1),
-(166,2,'070','Publizistische Medien, Journalismus, Verlagswesen','070',124,125,19,0,1),
-(167,2,'071','Journalismus und Zeitungen in Nordamerika','071',126,127,19,0,1),
-(168,2,'072','Journalismus und Zeitungen auf den Britischen Inseln, in England','072',128,129,19,0,1),
-(169,2,'073','Journalismus und Zeitungen in Mitteleuropa, in Deutschland','073',130,131,19,0,1),
-(170,2,'074','Journalismus und Zeitungen in Frankreich und Monaco','074',132,133,19,0,1),
-(171,2,'075','Journalismus und Zeitungen in Italien und auf benachbarten Inseln','075',134,135,19,0,1),
-(172,2,'076','Journalismus und Zeitungen auf der Iberischen Halbinsel und benachbarten Inseln','076',136,137,19,0,1),
-(173,2,'077','Journalismus und Zeitungen in Osteuropa, in Russland','077',138,139,19,0,1),
-(174,2,'078','Journalismus und Zeitungen in Skandinavien','078',140,141,19,0,1),
-(175,2,'079','Journalismus und Zeitungen in anderen geografischen Gebieten','079',142,143,19,0,1),
-(176,2,'080','Allgemeine Sammelwerke, Zitatensammlungen','080',146,147,20,0,1),
-(177,2,'081','Sammelwerke in amerikanischem Englisch','081',148,149,20,0,1),
-(178,2,'082','Sammelwerke in Englisch','082',150,151,20,0,1),
-(179,2,'083','Sammelwerke in Deutsch und Niederlรคndisch','083',152,153,20,0,1),
-(180,2,'084','Sammelwerke in Franzรถsisch, Okzitanisch und Katalanisch','084',154,155,20,0,1),
-(181,2,'085','Sammelwerke in Italienisch, Rumรคnisch und Rรคtoromanisch','085',156,157,20,0,1),
-(182,2,'086','Sammelwerke in Spanisch und Portugiesisch','086',158,159,20,0,1),
-(183,2,'087','Sammelwerke in slawischen Sprachen','087',160,161,20,0,1),
-(184,2,'088','Sammelwerke in skandinavischen Sprachen','088',162,163,20,0,1),
-(185,2,'089','Sammelwerke in anderen Sprachen','089',164,165,20,0,1),
-(186,2,'090','Handschriften, seltene Bรผcher','090',168,169,21,0,1),
-(187,2,'091','Handschriften','091',170,171,21,0,1),
-(188,2,'092','Blockbรผcher','092',172,173,21,0,1),
-(189,2,'093','Inkunabeln','093',174,175,21,0,1),
-(190,2,'094','Gedruckte Bรผcher','094',176,177,21,0,1),
-(191,2,'095','Bรผcher mit besonderem Einband','095',178,179,21,0,1),
-(192,2,'096','Bรผcher mit besonderen Illustrationen','096',180,181,21,0,1),
-(193,2,'097','Bรผcher aus besonderem Besitz oder besonderer Herkunft','097',182,183,21,0,1),
-(194,2,'098','Verbotene Werke, Fรคlschungen, Scherzdrucke','098',184,185,21,0,1),
-(195,2,'099','Bรผcher mit besonderem Format','099',186,187,21,0,1),
-(196,2,'100','Philosophie und Psychologie','100',192,193,22,0,1),
-(197,2,'101','Theorie der Philosophie','101',194,195,22,0,1),
-(198,2,'102','Verschiedenes','102',196,197,22,0,1),
-(199,2,'103','Wรถrterbรผcher, Enzyklopรคdien','103',198,199,22,0,1),
-(200,2,'105','Fortlaufende Sammelwerke','105',200,201,22,0,1),
-(201,2,'106','Organisationen, Management','106',202,203,22,0,1),
-(202,2,'107','Ausbildung, Forschung, verwandte Themen','107',204,205,22,0,1),
-(203,2,'108','Behandlung nach Personengruppen','108',206,207,22,0,1),
-(204,2,'109','Histor. Behandlung, Behandlung mehrerer Einzelpersonen','109',208,209,22,0,1),
-(205,2,'110','Metaphysik','110',212,213,23,1,1),
-(206,2,'111','Ontologie','111',214,215,23,1,1),
-(207,2,'113','Kosmologie','113',216,217,23,1,1),
-(208,2,'114','Raum','114',218,219,23,1,1),
-(209,2,'115','Zeit','115',220,221,23,1,1),
-(210,2,'116','Verรคnderung','116',222,223,23,1,1),
-(211,2,'117','Struktur','117',224,225,23,1,1),
-(212,2,'118','Kraft und Energie','118',226,227,23,1,1),
-(213,2,'119','Zahl und Quantitรคt','119',228,229,23,1,1),
-(214,2,'120','Epistemologie, Kausalitรคt, Menschheit','120',232,233,24,1,1),
-(215,2,'121','Epistemologie','121',234,235,24,1,1),
-(216,2,'122','Kausalitรคt','122',236,237,24,1,1),
-(217,2,'123','Determinismus, Indeterminismus','123',238,239,24,1,1),
-(218,2,'124','Teleologie','124',240,241,24,1,1),
-(219,2,'126','Das Selbst','126',242,243,24,1,1),
-(220,2,'127','Das Unbewusste, das Unterbewusste','127',244,245,24,1,1),
-(221,2,'128','Menschheit','128',246,247,24,1,1),
-(222,2,'129','Ursprung und Schicksal individueller Seelen','129',248,249,24,1,1),
-(223,2,'130','Parapsychologie und Okkultismus','130',252,253,25,0,1),
-(224,2,'131','Parapsychologische und okkulte Techniken','131',254,255,25,0,1),
-(225,2,'133','Einzelne Themen der Parapsychologie und des Okkultismus','133',256,257,25,0,1),
-(226,2,'135','Trรคume, Mysterien','135',258,259,25,0,1),
-(227,2,'137','Divinatorische Graphologie','137',260,261,25,0,1),
-(228,2,'138','Physiognomie','138',262,263,25,0,1),
-(229,2,'139','Phrenologie','139',264,265,25,0,1),
-(230,2,'140','Einzelne philosophische Schulen','140',268,269,26,1,1),
-(231,2,'141','Idealismus und verwandte Systeme','141',270,271,26,1,1),
-(232,2,'142','Kritizismus','142',272,273,26,1,1),
-(233,2,'143','Bergsonismus, Intuitionismus','143',274,275,26,1,1),
-(234,2,'144','Humanismus und verwandte Systeme','144',276,277,26,1,1),
-(235,2,'145','Sensualismus','145',278,279,26,1,1),
-(236,2,'146','Naturalismus und verwandte Systeme','146',280,281,26,1,1),
-(237,2,'147','Pantheismus und verwandte Systeme','147',282,283,26,1,1),
-(238,2,'148','Eklektizismus, Liberalismus, Traditionalismus','148',284,285,26,1,1),
-(239,2,'149','Andere philosophische Systeme','149',286,287,26,1,1),
-(240,2,'150','Psychologie','150',290,291,27,0,1),
-(241,2,'152','Sinneswahrnehmung, Bewegung, Emotionen, Triebe','152',292,293,27,0,1),
-(242,2,'153','Kognitive Prozesse, Intelligenz','153',294,295,27,0,1),
-(243,2,'154','Unterbewusste und bewusstseinsverรคnderte Zustรคnde','154',296,297,27,0,1),
-(244,2,'155','Differentielle Psychologie, Entwicklungspsychologie','155',298,299,27,0,1),
-(245,2,'156','Vergleichende Psychologie','156',300,301,27,0,1),
-(246,2,'158','Angewandte Psychologie','158',302,303,27,0,1),
-(247,2,'160','Logik','160',306,307,28,1,1),
-(248,2,'161','Induktion','161',308,309,28,1,1),
-(249,2,'162','Deduktion','162',310,311,28,1,1),
-(250,2,'165','Fehlschlรผsse, Fehlerquellen','165',312,313,28,1,1),
-(251,2,'166','Syllogismen','166',314,315,28,1,1),
-(252,2,'167','Hypothesen','167',316,317,28,1,1),
-(253,2,'168','Argument, รberzeugungung','168',318,319,28,1,1),
-(254,2,'169','Analogie','169',320,321,28,1,1),
-(255,2,'170','Ethik','170',324,325,29,1,1),
-(256,2,'171','Ethische Systeme','171',326,327,29,1,1),
-(257,2,'172','Politische Ethik','172',328,329,29,1,1),
-(258,2,'173','Familienethik','173',330,331,29,1,1),
-(259,2,'174','Berufsethik','174',332,333,29,1,1),
-(260,2,'175','Ethik von Freizeit und Erholung','175',334,335,29,1,1),
-(261,2,'176','Sexual- und Reproduktionsethik','176',336,337,29,1,1),
-(262,2,'177','Ethik sozialer Beziehungen','177',338,339,29,1,1),
-(263,2,'178','Konsumethik','178',340,341,29,1,1),
-(264,2,'179','Andere ethische Normen','179',342,343,29,1,1),
-(265,2,'180','Antike, mittelalterliche und รถstliche Philosophie','180',346,347,30,1,1),
-(266,2,'181','รstliche Philosophie','181',348,349,30,1,1),
-(267,2,'182','Vorsokratische griechische Philosophien','182',350,351,30,1,1),
-(268,2,'183','Sokratische und verwandte Philosophien','183',352,353,30,1,1),
-(269,2,'184','Platonische Philosophie','184',354,355,30,1,1),
-(270,2,'185','Aristotelische Philosophie','185',356,357,30,1,1),
-(271,2,'186','Skeptische und neuplatonische Philosophien','186',358,359,30,1,1),
-(272,2,'187','Epikureische Philosophie','187',360,361,30,1,1),
-(273,2,'188','Stoische Philosophie','188',362,363,30,1,1),
-(274,2,'189','Mittelalterliche westliche Philosophie','189',364,365,30,1,1),
-(275,2,'190','Neuzeitliche westliche Philosophie','190',368,369,31,1,1),
-(276,2,'191','Philosophie in den USA und Kanada','191',370,371,31,1,1),
-(277,2,'192','Philosophie auf den Britischen Inseln','192',372,373,31,1,1),
-(278,2,'193','Philosophie in Deutschland und รsterreich','193',374,375,31,1,1),
-(279,2,'194','Philosophie in Frankreich','194',376,377,31,1,1),
-(280,2,'195','Philosophie in Italien','195',378,379,31,1,1),
-(281,2,'196','Philosophie in Spanien und Portugal','196',380,381,31,1,1),
-(282,2,'197','Philosophie in Russland und der frรผheren Sowjetunion','197',382,383,31,1,1),
-(283,2,'198','Philosophie in Skandinavien','198',384,385,31,1,1),
-(284,2,'199','Philosophie in anderen geografischen Gebieten','199',386,387,31,1,1),
-(285,2,'200','Religion','200',392,393,32,0,1),
-(286,2,'201','Religiรถse Mythologie, Soziallehre','201',394,395,32,0,1),
-(287,2,'202','Lehren','202',396,397,32,0,1),
-(288,2,'203','Gottesdienst und andere Formen der รถffentlichen Religionsausรผbung','203',398,399,32,0,1),
-(289,2,'204','Religiรถse Erfahrung, religiรถses Leben, religiรถse Praxis','204',400,401,32,0,1),
-(290,2,'205','Religiรถse Ethik','205',402,403,32,0,1),
-(291,2,'206','Religiรถse Fรผhrer und Organisation','206',404,405,32,0,1),
-(292,2,'207','Mission, religiรถse Erziehung','207',406,407,32,0,1),
-(293,2,'208','Quellen','208',408,409,32,0,1),
-(294,2,'209','Sekten, Reformbewegungen','209',410,411,32,0,1),
-(295,2,'210','Religionsphilosophie, Religionstheorie','210',414,415,33,1,1),
-(296,2,'211','Gottesvorstellungen','211',416,417,33,1,1),
-(297,2,'212','Gottesfrage, Gotteserkenntnis, Eigenschaften Gottes','212',418,419,33,1,1),
-(298,2,'213','Schรถpfung','213',420,421,33,1,1),
-(299,2,'214','Theodizee','214',422,423,33,1,1),
-(300,2,'215','Naturwissenschaft und Religion','215',424,425,33,1,1),
-(301,2,'218','Der Mensch','218',426,427,33,1,1),
-(302,2,'220','Bibel','220',430,431,34,0,1),
-(303,2,'221','Altes Testament (Tenach)','221',432,433,34,0,1),
-(304,2,'222','Geschichtsbรผcher des Alten Testaments','222',434,435,34,0,1),
-(305,2,'223','Poetische Bรผcher des Alten Testaments','223',436,437,34,0,1),
-(306,2,'224','Prophetische Bรผcher des Alten Testaments','224',438,439,34,0,1),
-(307,2,'225','Neues Testament','225',440,441,34,0,1),
-(308,2,'226','Evangelien, Apostelgeschichte','226',442,443,34,0,1),
-(309,2,'227','Briefe','227',444,445,34,0,1),
-(310,2,'228','Johannes-Apokalypse (Offenbarung des Johannes)','228',446,447,34,0,1),
-(311,2,'229','Apokryphen, Pseudepigraphen','229',448,449,34,0,1),
-(312,2,'230','Christentum, Christliche Theologie','230',452,453,35,0,1),
-(313,2,'231','Gott','231',454,455,35,0,1),
-(314,2,'232','Jesus Christus und seine Familie','232',456,457,35,0,1),
-(315,2,'233','Der Mensch','233',458,459,35,0,1),
-(316,2,'234','Erlรถsung, Gnade','234',460,461,35,0,1),
-(317,2,'235','Geistliche Wesen','235',462,463,35,0,1),
-(318,2,'236','Eschatologie','236',464,465,35,0,1),
-(319,2,'238','Glaubensbekenntnisse, Katechismen','238',466,467,35,0,1),
-(320,2,'239','Apologetik, Polemik','239',468,469,35,0,1),
-(321,2,'240','Christliche Ethik, spirituelle Theologie','240',472,473,36,1,1),
-(322,2,'241','Christliche Ethik','241',474,475,36,1,1),
-(323,2,'242','Erbauungsliteratur','242',476,477,36,1,1),
-(324,2,'243','Evangelistisches Schrifttum fรผr Einzelpersonen','243',478,479,36,1,1),
-(325,2,'246','Kunst im Christentum','246',480,481,36,1,1),
-(326,2,'247','Kirchenausstattung, liturgisches Gerรคt','247',482,483,36,1,1),
-(327,2,'248','Christliche Erfahrung, christliche Praxis, christliches Leben','248',484,485,36,1,1),
-(328,2,'249','Christliches Leben in der Familie','249',486,487,36,1,1),
-(329,2,'250','Christliche Orden und Ortskirchen','250',490,491,37,1,1),
-(330,2,'251','Homiletik','251',492,493,37,1,1),
-(331,2,'252','Predigttexte','252',494,495,37,1,1),
-(332,2,'253','Pastoraltheologie','253',496,497,37,1,1),
-(333,2,'254','Gemeindeverwaltung','254',498,499,37,1,1),
-(334,2,'255','Religiรถse Kongregationen und Orden','255',500,501,37,1,1),
-(335,2,'259','Familienseelsorge, Kategorialseelsorge','259',502,503,37,1,1),
-(336,2,'260','Soziallehre, Ekklesiologie','260',506,507,38,1,1),
-(337,2,'261','Soziallehre','261',508,509,38,1,1),
-(338,2,'262','Ekklesiologie','262',510,511,38,1,1),
-(339,2,'263','Heilige Tage, Zeiten und Orte','263',512,513,38,1,1),
-(340,2,'264','รffentliche Religionsausรผbung','264',514,515,38,1,1),
-(341,2,'265','Sakramente, andere Riten und Handlungen','265',516,517,38,1,1),
-(342,2,'266','Mission','266',518,519,38,1,1),
-(343,2,'267','Religiรถse Verbรคnde','267',520,521,38,1,1),
-(344,2,'268','Religiรถse Erziehung','268',522,523,38,1,1),
-(345,2,'269','Geistliche Erneuerung','269',524,525,38,1,1),
-(346,2,'270','Geschichte des Christentums, Kirchengeschichte','270',528,529,39,1,1),
-(347,2,'271','Religiรถse Orden in der Kirchengeschichte','271',530,531,39,1,1),
-(348,2,'272','Verfolgung in der Kirchengeschichte','272',532,533,39,1,1),
-(349,2,'273','Dogmatische Kontroversen, Hรคresie','273',534,535,39,1,1),
-(350,2,'274','Geschichte des Christentums in Europa','274',536,537,39,1,1),
-(351,2,'275','Geschichte des Christentums in Asien','275',538,539,39,1,1),
-(352,2,'276','Geschichte des Christentums in Afrika','276',540,541,39,1,1),
-(353,2,'277','Geschichte des Christentums in Nordamerika','277',542,543,39,1,1),
-(354,2,'278','Geschichte des Christentums in Sรผdamerika','278',544,545,39,1,1),
-(355,2,'279','Geschichte des Christentums in anderen Gebieten','279',546,547,39,1,1),
-(356,2,'280','Christliche Konfessionen und Sekten','280',550,551,40,1,1),
-(357,2,'281','Alte Kirche, Ostkirchen','281',552,553,40,1,1),
-(358,2,'282','Rรถmisch-Katholische Kirche','282',554,555,40,1,1),
-(359,2,'283','Anglikanische Kirchen','283',556,557,40,1,1),
-(360,2,'284','Protestanten kontinentaleuropรคischen Ursprungs','284',558,559,40,1,1),
-(361,2,'285','Presbyterianer, Reformierte, Kongregationalisten','285',560,561,40,1,1),
-(362,2,'286','Baptisten, Disciples of Christ, Adventisten','286',562,563,40,1,1),
-(363,2,'287','Methodisten und verwandte Kirchen','287',564,565,40,1,1),
-(364,2,'289','Andere Konfessionen und Sekten','289',566,567,40,1,1),
-(365,2,'290','Andere Religionen','290',570,571,41,0,1),
-(366,2,'292','Griechische und rรถmische Religion','292',572,573,41,0,1),
-(367,2,'293','Germanische Religion','293',574,575,41,0,1),
-(368,2,'294','Religionen indischen Ursprungs','294',576,577,41,0,1),
-(369,2,'295','Parsismus','295',578,579,41,0,1),
-(370,2,'296','Judentum','296',580,581,41,0,1),
-(371,2,'297','Islam, Babismus, Bahaismus','297',582,583,41,0,1),
-(372,2,'298','(Optionale Notation)','298',584,585,41,0,1),
-(373,2,'299','An anderer Stelle nicht vorgesehene Religionen','299',586,587,41,0,1),
-(374,2,'300','Sozialwissenschaften','300',592,593,42,0,1),
-(375,2,'301','Soziologie, Anthropologie','301',594,595,42,0,1),
-(376,2,'302','Soziale Interaktion','302',596,597,42,0,1),
-(377,2,'303','Gesellschaftliche Prozesse','303',598,599,42,0,1),
-(378,2,'304','Das Sozialverhalten beeinflussende Faktoren','304',600,601,42,0,1),
-(379,2,'305','Soziale Gruppen','305',602,603,42,0,1),
-(380,2,'306','Kultur und Institutionen','306',604,605,42,0,1),
-(381,2,'307','Gemeinschaften','307',606,607,42,0,1),
-(382,2,'310','Sammlungen allgemeiner Statistiken','310',610,611,43,0,1),
-(383,2,'314','Allgemeine Statistiken zu Europa','314',612,613,43,0,1),
-(384,2,'315','Allgemeine Statistiken zu Asien','315',614,615,43,0,1),
-(385,2,'316','Allgemeine Statistiken zu Afrika','316',616,617,43,0,1),
-(386,2,'317','Allgemeine Statistiken zu Nordamerika','317',618,619,43,0,1),
-(387,2,'318','Allgemeine Statistiken zu Sรผdamerika','318',620,621,43,0,1),
-(388,2,'319','Allgemeine Statistiken zu anderen Gebieten','319',622,623,43,0,1),
-(389,2,'320','Politikwissenschaft','320',626,627,44,0,1),
-(390,2,'321','Staatsformen und Regierungssysteme','321',628,629,44,0,1),
-(391,2,'322','Beziehungen des Staats zu organisierten Gruppen','322',630,631,44,0,1),
-(392,2,'323','Grundrechte und politische Rechte','323',632,633,44,0,1),
-(393,2,'324','Der politische Prozess','324',634,635,44,0,1),
-(394,2,'325','Internationale Migration, Kolonisation','325',636,637,44,0,1),
-(395,2,'326','Sklaverei und Sklavenbefreiung','326',638,639,44,0,1),
-(396,2,'327','Internationale Beziehungen','327',640,641,44,0,1),
-(397,2,'328','Der Gesetzgebungsprozess','328',642,643,44,0,1),
-(398,2,'330','Wirtschaft','330',646,647,45,0,1),
-(399,2,'331','Arbeitsรถkonomie','331',648,649,45,0,1),
-(400,2,'332','Finanzwirtschaft','332',650,651,45,0,1),
-(401,2,'333','Boden- und Energiewirtschaft','333',652,653,45,0,1),
-(402,2,'334','Genossenschaften','334',654,655,45,0,1),
-(403,2,'335','Sozialismus und verwandte Systeme','335',656,657,45,0,1),
-(404,2,'336','รffentliche Finanzen','336',658,659,45,0,1),
-(405,2,'337','Weltwirtschaft','337',660,661,45,0,1),
-(406,2,'338','Produktion','338',662,663,45,0,1),
-(407,2,'339','Makroรถkonomie und verwandte Themen','339',664,665,45,0,1),
-(408,2,'340','Recht','340',668,669,46,0,1),
-(409,2,'341','Vรถlkerrecht','341',670,671,46,0,1),
-(410,2,'342','Verfassungs- und Verwaltungsrecht','342',672,673,46,0,1),
-(411,2,'343','Wehrrecht, Steuerrecht, Wirtschaftsrecht','343',674,675,46,0,1),
-(412,2,'344','Arbeitsrecht, Sozialrecht, Bildungsrecht, Kulturrecht','344',676,677,46,0,1),
-(413,2,'345','Strafrecht','345',678,679,46,0,1),
-(414,2,'346','Privatrecht','346',680,681,46,0,1),
-(415,2,'347','Zivilprozessrecht, Zivilgerichte','347',682,683,46,0,1),
-(416,2,'348','Gesetze, Verordnungen, Rechtsfรคlle','348',684,685,46,0,1),
-(417,2,'349','Recht einzelner Gebietskรถrperschaften und Gebiete','349',686,687,46,0,1),
-(418,2,'350','รffentliche Verwaltung, Militรคrwissenschaft','350',690,691,47,1,1),
-(419,2,'351','รffentliche Verwaltung','351',692,693,47,0,1),
-(420,2,'352','Allgemeines zur รถffentlichen Verwaltung','352',694,695,47,0,1),
-(421,2,'353','Einzelne Bereiche der รถffentlichen Verwaltung','353',696,697,47,0,1),
-(422,2,'354','Verwaltung von Wirtschaft und Umwelt','354',698,699,47,0,1),
-(423,2,'355','Militรคrwissenschaft','355',700,701,47,1,1),
-(424,2,'356','Infanterie und Kampffรผhrung','356',702,703,47,0,1),
-(425,2,'357','Kavalleriestreitkrรคfte und Kampffรผhrung','357',704,705,47,0,1),
-(426,2,'358','Luftstreitkrรคfte und andere spezialisierte Streitkrรคfte','358',706,707,47,0,1),
-(427,2,'359','Seestreitkrรคfte und Kampffรผhrung','359',708,709,47,0,1),
-(428,2,'360','Soziale Probleme und Sozialdienste, Verbรคnde','360',712,713,48,0,1),
-(429,2,'361','Soziale Probleme und Sozialhilfe im Allgemeinen','361',714,715,48,0,1),
-(430,2,'362','Probleme und Dienste der Sozialhilfe','362',716,717,48,0,1),
-(431,2,'363','Andere soziale Probleme und Sozialdienste','363',718,719,48,0,1),
-(432,2,'364','Kriminologie','364',720,721,48,0,1),
-(433,2,'365','Justizvollzugsanstalten und verwandte Einrichtungen','365',722,723,48,0,1),
-(434,2,'366','Verbรคnde','366',724,725,48,0,1),
-(435,2,'367','Allgemeine Klubs','367',726,727,48,0,1),
-(436,2,'368','Versicherungen','368',728,729,48,0,1),
-(437,2,'369','Verschiedene Arten von Verbรคnden','369',730,731,48,0,1),
-(438,2,'370','Bildung und Erziehung','370',734,735,49,0,1),
-(439,2,'371','Schulen, schulische Tรคtigkeiten, Sonderpรคdagogik','371',736,737,49,0,1),
-(440,2,'372','Primar- und Elementarbildung','372',738,739,49,0,1),
-(441,2,'373','Sekundarbildung','373',740,741,49,0,1),
-(442,2,'374','Erwachsenenbildung','374',742,743,49,0,1),
-(443,2,'375','Curricula','375',744,745,49,0,1),
-(444,2,'378','Hochschulbildung','378',746,747,49,0,1),
-(445,2,'379','Bildungspolitik','379',748,749,49,0,1),
-(446,2,'380','Handel, Kommunikation, Verkehr','380',752,753,50,0,1),
-(447,2,'381','Handel','381',754,755,50,0,1),
-(448,2,'382','Internationaler Handel','382',756,757,50,0,1),
-(449,2,'383','Postverkehr','383',758,759,50,0,1),
-(450,2,'384','Kommunikation, Telekommunikation','384',760,761,50,0,1),
-(451,2,'385','Schienenverkehr','385',762,763,50,0,1),
-(452,2,'386','Binnenschifffahrt, Fรคhrverkehr','386',764,765,50,0,1),
-(453,2,'387','Schifffahrt, Luft-, Weltraumverkehr','387',766,767,50,0,1),
-(454,2,'388','Verkehr, Landverkehr','388',768,769,50,0,1),
-(455,2,'389','Metrologie, Normung','389',770,771,50,0,1),
-(456,2,'390','Brรคuche, Etikette, Folklore','390',774,775,51,0,1),
-(457,2,'391','Kleidung, รคuรeres Erscheinungsbild','391',776,777,51,0,1),
-(458,2,'392','Brรคuche im Lebenslauf und im hรคuslichen Leben','392',778,779,51,0,1),
-(459,2,'393','Sterbe- und Bestattungsriten','393',780,781,51,0,1),
-(460,2,'394','Allgemeine Brรคuche','394',782,783,51,0,1),
-(461,2,'395','Etikette (Manieren)','395',784,785,51,0,1),
-(462,2,'398','Folklore','398',786,787,51,0,1),
-(463,2,'399','Brรคuche des Krieges und der Diplomatie','399',788,789,51,0,1),
-(464,2,'400','Sprache','400',794,795,52,0,1),
-(465,2,'401','Sprachphilosophie, Sprachtheorie','401',796,797,52,0,1),
-(466,2,'402','Verschiedenes','402',798,799,52,0,1),
-(467,2,'403','Wรถrterbรผcher, Enzyklopรคdien','403',800,801,52,0,1),
-(468,2,'404','Spezielle Themen','404',802,803,52,0,1),
-(469,2,'405','Fortlaufende Sammelwerke','405',804,805,52,0,1),
-(470,2,'406','Organisationen, Management','406',806,807,52,0,1),
-(471,2,'407','Ausbildung, Forschung, verwandte Themen','407',808,809,52,0,1),
-(472,2,'408','Behandlung nach Personengruppen','408',810,811,52,0,1),
-(473,2,'409','Geografische, personenbezogene Behandlung','409',812,813,52,0,1),
-(474,2,'410','Linguistik','410',816,817,53,1,1),
-(475,2,'411','Schriftsysteme','411',818,819,53,1,1),
-(476,2,'412','Etymologie','412',820,821,53,1,1),
-(477,2,'413','Wรถrterbรผcher','413',822,823,53,1,1),
-(478,2,'414','Phonologie, Phonetik','414',824,825,53,1,1),
-(479,2,'415','Grammatik','415',826,827,53,1,1),
-(480,2,'417','Dialektologie, historische Linguistik','417',828,829,53,1,1),
-(481,2,'418','Standardsprache, Angewandte Linguistik','418',830,831,53,1,1),
-(482,2,'419','Gebรคrdensprachen','419',832,833,53,1,1),
-(483,2,'420','Englisch, Altenglisch','420',836,837,54,0,1),
-(484,2,'421','Schriftsystem und Phonologie des Englischen','421',838,839,54,0,1),
-(485,2,'422','Etymologie des Englischen','422',840,841,54,0,1),
-(486,2,'423','Englische Wรถrterbรผcher','423',842,843,54,0,1),
-(487,2,'425','Englische Grammatik','425',844,845,54,0,1),
-(488,2,'427','Varianten des Englischen, Mittelenglisch','427',846,847,54,0,1),
-(489,2,'428','Gebrauch des Standard-Englisch','428',848,849,54,0,1),
-(490,2,'429','Altenglisch (Angelsรคchsisch)','429',850,851,54,0,1),
-(491,2,'430','Germanische Sprachen, Deutsch','430',854,855,55,1,1),
-(492,2,'431','Schriftsysteme und Phonologie des Deutschen','431',856,857,55,0,1),
-(493,2,'432','Etymologie des Deutschen','432',858,859,55,0,1),
-(494,2,'433','Deutsche Wรถrterbรผcher','433',860,861,55,0,1),
-(495,2,'435','Deutsche Grammatik','435',862,863,55,0,1),
-(496,2,'437','Varianten des Deutschen','437',864,865,55,0,1),
-(497,2,'438','Gebrauch des Standard-Deutsch','438',866,867,55,0,1),
-(498,2,'439','Andere germanische Sprachen','439',868,869,55,1,1),
-(499,2,'440','Romanische Sprachen, Franzรถsisch','440',872,873,56,0,1),
-(500,2,'441','Schriftsysteme und Phonologie des Franzรถsischen','441',874,875,56,0,1),
-(501,2,'442','Etymologie des Franzรถsischen','442',876,877,56,0,1),
-(502,2,'443','Franzรถsische Wรถrterbรผcher','443',878,879,56,0,1),
-(503,2,'445','Franzรถsische Grammatik','445',880,881,56,0,1),
-(504,2,'447','Varianten des Franzรถsischen','447',882,883,56,0,1),
-(505,2,'448','Gebrauch des Standard-Franzรถsisch','448',884,885,56,0,1),
-(506,2,'449','Okzitanisch, Katalanisch','449',886,887,56,0,1),
-(507,2,'450','Italienisch, Rumรคnisch, Rรคtoromanisch','450',890,891,57,0,1),
-(508,2,'451','Schriftsysteme und Phonologie des Italienischen','451',892,893,57,0,1),
-(509,2,'452','Etymologie des Italienischen','452',894,895,57,0,1),
-(510,2,'453','Italienische Wรถrterbรผcher','453',896,897,57,0,1),
-(511,2,'455','Italienische Grammatik','455',898,899,57,0,1),
-(512,2,'457','Varianten des Italienischen','457',900,901,57,0,1),
-(513,2,'458','Gebrauch des Standard-Italienisch','458',902,903,57,0,1),
-(514,2,'459','Rumรคnisch, Rรคtoromanisch','459',904,905,57,0,1),
-(515,2,'460','Spanisch, Portugiesisch','460',908,909,58,0,1),
-(516,2,'461','Schriftsysteme und Phonologie des Spanischen','461',910,911,58,0,1),
-(517,2,'462','Etymologie des Spanischen','462',912,913,58,0,1),
-(518,2,'463','Spanische Wรถrterbรผcher','463',914,915,58,0,1),
-(519,2,'465','Spanische Grammatik','465',916,917,58,0,1),
-(520,2,'467','Varianten des Spanischen','467',918,919,58,0,1),
-(521,2,'468','Gebrauch des Standard-Spanisch','468',920,921,58,0,1),
-(522,2,'469','Portugiesisch','469',922,923,58,0,1),
-(523,2,'470','Italische Sprachen, Latein','470',926,927,59,0,1),
-(524,2,'471','Schriftsysteme und Phonologie des klassischen Latein','471',928,929,59,0,1),
-(525,2,'472','Etymologie des klassischen Latein','472',930,931,59,0,1),
-(526,2,'473','Wรถrterbรผcher des klassischen Latein','473',932,933,59,0,1),
-(527,2,'475','Grammatik des klassischen Latein','475',934,935,59,0,1),
-(528,2,'477','Altlatein, Mittellatein, Neulatein, Kirchenlatein, Vulgรคrlatein','477',936,937,59,0,1),
-(529,2,'478','Gebrauch des klassischen Latein','478',938,939,59,0,1),
-(530,2,'479','Andere italische Sprachen','479',940,941,59,0,1),
-(531,2,'480','Hellenische Sprachen, klassisches Griechisch','480',944,945,60,0,1),
-(532,2,'481','Schriftsysteme und Phonologie des klassischen Griechisch','481',946,947,60,0,1),
-(533,2,'482','Etymologie des klassischen Griechisch','482',948,949,60,0,1),
-(534,2,'483','Wรถrterbรผcher des klassischen Griechisch','483',950,951,60,0,1),
-(535,2,'485','Grammatik des klassischen Griechisch','485',952,953,60,0,1),
-(536,2,'487','Vorklassisches Griechisch, Mittelgriechisch','487',954,955,60,0,1),
-(537,2,'488','Gebrauch des klassischen Griechisch','488',956,957,60,0,1),
-(538,2,'489','Andere hellenische Sprachen, Neugriechisch','489',958,959,60,0,1),
-(539,2,'490','Andere Sprachen','490',962,963,61,0,1),
-(540,2,'491','Ostindoeuropรคische und keltische Sprachen','491',964,965,61,0,1),
-(541,2,'492','Afroasiatische Sprachen, semitische Sprachen','492',966,967,61,0,1),
-(542,2,'493','Nichtsemitische afroasiatische Sprachen','493',968,969,61,0,1),
-(543,2,'494','Altaische, uralische, palรคosibirische, drawidische Sprachen','494',970,971,61,0,1),
-(544,2,'495','Ost- und sรผdostasiatische Sprachen','495',972,973,61,0,1),
-(545,2,'496','Afrikanische Sprachen','496',974,975,61,0,1),
-(546,2,'497','Nordamerikanische Indianersprachen','497',976,977,61,0,1),
-(547,2,'498','Sรผdamerikanische Indianersprachen','498',978,979,61,0,1),
-(548,2,'499','Austronesische und andere Sprachen','499',980,981,61,0,1),
-(549,2,'500','Naturwissenschaften und Mathematik','500',986,987,62,0,1),
-(550,2,'501','Philosophie, Theorie','501',988,989,62,0,1),
-(551,2,'502','Verschiedenes','502',990,991,62,0,1),
-(552,2,'503','Wรถrterbรผcher, Enzyklopรคdien','503',992,993,62,0,1),
-(553,2,'505','Fortlaufende Sammelwerke','505',994,995,62,0,1),
-(554,2,'506','Organisationen, Management','506',996,997,62,0,1),
-(555,2,'507','Ausbildung, Forschung, verwandte Themen','507',998,999,62,0,1),
-(556,2,'508','Naturgeschichte','508',1000,1001,62,0,1),
-(557,2,'509','Histor., geogr., personenbezogene Behandlung','509',1002,1003,62,0,1),
-(558,2,'510','Mathematik','510',1006,1007,63,0,1),
-(559,2,'511','Allgemeine mathematische Prinzipien','511',1008,1009,63,0,1),
-(560,2,'512','Algebra','512',1010,1011,63,0,1),
-(561,2,'513','Arithmetik','513',1012,1013,63,0,1),
-(562,2,'514','Topologie','514',1014,1015,63,0,1),
-(563,2,'515','Analysis','515',1016,1017,63,0,1),
-(564,2,'516','Geometrie','516',1018,1019,63,0,1),
-(565,2,'518','Numerische Analysis','518',1020,1021,63,0,1),
-(566,2,'519','Wahrscheinlichkeiten, angewandte Mathematik','519',1022,1023,63,0,1),
-(567,2,'520','Astronomie und zugeordnete Wissenschaften','520',1026,1027,64,0,1),
-(568,2,'521','Himmelsmechanik','521',1028,1029,64,0,1),
-(569,2,'522','Techniken, Ausstattung, Materialien','522',1030,1031,64,0,1),
-(570,2,'523','Einzelne Himmelskรถrper und Himmelsphรคnomene','523',1032,1033,64,0,1),
-(571,2,'525','Erde (Astronomische Geografie)','525',1034,1035,64,0,1),
-(572,2,'526','Mathematische Geografie','526',1036,1037,64,0,1),
-(573,2,'527','Astronavigation','527',1038,1039,64,0,1),
-(574,2,'528','Ephemeriden','528',1040,1041,64,0,1),
-(575,2,'529','Chronologie','529',1042,1043,64,0,1),
-(576,2,'530','Physik','530',1046,1047,65,0,1),
-(577,2,'531','Klassische Mechanik, Festkรถrpermechanik','531',1048,1049,65,0,1),
-(578,2,'532','Mechanik der Fluide, Mechanik der Flรผssigkeiten','532',1050,1051,65,0,1),
-(579,2,'533','Gasmechanik','533',1052,1053,65,0,1),
-(580,2,'534','Schall und verwandte Schwingungen','534',1054,1055,65,0,1),
-(581,2,'535','Licht, Infrarot- und Ultraviolettphรคnomene','535',1056,1057,65,0,1),
-(582,2,'536','Wรคrme','536',1058,1059,65,0,1),
-(583,2,'537','Elektrizitรคt, Elektronik','537',1060,1061,65,0,1),
-(584,2,'538','Magnetismus','538',1062,1063,65,0,1),
-(585,2,'539','Moderne Physik','539',1064,1065,65,0,1),
-(586,2,'540','Chemie und zugeordnete Wissenschaften','540',1068,1069,66,0,1),
-(587,2,'541','Physikalische Chemie','541',1070,1071,66,0,1),
-(588,2,'542','Techniken, Ausstattung, Materialien','542',1072,1073,66,0,1),
-(589,2,'543','Analytische Chemie','543',1074,1075,66,0,1),
-(590,2,'546','Anorganische Chemie','546',1076,1077,66,0,1),
-(591,2,'547','Organische Chemie','547',1078,1079,66,0,1),
-(592,2,'548','Kristallografie','548',1080,1081,66,0,1),
-(593,2,'549','Mineralogie','549',1082,1083,66,0,1),
-(594,2,'550','Geowissenschaften','550',1086,1087,67,0,1),
-(595,2,'551','Geologie, Hydrologie, Meteorologie','551',1088,1089,67,0,1),
-(596,2,'552','Petrologie','552',1090,1091,67,0,1),
-(597,2,'553','Lagerstรคttenkunde','553',1092,1093,67,0,1),
-(598,2,'554','Geowissenschaften Europas','554',1094,1095,67,0,1),
-(599,2,'555','Geowissenschaften Asiens','555',1096,1097,67,0,1),
-(600,2,'556','Geowissenschaften Afrikas','556',1098,1099,67,0,1),
-(601,2,'557','Geowissenschaften Nordamerikas','557',1100,1101,67,0,1),
-(602,2,'558','Geowissenschaften Sรผdamerikas','558',1102,1103,67,0,1),
-(603,2,'559','Geowissenschaften anderer Gebiete','559',1104,1105,67,0,1),
-(604,2,'560','Palรคontologie, Palรคozoologie','560',1108,1109,68,0,1),
-(605,2,'561','Palรคobotanik, fossile Mikroorganismen','561',1110,1111,68,0,1),
-(606,2,'562','Fossile Evertebrata (Wirbellose)','562',1112,1113,68,0,1),
-(607,2,'563','Fossile Wirbellose des Meeres und der Meereskรผste','563',1114,1115,68,0,1),
-(608,2,'564','Fossile Mollusca (Weichtiere), Tentaculata (Kranzfรผhler)','564',1116,1117,68,0,1),
-(609,2,'565','Fossile Arthropoden (Gliederfรผรer)','565',1118,1119,68,0,1),
-(610,2,'566','Fossile Chordata (Chordatiere)','566',1120,1121,68,0,1),
-(611,2,'567','Fossile wechselwarme Wirbeltiere, fossile Pisces (Fische)','567',1122,1123,68,0,1),
-(612,2,'568','Fossile Aves (Vรถgel)','568',1124,1125,68,0,1),
-(613,2,'569','Fossile Mammalia (Sรคugetiere)','569',1126,1127,68,0,1),
-(614,2,'570','Biowissenschaften, Biologie','570',1130,1131,69,0,1),
-(615,2,'571','Physiologie und verwandte Themen','571',1132,1133,69,0,1),
-(616,2,'572','Biochemie','572',1134,1135,69,0,1),
-(617,2,'573','Einzelne physiologische Systeme bei Tieren','573',1136,1137,69,0,1),
-(618,2,'575','Einzelne Teile von und physiologische Systeme bei Pflanzen','575',1138,1139,69,0,1),
-(619,2,'576','Genetik und Evolution','576',1140,1141,69,0,1),
-(620,2,'577','รkologie','577',1142,1143,69,0,1),
-(621,2,'578','Naturgeschichte von Organismen','578',1144,1145,69,0,1),
-(622,2,'579','Mikroorganismen, Pilze, Algen','579',1146,1147,69,0,1),
-(623,2,'580','Pflanzen (Botanik)','580',1150,1151,70,0,1),
-(624,2,'581','Einzelne Themen in der Naturgeschichte','581',1152,1153,70,0,1),
-(625,2,'582','Pflanzen mit spezifischen Merkmalen und Blรผten','582',1154,1155,70,0,1),
-(626,2,'583','Magnoliopsida (Zweikeimblรคttrige)','583',1156,1157,70,0,1),
-(627,2,'584','Liliopsida (Einkeimblรคttrige)','584',1158,1159,70,0,1),
-(628,2,'585','Gymnospermae (Nacktsamer), Coniferae (Nadelgehรถlze)','585',1160,1161,70,0,1),
-(629,2,'586','Cryptogamia (Blรผtenlose Pflanzen)','586',1162,1163,70,0,1),
-(630,2,'587','Pteridophyta (Farnpflanzen)','587',1164,1165,70,0,1),
-(631,2,'588','Bryophyta (Moose)','588',1166,1167,70,0,1),
-(632,2,'590','Tiere (Zoologie)','590',1170,1171,71,0,1),
-(633,2,'591','Einzelne Themen in der Naturgeschichte','591',1172,1173,71,0,1),
-(634,2,'592','Evertebrata (Wirbellose)','592',1174,1175,71,0,1),
-(635,2,'593','Wirbellose des Meeres und der Meereskรผste','593',1176,1177,71,0,1),
-(636,2,'594','Mollusca (Weichtiere), Tentaculata (Kranzfรผhler)','594',1178,1179,71,0,1),
-(637,2,'595','Arthropoden (Gliederfรผรer)','595',1180,1181,71,0,1),
-(638,2,'596','Chordata (Chordatiere)','596',1182,1183,71,0,1),
-(639,2,'597','Wechselwarme Wirbeltiere, Pisces (Fische)','597',1184,1185,71,0,1),
-(640,2,'598','Aves (Vรถgel)','598',1186,1187,71,0,1),
-(641,2,'599','Mammalia (Sรคugetiere)','599',1188,1189,71,0,1),
-(642,2,'600','Technik, Technologie','600',1194,1195,72,0,1),
-(643,2,'601','Philosophie, Theorie','601',1196,1197,72,0,1),
-(644,2,'602','Verschiedenes','602',1198,1199,72,0,1),
-(645,2,'603','Wรถrterbรผcher, Enzyklopรคdien','603',1200,1201,72,0,1),
-(646,2,'604','Spezielle Themen','604',1202,1203,72,0,1),
-(647,2,'605','Fortlaufende Sammelwerke','605',1204,1205,72,0,1),
-(648,2,'606','Organisationen','606',1206,1207,72,0,1),
-(649,2,'607','Ausbildung, Forschung, verwandte Themen','607',1208,1209,72,0,1),
-(650,2,'608','Erfindungen, Patente','608',1210,1211,72,0,1),
-(651,2,'609','Histor., geogr., personenbezogene Behandlung','609',1212,1213,72,0,1),
-(652,2,'610','Medizin und Gesundheit','610',1216,1217,73,0,1),
-(653,2,'611','Menschliche Anatomie, Zytologie, Histologie','611',1218,1219,73,0,1),
-(654,2,'612','Humanphysiologie','612',1220,1221,73,0,1),
-(655,2,'613','Persรถnliche Gesundheit und Sicherheit','613',1222,1223,73,0,1),
-(656,2,'614','Inzidenz und Prรคvention von Krankheiten','614',1224,1225,73,0,1),
-(657,2,'615','Pharmakologie, Therapeutik','615',1226,1227,73,0,1),
-(658,2,'616','Krankheiten','616',1228,1229,73,0,1),
-(659,2,'617','Chirurgie und verwandte medizinische Fachrichtungen','617',1230,1231,73,0,1),
-(660,2,'618','Gynรคkologie, Geburtsmedizin, Pรคdiatrie, Geriatrie','618',1232,1233,73,0,1),
-(661,2,'620','Ingenieurwissenschaften und zugeordnete Tรคtigkeiten','620',1236,1237,74,0,1),
-(662,2,'621','Angewandte Physik','621',1238,1239,74,0,1),
-(663,2,'622','Bergbau und verwandte Tรคtigkeiten','622',1240,1241,74,0,1),
-(664,2,'623','Militรคr- und Schiffstechnik','623',1242,1243,74,0,1),
-(665,2,'624','Ingenieurbau','624',1244,1245,74,0,1),
-(666,2,'625','Eisenbahn- und Straรenbau','625',1246,1247,74,0,1),
-(667,2,'627','Wasserbau','627',1248,1249,74,0,1),
-(668,2,'628','Sanitรคr- und Kommunaltechnik, Umwelttechnik','628',1250,1251,74,0,1),
-(669,2,'629','Andere Fachrichtungen der Ingenieurwissenschaften','629',1252,1253,74,0,1),
-(670,2,'630','Landwirtschaft und verwandte Bereiche','630',1256,1257,75,0,1),
-(671,2,'631','Techniken, Ausstattung, Materialien','631',1258,1259,75,0,1),
-(672,2,'632','Schรคden, Krankheiten, Schรคdlinge an Pflanzen','632',1260,1261,75,0,1),
-(673,2,'633','Feld- und Plantagenfrรผchte','633',1262,1263,75,0,1),
-(674,2,'634','Obstanlagen, Frรผchte, Forstwirtschaft','634',1264,1265,75,0,1),
-(675,2,'635','Gartenpflanzen (Gartenbau)','635',1266,1267,75,0,1),
-(676,2,'636','Viehwirtschaft','636',1268,1269,75,0,1),
-(677,2,'637','Milchverarbeitung und verwandte Produkte','637',1270,1271,75,0,1),
-(678,2,'638','Insektenzucht','638',1272,1273,75,0,1),
-(679,2,'639','Jagd, Fischfang, Naturschutz','639',1274,1275,75,0,1),
-(680,2,'640','Hauswirtschaft und Familie','640',1278,1279,76,0,1),
-(681,2,'641','Essen und Trinken','641',1280,1281,76,0,1),
-(682,2,'642','Mahlzeiten, Tischkultur','642',1282,1283,76,0,1),
-(683,2,'643','Wohnen, Haushaltsausstattung','643',1284,1285,76,0,1),
-(684,2,'644','Gebรคudeversorgung fรผr Haushalte','644',1286,1287,76,0,1),
-(685,2,'645','Einrichtungsgegenstรคnde','645',1288,1289,76,0,1),
-(686,2,'646','Nรคhen, Kleidung, persรถnliches Leben, Familienleben','646',1290,1291,76,0,1),
-(687,2,'647','Groรhaushaltsfรผhrung','647',1292,1293,76,0,1),
-(688,2,'648','Haushaltsfรผhrung','648',1294,1295,76,0,1),
-(689,2,'649','Kindererziehung, hรคusliche Betreuung','649',1296,1297,76,0,1),
-(690,2,'650','Management und unterstรผtzende Tรคtigkeiten','650',1300,1301,77,0,1),
-(691,2,'651','Bรผroarbeit','651',1302,1303,77,0,1),
-(692,2,'652','Techniken der schriftlichen Kommunikation','652',1304,1305,77,0,1),
-(693,2,'653','Stenografie','653',1306,1307,77,0,1),
-(694,2,'657','Rechnungslegung','657',1308,1309,77,0,1),
-(695,2,'658','Allgemeines Management','658',1310,1311,77,0,1),
-(696,2,'659','Werbung, รffentlichkeitsarbeit','659',1312,1313,77,0,1),
-(697,2,'660','Chemische Verfahrenstechnik','660',1316,1317,78,0,1),
-(698,2,'661','Industriechemikalien','661',1318,1319,78,0,1),
-(699,2,'662','Explosivstoffe, Brennstoffe und verwandte Produkte','662',1320,1321,78,0,1),
-(700,2,'663','Getrรคnketechnologie','663',1322,1323,78,0,1),
-(701,2,'664','Lebensmitteltechnologie','664',1324,1325,78,0,1),
-(702,2,'665','Industrielle รle, Fette, Wachse, technische Gase','665',1326,1327,78,0,1),
-(703,2,'666','Keramiktechnologie und zugeordnete Technologien','666',1328,1329,78,0,1),
-(704,2,'667','Reinigungs-, Fรคrbe-, Beschichtungstechniken','667',1330,1331,78,0,1),
-(705,2,'668','Technik anderer organischer Produkte','668',1332,1333,78,0,1),
-(706,2,'669','Metallurgie','669',1334,1335,78,0,1),
-(707,2,'670','Industrielle Fertigung','670',1338,1339,79,0,1),
-(708,2,'671','Metallverarbeitung und Rohprodukte aus Metall','671',1340,1341,79,0,1),
-(709,2,'672','Eisen, Stahl, andere Eisenlegierungen','672',1342,1343,79,0,1),
-(710,2,'673','Nichteisenmetalle','673',1344,1345,79,0,1),
-(711,2,'674','Holzverarbeitung, Holzprodukte, Kork','674',1346,1347,79,0,1),
-(712,2,'675','Leder- und Pelzverarbeitung','675',1348,1349,79,0,1),
-(713,2,'676','Zellstoff und Papierherstellung','676',1350,1351,79,0,1),
-(714,2,'677','Textilien','677',1352,1353,79,0,1),
-(715,2,'678','Elastomere, Elastomerprodukte','678',1354,1355,79,0,1),
-(716,2,'679','Andere Produkte aus einzelnen Werkstoffen','679',1356,1357,79,0,1),
-(717,2,'680','Industrielle Fertigung fรผr einzelne Verwendungszwecke','680',1360,1361,80,0,1),
-(718,2,'681','Prรคzisionsinstrumente und andere Gerรคte','681',1362,1363,80,0,1),
-(719,2,'682','Schmiedehandwerk','682',1364,1365,80,0,1),
-(720,2,'683','Eisenwaren, Haushaltsgerรคte','683',1366,1367,80,0,1),
-(721,2,'684','Wohnungseinrichtung, Heimwerkstรคtten','684',1368,1369,80,0,1),
-(722,2,'685','Leder- und Pelzwaren und verwandte Produkte','685',1370,1371,80,0,1),
-(723,2,'686','Drucken und verwandte Tรคtigkeiten','686',1372,1373,80,0,1),
-(724,2,'687','Kleidung, Accessoires','687',1374,1375,80,0,1),
-(725,2,'688','Andere Endprodukte, Verpackungstechnik','688',1376,1377,80,0,1),
-(726,2,'690','Hausbau, Bauhandwerk','690',1380,1381,81,0,1),
-(727,2,'691','Baustoffe','691',1382,1383,81,0,1),
-(728,2,'692','Bauhilfstechniken','692',1384,1385,81,0,1),
-(729,2,'693','Einzelne Baustoffarten und Zwecke','693',1386,1387,81,0,1),
-(730,2,'694','Holzbau, Zimmerhandwerk','694',1388,1389,81,0,1),
-(731,2,'695','Dachdeckung','695',1390,1391,81,0,1),
-(732,2,'696','Versorgungseinrichtungen','696',1392,1393,81,0,1),
-(733,2,'697','Heizungs-, Lรผftungs-, Klimatechnik','697',1394,1395,81,0,1),
-(734,2,'698','Ausbau','698',1396,1397,81,0,1),
-(735,2,'700','Kรผnste, Bildende und angewandte Kunst','700',1402,1403,82,0,1),
-(736,2,'701','Kunstphilosophie, Kunsttheorie der bildenden und angewandten Kunst','701',1404,1405,82,0,1),
-(737,2,'702','Verschiedenes zur bildenden und angewandten Kunst','702',1406,1407,82,0,1),
-(738,2,'703','Wรถrterbรผcher, Enzyklopรคdien zur bildenden und angewandten Kunst','703',1408,1409,82,0,1),
-(739,2,'704','Spezielle Themen zur bildenden und angewandten Kunst','704',1410,1411,82,0,1),
-(740,2,'705','Fortlaufende Sammelwerke zur bildenden und angewandten Kunst','705',1412,1413,82,0,1),
-(741,2,'706','Organisationen, Management der bildenden und angewandten Kunst','706',1414,1415,82,0,1),
-(742,2,'707','Ausbildung, Forschung, verwandte Themen zur bildenden und angewandten Kunst','707',1416,1417,82,0,1),
-(743,2,'708','Galerien, Museen, Privatsammlungen zur bildenden und angewandten Kunst','708',1418,1419,82,0,1),
-(744,2,'709','Histor., geogr., personenbezogene Behandlung der bildenden und angewandten Kunst','709',1420,1421,82,0,1),
-(745,2,'710','Stรคdtebau, Raumplanung, Landschaftsgestaltung','710',1424,1425,83,0,1),
-(746,2,'711','Raumplanung','711',1426,1427,83,0,1),
-(747,2,'712','Landschaftsgestaltung','712',1428,1429,83,0,1),
-(748,2,'713','Landschaftsgestaltung von Verkehrswegen','713',1430,1431,83,0,1),
-(749,2,'714','Wasser als Gestaltungselement','714',1432,1433,83,0,1),
-(750,2,'715','Gehรถlze als Gestaltungselemente','715',1434,1435,83,0,1),
-(751,2,'716','Krautige Pflanzen als Gestaltungselemente','716',1436,1437,83,0,1),
-(752,2,'717','Andere Gestaltungselemente','717',1438,1439,83,0,1),
-(753,2,'718','Landschaftsgestaltung von Friedhรถfen','718',1440,1441,83,0,1),
-(754,2,'719','Naturlandschaften','719',1442,1443,83,0,1),
-(755,2,'720','Architektur','720',1446,1447,84,0,1),
-(756,2,'721','Architektonische Struktur','721',1448,1449,84,0,1),
-(757,2,'722','Architektur bis ca. 300','722',1450,1451,84,0,1),
-(758,2,'723','Architektur von ca. 300 bis 1399','723',1452,1453,84,0,1),
-(759,2,'724','Architektur ab 1400','724',1454,1455,84,0,1),
-(760,2,'725','รffentliche Bauwerke','725',1456,1457,84,0,1),
-(761,2,'726','Gebรคude fรผr religiรถse und verwandte Zwecke','726',1458,1459,84,0,1),
-(762,2,'727','Gebรคude fรผr Lehr- und Forschungszwecke','727',1460,1461,84,0,1),
-(763,2,'728','Wohnbauten und verwandte Gebรคude','728',1462,1463,84,0,1),
-(764,2,'729','Entwurf und Gestaltung, Innenarchitektur','729',1464,1465,84,0,1),
-(765,2,'730','Plastische Kรผnste, Bildhauerkunst','730',1468,1469,85,0,1),
-(766,2,'731','Verfahren, Formen und Motive in der Bildhauerkunst','731',1470,1471,85,0,1),
-(767,2,'732','Bildhauerei bis ca. 500','732',1472,1473,85,0,1),
-(768,2,'733','Griechische, etruskische, rรถmische Bildhauerkunst','733',1474,1475,85,0,1),
-(769,2,'734','Bildhauerkunst von ca. 500 bis 1399','734',1476,1477,85,0,1),
-(770,2,'735','Bildhauerkunst ab 1400','735',1478,1479,85,0,1),
-(771,2,'736','Schnitzen, Schnitzereien','736',1480,1481,85,0,1),
-(772,2,'737','Numismatik, Siegelkunde','737',1482,1483,85,0,1),
-(773,2,'738','Keramikkunst','738',1484,1485,85,0,1),
-(774,2,'739','Metallkunst','739',1486,1487,85,0,1),
-(775,2,'740','Zeichnung, angewandte Kunst','740',1490,1491,86,1,1),
-(776,2,'741','Zeichnung, Zeichnungen','741',1492,1493,86,0,1),
-(777,2,'742','Perspektive','742',1496,1497,86,0,1),
-(778,2,'743','Zeichnung und Zeichnungen nach Motiv','743',1498,1499,86,0,1),
-(779,2,'745','Angewandte Kunst','745',1500,1501,86,0,1),
-(780,2,'746','Textilkunst','746',1502,1503,86,0,1),
-(781,2,'747','Innendekoration','747',1504,1505,86,0,1),
-(782,2,'748','Glas','748',1506,1507,86,0,1),
-(783,2,'749','Mรถbel, Mรถbelzubehรถr','749',1508,1509,86,0,1),
-(784,2,'750','Malerei, Gemรคlde','750',1512,1513,87,0,1),
-(785,2,'751','Techniken, Ausstattung, Materialien, Formen','751',1514,1515,87,0,1),
-(786,2,'752','Farbe','752',1516,1517,87,0,1),
-(787,2,'753','Symbolik, Allegorie, Mythologie, Legende','753',1518,1519,87,0,1),
-(788,2,'754','Genremalerei','754',1520,1521,87,0,1),
-(789,2,'755','Religion','755',1522,1523,87,0,1),
-(790,2,'757','Menschliche Figuren','757',1524,1525,87,0,1),
-(791,2,'758','Andere Motive','758',1526,1527,87,0,1),
-(792,2,'759','Histor., geogr., personenbezogene Behandlung','759',1528,1529,87,0,1),
-(793,2,'760','Grafik, Druckgrafik, Drucke','760',1532,1533,88,0,1),
-(794,2,'761','Hochdruckverfahren (Blockdruck)','761',1534,1535,88,0,1),
-(795,2,'763','Lithografische Druckverfahren','763',1536,1537,88,0,1),
-(796,2,'764','Farblithografie, Serigrafie','764',1538,1539,88,0,1),
-(797,2,'765','Metallgravur','765',1540,1541,88,0,1),
-(798,2,'766','Mezzotinto, Aquatinta und verwandte Techniken','766',1542,1543,88,0,1),
-(799,2,'767','Radierung, Kaltnadelarbeit','767',1544,1545,88,0,1),
-(800,2,'769','Drucke','769',1546,1547,88,0,1),
-(801,2,'770','Fotografie, Fotografien, Computerkunst','770',1550,1551,89,0,1),
-(802,2,'771','Techniken, Ausstattung, Materialien','771',1552,1553,89,0,1),
-(803,2,'772','Entwicklungsverfahren mit Metallsalzen','772',1554,1555,89,0,1),
-(804,2,'773','Pigmentdruckverfahren','773',1556,1557,89,0,1),
-(805,2,'774','Holografie','774',1558,1559,89,0,1),
-(806,2,'775','Digitale Fotografie','775',1560,1561,89,0,1),
-(807,2,'776','Computerkunst (Digitale Kunst)','776',1562,1563,89,0,1),
-(808,2,'778','Bereiche und Arten der Fotografie','778',1564,1565,89,0,1),
-(809,2,'779','Fotografien','779',1566,1567,89,0,1),
-(810,2,'780','Musik','780',1570,1571,90,0,1),
-(811,2,'781','Allgemeine Prinzipien, musikalische Formen','781',1572,1573,90,0,1),
-(812,2,'782','Vokalmusik','782',1574,1575,90,0,1),
-(813,2,'783','Musik fรผr Einzelstimmen, die Stimme','783',1576,1577,90,0,1),
-(814,2,'784','Instrumente, Instrumentalensembles','784',1578,1579,90,0,1),
-(815,2,'785','Ensembles mit einem Instrument pro Stimme','785',1580,1581,90,0,1),
-(816,2,'786','Tasteninstrumente, andere Instrumente','786',1582,1583,90,0,1),
-(817,2,'787','Saiteninstrumente','787',1584,1585,90,0,1),
-(818,2,'788','Blasinstrumente','788',1586,1587,90,0,1),
-(819,2,'789','(Optionale Notation)','789',1588,1589,90,0,1),
-(820,2,'790','Freizeitgestaltung, darstellende Kรผnste, Sport','790',1592,1593,91,1,1),
-(821,2,'791','รffentliche Darbietungen, Film, Rundfunk','791',1594,1595,91,1,1),
-(822,2,'792','Bรผhnenkunst','792',1596,1597,91,1,1),
-(823,2,'793','Spiele und Freizeitaktivitรคten fรผr drinnen','793',1598,1599,91,1,1),
-(824,2,'794','Unterhaltungsspiele fรผr drinnen','794',1600,1601,91,0,1),
-(825,2,'795','Glรผcksspiele','795',1602,1603,91,0,1),
-(826,2,'796','Sportarten, Sportspiele','796',1604,1605,91,1,1),
-(827,2,'797','Wasser- und Luftsport','797',1606,1607,91,0,1),
-(828,2,'798','Pferdesport, Tierrennen','798',1608,1609,91,0,1),
-(829,2,'799','Fischfang, Jagd, Schieรen','799',1610,1611,91,0,1),
-(830,2,'800','Literatur und Rhetorik','800',1616,1617,92,0,1),
-(831,2,'801','Literaturtheorie','801',1618,1619,92,0,1),
-(832,2,'802','Verschiedenes','802',1620,1621,92,0,1),
-(833,2,'803','Wรถrterbรผcher, Enzyklopรคdien','803',1622,1623,92,0,1),
-(834,2,'805','Fortlaufende Sammelwerke','805',1624,1625,92,0,1),
-(835,2,'806','Organisationen, Management','806',1626,1627,92,0,1),
-(836,2,'807','Ausbildung, Forschung, verwandte Themen','807',1628,1629,92,0,1),
-(837,2,'808','Rhetorik, Sammlungen von Literatur','808',1630,1631,92,0,1),
-(838,2,'809','Geschichte, Darstellung, Literaturwissenschaft und โk ritik','809',1632,1633,92,0,1),
-(839,2,'810','Amerikanische Literatur in in Englisch','810',1636,1637,93,0,1),
-(840,2,'811','Amerikanische Versdichtung','811',1638,1639,93,0,1),
-(841,2,'812','Amerikanische Dramen','812',1640,1641,93,0,1),
-(842,2,'813','Amerikanische Erzรคhlprosa','813',1642,1643,93,0,1),
-(843,2,'814','Amerikanische Essays','814',1644,1645,93,0,1),
-(844,2,'815','Amerikanische Reden','815',1646,1647,93,0,1),
-(845,2,'816','Amerikanische Briefe','816',1648,1649,93,0,1),
-(846,2,'817','Amerikanischer Humor, amerikanische Satire','817',1650,1651,93,0,1),
-(847,2,'818','Amerikanische vermischte Schriften','818',1652,1653,93,0,1),
-(848,2,'819','(Optionale Notation)','819',1654,1655,93,0,1),
-(849,2,'820','Englische, altenglische Literaturen','820',1658,1659,94,0,1),
-(850,2,'821','Englische Versdichtung','821',1660,1661,94,0,1),
-(851,2,'822','Englische Dramen','822',1662,1663,94,0,1),
-(852,2,'823','Englische Erzรคhlprosa','823',1664,1665,94,0,1),
-(853,2,'824','Englische Essays','824',1666,1667,94,0,1),
-(854,2,'825','Englische Reden','825',1668,1669,94,0,1),
-(855,2,'826','Englische Briefe','826',1670,1671,94,0,1),
-(856,2,'827','Englischer Humor, englische Satire','827',1672,1673,94,0,1),
-(857,2,'828','Englische vermischte Schriften','828',1674,1675,94,0,1),
-(858,2,'829','Altenglische (Angelsรคchsische) Literatur','829',1676,1677,94,0,1),
-(859,2,'830','Literaturen germanischer Sprachen, Deutsche Literatur','830',1680,1681,95,1,1),
-(860,2,'831','Deutsche Versdichtung','831',1682,1683,95,0,1),
-(861,2,'832','Deutsche Dramen','832',1684,1685,95,0,1),
-(862,2,'833','Deutsche Erzรคhlprosa','833',1686,1687,95,0,1),
-(863,2,'834','Deutsche Essays','834',1688,1689,95,0,1),
-(864,2,'835','Deutsche Reden','835',1690,1691,95,0,1),
-(865,2,'836','Deutsche Briefe','836',1692,1693,95,0,1),
-(866,2,'837','Deutscher Humor, deutsche Satire','837',1694,1695,95,0,1),
-(867,2,'838','Deutsche vermischte Schriften','838',1696,1697,95,0,1),
-(868,2,'839','Andere germanische Literaturen','839',1698,1699,95,1,1),
-(869,2,'840','Literaturen romanischer Sprachen, Franzรถsische Literatur','840',1702,1703,96,0,1),
-(870,2,'841','Franzรถsische Versdichtung','841',1704,1705,96,0,1),
-(871,2,'842','Franzรถsische Dramen','842',1706,1707,96,0,1),
-(872,2,'843','Franzรถsische Erzรคhlprosa','843',1708,1709,96,0,1),
-(873,2,'844','Franzรถsische Essays','844',1710,1711,96,0,1),
-(874,2,'845','Franzรถsische Reden','845',1712,1713,96,0,1),
-(875,2,'846','Franzรถsische Briefe','846',1714,1715,96,0,1),
-(876,2,'847','Franzรถsischer Humor, franzรถsische Satire','847',1716,1717,96,0,1),
-(877,2,'848','Franzรถsische vermischte Schriften','848',1718,1719,96,0,1),
-(878,2,'849','Okzitanische, katalanische Literaturen','849',1720,1721,96,0,1),
-(879,2,'850','Italienische, rumรคnische, rรคtoromanische Literaturen','850',1724,1725,97,0,1),
-(880,2,'851','Italienische Versdichtung','851',1726,1727,97,0,1),
-(881,2,'852','Italienische Dramen','852',1728,1729,97,0,1),
-(882,2,'853','Italienische Erzรคhlprosa','853',1730,1731,97,0,1),
-(883,2,'854','Italienische Essays','854',1732,1733,97,0,1),
-(884,2,'855','Italienische Reden','855',1734,1735,97,0,1),
-(885,2,'856','Italienische Briefe','856',1736,1737,97,0,1),
-(886,2,'857','Italienischer Humor, italienische Satire','857',1738,1739,97,0,1),
-(887,2,'858','Italienische vermischte Schriften','858',1740,1741,97,0,1),
-(888,2,'859','Rumรคnische, rรคtoromanische Literaturen','859',1742,1743,97,0,1),
-(889,2,'860','Spanische, portugiesische Literaturen','860',1746,1747,98,0,1),
-(890,2,'861','Spanische Versdichtung','861',1748,1749,98,0,1),
-(891,2,'862','Spanische Dramen','862',1750,1751,98,0,1),
-(892,2,'863','Spanische Erzรคhlprosa','863',1752,1753,98,0,1),
-(893,2,'864','Spanische Essays','864',1754,1755,98,0,1),
-(894,2,'865','Spanische Reden','865',1756,1757,98,0,1),
-(895,2,'866','Spanische Briefe','866',1758,1759,98,0,1),
-(896,2,'867','Spanischer Humor, spanische Satire','867',1760,1761,98,0,1),
-(897,2,'868','Spanische vermischte Schriften','868',1762,1763,98,0,1),
-(898,2,'869','Portugiesische Literatur','869',1764,1765,98,0,1),
-(899,2,'870','Italische Literaturen, Lateinische Literatur','870',1768,1769,99,0,1),
-(900,2,'871','Lateinische Versdichtung','871',1770,1771,99,0,1),
-(901,2,'872','Lateinische dramatische Versdichtung, Dramen','872',1772,1773,99,0,1),
-(902,2,'873','Lateinische erzรคhlende Versdichtung, Erzรคhlprosa','873',1774,1775,99,0,1),
-(903,2,'874','Lateinische lyrische Versdichtung','874',1776,1777,99,0,1),
-(904,2,'875','Lateinische Reden','875',1778,1779,99,0,1),
-(905,2,'876','Lateinische Briefe','876',1780,1781,99,0,1),
-(906,2,'877','Lateinischer Humor, lateinische Satire','877',1782,1783,99,0,1),
-(907,2,'878','Lateinische vermischte Schriften','878',1784,1785,99,0,1),
-(908,2,'879','Literaturen anderer italischer Sprachen','879',1786,1787,99,0,1),
-(909,2,'880','Hellenische Literaturen, Klassische griechische Literatur','880',1790,1791,100,0,1),
-(910,2,'881','Klassische griechische Versdichtung','881',1792,1793,100,0,1),
-(911,2,'882','Klassische griechische dramatische Versdichtung, Dramen','882',1794,1795,100,0,1),
-(912,2,'883','Klassische griechische erzรคhlende Versdichtung, Erzรคhlprosa','883',1796,1797,100,0,1),
-(913,2,'884','Klassische griechische lyrische Versdichtung','884',1798,1799,100,0,1),
-(914,2,'885','Klassische griechische Reden','885',1800,1801,100,0,1),
-(915,2,'886','Klassische griechische Briefe','886',1802,1803,100,0,1),
-(916,2,'887','Humor und Satire in klassischem Griechisch','887',1804,1805,100,0,1),
-(917,2,'888','Klassische griechische vermischte Schriften','888',1806,1807,100,0,1),
-(918,2,'889','Neugriechische Literatur','889',1808,1809,100,0,1),
-(919,2,'890','Literaturen anderer Sprachen','890',1812,1813,101,0,1),
-(920,2,'891','Ostindoeuropรคische, keltische Literaturen','891',1814,1815,101,0,1),
-(921,2,'892','Afroasiatische Literaturen, Semitische Literaturen','892',1816,1817,101,0,1),
-(922,2,'893','Nichtsemitische afroasiatische Literaturen','893',1818,1819,101,0,1),
-(923,2,'894','Altaische, uralische, palรคosibirische, drawidische Literaturen','894',1820,1821,101,0,1),
-(924,2,'895','Ost- und sรผdostasiatische Literaturen','895',1822,1823,101,0,1),
-(925,2,'896','Afrikanische Literaturen','896',1824,1825,101,0,1),
-(926,2,'897','Literaturen nordamerikanischer Indianersprachen','897',1826,1827,101,0,1),
-(927,2,'898','Literaturen sรผdamerikanischer Indianersprachen','898',1828,1829,101,0,1),
-(928,2,'899','Austronesische und andere Literaturen','899',1830,1831,101,0,1),
-(929,2,'900','Geschichte und Geografie','900',1836,1837,102,0,1),
-(930,2,'901','Geschichtsphilosophie, Geschichtstheorie','901',1838,1839,102,0,1),
-(931,2,'902','Verschiedenes','902',1840,1841,102,0,1),
-(932,2,'903','Wรถrterbรผcher, Enzyklopรคdien','903',1842,1843,102,0,1),
-(933,2,'904','Allgemeine Darstellungen von Ereignissen','904',1844,1845,102,0,1),
-(934,2,'905','Fortlaufende Sammelwerke','905',1846,1847,102,0,1),
-(935,2,'906','Organisationen, Management','906',1848,1849,102,0,1),
-(936,2,'907','Ausbildung, Forschung, verwandte Themen','907',1850,1851,102,0,1),
-(937,2,'908','Behandlung nach Personengruppen','908',1852,1853,102,0,1),
-(938,2,'909','Weltgeschichte','909',1854,1855,102,0,1),
-(939,2,'910','Geografie, Reisen','910',1858,1859,103,1,1),
-(940,2,'911','Historische Geografie','911',1860,1861,103,0,1),
-(941,2,'912','Atlanten, Karten, Grafiken, Plรคne','912',1862,1863,103,0,1),
-(942,2,'913','Geografie der und Reisen in der Alten Welt','913',1864,1865,103,0,1),
-(943,2,'914','Geografie Europas und Reisen in Europa','914',1866,1867,103,0,1),
-(944,2,'915','Geografie Asiens und Reisen in Asien','915',1870,1871,103,0,1),
-(945,2,'916','Geografie Afrikas und Reisen in Afrika','916',1872,1873,103,0,1),
-(946,2,'917','Geografie Nordamerikas und Reisen in Nordamerika','917',1874,1875,103,0,1),
-(947,2,'918','Geografie Sรผdamerikas und Reisen in Sรผdamerika','918',1876,1877,103,0,1),
-(948,2,'919','Geografie anderer Gebiete und Reisen in anderen Gebieten','919',1878,1879,103,0,1),
-(949,2,'920','Biografien, Genealogie, Insignien','920',1882,1883,104,0,1),
-(950,2,'921','(Optionale Notation)','921',1884,1885,104,0,1),
-(951,2,'922','(Optionale Notation)','922',1886,1887,104,0,1),
-(952,2,'923','(Optionale Notation)','923',1888,1889,104,0,1),
-(953,2,'924','(Optionale Notation)','924',1890,1891,104,0,1),
-(954,2,'925','(Optionale Notation)','925',1892,1893,104,0,1),
-(955,2,'926','(Optionale Notation)','926',1894,1895,104,0,1),
-(956,2,'927','(Optionale Notation)','927',1896,1897,104,0,1),
-(957,2,'928','(Optionale Notation)','928',1898,1899,104,0,1),
-(958,2,'929','Genealogie, Namenkunde, Insignien','929',1900,1901,104,0,1),
-(959,2,'930','Geschichte des Altertums bis ca. 499, Archรคologie','930',1904,1905,105,0,1),
-(960,2,'931','Geschichte Chinas bis 420','931',1906,1907,105,0,1),
-(961,2,'932','Geschichte รgyptens bis 640','932',1908,1909,105,0,1),
-(962,2,'933','Geschichte Palรคstinas bis 70','933',1910,1911,105,0,1),
-(963,2,'934','Geschichte Indiens bis 647','934',1912,1913,105,0,1),
-(964,2,'935','Geschichte Mesopotamiens und der iranischen Hochebene bis 637','935',1914,1915,105,0,1),
-(965,2,'936','Geschichte Europas nรถrdlich und westlich von Italien bis ca. 499','936',1916,1917,105,0,1),
-(966,2,'937','Geschichte Italiens und benachbarter Gebiete bis 476','937',1918,1919,105,0,1),
-(967,2,'938','Geschichte Griechenlands bis 323','938',1920,1921,105,0,1),
-(968,2,'939','Geschichte anderer Teile der Welt bis ca. 640','939',1922,1923,105,0,1),
-(969,2,'940','Geschichte Europas','940',1926,1927,106,1,1),
-(970,2,'941','Geschichte der Britischen Inseln','941',1928,1929,106,0,1),
-(971,2,'942','Geschichte Englands und Wales','942',1930,1931,106,0,1),
-(972,2,'943','Geschichte Mitteleuropas, Deutschlands','943',1932,1933,106,1,1),
-(973,2,'944','Geschichte Frankreichs und Monacos','944',1934,1935,106,0,1),
-(974,2,'945','Geschichte der italienische Halbinsel und benachbarter Inseln','945',1936,1937,106,0,1),
-(975,2,'946','Geschichte der iberischen Halbinsel und benachbarter Inseln','946',1938,1939,106,0,1),
-(976,2,'947','Geschichte Osteuropas, Russlands','947',1940,1941,106,0,1),
-(977,2,'948','Geschichte Skandinaviens','948',1942,1943,106,0,1),
-(978,2,'949','Geschichte anderer Teile Europas','949',1944,1945,106,0,1),
-(979,2,'950','Geschichte Asiens, des Fernen Ostens','950',1948,1949,107,0,1),
-(980,2,'951','Geschichte Chinas und benachbarter Gebiete','951',1950,1951,107,0,1),
-(981,2,'952','Geschichte Japans','952',1952,1953,107,0,1),
-(982,2,'953','Geschichte der arabischen Halbinsel und benachbarter Gebiete','953',1954,1955,107,0,1),
-(983,2,'954','Geschichte Sรผdasiens, Indiens','954',1956,1957,107,0,1),
-(984,2,'955','Geschichte Irans','955',1958,1959,107,0,1),
-(985,2,'956','Geschichte des Nahen Ostens (Mittleren Ostens)','956',1960,1961,107,0,1),
-(986,2,'957','Geschichte Sibiriens (der Asiatischen Russlands)','957',1962,1963,107,0,1),
-(987,2,'958','Geschichte Zentralasiens','958',1964,1965,107,0,1),
-(988,2,'959','Geschichte Sรผdostasiens','959',1966,1967,107,0,1),
-(989,2,'960','Geschichte Afrikas','960',1970,1971,108,0,1),
-(990,2,'961','Geschichte Tunesiens und Libyens','961',1972,1973,108,0,1),
-(991,2,'962','Geschichte รgyptens und Sudans','962',1974,1975,108,0,1),
-(992,2,'963','Geschichte รthiopiens und Eritreas','963',1976,1977,108,0,1),
-(993,2,'964','Geschichte der nordwestafrikanischen Kรผste und vorgelagerter Inseln','964',1978,1979,108,0,1),
-(994,2,'965','Geschichte Algeriens','965',1980,1981,108,0,1),
-(995,2,'966','Geschichte Westafrikas und vorgelagerter Inseln','966',1982,1983,108,0,1),
-(996,2,'967','Geschichte Zentralafrikas und vorgelagerter Inseln','967',1984,1985,108,0,1),
-(997,2,'968','Geschichte Sรผdafrikas, der Republik Sรผdafrika','968',1986,1987,108,0,1),
-(998,2,'969','Geschichte der Inseln im sรผdlichen Indischen Ozean','969',1988,1989,108,0,1),
-(999,2,'970','Geschichte Nordamerikas','970',1992,1993,109,0,1),
-(1000,2,'971','Geschichte Kanadas','971',1994,1995,109,0,1),
-(1001,2,'972','Geschichte Mittelamerikas, Mexikos','972',1996,1997,109,0,1),
-(1002,2,'973','Geschichte der USA','973',1998,1999,109,0,1),
-(1003,2,'974','Geschichte der nordรถstlichen Staaten der USA','974',2000,2001,109,0,1),
-(1004,2,'975','Geschichte der sรผdรถstlichen Staaten der USA','975',2002,2003,109,0,1),
-(1005,2,'976','Geschichte der sรผdlichen zentralen Staaten der USA','976',2004,2005,109,0,1),
-(1006,2,'977','Geschichte der nรถrdlichen zentralen Staaten der USA','977',2006,2007,109,0,1),
-(1007,2,'978','Geschichte der westlichen Staaten der USA','978',2008,2009,109,0,1),
-(1008,2,'979','Geschichte der Staaten des Groรen Beckens und der pazifischen Gebirgsketten','979',2010,2011,109,0,1),
-(1009,2,'980','Geschichte Sรผdamerikas','980',2014,2015,110,0,1),
-(1010,2,'981','Geschichte Brasiliens','981',2016,2017,110,0,1),
-(1011,2,'982','Geschichte Argentiniens','982',2018,2019,110,0,1),
-(1012,2,'983','Geschichte Chiles','983',2020,2021,110,0,1),
-(1013,2,'984','Geschichte Boliviens','984',2022,2023,110,0,1),
-(1014,2,'985','Geschichte Perus','985',2024,2025,110,0,1),
-(1015,2,'986','Geschichte Kolumbiens und Ecuadors','986',2026,2027,110,0,1),
-(1016,2,'987','Geschichte Venezuelas','987',2028,2029,110,0,1),
-(1017,2,'988','Geschichte Guayanas','988',2030,2031,110,0,1),
-(1018,2,'989','Geschichte Paraguays und Uruguays','989',2032,2033,110,0,1),
-(1019,2,'990','Geschichte anderer Gebiete','990',2036,2037,111,0,1),
-(1020,2,'993','Geschichte Neuseelands','993',2038,2039,111,0,1),
-(1021,2,'994','Geschichte Australiens','994',2040,2041,111,0,1),
-(1022,2,'995','Geschichte Melanesiens, Neuguineas','995',2042,2043,111,0,1),
-(1023,2,'996','Geschichte anderer Teile des Pazifischen Ozeans, Polynesiens','996',2044,2045,111,0,1),
-(1024,2,'997','Geschichte der atlantischen Inseln','997',2046,2047,111,0,1),
-(1025,2,'998','Geschichte der arktischen Inseln und der Antarktis','998',2048,2049,111,0,1),
-(1026,2,'999','Geschichte der auรerirdischen Welten','999',2050,2051,111,0,1),
-(1027,2,'741.5','Comics, Cartoons, Karikaturen','741.5',1494,1495,86,1,1),
-(1028,2,'914.3','Landeskunde Deutschlands','914.3',1868,1869,103,1,1);
-
-
-
diff --git a/database/migrations/dataset_6_collection_roles.ts b/database/migrations/dataset_6_collection_roles.ts
index 1491d9a..73f83e8 100644
--- a/database/migrations/dataset_6_collection_roles.ts
+++ b/database/migrations/dataset_6_collection_roles.ts
@@ -32,21 +32,3 @@ export default class CollectionsRoles extends BaseSchema {
// visible_oai boolean NOT NULL DEFAULT true,
// CONSTRAINT collections_roles_pkey PRIMARY KEY (id)
// )
-
-// change to normal intzeger:
-// ALTER TABLE collections_roles ALTER COLUMN id DROP DEFAULT;
-// DROP SEQUENCE IF EXISTS collections_roles_id_seq;
-
-// -- Step 1: Temporarily change one ID to a value not currently used
-// UPDATE collections_roles SET id = 99 WHERE name = 'ccs';
-
-// -- Step 2: Change 'ddc' ID to 2 (the old 'ccs' ID)
-// UPDATE collections_roles SET id = 2 WHERE name = 'ddc';
-
-// -- Step 3: Change the temporary ID (99) to 3 (the old 'ddc' ID)
-// UPDATE collections_roles SET id = 3 WHERE name = 'ccs';
-
-// UPDATE collections_roles SET id = 99 WHERE name = 'bk';
-// UPDATE collections_roles SET id = 1 WHERE name = 'institutes';
-// UPDATE collections_roles SET id = 4 WHERE name = 'pacs';
-// UPDATE collections_roles SET id = 7 WHERE name = 'bk';
\ No newline at end of file
diff --git a/database/migrations/dataset_7_collections.ts b/database/migrations/dataset_7_collections.ts
index b942111..1e970c5 100644
--- a/database/migrations/dataset_7_collections.ts
+++ b/database/migrations/dataset_7_collections.ts
@@ -25,8 +25,6 @@ export default class Collections extends BaseSchema {
.onUpdate('CASCADE');
table.boolean('visible').notNullable().defaultTo(true);
table.boolean('visible_publish').notNullable().defaultTo(true);
- table.integer('left_id').unsigned();
- table.integer('right_id').unsigned();
});
}
@@ -61,26 +59,3 @@ export default class Collections extends BaseSchema {
// change to normal intzeger:
// ALTER TABLE collections ALTER COLUMN id DROP DEFAULT;
// DROP SEQUENCE IF EXISTS collections_id_seq;
-
-
-// ALTER TABLE collections
-// ADD COLUMN left_id INTEGER;
-// COMMENT ON COLUMN collections.left_id IS 'comment';
-// ALTER TABLE collections
-// ADD COLUMN right_id INTEGER;
-// COMMENT ON COLUMN collections.right_id IS 'comment';
-
-// -- Step 1: Drop the existing default
-// ALTER TABLE collections
-// ALTER COLUMN visible DROP DEFAULT,
-// ALTER COLUMN visible_publish DROP DEFAULT;
-
-// -- Step 2: Change column types with proper casting
-// ALTER TABLE collections
-// ALTER COLUMN visible TYPE smallint USING CASE WHEN visible THEN 1 ELSE 0 END,
-// ALTER COLUMN visible_publish TYPE smallint USING CASE WHEN visible_publish THEN 1 ELSE 0 END;
-
-// -- Step 3: Set new defaults as smallint
-// ALTER TABLE collections
-// ALTER COLUMN visible SET DEFAULT 1,
-// ALTER COLUMN visible_publish SET DEFAULT 1;
\ No newline at end of file
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index 10d0f37..8ef61c7 100644
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -1,74 +1,47 @@
#!/bin/bash
+
+# # Run freshclam to update virus definitions
+# freshclam
+
+# # Sleep for a few seconds to give ClamAV time to start
+# sleep 5
+
+# # Start the ClamAV daemon
+# /etc/init.d/clamav-daemon start
+
+# bootstrap clam av service and clam av database updater
set -m
-echo "Starting ClamAV services..."
+function process_file() {
+ if [[ ! -z "$1" ]]; then
+ local SETTING_LIST=$(echo "$1" | tr ',' '\n' | grep "^[A-Za-z][A-Za-z]*=.*$")
+ local SETTING
+
+ for SETTING in ${SETTING_LIST}; do
+ # Remove any existing copies of this setting. We do this here so that
+ # settings with multiple values (e.g. ExtraDatabase) can still be added
+ # multiple times below
+ local KEY=${SETTING%%=*}
+ sed -i $2 -e "/^${KEY} /d"
+ done
+ for SETTING in ${SETTING_LIST}; do
+ # Split on first '='
+ local KEY=${SETTING%%=*}
+ local VALUE=${SETTING#*=}
+ echo "${KEY} ${VALUE}" >> "$2"
+ done
+ fi
+}
-# Try to download database if missing
-# if [ ! "$(ls -A /var/lib/clamav 2>/dev/null)" ]; then
-# echo "Downloading ClamAV database (this may take a while)..."
-
-# # Simple freshclam run without complex config
-# if freshclam --datadir=/var/lib/clamav --quiet; then
-# echo "โ Database downloaded successfully"
-# else
-# echo "โ Database download failed - creating minimal setup"
-# # Create a dummy file so clamd doesn't immediately fail
-# touch /var/lib/clamav/.dummy
-# fi
-# fi
-
-# Start freshclam daemon for automatic updates
-echo "Starting freshclam daemon for automatic updates..."
-# sg clamav -c "freshclam -d" &
-# Added --daemon-notify to freshclam - This notifies clamd when the database updates
-freshclam -d --daemon-notify=/etc/clamav/clamd.conf &
-#freshclam -d &
+# process_file "${CLAMD_SETTINGS_CSV}" /etc/clamav/clamd.conf
+# process_file "${FRESHCLAM_SETTINGS_CSV}" /etc/clamav/freshclam.conf
+# start in background
+freshclam -d &
# /etc/init.d/clamav-freshclam start &
-# Start clamd in background
-# Start clamd in foreground (so dumb-init can supervise it)
+clamd
# /etc/init.d/clamav-daemon start &
-# Give freshclam a moment to start
-sleep 2
-
-# Start clamd daemon in background using sg
-echo "Starting ClamAV daemon..."
-# sg clamav -c "clamd" &
-# Use sg to run clamd with proper group permissions
-# sg clamav -c "clamd" &
-# clamd --config-file=/etc/clamav/clamd.conf &
-clamd &
-
-
-# Give services time to start
-echo "Waiting for services to initialize..."
-sleep 8
-
-# simple check
-if pgrep clamd > /dev/null; then
- echo "โ ClamAV daemon is running"
-else
- echo "โ ClamAV daemon status uncertain, but continuing..."
-fi
-
-# Check if freshclam daemon is running
-if pgrep freshclam > /dev/null; then
- echo "โ Freshclam daemon is running"
-else
- echo "โ Freshclam daemon status uncertain, but continuing..."
-fi
-
-# # Optional: Test socket connectivity
-# if [ -S /var/run/clamav/clamd.socket ]; then
-# echo "โ ClamAV socket exists"
-# else
-# echo "โ WARNING: ClamAV socket not found - services may still be starting"
-# fi
-
-# # change back to CMD of dockerfile
-echo "โ ClamAV setup complete"
-echo "Starting main application..."
-# exec dumb-init -- "$@"
+# change back to CMD of dockerfile
exec "$@"
\ No newline at end of file
diff --git a/docs/commands/index-datasets.md b/docs/commands/index-datasets.md
deleted file mode 100644
index baecfe6..0000000
--- a/docs/commands/index-datasets.md
+++ /dev/null
@@ -1,278 +0,0 @@
-# Dataset Indexing Command
-
-AdonisJS Ace command for indexing and synchronizing published datasets with OpenSearch for search functionality.
-
-## Overview
-
-The `index:datasets` command processes published datasets and creates/updates corresponding search index documents in OpenSearch. It intelligently compares modification timestamps to only re-index datasets when necessary, optimizing performance while maintaining search index accuracy.
-
-## Command Syntax
-
-```bash
-node ace index:datasets [options]
-```
-
-## Options
-
-| Flag | Alias | Description |
-|------|-------|-------------|
-| `--publish_id ` | `-p` | Index a specific dataset by publish_id |
-
-## Usage Examples
-
-### Basic Operations
-
-```bash
-# Index all published datasets that have been modified since last indexing
-node ace index:datasets
-
-# Index a specific dataset by publish_id
-node ace index:datasets --publish_id 231
-node ace index:datasets -p 231
-```
-
-## How It Works
-
-### 1. **Dataset Selection**
-The command processes datasets that meet these criteria:
-- `server_state = 'published'` - Only published datasets
-- Has preloaded `xmlCache` relationship for metadata transformation
-- Optionally filtered by specific `publish_id`
-
-### 2. **Smart Update Detection**
-For each dataset, the command:
-- Checks if the dataset exists in the OpenSearch index
-- Compares `server_date_modified` timestamps
-- Only re-indexes if the dataset is newer than the indexed version
-
-### 3. **Document Processing**
-The indexing process involves:
-1. **XML Generation**: Creates structured XML from dataset metadata
-2. **XSLT Transformation**: Converts XML to JSON using Saxon-JS processor
-3. **Index Update**: Updates or creates the document in OpenSearch
-4. **Logging**: Records success/failure for each operation
-
-## Index Structure
-
-### Index Configuration
-- **Index Name**: `tethys-records`
-- **Document ID**: Dataset `publish_id`
-- **Refresh**: `true` (immediate availability)
-
-### Document Fields
-The indexed documents contain:
-- **Metadata Fields**: Title, description, authors, keywords
-- **Identifiers**: DOI, publish_id, and other identifiers
-- **Temporal Data**: Publication dates, coverage periods
-- **Geographic Data**: Spatial coverage information
-- **Technical Details**: Data formats, access information
-- **Timestamps**: Creation and modification dates
-
-## Example Output
-
-### Successful Run
-```bash
-node ace index:datasets
-```
-```
-Found 150 published datasets to process
-Dataset with publish_id 231 successfully indexed
-Dataset with publish_id 245 is up to date, skipping indexing
-Dataset with publish_id 267 successfully indexed
-An error occurred while indexing dataset with publish_id 289. Error: Invalid XML metadata
-Processing completed: 148 indexed, 1 skipped, 1 error
-```
-
-### Specific Dataset
-```bash
-node ace index:datasets --publish_id 231
-```
-```
-Found 1 published dataset to process
-Dataset with publish_id 231 successfully indexed
-Processing completed: 1 indexed, 0 skipped, 0 errors
-```
-
-## Update Logic
-
-The command uses intelligent indexing to avoid unnecessary processing:
-
-| Condition | Action | Reason |
-|-----------|--------|--------|
-| Dataset not in index | โ
Index | New dataset needs indexing |
-| Dataset newer than indexed version | โ
Re-index | Dataset has been updated |
-| Dataset same/older than indexed version | โ Skip | Already up to date |
-| OpenSearch document check fails | โ
Index | Better safe than sorry |
-| Invalid XML metadata | โ Skip + Log Error | Cannot process invalid data |
-
-### Timestamp Comparison
-```typescript
-// Example comparison logic
-const existingModified = DateTime.fromMillis(Number(existingDoc.server_date_modified) * 1000);
-const currentModified = dataset.server_date_modified;
-
-if (currentModified <= existingModified) {
- // Skip - already up to date
- return false;
-}
-// Proceed with indexing
-```
-
-## XML Transformation Process
-
-### 1. **XML Generation**
-```xml
-
-
-
-
- Research Dataset Title
- Dataset description...
-
-
-
-```
-
-### 2. **XSLT Processing**
-The command uses Saxon-JS with a compiled stylesheet (`solr.sef.json`) to transform XML to JSON:
-```javascript
-const result = await SaxonJS.transform({
- stylesheetText: proc,
- destination: 'serialized',
- sourceText: xmlString,
-});
-```
-
-### 3. **Final JSON Document**
-```json
-{
- "id": "231",
- "title": "Research Dataset Title",
- "description": "Dataset description...",
- "authors": ["Author Name"],
- "server_date_modified": 1634567890,
- "publish_id": 231
-}
-```
-
-## Configuration Requirements
-
-### Environment Variables
-```bash
-# OpenSearch Configuration
-OPENSEARCH_HOST=localhost:9200
-
-# For production:
-# OPENSEARCH_HOST=your-opensearch-cluster:9200
-```
-
-### Required Files
-- **XSLT Stylesheet**: `public/assets2/solr.sef.json` - Compiled Saxon-JS stylesheet for XML transformation
-
-### Database Relationships
-The command expects these model relationships:
-```typescript
-// Dataset model must have:
-@hasOne(() => XmlCache, { foreignKey: 'dataset_id' })
-public xmlCache: HasOne
-```
-
-## Error Handling
-
-The command handles various error scenarios gracefully:
-
-### Common Errors and Solutions
-
-| Error | Cause | Solution |
-|-------|-------|----------|
-| `XSLT transformation failed` | Invalid XML or missing stylesheet | Check XML structure and stylesheet path |
-| `OpenSearch connection error` | Service unavailable | Verify OpenSearch is running and accessible |
-| `JSON parse error` | Malformed transformation result | Check XSLT stylesheet output format |
-| `Missing xmlCache relationship` | Data integrity issue | Ensure xmlCache exists for dataset |
-
-### Error Logging
-```bash
-# Typical error log entry
-An error occurred while indexing dataset with publish_id 231.
-Error: XSLT transformation failed: Invalid XML structure at line 15
-```
-
-## Performance Considerations
-
-### Batch Processing
-- Processes datasets sequentially to avoid overwhelming OpenSearch
-- Each dataset is committed individually for reliability
-- Failed indexing of one dataset doesn't stop processing others
-
-### Resource Usage
-- **Memory**: XML/JSON transformations require temporary memory
-- **Network**: OpenSearch API calls for each dataset
-- **CPU**: XSLT transformations are CPU-intensive
-
-### Optimization Tips
-```bash
-# Index only recently modified datasets (run regularly)
-node ace index:datasets
-
-# Index specific datasets when needed
-node ace index:datasets --publish_id 231
-
-# Consider running during off-peak hours for large batches
-```
-
-## Integration with Other Systems
-
-### Search Functionality
-The indexed documents power:
-- **Dataset Search**: Full-text search across metadata
-- **Faceted Browsing**: Filter by authors, keywords, dates
-- **Geographic Search**: Spatial query capabilities
-- **Auto-complete**: Suggest dataset titles and keywords
-
-### Related Commands
-- [`update:datacite`](update-datacite.md) - Often run after indexing to sync DOI metadata
-- **Database migrations** - May require re-indexing after schema changes
-
-### API Integration
-The indexed data is consumed by:
-- **Search API**: `/api/search` endpoints
-- **Browse API**: `/api/datasets` with filtering
-- **Recommendations**: Related dataset suggestions
-
-## Monitoring and Maintenance
-
-### Regular Tasks
-```bash
-# Daily indexing (recommended cron job)
-0 2 * * * cd /path/to/project && node ace index:datasets
-
-# Weekly full re-index (if needed)
-0 3 * * 0 cd /path/to/project && node ace index:datasets --force
-```
-
-### Health Checks
-- Monitor OpenSearch cluster health
-- Check for failed indexing operations in logs
-- Verify search functionality is working
-- Compare dataset counts between database and index
-
-### Troubleshooting
-```bash
-# Check specific dataset indexing
-node ace index:datasets --publish_id 231
-
-# Verify OpenSearch connectivity
-curl -X GET "localhost:9200/_cluster/health"
-
-# Check index statistics
-curl -X GET "localhost:9200/tethys-records/_stats"
-```
-
-## Best Practices
-
-1. **Regular Scheduling**: Run the command regularly (daily) to keep the search index current
-2. **Monitor Logs**: Watch for transformation errors or OpenSearch issues
-3. **Backup Strategy**: Include OpenSearch indices in backup procedures
-4. **Resource Management**: Monitor OpenSearch cluster resources during bulk operations
-5. **Testing**: Verify search functionality after major indexing operations
-6. **Coordination**: Run indexing before DataCite updates when both are needed
\ No newline at end of file
diff --git a/docs/commands/update-datacite.md b/docs/commands/update-datacite.md
deleted file mode 100644
index 06041f0..0000000
--- a/docs/commands/update-datacite.md
+++ /dev/null
@@ -1,216 +0,0 @@
-# DataCite Update Command
-
-AdonisJS Ace command for updating DataCite DOI records for published datasets.
-
-## Overview
-
-The `update:datacite` command synchronizes your local dataset metadata with DataCite DOI records. It intelligently compares modification dates to only update records when necessary, reducing unnecessary API calls and maintaining data consistency.
-
-## Command Syntax
-
-```bash
-node ace update:datacite [options]
-```
-
-## Options
-
-| Flag | Alias | Description |
-|------|-------|-------------|
-| `--publish_id ` | `-p` | Update a specific dataset by publish_id |
-| `--force` | `-f` | Force update all records regardless of modification date |
-| `--dry-run` | `-d` | Preview what would be updated without making changes |
-| `--stats` | `-s` | Show detailed statistics for datasets that need updating |
-
-## Usage Examples
-
-### Basic Operations
-
-```bash
-# Update all datasets that have been modified since their DOI was last updated
-node ace update:datacite
-
-# Update a specific dataset
-node ace update:datacite --publish_id 231
-node ace update:datacite -p 231
-
-# Force update all datasets with DOIs (ignores modification dates)
-node ace update:datacite --force
-```
-
-### Preview and Analysis
-
-```bash
-# Preview what would be updated (dry run)
-node ace update:datacite --dry-run
-
-# Show detailed statistics for datasets that need updating
-node ace update:datacite --stats
-
-# Show stats for a specific dataset
-node ace update:datacite --stats --publish_id 231
-```
-
-### Combined Options
-
-```bash
-# Dry run for a specific dataset
-node ace update:datacite --dry-run --publish_id 231
-
-# Show stats for all datasets (including up-to-date ones)
-node ace update:datacite --stats --force
-```
-
-## Command Modes
-
-### 1. **Normal Mode** (Default)
-Updates DataCite records for datasets that have been modified since their DOI was last updated.
-
-**Example Output:**
-```
-Using DataCite API: https://api.test.datacite.org
-Found 50 datasets to process
-Dataset 231: Successfully updated DataCite record
-Dataset 245: Up to date, skipping
-Dataset 267: Successfully updated DataCite record
-DataCite update completed. Updated: 15, Skipped: 35, Errors: 0
-```
-
-### 2. **Dry Run Mode** (`--dry-run`)
-Shows what would be updated without making any changes to DataCite.
-
-**Use Case:** Preview updates before running the actual command.
-
-**Example Output:**
-```
-Dataset 231: Would update DataCite record (dry run)
-Dataset 267: Would update DataCite record (dry run)
-Dataset 245: Up to date, skipping
-DataCite update completed. Updated: 2, Skipped: 1, Errors: 0
-```
-
-### 3. **Stats Mode** (`--stats`)
-Shows detailed information for each dataset that needs updating, including why it needs updating.
-
-**Use Case:** Debug synchronization issues, monitor dataset/DOI status, generate reports.
-
-**Example Output:**
-```
-โโ Dataset 231 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-โ DOI Value: 10.21388/tethys.231
-โ DOI Status (DB): findable
-โ DOI State (DataCite): findable
-โ Dataset Modified: 2024-09-15T10:30:00.000Z
-โ DOI Modified: 2024-09-10T08:15:00.000Z
-โ Needs Update: YES - Dataset newer than DOI
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-
-โโ Dataset 267 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-โ DOI Value: 10.21388/tethys.267
-โ DOI Status (DB): findable
-โ DOI State (DataCite): findable
-โ Dataset Modified: 2024-09-18T14:20:00.000Z
-โ DOI Modified: 2024-09-16T12:45:00.000Z
-โ Needs Update: YES - Dataset newer than DOI
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-
-DataCite Stats Summary: 2 datasets need updating, 48 are up to date
-```
-
-## Update Logic
-
-The command uses intelligent update detection:
-
-1. **Compares modification dates**: Dataset `server_date_modified` vs DOI last modification date from DataCite
-2. **Validates data integrity**: Checks for missing or future dates
-3. **Handles API failures gracefully**: Updates anyway if DataCite info can't be retrieved
-4. **Uses dual API approach**: DataCite REST API (primary) with MDS API fallback
-
-### When Updates Happen
-
-| Condition | Action | Reason |
-|-----------|--------|--------|
-| Dataset modified > DOI modified | โ
Update | Dataset has newer changes |
-| Dataset modified โค DOI modified | โ Skip | DOI is up to date |
-| Dataset date in future | โ Skip | Invalid data, needs investigation |
-| Dataset date missing | โ
Update | Can't determine staleness |
-| DataCite API error | โ
Update | Better safe than sorry |
-| `--force` flag used | โ
Update | Override all logic |
-
-## Environment Configuration
-
-Required environment variables:
-
-```bash
-# DataCite Credentials
-DATACITE_USERNAME=your_username
-DATACITE_PASSWORD=your_password
-
-# API Endpoints (environment-specific)
-DATACITE_API_URL=https://api.test.datacite.org # Test environment
-DATACITE_SERVICE_URL=https://mds.test.datacite.org # Test MDS
-
-DATACITE_API_URL=https://api.datacite.org # Production
-DATACITE_SERVICE_URL=https://mds.datacite.org # Production MDS
-
-# Project Configuration
-DATACITE_PREFIX=10.21388 # Your DOI prefix
-BASE_DOMAIN=tethys.at # Your domain
-```
-
-## Error Handling
-
-The command handles various error scenarios:
-
-- **Invalid modification dates**: Logs errors but continues processing other datasets
-- **DataCite API failures**: Falls back to MDS API, then to safe update
-- **Missing DOI identifiers**: Skips datasets without DOI identifiers
-- **Network issues**: Continues with next dataset after logging error
-
-## Integration
-
-The command integrates with:
-
-- **Dataset Model**: Uses `server_date_modified` for change detection
-- **DatasetIdentifier Model**: Reads DOI values and status
-- **OpenSearch Index**: Updates search index after DataCite update
-- **DoiClient**: Handles all DataCite API interactions
-
-## Common Workflows
-
-### Daily Maintenance
-```bash
-# Update any datasets modified today
-node ace update:datacite
-```
-
-### Pre-Deployment Check
-```bash
-# Check what would be updated before deployment
-node ace update:datacite --dry-run
-```
-
-### Debugging Sync Issues
-```bash
-# Investigate why specific dataset isn't syncing
-node ace update:datacite --stats --publish_id 231
-```
-
-### Full Resync
-```bash
-# Force update all DOI records (use with caution)
-node ace update:datacite --force
-```
-
-### Monitoring Report
-```bash
-# Generate sync status report
-node ace update:datacite --stats > datacite-sync-report.txt
-```
-
-## Best Practices
-
-1. **Regular Updates**: Run daily or after bulk dataset modifications
-2. **Test First**: Use `--dry-run` or `--stats` before bulk operations
-3. **Monitor Logs**: Check for data integrity warnings
-4. **Environment Separation**: Use correct API URLs for test vs production
-5. **Rate Limiting**: The command handles DataCite rate limits automatically
\ No newline at end of file
diff --git a/freshclam.conf b/freshclam.conf
index 31992be..ee82a23 100644
--- a/freshclam.conf
+++ b/freshclam.conf
@@ -1,47 +1,229 @@
##
-## Container-optimized freshclam configuration
+## Example config file for freshclam
+## Please read the freshclam.conf(5) manual before editing this file.
##
-# Database directory
+
+# Comment or remove the line below.
+
+# Path to the database directory.
+# WARNING: It must match clamd.conf's directive!
+# Default: hardcoded (depends on installation options)
DatabaseDirectory /var/lib/clamav
-# Log to stdout for container logging
+# Path to the log file (make sure it has proper permissions)
+# Default: disabled
# UpdateLogFile /dev/stdout
-# Basic logging settings
+# Maximum size of the log file.
+# Value of 0 disables the limit.
+# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes)
+# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes).
+# in bytes just don't use modifiers. If LogFileMaxSize is enabled,
+# log rotation (the LogRotate option) will always be enabled.
+# Default: 1M
+#LogFileMaxSize 2M
+
+# Log time with each message.
+# Default: no
LogTime yes
+
+# Enable verbose logging.
+# Default: no
LogVerbose yes
+
+# Use system logger (can work together with UpdateLogFile).
+# Default: no
LogSyslog no
-# PID file location
+# Specify the type of syslog messages - please refer to 'man syslog'
+# for facility names.
+# Default: LOG_LOCAL6
+#LogFacility LOG_MAIL
+
+# Enable log rotation. Always enabled when LogFileMaxSize is enabled.
+# Default: no
+#LogRotate yes
+
+# This option allows you to save the process identifier of the daemon
+# Default: disabled
+#PidFile /var/run/freshclam.pid
PidFile /var/run/clamav/freshclam.pid
-# Database owner
+# By default when started freshclam drops privileges and switches to the
+# "clamav" user. This directive allows you to change the database owner.
+# Default: clamav (may depend on installation options)
DatabaseOwner node
-# Mirror settings for Austria
+# Use DNS to verify virus database version. Freshclam uses DNS TXT records
+# to verify database and software versions. With this directive you can change
+# the database verification domain.
+# WARNING: Do not touch it unless you're configuring freshclam to use your
+# own database verification domain.
+# Default: current.cvd.clamav.net
+#DNSDatabaseInfo current.cvd.clamav.net
+
+# Uncomment the following line and replace XY with your country
+# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
+# You can use db.XY.ipv6.clamav.net for IPv6 connections.
DatabaseMirror db.at.clamav.net
+
+# database.clamav.net is a round-robin record which points to our most
+# reliable mirrors. It's used as a fall back in case db.XY.clamav.net is
+# not working. DO NOT TOUCH the following line unless you know what you
+# are doing.
DatabaseMirror database.clamav.net
+# How many attempts to make before giving up.
+# Default: 3 (per mirror)
+#MaxAttempts 5
+
# With this option you can control scripted updates. It's highly recommended
# to keep it enabled.
# Default: yes
-# Update settings
-ScriptedUpdates yes
+#ScriptedUpdates yes
+
+# By default freshclam will keep the local databases (.cld) uncompressed to
+# make their handling faster. With this option you can enable the compression;
+# the change will take effect with the next database update.
+# Default: no
+#CompressLocalDatabase no
+
+# With this option you can provide custom sources (http:// or file://) for
+# database files. This option can be used multiple times.
+# Default: no custom URLs
+#DatabaseCustomURL http://myserver.com/mysigs.ndb
+#DatabaseCustomURL file:///mnt/nfs/local.hdb
+
+# This option allows you to easily point freshclam to private mirrors.
+# If PrivateMirror is set, freshclam does not attempt to use DNS
+# to determine whether its databases are out-of-date, instead it will
+# use the If-Modified-Since request or directly check the headers of the
+# remote database files. For each database, freshclam first attempts
+# to download the CLD file. If that fails, it tries to download the
+# CVD file. This option overrides DatabaseMirror, DNSDatabaseInfo
+# and ScriptedUpdates. It can be used multiple times to provide
+# fall-back mirrors.
+# Default: disabled
+#PrivateMirror mirror1.mynetwork.com
+#PrivateMirror mirror2.mynetwork.com
# Number of database checks per day.
# Default: 12 (every two hours)
-Checks 12
+#Checks 24
-# Don't fork (good for containers)
+# Proxy settings
+# Default: disabled
+#HTTPProxyServer myproxy.com
+#HTTPProxyPort 1234
+#HTTPProxyUsername myusername
+#HTTPProxyPassword mypass
+
+# If your servers are behind a firewall/proxy which applies User-Agent
+# filtering you can use this option to force the use of a different
+# User-Agent header.
+# Default: clamav/version_number
+#HTTPUserAgent SomeUserAgentIdString
+
+# Use aaa.bbb.ccc.ddd as client address for downloading databases. Useful for
+# multi-homed systems.
+# Default: Use OS'es default outgoing IP address.
+#LocalIPAddress aaa.bbb.ccc.ddd
+
+# Send the RELOAD command to clamd.
+# Default: no
+#NotifyClamd /path/to/clamd.conf
+
+# Run command after successful database update.
+# Default: disabled
+#OnUpdateExecute command
+
+# Run command when database update process fails.
+# Default: disabled
+#OnErrorExecute command
+
+# Run command when freshclam reports outdated version.
+# In the command string %v will be replaced by the new version number.
+# Default: disabled
+#OnOutdatedExecute command
+
+# Don't fork into background.
+# Default: no
Foreground no
-# Connection timeouts
-ConnectTimeout 60
-ReceiveTimeout 60
+# Enable debug messages in libclamav.
+# Default: no
+#Debug yes
-# Test databases before using them
-TestDatabases yes
+# Timeout in seconds when connecting to database server.
+# Default: 30
+#ConnectTimeout 60
-# Enable bytecode signatures
-Bytecode yes
\ No newline at end of file
+# Timeout in seconds when reading from database server.
+# Default: 30
+#ReceiveTimeout 60
+
+# With this option enabled, freshclam will attempt to load new
+# databases into memory to make sure they are properly handled
+# by libclamav before replacing the old ones.
+# Default: yes
+#TestDatabases yes
+
+# When enabled freshclam will submit statistics to the ClamAV Project about
+# the latest virus detections in your environment. The ClamAV maintainers
+# will then use this data to determine what types of malware are the most
+# detected in the field and in what geographic area they are.
+# Freshclam will connect to clamd in order to get recent statistics.
+# Default: no
+#SubmitDetectionStats /path/to/clamd.conf
+
+# Country of origin of malware/detection statistics (for statistical
+# purposes only). The statistics collector at ClamAV.net will look up
+# your IP address to determine the geographical origin of the malware
+# reported by your installation. If this installation is mainly used to
+# scan data which comes from a different location, please enable this
+# option and enter a two-letter code (see http://www.iana.org/domains/root/db/)
+# of the country of origin.
+# Default: disabled
+#DetectionStatsCountry country-code
+
+# This option enables support for our "Personal Statistics" service.
+# When this option is enabled, the information on malware detected by
+# your clamd installation is made available to you through our website.
+# To get your HostID, log on http://www.stats.clamav.net and add a new
+# host to your host list. Once you have the HostID, uncomment this option
+# and paste the HostID here. As soon as your freshclam starts submitting
+# information to our stats collecting service, you will be able to view
+# the statistics of this clamd installation by logging into
+# http://www.stats.clamav.net with the same credentials you used to
+# generate the HostID. For more information refer to:
+# http://www.clamav.net/documentation.html#cctts
+# This feature requires SubmitDetectionStats to be enabled.
+# Default: disabled
+#DetectionStatsHostID unique-id
+
+# This option enables support for Google Safe Browsing. When activated for
+# the first time, freshclam will download a new database file (safebrowsing.cvd)
+# which will be automatically loaded by clamd and clamscan during the next
+# reload, provided that the heuristic phishing detection is turned on. This
+# database includes information about websites that may be phishing sites or
+# possible sources of malware. When using this option, it's mandatory to run
+# freshclam at least every 30 minutes.
+# Freshclam uses the ClamAV's mirror infrastructure to distribute the
+# database and its updates but all the contents are provided under Google's
+# terms of use. See http://www.google.com/transparencyreport/safebrowsing
+# and http://www.clamav.net/documentation.html#safebrowsing
+# for more information.
+# Default: disabled
+#SafeBrowsing yes
+
+# This option enables downloading of bytecode.cvd, which includes additional
+# detection mechanisms and improvements to the ClamAV engine.
+# Default: enabled
+#Bytecode yes
+
+# Download an additional 3rd party signature database distributed through
+# the ClamAV mirrors.
+# This option can be used multiple times.
+#ExtraDatabase dbname1
+#ExtraDatabase dbname2
diff --git a/package-lock.json b/package-lock.json
index 7cb57a4..fa7be33 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"dependencies": {
"@adonisjs/auth": "^9.2.4",
"@adonisjs/bodyparser": "^10.0.1",
- "@adonisjs/core": "6.17.2",
+ "@adonisjs/core": "^6.17.0",
"@adonisjs/cors": "^2.2.1",
"@adonisjs/drive": "^3.2.0",
"@adonisjs/inertia": "^2.1.3",
@@ -108,9 +108,9 @@
}
},
"node_modules/@adonisjs/ace": {
- "version": "13.4.0",
- "resolved": "https://registry.npmjs.org/@adonisjs/ace/-/ace-13.4.0.tgz",
- "integrity": "sha512-7Wq6CpXmQm3m/6fKfzubAadCdiH2kKSni+K8s5KcTIFryKSqW+f06UAPOUwRJWqy80hnVlujAjveIsNJSPeJjA==",
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/@adonisjs/ace/-/ace-13.3.0.tgz",
+ "integrity": "sha512-68dveDFd766p69cBvK/MtOrOP0+YKYLeHspa9KLEWcWk9suPf3pbGkHQ2pwDnvLJxBPHk4932KbbSSzzpGNZGw==",
"license": "MIT",
"dependencies": {
"@poppinss/cliui": "^6.4.1",
@@ -130,16 +130,16 @@
}
},
"node_modules/@adonisjs/application": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/@adonisjs/application/-/application-8.4.2.tgz",
- "integrity": "sha512-gxyQgl1n7M/hv7ZKQOlTo2adBMehjEO0ssWSG3AGW2RXdCvkHQKlatFXMuXJMmGg2P1AWJX0LEiXey9+qxC9Uw==",
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/@adonisjs/application/-/application-8.3.1.tgz",
+ "integrity": "sha512-hfZBgZ23BQAXvoSHDkc/I0hTSXyFVxypNqHPQ/WCk4VoWlBVWVgGaGnHLvIGhrZ3RMvyoC5NBgC0PR5G+/fGSw==",
"license": "MIT",
"dependencies": {
- "@poppinss/hooks": "^7.2.5",
- "@poppinss/macroable": "^1.0.4",
- "@poppinss/utils": "^6.9.3",
+ "@poppinss/hooks": "^7.2.3",
+ "@poppinss/macroable": "^1.0.2",
+ "@poppinss/utils": "^6.7.3",
"glob-parent": "^6.0.2",
- "tempura": "^0.4.1"
+ "tempura": "^0.4.0"
},
"engines": {
"node": ">=18.16.0"
@@ -181,13 +181,13 @@
}
},
"node_modules/@adonisjs/auth": {
- "version": "9.4.2",
- "resolved": "https://registry.npmjs.org/@adonisjs/auth/-/auth-9.4.2.tgz",
- "integrity": "sha512-Ifn838j9cQFxxin4bOURAiMrmwtu2g1NC5eYpw0p0QtD6hnnwOBqFiVWYcoYKquddiHKZ3x72mRd+x4MVIYzlQ==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/@adonisjs/auth/-/auth-9.4.0.tgz",
+ "integrity": "sha512-dzvnJRKY+RcKUXCRT6ebnlGV0wAfejTSGqS0XbgjB97r6Pww14MhsY89EBr1nSydQzvjdbtIR3EDGbU97BVmbQ==",
"license": "MIT",
"dependencies": {
"@adonisjs/presets": "^2.6.4",
- "@poppinss/utils": "^6.10.0",
+ "@poppinss/utils": "^6.9.2",
"basic-auth": "^2.0.1"
},
"engines": {
@@ -220,18 +220,18 @@
}
},
"node_modules/@adonisjs/bodyparser": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/@adonisjs/bodyparser/-/bodyparser-10.1.0.tgz",
- "integrity": "sha512-sQVi1WASKSONr6DDG0YGf4rcd7Hfm9D5fdAqGcH1NWUfVP+2+6ogg0Z++X0a4wRbS7bU3TthTDmMX2n+839Cww==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/@adonisjs/bodyparser/-/bodyparser-10.0.3.tgz",
+ "integrity": "sha512-rgnAE+w7/+8tlCG+GxT8/99TLyccMFHtUyIP99K4YbSg0af6kTHrbXOJkKE8YHKU8cFwECybu3uZOoIoHOYLyQ==",
"license": "MIT",
"dependencies": {
"@paralleldrive/cuid2": "^2.2.2",
"@poppinss/macroable": "^1.0.4",
"@poppinss/multiparty": "^2.0.1",
- "@poppinss/utils": "^6.9.3",
+ "@poppinss/utils": "^6.9.2",
"@types/qs": "^6.9.18",
"bytes": "^3.1.2",
- "file-type": "^20.5.0",
+ "file-type": "^20.1.0",
"inflation": "^2.1.0",
"media-typer": "^1.1.0",
"qs": "^6.14.0",
@@ -245,12 +245,12 @@
}
},
"node_modules/@adonisjs/config": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@adonisjs/config/-/config-5.0.3.tgz",
- "integrity": "sha512-dO7gkYxZsrsnR8n7d5KUpyi+Q5c6BnV2rmFDqEmEjz5AkOZLLzJJJbeHgMb+M27le7ifEUoa8MRu6RED8NMsJg==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@adonisjs/config/-/config-5.0.2.tgz",
+ "integrity": "sha512-NXjFqDHNGRTZ1EnA4zr20GFEt7qw/JvZ4ZV8/PzFyVc7dPoFprpoyE3bw7kmlKHhcQdBbF7YXCGB4q+HQUnqiQ==",
"license": "MIT",
"dependencies": {
- "@poppinss/utils": "^6.9.4"
+ "@poppinss/utils": "^6.7.3"
},
"engines": {
"node": ">=18.16.0"
@@ -323,30 +323,18 @@
}
},
"node_modules/@adonisjs/core/node_modules/@antfu/install-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz",
- "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz",
+ "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==",
"license": "MIT",
"dependencies": {
- "package-manager-detector": "^1.3.0",
- "tinyexec": "^1.0.1"
+ "package-manager-detector": "^0.2.8",
+ "tinyexec": "^0.3.2"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/@adonisjs/core/node_modules/package-manager-detector": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz",
- "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==",
- "license": "MIT"
- },
- "node_modules/@adonisjs/core/node_modules/tinyexec": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
- "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
- "license": "MIT"
- },
"node_modules/@adonisjs/cors": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@adonisjs/cors/-/cors-2.2.1.tgz",
@@ -446,64 +434,32 @@
}
},
"node_modules/@adonisjs/fold": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@adonisjs/fold/-/fold-10.2.0.tgz",
- "integrity": "sha512-VDBGrVz2viaCsmONLKYpMMeP3ds+fw+7kofeF/z9ic6cB3d7BLEB8VcIdGkfY0FCBbLK2Btee1tNPuUF1uMlmQ==",
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@adonisjs/fold/-/fold-10.1.3.tgz",
+ "integrity": "sha512-wzeuWMXx9SoJkNO4ycoyfxzoSyyMy3umVxb9cbzeWR/sYNVgi50l+vgJc634+lxpCE0RFTpxCv1M235EWDF9SQ==",
"license": "MIT",
"dependencies": {
- "@poppinss/utils": "^7.0.0-next.1",
- "parse-imports": "^2.2.1"
+ "@poppinss/utils": "^6.8.3"
},
"engines": {
"node": ">=18.16.0"
}
},
- "node_modules/@adonisjs/fold/node_modules/@poppinss/utils": {
- "version": "7.0.0-next.3",
- "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-7.0.0-next.3.tgz",
- "integrity": "sha512-Z+3kolI/gdjTQRJWRiZTEk6r6QOeGLesfmdc8ISSeHlyUg0mTnVdi08/rwOcRJD6dLdwBGTDUf7lK2K7GpT4ww==",
- "license": "MIT",
- "dependencies": {
- "@poppinss/exception": "^1.2.1",
- "@poppinss/object-builder": "^1.1.0",
- "@poppinss/string": "^1.6.0",
- "@poppinss/types": "^1.1.0",
- "flattie": "^1.1.1",
- "safe-stable-stringify": "^2.5.0",
- "secure-json-parse": "^4.0.0"
- }
- },
- "node_modules/@adonisjs/fold/node_modules/secure-json-parse": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz",
- "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "BSD-3-Clause"
- },
"node_modules/@adonisjs/hash": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/@adonisjs/hash/-/hash-9.1.1.tgz",
- "integrity": "sha512-ZkRguwjAp4skKvKDdRAfdJ2oqQ0N7p9l3sioyXO1E8o0WcsyDgEpsTQtuVNoIdMiw4sn4gJlmL3nyF4BcK1ZDQ==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/@adonisjs/hash/-/hash-9.0.5.tgz",
+ "integrity": "sha512-oY8PafBrdGsr5UY8cAzzxPCtehZDW7KsPcI47dZpjydOdL/PQrT4liX+cGujL6mSbi3JEgQLBgBs/+SlPFvCrg==",
"license": "MIT",
"dependencies": {
"@phc/format": "^1.0.0",
- "@poppinss/utils": "^6.9.3"
+ "@poppinss/utils": "^6.8.3"
},
"engines": {
"node": ">=20.6.0"
},
"peerDependencies": {
- "argon2": "^0.31.2 || ^0.41.0 || ^0.43.0",
- "bcrypt": "^5.1.1 || ^6.0.0"
+ "argon2": "^0.31.2 || ^0.41.0",
+ "bcrypt": "^5.1.1"
},
"peerDependenciesMeta": {
"argon2": {
@@ -528,17 +484,17 @@
}
},
"node_modules/@adonisjs/http-server": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@adonisjs/http-server/-/http-server-7.7.0.tgz",
- "integrity": "sha512-qW1wsp7f1BqRO2qmJ8laUaq8vnLjEvhgkMusLEa2ju6RBMMsph5w3cEDTXAwQO8fSSqNXmRTzPRQ1lUm/FXq0A==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/@adonisjs/http-server/-/http-server-7.6.0.tgz",
+ "integrity": "sha512-ZrQxdIyTJ4gTtUNXp6S956R1tLS5BT2HNP7SAiQSeVmn6J5CL0fBZ2+hx7L0yrF34MUUgZvykIEeLsm3rusXGQ==",
"license": "MIT",
"dependencies": {
"@paralleldrive/cuid2": "^2.2.2",
"@poppinss/macroable": "^1.0.4",
"@poppinss/matchit": "^3.1.2",
"@poppinss/middleware": "^3.2.5",
- "@poppinss/utils": "^6.10.0",
- "@sindresorhus/is": "^7.0.2",
+ "@poppinss/utils": "^6.9.2",
+ "@sindresorhus/is": "^7.0.1",
"accepts": "^1.3.8",
"content-disposition": "^0.5.4",
"cookie": "^1.0.2",
@@ -546,12 +502,12 @@
"encodeurl": "^2.0.0",
"etag": "^1.8.1",
"fresh": "^0.5.2",
- "mime-types": "^3.0.1",
+ "mime-types": "^2.1.35",
"on-finished": "^2.4.1",
"proxy-addr": "^2.0.7",
"qs": "^6.14.0",
"tmp-cache": "^1.1.0",
- "type-is": "^2.0.1",
+ "type-is": "^1.6.18",
"vary": "^1.1.2",
"youch": "^3.3.4"
},
@@ -611,16 +567,16 @@
}
},
"node_modules/@adonisjs/lucid": {
- "version": "21.8.0",
- "resolved": "https://registry.npmjs.org/@adonisjs/lucid/-/lucid-21.8.0.tgz",
- "integrity": "sha512-AgS3l/J70q0K1ZTAbNVQTZuQWvCDwnj6a2rXCFu/aYRtIdbnGPLV0kIQ76WbdtlstUnKj8GFY/JNwok1TuTVVg==",
+ "version": "21.6.1",
+ "resolved": "https://registry.npmjs.org/@adonisjs/lucid/-/lucid-21.6.1.tgz",
+ "integrity": "sha512-0TLCcPm9GHShJlsDAF5SHilafnvTxW25y5nD3bGJBSMEaNfGXcGRBbnyWoeNs7DsnqMCZ6ociT+0XMcKJWzQrQ==",
"license": "MIT",
"dependencies": {
"@adonisjs/presets": "^2.6.4",
- "@faker-js/faker": "^9.9.0",
- "@poppinss/hooks": "^7.2.6",
- "@poppinss/macroable": "^1.0.5",
- "@poppinss/utils": "^6.10.0",
+ "@faker-js/faker": "^9.6.0",
+ "@poppinss/hooks": "^7.2.5",
+ "@poppinss/macroable": "^1.0.4",
+ "@poppinss/utils": "^6.9.2",
"fast-deep-equal": "^3.1.3",
"igniculus": "^1.5.0",
"kleur": "^4.1.5",
@@ -718,12 +674,12 @@
}
},
"node_modules/@adonisjs/repl": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@adonisjs/repl/-/repl-4.1.2.tgz",
- "integrity": "sha512-NnczRJusl0082GOjEFYwObW/yBGJtpfJFnkFCQdQ6eykgBHVNYaY6qstfob+l1bedetRj0hrDY6YfsWMkA0MCg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@adonisjs/repl/-/repl-4.1.0.tgz",
+ "integrity": "sha512-7Ml87uoufDQmpjRZYbJeRTk0/WcD4DllJ96L1r2IWF/jZIsryiVN5o+7Xd7fHlRzd8iapAbs32Tq4a6fVI6UKA==",
"license": "MIT",
"dependencies": {
- "@poppinss/colors": "^4.1.5",
+ "@poppinss/colors": "^4.1.4",
"string-width": "^7.2.0"
},
"engines": {
@@ -820,9 +776,9 @@
}
},
"node_modules/@adonisjs/tsconfig": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@adonisjs/tsconfig/-/tsconfig-1.4.1.tgz",
- "integrity": "sha512-b7bHdnTaDRGfec4XVtpwsSEukZ549MgqOShScCd1b4xkMK8z1q/jb0Xs4iUL86oIDhty2y7k5vvA6aoQKPAvXQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@adonisjs/tsconfig/-/tsconfig-1.4.0.tgz",
+ "integrity": "sha512-go5KlxE8jJaeoIRzm51PcF2YJSK5i022douVk9OjAqvDiU1t2UepcDoEsSiEOgogUDojp9kbRQmFyf0y0YqvOg==",
"dev": true,
"license": "MIT"
},
@@ -868,6 +824,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/@antfu/install-pkg": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz",
@@ -891,660 +862,25 @@
"node": ">=4"
}
},
- "node_modules/@aws-crypto/sha256-browser": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
- "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-js": "^5.2.0",
- "@aws-crypto/supports-web-crypto": "^5.2.0",
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/sha256-js": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
- "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@aws-crypto/supports-web-crypto": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
- "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@aws-crypto/util": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
- "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-ses": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.891.0.tgz",
- "integrity": "sha512-X5cejGUQjUPnkD5d/SXsh6NAPRvc8JtuF+iEclbFe5OOhxJZG9YemT0V7wqC+taFe0279c89+1qJT19UjXZEeg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/credential-provider-node": "3.891.0",
- "@aws-sdk/middleware-host-header": "3.891.0",
- "@aws-sdk/middleware-logger": "3.891.0",
- "@aws-sdk/middleware-recursion-detection": "3.891.0",
- "@aws-sdk/middleware-user-agent": "3.891.0",
- "@aws-sdk/region-config-resolver": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@aws-sdk/util-endpoints": "3.891.0",
- "@aws-sdk/util-user-agent-browser": "3.887.0",
- "@aws-sdk/util-user-agent-node": "3.891.0",
- "@smithy/config-resolver": "^4.2.2",
- "@smithy/core": "^3.11.0",
- "@smithy/fetch-http-handler": "^5.2.1",
- "@smithy/hash-node": "^4.1.1",
- "@smithy/invalid-dependency": "^4.1.1",
- "@smithy/middleware-content-length": "^4.1.1",
- "@smithy/middleware-endpoint": "^4.2.2",
- "@smithy/middleware-retry": "^4.2.3",
- "@smithy/middleware-serde": "^4.1.1",
- "@smithy/middleware-stack": "^4.1.1",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/node-http-handler": "^4.2.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/smithy-client": "^4.6.2",
- "@smithy/types": "^4.5.0",
- "@smithy/url-parser": "^4.1.1",
- "@smithy/util-base64": "^4.1.0",
- "@smithy/util-body-length-browser": "^4.1.0",
- "@smithy/util-body-length-node": "^4.1.0",
- "@smithy/util-defaults-mode-browser": "^4.1.2",
- "@smithy/util-defaults-mode-node": "^4.1.2",
- "@smithy/util-endpoints": "^3.1.2",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-retry": "^4.1.2",
- "@smithy/util-utf8": "^4.1.0",
- "@smithy/util-waiter": "^4.1.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.891.0.tgz",
- "integrity": "sha512-QMDaD9GhJe7l0KQp3Tt7dzqFCz/H2XuyNjQgvi10nM1MfI1RagmLtmEhZveQxMPhZ/AtohLSK0Tisp/I5tR8RQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/middleware-host-header": "3.891.0",
- "@aws-sdk/middleware-logger": "3.891.0",
- "@aws-sdk/middleware-recursion-detection": "3.891.0",
- "@aws-sdk/middleware-user-agent": "3.891.0",
- "@aws-sdk/region-config-resolver": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@aws-sdk/util-endpoints": "3.891.0",
- "@aws-sdk/util-user-agent-browser": "3.887.0",
- "@aws-sdk/util-user-agent-node": "3.891.0",
- "@smithy/config-resolver": "^4.2.2",
- "@smithy/core": "^3.11.0",
- "@smithy/fetch-http-handler": "^5.2.1",
- "@smithy/hash-node": "^4.1.1",
- "@smithy/invalid-dependency": "^4.1.1",
- "@smithy/middleware-content-length": "^4.1.1",
- "@smithy/middleware-endpoint": "^4.2.2",
- "@smithy/middleware-retry": "^4.2.3",
- "@smithy/middleware-serde": "^4.1.1",
- "@smithy/middleware-stack": "^4.1.1",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/node-http-handler": "^4.2.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/smithy-client": "^4.6.2",
- "@smithy/types": "^4.5.0",
- "@smithy/url-parser": "^4.1.1",
- "@smithy/util-base64": "^4.1.0",
- "@smithy/util-body-length-browser": "^4.1.0",
- "@smithy/util-body-length-node": "^4.1.0",
- "@smithy/util-defaults-mode-browser": "^4.1.2",
- "@smithy/util-defaults-mode-node": "^4.1.2",
- "@smithy/util-endpoints": "^3.1.2",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-retry": "^4.1.2",
- "@smithy/util-utf8": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/core": {
- "version": "3.890.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.890.0.tgz",
- "integrity": "sha512-CT+yjhytHdyKvV3Nh/fqBjnZ8+UiQZVz4NMm4LrPATgVSOdfygXHqrWxrPTVgiBtuJWkotg06DF7+pTd5ekLBw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@aws-sdk/xml-builder": "3.887.0",
- "@smithy/core": "^3.11.0",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/signature-v4": "^5.2.1",
- "@smithy/smithy-client": "^4.6.2",
- "@smithy/types": "^4.5.0",
- "@smithy/util-base64": "^4.1.0",
- "@smithy/util-body-length-browser": "^4.1.0",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-utf8": "^4.1.0",
- "fast-xml-parser": "5.2.5",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.890.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.890.0.tgz",
- "integrity": "sha512-BtsUa2y0Rs8phmB2ScZ5RuPqZVmxJJXjGfeiXctmLFTxTwoayIK1DdNzOWx6SRMPVc3s2RBGN4vO7T1TwN+ajA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.890.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.890.0.tgz",
- "integrity": "sha512-0sru3LVwsuGYyzbD90EC/d5HnCZ9PL4O9BA2LYT6b9XceC005Oj86uzE47LXb+mDhTAt3T6ZO0+ZcVQe0DDi8w==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/fetch-http-handler": "^5.2.1",
- "@smithy/node-http-handler": "^4.2.1",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/smithy-client": "^4.6.2",
- "@smithy/types": "^4.5.0",
- "@smithy/util-stream": "^4.3.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.891.0.tgz",
- "integrity": "sha512-9LOfm97oy2d2frwCQjl53XLkoEYG6/rsNM3Y6n8UtRU3bzGAEjixdIuv3b6Z/Mk/QLeikcQEJ9FMC02DuQh2Yw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/credential-provider-env": "3.890.0",
- "@aws-sdk/credential-provider-http": "3.890.0",
- "@aws-sdk/credential-provider-process": "3.890.0",
- "@aws-sdk/credential-provider-sso": "3.891.0",
- "@aws-sdk/credential-provider-web-identity": "3.891.0",
- "@aws-sdk/nested-clients": "3.891.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/credential-provider-imds": "^4.1.2",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.891.0.tgz",
- "integrity": "sha512-IjGvQJhpCN512xlT1DFGaPeE1q0YEm/X62w7wHsRpBindW//M+heSulJzP4KPkoJvmJNVu1NxN26/p4uH+M8TQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.890.0",
- "@aws-sdk/credential-provider-http": "3.890.0",
- "@aws-sdk/credential-provider-ini": "3.891.0",
- "@aws-sdk/credential-provider-process": "3.890.0",
- "@aws-sdk/credential-provider-sso": "3.891.0",
- "@aws-sdk/credential-provider-web-identity": "3.891.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/credential-provider-imds": "^4.1.2",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.890.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.890.0.tgz",
- "integrity": "sha512-dWZ54TI1Q+UerF5YOqGiCzY+x2YfHsSQvkyM3T4QDNTJpb/zjiVv327VbSOULOlI7gHKWY/G3tMz0D9nWI7YbA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.891.0.tgz",
- "integrity": "sha512-RtF9BwUIZqc/7sFbK6n6qhe0tNaWJQwin89nSeZ1HOsA0Z7TfTOelX8Otd0L5wfeVBMVcgiN3ofqrcZgjFjQjA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/client-sso": "3.891.0",
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/token-providers": "3.891.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.891.0.tgz",
- "integrity": "sha512-yq7kzm1sHZ0GZrtS+qpjMUp4ES66UoT1+H2xxrOuAZkvUnkpQq1iSjOgBgJJ9FW1EsDUEmlgn94i4hJTNvm7fg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/nested-clients": "3.891.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.891.0.tgz",
- "integrity": "sha512-OYaxbqNDeo/noE7MfYWWQDu86cF/R/bMXdZ2QZwpWpX2yjy8xMwxSg7c/4tEK/OtiDZTKRXXrvPxRxG2+1bnJw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-logger": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.891.0.tgz",
- "integrity": "sha512-azL4mg1H1FLpOAECiFtU+r+9VDhpeF6Vh9pzD4m51BWPJ60CVnyHayeI/0gqPsL60+5l90/b9VWonoA8DvAvpg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.891.0.tgz",
- "integrity": "sha512-n++KwAEnNlvx5NZdIQZnvl2GjSH/YE3xGSqW2GmPB5780tFY5lOYSb1uA+EUzJSVX4oAKAkSPdR2AOW09kzoew==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@aws/lambda-invoke-store": "^0.0.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.891.0.tgz",
- "integrity": "sha512-xyxIZtR7FunCWymPAxEm61VUq9lruXxWIYU5AIh5rt0av7nXa2ayAAlscQ7ch9jUlw+lbC2PVbw0K/OYrMovuA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@aws-sdk/util-endpoints": "3.891.0",
- "@smithy/core": "^3.11.0",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/nested-clients": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.891.0.tgz",
- "integrity": "sha512-cpol+Yk4T3GXPXbRfUyN2u6tpMEHUxAiesZgrfMm11QGHV+pmzyejJV/QZ0pdJKj5sXKaCr4DCntoJ5iBx++Cw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/middleware-host-header": "3.891.0",
- "@aws-sdk/middleware-logger": "3.891.0",
- "@aws-sdk/middleware-recursion-detection": "3.891.0",
- "@aws-sdk/middleware-user-agent": "3.891.0",
- "@aws-sdk/region-config-resolver": "3.890.0",
- "@aws-sdk/types": "3.887.0",
- "@aws-sdk/util-endpoints": "3.891.0",
- "@aws-sdk/util-user-agent-browser": "3.887.0",
- "@aws-sdk/util-user-agent-node": "3.891.0",
- "@smithy/config-resolver": "^4.2.2",
- "@smithy/core": "^3.11.0",
- "@smithy/fetch-http-handler": "^5.2.1",
- "@smithy/hash-node": "^4.1.1",
- "@smithy/invalid-dependency": "^4.1.1",
- "@smithy/middleware-content-length": "^4.1.1",
- "@smithy/middleware-endpoint": "^4.2.2",
- "@smithy/middleware-retry": "^4.2.3",
- "@smithy/middleware-serde": "^4.1.1",
- "@smithy/middleware-stack": "^4.1.1",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/node-http-handler": "^4.2.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/smithy-client": "^4.6.2",
- "@smithy/types": "^4.5.0",
- "@smithy/url-parser": "^4.1.1",
- "@smithy/util-base64": "^4.1.0",
- "@smithy/util-body-length-browser": "^4.1.0",
- "@smithy/util-body-length-node": "^4.1.0",
- "@smithy/util-defaults-mode-browser": "^4.1.2",
- "@smithy/util-defaults-mode-node": "^4.1.2",
- "@smithy/util-endpoints": "^3.1.2",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-retry": "^4.1.2",
- "@smithy/util-utf8": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.890.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.890.0.tgz",
- "integrity": "sha512-VfdT+tkF9groRYNzKvQCsCGDbOQdeBdzyB1d6hWiq22u13UafMIoskJ1ec0i0H1X29oT6mjTitfnvPq1UiKwzQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/types": "^4.5.0",
- "@smithy/util-config-provider": "^4.1.0",
- "@smithy/util-middleware": "^4.1.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/token-providers": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.891.0.tgz",
- "integrity": "sha512-n31JDMWhj/53QX33C97+1W63JGtgO8pg1/Tfmv4f9TR2VSGf1rFwYH7cPZ7dVIMmcUBeI2VCVhwUIabGNHw86Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.890.0",
- "@aws-sdk/nested-clients": "3.891.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/types": {
- "version": "3.887.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.887.0.tgz",
- "integrity": "sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/util-endpoints": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.891.0.tgz",
- "integrity": "sha512-MgxvmHIQJbUK+YquX4bdjDw1MjdBqTRJGHs6iU2KM8nN1ut0bPwvavkq7NrY/wB3ZKKECqmv6J/nw+hYKKUIHA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@smithy/types": "^4.5.0",
- "@smithy/url-parser": "^4.1.1",
- "@smithy/util-endpoints": "^3.1.2",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/util-locate-window": {
- "version": "3.873.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.873.0.tgz",
- "integrity": "sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.887.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.887.0.tgz",
- "integrity": "sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.887.0",
- "@smithy/types": "^4.5.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.891.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.891.0.tgz",
- "integrity": "sha512-/mmvVL2PJE2NMTWj9JSY98OISx7yov0mi72eOViWCHQMRYJCN12DY54i1rc4Q/oPwJwTwIrx69MLjVhQ1OZsgw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-user-agent": "3.891.0",
- "@aws-sdk/types": "3.887.0",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
- }
- },
- "node_modules/@aws-sdk/xml-builder": {
- "version": "3.887.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.887.0.tgz",
- "integrity": "sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws/lambda-invoke-store": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz",
- "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.25.9",
"js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
- "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -1553,23 +889,23 @@
}
},
"node_modules/@babel/core": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
- "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.4",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.4",
- "@babel/types": "^7.28.4",
- "@jridgewell/remapping": "^2.3.5",
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.10",
+ "@babel/types": "^7.26.10",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -1585,16 +921,16 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
- "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
+ "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.3",
- "@babel/types": "^7.28.2",
- "@jridgewell/gen-mapping": "^0.3.12",
- "@jridgewell/trace-mapping": "^0.3.28",
+ "@babel/parser": "^7.27.0",
+ "@babel/types": "^7.27.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
},
"engines": {
@@ -1602,28 +938,28 @@
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
- "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.3"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
+ "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
- "@babel/compat-data": "^7.27.2",
- "@babel/helper-validator-option": "^7.27.1",
+ "@babel/compat-data": "^7.26.8",
+ "@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -1633,18 +969,18 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz",
- "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz",
+ "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-member-expression-to-functions": "^7.27.1",
- "@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.28.3",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.27.0",
"semver": "^6.3.1"
},
"engines": {
@@ -1654,54 +990,44 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
- "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1711,22 +1037,22 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
- "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.1"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1734,15 +1060,15 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
- "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.27.1",
- "@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1752,41 +1078,41 @@
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
- "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1794,27 +1120,27 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
+ "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
- "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
+ "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.4"
+ "@babel/types": "^7.27.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1824,13 +1150,13 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
- "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1840,13 +1166,13 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
- "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1856,14 +1182,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
- "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
+ "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1873,17 +1199,17 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz",
- "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz",
+ "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/plugin-syntax-typescript": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.27.0",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1893,17 +1219,17 @@
}
},
"node_modules/@babel/preset-typescript": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz",
- "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz",
+ "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-validator-option": "^7.27.1",
- "@babel/plugin-syntax-jsx": "^7.27.1",
- "@babel/plugin-transform-modules-commonjs": "^7.27.1",
- "@babel/plugin-transform-typescript": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.26.3",
+ "@babel/plugin-transform-typescript": "^7.27.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1913,62 +1239,52 @@
}
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
+ "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.27.0",
+ "@babel/types": "^7.27.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
- "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+ "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.4",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4",
- "debug": "^4.3.1"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.27.0",
+ "@babel/parser": "^7.27.0",
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
- "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
+ "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@borewit/text-codec": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz",
- "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -2016,9 +1332,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz",
- "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+ "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
"cpu": [
"ppc64"
],
@@ -2032,9 +1348,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz",
- "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+ "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
"cpu": [
"arm"
],
@@ -2048,9 +1364,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz",
- "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+ "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
"cpu": [
"arm64"
],
@@ -2064,9 +1380,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz",
- "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+ "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
"cpu": [
"x64"
],
@@ -2080,9 +1396,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz",
- "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+ "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
"cpu": [
"arm64"
],
@@ -2096,9 +1412,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz",
- "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+ "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
"cpu": [
"x64"
],
@@ -2112,9 +1428,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz",
- "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+ "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
"cpu": [
"arm64"
],
@@ -2128,9 +1444,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz",
- "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+ "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
"cpu": [
"x64"
],
@@ -2144,9 +1460,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz",
- "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+ "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
"cpu": [
"arm"
],
@@ -2160,9 +1476,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz",
- "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+ "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
"cpu": [
"arm64"
],
@@ -2176,9 +1492,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz",
- "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+ "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
"cpu": [
"ia32"
],
@@ -2192,9 +1508,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz",
- "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+ "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
"cpu": [
"loong64"
],
@@ -2208,9 +1524,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz",
- "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+ "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
"cpu": [
"mips64el"
],
@@ -2224,9 +1540,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz",
- "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+ "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
"cpu": [
"ppc64"
],
@@ -2240,9 +1556,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz",
- "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+ "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
"cpu": [
"riscv64"
],
@@ -2256,9 +1572,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz",
- "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+ "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
"cpu": [
"s390x"
],
@@ -2272,9 +1588,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz",
- "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+ "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
"cpu": [
"x64"
],
@@ -2288,9 +1604,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz",
- "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+ "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
"cpu": [
"arm64"
],
@@ -2304,9 +1620,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz",
- "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+ "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
"cpu": [
"x64"
],
@@ -2320,9 +1636,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz",
- "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+ "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
"cpu": [
"arm64"
],
@@ -2336,9 +1652,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz",
- "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+ "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
"cpu": [
"x64"
],
@@ -2351,26 +1667,10 @@
"node": ">=18"
}
},
- "node_modules/@esbuild/openharmony-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz",
- "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ],
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz",
- "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+ "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
"cpu": [
"x64"
],
@@ -2384,9 +1684,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz",
- "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+ "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
"cpu": [
"arm64"
],
@@ -2400,9 +1700,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz",
- "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+ "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
"cpu": [
"ia32"
],
@@ -2416,9 +1716,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz",
- "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+ "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
"cpu": [
"x64"
],
@@ -2432,9 +1732,9 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
- "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz",
+ "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2484,6 +1784,35 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@eslint/js": {
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
@@ -2495,9 +1824,9 @@
}
},
"node_modules/@faker-js/faker": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.9.0.tgz",
- "integrity": "sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.7.0.tgz",
+ "integrity": "sha512-aozo5vqjCmDoXLNUJarFZx2IN/GgGaogY4TMJ6so/WLZOWpSV7fvj2dmrV6sEAnUm1O7aCrhTibjpzeDFgNqbg==",
"funding": [
{
"type": "opencollective",
@@ -2511,18 +1840,18 @@
}
},
"node_modules/@fontsource/archivo-black": {
- "version": "5.2.8",
- "resolved": "https://registry.npmjs.org/@fontsource/archivo-black/-/archivo-black-5.2.8.tgz",
- "integrity": "sha512-3zNj/o9LzWyDl/UEpY5IOHpAQyUtFr3hQaFS7NSKwCLLkXOfH/CMCt1L2b2Z+OF25OURtOYenCadgAebALz7/A==",
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/@fontsource/archivo-black/-/archivo-black-5.2.5.tgz",
+ "integrity": "sha512-tdBRFgA0CgxVqj3mBM96aiXRBoOp51X3IW2e8/t59AVr0NwiBcB+c3C+p5dd7Np/UT/vqdmjb/gK/HaFpulhIA==",
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@fontsource/inter": {
- "version": "5.2.8",
- "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.2.8.tgz",
- "integrity": "sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg==",
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.2.5.tgz",
+ "integrity": "sha512-kbsPKj0S4p44JdYRFiW78Td8Ge2sBVxi/PIBwmih+RpSXUdvS9nbs1HIiuUSPtRMi14CqLEZ/fbk7dj7vni1Sg==",
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
@@ -2583,9 +1912,9 @@
"license": "BSD-3-Clause"
},
"node_modules/@humanwhocodes/retry": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
- "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=18.18"
@@ -2596,14 +1925,13 @@
}
},
"node_modules/@inertiajs/core": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.1.7.tgz",
- "integrity": "sha512-ahBSdNj4d7oqEBr5KcGPVuoyI3JWYKwwLjqhy2O4Jp/UKX1C6W0U/WkpL6NzCapNaNDACBVSc3rqZ/6lY0VbWA==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.0.8.tgz",
+ "integrity": "sha512-YE+b5FktbSSaWJt4CjCHy7z3t+IV97G/8kD33mkj2Fqqf+Jfsypd/jsOuxrQGSMDpIyAGR6EDoaiuss6+JuIPA==",
"license": "MIT",
"dependencies": {
- "@types/lodash-es": "^4.17.12",
- "axios": "^1.12.0",
- "lodash-es": "^4.17.21",
+ "axios": "^1.8.2",
+ "es-toolkit": "^1.34.1",
"qs": "^6.9.0"
}
},
@@ -2628,23 +1956,22 @@
}
},
"node_modules/@inertiajs/vue3": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-2.1.7.tgz",
- "integrity": "sha512-Y6sL2lBJ/uJNVRL4FnYKAp7xdoWwgpc4HvlP8RZhm6roHUBcQNZWxxrPqhtBSx5v9vcTeIvu4+TsoFetPSYgdw==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-2.0.8.tgz",
+ "integrity": "sha512-XzerZJxxiTE40U6X9MggjQivUpHjHNaDnrts8TVnYIO6iRMSzrgqVMW/9DXIZGAuwE1z832Kj58/sWAefx+/BQ==",
"license": "MIT",
"dependencies": {
- "@inertiajs/core": "2.1.7",
- "@types/lodash-es": "^4.17.12",
- "lodash-es": "^4.17.21"
+ "@inertiajs/core": "2.0.8",
+ "es-toolkit": "^1.33.0"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/@ioredis/commands": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz",
- "integrity": "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
+ "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==",
"license": "MIT"
},
"node_modules/@isaacs/cliui": {
@@ -2666,9 +1993,9 @@
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2679,9 +2006,9 @@
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2717,9 +2044,9 @@
}
},
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2751,16 +2078,16 @@
}
},
"node_modules/@japa/assert": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@japa/assert/-/assert-4.1.1.tgz",
- "integrity": "sha512-Hhv8A/gkd1b4Xa2Jti4XJ3FsP/pJ8ZXAWwvgYVKZQNcl79lqIHsMjMrL3e475pbf8lybB++FvXi4ruoz2SsiBA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@japa/assert/-/assert-4.0.1.tgz",
+ "integrity": "sha512-n/dA9DVLNvM/Bw8DtN8kBdPjYsSHe3XTRjF5+U8vlzDavpW9skUANl2CHR1K/TBWZxwMfGi15SJIjo6UCs09AA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@poppinss/macroable": "^1.0.5",
- "@types/chai": "^5.2.2",
+ "@poppinss/macroable": "^1.0.4",
+ "@types/chai": "^5.0.1",
"assertion-error": "^2.0.1",
- "chai": "^5.2.1"
+ "chai": "^5.1.2"
},
"engines": {
"node": ">=18.16.0"
@@ -2789,14 +2116,14 @@
}
},
"node_modules/@japa/errors-printer": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/@japa/errors-printer/-/errors-printer-4.1.3.tgz",
- "integrity": "sha512-67JV/W+GIaXfL2s5P7jd8u+FqhfeeK3iIAgcchX25WEOMN9LCsn3s0xgrfjM3XJh0q4TGtVwz9ClbC0/oocMwA==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@japa/errors-printer/-/errors-printer-4.1.2.tgz",
+ "integrity": "sha512-exl/r07ssJhEEsMdFT2sXgP1sV7Tp3mZvYUEDMXZ8YjWZPHTFLLcA7o9q9FJSSB1ITrEIbx2SWTB+2fFUaZ3NA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@poppinss/colors": "^4.1.5",
- "jest-diff": "^30.0.4",
+ "@poppinss/colors": "^4.1.4",
+ "jest-diff": "^29.7.0",
"supports-color": "^10.0.0",
"youch": "^4.1.0-beta.5"
},
@@ -2805,17 +2132,19 @@
}
},
"node_modules/@japa/errors-printer/node_modules/youch": {
- "version": "4.1.0-beta.11",
- "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.11.tgz",
- "integrity": "sha512-sQi6PERyO/mT8w564ojOVeAlYTtVQmC2GaktQAf+IdI75/GKIggosBuvyVXvEV+FATAT6RbLdIjFoiIId4ozoQ==",
+ "version": "4.1.0-beta.7",
+ "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.7.tgz",
+ "integrity": "sha512-HUn0M24AUTMvjdkoMtH8fJz2FEd+k1xvtR9EoTrDUoVUi6o7xl5X+pST/vjk4T3GEQo2mJ9FlAvhWBm8dIdD4g==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@poppinss/colors": "^4.1.5",
- "@poppinss/dumper": "^0.6.4",
+ "@poppinss/dumper": "^0.6.3",
"@speed-highlight/core": "^1.2.7",
"cookie": "^1.0.2",
- "youch-core": "^0.3.3"
+ "youch-core": "^0.3.1"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@japa/plugin-adonisjs": {
@@ -2847,84 +2176,54 @@
}
},
"node_modules/@japa/runner": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@japa/runner/-/runner-4.4.0.tgz",
- "integrity": "sha512-8kw12t5lTMe3n+dy5MPBLsAG1HPZrMCkexGD1mCEU9bXpAQJo55Ij89dLFwF9DDVkkHGkmfaYmi2DhZBjXp5ZA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@japa/runner/-/runner-4.2.0.tgz",
+ "integrity": "sha512-e3BFn1rca/OTiagilkmRTrLVhl00iC/LrY5j4Ns/VZDONYHs9BKAbHaImxjD1zoHMEhwQEF+ce7fgMO/BK+lfg==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@japa/core": "^10.3.0",
- "@japa/errors-printer": "^4.1.3",
- "@poppinss/colors": "^4.1.5",
- "@poppinss/hooks": "^7.2.6",
- "@poppinss/string": "^1.7.0",
- "error-stack-parser-es": "^1.0.5",
+ "@japa/errors-printer": "^4.1.2",
+ "@poppinss/colors": "^4.1.4",
+ "@poppinss/hooks": "^7.2.5",
"fast-glob": "^3.3.3",
- "find-cache-directory": "^6.0.0",
+ "find-cache-dir": "^5.0.0",
"getopts": "^2.3.0",
"ms": "^2.1.3",
"serialize-error": "^12.0.0",
"slash": "^5.1.0",
- "supports-color": "^10.1.0"
+ "supports-color": "^10.0.0"
},
"engines": {
"node": ">=18.16.0"
}
},
- "node_modules/@jest/diff-sequences": {
- "version": "30.0.1",
- "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz",
- "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==",
- "devOptional": true,
- "license": "MIT",
- "engines": {
- "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
- }
- },
- "node_modules/@jest/get-type": {
- "version": "30.1.0",
- "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz",
- "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==",
- "devOptional": true,
- "license": "MIT",
- "engines": {
- "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
- }
- },
"node_modules/@jest/schemas": {
- "version": "30.0.5",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
- "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@sinclair/typebox": "^0.34.0"
+ "@sinclair/typebox": "^0.27.8"
},
"engines": {
- "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
- "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/remapping": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
- "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
@@ -2937,10 +2236,20 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/@jridgewell/source-map": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
- "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"devOptional": true,
"license": "MIT",
"peer": true,
@@ -2950,15 +2259,15 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.31",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
- "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -2983,75 +2292,17 @@
"tslib": "2"
}
},
- "node_modules/@jsonjoy.com/buffers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz",
- "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
- "node_modules/@jsonjoy.com/codegen": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz",
- "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
"node_modules/@jsonjoy.com/json-pack": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.14.0.tgz",
- "integrity": "sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz",
+ "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/base64": "^1.1.2",
- "@jsonjoy.com/buffers": "^1.0.0",
- "@jsonjoy.com/codegen": "^1.0.0",
- "@jsonjoy.com/json-pointer": "^1.0.1",
- "@jsonjoy.com/util": "^1.9.0",
+ "@jsonjoy.com/base64": "^1.1.1",
+ "@jsonjoy.com/util": "^1.1.2",
"hyperdyperid": "^1.2.0",
- "thingies": "^2.5.0"
- },
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
- "node_modules/@jsonjoy.com/json-pointer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz",
- "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@jsonjoy.com/codegen": "^1.0.0",
- "@jsonjoy.com/util": "^1.9.0"
+ "thingies": "^1.20.0"
},
"engines": {
"node": ">=10.0"
@@ -3065,15 +2316,11 @@
}
},
"node_modules/@jsonjoy.com/util": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz",
- "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz",
+ "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==",
"dev": true,
"license": "Apache-2.0",
- "dependencies": {
- "@jsonjoy.com/buffers": "^1.0.0",
- "@jsonjoy.com/codegen": "^1.0.0"
- },
"engines": {
"node": ">=10.0"
},
@@ -3129,9 +2376,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -3293,9 +2540,9 @@
}
},
"node_modules/@pkgr/core": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
- "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz",
+ "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3306,9 +2553,9 @@
}
},
"node_modules/@poppinss/chokidar-ts": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@poppinss/chokidar-ts/-/chokidar-ts-4.1.9.tgz",
- "integrity": "sha512-Nl4JAb5dvwmZhXElSuiuHy4YkB7YFql/AE2tTu9TyJCfPnUrcwm2iMTUZVa+aGz+bolRPuPNKsuypxN59gBvQQ==",
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@poppinss/chokidar-ts/-/chokidar-ts-4.1.6.tgz",
+ "integrity": "sha512-zGH6G+IcqrL2rgbbQtj349YAkaihb6dFwWS4QVgfcANBPjRWUvlWtlYhHMrglmglXfNjKc3K3bPP2HjxD/BQ4Q==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -3322,16 +2569,16 @@
"node": ">=18.16.0"
},
"peerDependencies": {
- "typescript": "^5.0.0"
+ "typescript": "^4.0.0 || ^5.0.0"
}
},
"node_modules/@poppinss/cliui": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/@poppinss/cliui/-/cliui-6.4.4.tgz",
- "integrity": "sha512-yJfm+3yglxdeH85C+YebxZ1zsTB4pBh+QwCuxJcxV/pVbxagn63uYyxqnQif2sKWi+nkNZxuyemON3WrtGMBCQ==",
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/@poppinss/cliui/-/cliui-6.4.3.tgz",
+ "integrity": "sha512-flAHvbWHP4r7+DVcWMuO9EGnnkaZLJzkei6E4QTVhPsIAKBI78vDplhHXZofUvwG5IrU42QM0gX/pxMOKwQRvg==",
"license": "MIT",
"dependencies": {
- "@poppinss/colors": "^4.1.5",
+ "@poppinss/colors": "^4.1.4",
"cli-boxes": "^4.0.1",
"cli-table3": "^0.6.5",
"cli-truncate": "^4.0.0",
@@ -3341,39 +2588,51 @@
"supports-color": "^10.0.0",
"terminal-size": "^4.0.0",
"wordwrap": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18.16.0"
}
},
"node_modules/@poppinss/colors": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.5.tgz",
- "integrity": "sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.4.tgz",
+ "integrity": "sha512-FA+nTU8p6OcSH4tLDY5JilGYr1bVWHpNmcLr7xmMEdbWmKHa+3QZ+DqefrXKmdjO/brHTnQZo20lLSjaO7ydog==",
"license": "MIT",
"dependencies": {
"kleur": "^4.1.5"
+ },
+ "engines": {
+ "node": ">=18.16.0"
}
},
"node_modules/@poppinss/dumper": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.4.tgz",
- "integrity": "sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.3.tgz",
+ "integrity": "sha512-iombbn8ckOixMtuV1p3f8jN6vqhXefNjJttoPaJDMeIk/yIGhkkL3OrHkEjE9SRsgoAx1vBUU2GtgggjvA5hCA==",
"license": "MIT",
"dependencies": {
- "@poppinss/colors": "^4.1.5",
- "@sindresorhus/is": "^7.0.2",
+ "@poppinss/colors": "^4.1.4",
+ "@sindresorhus/is": "^7.0.1",
"supports-color": "^10.0.0"
}
},
"node_modules/@poppinss/exception": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.2.tgz",
- "integrity": "sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==",
- "license": "MIT"
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.1.tgz",
+ "integrity": "sha512-aQypoot0HPSJa6gDPEPTntc1GT6QINrSbgRlRhadGW2WaYqUK3tK4Bw9SBMZXhmxd3GeAlZjVcODHgiu+THY7A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/@poppinss/hooks": {
- "version": "7.2.6",
- "resolved": "https://registry.npmjs.org/@poppinss/hooks/-/hooks-7.2.6.tgz",
- "integrity": "sha512-+bZhb1CrIvhgnypjE0W/NZVkRnRDZL37HDDI6zvIo8h3PVs1lKj5Dyl54V/EpU6SFSZAS5dilgZ0V7zhjyJMgA==",
- "license": "MIT"
+ "version": "7.2.5",
+ "resolved": "https://registry.npmjs.org/@poppinss/hooks/-/hooks-7.2.5.tgz",
+ "integrity": "sha512-mxORKQ5CFzQNi6yK3zwCGWfGS507w23IhV3kFq42QzWlv/vpvf4aMJDbtfMCR5p52ghVoe0d1wmgp77ak2ORhQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.16.0"
+ }
},
"node_modules/@poppinss/inspect": {
"version": "1.0.1",
@@ -3385,10 +2644,13 @@
}
},
"node_modules/@poppinss/macroable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@poppinss/macroable/-/macroable-1.1.0.tgz",
- "integrity": "sha512-y/YKzZDuG8XrpXpM7Z1RdQpiIc0MAKyva24Ux1PB4aI7RiSI/79K8JVDcdyubriTm7vJ1LhFs8CrZpmPnx/8Pw==",
- "license": "MIT"
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@poppinss/macroable/-/macroable-1.0.4.tgz",
+ "integrity": "sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.16.0"
+ }
},
"node_modules/@poppinss/manager": {
"version": "5.0.2",
@@ -3397,19 +2659,22 @@
"license": "MIT"
},
"node_modules/@poppinss/matchit": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@poppinss/matchit/-/matchit-3.2.0.tgz",
- "integrity": "sha512-9SoMICN+LMO7ZtMj2ja8N7RHlC4mmuv5WwIBXWjabMd2SyXE1dIydh29exlgm+dGMP84PjwvfJH1TmWL4qz1og==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@poppinss/matchit/-/matchit-3.1.2.tgz",
+ "integrity": "sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==",
"license": "MIT",
"dependencies": {
"@arr/every": "^1.0.0"
}
},
"node_modules/@poppinss/middleware": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/@poppinss/middleware/-/middleware-3.2.6.tgz",
- "integrity": "sha512-KcZeLlJ0EV+PLTlGGq3+5IqwpGOUTuR3ucfwyPOXeQegQKtyIF9i2HryKklY1qhfLhhTwFC9M6v1nTfdHQM6tA==",
- "license": "MIT"
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/@poppinss/middleware/-/middleware-3.2.5.tgz",
+ "integrity": "sha512-+P9yY4KYYZFTbOoIvVK/R4PfPcPyxt4E23Dx4l7V8Z/8+DOzAL01eWZs9mMgHOYTbAokKVLQ+JIsyDmrTA0Uyg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.16.0"
+ }
},
"node_modules/@poppinss/multiparty": {
"version": "2.0.1",
@@ -3432,60 +2697,60 @@
}
},
"node_modules/@poppinss/prompts": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/@poppinss/prompts/-/prompts-3.1.5.tgz",
- "integrity": "sha512-q94apkzTzp8iV30VxmaRUU6RmRTnJRBXpgV3PtIAZUYoPglJEeYwNLWPnKUrhXmvrH0vjl3TqMINO0A4GUZn3Q==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@poppinss/prompts/-/prompts-3.1.4.tgz",
+ "integrity": "sha512-3xbwolmX8/G2jZZTRcymc1KysJ6b7vyonauKwyQtt3WOaUTHMFcxTJ/Sdp75ehHFJI1BOVzd4v6BS9pmqTcHlw==",
"license": "MIT",
"dependencies": {
- "@poppinss/colors": "^4.1.5",
- "@poppinss/exception": "^1.2.1",
+ "@poppinss/colors": "^4.1.4",
+ "@poppinss/exception": "^1.1.0",
"@poppinss/object-builder": "^1.1.0",
"enquirer": "^2.4.1"
+ },
+ "engines": {
+ "node": ">=18.16.0"
}
},
"node_modules/@poppinss/string": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@poppinss/string/-/string-1.7.0.tgz",
- "integrity": "sha512-IuCtWaUwmJeAdby0n1a5cTYsBLe7fPymdc4oNTTl1b6l+Ok+14XpSX0ILOEU6UtZ9D2XI3f4TVUh4Titkk1xgw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@poppinss/string/-/string-1.2.0.tgz",
+ "integrity": "sha512-1z78zjqhfjqsvWr+pQzCpRNcZpIM+5vNY5SFOvz28GrL/LRanwtmOku5tBX7jE8/ng3oXaOVrB59lnnXFtvkug==",
"license": "MIT",
"dependencies": {
"@lukeed/ms": "^2.0.2",
"@types/bytes": "^3.1.5",
"@types/pluralize": "^0.0.33",
"bytes": "^3.1.2",
- "case-anything": "^3.1.2",
+ "case-anything": "^3.1.0",
"pluralize": "^8.0.0",
"slugify": "^1.6.6",
"truncatise": "^0.0.8"
+ },
+ "engines": {
+ "node": ">=20.6.0"
}
},
- "node_modules/@poppinss/types": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@poppinss/types/-/types-1.2.0.tgz",
- "integrity": "sha512-kHwS1lDC/IQeqaBEbuJuWNVt46OGdQQN6+wvyq+GFa2YWV33TAGDku7dkeXDSxddt6UX+URWCLsJ+JRJWCCZLQ==",
- "license": "MIT"
- },
"node_modules/@poppinss/utils": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-6.10.1.tgz",
- "integrity": "sha512-da+MMyeXhBaKtxQiWPfy7+056wk3lVIhioJnXHXkJ2/OHDaZfFcyKHNl1R06sdYO8lIRXcXdoZ6LO2ARmkAREA==",
+ "version": "6.9.2",
+ "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-6.9.2.tgz",
+ "integrity": "sha512-ypVszZxhwiehhklM5so2BI+nClQJwp7mBUSJh/R1GepeUH1vvD5GtxMz8Lp9dO9oAbKyDmq1jc4g/4E0dv8r2g==",
"license": "MIT",
"dependencies": {
- "@poppinss/exception": "^1.2.1",
+ "@poppinss/exception": "^1.2.0",
"@poppinss/object-builder": "^1.1.0",
- "@poppinss/string": "^1.3.0",
+ "@poppinss/string": "^1.1.0",
"flattie": "^1.1.1",
"safe-stable-stringify": "^2.5.0",
- "secure-json-parse": "^4.0.0"
+ "secure-json-parse": "^3.0.1"
},
"engines": {
"node": ">=18.16.0"
}
},
"node_modules/@poppinss/utils/node_modules/secure-json-parse": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz",
- "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.2.tgz",
+ "integrity": "sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==",
"funding": [
{
"type": "github",
@@ -3499,27 +2764,27 @@
"license": "BSD-3-Clause"
},
"node_modules/@poppinss/validator-lite": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@poppinss/validator-lite/-/validator-lite-2.1.2.tgz",
- "integrity": "sha512-UhSG1ouT6r67VbEFHK/8ax3EMZYHioew9PqGmEZjV41G15aPZi6cyhXtBVvF9xqkHMflA5V680k7bQzV0kfD5w==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@poppinss/validator-lite/-/validator-lite-2.1.0.tgz",
+ "integrity": "sha512-CfT8EPeB7jKxjCb5+KP32iu/0BB7cKlRRqMBcCwzky0WgFACsFlRtvHsy+CkOszHmNyOdoH3WoyMyoxVCu9qEw==",
"license": "MIT"
},
"node_modules/@redis/bloom": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.8.2.tgz",
- "integrity": "sha512-855DR0ChetZLarblio5eM0yLwxA9Dqq50t8StXKp5bAtLT0G+rZ+eRzzqxl37sPqQKjUudSYypz55o6nNhbz0A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.0.0.tgz",
+ "integrity": "sha512-YHlra6a7+brJ3Ustqa+jC68Pdnw2/wbnVLeULN0llP3gHpKxOSmiDyLwuHq5t/jFi6QUgjSprUQi2a8CieKFIA==",
"license": "MIT",
"engines": {
"node": ">= 18"
},
"peerDependencies": {
- "@redis/client": "^5.8.2"
+ "@redis/client": "^5.0.0"
}
},
"node_modules/@redis/client": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.8.2.tgz",
- "integrity": "sha512-WtMScno3+eBpTac1Uav2zugXEoXqaU23YznwvFgkPwBQVwEHTDgOG7uEAObtZ/Nyn8SmAMbqkEubJaMOvnqdsQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.0.0.tgz",
+ "integrity": "sha512-1MqfzOOoFBwWprigJ3S5hM+LuzaWwxyyx+74NDzCpmjKWyjjC07xkWsd5E9fr+61NUDtvUivRiyAxGiRIwJCaQ==",
"license": "MIT",
"dependencies": {
"cluster-key-slot": "1.1.2"
@@ -3529,45 +2794,45 @@
}
},
"node_modules/@redis/json": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.8.2.tgz",
- "integrity": "sha512-uxpVfas3I0LccBX9rIfDgJ0dBrUa3+0Gc8sEwmQQH0vHi7C1Rx1Qn8Nv1QWz5bohoeIXMICFZRcyDONvum2l/w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.0.0.tgz",
+ "integrity": "sha512-8YFjshsvWR9dWjOiQ50TfBxfl+z1mjCae8jDnfOYN1aCvUZWJXqM1OpL56v6mWRyXwZ5C9qJJKDGmHTr4PVskQ==",
"license": "MIT",
"engines": {
"node": ">= 18"
},
"peerDependencies": {
- "@redis/client": "^5.8.2"
+ "@redis/client": "^5.0.0"
}
},
"node_modules/@redis/search": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.8.2.tgz",
- "integrity": "sha512-cNv7HlgayavCBXqPXgaS97DRPVWFznuzsAmmuemi2TMCx5scwLiP50TeZvUS06h/MG96YNPe6A0Zt57yayfxwA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.0.0.tgz",
+ "integrity": "sha512-oEop/S/0NB5p7vpTTlp5X5LQO4oTomJnFEOaKhQ5xZWROLXTgEVvPSfXVNBbtr9maU2+OupxXQR63HW3MGeTUg==",
"license": "MIT",
"engines": {
"node": ">= 18"
},
"peerDependencies": {
- "@redis/client": "^5.8.2"
+ "@redis/client": "^5.0.0"
}
},
"node_modules/@redis/time-series": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.8.2.tgz",
- "integrity": "sha512-g2NlHM07fK8H4k+613NBsk3y70R2JIM2dPMSkhIjl2Z17SYvaYKdusz85d7VYOrZBWtDrHV/WD2E3vGu+zni8A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.0.0.tgz",
+ "integrity": "sha512-DNsP4DH5CRfXlQDyvLJm2DltZm3kjpVKZsNTI3SPdbRxhc9i2c0NehUbM/gDECnEfG+jkNN/LUv6Em4LaLwPBQ==",
"license": "MIT",
"engines": {
"node": ">= 18"
},
"peerDependencies": {
- "@redis/client": "^5.8.2"
+ "@redis/client": "^5.0.0"
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.51.0.tgz",
- "integrity": "sha512-VyfldO8T/C5vAXBGIobrAnUE+VJNVLw5z9h4NgSDq/AJZWt/fXqdW+0PJbk+M74xz7yMDRiHtlsuDV7ew6K20w==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz",
+ "integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==",
"cpu": [
"arm"
],
@@ -3578,9 +2843,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.51.0.tgz",
- "integrity": "sha512-Z3ujzDZgsEVSokgIhmOAReh9SGT2qloJJX2Xo1Q3nPU1EhCXrV0PbpR3r7DWRgozqnjrPZQkLe5cgBPIYp70Vg==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz",
+ "integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==",
"cpu": [
"arm64"
],
@@ -3591,9 +2856,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.51.0.tgz",
- "integrity": "sha512-T3gskHgArUdR6TCN69li5VELVAZK+iQ4iwMoSMNYixoj+56EC9lTj35rcxhXzIJt40YfBkvDy3GS+t5zh7zM6g==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz",
+ "integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==",
"cpu": [
"arm64"
],
@@ -3604,9 +2869,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.51.0.tgz",
- "integrity": "sha512-Hh7n/fh0g5UjH6ATDF56Qdf5bzdLZKIbhp5KftjMYG546Ocjeyg15dxphCpH1FFY2PJ2G6MiOVL4jMq5VLTyrQ==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz",
+ "integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==",
"cpu": [
"x64"
],
@@ -3617,9 +2882,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.51.0.tgz",
- "integrity": "sha512-0EddADb6FBvfqYoxwVom3hAbAvpSVUbZqmR1wmjk0MSZ06hn/UxxGHKRqEQDMkts7XiZjejVB+TLF28cDTU+gA==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz",
+ "integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==",
"cpu": [
"arm64"
],
@@ -3630,9 +2895,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.51.0.tgz",
- "integrity": "sha512-MpqaEDLo3JuVPF+wWV4mK7V8akL76WCz8ndfz1aVB7RhvXFO3k7yT7eu8OEuog4VTSyNu5ibvN9n6lgjq/qLEQ==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz",
+ "integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==",
"cpu": [
"x64"
],
@@ -3643,9 +2908,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.51.0.tgz",
- "integrity": "sha512-WEWAGFNFFpvSWAIT3MYvxTkYHv/cJl9yWKpjhheg7ONfB0hetZt/uwBnM3GZqSHrk5bXCDYTFXg3jQyk/j7eXQ==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz",
+ "integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==",
"cpu": [
"arm"
],
@@ -3656,9 +2921,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.51.0.tgz",
- "integrity": "sha512-9bxtxj8QoAp++LOq5PGDGkEEOpCDk9rOEHUcXadnijedDH8IXrBt6PnBa4Y6NblvGWdoxvXZYghZLaliTCmAng==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz",
+ "integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==",
"cpu": [
"arm"
],
@@ -3669,9 +2934,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.51.0.tgz",
- "integrity": "sha512-DdqA+fARqIsfqDYkKo2nrWMp0kvu/wPJ2G8lZ4DjYhn+8QhrjVuzmsh7tTkhULwjvHTN59nWVzAixmOi6rqjNA==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz",
+ "integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==",
"cpu": [
"arm64"
],
@@ -3682,9 +2947,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.51.0.tgz",
- "integrity": "sha512-2XVRNzcUJE1UJua8P4a1GXS5jafFWE+pQ6zhUbZzptOu/70p1F6+0FTi6aGPd6jNtnJqGMjtBCXancC2dhYlWw==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz",
+ "integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==",
"cpu": [
"arm64"
],
@@ -3694,10 +2959,10 @@
"linux"
]
},
- "node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.51.0.tgz",
- "integrity": "sha512-R8QhY0kLIPCAVXWi2yftDSpn7Jtejey/WhMoBESSfwGec5SKdFVupjxFlKoQ7clVRuaDpiQf7wNx3EBZf4Ey6g==",
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz",
+ "integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==",
"cpu": [
"loong64"
],
@@ -3707,10 +2972,10 @@
"linux"
]
},
- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.51.0.tgz",
- "integrity": "sha512-I498RPfxx9cMv1KTHQ9tg2Ku1utuQm+T5B+Xro+WNu3FzAFSKp4awKfgMoZwjoPgNbaFGINaOM25cQW6WuBhiQ==",
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz",
+ "integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==",
"cpu": [
"ppc64"
],
@@ -3721,9 +2986,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.51.0.tgz",
- "integrity": "sha512-o8COudsb8lvtdm9ixg9aKjfX5aeoc2x9KGE7WjtrmQFquoCRZ9jtzGlonujE4WhvXFepTraWzT4RcwyDDeHXjA==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz",
+ "integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==",
"cpu": [
"riscv64"
],
@@ -3734,9 +2999,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.51.0.tgz",
- "integrity": "sha512-0shJPgSXMdYzOQzpM5BJN2euXY1f8uV8mS6AnrbMcH2KrkNsbpMxWB1wp8UEdiJ1NtyBkCk3U/HfX5mEONBq6w==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz",
+ "integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==",
"cpu": [
"riscv64"
],
@@ -3747,9 +3012,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.51.0.tgz",
- "integrity": "sha512-L7pV+ny7865jamSCQwyozBYjFRUKaTsPqDz7ClOtJCDu4paf2uAa0mrcHwSt4XxZP2ogFZS9uuitH3NXdeBEJA==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz",
+ "integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==",
"cpu": [
"s390x"
],
@@ -3760,9 +3025,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.51.0.tgz",
- "integrity": "sha512-4YHhP+Rv3T3+H3TPbUvWOw5tuSwhrVhkHHZhk4hC9VXeAOKR26/IsUAT4FsB4mT+kfIdxxb1BezQDEg/voPO8A==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz",
+ "integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==",
"cpu": [
"x64"
],
@@ -3773,9 +3038,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.51.0.tgz",
- "integrity": "sha512-P7U7U03+E5w7WgJtvSseNLOX1UhknVPmEaqgUENFWfNxNBa1OhExT6qYGmyF8gepcxWSaSfJsAV5UwhWrYefdQ==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz",
+ "integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==",
"cpu": [
"x64"
],
@@ -3785,23 +3050,10 @@
"linux"
]
},
- "node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.51.0.tgz",
- "integrity": "sha512-FuD8g3u9W6RPwdO1R45hZFORwa1g9YXEMesAKP/sOi7mDqxjbni8S3zAXJiDcRfGfGBqpRYVuH54Gu3FTuSoEw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ]
- },
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.51.0.tgz",
- "integrity": "sha512-zST+FdMCX3QAYfmZX3dp/Fy8qLUetfE17QN5ZmmFGPrhl86qvRr+E9u2bk7fzkIXsfQR30Z7ZRS7WMryPPn4rQ==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz",
+ "integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==",
"cpu": [
"arm64"
],
@@ -3812,9 +3064,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.51.0.tgz",
- "integrity": "sha512-U+qhoCVAZmTHCmUKxdQxw1jwAFNFXmOpMME7Npt5GTb1W/7itfgAgNluVOvyeuSeqW+dEQLFuNZF3YZPO8XkMg==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz",
+ "integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==",
"cpu": [
"ia32"
],
@@ -3825,9 +3077,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.51.0.tgz",
- "integrity": "sha512-z6UpFzMhXSD8NNUfCi2HO+pbpSzSWIIPgb1TZsEZjmZYtk6RUIC63JYjlFBwbBZS3jt3f1q6IGfkj3g+GnBt2Q==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz",
+ "integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==",
"cpu": [
"x64"
],
@@ -3844,16 +3096,16 @@
"license": "MIT"
},
"node_modules/@sinclair/typebox": {
- "version": "0.34.41",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz",
- "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==",
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
"devOptional": true,
"license": "MIT"
},
"node_modules/@sindresorhus/is": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.1.0.tgz",
- "integrity": "sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.1.tgz",
+ "integrity": "sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -3875,590 +3127,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@smithy/abort-controller": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.1.1.tgz",
- "integrity": "sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/config-resolver": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.2.2.tgz",
- "integrity": "sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/types": "^4.5.0",
- "@smithy/util-config-provider": "^4.1.0",
- "@smithy/util-middleware": "^4.1.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/core": {
- "version": "3.11.1",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.11.1.tgz",
- "integrity": "sha512-REH7crwORgdjSpYs15JBiIWOYjj0hJNC3aCecpJvAlMMaaqL5i2CLb1i6Hc4yevToTKSqslLMI9FKjhugEwALA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/middleware-serde": "^4.1.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "@smithy/util-base64": "^4.1.0",
- "@smithy/util-body-length-browser": "^4.1.0",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-stream": "^4.3.2",
- "@smithy/util-utf8": "^4.1.0",
- "@types/uuid": "^9.0.1",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/credential-provider-imds": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.1.2.tgz",
- "integrity": "sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/types": "^4.5.0",
- "@smithy/url-parser": "^4.1.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/fetch-http-handler": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.2.1.tgz",
- "integrity": "sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/querystring-builder": "^4.1.1",
- "@smithy/types": "^4.5.0",
- "@smithy/util-base64": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/hash-node": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.1.1.tgz",
- "integrity": "sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "@smithy/util-buffer-from": "^4.1.0",
- "@smithy/util-utf8": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/invalid-dependency": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.1.1.tgz",
- "integrity": "sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/is-array-buffer": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.1.0.tgz",
- "integrity": "sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-content-length": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.1.1.tgz",
- "integrity": "sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-endpoint": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.2.3.tgz",
- "integrity": "sha512-+1H5A28DeffRVrqmVmtqtRraEjoaC6JVap3xEQdVoBh2EagCVY7noPmcBcG4y7mnr9AJitR1ZAse2l+tEtK5vg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/core": "^3.11.1",
- "@smithy/middleware-serde": "^4.1.1",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "@smithy/url-parser": "^4.1.1",
- "@smithy/util-middleware": "^4.1.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-retry": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.2.4.tgz",
- "integrity": "sha512-amyqYQFewnAviX3yy/rI/n1HqAgfvUdkEhc04kDjxsngAUREKuOI24iwqQUirrj6GtodWmR4iO5Zeyl3/3BwWg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/service-error-classification": "^4.1.2",
- "@smithy/smithy-client": "^4.6.3",
- "@smithy/types": "^4.5.0",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-retry": "^4.1.2",
- "@types/uuid": "^9.0.1",
- "tslib": "^2.6.2",
- "uuid": "^9.0.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-serde": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.1.1.tgz",
- "integrity": "sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-stack": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.1.1.tgz",
- "integrity": "sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/node-config-provider": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.2.2.tgz",
- "integrity": "sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/property-provider": "^4.1.1",
- "@smithy/shared-ini-file-loader": "^4.2.0",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/node-http-handler": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.2.1.tgz",
- "integrity": "sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/abort-controller": "^4.1.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/querystring-builder": "^4.1.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/property-provider": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.1.1.tgz",
- "integrity": "sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/protocol-http": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.2.1.tgz",
- "integrity": "sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/querystring-builder": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.1.1.tgz",
- "integrity": "sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "@smithy/util-uri-escape": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/querystring-parser": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.1.1.tgz",
- "integrity": "sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/service-error-classification": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.1.2.tgz",
- "integrity": "sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/shared-ini-file-loader": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.2.0.tgz",
- "integrity": "sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/signature-v4": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.2.1.tgz",
- "integrity": "sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.1.0",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "@smithy/util-hex-encoding": "^4.1.0",
- "@smithy/util-middleware": "^4.1.1",
- "@smithy/util-uri-escape": "^4.1.0",
- "@smithy/util-utf8": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/smithy-client": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.6.3.tgz",
- "integrity": "sha512-K27LqywsaqKz4jusdUQYJh/YP2VbnbdskZ42zG8xfV+eovbTtMc2/ZatLWCfSkW0PDsTUXlpvlaMyu8925HsOw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/core": "^3.11.1",
- "@smithy/middleware-endpoint": "^4.2.3",
- "@smithy/middleware-stack": "^4.1.1",
- "@smithy/protocol-http": "^5.2.1",
- "@smithy/types": "^4.5.0",
- "@smithy/util-stream": "^4.3.2",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/types": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.5.0.tgz",
- "integrity": "sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/url-parser": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.1.1.tgz",
- "integrity": "sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/querystring-parser": "^4.1.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-base64": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.1.0.tgz",
- "integrity": "sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^4.1.0",
- "@smithy/util-utf8": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-body-length-browser": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.1.0.tgz",
- "integrity": "sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-body-length-node": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.1.0.tgz",
- "integrity": "sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-buffer-from": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.1.0.tgz",
- "integrity": "sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-config-provider": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.1.0.tgz",
- "integrity": "sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.1.3.tgz",
- "integrity": "sha512-5fm3i2laE95uhY6n6O6uGFxI5SVbqo3/RWEuS3YsT0LVmSZk+0eUqPhKd4qk0KxBRPaT5VNT/WEBUqdMyYoRgg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/property-provider": "^4.1.1",
- "@smithy/smithy-client": "^4.6.3",
- "@smithy/types": "^4.5.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.1.3.tgz",
- "integrity": "sha512-lwnMzlMslZ9GJNt+/wVjz6+fe9Wp5tqR1xAyQn+iywmP+Ymj0F6NhU/KfHM5jhGPQchRSCcau5weKhFdLIM4cA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/config-resolver": "^4.2.2",
- "@smithy/credential-provider-imds": "^4.1.2",
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/property-provider": "^4.1.1",
- "@smithy/smithy-client": "^4.6.3",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-endpoints": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.1.2.tgz",
- "integrity": "sha512-+AJsaaEGb5ySvf1SKMRrPZdYHRYSzMkCoK16jWnIMpREAnflVspMIDeCVSZJuj+5muZfgGpNpijE3mUNtjv01Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.2.2",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-hex-encoding": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.1.0.tgz",
- "integrity": "sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-middleware": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.1.1.tgz",
- "integrity": "sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-retry": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.1.2.tgz",
- "integrity": "sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/service-error-classification": "^4.1.2",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-stream": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.3.2.tgz",
- "integrity": "sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/fetch-http-handler": "^5.2.1",
- "@smithy/node-http-handler": "^4.2.1",
- "@smithy/types": "^4.5.0",
- "@smithy/util-base64": "^4.1.0",
- "@smithy/util-buffer-from": "^4.1.0",
- "@smithy/util-hex-encoding": "^4.1.0",
- "@smithy/util-utf8": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-uri-escape": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.1.0.tgz",
- "integrity": "sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-utf8": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.1.0.tgz",
- "integrity": "sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^4.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-waiter": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.1.1.tgz",
- "integrity": "sha512-PJBmyayrlfxM7nbqjomF4YcT1sApQwZio0NHSsT0EzhJqljRmvhzqZua43TyEs80nJk2Cn2FGPg/N8phH6KeCQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/abort-controller": "^4.1.1",
- "@smithy/types": "^4.5.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@speed-highlight/core": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.7.tgz",
@@ -4467,9 +3135,9 @@
"license": "CC0-1.0"
},
"node_modules/@swc/wasm": {
- "version": "1.13.5",
- "resolved": "https://registry.npmjs.org/@swc/wasm/-/wasm-1.13.5.tgz",
- "integrity": "sha512-ZBZcxieydxNwgEU9eFAXGMaDb1Xoh+ZkZcUQ27LNJzc2lPSByoL6CSVqnYiaVo+n9JgqbYyHlMq+i7z0wRNTfA==",
+ "version": "1.11.24",
+ "resolved": "https://registry.npmjs.org/@swc/wasm/-/wasm-1.11.24.tgz",
+ "integrity": "sha512-8Eo70Ns3BUboUaHfHhDfT/e0gA92+qpHggnb8oio+bfESMXBkmBdkQIln8TI27axKGc7uWz9M82kC8k9FJFq0w==",
"dev": true,
"license": "Apache-2.0"
},
@@ -4499,9 +3167,9 @@
}
},
"node_modules/@tanstack/virtual-core": {
- "version": "3.13.12",
- "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz",
- "integrity": "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==",
+ "version": "3.13.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.6.tgz",
+ "integrity": "sha512-cnQUeWnhNP8tJ4WsGcYiX24Gjkc9ALstLbHcBj1t3E7EimN6n6kHH+DPV4PpDnuw00NApQp+ViojMj1GRdwYQg==",
"dev": true,
"license": "MIT",
"funding": {
@@ -4510,13 +3178,13 @@
}
},
"node_modules/@tanstack/vue-virtual": {
- "version": "3.13.12",
- "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.12.tgz",
- "integrity": "sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==",
+ "version": "3.13.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.6.tgz",
+ "integrity": "sha512-GYdZ3SJBQPzgxhuCE2fvpiH46qzHiVx5XzBSdtESgiqh4poj8UgckjGWYEhxaBbcVt1oLzh1m3Ql4TyH32TOzQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@tanstack/virtual-core": "3.13.12"
+ "@tanstack/virtual-core": "3.13.6"
},
"funding": {
"type": "github",
@@ -4564,9 +3232,9 @@
}
},
"node_modules/@ts-morph/common/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -4647,9 +3315,9 @@
"license": "MIT"
},
"node_modules/@types/body-parser": {
- "version": "1.19.6",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
- "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4674,9 +3342,9 @@
"license": "MIT"
},
"node_modules/@types/chai": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz",
- "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz",
+ "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4766,15 +3434,15 @@
}
},
"node_modules/@types/estree": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
"license": "MIT"
},
"node_modules/@types/express": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
- "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4828,9 +3496,9 @@
"license": "MIT"
},
"node_modules/@types/http-errors": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
- "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
"dev": true,
"license": "MIT"
},
@@ -4862,34 +3530,19 @@
}
},
"node_modules/@types/leaflet": {
- "version": "1.9.20",
- "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.20.tgz",
- "integrity": "sha512-rooalPMlk61LCaLOvBF2VIf9M47HgMQqi5xQ9QRi7c8PkdIe0WrIi5IxXUXQjAdL0c+vcQ01mYWbthzmp9GHWw==",
+ "version": "1.9.17",
+ "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.17.tgz",
+ "integrity": "sha512-IJ4K6t7I3Fh5qXbQ1uwL3CFVbCi6haW9+53oLWgdKlLP7EaS21byWFJxxqOx9y8I0AP0actXSJLVMbyvxhkUTA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/geojson": "*"
}
},
- "node_modules/@types/lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
- "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
- "license": "MIT"
- },
- "node_modules/@types/lodash-es": {
- "version": "4.17.12",
- "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
- "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
- "license": "MIT",
- "dependencies": {
- "@types/lodash": "*"
- }
- },
"node_modules/@types/luxon": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz",
- "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz",
+ "integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==",
"devOptional": true,
"license": "MIT"
},
@@ -4908,18 +3561,18 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.18.6",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.6.tgz",
- "integrity": "sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==",
+ "version": "22.15.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz",
+ "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@types/node-forge": {
- "version": "1.3.14",
- "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz",
- "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==",
+ "version": "1.3.11",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
+ "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4927,12 +3580,11 @@
}
},
"node_modules/@types/nodemailer": {
- "version": "6.4.19",
- "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.19.tgz",
- "integrity": "sha512-Fi8DwmuAduTk1/1MpkR9EwS0SsDvYXx5RxivAVII1InDCIxmhj/iQm3W8S3EVb/0arnblr6PK0FK4wYa7bwdLg==",
+ "version": "6.4.17",
+ "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.17.tgz",
+ "integrity": "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==",
"license": "MIT",
"dependencies": {
- "@aws-sdk/client-ses": "^3.731.1",
"@types/node": "*"
}
},
@@ -4979,9 +3631,9 @@
}
},
"node_modules/@types/qs": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
+ "version": "6.9.18",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz",
+ "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==",
"license": "MIT"
},
"node_modules/@types/range-parser": {
@@ -4999,16 +3651,16 @@
"license": "MIT"
},
"node_modules/@types/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==",
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
+ "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/send": {
- "version": "0.17.5",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
- "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5027,9 +3679,9 @@
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.8",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz",
- "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==",
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5089,16 +3741,10 @@
"@types/superagent": "^8.1.0"
}
},
- "node_modules/@types/uuid": {
- "version": "9.0.8",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
- "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
- "license": "MIT"
- },
"node_modules/@types/validator": {
- "version": "13.15.3",
- "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz",
- "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==",
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.0.tgz",
+ "integrity": "sha512-nh7nrWhLr6CBq9ldtw0wx+z9wKnnv/uTVLA9g/3/TcOYxbpOSZE+MhKPmWqU+K0NvThjhv12uD8MuqijB0WzEA==",
"license": "MIT"
},
"node_modules/@types/ws": {
@@ -5147,9 +3793,9 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5297,9 +3943,9 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5371,9 +4017,9 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5423,9 +4069,9 @@
}
},
"node_modules/@vavite/multibuild/node_modules/@types/node": {
- "version": "18.19.127",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.127.tgz",
- "integrity": "sha512-gSjxjrnKXML/yo0BO099uPixMqfpJU0TKYjpfLU7TrtA2WWDki412Np/RSTPRil1saKBhvVVKzVx/p/6p94nVA==",
+ "version": "18.19.87",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.87.tgz",
+ "integrity": "sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==",
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
@@ -5466,9 +4112,9 @@
}
},
"node_modules/@vitejs/plugin-vue": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
- "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz",
+ "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5480,73 +4126,73 @@
}
},
"node_modules/@vue/compiler-core": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.21.tgz",
- "integrity": "sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
+ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.3",
- "@vue/shared": "3.5.21",
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.13",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
- "source-map-js": "^1.2.1"
+ "source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.21.tgz",
- "integrity": "sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
+ "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-core": "3.5.21",
- "@vue/shared": "3.5.21"
+ "@vue/compiler-core": "3.5.13",
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz",
- "integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
+ "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.3",
- "@vue/compiler-core": "3.5.21",
- "@vue/compiler-dom": "3.5.21",
- "@vue/compiler-ssr": "3.5.21",
- "@vue/shared": "3.5.21",
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.13",
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13",
"estree-walker": "^2.0.2",
- "magic-string": "^0.30.18",
- "postcss": "^8.5.6",
- "source-map-js": "^1.2.1"
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.48",
+ "source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.21.tgz",
- "integrity": "sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
+ "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.5.21",
- "@vue/shared": "3.5.21"
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/devtools-api": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.7.tgz",
- "integrity": "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==",
+ "version": "7.7.6",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.6.tgz",
+ "integrity": "sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vue/devtools-kit": "^7.7.7"
+ "@vue/devtools-kit": "^7.7.6"
}
},
"node_modules/@vue/devtools-kit": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz",
- "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==",
+ "version": "7.7.6",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.6.tgz",
+ "integrity": "sha512-geu7ds7tem2Y7Wz+WgbnbZ6T5eadOvozHZ23Atk/8tksHMFOFylKi1xgGlQlVn0wlkEf4hu+vd5ctj1G4kFtwA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vue/devtools-shared": "^7.7.7",
+ "@vue/devtools-shared": "^7.7.6",
"birpc": "^2.3.0",
"hookable": "^5.5.3",
"mitt": "^3.0.1",
@@ -5556,9 +4202,9 @@
}
},
"node_modules/@vue/devtools-shared": {
- "version": "7.7.7",
- "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz",
- "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==",
+ "version": "7.7.6",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.6.tgz",
+ "integrity": "sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5566,53 +4212,53 @@
}
},
"node_modules/@vue/reactivity": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.21.tgz",
- "integrity": "sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
+ "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
"license": "MIT",
"dependencies": {
- "@vue/shared": "3.5.21"
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/runtime-core": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.21.tgz",
- "integrity": "sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
+ "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.5.21",
- "@vue/shared": "3.5.21"
+ "@vue/reactivity": "3.5.13",
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/runtime-dom": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.21.tgz",
- "integrity": "sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
+ "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.5.21",
- "@vue/runtime-core": "3.5.21",
- "@vue/shared": "3.5.21",
+ "@vue/reactivity": "3.5.13",
+ "@vue/runtime-core": "3.5.13",
+ "@vue/shared": "3.5.13",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.21.tgz",
- "integrity": "sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
+ "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-ssr": "3.5.21",
- "@vue/shared": "3.5.21"
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13"
},
"peerDependencies": {
- "vue": "3.5.21"
+ "vue": "3.5.13"
}
},
"node_modules/@vue/shared": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.21.tgz",
- "integrity": "sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
+ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
"license": "MIT"
},
"node_modules/@webassemblyjs/ast": {
@@ -5832,31 +4478,10 @@
"node": ">= 0.6"
}
},
- "node_modules/accepts/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/accepts/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/acorn": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "version": "8.14.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -5865,20 +4490,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-phases": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
- "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10.13.0"
- },
- "peerDependencies": {
- "acorn": "^8.14.0"
- }
- },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
@@ -5983,9 +4594,9 @@
}
},
"node_modules/ansi-escapes": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.0.tgz",
- "integrity": "sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz",
+ "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==",
"license": "MIT",
"dependencies": {
"environment": "^1.0.0"
@@ -6069,9 +4680,9 @@
}
},
"node_modules/aproba": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz",
- "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
"license": "ISC"
},
"node_modules/are-we-there-yet": {
@@ -6095,23 +4706,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/argon2": {
- "version": "0.41.1",
- "resolved": "https://registry.npmjs.org/argon2/-/argon2-0.41.1.tgz",
- "integrity": "sha512-dqCW8kJXke8Ik+McUcMDltrbuAWETPyU6iq+4AhxqKphWi7pChB/Zgd/Tp/o8xRLbg8ksMj46F/vph9wnxpTzQ==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "@phc/format": "^1.0.0",
- "node-addon-api": "^8.1.0",
- "node-gyp-build": "^4.8.1"
- },
- "engines": {
- "node": ">=16.17.0"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -6241,27 +4835,27 @@
"license": "MIT"
},
"node_modules/axios": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
- "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
+ "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
- "form-data": "^4.0.4",
+ "form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/babel-preset-typescript-vue3": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/babel-preset-typescript-vue3/-/babel-preset-typescript-vue3-2.1.1.tgz",
- "integrity": "sha512-1AjtHb2eJzRErgtn7AnHUk1DyKtd5x8t0hntdZIsKvXf9W4fR43+/ZYEawWeiOrAEqWf7BnFMnNVkvbPu7erHg==",
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/babel-preset-typescript-vue3/-/babel-preset-typescript-vue3-2.0.17.tgz",
+ "integrity": "sha512-6AdNf72Jd9OTap9ws12bAehn/GuuBSqUPN+nuOY7XCMckRcvPbO1G+yFvF+ahQsiMCk+gUZwTie1eoQMzeesog==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-transform-typescript": "^7.27.1",
- "@babel/preset-typescript": "^7.27.1",
- "@vue/compiler-sfc": "^3.5.13"
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.3.2",
+ "@babel/preset-typescript": "^7.3.3",
+ "@vue/compiler-sfc": "^3.0.5"
},
"engines": {
"node": ">=8.0.0"
@@ -6276,16 +4870,6 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"license": "MIT"
},
- "node_modules/baseline-browser-mapping": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.6.tgz",
- "integrity": "sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "baseline-browser-mapping": "dist/cli.js"
- }
- },
"node_modules/basic-auth": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -6325,12 +4909,6 @@
"node": ">= 10.0.0"
}
},
- "node_modules/bcrypt/node_modules/node-addon-api": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
- "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
- "license": "MIT"
- },
"node_modules/bcryptjs": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
@@ -6351,9 +4929,9 @@
}
},
"node_modules/birpc": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.5.0.tgz",
- "integrity": "sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz",
+ "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==",
"dev": true,
"license": "MIT",
"funding": {
@@ -6408,39 +4986,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/body-parser/node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/body-parser/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/body-parser/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -6480,20 +5025,6 @@
"node": ">= 0.8"
}
},
- "node_modules/body-parser/node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/bonjour-service": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz",
@@ -6505,16 +5036,10 @@
"multicast-dns": "^7.2.5"
}
},
- "node_modules/bowser": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz",
- "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==",
- "license": "MIT"
- },
"node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -6534,9 +5059,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.26.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz",
- "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==",
+ "version": "4.24.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"dev": true,
"funding": [
{
@@ -6554,11 +5079,10 @@
],
"license": "MIT",
"dependencies": {
- "baseline-browser-mapping": "^2.8.3",
- "caniuse-lite": "^1.0.30001741",
- "electron-to-chromium": "^1.5.218",
- "node-releases": "^2.0.21",
- "update-browserslist-db": "^1.1.3"
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.1"
},
"bin": {
"browserslist": "cli.js"
@@ -6698,9 +5222,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001743",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz",
- "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==",
+ "version": "1.0.30001716",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz",
+ "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==",
"dev": true,
"funding": [
{
@@ -6731,9 +5255,9 @@
}
},
"node_modules/chai": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
- "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
+ "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6744,7 +5268,7 @@
"pathval": "^2.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=12"
}
},
"node_modules/chalk": {
@@ -6778,9 +5302,9 @@
}
},
"node_modules/chart.js": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz",
- "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==",
+ "version": "4.4.9",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz",
+ "integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7102,9 +5626,9 @@
}
},
"node_modules/compression": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
- "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz",
+ "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7112,7 +5636,7 @@
"compressible": "~2.0.18",
"debug": "2.6.9",
"negotiator": "~0.6.4",
- "on-headers": "~1.1.0",
+ "on-headers": "~1.0.2",
"safe-buffer": "5.2.1",
"vary": "~1.1.2"
},
@@ -7185,6 +5709,7 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -7251,9 +5776,9 @@
}
},
"node_modules/copy-file": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/copy-file/-/copy-file-11.1.0.tgz",
- "integrity": "sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/copy-file/-/copy-file-11.0.0.tgz",
+ "integrity": "sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -7406,15 +5931,15 @@
}
},
"node_modules/dayjs": {
- "version": "1.11.18",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz",
- "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==",
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
"node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -7465,9 +5990,9 @@
}
},
"node_modules/dedent": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz",
- "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz",
+ "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==",
"devOptional": true,
"license": "MIT",
"peerDependencies": {
@@ -7622,9 +6147,9 @@
}
},
"node_modules/detect-libc": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.0.tgz",
- "integrity": "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
"license": "Apache-2.0",
"engines": {
"node": ">=8"
@@ -7665,6 +6190,16 @@
"node": ">=0.3.1"
}
},
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
"node_modules/dijkstrajs": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
@@ -7733,9 +6268,9 @@
}
},
"node_modules/dotenv": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
- "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
+ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -7765,9 +6300,9 @@
}
},
"node_modules/dotenv-webpack": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.1.tgz",
- "integrity": "sha512-+TY/AJ2k9bU2EML3mxgLmaAvEcqs1Wbv6deCIUSI3eW3Xeo8LBQumYib6puyaSwbjC9JCzg/y5Pwjd/lePX04w==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz",
+ "integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7839,9 +6374,9 @@
}
},
"node_modules/edge.js": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/edge.js/-/edge.js-6.3.0.tgz",
- "integrity": "sha512-Xm7XW6J2+6cvfRK6AJEKV5hBF230iCvwQRg5wattg+RAzQ6tRwWSe4gqCsvvCaHt4xp10xkm8+ZdhApF1FVCzA==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/edge.js/-/edge.js-6.2.1.tgz",
+ "integrity": "sha512-me875zh6YA0V429hywgQIpHgMvQkondv5XHaP6EsL2yIBpLcBWCl7Ba1cai0SwYhp8iD0IyV3KjpxLrnW7S2Ag==",
"license": "MIT",
"dependencies": {
"@poppinss/inspect": "^1.0.1",
@@ -7868,16 +6403,16 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.222",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.222.tgz",
- "integrity": "sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==",
+ "version": "1.5.145",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.145.tgz",
+ "integrity": "sha512-pZ5EcTWRq/055MvSBgoFEyKf2i4apwfoqJbK/ak2jnFq8oHjZ+vzc3AhRcz37Xn+ZJfL58R666FLJx0YOK9yTw==",
"dev": true,
"license": "ISC"
},
"node_modules/emittery": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.0.tgz",
- "integrity": "sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.1.0.tgz",
+ "integrity": "sha512-rsX7ktqARv/6UQDgMaLfIqUWAEzzbCQiVh7V9rhDXp6c37yoJcks12NVD+XPkgl4AEavmNhVfrhGoqYwIsMYYA==",
"license": "MIT",
"engines": {
"node": ">=14.16"
@@ -7887,9 +6422,9 @@
}
},
"node_modules/emoji-regex": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz",
- "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
"license": "MIT"
},
"node_modules/encodeurl": {
@@ -7902,9 +6437,9 @@
}
},
"node_modules/end-of-stream": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
- "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7912,9 +6447,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.18.3",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
- "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7973,9 +6508,9 @@
}
},
"node_modules/error-ex": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
- "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8042,10 +6577,20 @@
"node": ">= 0.4"
}
},
+ "node_modules/es-toolkit": {
+ "version": "1.36.0",
+ "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.36.0.tgz",
+ "integrity": "sha512-5lpkRpDELuTSeAL//Rcg5urg+K/yOD1BobJSiNeCc89snMqgrhckmj8jdljqraDbpREiXTNW311RN518eVHBng==",
+ "license": "MIT",
+ "workspaces": [
+ "docs",
+ "benchmarks"
+ ]
+ },
"node_modules/esbuild": {
- "version": "0.25.10",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz",
- "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+ "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
"hasInstallScript": true,
"license": "MIT",
"bin": {
@@ -8055,32 +6600,31 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.10",
- "@esbuild/android-arm": "0.25.10",
- "@esbuild/android-arm64": "0.25.10",
- "@esbuild/android-x64": "0.25.10",
- "@esbuild/darwin-arm64": "0.25.10",
- "@esbuild/darwin-x64": "0.25.10",
- "@esbuild/freebsd-arm64": "0.25.10",
- "@esbuild/freebsd-x64": "0.25.10",
- "@esbuild/linux-arm": "0.25.10",
- "@esbuild/linux-arm64": "0.25.10",
- "@esbuild/linux-ia32": "0.25.10",
- "@esbuild/linux-loong64": "0.25.10",
- "@esbuild/linux-mips64el": "0.25.10",
- "@esbuild/linux-ppc64": "0.25.10",
- "@esbuild/linux-riscv64": "0.25.10",
- "@esbuild/linux-s390x": "0.25.10",
- "@esbuild/linux-x64": "0.25.10",
- "@esbuild/netbsd-arm64": "0.25.10",
- "@esbuild/netbsd-x64": "0.25.10",
- "@esbuild/openbsd-arm64": "0.25.10",
- "@esbuild/openbsd-x64": "0.25.10",
- "@esbuild/openharmony-arm64": "0.25.10",
- "@esbuild/sunos-x64": "0.25.10",
- "@esbuild/win32-arm64": "0.25.10",
- "@esbuild/win32-ia32": "0.25.10",
- "@esbuild/win32-x64": "0.25.10"
+ "@esbuild/aix-ppc64": "0.25.3",
+ "@esbuild/android-arm": "0.25.3",
+ "@esbuild/android-arm64": "0.25.3",
+ "@esbuild/android-x64": "0.25.3",
+ "@esbuild/darwin-arm64": "0.25.3",
+ "@esbuild/darwin-x64": "0.25.3",
+ "@esbuild/freebsd-arm64": "0.25.3",
+ "@esbuild/freebsd-x64": "0.25.3",
+ "@esbuild/linux-arm": "0.25.3",
+ "@esbuild/linux-arm64": "0.25.3",
+ "@esbuild/linux-ia32": "0.25.3",
+ "@esbuild/linux-loong64": "0.25.3",
+ "@esbuild/linux-mips64el": "0.25.3",
+ "@esbuild/linux-ppc64": "0.25.3",
+ "@esbuild/linux-riscv64": "0.25.3",
+ "@esbuild/linux-s390x": "0.25.3",
+ "@esbuild/linux-x64": "0.25.3",
+ "@esbuild/netbsd-arm64": "0.25.3",
+ "@esbuild/netbsd-x64": "0.25.3",
+ "@esbuild/openbsd-arm64": "0.25.3",
+ "@esbuild/openbsd-x64": "0.25.3",
+ "@esbuild/sunos-x64": "0.25.3",
+ "@esbuild/win32-arm64": "0.25.3",
+ "@esbuild/win32-ia32": "0.25.3",
+ "@esbuild/win32-x64": "0.25.3"
}
},
"node_modules/escalade": {
@@ -8181,17 +6725,14 @@
}
},
"node_modules/eslint-config-prettier": {
- "version": "10.1.8",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
- "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz",
+ "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==",
"dev": true,
"license": "MIT",
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
- "funding": {
- "url": "https://opencollective.com/eslint-config-prettier"
- },
"peerDependencies": {
"eslint": ">=7.0.0"
}
@@ -8214,14 +6755,14 @@
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "5.5.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz",
- "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==",
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz",
+ "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"prettier-linter-helpers": "^1.0.0",
- "synckit": "^0.11.7"
+ "synckit": "^0.11.0"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -8274,6 +6815,35 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/esm": {
"version": "3.2.25",
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
@@ -8394,24 +6964,24 @@
}
},
"node_modules/execa": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
- "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz",
+ "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@sindresorhus/merge-streams": "^4.0.0",
- "cross-spawn": "^7.0.6",
+ "cross-spawn": "^7.0.3",
"figures": "^6.1.0",
"get-stream": "^9.0.0",
- "human-signals": "^8.0.1",
+ "human-signals": "^8.0.0",
"is-plain-obj": "^4.1.0",
"is-stream": "^4.0.1",
"npm-run-path": "^6.0.0",
- "pretty-ms": "^9.2.0",
+ "pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^4.0.0",
- "yoctocolors": "^2.1.1"
+ "yoctocolors": "^2.0.0"
},
"engines": {
"node": "^18.19.0 || >=20.5.0"
@@ -8487,39 +7057,6 @@
"ms": "2.0.0"
}
},
- "node_modules/express/node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/express/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -8543,20 +7080,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/express/node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/fast-copy": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz",
@@ -8638,9 +7161,9 @@
"license": "MIT"
},
"node_modules/fast-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
"dev": true,
"funding": [
{
@@ -8654,24 +7177,6 @@
],
"license": "BSD-3-Clause"
},
- "node_modules/fast-xml-parser": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz",
- "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "strnum": "^2.1.0"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- }
- },
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -8704,13 +7209,10 @@
}
},
"node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "version": "6.4.4",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
+ "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
"license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -8821,18 +7323,18 @@
"dev": true,
"license": "MIT"
},
- "node_modules/find-cache-directory": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/find-cache-directory/-/find-cache-directory-6.0.0.tgz",
- "integrity": "sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==",
+ "node_modules/find-cache-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-5.0.0.tgz",
+ "integrity": "sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"common-path-prefix": "^3.0.0",
- "pkg-dir": "^8.0.0"
+ "pkg-dir": "^7.0.0"
},
"engines": {
- "node": ">=20"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -8859,7 +7361,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
"integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
@@ -8961,15 +7463,15 @@
}
},
"node_modules/flydrive": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/flydrive/-/flydrive-1.3.0.tgz",
- "integrity": "sha512-B0wsqrZR76d+J2ce6AxNcA1JDo4pViluaaFp5Fjso52zGY+s19uF8rKsQS8TJJsiyySKPI1b8K1w2j3RAUxd1Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/flydrive/-/flydrive-1.2.0.tgz",
+ "integrity": "sha512-l9ix5MhBE8bVwxyHdFku6z5KhGOCOXQDI9xGNIlACSz9UrDFQxAB1I6W0qffZiOBBDambiJZlEYBCxlvF4U7fw==",
"license": "MIT",
"dependencies": {
- "@humanwhocodes/retry": "^0.4.3",
- "@poppinss/utils": "^6.10.0",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@poppinss/utils": "^6.9.2",
"etag": "^1.8.1",
- "mime-types": "^3.0.1"
+ "mime-types": "^2.1.35"
},
"engines": {
"node": ">=20.6.0"
@@ -8992,18 +7494,18 @@
}
},
"node_modules/focus-trap": {
- "version": "7.6.5",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.5.tgz",
- "integrity": "sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==",
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz",
+ "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==",
"license": "MIT",
"dependencies": {
"tabbable": "^6.2.0"
}
},
"node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
@@ -9038,15 +7540,14 @@
}
},
"node_modules/form-data": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
- "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
- "hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
@@ -9054,35 +7555,14 @@
}
},
"node_modules/form-data-encoder": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.1.0.tgz",
- "integrity": "sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.0.2.tgz",
+ "integrity": "sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==",
"license": "MIT",
"engines": {
"node": ">= 18"
}
},
- "node_modules/form-data/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/form-data/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/formdata-node": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-6.0.3.tgz",
@@ -9141,9 +7621,9 @@
}
},
"node_modules/fs-extra": {
- "version": "11.3.2",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
- "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -9296,9 +7776,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
- "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -9431,23 +7911,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob-to-regex.js": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.0.1.tgz",
- "integrity": "sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
@@ -9456,19 +7919,13 @@
"license": "BSD-2-Clause"
},
"node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
}
},
"node_modules/globby": {
@@ -9506,9 +7963,9 @@
}
},
"node_modules/globby/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz",
+ "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==",
"devOptional": true,
"license": "MIT",
"engines": {
@@ -9528,9 +7985,9 @@
}
},
"node_modules/got": {
- "version": "14.4.9",
- "resolved": "https://registry.npmjs.org/got/-/got-14.4.9.tgz",
- "integrity": "sha512-Dbu075Jwm3QwNCIoCenqkqY8l2gd7e/TanuhMbzZIEsb1mpAneImSusKhZ+XdqqC3S91SDV/1SdWpGXKAlm8tA==",
+ "version": "14.4.7",
+ "resolved": "https://registry.npmjs.org/got/-/got-14.4.7.tgz",
+ "integrity": "sha512-DI8zV1231tqiGzOiOzQWDhsBmncFW7oQDH6Zgy6pDPrqJuVZMtoSgPLLsBZQj8Jg4JFfwoOsDA8NGtLQLnIx2g==",
"license": "MIT",
"dependencies": {
"@sindresorhus/is": "^7.0.1",
@@ -9552,18 +8009,6 @@
"url": "https://github.com/sindresorhus/got?sponsor=1"
}
},
- "node_modules/got/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -9784,9 +8229,9 @@
"license": "MIT"
},
"node_modules/http-cache-semantics": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
- "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
"license": "BSD-2-Clause"
},
"node_modules/http-deceiver": {
@@ -9976,19 +8421,15 @@
}
},
"node_modules/iconv-lite": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
- "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
}
},
"node_modules/ieee754": {
@@ -10106,12 +8547,12 @@
}
},
"node_modules/ioredis": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.7.0.tgz",
- "integrity": "sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g==",
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz",
+ "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==",
"license": "MIT",
"dependencies": {
- "@ioredis/commands": "^1.3.0",
+ "@ioredis/commands": "^1.1.1",
"cluster-key-slot": "^1.1.0",
"debug": "^4.3.4",
"denque": "^2.1.0",
@@ -10242,9 +8683,9 @@
}
},
"node_modules/is-network-error": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz",
- "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz",
+ "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10371,19 +8812,29 @@
}
},
"node_modules/jest-diff": {
- "version": "30.1.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.1.2.tgz",
- "integrity": "sha512-4+prq+9J61mOVXCa4Qp8ZjavdxzrWQXrI80GNxP8f4tkI2syPuPrJgdRPZRrfUTRvIoUwcmNLbqEJy9W800+NQ==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@jest/diff-sequences": "30.0.1",
- "@jest/get-type": "30.1.0",
- "chalk": "^4.1.2",
- "pretty-format": "30.0.5"
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
},
"engines": {
- "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-worker": {
@@ -10420,13 +8871,13 @@
}
},
"node_modules/jiti": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz",
- "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==",
+ "version": "1.21.7",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"devOptional": true,
"license": "MIT",
"bin": {
- "jiti": "lib/jiti-cli.mjs"
+ "jiti": "bin/jiti.js"
}
},
"node_modules/joycon": {
@@ -10529,9 +8980,9 @@
}
},
"node_modules/jsonfile": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
- "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
@@ -10677,14 +9128,14 @@
}
},
"node_modules/launch-editor": {
- "version": "2.11.1",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz",
- "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz",
+ "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "picocolors": "^1.1.1",
- "shell-quote": "^1.8.3"
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.8.1"
}
},
"node_modules/leaflet": {
@@ -10759,12 +9210,6 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT"
},
- "node_modules/lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
- "license": "MIT"
- },
"node_modules/lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
@@ -10804,9 +9249,9 @@
}
},
"node_modules/log-update/node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -10816,9 +9261,9 @@
}
},
"node_modules/log-update/node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -10828,12 +9273,12 @@
}
},
"node_modules/log-update/node_modules/is-fullwidth-code-point": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
- "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
+ "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
"license": "MIT",
"dependencies": {
- "get-east-asian-width": "^1.3.1"
+ "get-east-asian-width": "^1.0.0"
},
"engines": {
"node": ">=18"
@@ -10843,9 +9288,9 @@
}
},
"node_modules/log-update/node_modules/slice-ansi": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
- "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
+ "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.1",
@@ -10859,9 +9304,9 @@
}
},
"node_modules/log-update/node_modules/strip-ansi": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -10874,9 +9319,9 @@
}
},
"node_modules/loupe": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
- "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+ "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
"dev": true,
"license": "MIT"
},
@@ -10904,21 +9349,21 @@
}
},
"node_modules/luxon": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
- "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz",
+ "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==",
"license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/magic-string": {
- "version": "0.30.19",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
- "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.5"
+ "@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/mailcheck": {
@@ -10967,17 +9412,15 @@
}
},
"node_modules/memfs": {
- "version": "4.42.0",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.42.0.tgz",
- "integrity": "sha512-RG+4HMGyIVp6UWDWbFmZ38yKrSzblPnfJu0PyPt0hw52KW4PPlPp+HdV4qZBG0hLDuYVnf8wfQT4NymKXnlQjA==",
+ "version": "4.17.0",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.0.tgz",
+ "integrity": "sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/json-pack": "^1.11.0",
- "@jsonjoy.com/util": "^1.9.0",
- "glob-to-regex.js": "^1.0.1",
- "thingies": "^2.5.0",
- "tree-dump": "^1.0.3",
+ "@jsonjoy.com/json-pack": "^1.0.3",
+ "@jsonjoy.com/util": "^1.3.0",
+ "tree-dump": "^1.0.1",
"tslib": "^2.0.0"
},
"engines": {
@@ -11068,9 +9511,9 @@
}
},
"node_modules/mime": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz",
- "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.7.tgz",
+ "integrity": "sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==",
"funding": [
"https://github.com/sponsors/broofa"
],
@@ -11083,21 +9526,21 @@
}
},
"node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
- "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
- "mime-db": "^1.54.0"
+ "mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
@@ -11327,15 +9770,10 @@
}
},
"node_modules/node-addon-api": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz",
- "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "engines": {
- "node": "^18 || ^20 || >= 21"
- }
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
+ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
+ "license": "MIT"
},
"node_modules/node-exceptions": {
"version": "4.0.1",
@@ -11373,23 +9811,10 @@
"node": ">= 6.13.0"
}
},
- "node_modules/node-gyp-build": {
- "version": "4.8.4",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
- "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
- "license": "MIT",
- "optional": true,
- "peer": true,
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
- }
- },
"node_modules/node-releases": {
- "version": "2.0.21",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz",
- "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==",
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
"dev": true,
"license": "MIT"
},
@@ -11433,9 +9858,9 @@
}
},
"node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -11466,9 +9891,9 @@
}
},
"node_modules/normalize-url": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz",
- "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
+ "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
"license": "MIT",
"engines": {
"node": ">=14.16"
@@ -11610,9 +10035,9 @@
}
},
"node_modules/on-headers": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
- "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11644,16 +10069,16 @@
}
},
"node_modules/open": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
- "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.1.tgz",
+ "integrity": "sha512-zy1wx4+P3PfhXSEPJNtZmJXfhkkIaxU1VauWIrDZw1O7uJRDRJtKr9n3Ic4NgbA16KyOxOXO2ng9gYwCdXuSXA==",
"dev": true,
"license": "MIT",
"dependencies": {
"default-browser": "^5.2.1",
"define-lazy-prop": "^3.0.0",
"is-inside-container": "^1.0.0",
- "wsl-utils": "^0.1.0"
+ "is-wsl": "^3.1.0"
},
"engines": {
"node": ">=18"
@@ -11815,7 +10240,6 @@
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz",
"integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==",
- "devOptional": true,
"license": "MIT",
"dependencies": {
"quansync": "^0.2.7"
@@ -11974,15 +10398,28 @@
}
},
"node_modules/pathval": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
- "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
+ "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 14.16"
}
},
+ "node_modules/peek-readable": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-7.0.0.tgz",
+ "integrity": "sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
"node_modules/perfect-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
@@ -11991,22 +10428,22 @@
"license": "MIT"
},
"node_modules/pg": {
- "version": "8.16.3",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz",
- "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==",
+ "version": "8.15.6",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.15.6.tgz",
+ "integrity": "sha512-yvao7YI3GdmmrslNVsZgx9PfntfWrnXwtR+K/DjI0I/sTKif4Z623um+sjVZ1hk5670B+ODjvHDAckKdjmPTsg==",
"license": "MIT",
"dependencies": {
- "pg-connection-string": "^2.9.1",
- "pg-pool": "^3.10.1",
- "pg-protocol": "^1.10.3",
- "pg-types": "2.2.0",
- "pgpass": "1.0.5"
+ "pg-connection-string": "^2.8.5",
+ "pg-pool": "^3.9.6",
+ "pg-protocol": "^1.9.5",
+ "pg-types": "^2.1.0",
+ "pgpass": "1.x"
},
"engines": {
- "node": ">= 16.0.0"
+ "node": ">= 8.0.0"
},
"optionalDependencies": {
- "pg-cloudflare": "^1.2.7"
+ "pg-cloudflare": "^1.2.5"
},
"peerDependencies": {
"pg-native": ">=3.0.1"
@@ -12018,9 +10455,9 @@
}
},
"node_modules/pg-cloudflare": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz",
- "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz",
+ "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==",
"license": "MIT",
"optional": true
},
@@ -12040,18 +10477,18 @@
}
},
"node_modules/pg-pool": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz",
- "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==",
+ "version": "3.9.6",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.9.6.tgz",
+ "integrity": "sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==",
"license": "MIT",
"peerDependencies": {
"pg": ">=8.0"
}
},
"node_modules/pg-protocol": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz",
- "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==",
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.9.5.tgz",
+ "integrity": "sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==",
"license": "MIT"
},
"node_modules/pg-types": {
@@ -12071,9 +10508,9 @@
}
},
"node_modules/pg/node_modules/pg-connection-string": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz",
- "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==",
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.8.5.tgz",
+ "integrity": "sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==",
"license": "MIT"
},
"node_modules/pgpass": {
@@ -12092,9 +10529,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -12114,9 +10551,9 @@
}
},
"node_modules/pinia": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.3.tgz",
- "integrity": "sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.2.tgz",
+ "integrity": "sha512-sH2JK3wNY809JOeiiURUR0wehJ9/gd9qFN2Y828jCbxEzKEmEt0pzCXwqiSTfuRsK9vQsOflSdnbdBOGrhtn+g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12136,9 +10573,9 @@
}
},
"node_modules/pino": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/pino/-/pino-9.10.0.tgz",
- "integrity": "sha512-VOFxoNnxICtxaN8S3E73pR66c5MTFC+rwRcNRyHV/bV/c90dXvJqMfjkeRFsGBDXmlUN3LccJQPqGIufnaJePA==",
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/pino/-/pino-9.6.0.tgz",
+ "integrity": "sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==",
"license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0",
@@ -12146,7 +10583,7 @@
"on-exit-leak-free": "^2.1.0",
"pino-abstract-transport": "^2.0.0",
"pino-std-serializers": "^7.0.0",
- "process-warning": "^5.0.0",
+ "process-warning": "^4.0.0",
"quick-format-unescaped": "^4.0.3",
"real-require": "^0.2.0",
"safe-stable-stringify": "^2.3.1",
@@ -12167,9 +10604,9 @@
}
},
"node_modules/pino-pretty": {
- "version": "13.1.1",
- "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz",
- "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.0.0.tgz",
+ "integrity": "sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12183,44 +10620,14 @@
"on-exit-leak-free": "^2.1.0",
"pino-abstract-transport": "^2.0.0",
"pump": "^3.0.0",
- "secure-json-parse": "^4.0.0",
+ "secure-json-parse": "^2.4.0",
"sonic-boom": "^4.0.1",
- "strip-json-comments": "^5.0.2"
+ "strip-json-comments": "^3.1.1"
},
"bin": {
"pino-pretty": "bin.js"
}
},
- "node_modules/pino-pretty/node_modules/secure-json-parse": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz",
- "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "BSD-3-Clause"
- },
- "node_modules/pino-pretty/node_modules/strip-json-comments": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz",
- "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/pino-std-serializers": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz",
@@ -12238,21 +10645,48 @@
}
},
"node_modules/pkg-dir": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz",
- "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "find-up-simple": "^1.0.0"
+ "find-up": "^6.3.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
"node_modules/pluralize": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
@@ -12272,9 +10706,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
"funding": [
{
"type": "opencollective",
@@ -12291,7 +10725,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.11",
+ "nanoid": "^3.3.8",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -12318,20 +10752,10 @@
}
},
"node_modules/postcss-js": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz",
- "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
"dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
"license": "MIT",
"dependencies": {
"camelcase-css": "^2.0.1"
@@ -12339,6 +10763,10 @@
"engines": {
"node": "^12 || ^14 || >= 16"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
"peerDependencies": {
"postcss": "^8.4.21"
}
@@ -12380,15 +10808,15 @@
}
},
"node_modules/postcss-loader": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.0.tgz",
- "integrity": "sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz",
+ "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"cosmiconfig": "^9.0.0",
- "jiti": "^2.5.1",
- "semver": "^7.6.2"
+ "jiti": "^1.20.0",
+ "semver": "^7.5.4"
},
"engines": {
"node": ">= 18.12.0"
@@ -12412,9 +10840,9 @@
}
},
"node_modules/postcss-loader/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -12521,9 +10949,9 @@
}
},
"node_modules/prettier": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
- "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -12550,18 +10978,18 @@
}
},
"node_modules/pretty-format": {
- "version": "30.0.5",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz",
- "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@jest/schemas": "30.0.5",
- "ansi-styles": "^5.2.0",
- "react-is": "^18.3.1"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
"engines": {
- "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/pretty-format/node_modules/ansi-styles": {
@@ -12587,9 +11015,9 @@
}
},
"node_modules/pretty-ms": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz",
- "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
+ "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -12616,9 +11044,9 @@
"license": "MIT"
},
"node_modules/process-warning": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz",
- "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz",
+ "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==",
"funding": [
{
"type": "github",
@@ -12661,9 +11089,9 @@
"license": "MIT"
},
"node_modules/pump": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
- "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12714,10 +11142,9 @@
}
},
"node_modules/quansync": {
- "version": "0.2.11",
- "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz",
- "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==",
- "devOptional": true,
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz",
+ "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==",
"funding": [
{
"type": "individual",
@@ -12799,18 +11226,18 @@
}
},
"node_modules/raw-body": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
- "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
+ "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
- "iconv-lite": "0.7.0",
+ "iconv-lite": "0.6.3",
"unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 0.8"
}
},
"node_modules/react-is": {
@@ -12848,19 +11275,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/read-package-up/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/read-pkg": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
@@ -12899,19 +11313,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/read-pkg/node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
@@ -12975,16 +11376,16 @@
}
},
"node_modules/redis": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-5.8.2.tgz",
- "integrity": "sha512-31vunZj07++Y1vcFGcnNWEf5jPoTkGARgfWI4+Tk55vdwHxhAvug8VEtW7Cx+/h47NuJTEg/JL77zAwC6E0OeA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-5.0.0.tgz",
+ "integrity": "sha512-J/fzf0cYeFw5NP4aYIvv9owYOcNUsaDqF4qmwbSuaV4yKBLaIHJQIFbAKLgjn99GDXdJBbfqCRXE7+BIlkpATA==",
"license": "MIT",
"dependencies": {
- "@redis/bloom": "5.8.2",
- "@redis/client": "5.8.2",
- "@redis/json": "5.8.2",
- "@redis/search": "5.8.2",
- "@redis/time-series": "5.8.2"
+ "@redis/bloom": "5.0.0",
+ "@redis/client": "5.0.0",
+ "@redis/json": "5.0.0",
+ "@redis/search": "5.0.0",
+ "@redis/time-series": "5.0.0"
},
"engines": {
"node": ">= 18"
@@ -13166,12 +11567,12 @@
"license": "MIT"
},
"node_modules/rollup": {
- "version": "4.51.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.51.0.tgz",
- "integrity": "sha512-7cR0XWrdp/UAj2HMY/Y4QQEUjidn3l2AY1wSeZoFjMbD8aOMPoV9wgTFYbrJpPzzvejDEini1h3CiUP8wLzxQA==",
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz",
+ "integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==",
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.8"
+ "@types/estree": "1.0.7"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -13181,34 +11582,33 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.51.0",
- "@rollup/rollup-android-arm64": "4.51.0",
- "@rollup/rollup-darwin-arm64": "4.51.0",
- "@rollup/rollup-darwin-x64": "4.51.0",
- "@rollup/rollup-freebsd-arm64": "4.51.0",
- "@rollup/rollup-freebsd-x64": "4.51.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.51.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.51.0",
- "@rollup/rollup-linux-arm64-gnu": "4.51.0",
- "@rollup/rollup-linux-arm64-musl": "4.51.0",
- "@rollup/rollup-linux-loong64-gnu": "4.51.0",
- "@rollup/rollup-linux-ppc64-gnu": "4.51.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.51.0",
- "@rollup/rollup-linux-riscv64-musl": "4.51.0",
- "@rollup/rollup-linux-s390x-gnu": "4.51.0",
- "@rollup/rollup-linux-x64-gnu": "4.51.0",
- "@rollup/rollup-linux-x64-musl": "4.51.0",
- "@rollup/rollup-openharmony-arm64": "4.51.0",
- "@rollup/rollup-win32-arm64-msvc": "4.51.0",
- "@rollup/rollup-win32-ia32-msvc": "4.51.0",
- "@rollup/rollup-win32-x64-msvc": "4.51.0",
+ "@rollup/rollup-android-arm-eabi": "4.40.1",
+ "@rollup/rollup-android-arm64": "4.40.1",
+ "@rollup/rollup-darwin-arm64": "4.40.1",
+ "@rollup/rollup-darwin-x64": "4.40.1",
+ "@rollup/rollup-freebsd-arm64": "4.40.1",
+ "@rollup/rollup-freebsd-x64": "4.40.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.40.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.40.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.40.1",
+ "@rollup/rollup-linux-arm64-musl": "4.40.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.40.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.40.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.40.1",
+ "@rollup/rollup-linux-riscv64-musl": "4.40.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.40.1",
+ "@rollup/rollup-linux-x64-gnu": "4.40.1",
+ "@rollup/rollup-linux-x64-musl": "4.40.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.40.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.40.1",
+ "@rollup/rollup-win32-x64-msvc": "4.40.1",
"fsevents": "~2.3.2"
}
},
"node_modules/run-applescript": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
- "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -13455,19 +11855,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/serialize-error/node_modules/type-fest": {
- "version": "4.41.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
- "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
- "devOptional": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/serialize-javascript": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
@@ -13541,29 +11928,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/serve-index/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-index/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/serve-index/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -13639,9 +12003,9 @@
}
},
"node_modules/shell-quote": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
- "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz",
+ "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -13770,9 +12134,9 @@
}
},
"node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -13802,16 +12166,6 @@
"websocket-driver": "^0.7.4"
}
},
- "node_modules/sockjs/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/sonic-boom": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz",
@@ -13887,9 +12241,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.22",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
- "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
+ "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
"dev": true,
"license": "CC0-1.0"
},
@@ -14047,9 +12401,9 @@
}
},
"node_modules/string-width/node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -14059,9 +12413,9 @@
}
},
"node_modules/string-width/node_modules/strip-ansi": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -14140,25 +12494,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strnum": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz",
- "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT"
- },
"node_modules/strtok3": {
- "version": "10.3.4",
- "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz",
- "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.2.2.tgz",
+ "integrity": "sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==",
"license": "MIT",
"dependencies": {
- "@tokenizer/token": "^0.3.0"
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^7.0.0"
},
"engines": {
"node": ">=18"
@@ -14192,9 +12535,9 @@
}
},
"node_modules/sucrase/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14262,7 +12605,7 @@
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
"integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
- "deprecated": "Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net",
+ "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14295,9 +12638,9 @@
}
},
"node_modules/superagent/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -14324,7 +12667,6 @@
"version": "6.3.4",
"resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz",
"integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==",
- "deprecated": "Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14336,9 +12678,9 @@
}
},
"node_modules/supports-color": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
- "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.0.0.tgz",
+ "integrity": "sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -14360,13 +12702,14 @@
}
},
"node_modules/synckit": {
- "version": "0.11.11",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
- "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.4.tgz",
+ "integrity": "sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@pkgr/core": "^0.2.9"
+ "@pkgr/core": "^0.2.3",
+ "tslib": "^2.8.1"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -14457,16 +12800,6 @@
"node": ">= 6"
}
},
- "node_modules/tailwindcss/node_modules/jiti": {
- "version": "1.21.7",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
- "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jiti": "bin/jiti.js"
- }
- },
"node_modules/tailwindcss/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -14494,17 +12827,13 @@
}
},
"node_modules/tapable": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz",
- "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
}
},
"node_modules/tar": {
@@ -14561,15 +12890,15 @@
}
},
"node_modules/terser": {
- "version": "5.44.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz",
- "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==",
+ "version": "5.39.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz",
+ "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
"devOptional": true,
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.15.0",
+ "acorn": "^8.8.2",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
@@ -14655,18 +12984,14 @@
}
},
"node_modules/thingies": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz",
- "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==",
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz",
+ "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==",
"dev": true,
- "license": "MIT",
+ "license": "Unlicense",
"engines": {
"node": ">=10.18"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
"peerDependencies": {
"tslib": "^2"
}
@@ -14724,17 +13049,16 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
"integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
- "devOptional": true,
"license": "MIT"
},
"node_modules/tinyglobby": {
- "version": "0.2.15",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
+ "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
"license": "MIT",
"dependencies": {
- "fdir": "^6.5.0",
- "picomatch": "^4.0.3"
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
},
"engines": {
"node": ">=12.0.0"
@@ -14780,12 +13104,11 @@
}
},
"node_modules/token-types": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz",
- "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz",
+ "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==",
"license": "MIT",
"dependencies": {
- "@borewit/text-codec": "^0.1.0",
"@tokenizer/token": "^0.3.0",
"ieee754": "^1.2.1"
},
@@ -14804,9 +13127,9 @@
"license": "MIT"
},
"node_modules/tree-dump": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz",
- "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz",
+ "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -14834,9 +13157,9 @@
"license": "Apache-2.0"
},
"node_modules/ts-loader": {
- "version": "9.5.4",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz",
- "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz",
+ "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14855,9 +13178,9 @@
}
},
"node_modules/ts-loader/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -14868,13 +13191,13 @@
}
},
"node_modules/ts-loader/node_modules/source-map": {
- "version": "0.7.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
- "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
- "node": ">= 12"
+ "node": ">= 8"
}
},
"node_modules/ts-morph": {
@@ -14889,9 +13212,9 @@
}
},
"node_modules/ts-node-maintained": {
- "version": "10.9.6",
- "resolved": "https://registry.npmjs.org/ts-node-maintained/-/ts-node-maintained-10.9.6.tgz",
- "integrity": "sha512-m/1ZCksNnIofWjmY5/K+6y8oia05Y/5+vMWTvuFzrr6UGRV7ImrLMyYAB06cHlwBW5/NuYeZoh44mAOGNRNxZA==",
+ "version": "10.9.5",
+ "resolved": "https://registry.npmjs.org/ts-node-maintained/-/ts-node-maintained-10.9.5.tgz",
+ "integrity": "sha512-p8LJFxBTE3YZYGcOMxWKEpaY2nz55NyOg+mTDIOW/MrOIUTAAb7+UkleRu5z90P/fCVVv5pXN1/nb92G/tSNyw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14991,32 +13314,39 @@
}
},
"node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
+ "version": "4.40.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.1.tgz",
+ "integrity": "sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==",
"license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=10"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/type-is": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
- "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"license": "MIT",
"dependencies": {
- "content-type": "^1.0.5",
- "media-typer": "^1.1.0",
- "mime-types": "^3.0.0"
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/type-is/node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/typescript": {
"version": "5.7.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
@@ -15044,9 +13374,9 @@
}
},
"node_modules/uint8array-extras": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz",
- "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz",
+ "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -15150,13 +13480,10 @@
}
},
"node_modules/uuid": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
"license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
@@ -15187,9 +13514,9 @@
}
},
"node_modules/validator": {
- "version": "13.15.15",
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz",
- "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==",
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.0.tgz",
+ "integrity": "sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==",
"license": "MIT",
"engines": {
"node": ">= 0.10"
@@ -15205,9 +13532,9 @@
}
},
"node_modules/vite": {
- "version": "6.3.6",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz",
- "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==",
+ "version": "6.3.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz",
+ "integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==",
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
@@ -15294,16 +13621,16 @@
}
},
"node_modules/vue": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.21.tgz",
- "integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz",
+ "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.5.21",
- "@vue/compiler-sfc": "3.5.21",
- "@vue/runtime-dom": "3.5.21",
- "@vue/server-renderer": "3.5.21",
- "@vue/shared": "3.5.21"
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-sfc": "3.5.13",
+ "@vue/runtime-dom": "3.5.13",
+ "@vue/server-renderer": "3.5.13",
+ "@vue/shared": "3.5.13"
},
"peerDependencies": {
"typescript": "*"
@@ -15360,9 +13687,9 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
- "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15390,24 +13717,23 @@
"license": "BSD-2-Clause"
},
"node_modules/webpack": {
- "version": "5.101.3",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz",
- "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==",
+ "version": "5.99.7",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.7.tgz",
+ "integrity": "sha512-CNqKBRMQjwcmKR0idID5va1qlhrqVUKpovi+Ec79ksW8ux7iS1+A6VqzfZXgVYCFRKl7XL5ap3ZoMpwBJxcg0w==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
- "@types/estree": "^1.0.8",
+ "@types/estree": "^1.0.6",
"@types/json-schema": "^7.0.15",
"@webassemblyjs/ast": "^1.14.1",
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
- "acorn": "^8.15.0",
- "acorn-import-phases": "^1.0.3",
+ "acorn": "^8.14.0",
"browserslist": "^4.24.0",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.3",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
@@ -15421,7 +13747,7 @@
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.11",
"watchpack": "^2.4.1",
- "webpack-sources": "^3.3.3"
+ "webpack-sources": "^3.2.3"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -15440,15 +13766,15 @@
}
},
"node_modules/webpack-dev-middleware": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.3.tgz",
- "integrity": "sha512-5kA/PzpZzDz5mNOkcNLmU1UdjGeSSxd7rt1akWpI70jMNHLASiBPRaQZn0hgyhvhawfIwSnnLfDABIxL3ueyFg==",
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz",
+ "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==",
"dev": true,
"license": "MIT",
"dependencies": {
"colorette": "^2.0.10",
"memfs": "^4.6.0",
- "mime-types": "^3.0.1",
+ "mime-types": "^2.1.31",
"on-finished": "^2.4.1",
"range-parser": "^1.2.1",
"schema-utils": "^4.0.0"
@@ -15470,9 +13796,9 @@
}
},
"node_modules/webpack-dev-server": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz",
- "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.1.tgz",
+ "integrity": "sha512-ml/0HIj9NLpVKOMq+SuBPLHcmbG+TGIjXRHsYfZwocUBIqEvws8NnS/V9AFQ5FKP+tgn5adwVwRrTEpGL33QFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15492,7 +13818,7 @@
"connect-history-api-fallback": "^2.0.0",
"express": "^4.21.2",
"graceful-fs": "^4.2.6",
- "http-proxy-middleware": "^2.0.9",
+ "http-proxy-middleware": "^2.0.7",
"ipaddr.js": "^2.1.0",
"launch-editor": "^2.6.1",
"open": "^10.0.3",
@@ -15602,9 +13928,9 @@
}
},
"node_modules/webpack-sources": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz",
- "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -15638,31 +13964,6 @@
"node": ">=4.0"
}
},
- "node_modules/webpack/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/webpack/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -15775,9 +14076,9 @@
"license": "MIT"
},
"node_modules/wrap-ansi": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
- "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.1",
@@ -15843,9 +14144,9 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -15855,9 +14156,9 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -15867,9 +14168,9 @@
}
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -15888,9 +14189,9 @@
"license": "ISC"
},
"node_modules/ws": {
- "version": "8.18.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
- "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "version": "8.18.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+ "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15909,22 +14210,6 @@
}
}
},
- "node_modules/wsl-utils": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
- "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-wsl": "^3.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/xmlbuilder2": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz",
@@ -16000,16 +14285,16 @@
"peer": true
},
"node_modules/yaml": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
- "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz",
+ "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==",
"devOptional": true,
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
- "node": ">= 14.6"
+ "node": ">= 14"
}
},
"node_modules/yargs": {
@@ -16169,9 +14454,9 @@
}
},
"node_modules/yoctocolors": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
- "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
"devOptional": true,
"license": "MIT",
"engines": {
@@ -16193,14 +14478,17 @@
}
},
"node_modules/youch-core": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz",
- "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.2.tgz",
+ "integrity": "sha512-fusrlIMLeRvTFYLUjJ9KzlGC3N+6MOPJ68HNj/yJv2nz7zq8t4HEviLms2gkdRPUS7F5rZ5n+pYx9r88m6IE1g==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "@poppinss/exception": "^1.2.2",
+ "@poppinss/exception": "^1.2.0",
"error-stack-parser-es": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/youch-terminal": {
diff --git a/package.json b/package.json
index 7ae829f..c858691 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,7 @@
"dependencies": {
"@adonisjs/auth": "^9.2.4",
"@adonisjs/bodyparser": "^10.0.1",
- "@adonisjs/core": "6.17.2",
+ "@adonisjs/core": "^6.17.0",
"@adonisjs/cors": "^2.2.1",
"@adonisjs/drive": "^3.2.0",
"@adonisjs/inertia": "^2.1.3",
diff --git a/providers/rule_provider.ts b/providers/rule_provider.ts
deleted file mode 100644
index c945a5d..0000000
--- a/providers/rule_provider.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { ApplicationService } from '@adonisjs/core/types';
-
-export default class RuleProvider {
- constructor(protected app: ApplicationService) {}
-
- public register() {
- // Register your own bindings
- }
-
- public async boot() {
- // IoC container is ready
- // await import("../src/rules/index.js");
-
- await import('#start/rules/unique');
- await import('#start/rules/translated_language');
- await import('#start/rules/unique_person');
- // () => import('#start/rules/file_length'),
- // () => import('#start/rules/file_scan'),
- // () => import('#start/rules/allowed_extensions_mimetypes'),
- await import('#start/rules/dependent_array_min_length');
- await import('#start/rules/referenceValidation');
- await import('#start/rules/valid_mimetype');
- await import('#start/rules/array_contains_types');
- await import('#start/rules/orcid');
- }
-
- public async ready() {
- // App is ready
- }
-
- public async shutdown() {
- // Cleanup, since app is going down
- }
-}
diff --git a/providers/vinejs_provider.ts b/providers/vinejs_provider.ts
index 568dd3e..e4aad4c 100644
--- a/providers/vinejs_provider.ts
+++ b/providers/vinejs_provider.ts
@@ -6,16 +6,17 @@
import type { ApplicationService } from '@adonisjs/core/types';
import vine, { symbols, BaseLiteralType, Vine } from '@vinejs/vine';
import type { FieldContext, FieldOptions } from '@vinejs/vine/types';
+// import type { MultipartFile, FileValidationOptions } from '@adonisjs/bodyparser/types';
import type { MultipartFile } from '@adonisjs/core/bodyparser';
import type { FileValidationOptions } from '@adonisjs/core/types/bodyparser';
import { Request, RequestValidator } from '@adonisjs/core/http';
import MimeType from '#models/mime_type';
+
/**
* Validation options accepted by the "file" rule
*/
export type FileRuleValidationOptions = Partial | ((field: FieldContext) => Partial);
-
/**
* Extend VineJS
*/
@@ -24,7 +25,6 @@ declare module '@vinejs/vine' {
myfile(options?: FileRuleValidationOptions): VineMultipartFile;
}
}
-
/**
* Extend HTTP request class
*/
@@ -36,54 +36,19 @@ declare module '@adonisjs/core/http' {
* Checks if the value is an instance of multipart file
* from bodyparser.
*/
-export function isBodyParserFile(file: MultipartFile | unknown): file is MultipartFile {
+export function isBodyParserFile(file: MultipartFile | unknown): boolean {
return !!(file && typeof file === 'object' && 'isMultipartFile' in file);
}
+export async function getEnabledExtensions() {
+ const enabledExtensions = await MimeType.query().select('file_extension').where('enabled', true).exec();
+ const extensions = enabledExtensions
+ .map((extension) => {
+ return extension.file_extension.split('|');
+ })
+ .flat();
-/**
- * Cache for enabled extensions to reduce database queries
- */
-let extensionsCache: string[] | null = null;
-let cacheTimestamp = 0;
-const CACHE_DURATION = 5 * 60 * 1000; // 5 minutes
-
-/**
- * Get enabled extensions with caching
- */
-export async function getEnabledExtensions(): Promise {
- const now = Date.now();
-
- if (extensionsCache && now - cacheTimestamp < CACHE_DURATION) {
- return extensionsCache;
- }
-
- try {
- const enabledExtensions = await MimeType.query().select('file_extension').where('enabled', true).exec();
-
- const extensions = enabledExtensions
- .map((extension) => extension.file_extension.split('|'))
- .flat()
- .map((ext) => ext.toLowerCase().trim())
- .filter((ext) => ext.length > 0);
-
- extensionsCache = [...new Set(extensions)]; // Remove duplicates
- cacheTimestamp = now;
-
- return extensionsCache;
- } catch (error) {
- console.error('Error fetching enabled extensions:', error);
- return extensionsCache || [];
- }
+ return extensions;
}
-
-/**
- * Clear extensions cache
- */
-export function clearExtensionsCache(): void {
- extensionsCache = null;
- cacheTimestamp = 0;
-}
-
/**
* VineJS validation rule that validates the file to be an
* instance of BodyParser MultipartFile class.
@@ -100,7 +65,6 @@ const isMultipartFile = vine.createRule(async (file: MultipartFile | unknown, op
// At this point, you can use type assertion to explicitly tell TypeScript that file is of type MultipartFile
const validatedFile = file as MultipartFile;
const validationOptions = typeof options === 'function' ? options(field) : options;
-
/**
* Set size when it's defined in the options and missing
* on the file instance
@@ -108,29 +72,30 @@ const isMultipartFile = vine.createRule(async (file: MultipartFile | unknown, op
if (validatedFile.sizeLimit === undefined && validationOptions.size) {
validatedFile.sizeLimit = validationOptions.size;
}
-
/**
* Set extensions when it's defined in the options and missing
* on the file instance
*/
- if (validatedFile.allowedExtensions === undefined) {
- if (validationOptions.extnames !== undefined) {
- validatedFile.allowedExtensions = validationOptions.extnames;
- } else {
- validatedFile.allowedExtensions = await getEnabledExtensions();
- }
+ // if (validatedFile.allowedExtensions === undefined && validationOptions.extnames) {
+ // validatedFile.allowedExtensions = validationOptions.extnames;
+ // }
+ if (validatedFile.allowedExtensions === undefined && validationOptions.extnames !== undefined) {
+ validatedFile.allowedExtensions = validationOptions.extnames; // await getEnabledExtensions();
+ } else if (validatedFile.allowedExtensions === undefined && validationOptions.extnames === undefined) {
+ validatedFile.allowedExtensions = await getEnabledExtensions();
}
-
+ /**
+ * wieder lรถschen
+ * Set extensions when it's defined in the options and missing
+ * on the file instance
+ */
+ // if (file.clientNameSizeLimit === undefined && validationOptions.clientNameSizeLimit) {
+ // file.clientNameSizeLimit = validationOptions.clientNameSizeLimit;
+ // }
/**
* Validate file
*/
- try {
- validatedFile.validate();
- } catch (error) {
- field.report(`File validation failed: ${error.message}`, 'file.validation_error', field, validationOptions);
- return;
- }
-
+ validatedFile.validate();
/**
* Report errors
*/
@@ -142,37 +107,36 @@ const isMultipartFile = vine.createRule(async (file: MultipartFile | unknown, op
const MULTIPART_FILE: typeof symbols.SUBTYPE = symbols.SUBTYPE;
export class VineMultipartFile extends BaseLiteralType {
+
[MULTIPART_FILE]: string;
- public validationOptions?: FileRuleValidationOptions;
+ // constructor(validationOptions?: FileRuleValidationOptions, options?: FieldOptions) {
+ // super(options, [isMultipartFile(validationOptions || {})]);
+ // this.validationOptions = validationOptions;
+ // this.#private = true;
+ // }
+
+ // clone(): this {
+ // return new VineMultipartFile(this.validationOptions, this.cloneOptions()) as this;
+ // }
+ // #private;
+ // constructor(validationOptions?: FileRuleValidationOptions, options?: FieldOptions, validations?: Validation[]);
+ // clone(): this;
+
+ public validationOptions;
// extnames: (18) ['gpkg', 'htm', 'html', 'csv', 'txt', 'asc', 'c', 'cc', 'h', 'srt', 'tiff', 'pdf', 'png', 'zip', 'jpg', 'jpeg', 'jpe', 'xlsx']
// size: '512mb'
+ // public constructor(validationOptions?: FileRuleValidationOptions, options?: FieldOptions, validations?: Validation[]) {
public constructor(validationOptions?: FileRuleValidationOptions, options?: FieldOptions) {
+ // super(options, validations);
super(options, [isMultipartFile(validationOptions || {})]);
this.validationOptions = validationOptions;
}
public clone(): any {
+ // return new VineMultipartFile(this.validationOptions, this.cloneOptions(), this.cloneValidations());
return new VineMultipartFile(this.validationOptions, this.cloneOptions());
}
-
- /**
- * Set maximum file size
- */
- public maxSize(size: string | number): this {
- const newOptions = { ...this.validationOptions, size };
- return new VineMultipartFile(newOptions, this.cloneOptions()) as this;
- }
-
- /**
- * Set allowed extensions
- */
- public extensions(extnames: string[]): this {
- const newOptions = { ...this.validationOptions, extnames };
- return new VineMultipartFile(newOptions, this.cloneOptions()) as this;
- }
-
-
}
export default class VinejsProvider {
@@ -191,8 +155,13 @@ export default class VinejsProvider {
/**
* The container bindings have booted
*/
+
boot(): void {
- Vine.macro('myfile', function (this: Vine, options?: FileRuleValidationOptions) {
+ // VineString.macro('translatedLanguage', function (this: VineString, options: Options) {
+ // return this.use(translatedLanguageRule(options));
+ // });
+
+ Vine.macro('myfile', function (this: Vine, options) {
return new VineMultipartFile(options);
});
@@ -206,41 +175,6 @@ export default class VinejsProvider {
}
return new RequestValidator(this.ctx).validateUsing(...args);
});
-
- // Ensure MIME validation macros are loaded
- this.loadMimeValidationMacros();
- this.loadFileScanMacros();
- this.loadFileLengthMacros();
- }
-
- /**
- * Load MIME validation macros - called during boot to ensure they're available
- */
- private async loadMimeValidationMacros(): Promise {
- try {
- // Dynamically import the MIME validation rule to ensure macros are registered
- await import('#start/rules/allowed_extensions_mimetypes');
- } catch (error) {
- console.warn('Could not load MIME validation macros:', error);
- }
- }
-
- private async loadFileScanMacros(): Promise {
- try {
- // Dynamically import the MIME validation rule to ensure macros are registered
- await import('#start/rules/file_scan');
- } catch (error) {
- console.warn('Could not load MIME validation macros:', error);
- }
- }
-
- private async loadFileLengthMacros(): Promise {
- try {
- // Dynamically import the MIME validation rule to ensure macros are registered
- await import('#start/rules/file_length');
- } catch (error) {
- console.warn('Could not load MIME validation macros:', error);
- }
}
/**
@@ -256,7 +190,5 @@ export default class VinejsProvider {
/**
* Preparing to shutdown the app
*/
- async shutdown() {
- clearExtensionsCache();
- }
+ async shutdown() {}
}
diff --git a/public/assets2/solr.sef.json b/public/assets2/solr.sef.json
index 096d58e..690f934 100644
--- a/public/assets2/solr.sef.json
+++ b/public/assets2/solr.sef.json
@@ -1 +1 @@
-{"N":"package","version":"30","packageVersion":"1","saxonVersion":"SaxonJS 2.7","target":"JS","targetVersion":"2","name":"TOP-LEVEL","relocatable":"false","buildDateTime":"2025-10-09T14:12:43.043+02:00","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","C":[{"N":"co","binds":"","id":"0","vis":"PRIVATE","ex:uniform":"true","C":[{"N":"function","name":"Q{http://example.com/functions}escapeQuotes","as":"* ","slots":"201","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","module":"solr.xslt","baseUri":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","flags":"muu","sig":"1F r[* ] a[* ] ","sType":"1F r[* ] a[* ] ","line":"40","C":[{"N":"arg","slot":"0","name":"Q{}input","as":"* ","sType":"* "},{"N":"fn","name":"replace","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"body","line":"43","C":[{"N":"treat","as":"AS","diag":"0|0||replace","C":[{"N":"check","card":"?","diag":"0|0||replace","C":[{"N":"cvUntyped","to":"AS","diag":"0|0||replace","C":[{"N":"check","card":"?","diag":"0|0||replace","C":[{"N":"data","diag":"0|0||replace","C":[{"N":"varRef","name":"Q{}input","slot":"0"}]}]}]}]}]},{"N":"str","val":"\""},{"N":"str","val":"'"}]}]}]},{"N":"co","id":"1","binds":"0","C":[{"N":"mode","onNo":"TC","flags":"","patternSlots":"0","prec":"","C":[{"N":"templateRule","rank":"0","prec":"0","seq":"1","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","minImp":"0","flags":"s","slots":"200","baseUri":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","line":"380","module":"solr.xslt","expand-text":"false","match":"/root2","prio":"0.5","matches":"NE u[NE nQ{}root2,NE nQ{http://www.w3.org/1999/xhtml}root2]","C":[{"N":"p.withUpper","role":"match","axis":"parent","sType":"1NE u[NE nQ{}root2,NE nQ{http://www.w3.org/1999/xhtml}root2]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"p.nodeTest","test":"NE u[NE nQ{}root2,NE nQ{http://www.w3.org/1999/xhtml}root2]"},{"N":"p.nodeTest","test":"ND"}]},{"N":"elem","type":"element()","role":"action","name":"add","sType":"1NE ","nsuri":"","line":"381","C":[{"N":"elem","type":"element()","name":"doc","sType":"1NE ","nsuri":"","line":"382","C":[{"N":"sequence","sType":"* ","C":[{"N":"forEach","sType":"*NE ","line":"391","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"391","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Fulltext_Index,NE nQ{http://www.w3.org/1999/xhtml}Fulltext_Index]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"392","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"393","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"fulltext"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"394","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"dot","sType":"1NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"394"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"399","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"400","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"has_fulltext"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"401","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"401","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Has_Fulltext,NE nQ{http://www.w3.org/1999/xhtml}Has_Fulltext]"}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"405","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"405","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Fulltext_ID_Success,NE nQ{http://www.w3.org/1999/xhtml}Fulltext_ID_Success]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"406","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"407","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"fulltext_id_success"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"408","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"dot","sType":"1NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"408"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"413","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"413","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Fulltext_ID_Failure,NE nQ{http://www.w3.org/1999/xhtml}Fulltext_ID_Failure]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"414","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"415","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"fulltext_id_failure"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"416","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"dot","sType":"1NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"416"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"421","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"421","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}PersonReferee,NE nQ{http://www.w3.org/1999/xhtml}PersonReferee]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"422","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"423","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"referee"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"424","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}FirstName","name":"attribute","nodeTest":"*NA nQ{}FirstName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"424"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"426","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}LastName","name":"attribute","nodeTest":"*NA nQ{}LastName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"426"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"forEach","sType":"* ","line":"431","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"431","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE"}]}]}]},{"N":"choose","sType":"? ","line":"432","C":[{"N":"and","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"432","C":[{"N":"and","C":[{"N":"and","C":[{"N":"compareToString","op":"ne","val":"Person","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]}]},{"N":"compareToString","op":"ne","val":"PersonAuthor","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]}]}]},{"N":"compareToString","op":"ne","val":"PersonSubmitter","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]}]}]},{"N":"compareToString","op":"eq","val":"Person","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"substring","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"1"}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"6"}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"433","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"434","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"persons"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"435","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}FirstName","name":"attribute","nodeTest":"*NA nQ{}FirstName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"435"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"437","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}LastName","name":"attribute","nodeTest":"*NA nQ{}LastName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"437"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]},{"N":"forEach","sType":"* ","line":"451","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"451","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Collection,NE nQ{http://www.w3.org/1999/xhtml}Collection]"}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"choose","sType":"* ","type":"item()*","line":"452","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"453","C":[{"N":"attVal","name":"Q{}RoleName"},{"N":"str","val":"projects"}]},{"N":"sequence","sType":"*NE ","C":[{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"454","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"455","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"project"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"456","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Number","name":"attribute","nodeTest":"*NA nQ{}Number","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"456"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"458","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"459","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"app_area"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"460","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"substring","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"460","C":[{"N":"cvUntyped","to":"AS","diag":"0|0||substring","C":[{"N":"check","card":"?","diag":"0|0||substring","C":[{"N":"attVal","name":"Q{}Number"}]}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"0"}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"2"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"463","C":[{"N":"attVal","name":"Q{}RoleName"},{"N":"str","val":"institutes"}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"464","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"465","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"institute"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"466","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Name","name":"attribute","nodeTest":"*NA nQ{}Name","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"466"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"471","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"472","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"collection_ids"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"473","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"473"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"484","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"484","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Series,NE nQ{http://www.w3.org/1999/xhtml}Series]"}]}]}]},{"N":"sequence","sType":"*NE ","C":[{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"485","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"486","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"series_ids"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"487","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"487"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"490","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"491","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"series_number_for_id_"}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"493","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"493"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"495","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Number","name":"attribute","nodeTest":"*NA nQ{}Number","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"495"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"498","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"499","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"doc_sort_order_for_seriesid_"}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"501","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"501"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"503","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}DocSortOrder","name":"attribute","nodeTest":"*NA nQ{}DocSortOrder","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"503"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]}]},{"N":"choose","sType":"? ","line":"516","C":[{"N":"docOrder","sType":"*NE","line":"516","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"517","C":[{"N":"sequence","sType":"* ","C":[{"N":"att","name":"name","sType":"1NA ","line":"518","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"geo_location"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"let","var":"Q{}geolocation","slot":"0","sType":"* ","line":"524","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"524","C":[{"N":"str","val":"SOUTH-BOUND LATITUDE: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"data","diag":"0|1||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMin"}]}]}]}]},{"N":"str","val":" * WEST-BOUND LONGITUDE: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"data","diag":"0|3||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMin"}]}]}]}]},{"N":"str","val":" * NORTH-BOUND LATITUDE: "},{"N":"check","card":"?","diag":"0|5||concat","C":[{"N":"data","diag":"0|5||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMax"}]}]}]}]},{"N":"str","val":" * EAST-BOUND LONGITUDE: "},{"N":"check","card":"?","diag":"0|7||concat","C":[{"N":"data","diag":"0|7||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMax"}]}]}]}]}]},{"N":"sequence","sType":"? ","C":[{"N":"valueOf","flags":"l","sType":"1NT ","line":"526","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}geolocation","slot":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"526"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\n"}]},{"N":"choose","sType":"? ","line":"528","C":[{"N":"and","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"528","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}ElevationMin"},{"N":"str","val":""}]},{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}ElevationMax"},{"N":"str","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"529","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"529","C":[{"N":"str","val":" * ELEVATION MIN: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}ElevationMin"}]},{"N":"str","val":" * ELEVATION MAX: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"attVal","name":"Q{}ElevationMax"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"? ","line":"531","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"531","C":[{"N":"attVal","name":"Q{}ElevationAbsolut"},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"532","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"532","C":[{"N":"str","val":" * ELEVATION ABSOLUT: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}ElevationAbsolut"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\n"}]},{"N":"choose","sType":"? ","line":"536","C":[{"N":"and","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"536","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}DepthMin"},{"N":"str","val":""}]},{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}DepthMax"},{"N":"str","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"537","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"537","C":[{"N":"str","val":" * DEPTH MIN: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}DepthMin"}]},{"N":"str","val":" * DEPTH MAX: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"attVal","name":"Q{}DepthMax"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"? ","line":"539","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"539","C":[{"N":"attVal","name":"Q{}DepthAbsolut"},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"540","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"540","C":[{"N":"str","val":" * DEPTH ABSOLUT: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}DepthAbsolut"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\n"}]},{"N":"choose","sType":"? ","line":"544","C":[{"N":"and","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"544","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}TimeMin"},{"N":"str","val":""}]},{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}TimeMax"},{"N":"str","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"545","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"545","C":[{"N":"str","val":" * TIME MIN: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}TimeMin"}]},{"N":"str","val":" * TIME MAX: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"attVal","name":"Q{}TimeMax"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"? ","line":"547","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"547","C":[{"N":"attVal","name":"Q{}TimeAbsolut"},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"548","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"548","C":[{"N":"str","val":" * TIME ABSOLUT: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}TimeAbsolut"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]}]},{"N":"templateRule","rank":"1","prec":"0","seq":"0","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","minImp":"0","flags":"s","slots":"200","baseUri":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","line":"46","module":"solr.xslt","expand-text":"false","match":"Rdr_Dataset","prio":"0","matches":"NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]","C":[{"N":"p.nodeTest","role":"match","test":"NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]","sType":"1NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json "},{"N":"sequence","role":"action","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"{"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"id\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"78","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublishId","name":"attribute","nodeTest":"*NA nQ{}PublishId","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"78"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"let","var":"Q{}year","slot":"0","sType":"* ","line":"82","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"choose","sType":"?NT ","type":"item()*","line":"83","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"84","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Year"}]}]},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"85","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}Year","role":"select","line":"85","C":[{"N":"slash","op":"/","sType":"*NA nQ{}Year","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Year"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"valueOf","flags":"l","sType":"1NT ","line":"88","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublishedYear","name":"attribute","nodeTest":"*NA nQ{}PublishedYear","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"88"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"year\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"93","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}year","slot":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"93"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"choose","sType":"* ","line":"97","C":[{"N":"varRef","name":"Q{}year","slot":"0","sType":"*","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"97"},{"N":"let","var":"Q{}yearInverted","slot":"1","sType":"*NT ","line":"98","C":[{"N":"arith","op":"-","calc":"a-a","sType":"1A","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"98","C":[{"N":"int","val":"65535"},{"N":"check","card":"?","diag":"1|1||arith","C":[{"N":"data","diag":"1|1||arith","C":[{"N":"varRef","name":"Q{}year","slot":"0"}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"year_inverted\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"100","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}yearInverted","slot":"1","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"100"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"105","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"105","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]},{"N":"str","val":""}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"server_date_published\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"107","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}UnixTimestamp","role":"select","line":"107","C":[{"N":"slash","op":"/","sType":"*NA nQ{}UnixTimestamp","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"112","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"112","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDateModified,NE nQ{http://www.w3.org/1999/xhtml}ServerDateModified]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]},{"N":"str","val":""}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"server_date_modified\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"114","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}UnixTimestamp","role":"select","line":"114","C":[{"N":"slash","op":"/","sType":"*NA nQ{}UnixTimestamp","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDateModified,NE nQ{http://www.w3.org/1999/xhtml}ServerDateModified]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"119","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"119","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}EmbargoDate,NE nQ{http://www.w3.org/1999/xhtml}EmbargoDate]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]},{"N":"str","val":""}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"embargo_date\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"121","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}UnixTimestamp","role":"select","line":"121","C":[{"N":"slash","op":"/","sType":"*NA nQ{}UnixTimestamp","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}EmbargoDate,NE nQ{http://www.w3.org/1999/xhtml}EmbargoDate]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"let","var":"Q{}language","slot":"1","sType":"* ","line":"126","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Language","sType":"*NA nQ{}Language","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"126"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"language\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"128","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}language","slot":"1","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"128"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"forEach","sType":"* ","line":"132","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleMain,NE nQ{http://www.w3.org/1999/xhtml}TitleMain]","sType":"*NE u[NE nQ{}TitleMain,NE nQ{http://www.w3.org/1999/xhtml}TitleMain]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"132"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"134","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"134","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"choose","sType":"* ","line":"136","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"136","C":[{"N":"attVal","name":"Q{}Language"},{"N":"data","diag":"1|1||gc","C":[{"N":"varRef","name":"Q{}language","slot":"1"}]}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title_output\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"138","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Value","name":"attribute","nodeTest":"*NA nQ{}Value","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"138"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]},{"N":"let","var":"Q{}abstracts","slot":"2","sType":"* ","line":"144","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"145","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleAbstract,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstract]","sType":"*NE u[NE nQ{}TitleAbstract,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstract]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"145"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"148","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"148","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"150","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"150","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"abstract\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"154","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}abstracts","slot":"2","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"154"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"let","var":"Q{}authors","slot":"3","sType":"* ","line":"166","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"167","C":[{"N":"sort","sType":"*NE u[NE nQ{}PersonAuthor,NE nQ{http://www.w3.org/1999/xhtml}PersonAuthor]","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}PersonAuthor,NE nQ{http://www.w3.org/1999/xhtml}PersonAuthor]","sType":"*NE u[NE nQ{}PersonAuthor,NE nQ{http://www.w3.org/1999/xhtml}PersonAuthor]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"167"},{"N":"sortKey","sType":"?A ","C":[{"N":"check","card":"?","sType":"?A ","diag":"2|0|XTTE1020|sort","role":"select","C":[{"N":"data","sType":"*A ","role":"select","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}SortOrder","sType":"*NA nQ{}SortOrder","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"168"}]}]},{"N":"str","sType":"1AS ","val":"ascending","role":"order"},{"N":"str","sType":"1AS ","val":"en","role":"lang"},{"N":"str","sType":"1AS ","val":"#default","role":"caseOrder"},{"N":"str","sType":"1AS ","val":"true","role":"stable"}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"171","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}LastName","name":"attribute","nodeTest":"*NA nQ{}LastName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"171"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"173","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}FirstName","name":"attribute","nodeTest":"*NA nQ{}FirstName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"173"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"175","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"175","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"author\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"179","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}authors","slot":"3","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"179"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"doctype\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"205","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Type","name":"attribute","nodeTest":"*NA nQ{}Type","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"205"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"let","var":"Q{}subjects","slot":"4","sType":"* ","line":"209","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"211","C":[{"N":"filter","sType":"*NE u[NE nQ{}Subject,NE nQ{http://www.w3.org/1999/xhtml}Subject]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"211","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Subject,NE nQ{http://www.w3.org/1999/xhtml}Subject]"},{"N":"or","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}Type"},{"N":"str","val":"Uncontrolled"}]},{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}Type"},{"N":"str","val":"Geoera"}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"213","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"213","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"215","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"215","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"subjects\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"219","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}subjects","slot":"4","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"219"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"belongs_to_bibliography\": "}]},{"N":"choose","sType":"?NT ","type":"item()*","line":"224","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"225","C":[{"N":"attVal","name":"Q{}BelongsToBibliography"},{"N":"int","val":"1"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"true"}]},{"N":"true"},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"false"}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"choose","sType":"* ","line":"237","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","sType":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"237"},{"N":"let","var":"Q{}title_sub","slot":"5","sType":"*NT ","line":"238","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"239","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","sType":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"239"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"241","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"241","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"243","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"243","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title_sub\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"249","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}title_sub","slot":"5","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"249"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"let","var":"Q{}title_additional","slot":"5","sType":"* ","line":"254","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"255","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAdditional]","sType":"*NE u[NE nQ{}TitleAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAdditional]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"255"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"258","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"258","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"260","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"260","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title_additional\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"266","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"string","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"266","C":[{"N":"check","card":"?","diag":"0|0||string","C":[{"N":"varRef","name":"Q{}title_additional","slot":"5"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"let","var":"Q{}abstract_additional","slot":"6","sType":"* ","line":"270","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"271","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleAbstractAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstractAdditional]","sType":"*NE u[NE nQ{}TitleAbstractAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstractAdditional]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"271"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"273","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"273","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"275","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"275","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"abstract_additional\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"281","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}abstract_additional","slot":"6","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"281"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"choose","sType":"* ","line":"285","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Licence,NE nQ{http://www.w3.org/1999/xhtml}Licence]","sType":"*NE u[NE nQ{}Licence,NE nQ{http://www.w3.org/1999/xhtml}Licence]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"285"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"licence\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"287","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"287","bSlot":"0","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Licence,NE nQ{http://www.w3.org/1999/xhtml}Licence]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Name"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"292","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}CreatingCorporation","sType":"*NA nQ{}CreatingCorporation","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"292"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"creating_corporation\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"294","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}CreatingCorporation","name":"attribute","nodeTest":"*NA nQ{}CreatingCorporation","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"294"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"299","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}ContributingCorporation","sType":"*NA nQ{}ContributingCorporation","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"299"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"contributing_corporation\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"301","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}ContributingCorporation","name":"attribute","nodeTest":"*NA nQ{}ContributingCorporation","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"301"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"306","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}PublisherName","sType":"*NA nQ{}PublisherName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"306"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"publisher_name\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"308","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublisherName","name":"attribute","nodeTest":"*NA nQ{}PublisherName","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"308"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"313","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}PublisherPlace","sType":"*NA nQ{}PublisherPlace","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"313"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"publisher_place\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"315","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublisherPlace","name":"attribute","nodeTest":"*NA nQ{}PublisherPlace","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"315"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"320","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]","sType":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"320"},{"N":"let","var":"Q{}geolocation","slot":"7","sType":"*NT ","line":"324","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"324","C":[{"N":"check","card":"?","diag":"0|0||concat","C":[{"N":"data","diag":"0|0||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMin"}]}]}]},{"N":"str","val":", "},{"N":"check","card":"?","diag":"0|2||concat","C":[{"N":"data","diag":"0|2||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMax"}]}]}]},{"N":"str","val":", "},{"N":"check","card":"?","diag":"0|4||concat","C":[{"N":"data","diag":"0|4||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMax"}]}]}]},{"N":"str","val":", "},{"N":"check","card":"?","diag":"0|6||concat","C":[{"N":"data","diag":"0|6||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMin"}]}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"geo_location\": "}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"BBOX ("}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"327","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}geolocation","slot":"7","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"327"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":")\","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_xmin\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"331","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}XMin","role":"select","line":"331","C":[{"N":"slash","op":"/","sType":"*NA nQ{}XMin","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMin"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_xmax\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"334","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}XMax","role":"select","line":"334","C":[{"N":"slash","op":"/","sType":"*NA nQ{}XMax","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMax"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_ymin\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"337","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}YMin","role":"select","line":"337","C":[{"N":"slash","op":"/","sType":"*NA nQ{}YMin","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMin"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_ymax\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"340","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}YMax","role":"select","line":"340","C":[{"N":"slash","op":"/","sType":"*NA nQ{}YMax","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMax"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"let","var":"Q{}identifier","slot":"7","sType":"*NT ","line":"346","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"347","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Identifier,NE nQ{http://www.w3.org/1999/xhtml}Identifier]","sType":"*NE u[NE nQ{}Identifier,NE nQ{http://www.w3.org/1999/xhtml}Identifier]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"347"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"349","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"349","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"351","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"351","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"identifier\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"357","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}identifier","slot":"7","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"357"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"let","var":"Q{}reference","slot":"8","sType":"*NT ","line":"361","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"362","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Reference,NE nQ{http://www.w3.org/1999/xhtml}Reference]","sType":"*NE u[NE nQ{}Reference,NE nQ{http://www.w3.org/1999/xhtml}Reference]","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"362"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"364","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"364","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"366","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"366","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"reference\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"372","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}reference","slot":"8","ns":"= xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"372"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"]"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"}"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"N":"overridden"},{"N":"output","C":[{"N":"property","name":"Q{http://saxon.sf.net/}stylesheet-version","value":"30"},{"N":"property","name":"method","value":"text"}]},{"N":"decimalFormat"}],"ฮฃ":"5fc7092b"}
\ No newline at end of file
+{"N":"package","version":"30","packageVersion":"1","saxonVersion":"SaxonJS 2.6","target":"JS","targetVersion":"2","name":"TOP-LEVEL","relocatable":"false","buildDateTime":"2023-10-17T11:51:02.397+02:00","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","C":[{"N":"co","binds":"","id":"0","vis":"PRIVATE","ex:uniform":"true","C":[{"N":"function","name":"Q{http://example.com/functions}escapeQuotes","as":"* ","slots":"201","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","module":"solr.xslt","baseUri":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","flags":"muu","sig":"1F r[* ] a[* ] ","sType":"1F r[* ] a[* ] ","line":"58","C":[{"N":"arg","slot":"0","name":"Q{}input","as":"* ","sType":"* "},{"N":"fn","name":"replace","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"body","line":"61","C":[{"N":"treat","as":"AS","diag":"0|0||replace","C":[{"N":"check","card":"?","diag":"0|0||replace","C":[{"N":"cvUntyped","to":"AS","diag":"0|0||replace","C":[{"N":"check","card":"?","diag":"0|0||replace","C":[{"N":"data","diag":"0|0||replace","C":[{"N":"varRef","name":"Q{}input","slot":"0"}]}]}]}]}]},{"N":"str","val":"\""},{"N":"str","val":"'"}]}]}]},{"N":"co","id":"1","binds":"0","C":[{"N":"mode","onNo":"TC","flags":"","patternSlots":"0","prec":"","C":[{"N":"templateRule","rank":"0","prec":"0","seq":"1","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","minImp":"0","flags":"s","slots":"200","baseUri":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","line":"390","module":"solr.xslt","expand-text":"false","match":"/root2","prio":"0.5","matches":"NE u[NE nQ{}root2,NE nQ{http://www.w3.org/1999/xhtml}root2]","C":[{"N":"p.withUpper","role":"match","axis":"parent","sType":"1NE u[NE nQ{}root2,NE nQ{http://www.w3.org/1999/xhtml}root2]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"p.nodeTest","test":"NE u[NE nQ{}root2,NE nQ{http://www.w3.org/1999/xhtml}root2]"},{"N":"p.nodeTest","test":"ND"}]},{"N":"elem","type":"element()","role":"action","name":"add","sType":"1NE ","nsuri":"","line":"391","C":[{"N":"elem","type":"element()","name":"doc","sType":"1NE ","nsuri":"","line":"392","C":[{"N":"sequence","sType":"* ","C":[{"N":"forEach","sType":"*NE ","line":"401","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"401","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Fulltext_Index,NE nQ{http://www.w3.org/1999/xhtml}Fulltext_Index]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"402","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"403","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"fulltext"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"404","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"dot","sType":"1NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"404"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"409","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"410","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"has_fulltext"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"411","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"411","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Has_Fulltext,NE nQ{http://www.w3.org/1999/xhtml}Has_Fulltext]"}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"415","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"415","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Fulltext_ID_Success,NE nQ{http://www.w3.org/1999/xhtml}Fulltext_ID_Success]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"416","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"417","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"fulltext_id_success"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"418","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"dot","sType":"1NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"418"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"423","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"423","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Fulltext_ID_Failure,NE nQ{http://www.w3.org/1999/xhtml}Fulltext_ID_Failure]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"424","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"425","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"fulltext_id_failure"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"426","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"dot","sType":"1NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"426"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"431","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"431","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}PersonReferee,NE nQ{http://www.w3.org/1999/xhtml}PersonReferee]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"432","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"433","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"referee"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"434","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}FirstName","name":"attribute","nodeTest":"*NA nQ{}FirstName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"434"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"436","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}LastName","name":"attribute","nodeTest":"*NA nQ{}LastName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"436"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"forEach","sType":"* ","line":"441","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"441","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE"}]}]}]},{"N":"choose","sType":"? ","line":"442","C":[{"N":"and","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"442","C":[{"N":"and","C":[{"N":"and","C":[{"N":"compareToString","op":"ne","val":"Person","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]}]},{"N":"compareToString","op":"ne","val":"PersonAuthor","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]}]}]},{"N":"compareToString","op":"ne","val":"PersonSubmitter","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]}]}]},{"N":"compareToString","op":"eq","val":"Person","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","C":[{"N":"fn","name":"substring","C":[{"N":"fn","name":"local-name","C":[{"N":"dot"}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"1"}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"6"}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"443","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"444","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"persons"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"445","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}FirstName","name":"attribute","nodeTest":"*NA nQ{}FirstName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"445"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"447","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}LastName","name":"attribute","nodeTest":"*NA nQ{}LastName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"447"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]},{"N":"forEach","sType":"* ","line":"461","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"461","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Collection,NE nQ{http://www.w3.org/1999/xhtml}Collection]"}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"choose","sType":"* ","type":"item()*","line":"462","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"463","C":[{"N":"attVal","name":"Q{}RoleName"},{"N":"str","val":"projects"}]},{"N":"sequence","sType":"*NE ","C":[{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"464","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"465","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"project"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"466","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Number","name":"attribute","nodeTest":"*NA nQ{}Number","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"466"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"468","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"469","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"app_area"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"470","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"substring","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"470","C":[{"N":"cvUntyped","to":"AS","diag":"0|0||substring","C":[{"N":"check","card":"?","diag":"0|0||substring","C":[{"N":"attVal","name":"Q{}Number"}]}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"0"}]},{"N":"convert","to":"AO","flags":"","C":[{"N":"int","val":"2"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"473","C":[{"N":"attVal","name":"Q{}RoleName"},{"N":"str","val":"institutes"}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"474","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"475","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"institute"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"476","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Name","name":"attribute","nodeTest":"*NA nQ{}Name","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"476"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"481","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"482","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"collection_ids"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"483","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"483"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]}]},{"N":"forEach","sType":"*NE ","line":"494","C":[{"N":"docOrder","sType":"*NE","role":"select","line":"494","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Series,NE nQ{http://www.w3.org/1999/xhtml}Series]"}]}]}]},{"N":"sequence","sType":"*NE ","C":[{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"495","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"496","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"series_ids"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"497","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"497"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"500","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"501","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"series_number_for_id_"}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"503","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"503"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"505","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Number","name":"attribute","nodeTest":"*NA nQ{}Number","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"505"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"508","C":[{"N":"sequence","sType":"*N ","C":[{"N":"att","name":"name","sType":"1NA ","line":"509","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"doc_sort_order_for_seriesid_"}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"511","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Id","name":"attribute","nodeTest":"*NA nQ{}Id","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"511"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"513","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}DocSortOrder","name":"attribute","nodeTest":"*NA nQ{}DocSortOrder","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"513"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]}]}]},{"N":"choose","sType":"? ","line":"526","C":[{"N":"docOrder","sType":"*NE","line":"526","C":[{"N":"docOrder","sType":"*NE","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]}]}]},{"N":"elem","type":"element()","name":"field","sType":"1NE ","nsuri":"","line":"527","C":[{"N":"sequence","sType":"* ","C":[{"N":"att","name":"name","sType":"1NA ","line":"528","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"geo_location"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":""}]}]},{"N":"let","var":"Q{}geolocation","slot":"0","sType":"* ","line":"534","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"534","C":[{"N":"str","val":"SOUTH-BOUND LATITUDE: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"data","diag":"0|1||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMin"}]}]}]}]},{"N":"str","val":" * WEST-BOUND LONGITUDE: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"data","diag":"0|3||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMin"}]}]}]}]},{"N":"str","val":" * NORTH-BOUND LATITUDE: "},{"N":"check","card":"?","diag":"0|5||concat","C":[{"N":"data","diag":"0|5||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMax"}]}]}]}]},{"N":"str","val":" * EAST-BOUND LONGITUDE: "},{"N":"check","card":"?","diag":"0|7||concat","C":[{"N":"data","diag":"0|7||concat","C":[{"N":"docOrder","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Opus,NE nQ{http://www.w3.org/1999/xhtml}Opus]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]"}]},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMax"}]}]}]}]}]},{"N":"sequence","sType":"? ","C":[{"N":"valueOf","flags":"l","sType":"1NT ","line":"536","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}geolocation","slot":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"536"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\n"}]},{"N":"choose","sType":"? ","line":"538","C":[{"N":"and","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"538","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}ElevationMin"},{"N":"str","val":""}]},{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}ElevationMax"},{"N":"str","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"539","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"539","C":[{"N":"str","val":" * ELEVATION MIN: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}ElevationMin"}]},{"N":"str","val":" * ELEVATION MAX: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"attVal","name":"Q{}ElevationMax"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"? ","line":"541","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"541","C":[{"N":"attVal","name":"Q{}ElevationAbsolut"},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"542","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"542","C":[{"N":"str","val":" * ELEVATION ABSOLUT: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}ElevationAbsolut"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\n"}]},{"N":"choose","sType":"? ","line":"546","C":[{"N":"and","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"546","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}DepthMin"},{"N":"str","val":""}]},{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}DepthMax"},{"N":"str","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"547","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"547","C":[{"N":"str","val":" * DEPTH MIN: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}DepthMin"}]},{"N":"str","val":" * DEPTH MAX: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"attVal","name":"Q{}DepthMax"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"? ","line":"549","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"549","C":[{"N":"attVal","name":"Q{}DepthAbsolut"},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"550","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"550","C":[{"N":"str","val":" * DEPTH ABSOLUT: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}DepthAbsolut"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\n"}]},{"N":"choose","sType":"? ","line":"554","C":[{"N":"and","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"554","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}TimeMin"},{"N":"str","val":""}]},{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}TimeMax"},{"N":"str","val":""}]}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"555","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"555","C":[{"N":"str","val":" * TIME MIN: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}TimeMin"}]},{"N":"str","val":" * TIME MAX: "},{"N":"check","card":"?","diag":"0|3||concat","C":[{"N":"attVal","name":"Q{}TimeMax"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"? ","line":"557","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"557","C":[{"N":"attVal","name":"Q{}TimeAbsolut"},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"558","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"558","C":[{"N":"str","val":" * TIME ABSOLUT: "},{"N":"check","card":"?","diag":"0|1||concat","C":[{"N":"attVal","name":"Q{}TimeAbsolut"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]}]},{"N":"templateRule","rank":"1","prec":"0","seq":"0","ns":"xml=~ xsl=~ xs=~ fn=http://example.com/functions xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json","minImp":"0","flags":"s","slots":"200","baseUri":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","line":"64","module":"solr.xslt","expand-text":"false","match":"Rdr_Dataset","prio":"0","matches":"NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]","C":[{"N":"p.nodeTest","role":"match","test":"NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]","sType":"1NE u[NE nQ{}Rdr_Dataset,NE nQ{http://www.w3.org/1999/xhtml}Rdr_Dataset]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json "},{"N":"sequence","role":"action","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"{"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"id\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"96","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublishId","name":"attribute","nodeTest":"*NA nQ{}PublishId","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"96"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"let","var":"Q{}year","slot":"0","sType":"* ","line":"100","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"choose","sType":"?NT ","type":"item()*","line":"101","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"102","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Year"}]}]},{"N":"str","val":""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"103","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}Year","role":"select","line":"103","C":[{"N":"slash","op":"/","sType":"*NA nQ{}Year","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Year"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"true"},{"N":"valueOf","flags":"l","sType":"1NT ","line":"106","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublishedYear","name":"attribute","nodeTest":"*NA nQ{}PublishedYear","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"106"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"year\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"111","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}year","slot":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"111"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"choose","sType":"* ","line":"115","C":[{"N":"varRef","name":"Q{}year","slot":"0","sType":"*","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"115"},{"N":"let","var":"Q{}yearInverted","slot":"1","sType":"*NT ","line":"116","C":[{"N":"arith","op":"-","calc":"a-a","sType":"1A","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"116","C":[{"N":"int","val":"65535"},{"N":"check","card":"?","diag":"1|1||arith","C":[{"N":"data","diag":"1|1||arith","C":[{"N":"varRef","name":"Q{}year","slot":"0"}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"year_inverted\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"118","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}yearInverted","slot":"1","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"118"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"123","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"123","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]},{"N":"str","val":""}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"server_date_published\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"125","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}UnixTimestamp","role":"select","line":"125","C":[{"N":"slash","op":"/","sType":"*NA nQ{}UnixTimestamp","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDatePublished,NE nQ{http://www.w3.org/1999/xhtml}ServerDatePublished]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"130","C":[{"N":"gc","op":"!=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"130","C":[{"N":"data","diag":"1|0||gc","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDateModified,NE nQ{http://www.w3.org/1999/xhtml}ServerDateModified]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]},{"N":"str","val":""}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"server_date_modified\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"132","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}UnixTimestamp","role":"select","line":"132","C":[{"N":"docOrder","sType":"*NA nQ{}UnixTimestamp","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"slash","op":"/","C":[{"N":"slash","op":"/","C":[{"N":"root"},{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}ServerDateModified,NE nQ{http://www.w3.org/1999/xhtml}ServerDateModified]"}]},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}UnixTimestamp"}]}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"let","var":"Q{}language","slot":"1","sType":"* ","line":"137","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Language","sType":"*NA nQ{}Language","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"137"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"language\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"139","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}language","slot":"1","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"139"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"forEach","sType":"* ","line":"143","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleMain,NE nQ{http://www.w3.org/1999/xhtml}TitleMain]","sType":"*NE u[NE nQ{}TitleMain,NE nQ{http://www.w3.org/1999/xhtml}TitleMain]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"143"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"145","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"145","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"choose","sType":"* ","line":"147","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"147","C":[{"N":"attVal","name":"Q{}Language"},{"N":"data","diag":"1|1||gc","C":[{"N":"varRef","name":"Q{}language","slot":"1"}]}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title_output\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"149","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Value","name":"attribute","nodeTest":"*NA nQ{}Value","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"149"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]},{"N":"let","var":"Q{}abstracts","slot":"2","sType":"* ","line":"155","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"156","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleAbstract,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstract]","sType":"*NE u[NE nQ{}TitleAbstract,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstract]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"156"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"159","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"159","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"161","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"161","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"abstract\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"165","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}abstracts","slot":"2","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"165"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"let","var":"Q{}authors","slot":"3","sType":"* ","line":"177","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"178","C":[{"N":"sort","sType":"*NE u[NE nQ{}PersonAuthor,NE nQ{http://www.w3.org/1999/xhtml}PersonAuthor]","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}PersonAuthor,NE nQ{http://www.w3.org/1999/xhtml}PersonAuthor]","sType":"*NE u[NE nQ{}PersonAuthor,NE nQ{http://www.w3.org/1999/xhtml}PersonAuthor]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"178"},{"N":"sortKey","sType":"?A ","C":[{"N":"check","card":"?","sType":"?A ","diag":"2|0|XTTE1020|sort","role":"select","C":[{"N":"data","sType":"*A ","role":"select","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}SortOrder","sType":"*NA nQ{}SortOrder","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"179"}]}]},{"N":"str","sType":"1AS ","val":"ascending","role":"order"},{"N":"str","sType":"1AS ","val":"en","role":"lang"},{"N":"str","sType":"1AS ","val":"#default","role":"caseOrder"},{"N":"str","sType":"1AS ","val":"true","role":"stable"}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"182","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}LastName","name":"attribute","nodeTest":"*NA nQ{}LastName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"182"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"184","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}FirstName","name":"attribute","nodeTest":"*NA nQ{}FirstName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"184"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"186","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"186","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"author\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"190","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}authors","slot":"3","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"190"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"doctype\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"216","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}Type","name":"attribute","nodeTest":"*NA nQ{}Type","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"216"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]},{"N":"let","var":"Q{}subjects","slot":"4","sType":"* ","line":"220","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"221","C":[{"N":"filter","sType":"*NE u[NE nQ{}Subject,NE nQ{http://www.w3.org/1999/xhtml}Subject]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"221","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Subject,NE nQ{http://www.w3.org/1999/xhtml}Subject]"},{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","C":[{"N":"attVal","name":"Q{}Type"},{"N":"str","val":"Uncontrolled"}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"223","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"223","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"225","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"225","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"subjects\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"229","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}subjects","slot":"4","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"229"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"belongs_to_bibliography\": "}]},{"N":"choose","sType":"?NT ","type":"item()*","line":"234","C":[{"N":"gc","op":"=","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","card":"1:1","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"235","C":[{"N":"attVal","name":"Q{}BelongsToBibliography"},{"N":"int","val":"1"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"true"}]},{"N":"true"},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"false"}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"choose","sType":"* ","line":"247","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","sType":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"247"},{"N":"let","var":"Q{}title_sub","slot":"5","sType":"*NT ","line":"248","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"249","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","sType":"*NE u[NE nQ{}TitleSub,NE nQ{http://www.w3.org/1999/xhtml}TitleSub]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"249"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"251","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"251","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"253","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"253","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title_sub\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"259","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}title_sub","slot":"5","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"259"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"let","var":"Q{}title_additional","slot":"5","sType":"* ","line":"264","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"265","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAdditional]","sType":"*NE u[NE nQ{}TitleAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAdditional]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"265"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"268","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"268","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"270","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"270","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"title_additional\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"276","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"fn","name":"string","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"276","C":[{"N":"check","card":"?","diag":"0|0||string","C":[{"N":"varRef","name":"Q{}title_additional","slot":"5"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"let","var":"Q{}abstract_additional","slot":"6","sType":"* ","line":"280","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"281","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}TitleAbstractAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstractAdditional]","sType":"*NE u[NE nQ{}TitleAbstractAdditional,NE nQ{http://www.w3.org/1999/xhtml}TitleAbstractAdditional]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"281"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"283","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"283","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"285","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"285","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":", "}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"abstract_additional\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"291","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}abstract_additional","slot":"6","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"291"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"choose","sType":"* ","line":"295","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Licence,NE nQ{http://www.w3.org/1999/xhtml}Licence]","sType":"*NE u[NE nQ{}Licence,NE nQ{http://www.w3.org/1999/xhtml}Licence]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"295"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"licence\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"297","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"297","bSlot":"0","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Licence,NE nQ{http://www.w3.org/1999/xhtml}Licence]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Name"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"302","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}CreatingCorporation","sType":"*NA nQ{}CreatingCorporation","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"302"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"creating_corporation\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"304","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}CreatingCorporation","name":"attribute","nodeTest":"*NA nQ{}CreatingCorporation","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"304"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"309","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}ContributingCorporation","sType":"*NA nQ{}ContributingCorporation","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"309"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"contributing_corporation\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"311","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}ContributingCorporation","name":"attribute","nodeTest":"*NA nQ{}ContributingCorporation","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"311"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"316","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}PublisherName","sType":"*NA nQ{}PublisherName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"316"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"publisher_name\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"318","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublisherName","name":"attribute","nodeTest":"*NA nQ{}PublisherName","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"318"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"323","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}PublisherPlace","sType":"*NA nQ{}PublisherPlace","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"323"},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"publisher_place\": \""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"325","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"axis","sType":"*NA nQ{}PublisherPlace","name":"attribute","nodeTest":"*NA nQ{}PublisherPlace","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"325"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\","}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"choose","sType":"* ","line":"330","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]","sType":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"330"},{"N":"let","var":"Q{}geolocation","slot":"7","sType":"*NT ","line":"334","C":[{"N":"fn","name":"concat","sType":"1AS","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"334","C":[{"N":"check","card":"?","diag":"0|0||concat","C":[{"N":"data","diag":"0|0||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMin"}]}]}]},{"N":"str","val":", "},{"N":"check","card":"?","diag":"0|2||concat","C":[{"N":"data","diag":"0|2||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMax"}]}]}]},{"N":"str","val":", "},{"N":"check","card":"?","diag":"0|4||concat","C":[{"N":"data","diag":"0|4||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMax"}]}]}]},{"N":"str","val":", "},{"N":"check","card":"?","diag":"0|6||concat","C":[{"N":"data","diag":"0|6||concat","C":[{"N":"slash","op":"/","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMin"}]}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"geo_location\": "}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"BBOX ("}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"337","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}geolocation","slot":"7","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"337"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":")\","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_xmin\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"341","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}XMin","role":"select","line":"341","C":[{"N":"slash","op":"/","sType":"*NA nQ{}XMin","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMin"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_xmax\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"344","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}XMax","role":"select","line":"344","C":[{"N":"slash","op":"/","sType":"*NA nQ{}XMax","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}XMax"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_ymin\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"347","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}YMin","role":"select","line":"347","C":[{"N":"slash","op":"/","sType":"*NA nQ{}YMin","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMin"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"bbox_ymax\": "}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"350","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"docOrder","sType":"*NA nQ{}YMax","role":"select","line":"350","C":[{"N":"slash","op":"/","sType":"*NA nQ{}YMax","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Coverage,NE nQ{http://www.w3.org/1999/xhtml}Coverage]"},{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}YMax"}]}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]}]}]},{"N":"true"},{"N":"empty","sType":"0 "}]},{"N":"let","var":"Q{}identifier","slot":"7","sType":"*NT ","line":"356","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"357","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Identifier,NE nQ{http://www.w3.org/1999/xhtml}Identifier]","sType":"*NE u[NE nQ{}Identifier,NE nQ{http://www.w3.org/1999/xhtml}Identifier]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"357"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"359","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"359","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"361","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"361","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"*NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"identifier\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"367","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}identifier","slot":"7","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"367"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"],"}]},{"N":"let","var":"Q{}reference","slot":"8","sType":"*NT ","line":"371","C":[{"N":"doc","sType":"1ND ","base":"file:///home/administrator/tethys/tethys.myapp/public/assets2/solr.xslt","role":"select","C":[{"N":"forEach","sType":"* ","line":"372","C":[{"N":"axis","name":"child","nodeTest":"*NE u[NE nQ{}Reference,NE nQ{http://www.w3.org/1999/xhtml}Reference]","sType":"*NE u[NE nQ{}Reference,NE nQ{http://www.w3.org/1999/xhtml}Reference]","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"372"},{"N":"sequence","sType":"* ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"374","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"ufCall","sType":"*","name":"Q{http://example.com/functions}escapeQuotes","coId":"0","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"374","bSlot":"0","C":[{"N":"axis","name":"attribute","nodeTest":"*NA nQ{}Value"}]}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\""}]},{"N":"choose","sType":"? ","line":"376","C":[{"N":"vc","op":"ne","comp":"GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint","sType":"1AB","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","line":"376","C":[{"N":"fn","name":"position"},{"N":"fn","name":"last"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":","}]},{"N":"true"},{"N":"empty","sType":"0 "}]}]}]}]},{"N":"sequence","sType":"?NT ","C":[{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"\"reference\": ["}]},{"N":"valueOf","flags":"l","sType":"1NT ","line":"382","C":[{"N":"fn","name":"string-join","role":"select","C":[{"N":"forEach","sType":"*AS ","C":[{"N":"data","sType":"*A ","C":[{"N":"mergeAdj","C":[{"N":"varRef","sType":"*","name":"Q{}reference","slot":"8","ns":"= xml=~ fn=http://example.com/functions xsl=~ xs=~ xlink=http://www.w3.org/1999/xlink gmd=http://www.isotc211.org/2005/gmd gco=http://www.isotc211.org/2005/gco json=http://www.w3.org/2013/XSL/json ","role":"select","line":"382"}]}]},{"N":"fn","name":"string","sType":"1AS ","C":[{"N":"dot"}]}]},{"N":"str","sType":"1AS ","val":" "}]}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"]"}]},{"N":"valueOf","sType":"1NT ","C":[{"N":"str","sType":"1AS ","val":"}"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"N":"overridden"},{"N":"output","C":[{"N":"property","name":"Q{http://saxon.sf.net/}stylesheet-version","value":"30"},{"N":"property","name":"method","value":"text"}]},{"N":"decimalFormat"}],"ฮฃ":"b8107a64"}
\ No newline at end of file
diff --git a/public/assets2/solr.xslt b/public/assets2/solr.xslt
index 4b3dc22..d4cac24 100644
--- a/public/assets2/solr.xslt
+++ b/public/assets2/solr.xslt
@@ -111,14 +111,7 @@
"server_date_modified": "
-
- ",
-
-
-
-
- "embargo_date": "
-
+
",
@@ -207,8 +200,7 @@
-
-
+
"
"
diff --git a/readme.md b/readme.md
index 7d032ce..0fd7e64 100644
--- a/readme.md
+++ b/readme.md
@@ -11,8 +11,6 @@ Welcome to the Tethys Research Repository Backend System! This is the backend co
- [Configuration](#configuration)
- [Database](#database)
- [API Documentation](#api-documentation)
-- [Commands](#commands)
-- [Documentation](#documentation)
- [Contributing](#contributing)
- [License](#license)
@@ -31,175 +29,5 @@ Before you begin, ensure you have met the following requirements:
1. Clone this repository:
```bash
- git clone git clone https://gitea.geologie.ac.at/geolba/tethys.backend.git
- cd tethys-backend
+ git clone https://gitea.geologie.ac.at/geolba/tethys.backend.git
```
-
-2. Install dependencies:
-
- ```bash
- npm install
- ```
-
-3. Configure environment variables (see [Configuration](#configuration))
-
-4. Run database migrations:
-
- ```bash
- node ace migration:run
- ```
-
-5. Start the development server:
-
- ```bash
- npm run dev
- ```
-
-## Usage
-
-The Tethys Backend provides RESTful APIs for managing research datasets, user authentication, DOI registration, and search functionality.
-
-## Configuration
-
-Copy the `.env.example` file to `.env` and configure the following variables:
-
-### Database Configuration
-```bash
-DB_CONNECTION=pg
-DB_HOST=localhost
-DB_PORT=5432
-DB_USER=your_username
-DB_PASSWORD=your_password
-DB_DATABASE=tethys_db
-```
-
-### DataCite Configuration
-```bash
-# DataCite Credentials
-DATACITE_USERNAME=your_datacite_username
-DATACITE_PASSWORD=your_datacite_password
-DATACITE_PREFIX=10.21388
-
-# Environment-specific API endpoints
-DATACITE_API_URL=https://api.test.datacite.org # Test environment
-DATACITE_SERVICE_URL=https://mds.test.datacite.org # Test MDS
-
-# For production:
-# DATACITE_API_URL=https://api.datacite.org
-# DATACITE_SERVICE_URL=https://mds.datacite.org
-```
-
-### OpenSearch Configuration
-```bash
-OPENSEARCH_HOST=localhost:9200
-```
-
-### Application Configuration
-```bash
-BASE_DOMAIN=tethys.at
-APP_KEY=your_app_key
-```
-
-## Database
-
-The system uses PostgreSQL with Lucid ORM. Key models include:
-
-- **Dataset**: Research dataset metadata
-- **DatasetIdentifier**: DOI and other identifiers for datasets
-- **User**: User management and authentication
-- **XmlCache**: Cached XML metadata
-
-Run migrations and seeders:
-
-```bash
-# Run migrations
-node ace migration:run
-
-# Run seeders (if available)
-node ace db:seed
-```
-
-## API Documentation
-
-API endpoints are available for:
-
-- Dataset management (`/api/datasets`)
-- User authentication (`/api/auth`)
-- DOI registration (`/api/doi`)
-- Search functionality (`/api/search`)
-
-*Detailed API documentation can be found in the `/docs/api` directory.*
-
-## Commands
-
-The system includes several Ace commands for maintenance and data management:
-
-### Dataset Indexing
-```bash
-# Index all published datasets to OpenSearch
-node ace index:datasets
-
-# Index a specific dataset
-node ace index:datasets --publish_id 123
-```
-
-### DataCite DOI Management
-```bash
-# Update DataCite records for modified datasets
-node ace update:datacite
-
-# Show detailed statistics for datasets needing updates
-node ace update:datacite --stats
-
-# Preview what would be updated (dry run)
-node ace update:datacite --dry-run
-
-# Force update all DOI records
-node ace update:datacite --force
-
-# Update a specific dataset
-node ace update:datacite --publish_id 123
-```
-
-*For detailed command documentation, see the [Commands Documentation](docs/commands/)*
-
-## Documentation
-
-Comprehensive documentation is available in the `/docs` directory:
-
-- **[Commands Documentation](docs/commands/)** - Detailed guides for Ace commands
- - [DataCite Update Command](docs/commands/update-datacite.md) - DOI synchronization and management
- - [Dataset Indexing Command](docs/commands/index-datasets.md) - Search index management
-- **[API Documentation](docs/api/)** - REST API endpoints and usage
-- **[Deployment Guide](docs/deployment/)** - Production deployment instructions
-- **[Configuration Guide](docs/configuration/)** - Environment setup and configuration options
-
-## Contributing
-
-1. Fork the repository
-2. Create a feature branch (`git checkout -b feature/amazing-feature`)
-3. Commit your changes (`git commit -m 'Add some amazing feature'`)
-4. Push to the branch (`git push origin feature/amazing-feature`)
-5. Open a Pull Request
-
-### Development Guidelines
-
-- Follow the existing code style and conventions
-- Write tests for new features
-- Update documentation for any API changes
-- Ensure all commands and migrations work properly
-
-### Testing Commands
-
-```bash
-# Run tests
-npm test
-
-# Test specific commands
-node ace update:datacite --dry-run --publish_id 123
-node ace index:datasets --publish_id 123
-```
-
-## License
-
-This project is licensed under the [MIT License](LICENSE).
\ No newline at end of file
diff --git a/resources/js/Components/BaseButton.vue b/resources/js/Components/BaseButton.vue
index 1462566..74c0b5d 100644
--- a/resources/js/Components/BaseButton.vue
+++ b/resources/js/Components/BaseButton.vue
@@ -1,5 +1,5 @@
-
{{ label }}
diff --git a/resources/js/Components/CardBox.vue b/resources/js/Components/CardBox.vue
index dbdee01..c2d200e 100644
--- a/resources/js/Components/CardBox.vue
+++ b/resources/js/Components/CardBox.vue
@@ -67,7 +67,7 @@ const submit = (e) => {
{{ title }}
-