diff --git a/.gitignore b/.gitignore index 897ecf8df..c7c6ce953 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ backend/sessions backend/node_modules backend/logs backend/coverage +logs/ # ignore build files dist/ @@ -49,4 +50,5 @@ utils/rpcs/moodleAPI/moodle_api/__pycache__ *.pyc email-mappings.py gitleaks-clean.sh -.mailmap \ No newline at end of file +.mailmap +.DS_Store diff --git a/backend/db/migrations/20260412231117-create-recording.js b/backend/db/migrations/20260412231117-create-recording.js new file mode 100644 index 000000000..6854a18be --- /dev/null +++ b/backend/db/migrations/20260412231117-create-recording.js @@ -0,0 +1,83 @@ +'use strict'; + +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable('recording', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + }, + name: { + type: Sequelize.STRING, + allowNull: true, + }, + status: { + type: Sequelize.STRING, + allowNull: false, + defaultValue: 'recording', + }, + startTime: { + type: Sequelize.DATE, + allowNull: false, + }, + endTime: { + type: Sequelize.DATE, + allowNull: true, + defaultValue: null, + }, + // Recordings are soft-deleted only, so a user delete must never cascade + // them away. RESTRICT forces whoever adds user deletion to soft-delete + // the recordings first rather than silently destroying recorded data. + userId: { + type: Sequelize.INTEGER, + allowNull: false, + references: { + model: 'user', + key: 'id', + }, + onDelete: 'RESTRICT', + onUpdate: 'CASCADE', + }, + participantSocketIds: { + type: Sequelize.JSONB, + allowNull: true, + defaultValue: null, + }, + excludeEvents: { + type: Sequelize.JSONB, + allowNull: true, + defaultValue: null, + }, + deleted: { + type: Sequelize.BOOLEAN, + allowNull: false, + defaultValue: false, + }, + deletedAt: { + type: Sequelize.DATE, + allowNull: true, + defaultValue: null, + }, + createdAt: { + type: Sequelize.DATE, + allowNull: false, + defaultValue: Sequelize.fn('NOW'), + }, + updatedAt: { + type: Sequelize.DATE, + allowNull: false, + defaultValue: Sequelize.fn('NOW'), + }, + }); + // publicTable is false, so getAutoTable filters these rows by userId. + await queryInterface.addIndex('recording', ['userId'], { + name: 'recording_userId_idx', + }); + }, + + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('recording'); + }, +}; \ No newline at end of file diff --git a/backend/db/migrations/20260412231119-create-trace.js b/backend/db/migrations/20260412231119-create-trace.js new file mode 100644 index 000000000..b839a0a96 --- /dev/null +++ b/backend/db/migrations/20260412231119-create-trace.js @@ -0,0 +1,96 @@ +'use strict'; + +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable('trace', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + }, + recordingId: { + type: Sequelize.INTEGER, + allowNull: false, + references: { + model: 'recording', + key: 'id', + }, + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }, + // SET NULL would leave the recording intact but silently unreplayable + // (groupTracesBySocket skips traces with no userId). RESTRICT keeps trace + // ownership honest; recordings are soft-deleted, never orphaned. + userId: { + type: Sequelize.INTEGER, + allowNull: true, + references: { + model: 'user', + key: 'id', + }, + onDelete: 'RESTRICT', + onUpdate: 'CASCADE', + }, + socketId: { + type: Sequelize.STRING, + allowNull: true, + }, + action: { + type: Sequelize.STRING, + allowNull: false, + }, + payload: { + type: Sequelize.JSONB, + allowNull: true, + }, + // true = frontend -> backend (onAny), false = backend -> frontend (onAnyOutgoing) + direction: { + type: Sequelize.BOOLEAN, + allowNull: false, + }, + startTime: { + type: Sequelize.DATE, + allowNull: false, + }, + endTime: { + type: Sequelize.DATE, + allowNull: true, + }, + deleted: { + type: Sequelize.BOOLEAN, + allowNull: false, + defaultValue: false, + }, + deletedAt: { + type: Sequelize.DATE, + allowNull: true, + defaultValue: null, + }, + createdAt: { + type: Sequelize.DATE, + allowNull: false, + defaultValue: Sequelize.fn('NOW'), + }, + updatedAt: { + type: Sequelize.DATE, + allowNull: false, + defaultValue: Sequelize.fn('NOW'), + }, + }); + + // Every trace lookup filters by recordingId (getTraces, buildSessionPool, + // stopRecording), so that's the index that matters. + await queryInterface.addIndex('trace', ['recordingId'], { + name: 'trace_recordingId_idx', + }); + + await queryInterface.addIndex('trace', ['socketId'], { + name: 'trace_socketId_idx', + }); + }, + + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('trace'); + }, +}; \ No newline at end of file diff --git a/backend/db/migrations/20260506220447-extend-nav-socket-profiler.js b/backend/db/migrations/20260506220447-extend-nav-socket-profiler.js new file mode 100644 index 000000000..0435b39a9 --- /dev/null +++ b/backend/db/migrations/20260506220447-extend-nav-socket-profiler.js @@ -0,0 +1,50 @@ +'use strict'; + +const navElements = [ + { + name: "Socket Profiler", + groupId: "Manage", + icon: "record-circle", + order: 16, + admin: true, + path: "Socket_Profiler", + component: "SocketProfiler", + } +]; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.bulkInsert( + "nav_element", + await Promise.all( + navElements.map(async (t) => { + const groupId = await queryInterface.rawSelect( + "nav_group", + { + where: { name: t.groupId }, + }, + ["id"] + ); + + t["createdAt"] = new Date(); + t["updatedAt"] = new Date(); + t["groupId"] = groupId; + + return t; + }), + {} + ) + ); + }, + + async down(queryInterface, Sequelize) { + await queryInterface.bulkDelete( + "nav_element", + { + name: navElements.map((t) => t.name), + }, + {} + ); + }, +}; \ No newline at end of file diff --git a/backend/db/models/recording.js b/backend/db/models/recording.js new file mode 100644 index 000000000..86a8ab0ce --- /dev/null +++ b/backend/db/models/recording.js @@ -0,0 +1,65 @@ +"use strict"; +const MetaModel = require("../MetaModel.js"); + +module.exports = (sequelize, DataTypes) => { + // Allowed recording lifecycle states. Single source of truth for the + // status validator below; add new states here rather than scattering + // string literals. "interrupted" is set on startup for recordings whose + // server died mid-capture. + const RECORDING_STATUSES = ["recording", "finished", "disconnected", "interrupted"]; + + class Recording extends MetaModel { + // MetaModel flags. autoTable registers this model for generic CRUD + // over sockets. fields=[] means no column whitelist (all columns + // returned). publicTable=false keeps recordings out of unauthenticated + // reads: they are admin-only artifacts, and the rows expose who was + // recorded, their session ids and their activity times. + static autoTable = true; + static fields = []; + static publicTable = false; + + static associate(models) { + Recording.belongsTo(models["user"], { + foreignKey: "userId", + as: "user", + }); + Recording.hasMany(models["trace"], { + foreignKey: "recordingId", + as: "traces", + }); + } + } + + Recording.init( + { + name: DataTypes.STRING, + status: { + type: DataTypes.STRING, + allowNull: false, + validate: { isIn: [RECORDING_STATUSES] }, + }, + startTime: { + type: DataTypes.DATE, + allowNull: false, + }, + endTime: DataTypes.DATE, + userId: { + type: DataTypes.INTEGER, + allowNull: false, + }, + participantSocketIds: DataTypes.JSONB, + excludeEvents: DataTypes.JSONB, + deleted: DataTypes.BOOLEAN, + deletedAt: DataTypes.DATE, + createdAt: DataTypes.DATE, + updatedAt: DataTypes.DATE, + }, + { + sequelize, + modelName: "recording", + tableName: "recording", + } + ); + + return Recording; +}; \ No newline at end of file diff --git a/backend/db/models/trace.js b/backend/db/models/trace.js new file mode 100644 index 000000000..9a19a123d --- /dev/null +++ b/backend/db/models/trace.js @@ -0,0 +1,61 @@ +"use strict"; +const MetaModel = require("../MetaModel.js"); + +module.exports = (sequelize, DataTypes) => { + class Trace extends MetaModel { + // MetaModel flags. autoTable registers this model for generic CRUD + // over sockets. fields=[] means no column whitelist. publicTable=false + // keeps traces out of the generic subscription layer, since payloads + // can hold sensitive event data — they're fetched explicitly instead. + static autoTable = true; + static fields = []; + static publicTable = false; + + static associate(models) { + Trace.belongsTo(models["recording"], { + foreignKey: "recordingId", + as: "recording", + }); + Trace.belongsTo(models["user"], { + foreignKey: "userId", + as: "user", + }); + } + } + + Trace.init( + { + recordingId: { + type: DataTypes.INTEGER, + allowNull: false, + }, + userId: DataTypes.INTEGER, + socketId: DataTypes.STRING, + action: { + type: DataTypes.STRING, + allowNull: false, + }, + payload: DataTypes.JSONB, + direction: { + type: DataTypes.BOOLEAN, // true = frontend -> backend, false = backend -> frontend + allowNull: false, + }, + startTime: { + type: DataTypes.DATE, + allowNull: false, + }, + endTime: DataTypes.DATE, + deleted: DataTypes.BOOLEAN, + deletedAt: DataTypes.DATE, + createdAt: DataTypes.DATE, + updatedAt: DataTypes.DATE, + }, + { + sequelize, + modelName: "trace", + tableName: "trace", + } + ); + + return Trace; +}; \ No newline at end of file diff --git a/backend/db/stats.js b/backend/db/stats.js index b67075bad..1a8dcc738 100644 --- a/backend/db/stats.js +++ b/backend/db/stats.js @@ -1,8 +1,10 @@ /** * Periodic PostgreSQL activity statistics logger. * - * Runs the two provided pg_stat_activity queries on an interval and logs - * the aggregated counts and a shortlist of the oldest active queries. + * Runs the pg_stat_activity / pg_stat_database / pg_locks queries on an interval + * and logs the aggregated counts and a shortlist of the oldest active queries. + * The same snapshot logic is exposed as `snapshot()` for on-demand callers + * (e.g. the perf load-testing tool). * * Configuration (env): * PG_STATS_INTERVAL_MS Interval in ms (default 60000) @@ -23,137 +25,148 @@ let _timer = null; /** - * Start the periodic PostgreSQL statistics scheduler. + * Convert an object with possibly string-based numeric fields to integers where + * appropriate. Non-numeric values are preserved. * - * Creates an interval that periodically captures: - * - Connection state counts (pg_stat_activity) - * - Oldest active queries (>1s) - * - Database-level counters (pg_stat_database) for current DB - * - Lock summary (pg_locks) + * @private + * @param {Record} row - Raw row object from pg_stat_activity aggregation query + * @returns {Record} Normalized row with numeric strings parsed + */ +function normalizeCountRow(row) { + const out = {}; + Object.entries(row).forEach(([k, v]) => { + const num = parseInt(v, 10); + out[k] = isNaN(num) ? v : num; + }); + return out; +} + +/** + * Best-effort snapshot of Sequelize connection pool status. * - * Results are emitted via logger.info with message 'pg_stat_activity snapshot'. - * Multiple concurrent invocations are ignored (idempotent start). + * Sequelize uses `sequelize-pool` under the hood; depending on configuration + * (and replication), `connectionManager.pool` can be a single pool or an + * object with `read`/`write` pools. Intentionally defensive: never throws and + * returns `null` when pool metrics are unavailable. * - * @param {import('sequelize').Sequelize} sequelize - Initialized Sequelize instance (must be Postgres dialect) - * @param {object} logger - Winston logger instance (child acceptable) used for output - * @param {object} [options] - Optional overrides - * @param {number} [options.intervalMs] - Override collection interval in ms (default env PG_STATS_INTERVAL_MS or 100000) - * @param {number} [options.minAgeMs] - (Currently unused after fixed 1s query; retained for compatibility) - * @param {number} [options.topN] - (Currently unused after fixed LIMIT 10; retained for compatibility) - * @returns {void} + * @private + * @param {import('sequelize').Sequelize} sequelizeInstance + * @returns {object|null} */ -function start(sequelize, logger, options = {}) { - if (_timer) return; // already running - const intervalMs = parseInt(process.env.PG_STATS_INTERVAL_MS || options.intervalMs || '100000', 10); - const minAgeMs = parseInt(process.env.PG_STATS_MIN_AGE_MS || options.minAgeMs || '10000', 10); - const topN = parseInt(process.env.PG_STATS_TOP_N || options.topN || '10', 10); - - /** - * Best-effort snapshot of Sequelize connection pool status. - * - * Sequelize uses `sequelize-pool` under the hood; depending on configuration - * (and replication), `connectionManager.pool` can be a single pool or an - * object with `read`/`write` pools. - * - * This function is intentionally defensive: it never throws and returns - * `null` when pool metrics are unavailable. - * - * @private - * @param {import('sequelize').Sequelize} sequelizeInstance - * @returns {object|null} - */ - function getSequelizePoolStats(sequelizeInstance) { - function readMaybeFn(obj, key) { - if (!obj) return undefined; - const v = obj[key]; - if (typeof v === 'function') { - try { - return v.call(obj); - } catch (_) { - return undefined; - } +function getSequelizePoolStats(sequelizeInstance) { + function readMaybeFn(obj, key) { + if (!obj) return undefined; + const v = obj[key]; + if (typeof v === 'function') { + try { + return v.call(obj); + } catch (_) { + return undefined; } - return v; - } - - function poolSnapshot(pool) { - if (!pool) return null; - const snap = { - max: readMaybeFn(pool, 'max') ?? readMaybeFn(pool, 'maxSize'), - min: readMaybeFn(pool, 'min') ?? readMaybeFn(pool, 'minSize'), - size: readMaybeFn(pool, 'size'), - available: readMaybeFn(pool, 'available'), - using: readMaybeFn(pool, 'using'), - waiting: readMaybeFn(pool, 'waiting') - }; - // Drop keys that came back undefined to keep logs tidy - Object.keys(snap).forEach((k) => { - if (snap[k] === undefined) delete snap[k]; - }); - return Object.keys(snap).length ? snap : null; } + return v; + } - try { - const cm = sequelizeInstance && sequelizeInstance.connectionManager; - const pool = cm && cm.pool; - if (!pool) return null; + function poolSnapshot(pool) { + if (!pool) return null; + const snap = { + max: readMaybeFn(pool, 'max') ?? readMaybeFn(pool, 'maxSize'), + min: readMaybeFn(pool, 'min') ?? readMaybeFn(pool, 'minSize'), + size: readMaybeFn(pool, 'size'), + available: readMaybeFn(pool, 'available'), + using: readMaybeFn(pool, 'using'), + waiting: readMaybeFn(pool, 'waiting') + }; + // Drop keys that came back undefined to keep logs tidy + Object.keys(snap).forEach((k) => { + if (snap[k] === undefined) delete snap[k]; + }); + return Object.keys(snap).length ? snap : null; + } - // Replication mode can expose separate read/write pools - if (pool.read || pool.write) { - const out = {}; - if (Array.isArray(pool.read)) out.read = pool.read.map(poolSnapshot); - else if (pool.read) out.read = poolSnapshot(pool.read); + try { + const cm = sequelizeInstance && sequelizeInstance.connectionManager; + const pool = cm && cm.pool; + if (!pool) return null; - if (Array.isArray(pool.write)) out.write = pool.write.map(poolSnapshot); - else if (pool.write) out.write = poolSnapshot(pool.write); + // Replication mode can expose separate read/write pools + if (pool.read || pool.write) { + const out = {}; + if (Array.isArray(pool.read)) out.read = pool.read.map(poolSnapshot); + else if (pool.read) out.read = poolSnapshot(pool.read); - return Object.keys(out).length ? out : null; - } + if (Array.isArray(pool.write)) out.write = pool.write.map(poolSnapshot); + else if (pool.write) out.write = poolSnapshot(pool.write); - return poolSnapshot(pool); - } catch (_) { - return null; + return Object.keys(out).length ? out : null; } + + return poolSnapshot(pool); + } catch (_) { + return null; } +} - /** - * Collect one snapshot of PostgreSQL runtime statistics and emit via logger. - * - * Steps: - * 1. Connection state counts (active/idle/total) - * 2. Oldest active queries ( > 1 second ) capped at 10 - * 3. Database cumulative counters + derived ratios (cache hit %, rollback %) - * 4. Lock inventory (counts per mode, waiting locks, sample of waiters) - * - * Any individual subsection failure is logged (warn/error) but does not abort remaining sections. - * - * @private - * @returns {Promise} - */ - async function collect() { - try { - // First query: counts - const [countRows] = await sequelize.query(` - SELECT - COUNT(*) AS total, - COUNT(*) FILTER (WHERE state='active') AS active, - COUNT(*) FILTER (WHERE state='idle') AS idle - FROM pg_stat_activity;`); - const counts = countRows && countRows[0] ? normalizeCountRow(countRows[0]) : {}; - const sequelizePool = getSequelizePoolStats(sequelize); - // Second query: EXACT user requested static query (1s min age, LIMIT 10) - const [oldestRows] = await sequelize.query(` +/** + * Collect one snapshot of PostgreSQL runtime statistics and return it. + * + * Shared by the periodic logger (`start`) and on-demand callers such as the + * perf tool's metric sampler. Captures: + * 1. Connection state counts (active/idle/total) + * 2. Sequelize pool status (incl. using/waiting — the pool-exhaustion signal) + * 3. Oldest active queries ( > 1 second ) capped at 10 + * 4. Database cumulative counters + derived ratios (cache hit %, rollback %, deadlocks) + * 5. Lock inventory (counts per mode, waiting locks, sample of waiters) + * + * Any individual subsection failure is captured in the returned object under + * the relevant key and does not abort the remaining sections. Never throws. + * + * @param {import('sequelize').Sequelize} sequelize - Postgres-dialect Sequelize instance + * @param {object} [logger] - Optional logger for sub-query error reporting + * @returns {Promise} { counts, sequelizePool, oldestActive, dbStats, locks, collectedAt } + */ +async function snapshot(sequelize, logger = null) { + const result = { + counts: {}, + sequelizePool: null, + oldestActive: [], + dbStats: {}, + locks: { total: 0, waiting: 0, byMode: [], waitingSamples: [] }, + collectedAt: new Date().toISOString() + }; + + // Connection state counts + try { + const [countRows] = await sequelize.query(` + SELECT + COUNT(*) AS total, + COUNT(*) FILTER (WHERE state='active') AS active, + COUNT(*) FILTER (WHERE state='idle') AS idle + FROM pg_stat_activity;`); + result.counts = countRows && countRows[0] ? normalizeCountRow(countRows[0]) : {}; + } catch (e) { + if (logger) logger.error('pg_stat_activity counts query failed: ' + e.message); + } + + result.sequelizePool = getSequelizePoolStats(sequelize); + + // Oldest active queries (>1s), capped at 10 + try { + const [oldestRows] = await sequelize.query(` SELECT pid, now()-query_start AS age, wait_event_type||':'||COALESCE(wait_event,'') AS wait, COALESCE(backend_type,'') AS backend, left(query,120) AS query FROM pg_stat_activity WHERE state='active' AND now()-query_start > interval '1 second' ORDER BY query_start LIMIT 10;`); + result.oldestActive = oldestRows || []; + } catch (e) { + if (logger) logger.error('pg_stat_activity oldest query failed: ' + e.message); + } - // DB-level counters (pg_stat_database) for current DB - let dbStats = {}; - try { - const [dbRows] = await sequelize.query(` + // DB-level counters (pg_stat_database) for current DB + try { + const [dbRows] = await sequelize.query(` SELECT datname, xact_commit, xact_rollback, @@ -173,75 +186,106 @@ function start(sequelize, logger, options = {}) { CASE WHEN (xact_commit + xact_rollback) > 0 THEN round( (xact_rollback::numeric / (xact_commit + xact_rollback)) * 100, 2) ELSE NULL END AS rollback_pct FROM pg_stat_database WHERE datname = current_database();`); - if (dbRows && dbRows[0]) { - const r = dbRows[0]; - dbStats = { - datname: r.datname, - commits: parseInt(r.xact_commit,10), - rollbacks: parseInt(r.xact_rollback,10), - rollback_pct: r.rollback_pct !== null ? Number(r.rollback_pct) : null, - cache_hit_pct: r.cache_hit_pct !== null ? Number(r.cache_hit_pct) : null, - blks_hit: parseInt(r.blks_hit,10), - blks_read: parseInt(r.blks_read,10), - tup_returned: parseInt(r.tup_returned,10), - tup_fetched: parseInt(r.tup_fetched,10), - tup_inserted: parseInt(r.tup_inserted,10), - tup_updated: parseInt(r.tup_updated,10), - tup_deleted: parseInt(r.tup_deleted,10), - deadlocks: parseInt(r.deadlocks,10), - temp_files: parseInt(r.temp_files,10), - temp_bytes: parseInt(r.temp_bytes,10), - blk_read_time: r.blk_read_time !== null ? Number(r.blk_read_time) : null, - blk_write_time: r.blk_write_time !== null ? Number(r.blk_write_time) : null - }; - } - } catch (eDb) { - logger.error('pg_stat_database query failed: ' + eDb.message); - } + if (dbRows && dbRows[0]) { + const r = dbRows[0]; + result.dbStats = { + datname: r.datname, + commits: parseInt(r.xact_commit, 10), + rollbacks: parseInt(r.xact_rollback, 10), + rollback_pct: r.rollback_pct !== null ? Number(r.rollback_pct) : null, + cache_hit_pct: r.cache_hit_pct !== null ? Number(r.cache_hit_pct) : null, + blks_hit: parseInt(r.blks_hit, 10), + blks_read: parseInt(r.blks_read, 10), + tup_returned: parseInt(r.tup_returned, 10), + tup_fetched: parseInt(r.tup_fetched, 10), + tup_inserted: parseInt(r.tup_inserted, 10), + tup_updated: parseInt(r.tup_updated, 10), + tup_deleted: parseInt(r.tup_deleted, 10), + deadlocks: parseInt(r.deadlocks, 10), + temp_files: parseInt(r.temp_files, 10), + temp_bytes: parseInt(r.temp_bytes, 10), + blk_read_time: r.blk_read_time !== null ? Number(r.blk_read_time) : null, + blk_write_time: r.blk_write_time !== null ? Number(r.blk_write_time) : null + }; + } + } catch (eDb) { + if (logger) logger.error('pg_stat_database query failed: ' + eDb.message); + } - // Locks summary (pg_locks) - let locks = { total: 0, waiting: 0, byMode: [], waitingSamples: [] }; - try { - const [lockCounts] = await sequelize.query(` + // Locks summary (pg_locks) + try { + const [lockCounts] = await sequelize.query(` SELECT mode, COUNT(*) AS count FROM pg_locks GROUP BY mode ORDER BY count DESC;`); - const [waitingCountRows] = await sequelize.query(` + const [waitingCountRows] = await sequelize.query(` SELECT COUNT(*) AS waiting FROM pg_locks WHERE NOT granted;`); - const waitingCount = waitingCountRows && waitingCountRows[0] ? parseInt(waitingCountRows[0].waiting,10) : 0; - let waitingSamples = []; - if (waitingCount > 0) { - const [waitingDetails] = await sequelize.query(` + const waitingCount = waitingCountRows && waitingCountRows[0] ? parseInt(waitingCountRows[0].waiting, 10) : 0; + let waitingSamples = []; + if (waitingCount > 0) { + const [waitingDetails] = await sequelize.query(` SELECT pid, locktype, mode, relation::regclass AS relation, virtualxid, virtualtransaction, transactionid, granted FROM pg_locks WHERE NOT granted LIMIT 10;`); - waitingSamples = waitingDetails || []; - } - locks = { - total: lockCounts ? lockCounts.reduce((a,c)=> a + parseInt(c.count,10), 0) : 0, - waiting: waitingCount, - byMode: (lockCounts || []).map(r => ({ mode: r.mode, count: parseInt(r.count,10) })), - waitingSamples - }; - } catch (eL) { - logger.error('pg_locks query failed: ' + eL.message); - } + waitingSamples = waitingDetails || []; + } + result.locks = { + total: lockCounts ? lockCounts.reduce((a, c) => a + parseInt(c.count, 10), 0) : 0, + waiting: waitingCount, + byMode: (lockCounts || []).map(r => ({ mode: r.mode, count: parseInt(r.count, 10) })), + waitingSamples + }; + } catch (eL) { + if (logger) logger.error('pg_locks query failed: ' + eL.message); + } + + return result; +} + +/** + * Start the periodic PostgreSQL statistics scheduler. + * + * Creates an interval that periodically captures a `snapshot()` and emits it via + * logger.info with message 'pg_stat_activity snapshot'. Multiple concurrent + * invocations are ignored (idempotent start). + * + * @param {import('sequelize').Sequelize} sequelize - Initialized Sequelize instance (must be Postgres dialect) + * @param {object} logger - Winston logger instance (child acceptable) used for output + * @param {object} [options] - Optional overrides + * @param {number} [options.intervalMs] - Override collection interval in ms (default env PG_STATS_INTERVAL_MS or 100000) + * @param {number} [options.minAgeMs] - (Currently unused after fixed 1s query; retained for compatibility) + * @param {number} [options.topN] - (Currently unused after fixed LIMIT 10; retained for compatibility) + * @returns {void} + */ +function start(sequelize, logger, options = {}) { + if (_timer) return; // already running + const intervalMs = parseInt(process.env.PG_STATS_INTERVAL_MS || options.intervalMs || '100000', 10); + const minAgeMs = parseInt(process.env.PG_STATS_MIN_AGE_MS || options.minAgeMs || '10000', 10); + const topN = parseInt(process.env.PG_STATS_TOP_N || options.topN || '10', 10); + /** + * Collect one snapshot and emit it via the logger. Never throws. + * @private + * @returns {Promise} + */ + async function collect() { + try { + const snap = await snapshot(sequelize, logger); logger.info('pg_stat_activity snapshot', { pg_stat_activity: { - counts, - oldestActive: oldestRows || [], - sequelizePool, - dbStats, - locks, + counts: snap.counts, + oldestActive: snap.oldestActive, + sequelizePool: snap.sequelizePool, + dbStats: snap.dbStats, + locks: snap.locks, intervalMs, - collectedAt: new Date().toISOString() + collectedAt: snap.collectedAt } }); } catch (e) { @@ -249,38 +293,20 @@ function start(sequelize, logger, options = {}) { } } - // Normalize returned numeric strings to integers - /** - * Convert object with possibly string-based numeric fields to integers where appropriate. - * Non-numeric values are preserved. - * - * @private - * @param {Record} row - Raw row object from pg_stat_activity aggregation query - * @returns {Record} Normalized row with numeric strings parsed - */ - function normalizeCountRow(row) { - const out = {}; - Object.entries(row).forEach(([k,v]) => { - const num = parseInt(v, 10); - out[k] = isNaN(num) ? v : num; - }); - return out; - } - // Kick off immediately then schedule collect(); _timer = setInterval(collect, intervalMs); logger.debug(`Started pg_stat_activity scheduler (interval ${intervalMs} ms, minAge ${minAgeMs} ms, topN ${topN}).`); } +/** + * Stop the running statistics scheduler interval if active. Safe to call + * multiple times. + * + * @param {object} [logger] - Logger for optional debug message + * @returns {void} + */ function stop(logger) { - /** - * Stop the running statistics scheduler interval if active. - * Safe to call multiple times. - * - * @param {object} [logger] - Logger for optional debug message - * @returns {void} - */ if (_timer) { clearInterval(_timer); _timer = null; @@ -288,5 +314,4 @@ function stop(logger) { } } -module.exports = { start, stop }; - +module.exports = { start, stop, snapshot }; \ No newline at end of file diff --git a/backend/package-lock.json b/backend/package-lock.json index ff667874b..4013f8fa8 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -29,6 +29,7 @@ "express-session": "^1.19.0", "js-yaml": "^4.1.1", "jszip": "^3.10.1", + "lodash": "^4.18.1", "mustache-express": "^1.3.2", "nodemailer": "^9.0.4", "objects-to-csv": "^1.3.6", diff --git a/backend/package.json b/backend/package.json index df11d5263..9216bac3f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -16,7 +16,8 @@ "test_doh": "cross-env NODE_ENV=test jest --detectOpenHandles --testTimeout=10000", "pretest": "cross-env NODE_ENV=test npm run db_migrate:reset", "set-admin-password": "node scripts/setAdminPassword.js", - "anonymize": "node scripts/anonymize.js" + "anonymize": "node scripts/anonymize.js", + "perf": "node scripts/perf/cli.js" }, "dependencies": { "@faker-js/faker": "^10.3.0", @@ -40,6 +41,7 @@ "express-session": "^1.19.0", "js-yaml": "^4.1.1", "jszip": "^3.10.1", + "lodash": "^4.18.1", "mustache-express": "^1.3.2", "nodemailer": "^9.0.4", "objects-to-csv": "^1.3.6", diff --git a/backend/scripts/perf/ceiling.js b/backend/scripts/perf/ceiling.js new file mode 100644 index 000000000..ae5572678 --- /dev/null +++ b/backend/scripts/perf/ceiling.js @@ -0,0 +1,215 @@ +'use strict'; + +const { resolvePayload } = require('./utils/recordings'); +const { randomUUID } = require('crypto'); +const { MetricSampler } = require('./utils/metrics'); +const { printTraceStats, printCulprit } = require('./utils/trace-stats'); +const { saveResults, makeOutputCapture, saveReadableReport } = require('./utils/report'); + +/** + * Ceiling finder: climb concurrency by --step each level, no cap, until a stop + * condition trips (trace failure or p95 latency over threshold). Reports the + * max concurrency the server sustained. Drives escalation one level at a time + * via replayRun's singleLevel mode. + * @param {Object} cfg - Run configuration; reads step (concurrency added per level), maxIterations (safety cap on levels), latencyThreshold, maxFailures and failThreshold (stop conditions), ackTimeout, and the recordings/files that resolvePayload consumes + * @param {Object} ctx - Run context: { socket, emitWithAck, userId } from the CLI's connected session + * @returns {Promise<{code: number, maxConcurrency: number}>} Exit code (0 ok, 1 error) and the max concurrency the server sustained (lastGood) + */ +async function runCeiling(cfg, ctx) { + const capture = makeOutputCapture(); + capture.start(); + const { recordingIds, sessions } = await resolvePayload(cfg, ctx); + const step = cfg.step > 0 ? cfg.step : 5; + const hardCap = cfg.maxIterations > 0 ? cfg.maxIterations : Infinity; + + console.log(' ceiling input: ' + (sessions.length ? `${sessions.length} file session(s)` : recordingIds.join(', '))); + console.log(`Climbing concurrency by ${step} each level until failure or p95 > ${cfg.latencyThreshold}ms ...`); + console.log(' level concurrency passed failed avgMs p95Ms thru/s wait status'); + + let concurrency = step; + let level = 0; + let lastGood = 0; + const allLevels = []; + + // Sample server vitals continuously through the climb (approach a). After + // each level we read the peak pool-waiting since the last level — the DB + // pool backing up is the original pool-exhaustion failure, measured directly. + const sampler = new MetricSampler(ctx.emitWithAck, 1000); + await sampler.start(); + // Capture the pool's idle waiting level before applying load, so saturation + // means "climbed above resting" rather than "above zero" — some deployments + // idle with non-zero pool waiting. + let poolWaitingBaseline = sampler.latestPoolWaiting(); + let stopped = false; + + try { + while (true) { + level++; + const progressId = randomUUID(); + const onProgress = (data) => { + if (data.id !== progressId) return; + const pct = data.total ? Math.floor((data.current / data.total) * 100) : 0; + process.stdout.write(`\r level ${level} (concurrency ${concurrency}): ${pct}% `); + }; + ctx.socket.on('progressUpdate', onProgress); + + let ack; + try { + ack = await ctx.emitWithAck('replayRun', { + recordingIds, + sessions, + timingMode: 'fast', + ackTimeout: cfg.ackTimeout, + singleLevel: concurrency, + progressId, + }, 0); + } finally { + ctx.socket.off('progressUpdate', onProgress); + } + + process.stdout.write('\r' + ' '.repeat(50) + '\r'); // clear the progress line + + if (!ack || !ack.success) { + await sampler.stop(); + stopped = true; + console.error('\nCEILING ERROR — replayRun failed: ' + (ack && ack.message)); + capture.stop(); + return { code: 1, maxConcurrency: lastGood }; + } + + const m = metrics(ack.data); + allLevels.push({ level, concurrency, ...m, results: ack.data.results }); + + // Pool-waiting: the DB pool backing up = pool exhaustion (the original + // failure). Read the peak since we started; if it climbed above 0, the + // pool saturated at this concurrency. + const peakWaiting = sampler.peakPoolWaiting(); + const poolSaturated = peakWaiting > poolWaitingBaseline && peakWaiting > 0; + + const allowedFailures = cfg.maxFailures || 0; + const totalTraces = m.passed + m.failed; + const failRate = totalTraces > 0 ? (m.failed / totalTraces) * 100 : 0; + const rateExceeded = failRate > cfg.failThreshold; + const tripped = m.failed > allowedFailures || rateExceeded || m.p95 > cfg.latencyThreshold || poolSaturated; + const status = tripped ? 'STOP' : 'ok'; + console.log(` ${pad(level, 5)} ${pad(concurrency, 11)} ${pad(m.passed, 6)} ${pad(m.failed, 6)} ${pad(m.avg, 5)} ${pad(m.p95, 5)} ${pad(m.thru, 6)} ${pad(peakWaiting, 4)} ${status}`); + + if (tripped) { + let reason; + if (poolSaturated) { + reason = `DB pool saturated (waiting peaked at ${peakWaiting})`; + } else if (m.failed > allowedFailures) { + reason = `${m.failed} trace failure(s) (allowed: ${allowedFailures})`; + } else if (rateExceeded) { + reason = `failure rate ${failRate.toFixed(1)}% > ${cfg.failThreshold}% threshold`; + } else { + reason = `overall p95 latency ${m.p95}ms > ${cfg.latencyThreshold}ms threshold`; + } + await sampler.stop(); + stopped = true; + console.log(`\nCEILING: server sustained ${lastGood} concurrent sessions; degraded at ${concurrency} (${reason}).`); + { + const rssMb = (b) => Math.round(b / 1024 / 1024); + const rss = sampler.rssTrend(); + const heap = sampler.heapTrend(); + console.log(` memory (RSS): ${rssMb(rss.first)}MB -> ${rssMb(rss.last)}MB, peak ${rssMb(sampler.peakRss())}MB`); + console.log(` memory (heap): ${rssMb(heap.first)}MB -> ${rssMb(heap.last)}MB, peak ${rssMb(sampler.peakHeap())}MB`); + const pg = sampler.pgStatsSummary(); + if (pg) { + console.log(` Postgres: deadlocks +${pg.deadlocksDelta}, rollbacks +${pg.rollbacksDelta}, peak lock-waits ${pg.peakLockWaits}` + + (pg.minCacheHit != null ? `, min cache-hit ${pg.minCacheHit.toFixed(1)}%` : '')); + } + } + printTraceStats(ack.data.results, { title: `Trace breakdown at level ${concurrency} (each action's OWN stats):` }); + + // Name the likely culprit, scoped to why it stopped. + printCulprit(ack.data.results, { + failed: m.failed > allowedFailures || rateExceeded, + poolSaturated, + overallP95: m.p95, + }); + const saved = saveResults('ceiling', cfg, { + results: allLevels.flatMap(l => l.results || []), + metrics: allLevels.map(({ results, ...rest }) => rest), + sampler, + verdict: `degraded at ${concurrency} (${reason})`, + }); + const text = capture.stop(); + if (saved) { + const txt = saveReadableReport(saved, text); + console.log(`\n results saved: ${saved}`); + if (txt) console.log(` readable report: ${txt}`); + } + return { code: 0, maxConcurrency: lastGood }; + } + + lastGood = concurrency; + if (level >= hardCap) { + await sampler.stop(); + stopped = true; + console.log(`\nCEILING: hit safety cap (${hardCap} levels) at ${concurrency} sessions, still healthy — raise --max-iterations or lower --latency-threshold to push further.`); + { + const rssMb = (b) => Math.round(b / 1024 / 1024); + const rss = sampler.rssTrend(); + const heap = sampler.heapTrend(); + console.log(` memory (RSS): ${rssMb(rss.first)}MB -> ${rssMb(rss.last)}MB, peak ${rssMb(sampler.peakRss())}MB`); + console.log(` memory (heap): ${rssMb(heap.first)}MB -> ${rssMb(heap.last)}MB, peak ${rssMb(sampler.peakHeap())}MB`); + const pg = sampler.pgStatsSummary(); + if (pg) { + console.log(` Postgres: deadlocks +${pg.deadlocksDelta}, rollbacks +${pg.rollbacksDelta}, peak lock-waits ${pg.peakLockWaits}` + + (pg.minCacheHit != null ? `, min cache-hit ${pg.minCacheHit.toFixed(1)}%` : '')); + } + } + + const saved = saveResults('ceiling', cfg, { + results: allLevels.flatMap(l => l.results || []), + metrics: allLevels.map(({ results, ...rest }) => rest), + sampler, + verdict: `hit safety cap at ${concurrency}, still healthy`, + }); + const text = capture.stop(); + if (saved) { + const txt = saveReadableReport(saved, text); + console.log(`\n results saved: ${saved}`); + if (txt) console.log(` readable report: ${txt}`); + } + + return { code: 0, maxConcurrency: lastGood }; + } + concurrency += step; + } + } finally { + if (!stopped) await sampler.stop(); + } +} + +/** + * Aggregate one replay level's session results into summary metrics. + * @param {Object} lvl - One level's replay result ({results: Array, duration: number}) + * @returns {{passed: number, failed: number, avg: number, p95: number, thru: number}} Trace pass/fail counts, average and 95th-percentile latency in ms, and throughput in traces per second + */ +function metrics(lvl) { + let passed = 0, failed = 0; + const lats = []; + for (const s of (lvl.results || [])) { + passed += s.passed || 0; + failed += s.failed || 0; + for (const l of (s.latencies || [])) lats.push(l.latency); + } + lats.sort((a, b) => a - b); + const avg = lats.length ? Math.round(lats.reduce((a, b) => a + b, 0) / lats.length) : 0; + const p95 = lats.length ? Math.round(lats[Math.min(lats.length - 1, Math.floor(0.95 * lats.length))]) : 0; + const durSec = (lvl.duration || 0) / 1000; + const thru = durSec > 0 ? Math.round((passed + failed) / durSec) : 0; + return { passed, failed, avg, p95, thru }; +} + +/** + * Right-pad a value to a fixed width for aligned table output. + * @param {*} v - Value to pad (coerced to string) + * @param {number} w - Target column width + * @returns {string} The padded string + */ +function pad(v, w) { return String(v).padEnd(w); } + +module.exports = { runCeiling }; \ No newline at end of file diff --git a/backend/scripts/perf/cli.js b/backend/scripts/perf/cli.js new file mode 100644 index 000000000..de1e0b39c --- /dev/null +++ b/backend/scripts/perf/cli.js @@ -0,0 +1,319 @@ +#!/usr/bin/env node +'use strict'; + +/** + * CARE perf harness (ramp mode — login + connect milestone). + * + * Replays recorded sessions as concurrent load against a running CARE backend + * and reports degradation. Driven as a socket.io client so it exercises the + * real socket/auth path. This stage: CLI parsing, real admin login, and an + * authenticated socket connection. The ramp loop + metric sampling come next. + */ + +const { io: SocketIOClient } = require('socket.io-client'); +const { login, verifyAuthenticatedSession } = require('./utils/auth'); +require('dotenv').config({ path: require('path').resolve(__dirname, '../../../.env') }); +const readline = require('readline'); + +/** + * Prompt for the admin password on the terminal without echoing it. + * Used when no --password flag and no env var is set (e.g. a deployed/test + * box where the perf env vars aren't available). Never logged or stored. + * @returns {Promise} the entered password + */ +function promptPassword() { + return new Promise((resolve) => { + const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); + const stdout = process.stdout; + // Mask input: intercept the output stream so typed chars aren't shown. + const onData = (char) => { + char = String(char); + if (char === '\n' || char === '\r' || char === '\u0004') { + stdout.write('\n'); + } else { + // Overwrite the just-echoed char with nothing. + stdout.clearLine(0); + stdout.cursorTo(0); + stdout.write('Admin password: '); + } + }; + process.stdin.on('data', onData); + rl.question('Admin password: ', (answer) => { + process.stdin.removeListener('data', onData); + rl.close(); + resolve(answer.trim()); + }); + }); +} + +/** + * Parse `--flag value` and bare `--flag` CLI arguments into an object. + * @param {Array} argv - Raw argument list (process.argv minus node and script) + * @returns {Object} Flag names (without `--`) mapped to their value, or `true` when the flag takes none + */ +function parseArgs(argv) { + const args = {}; + for (let i = 0; i < argv.length; i++) { + const a = argv[i]; + if (a.startsWith('--')) { + const key = a.slice(2); + const next = argv[i + 1]; + if (next === undefined || next.startsWith('--')) { + args[key] = true; + } else { + args[key] = next; + i++; + } + } + } + return args; +} + +/** + * Parse a duration string like "30m", "90s", "1h" into milliseconds. + * @param {string} val - Duration string such as "30s", "5m", or a raw millisecond count + * @returns {number|null} Duration in milliseconds, or null when the value is absent or unparseable + */ +function parseDuration(val) { + if (!val || val === true) return null; + const m = String(val).trim().match(/^(\d+)\s*(ms|s|m|h)?$/i); + if (!m) return null; + const n = parseInt(m[1], 10); + const unit = (m[2] || 's').toLowerCase(); + const mult = { ms: 1, s: 1000, m: 60000, h: 3600000 }[unit]; + return n * mult; +} + +/** + * Parse a comma-separated list of recording ids. + * @param {string|boolean} val - Raw `--recordings` value + * @returns {Array} Positive integer ids; empty if the flag was absent or held no valid ids + */ +function parseRecordings(val) { + if (!val || val === true) return []; + return String(val).split(',').map(s => parseInt(s.trim(), 10)).filter(n => Number.isInteger(n) && n > 0); +} + +/** + * Build the run configuration from parsed CLI arguments, applying defaults + * and falling back to environment variables where flags are absent. + * Parse a flag that may be absent, set without a value, or given an explicit boolean. + * @param {*} value - Raw argument value from parseArgs + * @returns {boolean|null} true/false when specified, null when the flag was not passed + */ +function parseOptionalBoolean(value) { + if (value === undefined) { + return null; + } + if (value === 'false' || value === '0') { + return false; + } + return Boolean(value); +} + +/** + * @param {Object} args - Parsed arguments from parseArgs + * @returns {Object} The run configuration consumed by validateConfig and the mode handlers + */ +function buildConfig(args) { + return { + mode: args.mode || 'ramp', + recordings: parseRecordings(args.recordings), + files: args.files && args.files !== true ? String(args.files).split(',').map(s => s.trim()).filter(Boolean) : [], + dir: args.dir && args.dir !== true ? String(args.dir) : null, + maxIterations: parseInt(args['max-iterations'], 10) || 10, + timingMode: args['timing-mode'] || 'fast', + ackTimeout: parseInt(args['ack-timeout'], 10) || 2000, + latencyThreshold: args['latency-threshold'] !== undefined ? Number(args['latency-threshold']) : 1000, + failThreshold: args['fail-threshold'] !== undefined ? Number(args['fail-threshold']) : 5, + server: args.server || 'http://localhost:3001', + continueOnFailure: parseOptionalBoolean(args['continue-on-failure']), + user: args.user || process.env.PERF_ADMIN_USER || 'admin', + password: args.password || process.env.PERF_ADMIN_PASSWORD || process.env.ADMIN_PWD || null, + step: parseInt(args.step, 10) || 5, + maxFailures: parseInt(args['max-failures'], 10) || 0, + concurrency: parseInt(args.concurrency, 10) || 10, + duration: parseDuration(args.duration) || 60000, // default 60s + sampleInterval: parseDuration(args['sample-interval']) || 0, // 0 = back-to-back + }; +} + +/** + * Check a configuration for invalid or missing values before the run starts. + * @param {Object} cfg - Configuration from buildConfig + * @returns {Array} Human-readable error messages; empty when the config is valid + */ +function validateConfig(cfg) { + const errors = []; + if (!['ramp', 'soak', 'regression', 'inspect', 'ceiling'].includes(cfg.mode)) errors.push(`--mode must be "ramp", "soak", "regression", "inspect", or "ceiling" (got "${cfg.mode}")`); + if (cfg.recordings.length === 0 && cfg.files.length === 0 && !cfg.dir) errors.push('need --recordings and/or --files / --dir '); + if (cfg.mode === 'ramp' && (!Number.isInteger(cfg.maxIterations) || cfg.maxIterations < 1)) errors.push('--max-iterations must be a positive integer'); + if (!Number.isFinite(cfg.latencyThreshold) || cfg.latencyThreshold <= 0) errors.push('--latency-threshold must be a positive number'); + if (!Number.isFinite(cfg.failThreshold) || cfg.failThreshold < 0 || cfg.failThreshold > 100) errors.push('--fail-threshold must be a percentage between 0 and 100'); + if (cfg.timingMode !== 'fast' && cfg.timingMode !== 'realtime') errors.push('--timing-mode must be "fast" or "realtime"'); + if (!cfg.password) errors.push('admin password required: pass --password or set PERF_ADMIN_PASSWORD'); + return errors; +} + +/** + * Open a Socket.IO connection using the session cookie and wait for the + * server's ready signal before resolving. + * @param {string} serverUrl - Target server, e.g. http://localhost:3001 + * @param {string} cookie - The "connect.sid=..." session cookie + * @returns {Promise} The connected socket + * @throws {Error} If the connection fails or no ready signal arrives in time + */ +function connectSocket(serverUrl, cookie) { + return new Promise((resolve, reject) => { + const socket = SocketIOClient(serverUrl, { + extraHeaders: { cookie }, + reconnection: false, + timeout: 10000, + }); + socket.on('ready', () => resolve(socket)); + socket.on('connect_error', (err) => reject(new Error('Socket connection failed: ' + err.message))); + setTimeout(() => reject(new Error('Socket connection timed out (no "ready" within 10s)')), 10000); + }); +} + +/** + * Emit a socket event and wait for the server's acknowledgement. + * @param {Object} socket - Connected Socket.IO client from connectSocket + * @param {string} event - Event name to emit + * @param {Object} payload - Event payload sent as the emit's first argument; defaults to {} when omitted + * @param {number} [timeoutMs=5000] - Ack timeout in ms; 0 disables the timeout + * @returns {Promise} The acknowledgement payload + * @throws {Error} If no acknowledgement arrives before the timeout + */ +function emitWithAck(socket, event, payload, timeoutMs = 5000) { + return new Promise((resolve, reject) => { + const timer = timeoutMs > 0 + ? setTimeout(() => reject(new Error('No ack for "' + event + '" within ' + timeoutMs + 'ms')), timeoutMs) + : null; + socket.emit(event, payload || {}, (res) => { + if (timer) clearTimeout(timer); + resolve(res); + }); + }); +} + +/** + * Confirm the connected session has admin rights by calling an admin-guarded + * handler. Replay requires admin, so fail fast here rather than mid-run. + * @param {Object} socket - Connected Socket.IO client + * @returns {Promise} The handler's acknowledgement payload + * @throws {Error} If the session lacks admin access + */ +async function verifyAdminAccess(socket) { + const res = await emitWithAck(socket, 'recordingGetOnlineSessions', {}); + // createSocket acks are { success: bool, data?, message? }. + if (res && res.success) return; + const msg = (res && res.message) || 'unknown error'; + throw new Error('Configured account is not admin (recordingGetOnlineSessions rejected: ' + msg + '). Use an admin account.'); +} + +/** + * Run one perf session: authenticate, connect, verify admin access, then + * dispatch to the handler for the configured mode. + * @param {Object} cfg - Validated run configuration: server, user, password, mode, plus the mode-specific fields consumed by the mode handler + * @throws {Error} If login, connection, or admin verification fails + */ +async function run(cfg) { + console.log('\nLogging in as "' + cfg.user + '" at ' + cfg.server + ' ...'); + const cookie = await login(cfg.server, cfg.user, cfg.password); + const user = await verifyAuthenticatedSession(cfg.server, cookie); + console.log(' logged in as: ' + (user.userName || user.id) + ' (' + user.email + ')'); + console.log('Connecting socket ...'); + const socket = await connectSocket(cfg.server, cookie); + console.log(' socket connected: ' + socket.id); + + console.log('Verifying admin access ...'); + await verifyAdminAccess(socket); + console.log(' admin access confirmed.'); + + // Bind emit to this socket so the recordings layer + modes can use it. + const emit = (event, payload, timeoutMs) => emitWithAck(socket, event, payload, timeoutMs); + const ctx = { socket, emitWithAck: emit, userId: user.id }; + + if (cfg.mode === 'regression') { + const { runRegression } = require('./regression'); + const code = await runRegression(cfg, ctx); + socket.disconnect(); + process.exit(code); + } + if (cfg.mode === 'inspect') { + const { runInspect } = require('./inspect'); + const code = await runInspect(cfg, ctx); + socket.disconnect(); + process.exit(code); + } + if (cfg.mode === 'ramp') { + const { runRamp } = require('./ramp'); + const code = await runRamp(cfg, ctx); + socket.disconnect(); + process.exit(code); + } + if (cfg.mode === 'ceiling') { + const { runCeiling } = require('./ceiling'); + const { code } = await runCeiling(cfg, ctx); + socket.disconnect(); + process.exit(code); + } + if (cfg.mode === 'soak') { + const { runSoak } = require('./soak'); + const code = await runSoak(cfg, ctx); + socket.disconnect(); + process.exit(code); + } + + // Every valid mode is dispatched and exits above; validateConfig rejects + // anything else, so this point is unreachable. Guard anyway rather than + // hang silently on an unhandled mode. + throw new Error(`No handler for mode "${cfg.mode}"`); +} + +/** + * CLI entry point: parse arguments, prompt for a password when needed, + * validate the configuration, and start the run. + * @returns {Promise} Resolves when the run completes + */ +async function main() { + const cfg = buildConfig(parseArgs(process.argv.slice(2))); + + // No password from --password or env (e.g. a deployed/test box without the + // perf env vars): prompt for it interactively rather than failing outright. + // A non-TTY environment (CI, piped input) can't prompt — there env/flag is + // the only path, and validateConfig below will report the missing password. + if (!cfg.password && process.stdin.isTTY) { + cfg.password = await promptPassword(); + } + + const errors = validateConfig(cfg); + if (errors.length > 0) { + console.error('Invalid configuration:'); + for (const e of errors) console.error(' - ' + e); + console.error('\nExample:\n PERF_ADMIN_PASSWORD=... npm run perf -- --mode ramp --recordings 12,15 --max-iterations 30\n PERF_ADMIN_PASSWORD=... npm run perf -- --mode regression --dir stories/'); + process.exit(1); + } + + console.log('CARE perf — configuration'); + console.log(' mode: ' + cfg.mode); + console.log(' recordings: ' + (cfg.recordings.length ? cfg.recordings.join(', ') : '—')); + if (cfg.files.length) console.log(' files: ' + cfg.files.join(', ')); + if (cfg.dir) console.log(' dir: ' + cfg.dir); + // Only ramp (levels to climb) and ceiling (hard cap on levels) use this. + // Echoing it for soak, regression and inspect implies a knob that does + // nothing in those modes. + if (cfg.mode === 'ramp' || cfg.mode === 'ceiling') { + console.log(' maxIterations: ' + cfg.maxIterations); + } + console.log(' server: ' + cfg.server); + console.log(' user: ' + cfg.user); + + run(cfg).then(() => process.exit(0)).catch(err => { + console.error('\nperf error: ' + err.message); + process.exit(1); + }); +} + +main(); \ No newline at end of file diff --git a/backend/scripts/perf/inspect.js b/backend/scripts/perf/inspect.js new file mode 100644 index 000000000..c5ce8e814 --- /dev/null +++ b/backend/scripts/perf/inspect.js @@ -0,0 +1,87 @@ +'use strict'; + +const { resolvePayload } = require('./utils/recordings'); + +/** + * Inspect recordings: fetch each recording's traces and report a plain + * distribution of every action type (count + %), so a regression "pass" can be + * eyeballed for what it actually exercised. Also flags possible Gap-2 + * truncation (a recording cut short by a page navigation). + * @param {Object} cfg - Run configuration; reads the recordings/files that resolvePayload consumes + * @param {Object} ctx - Run context: { socket, emitWithAck, userId } from the CLI's connected session + * @returns {Promise} exit code (0; inspection is informational) + */ +async function runInspect(cfg, ctx) { + const { recordingIds, sessions } = await resolvePayload(cfg, ctx); + + // File path: the traces are already in hand — analyze them directly, + // no server round-trip. + if (sessions.length) { + for (const session of sessions) { + analyzeRecording(session.recordingName || session.sessionKey, session.traces || []); + } + return 0; + } + + // DB path: fetch each recording's traces from the server by id. Each fetch + // is isolated so one unreadable recording (or a transient error) doesn't + // abort the whole batch — the survey continues and reports what it could. + for (const id of recordingIds) { + let ack; + try { + ack = await ctx.emitWithAck('recordingGetTraces', { id }); + } catch (err) { + console.log(`\n=== Recording ${id} ===`); + console.log(` could not fetch traces: ${err.message}`); + continue; + } + if (!ack || !ack.success) { + console.log(`\n=== Recording ${id} ===`); + console.log(` could not fetch traces: ${ack && ack.message}`); + continue; + } + analyzeRecording(id, ack.data || []); + } + return 0; +} + +/** + * Print a trace-count and action-distribution summary for one recording. + * @param {number|string} id - Recording id or display name for the header + * @param {Array} traces - The recording's traces ({action, direction}) + * @returns {void} + */ +function analyzeRecording(id, traces) { + const total = traces.length; + const byAction = {}; + let incoming = 0, outgoing = 0; + + for (const t of traces) { + byAction[t.action] = (byAction[t.action] || 0) + 1; + if (t.direction === true || t.direction === 1) incoming++; else outgoing++; + } + + console.log(`\n=== Recording ${id} ===`); + console.log(` total traces: ${total} (incoming ${incoming}, outgoing ${outgoing})`); + console.log(` distinct actions: ${Object.keys(byAction).length}`); + + // Plain distribution of every action type, most frequent first. No + // classification or verdict — the reader decides what matters. + console.log(' distribution:'); + const entries = Object.entries(byAction).sort((a, b) => b[1] - a[1]); + for (const [action, count] of entries) { + const pct = total ? ((count / total) * 100).toFixed(1) : '0.0'; + console.log(` ${action}: ${count} (${pct}%)`); + } + + // Gap-2 heads-up: a trailing disconnect can mean a page navigation cut the + // recording short, so later actions may be missing. Not a classification — + // a coverage warning worth keeping. + const last = traces[traces.length - 1]; + if (last && (last.action === 'disconnect' || last.action === 'disconnecting')) { + console.log(' NOTE: ends on a disconnect — if the story continued after a page navigation,'); + console.log(' later actions may be missing (Gap 2). Verify coverage.'); + } +} + +module.exports = { runInspect }; \ No newline at end of file diff --git a/backend/scripts/perf/ramp.js b/backend/scripts/perf/ramp.js new file mode 100644 index 000000000..638f5c81d --- /dev/null +++ b/backend/scripts/perf/ramp.js @@ -0,0 +1,178 @@ +'use strict'; + +const { resolvePayload } = require('./utils/recordings'); +const { randomUUID } = require('crypto'); +const { printTraceStats } = require('./utils/trace-stats'); +const { MetricSampler } = require('./utils/metrics'); +const { saveResults, makeOutputCapture, saveReadableReport } = require('./utils/report'); + +/** + * Ramp mode: escalate concurrency (N, 2N, 3N...) until a hard failure or the + * iteration cap, then report the degradation curve. The server (replayRun) + * already does the escalation and stops on failure; this reads the results and + * computes/prints the per-level metrics + verdict. + * @param {Object} cfg - Run configuration; reads maxIterations (levels to climb), ackTimeout, latencyThreshold (p95 stop condition), timingMode, and the recordings/files that resolvePayload consumes + * @param {Object} ctx - Run context: { socket, emitWithAck, userId } from the CLI's connected session + * @returns {Promise} exit code (0 = reached cap clean, 1 = broke early) + */ +async function runRamp(cfg, ctx) { + const capture = makeOutputCapture(); + capture.start(); + const { recordingIds, sessions } = await resolvePayload(cfg, ctx); + console.log(' ramp input: ' + (sessions.length ? `${sessions.length} file session(s)` : `recordings ${recordingIds.join(', ')}`)); + console.log(`Running ramp: up to ${cfg.maxIterations} iterations, stop on failure ...`); + + const progressId = randomUUID(); + const onProgress = (data) => { + if (data.id !== progressId) return; + const pct = data.total ? Math.floor((data.current / data.total) * 100) : 0; + process.stdout.write(`\r progress: ${pct}% (${data.current}/${data.total} traces) `); + }; + ctx.socket.on('progressUpdate', onProgress); + + // Sample server vitals (memory + DB pool) during the whole ramp climb. + const sampler = new MetricSampler(ctx.emitWithAck, 1000); + await sampler.start(); + + let ack; + try { + // The previously broken/duplicate emitWithAck call, now restored + ack = await ctx.emitWithAck('replayRun', { + recordingIds, + sessions, + timingMode: 'fast', + continueOnFailure: cfg.continueOnFailure ?? false, + maxIterations: cfg.maxIterations, + ackTimeout: cfg.ackTimeout, + progressId, + latencyThreshold: cfg.latencyThreshold, + }, 0); + } finally { + ctx.socket.off('progressUpdate', onProgress); + await sampler.stop(); + } + + process.stdout.write('\n'); + + if (!ack || !ack.success) { + console.error('RAMP ERROR — replayRun failed: ' + (ack && ack.message)); + capture.stop(); + return 1; + } + + const levels = ack.data || []; + reportRamp(levels, cfg, sampler); + + // Exit non-zero if it broke before the cap (a failing level). + const brokeEarly = levels.length > 0 && !levels[levels.length - 1].passed; + const saved = saveResults('ramp', cfg, { + results: levels.flatMap(l => l.results || []), + metrics: levels, + sampler, + verdict: brokeEarly ? 'broke' : 'clean', + }); + const text = capture.stop(); + if (saved) { + const txt = saveReadableReport(saved, text); + console.log(`\n results saved: ${saved}`); + if (txt) console.log(` readable report: ${txt}`); + } + return brokeEarly ? 1 : 0; +} + +/** + * Read a percentile value from a pre-sorted numeric array. + * @param {Array} sorted - Values sorted ascending + * @param {number} p - Percentile to read (0-100) + * @returns {number} The value at that percentile, or 0 if the array is empty + */ +function percentile(sorted, p) { + if (sorted.length === 0) return 0; + const idx = Math.min(sorted.length - 1, Math.floor((p / 100) * sorted.length)); + return sorted[idx]; +} + +/** + * Print the ramp results table, memory and DB vitals, and the final verdict. + * @param {Array} levels - Per-level replay results from replayRun + * @param {Object} cfg - Run configuration; reads maxIterations and latencyThreshold to phrase the final verdict + * @param {Object} sampler - Stopped MetricSampler; read for rss/heap trends, pool waiting, and Postgres stat deltas + * @returns {void} + */ +function reportRamp(levels, cfg, sampler) { + console.log('\n=== Ramp results ==='); + console.log(' level sessions passed failed avgMs p95Ms maxMs thru/s status'); + + for (const lvl of levels) { + const sessions = lvl.results || []; + let totalTraces = 0, failedTraces = 0; + const lats = []; + for (const s of sessions) { + totalTraces += s.total || 0; + failedTraces += s.failed || 0; + for (const l of (s.latencies || [])) lats.push(l.latency); + } + lats.sort((a, b) => a - b); + const avg = lats.length ? Math.round(lats.reduce((a, b) => a + b, 0) / lats.length) : 0; + const p95 = Math.round(percentile(lats, 95)); + const max = lats.length ? lats[lats.length - 1] : 0; + const durSec = (lvl.duration || 0) / 1000; + const thru = durSec > 0 ? Math.round(totalTraces / durSec) : 0; + const status = lvl.passed ? 'ok' : 'FAIL'; + + console.log( + ` ${String(lvl.level).padEnd(5)} ${String(lvl.sessions).padEnd(8)} ` + + `${String(totalTraces - failedTraces).padEnd(6)} ${String(failedTraces).padEnd(6)} ` + + `${String(avg).padEnd(5)} ${String(p95).padEnd(5)} ${String(max).padEnd(5)} ` + + `${String(thru).padEnd(6)} ${status}` + ); + + } + + const lastLevel = levels[levels.length - 1]; + if (lastLevel && lastLevel.results) { + printTraceStats(lastLevel.results, { title: `Trace breakdown at final level (${lastLevel.sessions} sessions):` }); + } + + if (sampler) { + const rssMb = (b) => Math.round(b / 1024 / 1024); + const rss = sampler.rssTrend(); + const heap = sampler.heapTrend(); + console.log(`\n memory (RSS): ${rssMb(rss.first)}MB -> ${rssMb(rss.last)}MB, peak ${rssMb(sampler.peakRss())}MB`); + console.log(` memory (heap): ${rssMb(heap.first)}MB -> ${rssMb(heap.last)}MB, peak ${rssMb(sampler.peakHeap())}MB`); + console.log(` DB pool waiting: peak ${sampler.peakPoolWaiting()}`); + const pg = sampler.pgStatsSummary(); + if (pg) { + console.log(` Postgres: deadlocks +${pg.deadlocksDelta}, rollbacks +${pg.rollbacksDelta}, peak lock-waits ${pg.peakLockWaits}` + + (pg.minCacheHit != null ? `, min cache-hit ${pg.minCacheHit.toFixed(1)}%` : '')); + } + } + + // Verdict. + const last = levels[levels.length - 1]; + console.log(''); + if (last && !last.passed) { + console.log(`RAMP: broke at iteration ${last.level} (${last.sessions} concurrent sessions) — trace failures.`); + } else if (last && levels.length < cfg.maxIterations) { + console.log(`RAMP: stopped at iteration ${last.level} (${last.sessions} sessions) — p95 latency ${last.p95}ms exceeded threshold ${cfg.latencyThreshold}ms.`); + } else if (last) { + console.log(`RAMP: reached cap of ${last.level} iterations (${last.sessions} sessions) with no failure or latency breach.`); + if (levels.length > 1) { + const firstLat = avgLatency(levels[0]), lastLat = avgLatency(last); + console.log(` avg latency went from ${firstLat}ms (iter 1) to ${lastLat}ms (iter ${last.level}).`); + } + } +} + +/** + * Average trace latency across all sessions in one level. + * @param {Object} level - One level's replay result ({results: Array}) + * @returns {number} Mean latency in ms, rounded; 0 if the level has no latencies + */ +function avgLatency(level) { + const lats = []; + for (const s of (level.results || [])) for (const l of (s.latencies || [])) lats.push(l.latency); + return lats.length ? Math.round(lats.reduce((a, b) => a + b, 0) / lats.length) : 0; +} + +module.exports = { runRamp }; \ No newline at end of file diff --git a/backend/scripts/perf/regression.js b/backend/scripts/perf/regression.js new file mode 100644 index 000000000..82bf947c7 --- /dev/null +++ b/backend/scripts/perf/regression.js @@ -0,0 +1,186 @@ +'use strict'; + +const { resolvePayload } = require('./utils/recordings'); +const { printTraceStats } = require('./utils/trace-stats'); +const { saveResults, makeOutputCapture, saveReadableReport } = require('./utils/report'); + +/** + * Regression mode: replay the given recordings once at concurrency 1 and + * require that EVERY trace passes. Any failure or ack timeout = regression fail. + * Returns a process exit code (0 = pass, 1 = fail) so it works as a CI gate. + * @param {Object} cfg - Run configuration; reads ackTimeout and the recordings/files that resolvePayload consumes + * @param {Object} ctx - Run context: { socket, emitWithAck, userId } from the CLI's connected session + * @returns {Promise} + */ +async function runRegression(cfg, ctx) { + const capture = makeOutputCapture(); + capture.start(); + const { recordingIds, sessions } = await resolvePayload(cfg, ctx); + console.log(' regression input: ' + (sessions.length ? `${sessions.length} file session(s)` : recordingIds.join(', '))); + + console.log('Running regression (replay once, all traces must pass) ...'); + let ack; + const onProgress = ({ id, current, total }) => { + if (id !== 'regression' || !total) { + return; + } + const pct = Math.floor((current / total) * 100); + process.stdout.write(`\r replaying ${current}/${total} traces (${pct}%) `); + }; + ctx.socket.on('progressUpdate', onProgress); + + const clearProgress = () => { + ctx.socket.off('progressUpdate', onProgress); + process.stdout.write('\r' + ' '.repeat(50) + '\r'); + }; + + try { + ack = await ctx.emitWithAck('replayRun', { + recordingIds, + sessions, + timingMode: 'fast', + continueOnFailure: true, // run all stories so we report every failure, not just the first + maxIterations: 1, // once — no scaling + progressId: 'regression', + sequential: true, // one story at a time so created rows get predictable ids + ackTimeout: cfg.ackTimeout, + }, 0); + } catch (err) { + capture.stop(); + console.error('REGRESSION ERROR — replayRun threw: ' + err.message); + clearProgress(); + return 1; + } + + if (!ack || !ack.success) { + capture.stop(); + console.error('REGRESSION ERROR — replayRun failed: ' + (ack && ack.message)); + clearProgress(); + return 1; + } + + clearProgress(); + + // ack.data is the iteration results array. maxIterations=1 => one iteration. + const iterations = ack.data || []; + + // Group results per recording (per user story) so we can report which + // stories pass and which fail — the "is this version stable?" verdict. + // Group by a stable identity, not the display name: recordingName can repeat + // across recordings (and file replay defaults it to 'file'), which would merge + // distinct recordings. recordingId groups a recording's sessions together for + // DB replay; file replay has no id (null), so fall back to the unique + // sessionKey there. recordingName is kept only for display. + const stories = new Map(); // key: recordingId ?? sessionKey -> { name, total, failed, noAck, errors[], noAckActions[] } + for (const iter of iterations) { + for (const session of (iter.results || [])) { + const key = session.recordingId != null ? `id:${session.recordingId}` : `key:${session.sessionKey}`; + if (!stories.has(key)) { + stories.set(key, { + name: session.recordingName || ('recording ' + (session.recordingId ?? session.sessionKey)), + total: 0, + failed: 0, + noAck: 0, + errors: [], + noAckActions: [], + }); + } + const s = stories.get(key); + s.total += session.total || 0; + s.failed += session.failed || 0; + s.noAck += session.noAck || 0; + for (const err of (session.errors || [])) { + s.errors.push({ action: err.action, message: err.message }); + } + for (const t of (session.noAckTraces || [])) { + s.noAckActions.push(t.action); + } + } + } + + // A session whose recorded user doesn't exist on this database is dropped + // server-side rather than failed. For a load test that's right; for a + // regression gate it isn't — a story that never ran hasn't passed. Compare + // what we sent against what came back so a silent skip fails the suite. + const skippedSessions = sessions + .map(s => s.sessionKey) + .filter(k => !stories.has(`key:${k}`)); + + console.log(''); + let passedStories = 0, failedStories = 0; + const noAckActions = new Map(); + for (const [, s] of stories) { + for (const action of s.noAckActions) { + noAckActions.set(action, (noAckActions.get(action) || 0) + 1); + } + const noAckNote = s.noAck > 0 ? `, ${s.noAck} no-ack` : ''; + if (s.failed === 0) { + console.log(` [PASS] ${s.name} (${s.total} traces${noAckNote})`); + passedStories++; + } else { + console.log(` [FAIL] ${s.name} (${s.failed} of ${s.total} traces failed${noAckNote})`); + failedStories++; + } + } + + // Events the server never acked. Fire-and-forget handlers land here + // legitimately, but so does one that has stopped responding — worth + // reading rather than ignoring. + if (noAckActions.size > 0) { + console.log(''); + console.log(' no-ack events (no server response within the timeout):'); + for (const [action, count] of [...noAckActions].sort((a, b) => b[1] - a[1])) { + console.log(` ${action}: ${count}x`); + } + } + + for (const key of skippedSessions) { + console.log(` [SKIP] ${key} (recorded user not found on this database)`); + } + + // Skipped sessions never reach `stories`, so add them back — otherwise the + // denominator silently excludes the stories we're reporting as missing. + const totalStories = stories.size + skippedSessions.length; + console.log(''); + if (failedStories === 0 && skippedSessions.length === 0) { + console.log(`REGRESSION RESULT — ${totalStories} of ${totalStories} story recording(s) replayed without failures.`); + const saved = saveResults('regression', cfg, { + results: iterations.flatMap(i => i.results || []), + verdict: 'no-failures', + }); + const text = capture.stop(); + if (saved) { + const txt = saveReadableReport(saved, text); + console.log(`\n results saved: ${saved}`); + if (txt) console.log(` readable report: ${txt}`); + } + return 0; + } + const skippedNote = skippedSessions.length ? `, ${skippedSessions.length} skipped` : ''; + console.log(`REGRESSION RESULT — ${passedStories} of ${totalStories} story recording(s) replayed without failures, ${failedStories} with failures${skippedNote}.`); + for (const key of skippedSessions) { + console.log(` Skipped: ${key} — recorded user not found on this database`); + } + for (const [, s] of stories) { + if (s.failed > 0) { + console.log(` Failed: ${s.name}`); + for (const e of s.errors.slice(0, 3)) console.log(` - ${e.action}: ${e.message}`); + if (s.errors.length > 3) console.log(` ... and ${s.errors.length - 3} more`); + } + } + printTraceStats(iterations.flatMap(i => i.results || []), { title: 'Trace breakdown (all stories):' }); + const saved = saveResults('regression', cfg, { + results: iterations.flatMap(i => i.results || []), + skipped: skippedSessions, + verdict: 'failures', + }); + const text = capture.stop(); + if (saved) { + const txt = saveReadableReport(saved, text); + console.log(`\n results saved: ${saved}`); + if (txt) console.log(` readable report: ${txt}`); + } + return 1; +} + +module.exports = { runRegression }; \ No newline at end of file diff --git a/backend/scripts/perf/soak.js b/backend/scripts/perf/soak.js new file mode 100644 index 000000000..0362972e4 --- /dev/null +++ b/backend/scripts/perf/soak.js @@ -0,0 +1,222 @@ +'use strict'; + +const { randomUUID } = require('crypto'); +const { resolvePayload } = require('./utils/recordings'); +const { MetricSampler } = require('./utils/metrics'); +const { printTraceStats, printMemoryCorrelation } = require('./utils/trace-stats'); +const { saveResults, makeOutputCapture, saveReadableReport } = require('./utils/report'); + +/** + * Soak mode: hold a FIXED concurrency continuously for a duration, sampling + * each batch, and report whether the platform drifts over time (latency creep + * or failure accumulation at constant load). Reuses replayRun's singleLevel + * mode to run one fixed-concurrency batch per sample. + * @param {Object} cfg - Run configuration; reads concurrency (sessions held constant), duration (total soak time in ms), sampleInterval (pause between batches, 0 for back-to-back), ackTimeout, and the recordings/files that resolvePayload consumes + * @param {Object} ctx - Run context: { socket, emitWithAck, userId } from the CLI's connected session + * @returns {Promise} exit code (0 = stable, 1 = drift detected) + */ +async function runSoak(cfg, ctx) { + const capture = makeOutputCapture(); + capture.start(); + const { recordingIds, sessions } = await resolvePayload(cfg, ctx); + const durationMs = cfg.duration; + const concurrency = cfg.concurrency; + + console.log(' soak input: ' + (sessions.length ? `${sessions.length} file session(s)` : recordingIds.join(', '))); + console.log(`Holding ${concurrency} concurrent sessions for ${Math.round(durationMs / 1000)}s, sampling continuously ...`); + console.log(' sample elapsed passed failed avgMs p95Ms thru/s'); + + const start = Date.now(); + const allResults = []; + const samples = []; + let sampleNum = 0; + // Sample server vitals (memory + DB pool) once per second during the soak. + const sampler = new MetricSampler(ctx.emitWithAck, 1000); + await sampler.start(); + + try { + while (Date.now() - start < durationMs) { + sampleNum++; + const progressId = randomUUID(); + const onProgress = (data) => { + if (data.id !== progressId) return; + const pct = data.total ? Math.floor((data.current / data.total) * 100) : 0; + process.stdout.write(`\r sample ${sampleNum}: ${pct}% `); + }; + ctx.socket.on('progressUpdate', onProgress); + + let ack; + try { + ack = await ctx.emitWithAck('replayRun', { + recordingIds, + sessions, + timingMode: 'fast', + ackTimeout: cfg.ackTimeout, + singleLevel: concurrency, + progressId, + }, 0); + } finally { + ctx.socket.off('progressUpdate', onProgress); + } + + process.stdout.write('\r' + ' '.repeat(40) + '\r'); + + if (!ack || !ack.success) { + console.error('SOAK ERROR — replayRun failed: ' + (ack && ack.message)); + capture.stop(); + return 1; + } + + const m = metrics(ack.data); + const elapsedSec = Math.round((Date.now() - start) / 1000); + samples.push({ ...m, elapsedSec }); + console.log(` ${pad(sampleNum, 6)} ${pad(elapsedSec + 's', 7)} ${pad(m.passed, 6)} ${pad(m.failed, 6)} ${pad(m.avg, 5)} ${pad(m.p95, 5)} ${pad(m.thru, 6)}`); + if (ack.data && ack.data.results) allResults.push(...ack.data.results); + + if (cfg.sampleInterval > 0) { + const remaining = durationMs - (Date.now() - start); + if (remaining > 0) await sleep(Math.min(cfg.sampleInterval, remaining)); + } + } + } finally { + await sampler.stop(); + } + + const code = reportSoak(samples, concurrency, durationMs, sampler, allResults); + const saved = saveResults('soak', cfg, { + results: allResults, + metrics: samples, + sampler, + verdict: code === 0 ? 'stable' : 'drift', + }); + const text = capture.stop(); + if (saved) { + const txt = saveReadableReport(saved, text); + console.log(`\n results saved: ${saved}`); + if (txt) console.log(` readable report: ${txt}`); + } + return code; +} + +/** + * Compare early vs late samples to detect drift over time, and print the soak + * summary: latency and failure trends, memory and Postgres vitals, per-action + * trace stats, and the stability verdict. + * @param {Array} samples - Per-batch metrics in run order, each {passed, failed, avg, p95, thru, elapsedSec} + * @param {number} concurrency - Sessions held constant for the whole soak + * @param {number} durationMs - Total soak duration in ms + * @param {Object} sampler - Stopped MetricSampler; read for rss/heap trends, pool waiting, and Postgres stat deltas + * @param {Array} allResults - Every trace result across all batches, used for the action breakdown and memory correlation + * @returns {number} Exit code: 0 when stable, 1 when drift is detected + */ +function reportSoak(samples, concurrency, durationMs, sampler, allResults) { + console.log(''); + if (samples.length < 2) { + console.log(`SOAK: only ${samples.length} sample(s) — run longer for a trend.`); + return 0; + } + + const third = Math.max(1, Math.floor(samples.length / 3)); + const early = samples.slice(0, third); + const late = samples.slice(-third); + const avgP95 = (arr) => Math.round(arr.reduce((s, x) => s + x.p95, 0) / arr.length); + const totalFailed = (arr) => arr.reduce((s, x) => s + x.failed, 0); + + const earlyP95 = avgP95(early), lateP95 = avgP95(late); + const earlyFail = totalFailed(early), lateFail = totalFailed(late); + const p95Drift = earlyP95 > 0 ? Math.round(((lateP95 - earlyP95) / earlyP95) * 100) : 0; + + console.log(`SOAK complete: ${samples.length} samples over ${Math.round(durationMs / 1000)}s at ${concurrency} concurrency.`); + console.log(` p95 latency: ${earlyP95}ms (early) -> ${lateP95}ms (late) [${p95Drift >= 0 ? '+' : ''}${p95Drift}%]`); + console.log(` failures: ${earlyFail} (early) -> ${lateFail} (late)`); + + // Server-side vitals from the metric sampler. + let memDrift = false; + let poolBackedUp = false; + if (sampler) { + const rssMb = (b) => Math.round(b / 1024 / 1024); + const samplesM = sampler.getSamples().filter(s => s.health); + const first = samplesM.length ? samplesM[0].health.rss : 0; + const last = samplesM.length ? samplesM[samplesM.length - 1].health.rss : 0; + + // Warm-up-aware leak check: compare the MIDPOINT to the END, skipping the + // startup ramp (idle->serving) that inflates early memory. Sustained + // growth in the back half is the real leak signal; warm-up plateaus. + const mid = samplesM.length ? samplesM[Math.floor(samplesM.length / 2)].health.rss : 0; + const backHalfGrowth = mid > 0 ? Math.round(((last - mid) / mid) * 100) : 0; + // Only judge memory drift on runs long enough for warm-up to finish + // (short runs are dominated by V8/GC warm-up and would false-positive). + const MEM_VERDICT_MIN_MS = 120000; // 2 minutes + memDrift = durationMs >= MEM_VERDICT_MIN_MS && backHalfGrowth > 15; + + const firstGrowth = first > 0 ? Math.round(((last - first) / first) * 100) : 0; + const heap = sampler.heapTrend(); + console.log(` memory (RSS): ${rssMb(first)}MB -> ${rssMb(last)}MB [${firstGrowth >= 0 ? '+' : ''}${firstGrowth}% total, ${backHalfGrowth >= 0 ? '+' : ''}${backHalfGrowth}% post-warmup], peak ${rssMb(sampler.peakRss())}MB`); + console.log(` memory (heap): ${rssMb(heap.first)}MB -> ${rssMb(heap.last)}MB, peak ${rssMb(sampler.peakHeap())}MB`); + + const peakWaiting = sampler.peakPoolWaiting(); + poolBackedUp = peakWaiting > 0; + console.log(` DB pool waiting: peak ${peakWaiting}`); + + const pg = sampler.pgStatsSummary(); + if (pg) { + console.log(` Postgres: deadlocks +${pg.deadlocksDelta}, rollbacks +${pg.rollbacksDelta}, peak lock-waits ${pg.peakLockWaits}` + + (pg.minCacheHit != null ? `, min cache-hit ${pg.minCacheHit.toFixed(1)}%` : '')); + } + } + + // Trace breakdown across the whole soak (prints regardless of verdict). + if (allResults && allResults.length) { + printTraceStats(allResults, { title: 'Trace breakdown (whole soak):' }); + } + + if (sampler) printMemoryCorrelation(allResults, sampler.getSamples()); + + // Drift verdict: rising latency (>25%), growing failures, sustained memory + // growth after warm-up, or DB pool backing up = drift. + const drift = p95Drift > 25 || lateFail > earlyFail || memDrift || poolBackedUp; + if (drift) { + console.log(' VERDICT: [!] drift detected — latency and/or failures worsened over time.'); + return 1; + } + console.log(' VERDICT: [ok] stable — no significant drift at constant load.'); + return 0; +} + +/** + * Aggregate one replay level's session results into summary metrics. + * @param {Object} lvl - One level's replay result ({results: Array, duration: number}) + * @returns {{passed: number, failed: number, avg: number, p95: number, thru: number}} Trace pass/fail counts, average and 95th-percentile latency in ms, and throughput in traces per second + */ +function metrics(lvl) { + let passed = 0, failed = 0; + const lats = []; + for (const s of (lvl.results || [])) { + passed += s.passed || 0; + failed += s.failed || 0; + for (const l of (s.latencies || [])) lats.push(l.latency); + } + lats.sort((a, b) => a - b); + const avg = lats.length ? Math.round(lats.reduce((a, b) => a + b, 0) / lats.length) : 0; + const p95 = lats.length ? Math.round(lats[Math.min(lats.length - 1, Math.floor(0.95 * lats.length))]) : 0; + const durSec = (lvl.duration || 0) / 1000; + const thru = durSec > 0 ? Math.round((passed + failed) / durSec) : 0; + return { passed, failed, avg, p95, thru }; +} + +/** + * Pause execution for a fixed duration. + * @param {number} ms - Milliseconds to wait + * @returns {Promise} Resolves once the delay has elapsed + */ +function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } + +/** + * Right-pad a value to a fixed width for aligned table output. + * @param {*} v - Value to pad (coerced to string) + * @param {number} w - Target column width + * @returns {string} The padded string + */ +function pad(v, w) { return String(v).padEnd(w); } + +module.exports = { runSoak }; \ No newline at end of file diff --git a/backend/scripts/perf/utils/auth.js b/backend/scripts/perf/utils/auth.js new file mode 100644 index 000000000..73cbeeb4d --- /dev/null +++ b/backend/scripts/perf/utils/auth.js @@ -0,0 +1,63 @@ +'use strict'; + +/** + * Authenticate as a configured admin via the real /auth/login route and + * return the session cookie for socket connections. No session forging — this + * is a normal login, so it doesn't depend on the session secret. + * + * @param {string} serverUrl - e.g. http://localhost:3001 + * @param {string} userName - admin username (default seeded admin is "admin") + * @param {string} password - admin password (from config/env, never hardcoded) + * @returns {Promise} The "connect.sid=..." cookie string + */ +async function login(serverUrl, userName, password) { + let res; + try { + res = await fetch(serverUrl + '/auth/login', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username: userName, password }), + redirect: 'manual', + }); + } catch (err) { + throw new Error('Could not reach ' + serverUrl + '/auth/login — is the server running? (' + err.message + ')'); + } + + if (res.status === 401) { + const body = await res.text().catch(() => ''); + throw new Error('Login rejected (401). Check perf admin credentials. If the account has 2FA or an unverified email, use a plain admin account. Server said: ' + body); + } + if (!res.ok) { + throw new Error('Login failed: HTTP ' + res.status); + } + + const setCookie = res.headers.get('set-cookie'); + const match = setCookie && setCookie.match(/connect\.sid=[^;]+/); + if (!match) { + throw new Error('Login succeeded but no connect.sid cookie was returned.'); + } + return match[0]; +} + +/** + * Verify a session cookie is a log* Verify a session cookie belongs to an authenticated session via /auth/check. + * Does not check admin rights — admin is enforced at the socket in verifyAdminAccess().ged-in admin via /auth/check. + * @param {string} serverUrl + * @param {string} cookie - the "connect.sid=..." cookie + * @returns {Promise} the user object + */ +async function verifyAuthenticatedSession(serverUrl, cookie) { + const res = await fetch(serverUrl + '/auth/check', { + headers: { cookie }, + }); + if (res.status !== 200) { + throw new Error('Session check failed — cookie not accepted as logged in.'); + } + const data = await res.json(); + if (!data.user) { + throw new Error('Session check failed — cookie not accepted as logged in.'); + } + return data.user; +} + +module.exports = { login, verifyAuthenticatedSession }; \ No newline at end of file diff --git a/backend/scripts/perf/utils/metrics.js b/backend/scripts/perf/utils/metrics.js new file mode 100644 index 000000000..3ea290761 --- /dev/null +++ b/backend/scripts/perf/utils/metrics.js @@ -0,0 +1,147 @@ +'use strict'; + +/** + * Metric sampler: polls the backend's Node-vitals and Postgres-stats endpoints + * on an interval during a run, collecting timestamped samples. Any mode wraps + * its run in start()/stop() and reads getSamples() for the trend. + */ +class MetricSampler { + /** + * @param {Function} emitWithAck - bound (event, payload, timeoutMs) => Promise + * @param {number} intervalMs - poll interval (default 1000) + */ + constructor(emitWithAck, intervalMs = 1000) { + this.emit = emitWithAck; + this.intervalMs = intervalMs; + this.samples = []; + this._timer = null; + this._polling = false; + } + + async _poll() { + // Avoid overlapping polls if a sample is slow. + if (this._polling) return; + this._polling = true; + try { + const [health, stats] = await Promise.all([ + this.emit('recordingGetPerfHealth', {}).catch(() => null), + this.emit('recordingGetPerfStats', {}).catch(() => null), + ]); + this.samples.push({ + t: Date.now(), + health: health && health.success ? health.data : null, + stats: stats && stats.success ? stats.data : null, + }); + } finally { + this._polling = false; + } + } + + /** + * Start sampling. Takes one immediate sample, then polls on the interval. + * @returns {Promise} Resolves once the first sample has been taken + */ + async start() { + this.samples = []; + await this._poll(); + this._timer = setInterval(() => this._poll(), this.intervalMs); + } + + /** Stop sampling and take one final sample. */ + async stop() { + if (this._timer) { clearInterval(this._timer); this._timer = null; } + await this._poll(); + } + + getSamples() { + return this.samples; + } + + /** Latest Sequelize pool waiting count (0 if unavailable). The pool-exhaustion signal. */ + latestPoolWaiting() { + for (let i = this.samples.length - 1; i >= 0; i--) { + const pool = this.samples[i].stats && this.samples[i].stats.sequelizePool; + if (pool && typeof pool.waiting === 'number') return pool.waiting; + } + return 0; + } + + /** Peak pool waiting across all samples. */ + peakPoolWaiting() { + let peak = 0; + for (const s of this.samples) { + const pool = s.stats && s.stats.sequelizePool; + if (pool && typeof pool.waiting === 'number' && pool.waiting > peak) peak = pool.waiting; + } + return peak; + } + + /** Peak RSS (bytes) across all samples — for leak detection. */ + peakRss() { + let peak = 0; + for (const s of this.samples) { + if (s.health && s.health.rss > peak) peak = s.health.rss; + } + return peak; + } + + /** Peak heapUsed (bytes) across all samples — often a truer leak signal + * than RSS, which can inflate from buffers/warmup and then plateau. */ + peakHeap() { + let peak = 0; + for (const s of this.samples) { + if (s.health && typeof s.health.heapUsed === 'number' && s.health.heapUsed > peak) { + peak = s.health.heapUsed; + } + } + return peak; + } + + /** + * Summarize Postgres-side stats across the run: deadlock/rollback growth + * (delta of cumulative counters between first and last sample), peak + * waiting locks, and worst cache-hit % seen. Returns null if no samples. + * @returns {Object|null} + */ + pgStatsSummary() { + const withStats = this.samples.filter(s => s.stats && s.stats.dbStats); + if (withStats.length < 2) return null; + const first = withStats[0].stats.dbStats; + const last = withStats[withStats.length - 1].stats.dbStats; + const num = (v) => (typeof v === 'number' ? v : parseInt(v, 10) || 0); + + let peakLockWaits = 0; + let minCacheHit = null; + for (const s of withStats) { + const lw = s.stats.locks ? num(s.stats.locks.waiting) : 0; + if (lw > peakLockWaits) peakLockWaits = lw; + const ch = s.stats.dbStats.cache_hit_pct; + if (ch != null && (minCacheHit === null || ch < minCacheHit)) minCacheHit = ch; + } + + return { + deadlocksDelta: Math.max(0, num(last.deadlocks) - num(first.deadlocks)), + rollbacksDelta: Math.max(0, num(last.rollbacks) - num(first.rollbacks)), + peakLockWaits, + minCacheHit, + }; + } + + /** RSS trend: {first, last} in bytes, for memory-growth detection. */ + rssTrend() { + const withHealth = this.samples.filter(s => s.health); + if (withHealth.length === 0) return { first: 0, last: 0 }; + return { first: withHealth[0].health.rss, last: withHealth[withHealth.length - 1].health.rss }; + + } + + /** heapUsed trend: {first, last} in bytes, for memory-growth detection. */ + heapTrend() { + const withHeap = this.samples.filter(s => s.health && typeof s.health.heapUsed === 'number'); + if (withHeap.length === 0) return { first: 0, last: 0 }; + return { first: withHeap[0].health.heapUsed, last: withHeap[withHeap.length - 1].health.heapUsed }; + } + +} + +module.exports = { MetricSampler }; \ No newline at end of file diff --git a/backend/scripts/perf/utils/recordings.js b/backend/scripts/perf/utils/recordings.js new file mode 100644 index 000000000..dc5cd353b --- /dev/null +++ b/backend/scripts/perf/utils/recordings.js @@ -0,0 +1,86 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const { reviveBuffers } = require('../../../utils/replay-sessions'); + +/** + * Validate an exported recording payload (schemaVersion 1). Throws on any issue. + * @param {Object} p - Parsed recording export; expects schemaVersion 1 and { traces: Array }, with optional sessionKey and recordingName + * @returns {number|null} Duration in milliseconds, or null when the value is absent or unparseable + */ +function validatePayload(p) { + if (!p || typeof p !== 'object') throw new Error('Not a valid JSON object'); + if (p.schemaVersion !== 1) throw new Error(`Unsupported schemaVersion: ${p.schemaVersion}. Expected 1.`); + if (!p.recording || typeof p.recording !== 'object') throw new Error("Missing 'recording' object"); + if (!Array.isArray(p.traces)) throw new Error("Missing 'traces' array"); +} + +/** + * Read exported recording files (and --dir) into replay-ready session payloads, + * WITHOUT importing to the DB. Each file is one recording; its direction:true + * traces become one session. Returns [] if no files/dir were given. + * @param {Object} cfg - { files: string[], dir: string|null } + * @returns {Array} sessions: [{ sessionKey, recordingName, traces }] + */ +function loadSessionsFromFiles(cfg) { + let files = cfg.files ? [...cfg.files] : []; + if (cfg.dir) { + const entries = fs.readdirSync(cfg.dir) + .filter(f => f.toLowerCase().endsWith('.json')) + .sort() + .map(f => path.join(cfg.dir, f)); + if (entries.length === 0) { + throw new Error(`No .json recordings found in folder: ${cfg.dir}`); + } + files = files.concat(entries); + } + if (files.length === 0) return []; + + const sessions = []; + for (const f of files) { + let json; + try { + json = JSON.parse(fs.readFileSync(f, 'utf8')); + validatePayload(json); + } catch (err) { + console.warn(` skipping ${path.basename(f)}: ${err.message}`); + continue; + } + const name = (json.recording && json.recording.name) || path.basename(f); + sessions.push({ + sessionKey: path.basename(f), + recordingName: name, + traces: json.traces.map(t => ({ ...t, payload: reviveBuffers(t.payload) })), + }); + // Report which user(s) the traces were recorded under: replay resolves + // each session to its own recorded user, not the caller running the CLI. + const userIds = [...new Set(json.traces.map(t => t && t.userId).filter(Boolean))]; + const userLabel = userIds.length ? `user id: ${userIds.join(', ')}` : 'no user'; + console.log(` loaded ${path.basename(f)} (${json.traces.length} traces) — ${userLabel}`); + } + return sessions; +} + +/** + * Resolve a run's input into exactly one of { recordingIds } (DB path) or + * { sessions } (file path). --recordings are DB IDs; --files/--dir are replayed + * straight from disk with no import. A run is one or the other, not both. + * @param {Object} cfg - { recordings: number[], files: string[], dir: string|null } + * @param {Object} ctx - unused; kept so all resolve helpers share one signature + * @returns {Promise<{recordingIds: number[], sessions: Array}>} + */ +async function resolvePayload(cfg, ctx) { + const sessions = loadSessionsFromFiles(cfg); + const recordingIds = (cfg.recordings && cfg.recordings.length) ? [...cfg.recordings] : []; + + if (sessions.length && recordingIds.length) { + throw new Error('Use --recordings (DB) or --files/--dir (files), not both'); + } + if (!sessions.length && !recordingIds.length) { + throw new Error('No recordings given. Pass --recordings or --files / --dir '); + } + return { recordingIds, sessions }; +} + +module.exports = { validatePayload, loadSessionsFromFiles, resolvePayload }; \ No newline at end of file diff --git a/backend/scripts/perf/utils/report.js b/backend/scripts/perf/utils/report.js new file mode 100644 index 000000000..bb10a9809 --- /dev/null +++ b/backend/scripts/perf/utils/report.js @@ -0,0 +1,98 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const { traceStats } = require('./trace-stats'); + +/** + * Persist a perf run's complete results to a local JSON file, so results + * survive backend crashes and long runs don't need re-running to re-inspect. + * Captures MORE than the terminal shows: full raw sampler data (every memory/ + * pg reading), complete per-trace stats, config, and verdict. + * + * @param {string} mode - which mode ran (soak, ceiling, ramp, regression) + * @param {Object} cfg - The run's config; recorded in the saved JSON so a result file is self-describing + * @param {Object} payload - mode-specific data: { results, samples, sampler, verdict, extra } + * @returns {string|null} the file path written, or null on failure + */ +function saveResults(mode, cfg, payload = {}) { + try { + // Save alongside the backend's logs (LOGGING_PATH) so results land in the + // directory docker-compose already mounts, rather than an unmounted path. + const dir = path.join(process.env.LOGGING_PATH || './logs', 'perf'); + fs.mkdirSync(dir, { recursive: true }); + + const ts = new Date().toISOString().replace(/[:T]/g, '-').slice(0, 19); + const file = path.join(dir, `${ts}-${mode}.json`); + + const doc = { + mode, + when: new Date().toISOString(), + config: { + recordings: cfg.recordings, dir: cfg.dir, files: cfg.files, + concurrency: cfg.concurrency, duration: cfg.duration, + step: cfg.step, maxIterations: cfg.maxIterations, + latencyThreshold: cfg.latencyThreshold, maxFailures: cfg.maxFailures, + }, + verdict: payload.verdict || null, + // Per-trace-type stats (errorMsgs Map converted to plain object). + traceStats: payload.results ? traceStats(payload.results).map(s => ({ + ...s, errorMsgs: Object.fromEntries(s.errorMsgs || []), + })) : null, + // Mode-specific per-level/per-sample metrics (the table rows). + metrics: payload.metrics || null, + // Full raw server vitals — every 1s reading (memory + complete pg data). + vitals: payload.sampler ? payload.sampler.getSamples() : null, + // Raw session results (per-trace latencies, errors, dbChanges, ts). + rawResults: payload.results || null, + }; + + fs.writeFileSync(file, JSON.stringify(doc, null, 2), 'utf8'); + return file; + } catch (err) { + console.error(' (could not save results file: ' + err.message + ')'); + return null; + } +} + +/** + * Tee console.log to an in-memory buffer while still printing to the terminal, + * so the run's output can be saved as a readable report. + * @returns {{start: Function, stop: Function}} start() begins capturing; stop() restores console.log and returns the captured text + */ +function makeOutputCapture() { + const buffer = []; + const original = console.log; + return { + start() { + console.log = (...args) => { + buffer.push(args.join(' ')); + original(...args); + }; + }, + stop() { + console.log = original; + return buffer.join('\n'); + }, + }; +} + +/** + * Save a readable text report next to the JSON (same base name, .txt). + * @param {string} jsonPath - the JSON file path returned by saveResults + * @param {string} text - the captured terminal output + * @returns {string|null} the .txt path, or null + */ +function saveReadableReport(jsonPath, text) { + try { + if (!jsonPath) return null; + const txtPath = jsonPath.replace(/\.json$/, '.txt'); + fs.writeFileSync(txtPath, text, 'utf8'); + return txtPath; + } catch (err) { + console.error(' (could not save readable report: ' + err.message + ')'); + return null; + } +} + +module.exports = { saveResults, makeOutputCapture, saveReadableReport }; \ No newline at end of file diff --git a/backend/scripts/perf/utils/trace-stats.js b/backend/scripts/perf/utils/trace-stats.js new file mode 100644 index 000000000..f4b0b3118 --- /dev/null +++ b/backend/scripts/perf/utils/trace-stats.js @@ -0,0 +1,192 @@ +'use strict'; + +/** + * Aggregate replay results by trace action into per-type statistics. + * Turns "something failed / was slow" into "THIS action failed / was slow / + * hit the DB hardest", giving a concrete lead for diagnosis. Every field is + * derived from data replayUserTraces already returns (latencies[] and errors[], + * each carrying action + dbChanges). + * + * @param {Array} results - session result objects ({ latencies, errors }) + * @returns {Array} per-action stats, sorted slowest-p95 first + */ +function traceStats(results) { + const byAction = new Map(); + + const ensure = (action) => { + if (!byAction.has(action)) { + byAction.set(action, { + action, count: 0, passed: 0, failed: 0, + lats: [], dbWrites: 0, errorMsgs: new Map(), + }); + } + return byAction.get(action); + }; + + for (const s of (results || [])) { + for (const l of (s.latencies || [])) { + const a = ensure(l.action || 'unknown'); + a.count++; a.passed++; + if (typeof l.latency === 'number') a.lats.push(l.latency); + a.dbWrites += (l.dbChanges ? l.dbChanges.length : 0); + } + for (const e of (s.errors || [])) { + const a = ensure(e.action || 'unknown'); + a.count++; a.failed++; + a.dbWrites += (e.dbChanges ? e.dbChanges.length : 0); + const msg = e.message || 'unknown error'; + a.errorMsgs.set(msg, (a.errorMsgs.get(msg) || 0) + 1); + } + } + + const pct = (n, arr) => arr.length ? arr[Math.min(arr.length - 1, Math.floor(n * arr.length))] : 0; + + const out = []; + for (const a of byAction.values()) { + a.lats.sort((x, y) => x - y); + const n = a.lats.length; + const sum = a.lats.reduce((x, y) => x + y, 0); + out.push({ + action: a.action, + count: a.count, + passed: a.passed, + failed: a.failed, + successRate: a.count ? Math.round((a.passed / a.count) * 100) : 0, + min: n ? a.lats[0] : 0, + p50: n ? pct(0.50, a.lats) : 0, + avg: n ? Math.round(sum / n) : 0, + p95: n ? pct(0.95, a.lats) : 0, + max: n ? a.lats[n - 1] : 0, + totalMs: sum, + dbWrites: a.dbWrites, + errorMsgs: a.errorMsgs, + }); + } + out.sort((x, y) => y.p95 - x.p95); // slowest first = lead at the top + return out; +} + +/** + * Print a per-trace-type stats table. Shared across all modes. + * @param {Array} results - session results + * @param {Object} [opts] - { title, showErrors=true, topN } + */ +function printTraceStats(results, opts = {}) { + const stats = traceStats(results); + if (stats.length === 0) { console.log(' (no trace data)'); return; } + const rows = opts.topN ? stats.slice(0, opts.topN) : stats; + + console.log(''); + console.log(' ' + (opts.title || 'Per-trace-type stats (slowest first):')); + console.log(' action count fail ok% minMs p50 avgMs p95Ms maxMs totalMs dbW'); + for (const s of rows) { + console.log( + ' ' + pad(s.action, 27) + ' ' + + pad(s.count, 5) + ' ' + pad(s.failed, 4) + ' ' + pad(s.successRate, 4) + ' ' + + pad(s.min, 5) + ' ' + pad(s.p50, 3) + ' ' + pad(s.avg, 5) + ' ' + + pad(s.p95, 5) + ' ' + pad(s.max, 5) + ' ' + pad(s.totalMs, 7) + ' ' + pad(s.dbWrites, 3) + ); + } + + if (opts.showErrors !== false) { + const withErrors = stats.filter(s => s.failed > 0); + if (withErrors.length > 0) { + console.log(''); + console.log(' failures by action:'); + for (const s of withErrors) { + for (const [msg, cnt] of s.errorMsgs) { + console.log(` ${s.action}: ${cnt}x — ${msg}`); + } + } + } + } +} + +/** + * Right-pad a value to a fixed width for aligned table output. + * @param {*} v - Value to pad (coerced to string) + * @param {number} w - Target column width + * @returns {string} The padded string + */ +function pad(v, w) { return String(v).padEnd(w); } + +/** + * Print a one-line "likely culprit" callout based on why a run stopped/failed. + * @param {Array} results - session results + * @param {Object} why - { failed, poolSaturated, overallP95 } describing the stop + */ +function printCulprit(results, why = {}) { + const stats = traceStats(results); + if (!stats.length) return; + if (why.failed) { + const worst = stats.filter(s => s.failed > 0).sort((a, b) => b.failed - a.failed)[0]; + if (worst) console.log(`\n >> Likely culprit: ${worst.action} — ${worst.failed} failure(s). Start here.`); + } else if (why.poolSaturated) { + const worst = [...stats].sort((a, b) => b.dbWrites - a.dbWrites)[0]; + if (worst) console.log(`\n >> Likely culprit: ${worst.action} — most DB writes (${worst.dbWrites}), likely saturating the pool. Start here.`); + } else { + const worst = [...stats].sort((a, b) => b.p95 - a.p95)[0]; + if (worst) { + const overall = why.overallP95 != null ? ` Overall p95 was ${why.overallP95}ms — this action is dragging it up.` : ''; + console.log(`\n >> Slowest action: ${worst.action} (its OWN p95: ${worst.p95}ms).${overall} Start here.`); + } + } +} + +/** + * Correlate memory growth with trace activity over time. Buckets traces into + * time windows aligned with the sampler's memory readings and reports which + * trace types dominated during the windows where RSS grew most. + * + * NOTE: this is CORRELATION, not attribution — RSS is process-wide and + * GC-scheduled, so per-trace memory cannot be measured directly without heap + * profiling that would distort the run. Windows where memory grew + which + * traces ran then = a diagnostic lead, not proof. + * + * @param {Array} results - session results (traces need ts fields) + * @param {Array} vitals - sampler.getSamples() ({t, health} entries) + * @param {number} [topWindows=3] - how many growth windows to report + */ +function printMemoryCorrelation(results, vitals, topWindows = 3) { + const mem = (vitals || []).filter(v => v.health && typeof v.health.rss === 'number'); + if (mem.length < 3) { return; } + + // Collect all traces with timestamps. + const traces = []; + for (const s of (results || [])) { + for (const l of (s.latencies || [])) if (l.ts) traces.push({ ts: l.ts, action: l.action }); + for (const e of (s.errors || [])) if (e.ts) traces.push({ ts: e.ts, action: e.action }); + } + if (traces.length === 0) { + console.log(' (memory correlation unavailable — traces have no timestamps; server needs restart with the ts field)'); + return; + } + + // Build windows between consecutive memory readings; record RSS delta per window. + const windows = []; + for (let i = 1; i < mem.length; i++) { + windows.push({ from: mem[i - 1].t, to: mem[i].t, delta: mem[i].health.rss - mem[i - 1].health.rss, actions: new Map() }); + } + // Assign traces to windows. + for (const tr of traces) { + const w = windows.find(w => tr.ts >= w.from && tr.ts < w.to); + if (w) w.actions.set(tr.action, (w.actions.get(tr.action) || 0) + 1); + } + + // Report the biggest-growth windows and what ran during them. + const growers = windows.filter(w => w.delta > 0).sort((a, b) => b.delta - a.delta).slice(0, topWindows); + if (growers.length === 0) { + console.log(' memory correlation: no growth windows — memory did not climb during the run.'); + return; + } + console.log(''); + console.log(' memory-growth correlation (lead, not proof — which traces ran while RSS grew):'); + const mb = (b) => (b / 1024 / 1024).toFixed(1); + for (const w of growers) { + const top = [...w.actions.entries()].sort((a, b) => b[1] - a[1]).slice(0, 3) + .map(([a, c]) => `${a} (${c}x)`).join(', '); + console.log(` +${mb(w.delta)}MB window: ${top || 'no traces recorded in window'}`); + } +} + +module.exports = { traceStats, printTraceStats, printCulprit, printMemoryCorrelation }; \ No newline at end of file diff --git a/backend/tests/regression_stories/.gitattributes b/backend/tests/regression_stories/.gitattributes new file mode 100644 index 000000000..f53fb93bf --- /dev/null +++ b/backend/tests/regression_stories/.gitattributes @@ -0,0 +1 @@ +*.json linguist-generated=true diff --git a/backend/tests/regression_stories/030-upload-document.json b/backend/tests/regression_stories/030-upload-document.json new file mode 100644 index 000000000..63ac7e01e --- /dev/null +++ b/backend/tests/regression_stories/030-upload-document.json @@ -0,0 +1,242418 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:05.985Z", + "traceCount": 13, + "recording": { + "name": "030-upload-document", + "status": "finished", + "startTime": "2026-08-10T23:10:11.390Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:10:28.794Z" + }, + "traces": [ + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 1, + "name": "Recording 8/11/2026, 1:10:11 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:10:11.391Z", + "startTime": "2026-08-10T23:10:11.390Z", + "updatedAt": "2026-08-10T23:10:11.391Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:10:11.412Z", + "endTime": "2026-08-10T23:10:11.412Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:10:12.462Z", + "endTime": "2026-08-10T23:10:12.462Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "upload", + "title": "Add document" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:10:13.534Z", + "endTime": "2026-08-10T23:10:13.534Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "documentUpload", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:10:13.988Z", + "endTime": "2026-08-10T23:10:13.988Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 595, + "clientY": 126, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:10:15.087Z", + "endTime": "2026-08-10T23:10:15.087Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:10:23.865Z", + "endTime": "2026-08-10T23:10:23.865Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 917, + "clientY": 266, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:10:24.054Z", + "endTime": "2026-08-10T23:10:24.054Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentAdd", + "payload": { + "file": { + "data": [ + 37, + 80, + 68, + 70, + 45, + 49, + 46, + 52, + 10, + 37, + 211, + 235, + 233, + 225, + 10, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 105, + 116, + 108, + 101, + 32, + 40, + 83, + 104, + 114, + 101, + 107, + 95, + 83, + 99, + 114, + 105, + 112, + 116, + 41, + 10, + 47, + 80, + 114, + 111, + 100, + 117, + 99, + 101, + 114, + 32, + 40, + 83, + 107, + 105, + 97, + 47, + 80, + 68, + 70, + 32, + 109, + 49, + 53, + 50, + 32, + 71, + 111, + 111, + 103, + 108, + 101, + 32, + 68, + 111, + 99, + 115, + 32, + 82, + 101, + 110, + 100, + 101, + 114, + 101, + 114, + 41, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 99, + 97, + 32, + 49, + 10, + 47, + 66, + 77, + 32, + 47, + 78, + 111, + 114, + 109, + 97, + 108, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 54, + 57, + 51, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 221, + 125, + 219, + 142, + 36, + 201, + 141, + 229, + 123, + 125, + 69, + 254, + 128, + 40, + 94, + 141, + 102, + 128, + 32, + 160, + 171, + 47, + 131, + 125, + 24, + 96, + 119, + 209, + 127, + 48, + 187, + 51, + 192, + 2, + 122, + 216, + 217, + 255, + 7, + 22, + 140, + 42, + 77, + 69, + 168, + 200, + 12, + 55, + 75, + 102, + 150, + 36, + 73, + 64, + 11, + 157, + 85, + 145, + 225, + 238, + 230, + 102, + 228, + 225, + 185, + 208, + 11, + 190, + 224, + 203, + 31, + 232, + 5, + 95, + 166, + 242, + 203, + 191, + 253, + 229, + 211, + 255, + 253, + 4, + 110, + 183, + 127, + 251, + 215, + 127, + 254, + 219, + 95, + 62, + 209, + 75, + 252, + 247, + 127, + 254, + 203, + 237, + 31, + 244, + 242, + 159, + 255, + 241, + 233, + 143, + 255, + 34, + 47, + 255, + 241, + 255, + 62, + 197, + 207, + 125, + 233, + 11, + 17, + 203, + 203, + 127, + 254, + 239, + 79, + 255, + 254, + 233, + 127, + 252, + 205, + 39, + 56, + 199, + 255, + 254, + 237, + 47, + 183, + 63, + 138, + 241, + 25, + 95, + 254, + 207, + 183, + 207, + 248, + 227, + 127, + 127, + 249, + 211, + 159, + 254, + 248, + 175, + 63, + 255, + 183, + 95, + 94, + 240, + 229, + 207, + 127, + 254, + 252, + 203, + 207, + 159, + 62, + 255, + 254, + 233, + 143, + 191, + 233, + 11, + 41, + 140, + 248, + 143, + 191, + 252, + 254, + 239, + 159, + 232, + 219, + 87, + 5, + 245, + 53, + 201, + 101, + 189, + 252, + 30, + 159, + 251, + 7, + 18, + 96, + 119, + 81, + 153, + 47, + 191, + 255, + 175, + 151, + 63, + 33, + 10, + 255, + 249, + 229, + 247, + 255, + 243, + 137, + 8, + 20, + 145, + 16, + 253, + 5, + 191, + 254, + 196, + 232, + 246, + 147, + 9, + 100, + 68, + 232, + 243, + 191, + 126, + 160, + 227, + 246, + 3, + 7, + 225, + 73, + 108, + 223, + 254, + 253, + 188, + 253, + 251, + 95, + 127, + 223, + 250, + 82, + 98, + 128, + 130, + 170, + 148, + 124, + 57, + 148, + 163, + 79, + 92, + 64, + 200, + 74, + 158, + 124, + 162, + 205, + 226, + 162, + 76, + 170, + 31, + 112, + 245, + 3, + 58, + 249, + 114, + 78, + 224, + 56, + 166, + 206, + 182, + 203, + 117, + 3, + 247, + 57, + 89, + 147, + 79, + 84, + 61, + 249, + 196, + 41, + 176, + 120, + 45, + 225, + 182, + 239, + 56, + 39, + 32, + 210, + 194, + 244, + 145, + 248, + 237, + 19, + 21, + 208, + 105, + 185, + 125, + 91, + 128, + 250, + 243, + 237, + 7, + 2, + 108, + 131, + 116, + 201, + 183, + 59, + 143, + 95, + 214, + 44, + 3, + 227, + 116, + 199, + 249, + 198, + 37, + 72, + 100, + 48, + 230, + 90, + 212, + 183, + 6, + 137, + 22, + 248, + 160, + 57, + 247, + 174, + 248, + 115, + 245, + 202, + 149, + 203, + 214, + 190, + 126, + 212, + 156, + 56, + 212, + 222, + 124, + 39, + 76, + 128, + 134, + 79, + 105, + 188, + 19, + 230, + 192, + 178, + 102, + 254, + 236, + 127, + 250, + 242, + 36, + 17, + 108, + 42, + 187, + 126, + 123, + 198, + 95, + 87, + 110, + 114, + 197, + 227, + 232, + 91, + 76, + 1, + 65, + 233, + 188, + 174, + 233, + 32, + 110, + 188, + 218, + 94, + 59, + 90, + 6, + 198, + 67, + 251, + 190, + 226, + 90, + 96, + 107, + 74, + 118, + 231, + 245, + 183, + 234, + 229, + 42, + 247, + 187, + 245, + 234, + 182, + 159, + 44, + 218, + 242, + 87, + 252, + 124, + 114, + 53, + 44, + 14, + 56, + 22, + 245, + 221, + 31, + 86, + 2, + 82, + 74, + 95, + 251, + 250, + 60, + 40, + 223, + 184, + 114, + 187, + 186, + 63, + 72, + 89, + 174, + 158, + 163, + 183, + 63, + 143, + 235, + 238, + 7, + 86, + 252, + 133, + 234, + 223, + 211, + 209, + 9, + 197, + 107, + 129, + 79, + 31, + 125, + 231, + 49, + 10, + 76, + 91, + 150, + 125, + 34, + 127, + 185, + 155, + 11, + 220, + 109, + 160, + 242, + 183, + 107, + 42, + 111, + 130, + 31, + 125, + 7, + 54, + 152, + 54, + 217, + 250, + 174, + 138, + 23, + 44, + 193, + 244, + 216, + 173, + 30, + 200, + 195, + 254, + 126, + 191, + 18, + 14, + 43, + 39, + 1, + 27, + 104, + 141, + 215, + 100, + 14, + 67, + 216, + 210, + 82, + 226, + 115, + 241, + 64, + 30, + 118, + 234, + 251, + 139, + 58, + 123, + 80, + 147, + 1, + 167, + 205, + 190, + 250, + 72, + 230, + 0, + 50, + 159, + 175, + 212, + 71, + 223, + 125, + 247, + 179, + 218, + 78, + 145, + 65, + 7, + 98, + 223, + 3, + 81, + 28, + 96, + 194, + 152, + 126, + 247, + 249, + 234, + 119, + 79, + 30, + 212, + 133, + 85, + 121, + 233, + 201, + 86, + 27, + 218, + 67, + 93, + 51, + 80, + 175, + 23, + 108, + 201, + 107, + 254, + 250, + 239, + 216, + 189, + 143, + 139, + 128, + 29, + 135, + 244, + 61, + 153, + 101, + 32, + 202, + 182, + 158, + 53, + 25, + 247, + 223, + 93, + 170, + 139, + 229, + 215, + 239, + 194, + 230, + 119, + 51, + 118, + 88, + 234, + 216, + 87, + 191, + 155, + 48, + 68, + 253, + 254, + 108, + 99, + 72, + 54, + 181, + 239, + 239, + 130, + 29, + 125, + 3, + 19, + 96, + 164, + 213, + 119, + 73, + 81, + 151, + 186, + 204, + 236, + 84, + 122, + 168, + 129, + 238, + 47, + 105, + 29, + 253, + 166, + 177, + 64, + 215, + 88, + 125, + 219, + 130, + 121, + 236, + 252, + 115, + 81, + 91, + 237, + 105, + 147, + 192, + 25, + 177, + 239, + 5, + 193, + 151, + 63, + 8, + 195, + 112, + 150, + 33, + 143, + 183, + 47, + 233, + 123, + 202, + 18, + 82, + 183, + 171, + 176, + 234, + 119, + 216, + 147, + 50, + 117, + 123, + 103, + 6, + 23, + 141, + 166, + 230, + 111, + 175, + 242, + 219, + 237, + 74, + 0, + 30, + 66, + 130, + 120, + 195, + 121, + 189, + 10, + 244, + 252, + 250, + 175, + 63, + 223, + 131, + 61, + 212, + 4, + 246, + 148, + 5, + 36, + 239, + 222, + 230, + 178, + 133, + 197, + 163, + 187, + 201, + 19, + 12, + 101, + 246, + 173, + 62, + 97, + 48, + 183, + 137, + 99, + 175, + 233, + 44, + 251, + 239, + 170, + 182, + 127, + 114, + 166, + 238, + 66, + 57, + 8, + 168, + 195, + 188, + 15, + 27, + 82, + 32, + 154, + 166, + 217, + 109, + 208, + 237, + 197, + 176, + 221, + 232, + 157, + 149, + 128, + 132, + 11, + 40, + 62, + 169, + 111, + 57, + 80, + 124, + 14, + 79, + 74, + 207, + 143, + 103, + 8, + 223, + 187, + 119, + 182, + 164, + 8, + 68, + 58, + 176, + 239, + 116, + 35, + 85, + 160, + 57, + 44, + 175, + 122, + 237, + 117, + 152, + 105, + 247, + 119, + 13, + 4, + 157, + 141, + 21, + 59, + 13, + 141, + 198, + 198, + 211, + 30, + 180, + 252, + 242, + 245, + 94, + 85, + 61, + 95, + 253, + 117, + 19, + 209, + 56, + 43, + 199, + 24, + 23, + 136, + 203, + 234, + 187, + 65, + 76, + 2, + 170, + 150, + 86, + 20, + 245, + 253, + 57, + 67, + 93, + 120, + 194, + 98, + 107, + 44, + 188, + 88, + 24, + 214, + 114, + 74, + 225, + 128, + 223, + 182, + 81, + 248, + 43, + 168, + 212, + 93, + 9, + 135, + 95, + 54, + 127, + 134, + 248, + 70, + 60, + 248, + 141, + 184, + 34, + 187, + 194, + 66, + 109, + 92, + 252, + 236, + 19, + 150, + 143, + 20, + 56, + 126, + 40, + 110, + 238, + 27, + 172, + 135, + 243, + 105, + 232, + 184, + 240, + 82, + 84, + 187, + 255, + 89, + 215, + 142, + 12, + 54, + 205, + 251, + 58, + 14, + 193, + 1, + 195, + 220, + 211, + 18, + 183, + 122, + 111, + 203, + 187, + 240, + 33, + 192, + 153, + 136, + 193, + 114, + 228, + 198, + 73, + 150, + 70, + 65, + 192, + 148, + 173, + 46, + 25, + 5, + 114, + 86, + 183, + 243, + 103, + 40, + 211, + 24, + 64, + 141, + 207, + 213, + 17, + 104, + 209, + 122, + 94, + 152, + 205, + 53, + 210, + 62, + 32, + 131, + 68, + 183, + 39, + 132, + 3, + 216, + 76, + 251, + 54, + 53, + 69, + 4, + 97, + 215, + 116, + 71, + 254, + 173, + 90, + 150, + 85, + 219, + 95, + 86, + 149, + 23, + 14, + 172, + 199, + 15, + 58, + 67, + 75, + 148, + 97, + 44, + 73, + 151, + 29, + 158, + 221, + 30, + 29, + 224, + 195, + 82, + 236, + 190, + 68, + 153, + 30, + 86, + 131, + 173, + 11, + 139, + 225, + 232, + 132, + 211, + 137, + 176, + 124, + 121, + 95, + 213, + 173, + 211, + 0, + 141, + 242, + 242, + 165, + 220, + 163, + 206, + 32, + 199, + 53, + 64, + 109, + 54, + 214, + 22, + 134, + 8, + 38, + 152, + 126, + 226, + 33, + 182, + 128, + 19, + 198, + 228, + 116, + 0, + 120, + 248, + 29, + 137, + 193, + 77, + 83, + 180, + 162, + 124, + 119, + 170, + 101, + 246, + 250, + 65, + 152, + 156, + 181, + 213, + 235, + 124, + 182, + 191, + 154, + 17, + 160, + 226, + 176, + 119, + 69, + 94, + 126, + 218, + 238, + 233, + 246, + 145, + 23, + 223, + 29, + 94, + 159, + 237, + 78, + 38, + 49, + 158, + 226, + 197, + 175, + 65, + 47, + 123, + 104, + 90, + 140, + 167, + 120, + 204, + 228, + 190, + 245, + 22, + 211, + 46, + 32, + 50, + 13, + 169, + 235, + 171, + 187, + 131, + 18, + 106, + 236, + 93, + 223, + 125, + 245, + 51, + 234, + 135, + 129, + 13, + 186, + 181, + 141, + 123, + 184, + 150, + 32, + 208, + 52, + 180, + 45, + 92, + 139, + 187, + 112, + 173, + 146, + 80, + 177, + 205, + 155, + 216, + 31, + 239, + 214, + 221, + 116, + 9, + 139, + 28, + 109, + 20, + 170, + 209, + 179, + 204, + 217, + 88, + 180, + 76, + 152, + 142, + 51, + 221, + 122, + 106, + 172, + 182, + 28, + 115, + 247, + 82, + 81, + 198, + 2, + 22, + 12, + 116, + 174, + 13, + 12, + 11, + 10, + 8, + 123, + 218, + 202, + 238, + 163, + 10, + 7, + 152, + 245, + 62, + 237, + 231, + 18, + 165, + 224, + 225, + 111, + 252, + 116, + 4, + 184, + 136, + 130, + 210, + 164, + 148, + 41, + 114, + 136, + 225, + 200, + 4, + 93, + 72, + 105, + 235, + 80, + 30, + 21, + 245, + 221, + 174, + 110, + 106, + 125, + 178, + 109, + 163, + 122, + 103, + 93, + 31, + 205, + 9, + 180, + 38, + 55, + 222, + 186, + 197, + 49, + 172, + 76, + 185, + 10, + 82, + 79, + 82, + 117, + 247, + 122, + 207, + 1, + 33, + 194, + 37, + 163, + 21, + 16, + 138, + 197, + 183, + 5, + 85, + 238, + 175, + 148, + 39, + 72, + 209, + 238, + 151, + 30, + 19, + 166, + 138, + 54, + 178, + 145, + 156, + 97, + 145, + 165, + 68, + 216, + 170, + 241, + 43, + 169, + 69, + 247, + 27, + 135, + 104, + 250, + 182, + 60, + 54, + 138, + 159, + 119, + 71, + 250, + 103, + 141, + 55, + 45, + 144, + 232, + 46, + 26, + 7, + 61, + 2, + 202, + 134, + 243, + 7, + 82, + 86, + 212, + 97, + 122, + 144, + 194, + 251, + 120, + 56, + 4, + 43, + 6, + 98, + 59, + 237, + 114, + 249, + 164, + 202, + 70, + 166, + 26, + 208, + 151, + 123, + 140, + 149, + 4, + 134, + 251, + 223, + 177, + 232, + 221, + 128, + 9, + 114, + 32, + 193, + 209, + 119, + 167, + 149, + 9, + 24, + 217, + 178, + 59, + 93, + 223, + 81, + 62, + 250, + 85, + 114, + 91, + 169, + 163, + 111, + 227, + 84, + 113, + 208, + 229, + 207, + 235, + 183, + 187, + 39, + 242, + 176, + 111, + 146, + 241, + 211, + 213, + 112, + 88, + 172, + 142, + 232, + 208, + 27, + 233, + 118, + 58, + 6, + 76, + 214, + 124, + 146, + 121, + 129, + 129, + 242, + 184, + 92, + 143, + 40, + 40, + 122, + 99, + 177, + 123, + 35, + 45, + 94, + 23, + 3, + 250, + 226, + 185, + 131, + 245, + 63, + 60, + 65, + 31, + 57, + 115, + 247, + 241, + 114, + 241, + 140, + 69, + 68, + 32, + 139, + 188, + 17, + 90, + 98, + 3, + 29, + 226, + 217, + 170, + 168, + 119, + 169, + 234, + 225, + 62, + 1, + 251, + 119, + 191, + 155, + 78, + 96, + 207, + 203, + 213, + 62, + 24, + 198, + 223, + 191, + 203, + 168, + 97, + 152, + 15, + 98, + 198, + 24, + 195, + 26, + 26, + 76, + 251, + 61, + 4, + 193, + 86, + 220, + 246, + 96, + 126, + 110, + 32, + 8, + 210, + 133, + 32, + 52, + 210, + 189, + 183, + 121, + 21, + 85, + 129, + 126, + 198, + 165, + 81, + 129, + 181, + 144, + 27, + 39, + 182, + 58, + 1, + 7, + 211, + 230, + 184, + 185, + 132, + 94, + 142, + 142, + 254, + 49, + 65, + 101, + 228, + 116, + 189, + 67, + 56, + 128, + 193, + 112, + 74, + 90, + 76, + 212, + 61, + 211, + 62, + 87, + 228, + 140, + 83, + 129, + 6, + 68, + 236, + 171, + 145, + 3, + 19, + 180, + 154, + 169, + 62, + 86, + 207, + 250, + 159, + 187, + 125, + 86, + 185, + 99, + 149, + 200, + 218, + 19, + 0, + 109, + 99, + 243, + 59, + 236, + 237, + 157, + 193, + 69, + 164, + 175, + 140, + 33, + 31, + 48, + 209, + 68, + 78, + 39, + 186, + 13, + 107, + 139, + 145, + 97, + 78, + 161, + 190, + 171, + 98, + 28, + 176, + 204, + 210, + 195, + 243, + 64, + 226, + 85, + 111, + 173, + 219, + 56, + 239, + 89, + 159, + 193, + 186, + 64, + 24, + 103, + 227, + 29, + 50, + 1, + 89, + 60, + 249, + 253, + 71, + 130, + 60, + 20, + 38, + 98, + 218, + 17, + 31, + 126, + 249, + 192, + 58, + 60, + 31, + 224, + 237, + 215, + 109, + 103, + 107, + 118, + 46, + 96, + 29, + 141, + 13, + 5, + 47, + 1, + 161, + 66, + 54, + 235, + 175, + 82, + 215, + 147, + 230, + 169, + 2, + 20, + 126, + 42, + 62, + 232, + 9, + 225, + 255, + 251, + 31, + 60, + 240, + 150, + 108, + 248, + 91, + 129, + 24, + 93, + 128, + 19, + 211, + 179, + 224, + 20, + 179, + 16, + 32, + 227, + 188, + 25, + 189, + 66, + 180, + 187, + 212, + 184, + 29, + 42, + 128, + 20, + 150, + 104, + 227, + 27, + 33, + 115, + 1, + 226, + 72, + 223, + 136, + 10, + 123, + 59, + 213, + 20, + 33, + 40, + 73, + 122, + 96, + 156, + 82, + 85, + 20, + 116, + 230, + 194, + 213, + 15, + 122, + 155, + 149, + 245, + 166, + 8, + 108, + 132, + 113, + 38, + 44, + 161, + 61, + 116, + 160, + 11, + 35, + 45, + 113, + 180, + 86, + 138, + 157, + 250, + 0, + 90, + 220, + 40, + 127, + 13, + 226, + 11, + 15, + 165, + 108, + 105, + 93, + 35, + 211, + 242, + 251, + 129, + 15, + 36, + 48, + 204, + 26, + 85, + 168, + 70, + 14, + 206, + 158, + 82, + 20, + 155, + 245, + 62, + 161, + 12, + 53, + 156, + 125, + 60, + 64, + 19, + 5, + 100, + 78, + 245, + 17, + 31, + 244, + 202, + 154, + 41, + 200, + 26, + 171, + 145, + 196, + 99, + 19, + 52, + 108, + 23, + 182, + 46, + 170, + 58, + 104, + 75, + 82, + 206, + 253, + 15, + 80, + 236, + 131, + 223, + 90, + 91, + 3, + 220, + 172, + 81, + 163, + 155, + 192, + 74, + 101, + 89, + 92, + 119, + 171, + 117, + 81, + 254, + 132, + 49, + 177, + 93, + 21, + 192, + 148, + 117, + 147, + 216, + 239, + 161, + 65, + 115, + 130, + 56, + 18, + 239, + 128, + 65, + 218, + 4, + 6, + 213, + 72, + 217, + 19, + 157, + 212, + 118, + 51, + 8, + 132, + 226, + 233, + 73, + 124, + 42, + 12, + 0, + 114, + 243, + 84, + 129, + 124, + 108, + 46, + 178, + 125, + 22, + 131, + 216, + 108, + 157, + 115, + 12, + 80, + 65, + 75, + 7, + 108, + 245, + 218, + 47, + 79, + 176, + 178, + 87, + 60, + 218, + 24, + 157, + 96, + 76, + 19, + 95, + 173, + 134, + 62, + 230, + 146, + 238, + 25, + 237, + 182, + 29, + 219, + 32, + 18, + 195, + 80, + 153, + 41, + 209, + 249, + 20, + 151, + 26, + 224, + 100, + 121, + 107, + 188, + 77, + 106, + 56, + 148, + 156, + 9, + 1, + 133, + 183, + 72, + 163, + 249, + 138, + 24, + 112, + 152, + 139, + 172, + 191, + 199, + 85, + 123, + 211, + 108, + 173, + 194, + 148, + 227, + 45, + 170, + 45, + 207, + 109, + 163, + 62, + 192, + 110, + 230, + 161, + 67, + 86, + 122, + 171, + 70, + 128, + 145, + 32, + 4, + 164, + 141, + 155, + 51, + 26, + 12, + 227, + 116, + 99, + 108, + 164, + 219, + 245, + 22, + 48, + 204, + 11, + 120, + 80, + 106, + 9, + 114, + 74, + 247, + 9, + 22, + 172, + 216, + 177, + 178, + 231, + 210, + 176, + 165, + 215, + 18, + 103, + 196, + 174, + 215, + 200, + 120, + 26, + 177, + 229, + 121, + 90, + 250, + 222, + 75, + 224, + 30, + 219, + 207, + 10, + 38, + 124, + 130, + 174, + 28, + 224, + 98, + 3, + 181, + 81, + 27, + 195, + 203, + 97, + 248, + 72, + 143, + 140, + 253, + 238, + 101, + 151, + 254, + 210, + 13, + 156, + 9, + 3, + 107, + 35, + 9, + 87, + 100, + 220, + 176, + 230, + 116, + 87, + 168, + 122, + 148, + 11, + 123, + 99, + 3, + 225, + 65, + 2, + 73, + 22, + 106, + 132, + 193, + 101, + 76, + 88, + 40, + 105, + 107, + 188, + 141, + 149, + 62, + 1, + 218, + 42, + 48, + 246, + 0, + 46, + 243, + 209, + 88, + 24, + 40, + 78, + 152, + 50, + 82, + 2, + 101, + 55, + 229, + 136, + 9, + 208, + 86, + 99, + 177, + 166, + 108, + 64, + 146, + 215, + 73, + 251, + 62, + 66, + 178, + 233, + 147, + 179, + 237, + 22, + 116, + 182, + 221, + 171, + 79, + 32, + 106, + 245, + 113, + 154, + 65, + 113, + 205, + 125, + 156, + 228, + 107, + 47, + 46, + 48, + 69, + 56, + 44, + 202, + 112, + 231, + 134, + 54, + 152, + 163, + 25, + 13, + 144, + 185, + 172, + 15, + 99, + 54, + 70, + 208, + 56, + 169, + 251, + 68, + 100, + 60, + 97, + 16, + 55, + 2, + 41, + 225, + 105, + 52, + 166, + 166, + 110, + 27, + 215, + 36, + 155, + 247, + 234, + 241, + 10, + 22, + 173, + 108, + 172, + 190, + 236, + 93, + 35, + 172, + 49, + 109, + 188, + 117, + 193, + 154, + 35, + 56, + 90, + 163, + 113, + 72, + 130, + 50, + 237, + 143, + 167, + 15, + 88, + 77, + 191, + 158, + 77, + 99, + 128, + 231, + 176, + 181, + 11, + 50, + 49, + 57, + 232, + 136, + 145, + 213, + 6, + 200, + 100, + 77, + 32, + 83, + 233, + 124, + 88, + 195, + 49, + 7, + 102, + 169, + 189, + 154, + 28, + 93, + 161, + 11, + 238, + 52, + 47, + 14, + 49, + 223, + 176, + 201, + 91, + 124, + 136, + 154, + 6, + 160, + 173, + 82, + 135, + 41, + 225, + 213, + 148, + 159, + 212, + 135, + 62, + 200, + 14, + 177, + 157, + 228, + 68, + 137, + 109, + 223, + 157, + 179, + 221, + 158, + 208, + 193, + 100, + 206, + 70, + 175, + 47, + 34, + 130, + 65, + 232, + 41, + 8, + 198, + 63, + 159, + 123, + 50, + 179, + 55, + 110, + 248, + 55, + 79, + 102, + 83, + 127, + 58, + 69, + 121, + 47, + 109, + 214, + 209, + 230, + 70, + 134, + 224, + 36, + 185, + 99, + 194, + 169, + 37, + 179, + 130, + 79, + 163, + 116, + 22, + 182, + 15, + 19, + 99, + 47, + 240, + 66, + 147, + 128, + 73, + 26, + 5, + 209, + 52, + 13, + 120, + 198, + 49, + 251, + 100, + 90, + 159, + 60, + 198, + 109, + 237, + 214, + 128, + 177, + 184, + 177, + 63, + 100, + 196, + 232, + 63, + 242, + 254, + 176, + 221, + 47, + 188, + 139, + 57, + 199, + 162, + 64, + 222, + 57, + 3, + 229, + 56, + 229, + 149, + 83, + 58, + 58, + 107, + 117, + 150, + 150, + 12, + 194, + 51, + 155, + 58, + 211, + 240, + 70, + 232, + 196, + 4, + 109, + 194, + 192, + 28, + 19, + 188, + 70, + 61, + 46, + 152, + 11, + 15, + 141, + 239, + 174, + 184, + 235, + 212, + 56, + 154, + 66, + 3, + 62, + 26, + 159, + 249, + 50, + 224, + 156, + 4, + 80, + 195, + 100, + 243, + 99, + 148, + 108, + 204, + 176, + 108, + 117, + 10, + 217, + 28, + 80, + 40, + 221, + 57, + 106, + 74, + 202, + 235, + 23, + 123, + 32, + 100, + 211, + 130, + 213, + 116, + 46, + 100, + 83, + 207, + 109, + 24, + 75, + 248, + 166, + 208, + 146, + 225, + 81, + 223, + 40, + 131, + 67, + 156, + 151, + 134, + 129, + 156, + 98, + 88, + 65, + 118, + 197, + 148, + 54, + 195, + 159, + 43, + 7, + 163, + 26, + 197, + 250, + 173, + 120, + 153, + 207, + 30, + 225, + 242, + 168, + 89, + 59, + 205, + 108, + 48, + 70, + 99, + 69, + 213, + 116, + 161, + 235, + 125, + 184, + 216, + 67, + 60, + 134, + 41, + 42, + 214, + 213, + 136, + 193, + 177, + 69, + 193, + 154, + 150, + 171, + 254, + 228, + 17, + 238, + 254, + 42, + 85, + 16, + 29, + 141, + 201, + 19, + 170, + 51, + 212, + 250, + 169, + 226, + 252, + 107, + 163, + 243, + 186, + 248, + 228, + 254, + 73, + 157, + 245, + 129, + 206, + 128, + 58, + 27, + 119, + 250, + 27, + 187, + 141, + 113, + 116, + 136, + 159, + 107, + 42, + 218, + 17, + 0, + 108, + 132, + 32, + 98, + 141, + 182, + 110, + 70, + 10, + 138, + 158, + 7, + 20, + 213, + 30, + 104, + 23, + 38, + 34, + 15, + 144, + 212, + 25, + 22, + 168, + 6, + 50, + 58, + 217, + 27, + 166, + 11, + 84, + 60, + 215, + 217, + 52, + 143, + 127, + 182, + 113, + 51, + 9, + 37, + 68, + 35, + 119, + 99, + 135, + 157, + 245, + 195, + 109, + 63, + 132, + 192, + 39, + 105, + 192, + 57, + 61, + 118, + 68, + 193, + 246, + 50, + 209, + 224, + 212, + 127, + 39, + 125, + 188, + 98, + 203, + 245, + 118, + 175, + 85, + 91, + 160, + 83, + 110, + 146, + 232, + 61, + 40, + 80, + 7, + 152, + 25, + 109, + 137, + 15, + 71, + 23, + 223, + 172, + 148, + 133, + 30, + 157, + 56, + 129, + 230, + 35, + 51, + 53, + 114, + 59, + 24, + 65, + 92, + 41, + 53, + 156, + 127, + 198, + 62, + 220, + 174, + 131, + 193, + 150, + 115, + 42, + 18, + 62, + 45, + 216, + 96, + 140, + 56, + 7, + 14, + 143, + 203, + 75, + 88, + 28, + 243, + 169, + 170, + 209, + 112, + 52, + 182, + 17, + 161, + 106, + 100, + 30, + 233, + 237, + 147, + 47, + 87, + 59, + 65, + 121, + 177, + 94, + 73, + 112, + 42, + 21, + 90, + 159, + 123, + 117, + 118, + 184, + 64, + 221, + 59, + 53, + 171, + 225, + 248, + 109, + 186, + 40, + 45, + 26, + 31, + 203, + 244, + 75, + 244, + 215, + 18, + 228, + 106, + 134, + 24, + 72, + 9, + 44, + 218, + 139, + 70, + 184, + 79, + 45, + 254, + 212, + 10, + 199, + 188, + 215, + 167, + 238, + 111, + 180, + 211, + 238, + 221, + 202, + 35, + 178, + 141, + 172, + 211, + 54, + 50, + 34, + 219, + 152, + 53, + 79, + 49, + 217, + 62, + 115, + 155, + 247, + 61, + 38, + 132, + 105, + 42, + 157, + 100, + 96, + 133, + 106, + 124, + 209, + 183, + 241, + 157, + 81, + 75, + 88, + 37, + 138, + 194, + 70, + 101, + 45, + 171, + 131, + 97, + 193, + 62, + 44, + 69, + 234, + 87, + 116, + 120, + 27, + 90, + 159, + 109, + 85, + 163, + 131, + 106, + 142, + 249, + 156, + 34, + 102, + 4, + 70, + 146, + 82, + 118, + 106, + 71, + 145, + 170, + 57, + 60, + 99, + 13, + 133, + 221, + 43, + 121, + 106, + 169, + 115, + 120, + 128, + 83, + 76, + 234, + 87, + 250, + 137, + 187, + 234, + 174, + 83, + 214, + 23, + 129, + 114, + 108, + 11, + 125, + 180, + 47, + 187, + 133, + 2, + 61, + 91, + 174, + 25, + 141, + 235, + 123, + 235, + 151, + 146, + 16, + 178, + 203, + 145, + 106, + 118, + 68, + 247, + 40, + 199, + 189, + 211, + 62, + 124, + 10, + 152, + 229, + 73, + 173, + 223, + 136, + 52, + 54, + 38, + 175, + 121, + 65, + 79, + 250, + 76, + 54, + 180, + 139, + 98, + 16, + 129, + 47, + 108, + 204, + 177, + 81, + 50, + 152, + 131, + 211, + 14, + 181, + 212, + 66, + 237, + 58, + 26, + 87, + 121, + 101, + 245, + 170, + 170, + 48, + 203, + 146, + 54, + 115, + 230, + 204, + 61, + 12, + 204, + 70, + 99, + 34, + 170, + 142, + 5, + 131, + 243, + 204, + 175, + 31, + 11, + 69, + 232, + 138, + 223, + 124, + 115, + 242, + 237, + 186, + 214, + 53, + 129, + 116, + 164, + 211, + 147, + 210, + 91, + 253, + 9, + 78, + 184, + 161, + 187, + 59, + 244, + 118, + 30, + 160, + 138, + 141, + 228, + 99, + 83, + 4, + 163, + 232, + 118, + 158, + 148, + 5, + 13, + 10, + 201, + 1, + 147, + 180, + 81, + 32, + 57, + 16, + 230, + 28, + 185, + 94, + 224, + 140, + 68, + 55, + 22, + 160, + 120, + 163, + 165, + 23, + 110, + 120, + 141, + 215, + 62, + 47, + 251, + 214, + 165, + 85, + 237, + 125, + 120, + 78, + 213, + 184, + 213, + 225, + 49, + 181, + 34, + 52, + 39, + 249, + 56, + 161, + 170, + 243, + 124, + 166, + 213, + 220, + 69, + 22, + 194, + 47, + 195, + 48, + 48, + 160, + 61, + 32, + 204, + 13, + 134, + 70, + 238, + 202, + 6, + 16, + 230, + 77, + 64, + 152, + 124, + 185, + 7, + 68, + 160, + 136, + 132, + 120, + 135, + 149, + 110, + 183, + 169, + 53, + 5, + 162, + 56, + 30, + 207, + 221, + 182, + 166, + 180, + 38, + 139, + 78, + 64, + 171, + 204, + 63, + 75, + 170, + 101, + 9, + 225, + 84, + 127, + 227, + 236, + 114, + 125, + 132, + 40, + 74, + 210, + 47, + 119, + 72, + 137, + 195, + 16, + 69, + 73, + 238, + 66, + 176, + 15, + 157, + 151, + 79, + 253, + 140, + 133, + 134, + 19, + 196, + 180, + 241, + 233, + 18, + 49, + 40, + 143, + 145, + 75, + 116, + 63, + 136, + 199, + 73, + 18, + 26, + 159, + 165, + 163, + 211, + 239, + 219, + 97, + 196, + 48, + 33, + 29, + 243, + 212, + 142, + 178, + 229, + 186, + 109, + 13, + 86, + 164, + 8, + 76, + 229, + 206, + 168, + 108, + 114, + 7, + 91, + 156, + 114, + 230, + 107, + 162, + 238, + 65, + 208, + 230, + 133, + 144, + 248, + 14, + 190, + 22, + 35, + 184, + 117, + 134, + 224, + 112, + 120, + 188, + 8, + 121, + 42, + 121, + 248, + 235, + 192, + 99, + 25, + 15, + 190, + 7, + 83, + 79, + 223, + 235, + 239, + 119, + 243, + 42, + 231, + 173, + 185, + 229, + 187, + 73, + 249, + 216, + 26, + 225, + 90, + 14, + 50, + 255, + 202, + 155, + 230, + 87, + 130, + 180, + 203, + 94, + 173, + 85, + 29, + 120, + 139, + 101, + 147, + 145, + 242, + 181, + 79, + 193, + 157, + 208, + 46, + 204, + 60, + 149, + 225, + 140, + 242, + 67, + 51, + 220, + 133, + 26, + 25, + 23, + 55, + 178, + 151, + 80, + 206, + 184, + 184, + 98, + 247, + 89, + 116, + 82, + 29, + 222, + 86, + 193, + 229, + 37, + 78, + 95, + 179, + 211, + 33, + 238, + 4, + 159, + 57, + 225, + 231, + 135, + 155, + 18, + 75, + 120, + 48, + 47, + 239, + 92, + 127, + 139, + 111, + 210, + 255, + 213, + 199, + 166, + 233, + 210, + 95, + 42, + 35, + 140, + 137, + 157, + 57, + 108, + 172, + 97, + 203, + 157, + 231, + 176, + 109, + 63, + 219, + 90, + 142, + 247, + 250, + 225, + 189, + 129, + 195, + 157, + 2, + 71, + 14, + 139, + 86, + 99, + 156, + 137, + 58, + 193, + 90, + 148, + 207, + 82, + 174, + 200, + 21, + 175, + 12, + 17, + 74, + 88, + 173, + 215, + 69, + 63, + 228, + 126, + 145, + 36, + 210, + 40, + 165, + 99, + 4, + 244, + 91, + 174, + 213, + 229, + 253, + 113, + 63, + 196, + 179, + 85, + 227, + 105, + 134, + 192, + 132, + 169, + 11, + 193, + 169, + 159, + 149, + 2, + 79, + 78, + 1, + 160, + 135, + 130, + 71, + 238, + 68, + 232, + 151, + 172, + 235, + 239, + 73, + 93, + 87, + 202, + 157, + 123, + 149, + 123, + 115, + 185, + 19, + 126, + 86, + 228, + 246, + 174, + 132, + 169, + 39, + 165, + 255, + 78, + 113, + 120, + 70, + 139, + 82, + 96, + 210, + 17, + 254, + 184, + 91, + 208, + 137, + 132, + 82, + 92, + 145, + 101, + 7, + 58, + 153, + 93, + 6, + 230, + 63, + 122, + 160, + 59, + 33, + 54, + 167, + 70, + 127, + 238, + 32, + 2, + 77, + 94, + 41, + 111, + 176, + 38, + 93, + 148, + 99, + 252, + 93, + 59, + 153, + 237, + 142, + 236, + 16, + 80, + 137, + 169, + 191, + 165, + 46, + 180, + 135, + 4, + 160, + 24, + 250, + 59, + 167, + 13, + 73, + 89, + 171, + 150, + 184, + 195, + 19, + 215, + 161, + 157, + 119, + 241, + 151, + 206, + 62, + 36, + 242, + 6, + 69, + 86, + 167, + 70, + 255, + 75, + 8, + 90, + 30, + 124, + 122, + 12, + 68, + 117, + 42, + 243, + 78, + 197, + 126, + 209, + 13, + 121, + 62, + 152, + 208, + 95, + 182, + 29, + 214, + 159, + 208, + 157, + 146, + 55, + 239, + 12, + 121, + 155, + 10, + 132, + 218, + 56, + 74, + 189, + 5, + 181, + 121, + 164, + 124, + 190, + 94, + 250, + 94, + 179, + 227, + 42, + 183, + 213, + 163, + 182, + 230, + 166, + 68, + 159, + 141, + 244, + 2, + 14, + 201, + 196, + 160, + 52, + 89, + 230, + 135, + 31, + 21, + 22, + 213, + 34, + 55, + 38, + 230, + 133, + 46, + 47, + 160, + 199, + 180, + 173, + 217, + 69, + 142, + 118, + 141, + 65, + 15, + 1, + 183, + 185, + 128, + 92, + 211, + 229, + 120, + 110, + 104, + 206, + 154, + 79, + 203, + 107, + 129, + 228, + 21, + 174, + 192, + 125, + 124, + 84, + 217, + 138, + 92, + 226, + 10, + 148, + 206, + 172, + 73, + 207, + 247, + 157, + 55, + 198, + 217, + 1, + 27, + 162, + 54, + 211, + 217, + 152, + 35, + 26, + 162, + 182, + 193, + 113, + 23, + 159, + 208, + 8, + 31, + 46, + 234, + 163, + 252, + 169, + 98, + 196, + 235, + 141, + 14, + 13, + 226, + 114, + 163, + 17, + 164, + 248, + 72, + 69, + 129, + 40, + 87, + 201, + 166, + 230, + 239, + 208, + 166, + 2, + 163, + 6, + 154, + 220, + 24, + 212, + 133, + 225, + 247, + 158, + 35, + 49, + 251, + 30, + 255, + 165, + 20, + 240, + 140, + 57, + 162, + 20, + 134, + 109, + 157, + 98, + 172, + 32, + 12, + 251, + 72, + 63, + 209, + 158, + 48, + 38, + 183, + 145, + 26, + 130, + 229, + 51, + 53, + 255, + 60, + 15, + 138, + 67, + 139, + 141, + 126, + 131, + 227, + 83, + 26, + 128, + 119, + 133, + 198, + 31, + 130, + 20, + 72, + 48, + 151, + 167, + 242, + 217, + 67, + 144, + 2, + 13, + 214, + 88, + 233, + 39, + 222, + 59, + 210, + 152, + 75, + 97, + 171, + 114, + 129, + 104, + 86, + 65, + 59, + 103, + 27, + 184, + 41, + 195, + 96, + 105, + 244, + 191, + 48, + 13, + 147, + 6, + 123, + 202, + 189, + 188, + 178, + 18, + 158, + 220, + 131, + 109, + 65, + 154, + 195, + 176, + 124, + 136, + 218, + 135, + 175, + 148, + 129, + 229, + 251, + 145, + 214, + 87, + 222, + 131, + 251, + 130, + 250, + 240, + 12, + 175, + 232, + 52, + 175, + 227, + 49, + 18, + 150, + 106, + 236, + 99, + 7, + 143, + 89, + 93, + 154, + 46, + 219, + 214, + 212, + 236, + 190, + 77, + 103, + 195, + 49, + 3, + 20, + 212, + 52, + 101, + 248, + 152, + 235, + 68, + 200, + 154, + 170, + 89, + 207, + 188, + 127, + 84, + 162, + 52, + 150, + 198, + 118, + 72, + 61, + 74, + 99, + 73, + 171, + 237, + 78, + 91, + 173, + 103, + 41, + 112, + 201, + 15, + 142, + 206, + 252, + 101, + 32, + 100, + 141, + 40, + 193, + 90, + 32, + 211, + 71, + 26, + 201, + 210, + 215, + 47, + 158, + 45, + 89, + 10, + 103, + 140, + 133, + 17, + 6, + 208, + 135, + 245, + 132, + 169, + 1, + 173, + 153, + 130, + 245, + 86, + 46, + 136, + 146, + 193, + 88, + 114, + 30, + 63, + 127, + 12, + 131, + 145, + 198, + 2, + 213, + 217, + 40, + 186, + 120, + 141, + 50, + 115, + 192, + 223, + 120, + 98, + 224, + 188, + 173, + 71, + 141, + 216, + 230, + 217, + 170, + 112, + 13, + 143, + 40, + 76, + 249, + 60, + 221, + 95, + 254, + 198, + 233, + 215, + 78, + 111, + 36, + 90, + 176, + 100, + 248, + 143, + 132, + 46, + 89, + 17, + 132, + 176, + 49, + 32, + 134, + 195, + 57, + 99, + 114, + 190, + 39, + 85, + 121, + 149, + 101, + 197, + 94, + 69, + 183, + 149, + 118, + 51, + 103, + 116, + 32, + 23, + 112, + 92, + 141, + 12, + 107, + 118, + 15, + 149, + 126, + 74, + 240, + 184, + 102, + 22, + 113, + 209, + 66, + 247, + 201, + 148, + 127, + 155, + 132, + 227, + 48, + 214, + 74, + 209, + 244, + 211, + 121, + 16, + 129, + 199, + 26, + 254, + 97, + 182, + 39, + 162, + 6, + 26, + 57, + 76, + 125, + 215, + 20, + 222, + 24, + 174, + 57, + 177, + 232, + 82, + 20, + 196, + 247, + 174, + 59, + 219, + 248, + 78, + 16, + 112, + 189, + 49, + 87, + 76, + 92, + 193, + 121, + 165, + 140, + 222, + 242, + 245, + 172, + 4, + 41, + 181, + 213, + 241, + 61, + 74, + 184, + 228, + 205, + 30, + 67, + 68, + 49, + 55, + 107, + 12, + 69, + 13, + 233, + 214, + 90, + 139, + 158, + 42, + 241, + 7, + 94, + 81, + 170, + 149, + 248, + 106, + 193, + 32, + 56, + 171, + 181, + 52, + 210, + 187, + 45, + 24, + 10, + 109, + 183, + 193, + 28, + 144, + 115, + 243, + 197, + 18, + 150, + 46, + 13, + 164, + 14, + 33, + 178, + 144, + 146, + 163, + 116, + 250, + 160, + 135, + 147, + 171, + 91, + 158, + 105, + 176, + 137, + 169, + 63, + 91, + 226, + 219, + 244, + 30, + 5, + 180, + 206, + 242, + 194, + 104, + 2, + 241, + 72, + 201, + 193, + 151, + 168, + 112, + 223, + 187, + 18, + 197, + 77, + 96, + 188, + 47, + 29, + 15, + 17, + 50, + 101, + 48, + 231, + 70, + 107, + 176, + 27, + 56, + 148, + 199, + 95, + 124, + 19, + 152, + 242, + 140, + 126, + 228, + 130, + 195, + 61, + 109, + 222, + 133, + 146, + 26, + 230, + 249, + 7, + 157, + 221, + 181, + 129, + 65, + 44, + 228, + 39, + 105, + 186, + 25, + 164, + 162, + 17, + 203, + 182, + 112, + 139, + 226, + 66, + 216, + 101, + 153, + 189, + 170, + 182, + 99, + 63, + 73, + 186, + 60, + 92, + 171, + 74, + 98, + 219, + 115, + 250, + 89, + 122, + 249, + 182, + 118, + 15, + 104, + 229, + 105, + 137, + 103, + 11, + 125, + 32, + 176, + 227, + 202, + 229, + 133, + 213, + 22, + 182, + 239, + 232, + 174, + 219, + 246, + 25, + 125, + 222, + 181, + 189, + 35, + 91, + 98, + 3, + 149, + 209, + 232, + 214, + 64, + 188, + 192, + 112, + 206, + 212, + 235, + 248, + 199, + 194, + 16, + 103, + 237, + 15, + 13, + 7, + 95, + 214, + 24, + 149, + 68, + 78, + 48, + 71, + 92, + 125, + 75, + 107, + 219, + 219, + 201, + 211, + 82, + 24, + 174, + 141, + 254, + 113, + 180, + 38, + 184, + 94, + 56, + 106, + 175, + 133, + 225, + 157, + 117, + 242, + 44, + 192, + 136, + 169, + 59, + 230, + 41, + 27, + 197, + 129, + 157, + 159, + 219, + 192, + 54, + 128, + 43, + 226, + 16, + 86, + 223, + 141, + 121, + 101, + 26, + 157, + 193, + 76, + 229, + 36, + 53, + 113, + 232, + 18, + 127, + 234, + 138, + 117, + 194, + 105, + 98, + 153, + 130, + 75, + 167, + 141, + 35, + 143, + 9, + 19, + 111, + 206, + 122, + 21, + 30, + 24, + 251, + 236, + 88, + 195, + 174, + 56, + 72, + 52, + 103, + 150, + 173, + 240, + 72, + 111, + 12, + 20, + 23, + 140, + 217, + 209, + 72, + 13, + 239, + 158, + 113, + 60, + 182, + 145, + 146, + 192, + 162, + 45, + 117, + 165, + 58, + 149, + 84, + 25, + 176, + 120, + 26, + 240, + 80, + 55, + 27, + 53, + 150, + 164, + 31, + 145, + 97, + 35, + 198, + 160, + 98, + 141, + 179, + 110, + 177, + 1, + 134, + 121, + 24, + 46, + 255, + 116, + 175, + 52, + 167, + 241, + 156, + 161, + 210, + 26, + 163, + 42, + 51, + 154, + 12, + 182, + 70, + 99, + 156, + 21, + 49, + 17, + 154, + 234, + 25, + 94, + 81, + 13, + 158, + 241, + 107, + 136, + 130, + 99, + 212, + 104, + 203, + 66, + 22, + 28, + 163, + 189, + 72, + 180, + 182, + 132, + 192, + 67, + 192, + 72, + 5, + 70, + 209, + 40, + 158, + 210, + 110, + 28, + 92, + 70, + 202, + 221, + 122, + 0, + 140, + 120, + 249, + 177, + 97, + 203, + 161, + 18, + 205, + 29, + 68, + 103, + 99, + 192, + 148, + 206, + 112, + 212, + 186, + 249, + 83, + 188, + 126, + 170, + 222, + 3, + 37, + 23, + 204, + 172, + 50, + 176, + 251, + 128, + 35, + 131, + 214, + 88, + 254, + 24, + 46, + 32, + 206, + 109, + 135, + 30, + 188, + 95, + 175, + 184, + 58, + 87, + 253, + 233, + 56, + 117, + 199, + 193, + 153, + 203, + 218, + 78, + 225, + 19, + 5, + 50, + 201, + 109, + 248, + 118, + 103, + 51, + 167, + 157, + 178, + 129, + 200, + 104, + 148, + 77, + 134, + 111, + 142, + 226, + 76, + 49, + 242, + 242, + 5, + 188, + 146, + 209, + 121, + 255, + 96, + 255, + 122, + 19, + 208, + 41, + 98, + 163, + 223, + 12, + 241, + 68, + 24, + 7, + 205, + 119, + 181, + 250, + 33, + 44, + 58, + 114, + 170, + 216, + 47, + 116, + 86, + 223, + 197, + 181, + 240, + 205, + 111, + 126, + 143, + 1, + 228, + 14, + 234, + 97, + 132, + 188, + 3, + 87, + 81, + 151, + 36, + 171, + 156, + 81, + 150, + 253, + 251, + 182, + 27, + 198, + 19, + 228, + 99, + 91, + 30, + 28, + 222, + 239, + 157, + 234, + 106, + 29, + 55, + 239, + 247, + 92, + 84, + 83, + 26, + 201, + 174, + 163, + 151, + 116, + 194, + 24, + 232, + 141, + 84, + 210, + 193, + 224, + 194, + 185, + 147, + 101, + 41, + 107, + 253, + 121, + 91, + 31, + 115, + 168, + 76, + 219, + 101, + 248, + 12, + 88, + 34, + 141, + 229, + 53, + 33, + 65, + 212, + 150, + 169, + 135, + 107, + 221, + 24, + 63, + 113, + 64, + 217, + 253, + 18, + 49, + 154, + 192, + 153, + 183, + 165, + 167, + 160, + 92, + 100, + 181, + 98, + 62, + 112, + 255, + 40, + 29, + 88, + 140, + 53, + 76, + 115, + 55, + 219, + 83, + 23, + 232, + 1, + 131, + 199, + 74, + 253, + 148, + 95, + 225, + 192, + 149, + 240, + 76, + 121, + 43, + 118, + 229, + 187, + 135, + 104, + 236, + 212, + 96, + 133, + 53, + 182, + 80, + 55, + 129, + 216, + 224, + 124, + 244, + 83, + 250, + 182, + 213, + 175, + 233, + 231, + 205, + 73, + 194, + 169, + 115, + 79, + 108, + 218, + 171, + 17, + 251, + 96, + 14, + 19, + 70, + 74, + 233, + 151, + 84, + 157, + 248, + 60, + 246, + 61, + 143, + 154, + 219, + 210, + 48, + 206, + 81, + 242, + 198, + 184, + 114, + 118, + 13, + 89, + 94, + 58, + 74, + 253, + 160, + 236, + 35, + 94, + 26, + 100, + 177, + 212, + 90, + 225, + 84, + 39, + 54, + 97, + 137, + 165, + 60, + 154, + 58, + 227, + 247, + 117, + 225, + 206, + 54, + 64, + 53, + 0, + 165, + 145, + 42, + 38, + 140, + 64, + 68, + 105, + 48, + 95, + 213, + 97, + 61, + 139, + 9, + 74, + 204, + 81, + 15, + 129, + 173, + 0, + 55, + 22, + 55, + 70, + 197, + 217, + 2, + 230, + 216, + 83, + 58, + 224, + 146, + 121, + 214, + 148, + 53, + 17, + 78, + 228, + 22, + 152, + 185, + 26, + 253, + 179, + 52, + 2, + 51, + 157, + 82, + 222, + 205, + 37, + 194, + 73, + 50, + 119, + 223, + 174, + 163, + 7, + 76, + 157, + 141, + 11, + 92, + 5, + 97, + 49, + 166, + 34, + 152, + 94, + 27, + 219, + 64, + 161, + 152, + 165, + 145, + 15, + 166, + 70, + 192, + 203, + 242, + 238, + 185, + 132, + 163, + 43, + 34, + 68, + 5, + 190, + 215, + 196, + 198, + 214, + 60, + 193, + 27, + 241, + 71, + 59, + 153, + 199, + 186, + 8, + 152, + 243, + 66, + 230, + 146, + 111, + 204, + 53, + 133, + 229, + 25, + 62, + 68, + 19, + 22, + 118, + 226, + 126, + 22, + 86, + 106, + 21, + 207, + 250, + 74, + 70, + 212, + 253, + 90, + 184, + 143, + 197, + 188, + 183, + 248, + 59, + 244, + 111, + 86, + 240, + 209, + 153, + 179, + 108, + 97, + 189, + 32, + 146, + 235, + 204, + 202, + 33, + 210, + 56, + 70, + 168, + 104, + 118, + 134, + 212, + 185, + 128, + 46, + 164, + 3, + 207, + 187, + 237, + 198, + 125, + 134, + 38, + 241, + 125, + 69, + 111, + 229, + 87, + 190, + 228, + 168, + 248, + 70, + 11, + 140, + 195, + 137, + 216, + 140, + 161, + 249, + 45, + 241, + 120, + 11, + 245, + 82, + 28, + 96, + 67, + 113, + 109, + 161, + 94, + 220, + 229, + 225, + 92, + 132, + 76, + 61, + 83, + 11, + 109, + 79, + 229, + 193, + 37, + 92, + 154, + 250, + 234, + 226, + 152, + 111, + 139, + 230, + 67, + 168, + 3, + 71, + 215, + 125, + 7, + 21, + 223, + 229, + 119, + 212, + 201, + 235, + 71, + 101, + 203, + 100, + 32, + 154, + 138, + 141, + 230, + 206, + 65, + 90, + 67, + 153, + 91, + 88, + 202, + 62, + 1, + 236, + 48, + 96, + 42, + 166, + 191, + 106, + 220, + 184, + 105, + 18, + 25, + 24, + 85, + 34, + 133, + 230, + 126, + 151, + 194, + 182, + 222, + 29, + 27, + 163, + 242, + 40, + 148, + 182, + 186, + 114, + 91, + 60, + 221, + 142, + 200, + 58, + 68, + 118, + 204, + 64, + 121, + 114, + 186, + 106, + 78, + 77, + 144, + 130, + 104, + 135, + 209, + 204, + 149, + 34, + 213, + 132, + 3, + 247, + 81, + 153, + 111, + 206, + 48, + 39, + 55, + 122, + 193, + 144, + 71, + 70, + 181, + 166, + 168, + 232, + 190, + 70, + 245, + 131, + 16, + 106, + 38, + 129, + 65, + 163, + 209, + 202, + 54, + 108, + 149, + 198, + 156, + 169, + 78, + 246, + 153, + 10, + 126, + 155, + 119, + 38, + 176, + 22, + 54, + 18, + 209, + 89, + 38, + 224, + 224, + 60, + 115, + 115, + 87, + 119, + 95, + 182, + 83, + 85, + 212, + 84, + 157, + 65, + 245, + 122, + 88, + 88, + 215, + 230, + 204, + 203, + 0, + 215, + 106, + 28, + 226, + 6, + 73, + 140, + 156, + 210, + 130, + 182, + 230, + 169, + 21, + 230, + 46, + 101, + 75, + 178, + 75, + 81, + 56, + 44, + 13, + 111, + 162, + 123, + 73, + 61, + 154, + 79, + 149, + 104, + 33, + 186, + 207, + 37, + 229, + 103, + 42, + 254, + 48, + 94, + 98, + 205, + 13, + 215, + 206, + 141, + 151, + 132, + 86, + 234, + 112, + 181, + 219, + 59, + 158, + 138, + 229, + 20, + 150, + 97, + 35, + 26, + 27, + 17, + 105, + 200, + 121, + 193, + 112, + 105, + 146, + 114, + 37, + 175, + 171, + 38, + 200, + 84, + 203, + 187, + 216, + 46, + 14, + 169, + 82, + 161, + 182, + 119, + 239, + 116, + 40, + 18, + 3, + 214, + 149, + 226, + 18, + 34, + 21, + 134, + 125, + 193, + 94, + 249, + 45, + 230, + 63, + 37, + 2, + 117, + 152, + 44, + 19, + 14, + 136, + 210, + 154, + 8, + 54, + 39, + 48, + 142, + 220, + 217, + 189, + 90, + 9, + 31, + 194, + 135, + 52, + 138, + 221, + 94, + 184, + 17, + 123, + 161, + 21, + 172, + 218, + 212, + 3, + 236, + 161, + 16, + 159, + 72, + 111, + 150, + 230, + 200, + 2, + 227, + 86, + 198, + 152, + 74, + 164, + 96, + 63, + 15, + 137, + 41, + 6, + 79, + 229, + 156, + 35, + 215, + 160, + 181, + 76, + 10, + 118, + 47, + 113, + 9, + 8, + 118, + 58, + 223, + 182, + 88, + 73, + 111, + 71, + 145, + 109, + 83, + 115, + 14, + 133, + 142, + 4, + 34, + 60, + 98, + 199, + 219, + 3, + 131, + 196, + 96, + 216, + 24, + 188, + 5, + 6, + 201, + 251, + 7, + 122, + 245, + 230, + 82, + 177, + 132, + 71, + 24, + 53, + 182, + 140, + 28, + 254, + 5, + 121, + 174, + 203, + 149, + 120, + 131, + 139, + 6, + 170, + 103, + 6, + 254, + 6, + 178, + 92, + 211, + 100, + 199, + 195, + 253, + 102, + 129, + 142, + 165, + 233, + 12, + 162, + 254, + 242, + 82, + 61, + 194, + 163, + 201, + 138, + 47, + 152, + 42, + 163, + 209, + 168, + 115, + 10, + 44, + 178, + 65, + 255, + 88, + 132, + 142, + 27, + 165, + 137, + 5, + 27, + 15, + 254, + 27, + 165, + 105, + 89, + 62, + 117, + 249, + 166, + 106, + 158, + 177, + 195, + 56, + 191, + 101, + 151, + 60, + 90, + 207, + 100, + 35, + 124, + 53, + 172, + 211, + 224, + 105, + 96, + 24, + 107, + 104, + 106, + 240, + 84, + 3, + 173, + 124, + 10, + 182, + 184, + 119, + 102, + 169, + 77, + 140, + 241, + 241, + 174, + 91, + 217, + 25, + 136, + 184, + 86, + 124, + 82, + 35, + 47, + 144, + 81, + 226, + 196, + 73, + 245, + 76, + 117, + 140, + 99, + 9, + 163, + 87, + 47, + 23, + 31, + 61, + 43, + 150, + 32, + 247, + 69, + 33, + 219, + 7, + 211, + 12, + 96, + 147, + 84, + 30, + 248, + 227, + 125, + 178, + 134, + 192, + 82, + 106, + 140, + 194, + 10, + 25, + 32, + 82, + 126, + 185, + 181, + 213, + 243, + 166, + 237, + 111, + 93, + 154, + 150, + 191, + 225, + 80, + 55, + 24, + 191, + 34, + 247, + 205, + 58, + 39, + 87, + 145, + 206, + 92, + 191, + 187, + 29, + 186, + 204, + 23, + 204, + 32, + 174, + 153, + 59, + 209, + 177, + 59, + 209, + 156, + 141, + 105, + 47, + 98, + 17, + 206, + 158, + 155, + 202, + 61, + 148, + 19, + 27, + 129, + 105, + 175, + 255, + 224, + 82, + 3, + 211, + 172, + 12, + 67, + 6, + 29, + 157, + 209, + 20, + 183, + 137, + 174, + 112, + 186, + 165, + 62, + 76, + 47, + 174, + 25, + 139, + 31, + 69, + 20, + 40, + 27, + 12, + 106, + 236, + 113, + 149, + 87, + 152, + 144, + 164, + 118, + 10, + 37, + 96, + 85, + 190, + 42, + 103, + 60, + 173, + 72, + 34, + 48, + 79, + 41, + 209, + 167, + 92, + 39, + 5, + 226, + 220, + 95, + 249, + 44, + 205, + 80, + 7, + 135, + 49, + 97, + 167, + 49, + 213, + 24, + 32, + 69, + 8, + 92, + 253, + 78, + 85, + 239, + 78, + 245, + 214, + 94, + 9, + 69, + 187, + 198, + 211, + 58, + 115, + 141, + 14, + 13, + 180, + 81, + 163, + 46, + 32, + 16, + 37, + 97, + 73, + 81, + 204, + 143, + 122, + 9, + 77, + 102, + 84, + 202, + 157, + 33, + 243, + 202, + 183, + 66, + 185, + 47, + 126, + 51, + 146, + 213, + 70, + 156, + 207, + 141, + 60, + 42, + 133, + 113, + 43, + 254, + 146, + 5, + 123, + 41, + 156, + 240, + 158, + 28, + 86, + 77, + 110, + 206, + 150, + 153, + 47, + 32, + 105, + 180, + 89, + 216, + 241, + 235, + 174, + 139, + 230, + 123, + 101, + 126, + 40, + 162, + 222, + 118, + 160, + 241, + 128, + 65, + 226, + 175, + 66, + 79, + 91, + 85, + 64, + 184, + 79, + 153, + 135, + 121, + 218, + 223, + 126, + 96, + 109, + 241, + 116, + 24, + 236, + 181, + 47, + 34, + 19, + 23, + 143, + 215, + 97, + 15, + 102, + 11, + 191, + 13, + 13, + 179, + 191, + 29, + 152, + 77, + 187, + 148, + 134, + 219, + 48, + 231, + 182, + 74, + 237, + 32, + 113, + 173, + 68, + 76, + 203, + 38, + 240, + 140, + 250, + 200, + 49, + 38, + 33, + 111, + 220, + 111, + 70, + 140, + 73, + 40, + 117, + 49, + 250, + 40, + 97, + 155, + 7, + 58, + 190, + 102, + 35, + 183, + 39, + 36, + 252, + 147, + 102, + 238, + 16, + 241, + 65, + 186, + 182, + 229, + 240, + 117, + 40, + 215, + 169, + 66, + 156, + 81, + 31, + 165, + 96, + 73, + 133, + 80, + 214, + 15, + 171, + 34, + 86, + 28, + 10, + 112, + 223, + 254, + 65, + 103, + 10, + 132, + 155, + 109, + 214, + 26, + 157, + 114, + 79, + 143, + 228, + 144, + 153, + 154, + 202, + 212, + 180, + 147, + 15, + 58, + 161, + 194, + 54, + 203, + 144, + 27, + 49, + 56, + 198, + 48, + 150, + 212, + 115, + 187, + 163, + 199, + 135, + 216, + 107, + 119, + 36, + 2, + 38, + 212, + 41, + 249, + 19, + 135, + 129, + 121, + 226, + 194, + 51, + 5, + 232, + 54, + 113, + 87, + 97, + 9, + 55, + 118, + 199, + 172, + 17, + 206, + 164, + 248, + 15, + 229, + 55, + 204, + 51, + 14, + 25, + 238, + 52, + 89, + 91, + 97, + 232, + 168, + 233, + 141, + 125, + 156, + 118, + 220, + 155, + 59, + 149, + 42, + 184, + 67, + 57, + 23, + 73, + 24, + 138, + 52, + 110, + 240, + 97, + 36, + 30, + 134, + 34, + 243, + 159, + 152, + 234, + 33, + 145, + 89, + 37, + 157, + 50, + 155, + 112, + 245, + 38, + 42, + 100, + 54, + 219, + 130, + 200, + 10, + 141, + 169, + 187, + 219, + 51, + 56, + 6, + 9, + 84, + 58, + 147, + 158, + 20, + 13, + 12, + 45, + 221, + 41, + 119, + 215, + 200, + 225, + 53, + 49, + 194, + 138, + 68, + 215, + 70, + 220, + 44, + 236, + 137, + 60, + 159, + 76, + 87, + 22, + 211, + 251, + 113, + 0, + 103, + 32, + 161, + 57, + 132, + 88, + 185, + 81, + 60, + 56, + 8, + 156, + 82, + 138, + 254, + 147, + 117, + 188, + 251, + 139, + 60, + 6, + 27, + 218, + 56, + 42, + 209, + 201, + 128, + 51, + 53, + 62, + 63, + 136, + 137, + 60, + 3, + 15, + 151, + 128, + 206, + 33, + 141, + 168, + 237, + 114, + 48, + 155, + 178, + 119, + 202, + 148, + 166, + 71, + 207, + 71, + 234, + 45, + 46, + 225, + 66, + 224, + 195, + 58, + 45, + 209, + 67, + 123, + 33, + 158, + 206, + 121, + 30, + 7, + 234, + 247, + 202, + 233, + 51, + 199, + 186, + 109, + 72, + 10, + 1, + 213, + 26, + 245, + 230, + 230, + 10, + 68, + 158, + 234, + 205, + 123, + 95, + 66, + 91, + 97, + 225, + 176, + 26, + 57, + 32, + 153, + 20, + 240, + 48, + 207, + 234, + 128, + 146, + 36, + 40, + 145, + 180, + 182, + 7, + 37, + 45, + 129, + 169, + 52, + 124, + 11, + 74, + 178, + 174, + 220, + 186, + 31, + 62, + 161, + 159, + 193, + 165, + 228, + 70, + 163, + 115, + 225, + 224, + 82, + 114, + 10, + 165, + 124, + 123, + 87, + 109, + 76, + 94, + 243, + 93, + 18, + 208, + 207, + 138, + 194, + 161, + 176, + 16, + 87, + 58, + 43, + 61, + 244, + 179, + 154, + 176, + 156, + 87, + 122, + 196, + 237, + 139, + 160, + 122, + 129, + 215, + 69, + 32, + 204, + 220, + 184, + 69, + 71, + 70, + 222, + 82, + 78, + 139, + 234, + 227, + 85, + 126, + 160, + 7, + 244, + 49, + 181, + 49, + 143, + 153, + 40, + 120, + 114, + 88, + 132, + 157, + 31, + 7, + 236, + 69, + 80, + 77, + 99, + 237, + 67, + 194, + 128, + 67, + 44, + 119, + 155, + 106, + 204, + 82, + 168, + 128, + 149, + 83, + 84, + 122, + 27, + 21, + 211, + 155, + 208, + 185, + 239, + 192, + 34, + 15, + 40, + 235, + 66, + 197, + 123, + 109, + 217, + 210, + 25, + 34, + 85, + 34, + 118, + 77, + 49, + 164, + 204, + 43, + 170, + 163, + 212, + 18, + 245, + 20, + 194, + 18, + 88, + 104, + 41, + 3, + 248, + 189, + 162, + 20, + 46, + 205, + 175, + 15, + 241, + 33, + 15, + 202, + 38, + 55, + 154, + 44, + 179, + 15, + 224, + 145, + 126, + 224, + 197, + 83, + 240, + 251, + 105, + 105, + 101, + 99, + 191, + 61, + 16, + 84, + 208, + 53, + 26, + 193, + 48, + 193, + 25, + 215, + 146, + 74, + 217, + 247, + 155, + 100, + 221, + 165, + 44, + 220, + 159, + 153, + 124, + 223, + 239, + 140, + 99, + 109, + 94, + 14, + 236, + 157, + 138, + 253, + 28, + 152, + 114, + 167, + 187, + 7, + 83, + 149, + 75, + 212, + 155, + 215, + 89, + 106, + 7, + 122, + 184, + 73, + 163, + 49, + 251, + 87, + 166, + 192, + 156, + 51, + 119, + 97, + 89, + 155, + 129, + 240, + 135, + 246, + 217, + 136, + 176, + 22, + 119, + 10, + 224, + 194, + 163, + 122, + 228, + 246, + 23, + 229, + 250, + 238, + 101, + 7, + 234, + 45, + 14, + 103, + 54, + 146, + 39, + 131, + 17, + 102, + 148, + 19, + 223, + 75, + 36, + 246, + 194, + 232, + 187, + 54, + 72, + 122, + 160, + 144, + 150, + 220, + 210, + 106, + 175, + 187, + 160, + 245, + 173, + 236, + 138, + 174, + 128, + 204, + 135, + 178, + 193, + 37, + 209, + 254, + 55, + 198, + 73, + 4, + 228, + 83, + 200, + 166, + 203, + 123, + 121, + 230, + 224, + 27, + 199, + 128, + 90, + 26, + 28, + 121, + 234, + 188, + 62, + 111, + 126, + 28, + 169, + 174, + 229, + 174, + 160, + 193, + 165, + 239, + 21, + 26, + 106, + 193, + 56, + 87, + 111, + 140, + 68, + 178, + 96, + 156, + 83, + 238, + 151, + 244, + 49, + 50, + 104, + 179, + 232, + 65, + 86, + 99, + 238, + 145, + 5, + 81, + 157, + 41, + 237, + 209, + 75, + 138, + 97, + 25, + 233, + 123, + 102, + 201, + 190, + 219, + 77, + 99, + 148, + 147, + 157, + 37, + 108, + 198, + 253, + 218, + 182, + 223, + 61, + 21, + 29, + 253, + 151, + 66, + 175, + 137, + 228, + 69, + 6, + 234, + 140, + 30, + 106, + 253, + 191, + 253, + 196, + 15, + 147, + 5, + 202, + 2, + 12, + 38, + 217, + 46, + 6, + 119, + 115, + 169, + 19, + 221, + 19, + 77, + 142, + 15, + 130, + 224, + 182, + 165, + 80, + 32, + 200, + 28, + 46, + 248, + 125, + 228, + 8, + 16, + 87, + 202, + 211, + 145, + 202, + 30, + 254, + 9, + 149, + 104, + 67, + 102, + 118, + 86, + 90, + 14, + 10, + 106, + 118, + 163, + 103, + 198, + 48, + 96, + 36, + 199, + 45, + 158, + 88, + 35, + 174, + 88, + 222, + 159, + 179, + 61, + 96, + 13, + 160, + 129, + 228, + 157, + 228, + 44, + 4, + 22, + 166, + 148, + 175, + 252, + 33, + 208, + 235, + 25, + 6, + 77, + 18, + 140, + 87, + 109, + 28, + 68, + 147, + 6, + 231, + 117, + 4, + 111, + 36, + 193, + 94, + 63, + 111, + 107, + 81, + 107, + 84, + 246, + 44, + 200, + 112, + 44, + 48, + 157, + 105, + 210, + 193, + 41, + 140, + 21, + 138, + 236, + 34, + 223, + 231, + 151, + 234, + 80, + 219, + 102, + 211, + 157, + 161, + 178, + 107, + 128, + 178, + 167, + 29, + 225, + 233, + 134, + 136, + 160, + 107, + 165, + 90, + 150, + 51, + 76, + 150, + 113, + 194, + 72, + 185, + 154, + 167, + 86, + 88, + 12, + 206, + 156, + 6, + 113, + 236, + 115, + 123, + 191, + 110, + 48, + 101, + 245, + 177, + 241, + 131, + 83, + 189, + 191, + 129, + 133, + 224, + 191, + 17, + 63, + 92, + 96, + 203, + 82, + 157, + 205, + 143, + 94, + 176, + 60, + 248, + 38, + 144, + 238, + 59, + 186, + 120, + 140, + 102, + 217, + 7, + 187, + 54, + 203, + 62, + 216, + 103, + 41, + 251, + 248, + 135, + 147, + 154, + 6, + 196, + 233, + 131, + 26, + 189, + 53, + 3, + 226, + 156, + 34, + 249, + 132, + 165, + 130, + 32, + 74, + 8, + 168, + 116, + 111, + 43, + 122, + 166, + 75, + 185, + 239, + 15, + 191, + 161, + 53, + 139, + 89, + 134, + 1, + 22, + 137, + 129, + 135, + 183, + 115, + 172, + 112, + 63, + 189, + 112, + 64, + 151, + 196, + 150, + 146, + 26, + 215, + 0, + 1, + 47, + 135, + 229, + 43, + 221, + 190, + 79, + 17, + 68, + 6, + 52, + 74, + 13, + 11, + 47, + 37, + 109, + 151, + 16, + 121, + 57, + 39, + 184, + 2, + 170, + 125, + 69, + 101, + 118, + 47, + 70, + 28, + 208, + 173, + 209, + 63, + 74, + 149, + 2, + 182, + 201, + 253, + 163, + 42, + 48, + 165, + 188, + 59, + 155, + 155, + 210, + 161, + 115, + 191, + 115, + 4, + 21, + 55, + 74, + 30, + 35, + 246, + 17, + 17, + 115, + 195, + 189, + 67, + 251, + 124, + 139, + 187, + 211, + 216, + 132, + 233, + 140, + 48, + 12, + 201, + 61, + 62, + 183, + 193, + 225, + 221, + 236, + 208, + 146, + 168, + 246, + 52, + 230, + 239, + 59, + 189, + 162, + 109, + 218, + 119, + 21, + 212, + 185, + 67, + 134, + 92, + 208, + 44, + 37, + 79, + 232, + 62, + 69, + 244, + 12, + 38, + 230, + 102, + 210, + 15, + 30, + 225, + 3, + 47, + 92, + 236, + 25, + 244, + 186, + 16, + 76, + 236, + 73, + 68, + 84, + 6, + 255, + 136, + 131, + 78, + 212, + 61, + 10, + 150, + 119, + 225, + 63, + 251, + 122, + 207, + 109, + 75, + 223, + 126, + 48, + 102, + 231, + 163, + 206, + 220, + 201, + 9, + 190, + 126, + 78, + 215, + 18, + 157, + 22, + 0, + 46, + 154, + 254, + 83, + 83, + 45, + 2, + 204, + 88, + 100, + 141, + 250, + 200, + 0, + 51, + 214, + 244, + 145, + 66, + 223, + 7, + 158, + 55, + 79, + 220, + 164, + 118, + 56, + 105, + 103, + 232, + 199, + 68, + 80, + 109, + 53, + 220, + 154, + 10, + 70, + 156, + 90, + 89, + 127, + 24, + 164, + 191, + 12, + 22, + 181, + 186, + 168, + 175, + 5, + 107, + 234, + 236, + 243, + 8, + 102, + 84, + 64, + 27, + 141, + 131, + 164, + 192, + 77, + 136, + 115, + 3, + 158, + 131, + 21, + 216, + 58, + 49, + 10, + 136, + 97, + 17, + 166, + 53, + 229, + 169, + 244, + 77, + 96, + 77, + 78, + 29, + 238, + 174, + 109, + 241, + 151, + 236, + 131, + 173, + 106, + 7, + 206, + 208, + 140, + 136, + 254, + 30, + 222, + 72, + 80, + 231, + 216, + 201, + 37, + 190, + 114, + 114, + 27, + 42, + 57, + 207, + 21, + 139, + 153, + 107, + 145, + 84, + 149, + 117, + 238, + 231, + 102, + 207, + 239, + 219, + 44, + 187, + 49, + 209, + 89, + 34, + 101, + 116, + 174, + 116, + 135, + 224, + 159, + 238, + 70, + 116, + 56, + 237, + 174, + 228, + 221, + 213, + 208, + 149, + 65, + 114, + 190, + 201, + 135, + 56, + 12, + 152, + 83, + 240, + 70, + 151, + 89, + 89, + 19, + 124, + 89, + 202, + 79, + 127, + 20, + 192, + 92, + 112, + 248, + 58, + 164, + 120, + 48, + 133, + 90, + 87, + 26, + 155, + 168, + 48, + 119, + 114, + 75, + 227, + 102, + 183, + 189, + 152, + 14, + 47, + 74, + 7, + 160, + 54, + 106, + 154, + 195, + 220, + 137, + 152, + 114, + 136, + 243, + 137, + 30, + 110, + 91, + 164, + 22, + 3, + 5, + 105, + 44, + 177, + 52, + 178, + 76, + 87, + 72, + 42, + 159, + 240, + 187, + 30, + 32, + 203, + 109, + 16, + 166, + 168, + 76, + 123, + 25, + 73, + 65, + 235, + 113, + 148, + 102, + 90, + 143, + 123, + 238, + 23, + 218, + 252, + 104, + 45, + 212, + 150, + 238, + 141, + 239, + 154, + 241, + 42, + 243, + 64, + 175, + 72, + 115, + 75, + 60, + 247, + 123, + 144, + 177, + 105, + 11, + 141, + 86, + 30, + 49, + 23, + 208, + 156, + 130, + 3, + 11, + 208, + 53, + 125, + 97, + 206, + 42, + 201, + 136, + 171, + 35, + 141, + 63, + 212, + 167, + 122, + 11, + 146, + 108, + 161, + 223, + 252, + 16, + 154, + 85, + 48, + 140, + 102, + 186, + 127, + 245, + 105, + 225, + 222, + 95, + 138, + 113, + 236, + 57, + 53, + 125, + 221, + 206, + 184, + 54, + 211, + 169, + 101, + 36, + 193, + 49, + 255, + 206, + 116, + 234, + 44, + 223, + 196, + 0, + 89, + 56, + 226, + 166, + 247, + 184, + 69, + 99, + 128, + 185, + 108, + 65, + 75, + 179, + 11, + 90, + 170, + 30, + 94, + 141, + 106, + 244, + 118, + 64, + 3, + 230, + 28, + 141, + 75, + 250, + 246, + 84, + 167, + 166, + 6, + 108, + 207, + 92, + 105, + 182, + 103, + 12, + 225, + 28, + 108, + 141, + 95, + 62, + 88, + 248, + 38, + 246, + 60, + 199, + 249, + 239, + 233, + 197, + 12, + 45, + 112, + 172, + 250, + 190, + 54, + 196, + 35, + 149, + 68, + 103, + 234, + 201, + 252, + 163, + 101, + 137, + 193, + 96, + 50, + 211, + 206, + 96, + 1, + 194, + 24, + 148, + 143, + 231, + 254, + 13, + 239, + 164, + 140, + 107, + 54, + 154, + 82, + 1, + 23, + 235, + 44, + 144, + 72, + 29, + 38, + 186, + 167, + 114, + 160, + 125, + 171, + 169, + 99, + 174, + 202, + 54, + 227, + 137, + 129, + 3, + 215, + 104, + 228, + 80, + 13, + 16, + 74, + 45, + 236, + 31, + 218, + 243, + 71, + 6, + 109, + 111, + 214, + 196, + 13, + 243, + 83, + 106, + 68, + 29, + 110, + 152, + 31, + 73, + 156, + 155, + 135, + 152, + 85, + 67, + 212, + 32, + 27, + 208, + 234, + 124, + 86, + 33, + 104, + 228, + 96, + 248, + 101, + 107, + 118, + 59, + 35, + 246, + 212, + 90, + 107, + 193, + 80, + 238, + 124, + 86, + 38, + 224, + 164, + 41, + 208, + 95, + 94, + 213, + 153, + 248, + 131, + 135, + 193, + 18, + 111, + 20, + 126, + 113, + 24, + 97, + 224, + 74, + 105, + 126, + 117, + 22, + 235, + 25, + 1, + 129, + 103, + 16, + 40, + 71, + 163, + 124, + 157, + 87, + 164, + 97, + 22, + 78, + 242, + 85, + 251, + 81, + 234, + 113, + 42, + 81, + 223, + 182, + 154, + 245, + 16, + 132, + 227, + 9, + 67, + 59, + 101, + 210, + 34, + 193, + 103, + 164, + 20, + 249, + 38, + 44, + 240, + 234, + 15, + 194, + 231, + 36, + 194, + 71, + 112, + 53, + 230, + 10, + 203, + 80, + 208, + 153, + 203, + 152, + 174, + 196, + 126, + 53, + 88, + 148, + 77, + 133, + 105, + 150, + 218, + 176, + 157, + 234, + 50, + 39, + 44, + 118, + 73, + 143, + 183, + 179, + 142, + 108, + 49, + 172, + 181, + 26, + 75, + 145, + 160, + 93, + 161, + 83, + 138, + 213, + 148, + 20, + 207, + 159, + 182, + 201, + 98, + 215, + 38, + 47, + 247, + 108, + 145, + 67, + 59, + 40, + 13, + 62, + 254, + 108, + 228, + 145, + 170, + 42, + 8, + 97, + 74, + 177, + 120, + 100, + 205, + 221, + 123, + 44, + 86, + 35, + 153, + 123, + 139, + 197, + 241, + 102, + 64, + 57, + 44, + 116, + 191, + 184, + 76, + 55, + 210, + 161, + 148, + 87, + 42, + 161, + 63, + 91, + 177, + 26, + 164, + 134, + 86, + 187, + 180, + 152, + 132, + 185, + 164, + 188, + 200, + 15, + 210, + 6, + 226, + 2, + 70, + 105, + 76, + 113, + 182, + 219, + 231, + 228, + 52, + 224, + 74, + 191, + 93, + 66, + 222, + 213, + 26, + 59, + 53, + 22, + 195, + 224, + 86, + 132, + 199, + 83, + 155, + 184, + 83, + 131, + 91, + 145, + 238, + 138, + 15, + 231, + 218, + 253, + 110, + 240, + 248, + 166, + 5, + 36, + 245, + 70, + 208, + 219, + 230, + 109, + 192, + 212, + 169, + 239, + 12, + 136, + 204, + 82, + 118, + 237, + 7, + 173, + 203, + 25, + 58, + 56, + 123, + 103, + 171, + 254, + 82, + 245, + 85, + 2, + 111, + 189, + 92, + 159, + 9, + 206, + 147, + 131, + 7, + 219, + 131, + 154, + 50, + 195, + 68, + 228, + 8, + 60, + 254, + 219, + 15, + 44, + 171, + 172, + 167, + 114, + 166, + 237, + 233, + 26, + 40, + 13, + 142, + 67, + 120, + 15, + 104, + 93, + 6, + 99, + 152, + 237, + 65, + 173, + 171, + 11, + 106, + 189, + 178, + 170, + 19, + 254, + 216, + 185, + 203, + 92, + 91, + 219, + 4, + 142, + 44, + 41, + 62, + 245, + 163, + 215, + 119, + 44, + 133, + 32, + 236, + 245, + 245, + 237, + 134, + 97, + 28, + 110, + 169, + 144, + 168, + 123, + 33, + 143, + 5, + 44, + 141, + 92, + 167, + 215, + 50, + 2, + 62, + 104, + 249, + 173, + 1, + 75, + 145, + 211, + 197, + 114, + 110, + 232, + 31, + 246, + 87, + 121, + 219, + 254, + 254, + 248, + 232, + 225, + 198, + 203, + 14, + 115, + 81, + 142, + 229, + 159, + 90, + 168, + 17, + 172, + 176, + 80, + 163, + 173, + 22, + 247, + 31, + 144, + 126, + 25, + 198, + 84, + 203, + 59, + 61, + 212, + 38, + 130, + 140, + 124, + 5, + 149, + 92, + 182, + 55, + 57, + 129, + 93, + 188, + 113, + 103, + 90, + 71, + 226, + 120, + 154, + 141, + 239, + 24, + 147, + 3, + 178, + 166, + 125, + 199, + 65, + 192, + 73, + 9, + 4, + 150, + 134, + 152, + 103, + 10, + 67, + 13, + 38, + 87, + 20, + 243, + 125, + 244, + 201, + 224, + 114, + 205, + 212, + 110, + 118, + 27, + 43, + 250, + 218, + 247, + 31, + 136, + 28, + 137, + 58, + 113, + 195, + 25, + 198, + 113, + 152, + 42, + 57, + 62, + 42, + 166, + 76, + 144, + 2, + 12, + 111, + 36, + 115, + 9, + 26, + 136, + 226, + 234, + 83, + 34, + 69, + 82, + 129, + 46, + 78, + 83, + 35, + 206, + 147, + 10, + 108, + 20, + 57, + 20, + 167, + 141, + 234, + 117, + 140, + 183, + 228, + 233, + 149, + 224, + 239, + 33, + 18, + 104, + 6, + 51, + 76, + 245, + 251, + 110, + 156, + 45, + 88, + 204, + 233, + 72, + 185, + 148, + 200, + 85, + 144, + 89, + 233, + 214, + 245, + 235, + 27, + 238, + 103, + 66, + 247, + 61, + 144, + 91, + 242, + 156, + 141, + 200, + 27, + 14, + 144, + 129, + 199, + 52, + 178, + 107, + 9, + 15, + 151, + 166, + 200, + 252, + 110, + 229, + 126, + 196, + 9, + 44, + 110, + 156, + 9, + 221, + 226, + 4, + 134, + 166, + 70, + 13, + 215, + 84, + 105, + 9, + 35, + 124, + 27, + 163, + 27, + 225, + 118, + 153, + 66, + 60, + 167, + 14, + 109, + 24, + 38, + 42, + 41, + 234, + 87, + 79, + 186, + 42, + 85, + 234, + 21, + 62, + 59, + 189, + 221, + 166, + 158, + 35, + 244, + 221, + 59, + 163, + 44, + 37, + 50, + 223, + 115, + 243, + 248, + 43, + 214, + 251, + 15, + 4, + 202, + 222, + 84, + 193, + 200, + 112, + 29, + 216, + 104, + 21, + 22, + 36, + 50, + 145, + 34, + 60, + 247, + 74, + 196, + 216, + 149, + 88, + 228, + 51, + 156, + 45, + 18, + 176, + 73, + 83, + 42, + 121, + 31, + 206, + 86, + 150, + 222, + 251, + 163, + 246, + 215, + 239, + 214, + 246, + 192, + 40, + 194, + 173, + 44, + 108, + 111, + 182, + 176, + 170, + 193, + 10, + 110, + 19, + 199, + 14, + 86, + 197, + 216, + 133, + 85, + 157, + 194, + 58, + 223, + 231, + 183, + 157, + 213, + 20, + 228, + 48, + 100, + 181, + 234, + 192, + 34, + 54, + 134, + 70, + 158, + 52, + 94, + 111, + 137, + 101, + 47, + 92, + 85, + 99, + 149, + 86, + 247, + 16, + 33, + 50, + 112, + 164, + 217, + 56, + 60, + 25, + 17, + 142, + 37, + 57, + 139, + 184, + 38, + 213, + 188, + 190, + 251, + 117, + 129, + 71, + 1, + 245, + 152, + 89, + 110, + 74, + 116, + 138, + 30, + 25, + 12, + 246, + 66, + 121, + 121, + 6, + 237, + 144, + 128, + 251, + 148, + 198, + 30, + 141, + 200, + 163, + 132, + 150, + 60, + 209, + 184, + 154, + 43, + 151, + 55, + 95, + 14, + 73, + 83, + 9, + 8, + 210, + 183, + 17, + 156, + 147, + 232, + 200, + 184, + 81, + 43, + 114, + 67, + 151, + 88, + 41, + 149, + 26, + 88, + 145, + 31, + 215, + 76, + 204, + 138, + 120, + 74, + 102, + 110, + 149, + 185, + 50, + 240, + 210, + 148, + 29, + 116, + 42, + 197, + 141, + 126, + 98, + 52, + 110, + 61, + 76, + 120, + 51, + 136, + 78, + 85, + 58, + 79, + 246, + 205, + 54, + 74, + 156, + 32, + 76, + 226, + 212, + 169, + 242, + 212, + 39, + 44, + 94, + 155, + 188, + 131, + 248, + 168, + 100, + 33, + 11, + 37, + 168, + 53, + 2, + 166, + 97, + 48, + 102, + 51, + 119, + 187, + 41, + 85, + 101, + 23, + 236, + 175, + 223, + 51, + 45, + 48, + 40, + 119, + 72, + 150, + 50, + 46, + 207, + 41, + 119, + 56, + 61, + 53, + 208, + 217, + 119, + 212, + 186, + 112, + 134, + 102, + 92, + 159, + 109, + 102, + 221, + 138, + 224, + 113, + 111, + 52, + 194, + 18, + 129, + 201, + 185, + 13, + 232, + 91, + 90, + 139, + 6, + 203, + 249, + 112, + 253, + 26, + 216, + 233, + 250, + 23, + 174, + 95, + 195, + 243, + 120, + 198, + 67, + 92, + 209, + 29, + 38, + 143, + 70, + 43, + 42, + 153, + 145, + 229, + 60, + 79, + 226, + 215, + 222, + 31, + 233, + 217, + 22, + 26, + 47, + 32, + 155, + 41, + 142, + 123, + 136, + 125, + 136, + 0, + 223, + 100, + 93, + 239, + 8, + 186, + 158, + 194, + 87, + 4, + 203, + 86, + 90, + 122, + 156, + 106, + 154, + 35, + 40, + 54, + 253, + 64, + 25, + 85, + 22, + 238, + 220, + 220, + 191, + 127, + 233, + 108, + 136, + 117, + 49, + 140, + 213, + 249, + 202, + 234, + 26, + 17, + 230, + 152, + 191, + 178, + 219, + 169, + 15, + 15, + 189, + 224, + 68, + 122, + 235, + 144, + 202, + 88, + 65, + 35, + 156, + 187, + 81, + 47, + 124, + 75, + 196, + 75, + 141, + 73, + 107, + 151, + 134, + 222, + 20, + 91, + 179, + 8, + 49, + 152, + 141, + 160, + 142, + 89, + 148, + 229, + 152, + 138, + 190, + 74, + 176, + 238, + 254, + 33, + 226, + 93, + 4, + 119, + 251, + 67, + 156, + 145, + 37, + 53, + 27, + 137, + 196, + 9, + 134, + 117, + 48, + 169, + 47, + 157, + 131, + 142, + 230, + 238, + 236, + 48, + 230, + 196, + 72, + 10, + 105, + 146, + 216, + 18, + 184, + 173, + 91, + 44, + 196, + 119, + 58, + 227, + 159, + 74, + 42, + 205, + 46, + 228, + 114, + 246, + 72, + 71, + 156, + 161, + 166, + 131, + 119, + 129, + 57, + 147, + 175, + 211, + 174, + 29, + 96, + 142, + 154, + 128, + 185, + 154, + 129, + 84, + 119, + 168, + 165, + 147, + 107, + 249, + 131, + 214, + 27, + 45, + 11, + 230, + 26, + 222, + 216, + 71, + 134, + 199, + 209, + 200, + 89, + 78, + 15, + 35, + 27, + 125, + 183, + 134, + 107, + 76, + 112, + 68, + 110, + 60, + 200, + 157, + 193, + 61, + 220, + 5, + 182, + 72, + 78, + 167, + 234, + 184, + 215, + 141, + 92, + 27, + 162, + 3, + 136, + 16, + 216, + 144, + 82, + 51, + 226, + 83, + 140, + 76, + 35, + 17, + 20, + 211, + 145, + 233, + 43, + 1, + 34, + 63, + 253, + 232, + 91, + 97, + 8, + 203, + 29, + 27, + 101, + 160, + 22, + 94, + 199, + 115, + 165, + 113, + 4, + 53, + 11, + 183, + 82, + 78, + 31, + 94, + 214, + 152, + 128, + 46, + 141, + 83, + 255, + 27, + 212, + 167, + 150, + 98, + 160, + 53, + 48, + 119, + 212, + 117, + 80, + 120, + 196, + 198, + 129, + 217, + 246, + 221, + 151, + 128, + 48, + 177, + 119, + 190, + 190, + 219, + 240, + 154, + 192, + 88, + 214, + 56, + 64, + 13, + 90, + 152, + 15, + 79, + 245, + 45, + 245, + 142, + 250, + 196, + 28, + 238, + 253, + 181, + 188, + 209, + 101, + 205, + 78, + 235, + 90, + 142, + 46, + 203, + 52, + 125, + 133, + 75, + 39, + 158, + 67, + 209, + 235, + 140, + 207, + 239, + 36, + 111, + 51, + 136, + 174, + 188, + 29, + 174, + 44, + 183, + 95, + 207, + 58, + 108, + 179, + 253, + 91, + 3, + 124, + 206, + 214, + 144, + 79, + 132, + 57, + 48, + 181, + 24, + 230, + 117, + 87, + 93, + 223, + 79, + 246, + 47, + 217, + 212, + 61, + 148, + 71, + 165, + 56, + 111, + 211, + 8, + 175, + 166, + 44, + 121, + 175, + 81, + 224, + 112, + 24, + 177, + 247, + 244, + 221, + 104, + 39, + 112, + 149, + 244, + 0, + 58, + 148, + 106, + 186, + 193, + 36, + 107, + 140, + 96, + 185, + 5, + 135, + 206, + 220, + 30, + 177, + 124, + 230, + 71, + 236, + 70, + 141, + 84, + 35, + 245, + 70, + 187, + 88, + 197, + 80, + 81, + 230, + 32, + 110, + 249, + 221, + 75, + 104, + 117, + 55, + 222, + 182, + 198, + 10, + 75, + 175, + 242, + 51, + 232, + 168, + 92, + 249, + 219, + 58, + 76, + 6, + 31, + 210, + 24, + 87, + 174, + 62, + 96, + 138, + 61, + 63, + 207, + 147, + 140, + 216, + 109, + 246, + 215, + 2, + 180, + 60, + 103, + 226, + 20, + 16, + 19, + 32, + 193, + 244, + 118, + 84, + 217, + 137, + 37, + 75, + 178, + 220, + 163, + 90, + 105, + 50, + 129, + 105, + 209, + 240, + 198, + 177, + 92, + 196, + 108, + 178, + 172, + 212, + 44, + 229, + 210, + 88, + 238, + 237, + 65, + 159, + 193, + 139, + 117, + 108, + 180, + 26, + 141, + 152, + 205, + 165, + 249, + 80, + 110, + 55, + 45, + 160, + 204, + 41, + 248, + 124, + 6, + 144, + 205, + 176, + 240, + 109, + 20, + 146, + 103, + 222, + 116, + 79, + 216, + 38, + 165, + 133, + 209, + 187, + 151, + 156, + 183, + 120, + 0, + 187, + 25, + 134, + 239, + 129, + 73, + 147, + 97, + 169, + 208, + 86, + 174, + 36, + 115, + 23, + 203, + 75, + 219, + 32, + 35, + 61, + 204, + 189, + 234, + 234, + 70, + 149, + 110, + 193, + 14, + 157, + 116, + 234, + 152, + 44, + 186, + 165, + 253, + 45, + 107, + 213, + 141, + 62, + 89, + 136, + 187, + 160, + 16, + 193, + 152, + 214, + 170, + 16, + 52, + 112, + 115, + 201, + 89, + 112, + 165, + 147, + 86, + 249, + 212, + 159, + 104, + 7, + 55, + 150, + 67, + 69, + 89, + 218, + 111, + 51, + 15, + 25, + 57, + 34, + 95, + 210, + 222, + 26, + 125, + 221, + 196, + 97, + 12, + 79, + 169, + 75, + 31, + 68, + 12, + 161, + 65, + 161, + 164, + 107, + 132, + 4, + 104, + 88, + 40, + 233, + 84, + 63, + 192, + 96, + 145, + 220, + 193, + 86, + 103, + 202, + 29, + 77, + 130, + 49, + 52, + 141, + 81, + 60, + 56, + 43, + 174, + 184, + 46, + 93, + 82, + 14, + 214, + 251, + 198, + 182, + 22, + 179, + 217, + 206, + 47, + 12, + 191, + 196, + 103, + 103, + 240, + 164, + 57, + 168, + 161, + 181, + 196, + 140, + 237, + 242, + 79, + 174, + 228, + 54, + 61, + 54, + 73, + 85, + 93, + 92, + 253, + 130, + 154, + 74, + 252, + 132, + 250, + 210, + 52, + 153, + 141, + 84, + 0, + 92, + 150, + 70, + 116, + 157, + 167, + 2, + 208, + 200, + 123, + 209, + 146, + 80, + 81, + 65, + 30, + 219, + 70, + 101, + 213, + 253, + 223, + 141, + 117, + 188, + 167, + 165, + 70, + 234, + 238, + 27, + 33, + 149, + 121, + 171, + 237, + 27, + 79, + 102, + 153, + 183, + 218, + 62, + 77, + 51, + 122, + 156, + 110, + 208, + 120, + 99, + 177, + 174, + 184, + 64, + 151, + 164, + 137, + 5, + 135, + 197, + 210, + 45, + 180, + 217, + 82, + 222, + 246, + 143, + 207, + 14, + 252, + 110, + 181, + 157, + 133, + 64, + 7, + 215, + 198, + 21, + 27, + 35, + 38, + 117, + 220, + 200, + 168, + 41, + 139, + 226, + 227, + 196, + 103, + 6, + 166, + 157, + 53, + 102, + 0, + 26, + 131, + 44, + 93, + 201, + 79, + 44, + 124, + 186, + 0, + 33, + 35, + 5, + 28, + 57, + 234, + 125, + 234, + 57, + 53, + 129, + 148, + 242, + 99, + 171, + 54, + 120, + 219, + 85, + 153, + 157, + 93, + 173, + 46, + 192, + 181, + 210, + 162, + 254, + 20, + 104, + 16, + 32, + 167, + 188, + 78, + 218, + 141, + 117, + 169, + 201, + 56, + 189, + 239, + 167, + 45, + 9, + 203, + 141, + 70, + 188, + 37, + 193, + 32, + 120, + 236, + 243, + 86, + 232, + 109, + 206, + 232, + 141, + 118, + 247, + 95, + 140, + 209, + 251, + 236, + 238, + 5, + 53, + 140, + 134, + 182, + 48, + 15, + 39, + 6, + 148, + 40, + 80, + 118, + 48, + 15, + 105, + 194, + 60, + 202, + 130, + 241, + 9, + 235, + 232, + 196, + 38, + 203, + 165, + 209, + 20, + 253, + 46, + 255, + 224, + 186, + 66, + 168, + 236, + 38, + 47, + 85, + 169, + 23, + 27, + 142, + 125, + 118, + 90, + 217, + 237, + 28, + 41, + 233, + 151, + 130, + 174, + 53, + 27, + 167, + 249, + 107, + 130, + 57, + 21, + 222, + 205, + 205, + 61, + 46, + 33, + 248, + 210, + 245, + 36, + 147, + 116, + 151, + 40, + 51, + 199, + 88, + 60, + 27, + 129, + 135, + 239, + 127, + 112, + 182, + 73, + 147, + 14, + 24, + 58, + 165, + 81, + 159, + 16, + 4, + 27, + 103, + 148, + 220, + 115, + 244, + 183, + 67, + 238, + 228, + 117, + 196, + 242, + 153, + 8, + 242, + 251, + 31, + 28, + 106, + 98, + 87, + 144, + 80, + 27, + 137, + 196, + 116, + 203, + 16, + 151, + 116, + 66, + 250, + 81, + 202, + 37, + 142, + 228, + 178, + 124, + 164, + 113, + 106, + 80, + 24, + 201, + 101, + 35, + 189, + 77, + 175, + 144, + 78, + 79, + 9, + 115, + 39, + 224, + 135, + 118, + 38, + 181, + 241, + 136, + 24, + 220, + 34, + 169, + 237, + 135, + 183, + 94, + 223, + 247, + 219, + 135, + 150, + 87, + 107, + 129, + 5, + 61, + 188, + 145, + 43, + 18, + 128, + 111, + 222, + 4, + 255, + 248, + 251, + 118, + 0, + 250, + 12, + 242, + 116, + 199, + 63, + 7, + 125, + 198, + 92, + 249, + 0, + 252, + 74, + 185, + 81, + 98, + 98, + 65, + 163, + 58, + 134, + 233, + 46, + 41, + 1, + 126, + 132, + 9, + 146, + 6, + 59, + 117, + 82, + 39, + 7, + 132, + 102, + 8, + 71, + 242, + 224, + 90, + 219, + 93, + 135, + 85, + 217, + 251, + 235, + 209, + 87, + 211, + 5, + 74, + 220, + 168, + 55, + 85, + 19, + 208, + 169, + 249, + 174, + 189, + 189, + 24, + 230, + 110, + 240, + 104, + 241, + 23, + 14, + 103, + 145, + 11, + 97, + 141, + 78, + 201, + 186, + 174, + 232, + 181, + 52, + 181, + 251, + 47, + 45, + 220, + 74, + 129, + 106, + 245, + 246, + 238, + 222, + 157, + 74, + 106, + 88, + 99, + 185, + 247, + 171, + 246, + 158, + 129, + 87, + 110, + 146, + 173, + 207, + 229, + 102, + 57, + 109, + 121, + 52, + 216, + 185, + 233, + 142, + 243, + 8, + 13, + 201, + 171, + 51, + 98, + 11, + 251, + 238, + 231, + 36, + 170, + 51, + 150, + 73, + 4, + 141, + 164, + 170, + 169, + 62, + 222, + 197, + 7, + 213, + 130, + 223, + 156, + 139, + 247, + 0, + 5, + 165, + 72, + 248, + 38, + 223, + 2, + 20, + 180, + 11, + 80, + 248, + 128, + 132, + 174, + 15, + 106, + 164, + 149, + 65, + 134, + 117, + 250, + 174, + 222, + 236, + 153, + 125, + 228, + 115, + 129, + 191, + 219, + 224, + 46, + 71, + 152, + 62, + 242, + 184, + 177, + 67, + 218, + 133, + 194, + 210, + 57, + 210, + 136, + 171, + 227, + 171, + 74, + 238, + 220, + 62, + 172, + 115, + 216, + 197, + 211, + 45, + 30, + 58, + 31, + 248, + 156, + 162, + 22, + 225, + 91, + 224, + 150, + 234, + 196, + 42, + 89, + 215, + 246, + 104, + 254, + 176, + 243, + 86, + 15, + 27, + 125, + 76, + 171, + 225, + 83, + 208, + 130, + 194, + 72, + 31, + 211, + 142, + 230, + 12, + 144, + 13, + 89, + 208, + 140, + 21, + 209, + 136, + 16, + 220, + 8, + 135, + 178, + 82, + 86, + 140, + 29, + 72, + 56, + 207, + 252, + 160, + 231, + 0, + 68, + 111, + 244, + 249, + 165, + 133, + 128, + 158, + 7, + 183, + 252, + 19, + 109, + 232, + 44, + 12, + 170, + 214, + 105, + 20, + 45, + 3, + 140, + 60, + 53, + 138, + 110, + 70, + 70, + 111, + 94, + 204, + 138, + 157, + 208, + 144, + 113, + 140, + 91, + 243, + 38, + 227, + 140, + 18, + 220, + 37, + 209, + 224, + 137, + 96, + 164, + 141, + 84, + 39, + 158, + 10, + 86, + 68, + 235, + 62, + 14, + 177, + 30, + 6, + 150, + 165, + 182, + 229, + 140, + 38, + 17, + 148, + 5, + 231, + 84, + 39, + 114, + 42, + 41, + 143, + 113, + 181, + 166, + 78, + 210, + 135, + 115, + 44, + 138, + 113, + 245, + 104, + 116, + 32, + 145, + 168, + 100, + 103, + 106, + 8, + 165, + 191, + 84, + 56, + 197, + 46, + 195, + 233, + 144, + 29, + 20, + 21, + 217, + 26, + 157, + 64, + 81, + 4, + 102, + 140, + 153, + 78, + 93, + 235, + 206, + 125, + 158, + 193, + 101, + 219, + 194, + 167, + 5, + 130, + 50, + 58, + 69, + 69, + 65, + 135, + 179, + 65, + 63, + 76, + 85, + 112, + 75, + 160, + 195, + 78, + 161, + 148, + 70, + 192, + 134, + 231, + 218, + 139, + 109, + 237, + 80, + 189, + 129, + 156, + 41, + 123, + 216, + 192, + 88, + 83, + 69, + 223, + 225, + 213, + 242, + 2, + 91, + 35, + 21, + 166, + 127, + 204, + 19, + 12, + 172, + 139, + 121, + 52, + 38, + 39, + 134, + 45, + 54, + 175, + 153, + 26, + 72, + 63, + 86, + 105, + 87, + 66, + 247, + 122, + 39, + 30, + 55, + 121, + 211, + 104, + 77, + 73, + 191, + 201, + 155, + 92, + 143, + 201, + 102, + 87, + 152, + 56, + 215, + 128, + 251, + 196, + 42, + 234, + 72, + 248, + 116, + 83, + 142, + 180, + 10, + 159, + 216, + 83, + 215, + 235, + 194, + 201, + 123, + 31, + 251, + 171, + 72, + 64, + 103, + 4, + 166, + 176, + 113, + 147, + 57, + 26, + 111, + 66, + 216, + 220, + 18, + 166, + 19, + 252, + 74, + 42, + 245, + 49, + 216, + 249, + 64, + 132, + 49, + 86, + 35, + 58, + 140, + 9, + 98, + 247, + 113, + 142, + 33, + 219, + 147, + 42, + 80, + 180, + 21, + 33, + 156, + 175, + 129, + 124, + 129, + 214, + 253, + 127, + 235, + 110, + 163, + 95, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 53, + 53, + 48, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 235, + 142, + 100, + 199, + 145, + 222, + 127, + 62, + 197, + 188, + 128, + 66, + 25, + 215, + 204, + 4, + 4, + 1, + 228, + 144, + 92, + 248, + 199, + 2, + 182, + 193, + 55, + 208, + 122, + 23, + 48, + 160, + 31, + 94, + 191, + 63, + 96, + 68, + 53, + 119, + 167, + 138, + 19, + 209, + 117, + 50, + 38, + 186, + 123, + 100, + 172, + 36, + 128, + 98, + 87, + 119, + 85, + 157, + 60, + 39, + 47, + 241, + 197, + 119, + 193, + 79, + 227, + 211, + 248, + 244, + 39, + 252, + 52, + 62, + 45, + 161, + 79, + 127, + 251, + 251, + 15, + 255, + 231, + 7, + 152, + 122, + 251, + 233, + 127, + 252, + 243, + 111, + 127, + 255, + 1, + 63, + 249, + 127, + 255, + 231, + 63, + 221, + 254, + 129, + 159, + 254, + 253, + 223, + 126, + 248, + 243, + 63, + 241, + 167, + 127, + 251, + 191, + 63, + 248, + 235, + 115, + 203, + 39, + 68, + 226, + 79, + 255, + 254, + 191, + 126, + 248, + 215, + 31, + 254, + 199, + 31, + 222, + 97, + 146, + 255, + 239, + 111, + 127, + 191, + 253, + 234, + 240, + 247, + 120, + 249, + 63, + 95, + 222, + 227, + 207, + 255, + 253, + 211, + 95, + 254, + 242, + 231, + 127, + 254, + 252, + 223, + 126, + 254, + 52, + 62, + 253, + 245, + 175, + 63, + 253, + 252, + 249, + 135, + 159, + 126, + 251, + 225, + 207, + 191, + 202, + 39, + 20, + 48, + 255, + 207, + 252, + 244, + 219, + 191, + 254, + 128, + 95, + 190, + 42, + 200, + 220, + 11, + 39, + 239, + 79, + 191, + 249, + 251, + 254, + 9, + 25, + 104, + 78, + 22, + 94, + 159, + 126, + 251, + 151, + 79, + 127, + 25, + 67, + 127, + 252, + 235, + 167, + 223, + 254, + 247, + 15, + 56, + 64, + 151, + 208, + 20, + 254, + 52, + 126, + 127, + 69, + 62, + 223, + 94, + 97, + 32, + 53, + 148, + 253, + 229, + 5, + 157, + 183, + 23, + 4, + 198, + 196, + 61, + 117, + 126, + 249, + 139, + 159, + 110, + 47, + 252, + 242, + 219, + 209, + 183, + 34, + 131, + 97, + 172, + 99, + 6, + 223, + 110, + 112, + 229, + 29, + 121, + 0, + 178, + 202, + 226, + 232, + 122, + 159, + 124, + 249, + 5, + 168, + 136, + 99, + 174, + 47, + 151, + 75, + 217, + 11, + 118, + 123, + 97, + 2, + 211, + 66, + 210, + 47, + 239, + 180, + 42, + 95, + 218, + 20, + 246, + 90, + 187, + 113, + 24, + 230, + 128, + 97, + 99, + 133, + 195, + 32, + 63, + 102, + 23, + 181, + 146, + 23, + 68, + 178, + 191, + 208, + 223, + 71, + 116, + 173, + 97, + 162, + 119, + 127, + 49, + 15, + 7, + 14, + 177, + 114, + 153, + 136, + 11, + 182, + 216, + 176, + 182, + 129, + 67, + 98, + 24, + 184, + 6, + 71, + 111, + 201, + 255, + 113, + 85, + 91, + 201, + 8, + 245, + 249, + 3, + 244, + 251, + 243, + 16, + 140, + 195, + 231, + 210, + 183, + 83, + 5, + 27, + 99, + 239, + 213, + 119, + 193, + 186, + 193, + 38, + 237, + 41, + 111, + 60, + 99, + 210, + 135, + 43, + 123, + 28, + 243, + 207, + 152, + 165, + 181, + 102, + 44, + 208, + 73, + 210, + 247, + 172, + 16, + 18, + 152, + 136, + 244, + 140, + 92, + 62, + 201, + 106, + 151, + 203, + 19, + 198, + 30, + 134, + 125, + 151, + 43, + 8, + 104, + 164, + 235, + 108, + 43, + 185, + 187, + 172, + 177, + 239, + 102, + 252, + 239, + 43, + 193, + 241, + 142, + 49, + 129, + 200, + 26, + 151, + 74, + 154, + 8, + 180, + 87, + 248, + 142, + 233, + 151, + 151, + 95, + 239, + 54, + 72, + 19, + 251, + 227, + 11, + 167, + 223, + 97, + 41, + 108, + 223, + 105, + 251, + 174, + 106, + 15, + 24, + 204, + 162, + 209, + 205, + 186, + 159, + 163, + 116, + 183, + 185, + 239, + 87, + 55, + 181, + 224, + 22, + 106, + 105, + 139, + 198, + 5, + 42, + 34, + 220, + 183, + 233, + 19, + 129, + 161, + 241, + 126, + 54, + 17, + 109, + 72, + 60, + 17, + 239, + 70, + 225, + 97, + 201, + 190, + 31, + 157, + 251, + 189, + 14, + 149, + 158, + 254, + 65, + 109, + 75, + 99, + 27, + 48, + 182, + 112, + 227, + 232, + 152, + 0, + 154, + 49, + 5, + 239, + 72, + 47, + 15, + 248, + 134, + 57, + 213, + 134, + 124, + 185, + 40, + 197, + 236, + 201, + 47, + 173, + 70, + 188, + 7, + 144, + 8, + 74, + 223, + 85, + 109, + 1, + 198, + 112, + 121, + 235, + 187, + 229, + 165, + 59, + 40, + 68, + 176, + 58, + 47, + 85, + 200, + 96, + 35, + 199, + 143, + 247, + 231, + 120, + 206, + 166, + 115, + 188, + 116, + 64, + 21, + 29, + 160, + 194, + 125, + 139, + 174, + 168, + 128, + 161, + 90, + 120, + 73, + 217, + 217, + 250, + 167, + 108, + 25, + 202, + 174, + 245, + 97, + 83, + 90, + 219, + 158, + 175, + 104, + 181, + 167, + 91, + 135, + 2, + 50, + 105, + 223, + 94, + 171, + 99, + 3, + 141, + 120, + 245, + 78, + 87, + 227, + 218, + 39, + 145, + 130, + 14, + 155, + 141, + 223, + 157, + 54, + 232, + 92, + 246, + 108, + 67, + 13, + 102, + 218, + 203, + 69, + 25, + 125, + 235, + 253, + 80, + 129, + 193, + 216, + 120, + 74, + 86, + 93, + 128, + 35, + 154, + 210, + 164, + 119, + 43, + 40, + 203, + 151, + 99, + 219, + 253, + 210, + 170, + 147, + 191, + 156, + 0, + 121, + 188, + 60, + 150, + 4, + 52, + 214, + 26, + 248, + 173, + 59, + 134, + 110, + 134, + 205, + 186, + 251, + 238, + 224, + 248, + 244, + 39, + 38, + 175, + 10, + 216, + 248, + 13, + 74, + 159, + 180, + 104, + 44, + 173, + 77, + 188, + 128, + 150, + 221, + 46, + 255, + 143, + 95, + 250, + 203, + 213, + 7, + 120, + 11, + 14, + 4, + 159, + 63, + 180, + 95, + 197, + 93, + 126, + 249, + 231, + 207, + 247, + 216, + 11, + 190, + 61, + 246, + 146, + 214, + 1, + 246, + 15, + 12, + 177, + 228, + 55, + 61, + 133, + 154, + 56, + 27, + 135, + 236, + 133, + 252, + 173, + 240, + 245, + 218, + 243, + 20, + 92, + 89, + 190, + 54, + 47, + 238, + 219, + 225, + 23, + 1, + 77, + 91, + 225, + 97, + 38, + 45, + 168, + 75, + 139, + 197, + 246, + 34, + 120, + 15, + 210, + 62, + 0, + 97, + 16, + 152, + 226, + 24, + 103, + 223, + 254, + 66, + 173, + 17, + 173, + 26, + 167, + 95, + 142, + 189, + 102, + 197, + 189, + 250, + 30, + 127, + 100, + 5, + 98, + 222, + 214, + 3, + 49, + 230, + 23, + 124, + 191, + 77, + 204, + 57, + 46, + 131, + 143, + 193, + 103, + 252, + 154, + 77, + 140, + 227, + 187, + 80, + 91, + 131, + 198, + 6, + 214, + 109, + 157, + 208, + 11, + 131, + 48, + 90, + 52, + 5, + 211, + 171, + 77, + 215, + 7, + 249, + 165, + 19, + 205, + 37, + 86, + 16, + 98, + 108, + 132, + 40, + 120, + 131, + 108, + 197, + 104, + 210, + 138, + 158, + 226, + 73, + 15, + 127, + 145, + 84, + 65, + 29, + 72, + 205, + 220, + 32, + 52, + 27, + 71, + 97, + 49, + 200, + 222, + 97, + 205, + 240, + 112, + 107, + 239, + 241, + 152, + 218, + 42, + 73, + 91, + 96, + 15, + 219, + 212, + 136, + 199, + 44, + 216, + 115, + 133, + 135, + 180, + 135, + 69, + 99, + 227, + 243, + 130, + 167, + 120, + 80, + 66, + 159, + 133, + 60, + 250, + 64, + 38, + 38, + 6, + 33, + 29, + 207, + 17, + 65, + 221, + 207, + 171, + 181, + 228, + 231, + 247, + 173, + 132, + 232, + 177, + 108, + 106, + 37, + 176, + 109, + 88, + 70, + 179, + 113, + 116, + 166, + 159, + 203, + 101, + 70, + 179, + 246, + 225, + 56, + 205, + 54, + 47, + 220, + 243, + 20, + 71, + 45, + 149, + 72, + 50, + 24, + 200, + 80, + 27, + 75, + 250, + 49, + 129, + 153, + 53, + 90, + 228, + 159, + 29, + 249, + 95, + 191, + 220, + 135, + 167, + 225, + 9, + 240, + 250, + 242, + 2, + 203, + 55, + 54, + 90, + 68, + 8, + 88, + 227, + 19, + 89, + 113, + 120, + 196, + 64, + 104, + 133, + 83, + 37, + 221, + 233, + 211, + 81, + 152, + 173, + 43, + 131, + 44, + 246, + 94, + 65, + 248, + 229, + 70, + 237, + 106, + 215, + 244, + 94, + 65, + 120, + 236, + 122, + 229, + 114, + 75, + 223, + 94, + 199, + 4, + 165, + 206, + 157, + 70, + 17, + 65, + 183, + 204, + 176, + 123, + 186, + 51, + 112, + 49, + 1, + 17, + 211, + 159, + 151, + 58, + 5, + 234, + 167, + 207, + 86, + 164, + 137, + 55, + 208, + 158, + 97, + 11, + 245, + 161, + 53, + 151, + 44, + 213, + 247, + 104, + 205, + 147, + 37, + 252, + 244, + 155, + 77, + 132, + 61, + 58, + 155, + 34, + 58, + 21, + 246, + 76, + 154, + 34, + 25, + 104, + 252, + 251, + 69, + 157, + 126, + 212, + 90, + 128, + 219, + 148, + 223, + 18, + 148, + 57, + 47, + 4, + 138, + 7, + 90, + 48, + 30, + 44, + 175, + 34, + 44, + 103, + 71, + 67, + 152, + 131, + 24, + 45, + 184, + 164, + 246, + 190, + 233, + 215, + 111, + 85, + 132, + 217, + 12, + 200, + 33, + 217, + 125, + 138, + 51, + 57, + 94, + 178, + 116, + 232, + 17, + 206, + 68, + 77, + 56, + 19, + 191, + 60, + 189, + 136, + 32, + 99, + 224, + 24, + 23, + 6, + 116, + 212, + 90, + 152, + 12, + 70, + 140, + 171, + 15, + 20, + 161, + 9, + 182, + 213, + 31, + 146, + 119, + 232, + 174, + 127, + 253, + 86, + 227, + 101, + 241, + 35, + 240, + 175, + 36, + 248, + 173, + 229, + 144, + 17, + 144, + 77, + 221, + 125, + 11, + 130, + 25, + 48, + 239, + 184, + 135, + 146, + 115, + 124, + 174, + 156, + 196, + 62, + 100, + 126, + 225, + 96, + 88, + 56, + 27, + 151, + 123, + 28, + 19, + 214, + 218, + 98, + 225, + 9, + 92, + 83, + 0, + 246, + 120, + 36, + 114, + 196, + 33, + 5, + 94, + 94, + 78, + 165, + 6, + 196, + 91, + 231, + 162, + 111, + 29, + 59, + 245, + 3, + 203, + 94, + 163, + 147, + 23, + 164, + 96, + 19, + 103, + 8, + 243, + 242, + 181, + 19, + 107, + 0, + 87, + 118, + 45, + 55, + 184, + 22, + 144, + 198, + 197, + 85, + 241, + 130, + 55, + 1, + 147, + 205, + 168, + 230, + 63, + 231, + 67, + 54, + 175, + 30, + 142, + 160, + 205, + 133, + 216, + 200, + 230, + 65, + 134, + 149, + 160, + 1, + 249, + 234, + 65, + 167, + 47, + 212, + 142, + 126, + 228, + 197, + 146, + 78, + 109, + 196, + 95, + 188, + 131, + 77, + 91, + 143, + 122, + 22, + 165, + 147, + 31, + 25, + 193, + 84, + 10, + 235, + 224, + 226, + 119, + 55, + 131, + 69, + 162, + 207, + 224, + 191, + 134, + 74, + 208, + 49, + 54, + 36, + 107, + 69, + 237, + 38, + 56, + 254, + 126, + 84, + 75, + 61, + 236, + 82, + 211, + 46, + 96, + 148, + 233, + 11, + 69, + 52, + 8, + 13, + 148, + 180, + 17, + 30, + 97, + 26, + 160, + 123, + 134, + 5, + 1, + 99, + 70, + 84, + 120, + 168, + 180, + 30, + 80, + 159, + 31, + 191, + 116, + 151, + 7, + 137, + 124, + 227, + 114, + 202, + 202, + 128, + 115, + 55, + 158, + 78, + 88, + 39, + 144, + 226, + 10, + 25, + 30, + 57, + 49, + 35, + 229, + 120, + 148, + 96, + 28, + 94, + 12, + 140, + 218, + 200, + 58, + 90, + 19, + 120, + 249, + 191, + 4, + 79, + 243, + 188, + 80, + 45, + 63, + 92, + 83, + 198, + 177, + 122, + 216, + 60, + 244, + 14, + 29, + 44, + 98, + 125, + 184, + 96, + 226, + 88, + 125, + 171, + 169, + 83, + 156, + 230, + 162, + 185, + 62, + 142, + 145, + 228, + 59, + 4, + 114, + 216, + 18, + 169, + 82, + 146, + 6, + 200, + 210, + 112, + 139, + 125, + 2, + 132, + 156, + 126, + 146, + 25, + 204, + 53, + 67, + 66, + 94, + 241, + 187, + 207, + 1, + 75, + 55, + 135, + 223, + 253, + 10, + 72, + 144, + 33, + 172, + 119, + 64, + 106, + 190, + 244, + 38, + 253, + 164, + 188, + 212, + 120, + 2, + 101, + 167, + 216, + 218, + 49, + 180, + 133, + 254, + 17, + 225, + 214, + 83, + 5, + 203, + 28, + 125, + 227, + 152, + 182, + 86, + 123, + 238, + 191, + 6, + 209, + 74, + 141, + 110, + 53, + 134, + 201, + 98, + 235, + 45, + 241, + 166, + 135, + 253, + 250, + 26, + 187, + 227, + 9, + 18, + 149, + 30, + 24, + 79, + 206, + 158, + 163, + 118, + 43, + 97, + 154, + 46, + 226, + 83, + 56, + 71, + 183, + 15, + 175, + 174, + 117, + 2, + 231, + 240, + 127, + 73, + 182, + 106, + 124, + 162, + 43, + 147, + 234, + 146, + 204, + 164, + 56, + 173, + 22, + 152, + 152, + 132, + 19, + 190, + 136, + 218, + 16, + 76, + 92, + 242, + 156, + 152, + 255, + 240, + 229, + 83, + 182, + 88, + 173, + 191, + 189, + 54, + 216, + 144, + 205, + 125, + 187, + 231, + 102, + 176, + 105, + 97, + 123, + 187, + 176, + 106, + 164, + 68, + 141, + 244, + 238, + 166, + 12, + 175, + 83, + 33, + 26, + 149, + 182, + 116, + 20, + 133, + 133, + 139, + 26, + 41, + 210, + 40, + 27, + 214, + 30, + 132, + 252, + 140, + 117, + 250, + 192, + 219, + 79, + 71, + 168, + 116, + 116, + 196, + 137, + 176, + 86, + 120, + 136, + 47, + 94, + 149, + 183, + 96, + 92, + 153, + 24, + 93, + 212, + 231, + 215, + 1, + 197, + 243, + 23, + 10, + 16, + 16, + 201, + 10, + 143, + 181, + 85, + 80, + 201, + 128, + 105, + 76, + 203, + 47, + 247, + 24, + 9, + 26, + 192, + 155, + 26, + 15, + 53, + 52, + 4, + 196, + 36, + 100, + 128, + 23, + 118, + 227, + 20, + 231, + 75, + 17, + 177, + 162, + 190, + 77, + 97, + 174, + 213, + 88, + 0, + 56, + 203, + 106, + 217, + 192, + 16, + 0, + 188, + 212, + 87, + 184, + 174, + 165, + 42, + 104, + 212, + 76, + 58, + 217, + 26, + 52, + 21, + 38, + 198, + 108, + 141, + 75, + 36, + 253, + 253, + 205, + 197, + 57, + 237, + 13, + 254, + 169, + 157, + 204, + 100, + 6, + 65, + 93, + 246, + 108, + 23, + 186, + 35, + 89, + 229, + 178, + 174, + 140, + 82, + 246, + 68, + 45, + 148, + 138, + 74, + 222, + 156, + 193, + 164, + 8, + 50, + 87, + 163, + 24, + 154, + 85, + 65, + 117, + 12, + 253, + 72, + 229, + 216, + 66, + 48, + 154, + 157, + 79, + 201, + 82, + 176, + 189, + 195, + 243, + 230, + 195, + 22, + 116, + 95, + 129, + 230, + 144, + 76, + 169, + 250, + 144, + 33, + 48, + 231, + 10, + 155, + 13, + 85, + 250, + 213, + 130, + 165, + 35, + 92, + 197, + 31, + 214, + 228, + 75, + 200, + 84, + 13, + 103, + 162, + 13, + 68, + 210, + 73, + 35, + 98, + 6, + 218, + 22, + 190, + 227, + 37, + 114, + 202, + 195, + 243, + 247, + 57, + 97, + 136, + 37, + 163, + 83, + 19, + 7, + 136, + 109, + 64, + 157, + 161, + 40, + 188, + 10, + 238, + 48, + 16, + 237, + 80, + 47, + 123, + 9, + 92, + 104, + 184, + 179, + 126, + 188, + 31, + 220, + 40, + 38, + 151, + 61, + 193, + 102, + 76, + 22, + 124, + 47, + 197, + 110, + 1, + 78, + 26, + 171, + 19, + 77, + 118, + 56, + 9, + 53, + 172, + 194, + 82, + 80, + 173, + 180, + 213, + 170, + 14, + 48, + 166, + 198, + 110, + 169, + 75, + 236, + 230, + 136, + 15, + 141, + 143, + 4, + 63, + 25, + 119, + 123, + 67, + 86, + 206, + 127, + 11, + 70, + 249, + 176, + 55, + 103, + 29, + 165, + 218, + 150, + 106, + 3, + 1, + 105, + 236, + 249, + 150, + 168, + 26, + 253, + 116, + 204, + 68, + 40, + 30, + 184, + 190, + 72, + 193, + 206, + 32, + 175, + 181, + 128, + 167, + 31, + 140, + 15, + 16, + 47, + 249, + 56, + 161, + 220, + 179, + 110, + 253, + 119, + 173, + 160, + 251, + 253, + 170, + 234, + 34, + 200, + 182, + 22, + 15, + 176, + 46, + 13, + 53, + 59, + 175, + 48, + 120, + 143, + 37, + 120, + 207, + 0, + 139, + 128, + 227, + 149, + 253, + 69, + 109, + 142, + 239, + 1, + 226, + 21, + 122, + 223, + 208, + 109, + 1, + 241, + 10, + 125, + 182, + 21, + 253, + 174, + 218, + 243, + 10, + 157, + 123, + 85, + 123, + 108, + 201, + 209, + 234, + 156, + 69, + 215, + 90, + 238, + 34, + 11, + 8, + 46, + 236, + 68, + 211, + 120, + 129, + 236, + 129, + 113, + 117, + 95, + 154, + 115, + 40, + 230, + 69, + 57, + 245, + 157, + 225, + 81, + 135, + 23, + 229, + 184, + 237, + 99, + 41, + 125, + 199, + 92, + 44, + 1, + 196, + 221, + 232, + 120, + 225, + 59, + 14, + 238, + 228, + 102, + 165, + 224, + 112, + 134, + 85, + 157, + 143, + 195, + 123, + 1, + 142, + 68, + 11, + 16, + 173, + 147, + 231, + 196, + 4, + 184, + 86, + 200, + 162, + 76, + 241, + 213, + 20, + 154, + 123, + 70, + 108, + 60, + 166, + 117, + 41, + 232, + 28, + 141, + 187, + 20, + 201, + 6, + 203, + 100, + 53, + 201, + 161, + 50, + 175, + 47, + 82, + 196, + 39, + 59, + 158, + 254, + 82, + 131, + 222, + 92, + 246, + 165, + 220, + 87, + 38, + 59, + 107, + 107, + 208, + 12, + 5, + 233, + 175, + 112, + 109, + 178, + 122, + 248, + 117, + 57, + 226, + 241, + 89, + 103, + 55, + 107, + 139, + 24, + 249, + 166, + 45, + 146, + 238, + 38, + 124, + 3, + 109, + 76, + 6, + 44, + 211, + 70, + 233, + 47, + 139, + 192, + 230, + 120, + 231, + 231, + 151, + 139, + 93, + 32, + 180, + 201, + 198, + 21, + 92, + 167, + 38, + 28, + 181, + 13, + 102, + 43, + 52, + 126, + 171, + 75, + 35, + 167, + 140, + 16, + 207, + 206, + 217, + 33, + 25, + 78, + 83, + 116, + 164, + 242, + 45, + 134, + 59, + 79, + 204, + 195, + 41, + 254, + 250, + 46, + 154, + 55, + 39, + 96, + 25, + 105, + 99, + 23, + 200, + 77, + 166, + 108, + 207, + 231, + 244, + 231, + 175, + 145, + 179, + 99, + 80, + 239, + 230, + 165, + 211, + 232, + 206, + 227, + 106, + 77, + 156, + 182, + 229, + 4, + 38, + 60, + 181, + 115, + 107, + 54, + 9, + 155, + 62, + 167, + 40, + 132, + 214, + 171, + 146, + 203, + 27, + 3, + 40, + 180, + 225, + 200, + 69, + 139, + 233, + 150, + 151, + 12, + 91, + 78, + 208, + 204, + 118, + 141, + 39, + 202, + 252, + 175, + 45, + 159, + 74, + 176, + 171, + 242, + 128, + 189, + 59, + 137, + 26, + 14, + 206, + 13, + 179, + 80, + 60, + 146, + 35, + 92, + 169, + 98, + 247, + 130, + 169, + 217, + 195, + 239, + 31, + 15, + 91, + 171, + 11, + 161, + 110, + 1, + 101, + 123, + 82, + 112, + 6, + 88, + 17, + 13, + 130, + 141, + 198, + 71, + 236, + 40, + 237, + 18, + 187, + 205, + 255, + 28, + 100, + 187, + 105, + 47, + 159, + 118, + 171, + 115, + 243, + 217, + 115, + 88, + 162, + 106, + 132, + 117, + 44, + 98, + 133, + 193, + 138, + 212, + 215, + 230, + 51, + 4, + 28, + 19, + 99, + 3, + 159, + 28, + 126, + 203, + 46, + 235, + 189, + 170, + 137, + 229, + 141, + 22, + 218, + 212, + 87, + 118, + 110, + 111, + 180, + 200, + 218, + 71, + 174, + 132, + 217, + 207, + 207, + 61, + 179, + 107, + 88, + 9, + 109, + 24, + 38, + 163, + 81, + 26, + 132, + 204, + 142, + 79, + 238, + 176, + 143, + 174, + 213, + 231, + 255, + 24, + 11, + 97, + 80, + 28, + 216, + 73, + 198, + 209, + 9, + 186, + 8, + 67, + 13, + 70, + 90, + 45, + 86, + 221, + 198, + 10, + 32, + 138, + 216, + 178, + 94, + 16, + 69, + 197, + 247, + 136, + 19, + 16, + 101, + 215, + 104, + 78, + 10, + 203, + 86, + 232, + 33, + 94, + 37, + 78, + 109, + 216, + 50, + 226, + 227, + 232, + 177, + 198, + 48, + 43, + 11, + 83, + 243, + 164, + 103, + 122, + 182, + 182, + 150, + 140, + 42, + 176, + 118, + 250, + 57, + 144, + 186, + 237, + 82, + 72, + 47, + 205, + 150, + 170, + 116, + 69, + 202, + 235, + 72, + 235, + 233, + 227, + 213, + 196, + 144, + 14, + 41, + 108, + 140, + 151, + 167, + 58, + 164, + 176, + 55, + 134, + 10, + 25, + 125, + 253, + 187, + 119, + 145, + 119, + 152, + 221, + 97, + 119, + 52, + 10, + 176, + 120, + 130, + 207, + 237, + 253, + 204, + 21, + 96, + 44, + 125, + 222, + 99, + 47, + 202, + 202, + 12, + 129, + 120, + 97, + 163, + 169, + 146, + 41, + 48, + 14, + 12, + 219, + 22, + 210, + 250, + 221, + 231, + 4, + 101, + 110, + 60, + 103, + 221, + 168, + 76, + 67, + 195, + 134, + 193, + 57, + 233, + 33, + 35, + 233, + 21, + 237, + 160, + 12, + 134, + 98, + 168, + 107, + 43, + 150, + 163, + 56, + 0, + 137, + 67, + 114, + 195, + 43, + 152, + 100, + 111, + 90, + 128, + 176, + 1, + 46, + 107, + 228, + 47, + 139, + 12, + 32, + 93, + 75, + 255, + 191, + 112, + 185, + 154, + 10, + 180, + 168, + 211, + 170, + 124, + 186, + 199, + 156, + 132, + 117, + 227, + 55, + 157, + 160, + 175, + 32, + 55, + 247, + 166, + 10, + 70, + 223, + 202, + 253, + 80, + 156, + 110, + 151, + 215, + 120, + 32, + 83, + 66, + 183, + 203, + 11, + 91, + 234, + 124, + 140, + 40, + 92, + 58, + 211, + 124, + 141, + 95, + 29, + 235, + 202, + 244, + 70, + 169, + 109, + 196, + 85, + 108, + 131, + 115, + 236, + 245, + 195, + 180, + 163, + 110, + 152, + 141, + 184, + 66, + 103, + 153, + 62, + 173, + 220, + 119, + 203, + 156, + 103, + 4, + 38, + 150, + 215, + 237, + 156, + 34, + 104, + 135, + 9, + 198, + 112, + 11, + 203, + 3, + 104, + 199, + 186, + 104, + 64, + 141, + 148, + 147, + 170, + 125, + 38, + 76, + 155, + 200, + 157, + 244, + 106, + 88, + 188, + 99, + 83, + 143, + 118, + 147, + 60, + 115, + 23, + 134, + 240, + 48, + 88, + 4, + 141, + 6, + 208, + 28, + 177, + 167, + 111, + 186, + 210, + 167, + 133, + 91, + 182, + 150, + 85, + 29, + 189, + 187, + 200, + 65, + 56, + 12, + 230, + 88, + 214, + 89, + 150, + 227, + 0, + 103, + 233, + 203, + 73, + 135, + 190, + 88, + 150, + 123, + 60, + 26, + 73, + 39, + 45, + 12, + 137, + 96, + 111, + 115, + 6, + 124, + 11, + 54, + 212, + 204, + 68, + 145, + 9, + 34, + 73, + 39, + 188, + 10, + 26, + 33, + 40, + 202, + 140, + 141, + 114, + 190, + 219, + 69, + 30, + 23, + 193, + 226, + 78, + 121, + 20, + 46, + 79, + 161, + 241, + 184, + 138, + 19, + 148, + 56, + 31, + 136, + 244, + 176, + 156, + 152, + 113, + 23, + 109, + 233, + 8, + 97, + 147, + 53, + 250, + 221, + 19, + 41, + 236, + 125, + 19, + 142, + 127, + 119, + 114, + 101, + 82, + 1, + 29, + 187, + 145, + 146, + 70, + 186, + 64, + 23, + 198, + 245, + 182, + 118, + 181, + 86, + 95, + 175, + 101, + 211, + 162, + 248, + 24, + 55, + 114, + 222, + 237, + 106, + 108, + 24, + 240, + 16, + 32, + 28, + 132, + 45, + 196, + 155, + 212, + 121, + 163, + 134, + 95, + 144, + 128, + 26, + 117, + 90, + 250, + 208, + 2, + 99, + 9, + 93, + 209, + 175, + 184, + 140, + 68, + 217, + 113, + 95, + 91, + 60, + 229, + 55, + 61, + 43, + 150, + 47, + 232, + 122, + 174, + 133, + 247, + 213, + 77, + 134, + 104, + 108, + 63, + 79, + 183, + 1, + 69, + 19, + 40, + 161, + 191, + 62, + 113, + 25, + 58, + 198, + 125, + 24, + 116, + 113, + 216, + 35, + 168, + 219, + 128, + 155, + 106, + 156, + 18, + 89, + 84, + 246, + 28, + 83, + 89, + 22, + 12, + 218, + 141, + 86, + 238, + 226, + 172, + 202, + 129, + 161, + 126, + 70, + 126, + 206, + 158, + 166, + 84, + 136, + 86, + 90, + 219, + 69, + 17, + 204, + 194, + 38, + 109, + 213, + 240, + 72, + 97, + 50, + 61, + 61, + 216, + 92, + 203, + 90, + 203, + 200, + 89, + 217, + 252, + 175, + 109, + 231, + 178, + 9, + 100, + 172, + 198, + 126, + 137, + 108, + 3, + 89, + 67, + 66, + 202, + 94, + 38, + 250, + 188, + 2, + 89, + 61, + 120, + 250, + 28, + 246, + 16, + 158, + 144, + 57, + 82, + 121, + 83, + 151, + 238, + 233, + 166, + 23, + 27, + 49, + 140, + 87, + 215, + 139, + 217, + 180, + 240, + 97, + 123, + 39, + 212, + 103, + 46, + 224, + 184, + 236, + 122, + 29, + 246, + 16, + 3, + 85, + 197, + 35, + 70, + 203, + 108, + 130, + 61, + 10, + 156, + 246, + 204, + 109, + 165, + 80, + 75, + 159, + 167, + 192, + 127, + 238, + 10, + 26, + 122, + 230, + 156, + 123, + 138, + 86, + 188, + 144, + 100, + 251, + 158, + 231, + 73, + 160, + 3, + 99, + 254, + 222, + 51, + 224, + 233, + 220, + 13, + 235, + 24, + 181, + 80, + 192, + 161, + 214, + 169, + 159, + 25, + 27, + 112, + 78, + 11, + 37, + 25, + 105, + 59, + 248, + 137, + 101, + 87, + 27, + 186, + 229, + 246, + 59, + 3, + 109, + 54, + 30, + 237, + 221, + 126, + 103, + 172, + 101, + 49, + 25, + 232, + 120, + 2, + 100, + 59, + 6, + 142, + 172, + 247, + 158, + 126, + 68, + 42, + 123, + 180, + 178, + 212, + 102, + 54, + 250, + 198, + 189, + 102, + 162, + 243, + 12, + 13, + 56, + 45, + 78, + 135, + 247, + 175, + 70, + 99, + 200, + 194, + 75, + 82, + 89, + 204, + 199, + 232, + 127, + 202, + 91, + 216, + 133, + 53, + 87, + 131, + 166, + 38, + 57, + 45, + 132, + 33, + 26, + 38, + 163, + 86, + 181, + 44, + 10, + 136, + 253, + 167, + 177, + 64, + 6, + 113, + 157, + 215, + 82, + 236, + 24, + 208, + 132, + 65, + 210, + 104, + 242, + 193, + 110, + 65, + 176, + 227, + 176, + 222, + 43, + 167, + 168, + 116, + 20, + 2, + 248, + 230, + 184, + 153, + 225, + 158, + 114, + 141, + 198, + 209, + 108, + 110, + 41, + 151, + 196, + 189, + 253, + 131, + 33, + 79, + 226, + 11, + 21, + 199, + 222, + 242, + 213, + 50, + 123, + 3, + 143, + 216, + 64, + 166, + 79, + 248, + 150, + 46, + 34, + 9, + 70, + 155, + 125, + 242, + 144, + 170, + 35, + 239, + 146, + 208, + 247, + 164, + 158, + 58, + 190, + 209, + 66, + 74, + 207, + 181, + 72, + 131, + 72, + 144, + 84, + 208, + 105, + 8, + 205, + 70, + 68, + 218, + 195, + 182, + 100, + 239, + 24, + 133, + 236, + 18, + 196, + 61, + 172, + 190, + 116, + 95, + 219, + 182, + 74, + 191, + 61, + 60, + 92, + 90, + 147, + 23, + 149, + 217, + 109, + 177, + 98, + 199, + 193, + 100, + 20, + 158, + 252, + 252, + 184, + 246, + 157, + 176, + 153, + 26, + 239, + 184, + 154, + 183, + 226, + 37, + 190, + 227, + 105, + 188, + 120, + 209, + 59, + 102, + 33, + 168, + 96, + 35, + 73, + 40, + 74, + 178, + 74, + 153, + 187, + 212, + 102, + 15, + 81, + 91, + 132, + 152, + 220, + 182, + 255, + 102, + 157, + 115, + 198, + 150, + 152, + 10, + 38, + 115, + 30, + 177, + 37, + 86, + 19, + 108, + 64, + 63, + 39, + 179, + 254, + 73, + 174, + 111, + 182, + 101, + 252, + 114, + 120, + 134, + 51, + 88, + 115, + 51, + 55, + 182, + 30, + 6, + 108, + 197, + 36, + 173, + 228, + 131, + 243, + 126, + 149, + 96, + 11, + 173, + 70, + 252, + 223, + 37, + 62, + 40, + 49, + 65, + 233, + 189, + 244, + 23, + 211, + 131, + 14, + 246, + 104, + 76, + 20, + 90, + 8, + 98, + 35, + 246, + 221, + 43, + 32, + 74, + 231, + 197, + 213, + 187, + 217, + 200, + 18, + 2, + 155, + 180, + 26, + 98, + 144, + 130, + 112, + 76, + 100, + 45, + 95, + 214, + 1, + 182, + 240, + 204, + 95, + 249, + 244, + 114, + 204, + 251, + 41, + 214, + 57, + 64, + 102, + 128, + 158, + 144, + 212, + 58, + 103, + 210, + 129, + 56, + 198, + 68, + 220, + 45, + 237, + 150, + 160, + 216, + 134, + 178, + 44, + 119, + 222, + 12, + 9, + 219, + 85, + 99, + 97, + 130, + 37, + 177, + 107, + 81, + 21, + 76, + 113, + 198, + 200, + 14, + 201, + 56, + 231, + 169, + 114, + 69, + 231, + 92, + 154, + 64, + 155, + 59, + 33, + 34, + 231, + 79, + 154, + 190, + 5, + 68, + 180, + 190, + 50, + 153, + 61, + 222, + 120, + 39, + 208, + 144, + 198, + 118, + 174, + 59, + 15, + 211, + 180, + 208, + 29, + 171, + 160, + 27, + 74, + 68, + 226, + 169, + 120, + 60, + 5, + 106, + 106, + 34, + 155, + 177, + 96, + 170, + 52, + 218, + 237, + 48, + 18, + 44, + 50, + 57, + 161, + 199, + 92, + 163, + 68, + 60, + 140, + 231, + 37, + 163, + 252, + 36, + 171, + 229, + 13, + 53, + 75, + 134, + 110, + 25, + 209, + 201, + 136, + 53, + 133, + 105, + 113, + 46, + 193, + 187, + 21, + 232, + 188, + 197, + 81, + 229, + 206, + 211, + 235, + 94, + 142, + 42, + 83, + 223, + 98, + 237, + 94, + 35, + 66, + 210, + 40, + 78, + 114, + 5, + 144, + 236, + 152, + 40, + 119, + 41, + 148, + 254, + 219, + 45, + 89, + 196, + 79, + 249, + 178, + 27, + 125, + 102, + 196, + 61, + 28, + 8, + 195, + 228, + 188, + 75, + 107, + 245, + 253, + 220, + 201, + 21, + 26, + 171, + 156, + 217, + 100, + 35, + 36, + 80, + 87, + 197, + 55, + 238, + 21, + 228, + 216, + 76, + 3, + 38, + 152, + 243, + 179, + 142, + 227, + 204, + 138, + 142, + 30, + 168, + 183, + 223, + 106, + 84, + 158, + 224, + 134, + 201, + 43, + 116, + 244, + 72, + 253, + 78, + 50, + 128, + 248, + 10, + 223, + 237, + 30, + 37, + 43, + 53, + 231, + 84, + 23, + 44, + 89, + 244, + 166, + 254, + 179, + 121, + 253, + 124, + 30, + 132, + 251, + 75, + 51, + 143, + 255, + 116, + 6, + 24, + 136, + 200, + 242, + 249, + 222, + 147, + 84, + 238, + 169, + 161, + 104, + 94, + 178, + 126, + 133, + 88, + 157, + 83, + 122, + 75, + 139, + 162, + 175, + 18, + 27, + 135, + 83, + 122, + 123, + 46, + 201, + 23, + 9, + 163, + 237, + 158, + 198, + 151, + 175, + 169, + 38, + 63, + 240, + 228, + 207, + 101, + 99, + 157, + 10, + 141, + 156, + 85, + 235, + 11, + 44, + 159, + 64, + 103, + 251, + 205, + 133, + 70, + 53, + 248, + 20, + 183, + 27, + 233, + 56, + 253, + 183, + 175, + 0, + 1, + 15, + 208, + 137, + 243, + 90, + 244, + 125, + 158, + 74, + 97, + 216, + 139, + 135, + 53, + 246, + 102, + 22, + 12, + 213, + 17, + 186, + 34, + 126, + 184, + 174, + 228, + 53, + 182, + 79, + 113, + 22, + 26, + 232, + 100, + 244, + 185, + 113, + 64, + 250, + 122, + 162, + 159, + 106, + 139, + 19, + 31, + 236, + 51, + 119, + 55, + 210, + 44, + 61, + 139, + 157, + 116, + 237, + 184, + 247, + 246, + 59, + 85, + 158, + 97, + 185, + 224, + 126, + 210, + 243, + 27, + 92, + 156, + 140, + 236, + 195, + 142, + 157, + 231, + 102, + 148, + 1, + 38, + 236, + 231, + 193, + 19, + 148, + 163, + 217, + 4, + 200, + 208, + 203, + 80, + 106, + 156, + 143, + 104, + 10, + 203, + 101, + 46, + 101, + 198, + 102, + 176, + 252, + 28, + 115, + 147, + 54, + 40, + 117, + 26, + 79, + 226, + 45, + 200, + 98, + 196, + 177, + 71, + 105, + 78, + 93, + 186, + 45, + 62, + 49, + 180, + 10, + 206, + 59, + 231, + 9, + 127, + 239, + 117, + 118, + 242, + 132, + 116, + 243, + 176, + 149, + 70, + 237, + 144, + 163, + 158, + 120, + 106, + 33, + 159, + 193, + 35, + 181, + 230, + 171, + 123, + 227, + 18, + 82, + 120, + 232, + 175, + 39, + 154, + 211, + 146, + 16, + 18, + 59, + 207, + 15, + 122, + 102, + 245, + 80, + 208, + 56, + 153, + 205, + 198, + 157, + 234, + 118, + 26, + 227, + 29, + 187, + 195, + 61, + 9, + 236, + 61, + 54, + 182, + 56, + 110, + 206, + 122, + 111, + 191, + 49, + 107, + 199, + 41, + 91, + 42, + 198, + 31, + 71, + 83, + 247, + 20, + 47, + 156, + 161, + 188, + 182, + 30, + 226, + 69, + 178, + 226, + 204, + 226, + 135, + 85, + 71, + 119, + 188, + 239, + 126, + 109, + 58, + 241, + 114, + 208, + 184, + 3, + 5, + 138, + 0, + 226, + 18, + 160, + 173, + 141, + 112, + 53, + 123, + 84, + 137, + 37, + 97, + 14, + 217, + 20, + 36, + 203, + 70, + 225, + 10, + 129, + 240, + 0, + 21, + 56, + 62, + 100, + 51, + 40, + 163, + 52, + 34, + 68, + 238, + 9, + 53, + 56, + 116, + 7, + 123, + 183, + 232, + 51, + 53, + 176, + 69, + 97, + 86, + 121, + 241, + 170, + 108, + 56, + 172, + 255, + 74, + 154, + 202, + 129, + 6, + 176, + 182, + 16, + 185, + 147, + 142, + 96, + 236, + 158, + 92, + 119, + 210, + 145, + 149, + 208, + 31, + 175, + 216, + 6, + 221, + 115, + 129, + 175, + 64, + 118, + 87, + 188, + 142, + 107, + 36, + 97, + 199, + 221, + 132, + 168, + 145, + 156, + 175, + 190, + 238, + 111, + 161, + 127, + 164, + 244, + 48, + 53, + 216, + 99, + 52, + 10, + 242, + 213, + 6, + 236, + 73, + 33, + 87, + 58, + 103, + 116, + 214, + 112, + 200, + 137, + 160, + 218, + 105, + 133, + 228, + 236, + 40, + 90, + 241, + 29, + 124, + 61, + 173, + 240, + 244, + 147, + 54, + 194, + 230, + 198, + 80, + 204, + 136, + 189, + 118, + 236, + 246, + 80, + 108, + 239, + 10, + 136, + 91, + 210, + 157, + 102, + 214, + 187, + 185, + 224, + 98, + 154, + 118, + 2, + 168, + 225, + 232, + 210, + 176, + 85, + 141, + 145, + 15, + 18, + 109, + 138, + 22, + 127, + 12, + 50, + 116, + 135, + 219, + 97, + 53, + 216, + 0, + 100, + 206, + 152, + 138, + 155, + 98, + 115, + 249, + 56, + 100, + 199, + 137, + 106, + 4, + 206, + 41, + 128, + 235, + 181, + 132, + 197, + 124, + 233, + 34, + 7, + 204, + 107, + 137, + 101, + 33, + 88, + 82, + 103, + 116, + 149, + 180, + 108, + 67, + 66, + 20, + 160, + 106, + 234, + 195, + 64, + 66, + 194, + 116, + 212, + 185, + 174, + 162, + 88, + 4, + 115, + 110, + 110, + 108, + 11, + 57, + 48, + 182, + 156, + 96, + 25, + 146, + 243, + 50, + 11, + 228, + 75, + 4, + 144, + 199, + 231, + 48, + 157, + 3, + 199, + 77, + 168, + 87, + 128, + 250, + 154, + 16, + 110, + 79, + 192, + 36, + 102, + 181, + 202, + 127, + 66, + 160, + 17, + 146, + 220, + 62, + 58, + 97, + 205, + 189, + 220, + 246, + 162, + 208, + 132, + 175, + 218, + 149, + 152, + 48, + 84, + 66, + 11, + 221, + 188, + 95, + 216, + 156, + 47, + 165, + 8, + 19, + 99, + 107, + 158, + 42, + 132, + 165, + 48, + 119, + 108, + 240, + 146, + 7, + 178, + 117, + 29, + 183, + 139, + 161, + 98, + 238, + 145, + 96, + 49, + 101, + 171, + 56, + 10, + 219, + 64, + 121, + 133, + 113, + 61, + 191, + 103, + 46, + 120, + 164, + 21, + 25, + 223, + 3, + 91, + 41, + 105, + 228, + 216, + 18, + 70, + 206, + 69, + 41, + 86, + 14, + 91, + 82, + 236, + 60, + 15, + 184, + 138, + 216, + 205, + 22, + 223, + 252, + 156, + 123, + 51, + 70, + 166, + 86, + 44, + 197, + 54, + 240, + 142, + 177, + 148, + 234, + 35, + 126, + 76, + 156, + 98, + 15, + 53, + 223, + 141, + 55, + 100, + 79, + 216, + 68, + 161, + 35, + 94, + 206, + 133, + 161, + 178, + 3, + 114, + 39, + 120, + 131, + 110, + 54, + 53, + 227, + 112, + 200, + 217, + 197, + 53, + 204, + 43, + 199, + 214, + 13, + 200, + 165, + 120, + 200, + 214, + 184, + 84, + 139, + 46, + 63, + 9, + 132, + 94, + 227, + 133, + 110, + 67, + 109, + 237, + 149, + 69, + 96, + 50, + 90, + 99, + 157, + 12, + 38, + 82, + 168, + 176, + 166, + 151, + 155, + 184, + 157, + 9, + 110, + 67, + 232, + 173, + 226, + 223, + 213, + 121, + 179, + 56, + 90, + 169, + 88, + 4, + 115, + 81, + 89, + 200, + 220, + 96, + 7, + 195, + 6, + 130, + 28, + 86, + 34, + 197, + 107, + 146, + 1, + 178, + 98, + 195, + 253, + 52, + 133, + 44, + 187, + 166, + 218, + 125, + 178, + 1, + 75, + 119, + 163, + 221, + 190, + 154, + 83, + 10, + 49, + 68, + 173, + 154, + 151, + 75, + 157, + 19, + 80, + 165, + 17, + 37, + 140, + 184, + 110, + 31, + 124, + 238, + 118, + 19, + 225, + 133, + 226, + 124, + 241, + 51, + 4, + 199, + 8, + 54, + 41, + 237, + 35, + 4, + 7, + 187, + 16, + 156, + 180, + 51, + 126, + 30, + 61, + 92, + 43, + 87, + 20, + 200, + 243, + 210, + 27, + 181, + 41, + 219, + 67, + 194, + 86, + 232, + 112, + 245, + 94, + 58, + 49, + 113, + 97, + 45, + 53, + 134, + 230, + 136, + 122, + 226, + 199, + 12, + 53, + 80, + 169, + 209, + 12, + 91, + 182, + 137, + 100, + 172, + 171, + 28, + 238, + 172, + 97, + 66, + 78, + 160, + 81, + 12, + 171, + 139, + 58, + 202, + 132, + 19, + 67, + 6, + 255, + 49, + 166, + 118, + 110, + 53, + 221, + 248, + 86, + 53, + 205, + 50, + 178, + 219, + 77, + 240, + 238, + 164, + 3, + 177, + 251, + 77, + 232, + 14, + 59, + 227, + 95, + 248, + 91, + 106, + 139, + 92, + 225, + 249, + 124, + 29, + 56, + 166, + 206, + 212, + 32, + 94, + 156, + 158, + 185, + 178, + 27, + 203, + 34, + 244, + 214, + 197, + 66, + 13, + 183, + 249, + 99, + 199, + 180, + 220, + 246, + 185, + 8, + 98, + 189, + 68, + 183, + 245, + 157, + 0, + 28, + 22, + 163, + 17, + 87, + 29, + 207, + 84, + 251, + 167, + 107, + 178, + 63, + 64, + 73, + 182, + 79, + 113, + 149, + 199, + 223, + 19, + 223, + 154, + 60, + 171, + 159, + 168, + 96, + 159, + 64, + 251, + 81, + 115, + 113, + 76, + 228, + 53, + 236, + 91, + 109, + 152, + 108, + 193, + 70, + 233, + 116, + 185, + 158, + 14, + 16, + 90, + 167, + 167, + 72, + 1, + 116, + 50, + 52, + 237, + 100, + 50, + 13, + 176, + 229, + 105, + 87, + 215, + 11, + 232, + 115, + 181, + 75, + 78, + 151, + 168, + 165, + 117, + 120, + 234, + 6, + 98, + 35, + 127, + 156, + 217, + 96, + 44, + 142, + 109, + 156, + 47, + 164, + 77, + 61, + 14, + 67, + 239, + 241, + 216, + 166, + 231, + 167, + 55, + 198, + 80, + 241, + 244, + 246, + 239, + 12, + 105, + 229, + 169, + 182, + 39, + 187, + 181, + 69, + 127, + 232, + 173, + 160, + 54, + 27, + 171, + 103, + 222, + 27, + 140, + 99, + 170, + 230, + 195, + 89, + 253, + 94, + 98, + 155, + 210, + 25, + 210, + 8, + 232, + 215, + 3, + 175, + 3, + 96, + 55, + 53, + 13, + 110, + 149, + 157, + 138, + 76, + 167, + 149, + 134, + 57, + 235, + 213, + 115, + 51, + 194, + 244, + 190, + 228, + 209, + 217, + 38, + 93, + 238, + 50, + 82, + 93, + 209, + 5, + 203, + 13, + 26, + 165, + 147, + 139, + 239, + 38, + 202, + 20, + 111, + 138, + 121, + 48, + 96, + 10, + 236, + 246, + 154, + 169, + 43, + 17, + 176, + 90, + 163, + 107, + 189, + 146, + 193, + 139, + 255, + 126, + 186, + 2, + 28, + 67, + 71, + 2, + 186, + 58, + 173, + 81, + 148, + 23, + 152, + 198, + 32, + 95, + 65, + 161, + 153, + 104, + 16, + 171, + 201, + 65, + 12, + 123, + 88, + 99, + 218, + 102, + 132, + 203, + 156, + 35, + 12, + 41, + 7, + 98, + 189, + 143, + 135, + 9, + 27, + 152, + 185, + 239, + 255, + 41, + 148, + 179, + 125, + 67, + 119, + 145, + 206, + 9, + 148, + 67, + 93, + 242, + 182, + 194, + 169, + 247, + 188, + 134, + 171, + 13, + 232, + 114, + 167, + 142, + 25, + 59, + 177, + 215, + 22, + 58, + 114, + 167, + 142, + 25, + 54, + 25, + 158, + 177, + 113, + 78, + 103, + 201, + 114, + 218, + 253, + 14, + 207, + 25, + 197, + 128, + 45, + 114, + 218, + 125, + 108, + 34, + 244, + 225, + 130, + 184, + 59, + 105, + 103, + 211, + 229, + 110, + 116, + 125, + 216, + 8, + 81, + 160, + 28, + 137, + 74, + 9, + 40, + 239, + 228, + 43, + 126, + 75, + 216, + 18, + 107, + 164, + 23, + 34, + 49, + 12, + 92, + 35, + 116, + 213, + 200, + 229, + 112, + 85, + 6, + 226, + 177, + 21, + 92, + 155, + 73, + 214, + 116, + 43, + 91, + 9, + 139, + 177, + 58, + 48, + 131, + 102, + 161, + 187, + 11, + 253, + 122, + 140, + 213, + 157, + 14, + 195, + 249, + 190, + 83, + 59, + 15, + 18, + 46, + 96, + 89, + 163, + 17, + 11, + 39, + 55, + 19, + 25, + 113, + 139, + 241, + 215, + 227, + 129, + 75, + 39, + 107, + 58, + 114, + 79, + 184, + 95, + 199, + 205, + 2, + 6, + 158, + 157, + 25, + 33, + 164, + 19, + 68, + 195, + 166, + 110, + 31, + 110, + 240, + 196, + 148, + 240, + 173, + 165, + 56, + 30, + 219, + 179, + 125, + 9, + 109, + 43, + 82, + 209, + 3, + 51, + 237, + 53, + 210, + 144, + 95, + 171, + 109, + 211, + 11, + 56, + 67, + 175, + 101, + 35, + 11, + 193, + 36, + 14, + 61, + 97, + 171, + 68, + 31, + 131, + 185, + 117, + 189, + 226, + 117, + 118, + 172, + 219, + 18, + 223, + 90, + 58, + 129, + 31, + 221, + 190, + 181, + 196, + 192, + 79, + 90, + 198, + 165, + 15, + 50, + 189, + 126, + 171, + 142, + 79, + 127, + 10, + 123, + 196, + 42, + 158, + 170, + 22, + 108, + 195, + 158, + 51, + 212, + 24, + 116, + 167, + 167, + 59, + 177, + 164, + 147, + 244, + 49, + 12, + 104, + 82, + 72, + 30, + 42, + 112, + 89, + 138, + 192, + 3, + 15, + 152, + 35, + 166, + 52, + 87, + 229, + 103, + 2, + 115, + 90, + 40, + 253, + 122, + 244, + 0, + 184, + 199, + 167, + 46, + 64, + 146, + 13, + 183, + 208, + 17, + 244, + 197, + 179, + 211, + 141, + 137, + 221, + 209, + 98, + 62, + 147, + 165, + 5, + 30, + 83, + 199, + 120, + 14, + 123, + 70, + 119, + 216, + 145, + 170, + 34, + 68, + 211, + 51, + 186, + 195, + 221, + 224, + 65, + 39, + 120, + 7, + 48, + 22, + 189, + 177, + 199, + 190, + 81, + 139, + 250, + 198, + 93, + 145, + 157, + 90, + 20, + 10, + 190, + 73, + 190, + 244, + 186, + 213, + 173, + 46, + 131, + 206, + 62, + 185, + 97, + 216, + 155, + 5, + 107, + 177, + 194, + 156, + 18, + 231, + 91, + 20, + 161, + 163, + 13, + 46, + 70, + 127, + 74, + 100, + 72, + 226, + 194, + 46, + 94, + 110, + 91, + 178, + 194, + 51, + 225, + 229, + 203, + 11, + 131, + 191, + 21, + 117, + 215, + 53, + 97, + 44, + 109, + 116, + 241, + 139, + 132, + 95, + 231, + 33, + 61, + 199, + 125, + 239, + 162, + 237, + 129, + 193, + 90, + 38, + 187, + 203, + 53, + 234, + 102, + 192, + 189, + 196, + 231, + 233, + 31, + 223, + 144, + 241, + 24, + 82, + 170, + 109, + 72, + 202, + 48, + 77, + 111, + 244, + 254, + 35, + 196, + 77, + 8, + 1, + 111, + 143, + 212, + 9, + 226, + 198, + 93, + 94, + 236, + 159, + 143, + 91, + 255, + 165, + 93, + 0, + 55, + 12, + 143, + 57, + 104, + 236, + 158, + 51, + 160, + 142, + 21, + 202, + 62, + 159, + 57, + 69, + 31, + 119, + 180, + 92, + 217, + 56, + 90, + 35, + 59, + 65, + 73, + 135, + 62, + 237, + 114, + 224, + 24, + 119, + 243, + 54, + 213, + 116, + 28, + 51, + 221, + 106, + 27, + 196, + 26, + 128, + 115, + 239, + 198, + 254, + 135, + 123, + 44, + 40, + 198, + 205, + 66, + 126, + 121, + 54, + 95, + 194, + 241, + 228, + 237, + 124, + 124, + 198, + 237, + 112, + 37, + 161, + 1, + 106, + 93, + 112, + 55, + 84, + 37, + 46, + 202, + 179, + 120, + 154, + 243, + 148, + 137, + 31, + 191, + 28, + 24, + 6, + 137, + 124, + 43, + 27, + 201, + 253, + 4, + 153, + 102, + 163, + 194, + 4, + 61, + 88, + 115, + 200, + 60, + 148, + 40, + 165, + 143, + 115, + 186, + 113, + 149, + 82, + 161, + 112, + 49, + 108, + 142, + 205, + 71, + 138, + 215, + 187, + 22, + 12, + 28, + 161, + 65, + 202, + 135, + 199, + 175, + 163, + 129, + 18, + 118, + 122, + 13, + 209, + 0, + 221, + 190, + 207, + 157, + 160, + 226, + 116, + 124, + 215, + 51, + 82, + 228, + 79, + 85, + 0, + 14, + 167, + 53, + 214, + 35, + 14, + 192, + 145, + 196, + 2, + 180, + 103, + 238, + 207, + 95, + 159, + 64, + 107, + 153, + 38, + 11, + 157, + 117, + 208, + 120, + 77, + 75, + 83, + 210, + 193, + 131, + 226, + 246, + 74, + 212, + 121, + 230, + 159, + 254, + 250, + 125, + 13, + 176, + 155, + 140, + 61, + 146, + 162, + 64, + 233, + 35, + 117, + 24, + 17, + 86, + 132, + 45, + 149, + 64, + 77, + 26, + 149, + 208, + 236, + 246, + 52, + 28, + 107, + 222, + 105, + 38, + 204, + 142, + 140, + 10, + 114, + 234, + 195, + 126, + 141, + 84, + 246, + 32, + 116, + 44, + 2, + 86, + 10, + 43, + 222, + 50, + 234, + 113, + 116, + 91, + 36, + 142, + 119, + 62, + 118, + 100, + 233, + 69, + 118, + 88, + 128, + 247, + 232, + 180, + 74, + 231, + 5, + 98, + 228, + 150, + 188, + 175, + 183, + 149, + 47, + 245, + 3, + 178, + 169, + 91, + 149, + 207, + 30, + 211, + 139, + 6, + 12, + 220, + 141, + 71, + 51, + 89, + 2, + 99, + 251, + 99, + 221, + 70, + 29, + 253, + 250, + 98, + 139, + 104, + 19, + 222, + 158, + 251, + 70, + 143, + 67, + 247, + 54, + 218, + 18, + 114, + 22, + 30, + 235, + 98, + 39, + 32, + 133, + 15, + 195, + 253, + 100, + 230, + 247, + 208, + 135, + 171, + 183, + 1, + 180, + 211, + 3, + 53, + 64, + 70, + 88, + 83, + 63, + 203, + 115, + 87, + 241, + 115, + 155, + 205, + 228, + 49, + 171, + 61, + 53, + 178, + 96, + 205, + 117, + 51, + 1, + 56, + 195, + 29, + 116, + 0, + 13, + 90, + 71, + 201, + 241, + 40, + 77, + 184, + 67, + 46, + 248, + 249, + 30, + 110, + 77, + 65, + 217, + 52, + 102, + 47, + 196, + 237, + 233, + 178, + 26, + 70, + 141, + 20, + 100, + 109, + 237, + 3, + 212, + 229, + 229, + 188, + 38, + 216, + 50, + 114, + 36, + 176, + 143, + 169, + 51, + 117, + 197, + 118, + 110, + 175, + 32, + 43, + 25, + 117, + 165, + 54, + 39, + 209, + 61, + 229, + 108, + 104, + 103, + 164, + 22, + 185, + 221, + 34, + 105, + 40, + 159, + 187, + 150, + 62, + 115, + 145, + 247, + 81, + 196, + 14, + 12, + 16, + 85, + 26, + 49, + 50, + 180, + 1, + 184, + 102, + 76, + 194, + 169, + 5, + 211, + 160, + 57, + 220, + 212, + 233, + 162, + 131, + 182, + 128, + 25, + 195, + 27, + 253, + 209, + 209, + 143, + 184, + 7, + 48, + 145, + 115, + 64, + 219, + 228, + 86, + 126, + 90, + 149, + 216, + 159, + 162, + 13, + 222, + 40, + 26, + 203, + 16, + 193, + 216, + 49, + 157, + 178, + 10, + 111, + 24, + 96, + 28, + 246, + 91, + 240, + 132, + 191, + 150, + 41, + 119, + 205, + 218, + 180, + 164, + 190, + 163, + 57, + 64, + 7, + 53, + 130, + 183, + 52, + 5, + 116, + 74, + 152, + 251, + 216, + 118, + 150, + 46, + 6, + 190, + 15, + 246, + 6, + 91, + 39, + 135, + 102, + 184, + 3, + 192, + 12, + 133, + 29, + 57, + 109, + 234, + 245, + 86, + 250, + 219, + 27, + 140, + 187, + 97, + 243, + 158, + 56, + 122, + 33, + 136, + 33, + 177, + 23, + 219, + 125, + 7, + 251, + 65, + 173, + 253, + 208, + 185, + 189, + 171, + 35, + 175, + 244, + 128, + 255, + 48, + 41, + 106, + 94, + 138, + 235, + 22, + 233, + 217, + 168, + 226, + 230, + 117, + 139, + 244, + 12, + 163, + 27, + 83, + 209, + 122, + 90, + 54, + 159, + 155, + 75, + 101, + 91, + 69, + 81, + 181, + 68, + 11, + 148, + 39, + 54, + 98, + 46, + 94, + 140, + 140, + 29, + 62, + 120, + 31, + 57, + 62, + 247, + 225, + 233, + 29, + 52, + 164, + 197, + 128, + 126, + 74, + 105, + 4, + 40, + 38, + 224, + 30, + 33, + 51, + 231, + 253, + 44, + 117, + 54, + 224, + 138, + 229, + 244, + 117, + 222, + 11, + 25, + 114, + 129, + 165, + 122, + 172, + 168, + 218, + 160, + 214, + 24, + 251, + 168, + 204, + 96, + 172, + 161, + 31, + 231, + 59, + 185, + 1, + 121, + 131, + 193, + 180, + 83, + 118, + 102, + 8, + 204, + 51, + 220, + 185, + 47, + 245, + 39, + 175, + 184, + 4, + 245, + 118, + 39, + 117, + 47, + 88, + 168, + 141, + 42, + 242, + 136, + 50, + 147, + 7, + 157, + 188, + 147, + 118, + 229, + 21, + 42, + 75, + 117, + 191, + 134, + 193, + 67, + 188, + 66, + 249, + 227, + 27, + 214, + 138, + 40, + 222, + 128, + 131, + 110, + 44, + 177, + 51, + 192, + 105, + 110, + 207, + 83, + 16, + 60, + 2, + 156, + 180, + 203, + 37, + 232, + 215, + 143, + 45, + 198, + 8, + 97, + 111, + 212, + 198, + 96, + 1, + 50, + 24, + 198, + 26, + 238, + 176, + 207, + 26, + 229, + 39, + 36, + 131, + 222, + 108, + 182, + 215, + 132, + 99, + 69, + 41, + 154, + 193, + 66, + 172, + 23, + 33, + 151, + 46, + 182, + 182, + 102, + 109, + 1, + 69, + 161, + 70, + 1, + 214, + 94, + 160, + 203, + 48, + 52, + 178, + 189, + 116, + 172, + 250, + 70, + 222, + 208, + 147, + 99, + 213, + 41, + 158, + 32, + 158, + 128, + 219, + 169, + 116, + 64, + 183, + 52, + 221, + 186, + 194, + 221, + 186, + 74, + 40, + 10, + 30, + 135, + 148, + 29, + 215, + 234, + 56, + 129, + 219, + 203, + 22, + 233, + 36, + 168, + 108, + 47, + 91, + 252, + 151, + 78, + 248, + 56, + 233, + 248, + 204, + 50, + 17, + 197, + 169, + 123, + 173, + 68, + 20, + 35, + 242, + 36, + 212, + 239, + 79, + 141, + 74, + 254, + 144, + 55, + 222, + 66, + 146, + 13, + 40, + 99, + 135, + 254, + 26, + 247, + 211, + 83, + 198, + 5, + 110, + 198, + 19, + 187, + 140, + 99, + 68, + 200, + 96, + 80, + 167, + 74, + 154, + 188, + 3, + 188, + 99, + 200, + 54, + 37, + 54, + 236, + 12, + 85, + 248, + 185, + 244, + 21, + 182, + 57, + 234, + 217, + 107, + 245, + 35, + 118, + 227, + 63, + 127, + 253, + 142, + 47, + 75, + 178, + 122, + 111, + 206, + 246, + 125, + 39, + 162, + 118, + 88, + 115, + 5, + 131, + 196, + 22, + 153, + 85, + 229, + 28, + 195, + 66, + 14, + 161, + 130, + 239, + 215, + 167, + 72, + 212, + 13, + 125, + 27, + 245, + 188, + 238, + 157, + 77, + 78, + 225, + 143, + 134, + 33, + 35, + 54, + 73, + 17, + 222, + 56, + 253, + 110, + 115, + 194, + 196, + 78, + 83, + 22, + 118, + 126, + 217, + 190, + 224, + 84, + 118, + 79, + 36, + 200, + 73, + 34, + 233, + 56, + 212, + 56, + 52, + 110, + 215, + 43, + 187, + 177, + 207, + 33, + 104, + 176, + 8, + 195, + 130, + 59, + 247, + 95, + 202, + 86, + 163, + 83, + 210, + 77, + 238, + 84, + 84, + 235, + 78, + 187, + 75, + 238, + 208, + 70, + 241, + 236, + 77, + 142, + 54, + 125, + 47, + 125, + 178, + 221, + 94, + 98, + 12, + 93, + 216, + 153, + 30, + 134, + 243, + 117, + 234, + 222, + 49, + 210, + 229, + 208, + 138, + 132, + 93, + 213, + 42, + 210, + 229, + 208, + 138, + 33, + 157, + 111, + 88, + 199, + 72, + 23, + 131, + 106, + 216, + 159, + 170, + 154, + 17, + 77, + 48, + 246, + 47, + 246, + 76, + 216, + 233, + 129, + 194, + 207, + 248, + 63, + 191, + 239, + 100, + 199, + 88, + 23, + 3, + 186, + 39, + 90, + 223, + 85, + 233, + 13, + 61, + 155, + 218, + 194, + 254, + 75, + 13, + 232, + 179, + 199, + 245, + 199, + 152, + 77, + 85, + 100, + 71, + 185, + 131, + 38, + 118, + 86, + 207, + 234, + 193, + 50, + 27, + 195, + 9, + 80, + 59, + 114, + 152, + 7, + 203, + 248, + 99, + 244, + 150, + 64, + 221, + 119, + 4, + 231, + 28, + 129, + 96, + 110, + 86, + 207, + 107, + 110, + 57, + 2, + 193, + 172, + 203, + 95, + 169, + 189, + 22, + 10, + 132, + 99, + 53, + 143, + 208, + 5, + 138, + 11, + 59, + 5, + 246, + 4, + 186, + 7, + 134, + 126, + 173, + 197, + 179, + 244, + 23, + 79, + 173, + 54, + 98, + 50, + 76, + 150, + 16, + 193, + 59, + 135, + 102, + 82, + 218, + 118, + 22, + 144, + 149, + 131, + 60, + 175, + 187, + 203, + 156, + 114, + 188, + 22, + 204, + 109, + 157, + 25, + 215, + 155, + 96, + 217, + 10, + 41, + 94, + 223, + 239, + 19, + 142, + 132, + 192, + 203, + 56, + 4, + 41, + 170, + 156, + 48, + 5, + 209, + 197, + 33, + 241, + 240, + 35, + 209, + 192, + 162, + 233, + 146, + 251, + 171, + 98, + 167, + 187, + 162, + 219, + 56, + 173, + 21, + 66, + 195, + 239, + 129, + 5, + 62, + 25, + 207, + 227, + 45, + 135, + 220, + 231, + 167, + 145, + 25, + 253, + 162, + 8, + 163, + 216, + 129, + 238, + 189, + 82, + 209, + 24, + 1, + 87, + 103, + 122, + 43, + 185, + 191, + 188, + 38, + 201, + 80, + 231, + 134, + 141, + 169, + 143, + 126, + 58, + 141, + 146, + 10, + 168, + 72, + 107, + 243, + 73, + 33, + 163, + 177, + 122, + 35, + 55, + 29, + 70, + 10, + 177, + 16, + 94, + 199, + 197, + 124, + 113, + 191, + 223, + 158, + 130, + 224, + 195, + 211, + 118, + 89, + 219, + 247, + 153, + 216, + 120, + 247, + 227, + 253, + 131, + 72, + 193, + 230, + 106, + 52, + 96, + 100, + 218, + 48, + 117, + 132, + 161, + 35, + 189, + 18, + 37, + 22, + 167, + 144, + 197, + 177, + 236, + 117, + 59, + 170, + 33, + 49, + 59, + 186, + 91, + 143, + 213, + 229, + 141, + 194, + 206, + 117, + 52, + 238, + 68, + 16, + 231, + 186, + 241, + 74, + 248, + 41, + 191, + 116, + 93, + 17, + 71, + 22, + 99, + 224, + 60, + 60, + 43, + 12, + 186, + 170, + 34, + 103, + 4, + 75, + 40, + 140, + 120, + 72, + 173, + 167, + 175, + 112, + 66, + 175, + 36, + 201, + 75, + 13, + 62, + 84, + 116, + 108, + 120, + 54, + 58, + 73, + 169, + 195, + 247, + 43, + 206, + 15, + 203, + 6, + 225, + 138, + 223, + 251, + 53, + 163, + 243, + 26, + 145, + 109, + 47, + 207, + 83, + 108, + 4, + 22, + 134, + 7, + 125, + 198, + 28, + 178, + 244, + 6, + 190, + 79, + 188, + 159, + 122, + 84, + 185, + 117, + 22, + 114, + 122, + 227, + 79, + 134, + 50, + 197, + 103, + 136, + 209, + 49, + 27, + 205, + 37, + 125, + 157, + 82, + 111, + 21, + 129, + 129, + 177, + 227, + 122, + 209, + 130, + 92, + 9, + 208, + 184, + 81, + 193, + 171, + 234, + 138, + 35, + 141, + 145, + 201, + 76, + 151, + 152, + 89, + 54, + 165, + 230, + 79, + 214, + 250, + 144, + 185, + 103, + 240, + 140, + 123, + 210, + 255, + 5, + 131, + 121, + 20, + 253, + 26, + 50, + 143, + 96, + 176, + 249, + 15, + 4, + 131, + 21, + 233, + 250, + 14, + 90, + 77, + 10, + 177, + 234, + 106, + 78, + 46, + 152, + 249, + 246, + 240, + 36, + 28, + 249, + 222, + 103, + 237, + 189, + 152, + 17, + 166, + 176, + 183, + 141, + 198, + 32, + 176, + 57, + 96, + 216, + 26, + 225, + 166, + 243, + 29, + 155, + 203, + 187, + 5, + 17, + 27, + 206, + 70, + 74, + 12, + 58, + 90, + 192, + 60, + 195, + 108, + 177, + 102, + 123, + 121, + 164, + 5, + 147, + 117, + 207, + 62, + 218, + 7, + 50, + 193, + 26, + 46, + 129, + 125, + 218, + 139, + 186, + 87, + 207, + 20, + 125, + 210, + 149, + 128, + 197, + 211, + 81, + 251, + 190, + 191, + 122, + 128, + 107, + 2, + 82, + 22, + 140, + 210, + 47, + 233, + 133, + 26, + 84, + 116, + 30, + 168, + 230, + 182, + 106, + 141, + 116, + 37, + 111, + 7, + 17, + 133, + 117, + 121, + 65, + 144, + 91, + 132, + 27, + 72, + 220, + 135, + 178, + 209, + 4, + 151, + 200, + 67, + 205, + 86, + 40, + 131, + 122, + 230, + 62, + 126, + 12, + 104, + 25, + 144, + 88, + 35, + 135, + 135, + 100, + 0, + 99, + 156, + 47, + 250, + 204, + 115, + 254, + 244, + 163, + 116, + 192, + 30, + 141, + 185, + 185, + 228, + 206, + 211, + 211, + 223, + 229, + 128, + 228, + 157, + 86, + 152, + 175, + 215, + 21, + 65, + 113, + 149, + 84, + 46, + 15, + 186, + 248, + 125, + 119, + 216, + 44, + 162, + 126, + 91, + 61, + 22, + 168, + 211, + 164, + 106, + 111, + 80, + 7, + 64, + 163, + 118, + 216, + 207, + 73, + 191, + 231, + 212, + 32, + 168, + 134, + 47, + 145, + 1, + 207, + 221, + 41, + 213, + 228, + 1, + 162, + 24, + 219, + 157, + 39, + 108, + 156, + 252, + 142, + 167, + 100, + 165, + 108, + 116, + 82, + 4, + 43, + 205, + 50, + 203, + 248, + 138, + 151, + 0, + 144, + 251, + 119, + 42, + 98, + 91, + 238, + 69, + 206, + 26, + 34, + 230, + 213, + 12, + 56, + 129, + 49, + 66, + 191, + 234, + 135, + 198, + 11, + 237, + 249, + 70, + 154, + 41, + 65, + 63, + 147, + 196, + 250, + 195, + 106, + 94, + 15, + 185, + 208, + 32, + 12, + 162, + 248, + 22, + 205, + 212, + 227, + 67, + 245, + 99, + 13, + 112, + 154, + 48, + 200, + 115, + 22, + 250, + 40, + 94, + 30, + 128, + 226, + 84, + 196, + 154, + 170, + 226, + 210, + 76, + 201, + 73, + 158, + 79, + 252, + 156, + 143, + 161, + 168, + 1, + 170, + 157, + 167, + 107, + 29, + 2, + 70, + 59, + 148, + 97, + 104, + 6, + 228, + 101, + 193, + 103, + 41, + 64, + 148, + 46, + 36, + 181, + 81, + 96, + 63, + 146, + 198, + 206, + 87, + 85, + 228, + 104, + 128, + 44, + 166, + 87, + 226, + 43, + 143, + 223, + 209, + 49, + 113, + 145, + 55, + 165, + 14, + 205, + 54, + 62, + 196, + 185, + 149, + 229, + 49, + 142, + 240, + 252, + 51, + 60, + 164, + 119, + 223, + 1, + 201, + 181, + 61, + 192, + 212, + 173, + 125, + 111, + 10, + 249, + 30, + 221, + 161, + 109, + 119, + 246, + 53, + 183, + 56, + 79, + 116, + 135, + 7, + 33, + 60, + 205, + 65, + 212, + 107, + 186, + 19, + 234, + 45, + 132, + 231, + 140, + 189, + 101, + 6, + 158, + 153, + 112, + 2, + 90, + 173, + 46, + 1, + 99, + 250, + 232, + 20, + 204, + 127, + 146, + 3, + 95, + 57, + 27, + 254, + 24, + 206, + 189, + 245, + 26, + 26, + 243, + 44, + 212, + 13, + 151, + 182, + 132, + 241, + 90, + 31, + 47, + 234, + 221, + 3, + 132, + 230, + 110, + 12, + 86, + 216, + 2, + 178, + 247, + 138, + 25, + 234, + 69, + 213, + 227, + 49, + 194, + 180, + 0, + 121, + 16, + 55, + 250, + 11, + 145, + 63, + 196, + 68, + 161, + 83, + 103, + 190, + 110, + 127, + 238, + 5, + 227, + 196, + 163, + 161, + 134, + 54, + 246, + 194, + 92, + 231, + 184, + 152, + 194, + 226, + 235, + 149, + 167, + 243, + 56, + 196, + 172, + 230, + 136, + 124, + 99, + 73, + 57, + 14, + 219, + 200, + 187, + 82, + 216, + 142, + 195, + 70, + 215, + 155, + 109, + 166, + 167, + 187, + 111, + 209, + 254, + 121, + 24, + 236, + 78, + 50, + 34, + 225, + 128, + 189, + 87, + 40, + 121, + 171, + 29, + 130, + 8, + 93, + 224, + 183, + 59, + 41, + 63, + 196, + 183, + 76, + 229, + 179, + 196, + 166, + 116, + 189, + 184, + 118, + 130, + 122, + 51, + 192, + 192, + 9, + 76, + 180, + 184, + 177, + 73, + 66, + 83, + 129, + 85, + 195, + 134, + 125, + 42, + 223, + 89, + 167, + 242, + 157, + 7, + 42, + 217, + 21, + 31, + 230, + 102, + 6, + 11, + 185, + 249, + 157, + 134, + 198, + 192, + 85, + 14, + 210, + 2, + 166, + 216, + 169, + 185, + 72, + 177, + 102, + 2, + 119, + 7, + 104, + 244, + 105, + 242, + 170, + 103, + 98, + 12, + 117, + 166, + 105, + 63, + 137, + 38, + 169, + 57, + 231, + 79, + 111, + 78, + 205, + 141, + 126, + 191, + 108, + 4, + 202, + 18, + 199, + 15, + 124, + 172, + 209, + 181, + 251, + 101, + 237, + 53, + 26, + 219, + 225, + 188, + 17, + 134, + 198, + 197, + 231, + 177, + 207, + 245, + 37, + 188, + 247, + 225, + 17, + 73, + 164, + 174, + 207, + 12, + 176, + 95, + 234, + 181, + 53, + 190, + 21, + 179, + 19, + 97, + 160, + 209, + 137, + 105, + 136, + 76, + 160, + 185, + 215, + 211, + 86, + 49, + 223, + 33, + 53, + 239, + 166, + 241, + 156, + 6, + 54, + 172, + 19, + 225, + 90, + 195, + 41, + 153, + 113, + 127, + 52, + 211, + 36, + 150, + 170, + 77, + 113, + 38, + 136, + 185, + 211, + 114, + 219, + 119, + 223, + 10, + 204, + 18, + 115, + 93, + 107, + 192, + 203, + 96, + 144, + 165, + 141, + 121, + 158, + 174, + 172, + 84, + 157, + 59, + 60, + 243, + 166, + 220, + 181, + 20, + 34, + 239, + 229, + 230, + 176, + 128, + 136, + 72, + 167, + 73, + 152, + 11, + 152, + 44, + 142, + 243, + 188, + 178, + 26, + 221, + 27, + 173, + 159, + 162, + 254, + 151, + 214, + 162, + 251, + 15, + 184, + 91, + 138, + 4, + 17, + 191, + 113, + 41, + 210, + 237, + 51, + 9, + 27, + 229, + 230, + 234, + 236, + 112, + 225, + 240, + 76, + 93, + 59, + 88, + 252, + 238, + 30, + 214, + 168, + 47, + 139, + 144, + 197, + 212, + 64, + 37, + 173, + 109, + 142, + 197, + 92, + 201, + 207, + 107, + 109, + 113, + 97, + 64, + 31, + 149, + 125, + 138, + 131, + 109, + 5, + 51, + 167, + 46, + 159, + 32, + 97, + 187, + 139, + 190, + 245, + 62, + 248, + 6, + 185, + 237, + 223, + 224, + 70, + 15, + 111, + 154, + 48, + 7, + 113, + 168, + 181, + 77, + 107, + 170, + 252, + 170, + 82, + 7, + 239, + 20, + 44, + 173, + 153, + 65, + 110, + 239, + 45, + 197, + 106, + 255, + 34, + 52, + 204, + 222, + 91, + 154, + 97, + 250, + 229, + 121, + 80, + 125, + 33, + 243, + 62, + 131, + 231, + 11, + 137, + 153, + 79, + 16, + 211, + 99, + 0, + 108, + 0, + 178, + 140, + 80, + 181, + 90, + 197, + 212, + 4, + 104, + 104, + 108, + 143, + 241, + 74, + 241, + 95, + 132, + 99, + 186, + 24, + 59, + 110, + 213, + 142, + 56, + 199, + 106, + 180, + 208, + 183, + 229, + 174, + 166, + 163, + 50, + 253, + 78, + 63, + 106, + 57, + 62, + 139, + 141, + 201, + 79, + 158, + 44, + 167, + 198, + 245, + 220, + 154, + 75, + 251, + 81, + 49, + 206, + 149, + 134, + 243, + 231, + 26, + 77, + 159, + 156, + 160, + 143, + 254, + 75, + 93, + 251, + 191, + 211, + 181, + 100, + 173, + 78, + 220, + 207, + 185, + 186, + 230, + 199, + 170, + 3, + 30, + 210, + 123, + 185, + 19, + 168, + 128, + 106, + 76, + 233, + 175, + 178, + 174, + 22, + 24, + 249, + 102, + 242, + 246, + 116, + 76, + 154, + 11, + 208, + 112, + 52, + 110, + 188, + 139, + 128, + 248, + 153, + 120, + 224, + 162, + 37, + 83, + 86, + 27, + 102, + 84, + 178, + 172, + 16, + 78, + 187, + 202, + 189, + 84, + 50, + 102, + 4, + 227, + 221, + 9, + 188, + 120, + 76, + 56, + 98, + 24, + 245, + 241, + 192, + 238, + 177, + 113, + 29, + 122, + 57, + 70, + 186, + 6, + 136, + 112, + 35, + 175, + 144, + 205, + 205, + 58, + 99, + 137, + 201, + 21, + 122, + 207, + 37, + 47, + 168, + 26, + 189, + 135, + 93, + 218, + 74, + 187, + 19, + 235, + 25, + 78, + 175, + 142, + 109, + 68, + 107, + 11, + 172, + 12, + 131, + 53, + 121, + 54, + 130, + 28, + 222, + 88, + 17, + 13, + 73, + 229, + 185, + 69, + 86, + 77, + 5, + 73, + 158, + 224, + 57, + 67, + 213, + 98, + 213, + 254, + 30, + 129, + 113, + 199, + 232, + 71, + 134, + 196, + 102, + 79, + 77, + 21, + 33, + 156, + 96, + 168, + 163, + 83, + 215, + 136, + 96, + 107, + 134, + 11, + 115, + 63, + 66, + 248, + 149, + 128, + 62, + 143, + 153, + 44, + 195, + 114, + 40, + 99, + 244, + 194, + 114, + 132, + 20, + 51, + 4, + 47, + 200, + 59, + 175, + 41, + 208, + 207, + 129, + 252, + 172, + 191, + 84, + 51, + 232, + 18, + 129, + 77, + 163, + 49, + 103, + 199, + 73, + 95, + 123, + 83, + 40, + 105, + 252, + 56, + 131, + 174, + 162, + 75, + 253, + 114, + 161, + 65, + 167, + 217, + 222, + 153, + 75, + 125, + 141, + 201, + 113, + 147, + 239, + 176, + 239, + 6, + 61, + 220, + 47, + 103, + 202, + 142, + 201, + 62, + 10, + 95, + 97, + 100, + 231, + 148, + 155, + 94, + 237, + 175, + 128, + 46, + 63, + 211, + 29, + 66, + 94, + 70, + 226, + 193, + 114, + 195, + 78, + 32, + 47, + 26, + 93, + 228, + 175, + 102, + 152, + 193, + 5, + 55, + 147, + 226, + 134, + 119, + 85, + 240, + 228, + 255, + 74, + 9, + 25, + 244, + 152, + 64, + 153, + 151, + 20, + 231, + 116, + 5, + 205, + 144, + 163, + 218, + 190, + 58, + 213, + 141, + 55, + 48, + 244, + 95, + 46, + 170, + 22, + 55, + 44, + 34, + 12, + 9, + 71, + 244, + 235, + 49, + 235, + 169, + 55, + 68, + 110, + 24, + 204, + 177, + 172, + 209, + 160, + 7, + 113, + 192, + 116, + 228, + 173, + 237, + 240, + 137, + 40, + 176, + 148, + 58, + 37, + 82, + 206, + 110, + 115, + 99, + 168, + 208, + 161, + 166, + 81, + 39, + 92, + 188, + 43, + 50, + 65, + 100, + 55, + 202, + 244, + 80, + 241, + 198, + 137, + 245, + 224, + 145, + 183, + 22, + 180, + 161, + 46, + 88, + 178, + 59, + 221, + 127, + 208, + 8, + 252, + 8, + 17, + 83, + 31, + 10, + 4, + 208, + 39, + 48, + 116, + 65, + 86, + 185, + 117, + 135, + 4, + 172, + 170, + 172, + 146, + 96, + 48, + 134, + 126, + 52, + 239, + 213, + 32, + 113, + 83, + 35, + 195, + 198, + 190, + 54, + 185, + 169, + 17, + 115, + 88, + 232, + 190, + 91, + 58, + 129, + 14, + 192, + 177, + 58, + 165, + 162, + 42, + 128, + 107, + 132, + 133, + 88, + 218, + 231, + 75, + 79, + 255, + 247, + 251, + 223, + 26, + 120, + 69, + 193, + 166, + 167, + 142, + 213, + 153, + 141, + 123, + 141, + 211, + 69, + 8, + 107, + 52, + 178, + 75, + 221, + 76, + 107, + 77, + 10, + 39, + 83, + 179, + 219, + 10, + 243, + 11, + 39, + 166, + 145, + 51, + 39, + 8, + 236, + 86, + 167, + 223, + 97, + 102, + 166, + 109, + 88, + 70, + 141, + 17, + 190, + 60, + 25, + 54, + 75, + 200, + 212, + 76, + 69, + 143, + 69, + 123, + 150, + 46, + 212, + 100, + 40, + 204, + 177, + 27, + 167, + 191, + 120, + 4, + 195, + 138, + 225, + 236, + 247, + 130, + 75, + 133, + 29, + 220, + 36, + 105, + 196, + 58, + 156, + 240, + 178, + 226, + 166, + 79, + 14, + 112, + 101, + 160, + 122, + 53, + 119, + 93, + 96, + 153, + 118, + 2, + 92, + 11, + 54, + 207, + 51, + 36, + 162, + 8, + 57, + 78, + 4, + 180, + 17, + 150, + 75, + 197, + 47, + 63, + 21, + 136, + 227, + 228, + 243, + 148, + 122, + 124, + 218, + 204, + 40, + 234, + 47, + 233, + 22, + 146, + 217, + 72, + 16, + 26, + 118, + 11, + 201, + 44, + 6, + 16, + 92, + 34, + 73, + 141, + 42, + 15, + 108, + 78, + 110, + 228, + 244, + 170, + 184, + 163, + 94, + 108, + 144, + 90, + 181, + 231, + 114, + 197, + 130, + 53, + 186, + 181, + 168, + 122, + 196, + 209, + 10, + 77, + 251, + 47, + 1, + 117, + 247, + 246, + 92, + 169, + 102, + 186, + 198, + 94, + 113, + 151, + 197, + 206, + 74, + 35, + 226, + 125, + 165, + 85, + 95, + 42, + 155, + 43, + 38, + 73, + 129, + 40, + 179, + 67, + 175, + 77, + 56, + 221, + 2, + 37, + 189, + 185, + 53, + 126, + 133, + 49, + 158, + 123, + 100, + 165, + 37, + 83, + 141, + 177, + 103, + 64, + 52, + 111, + 37, + 253, + 25, + 80, + 167, + 12, + 75, + 135, + 238, + 35, + 160, + 14, + 187, + 184, + 105, + 5, + 147, + 169, + 119, + 226, + 113, + 49, + 195, + 84, + 179, + 206, + 40, + 240, + 9, + 139, + 150, + 134, + 173, + 229, + 156, + 2, + 177, + 154, + 1, + 224, + 54, + 92, + 207, + 96, + 179, + 251, + 16, + 180, + 141, + 207, + 66, + 24, + 56, + 144, + 233, + 36, + 42, + 189, + 121, + 205, + 192, + 49, + 97, + 172, + 185, + 27, + 79, + 73, + 136, + 8, + 168, + 123, + 135, + 236, + 166, + 206, + 117, + 163, + 6, + 181, + 240, + 6, + 91, + 74, + 141, + 62, + 233, + 40, + 62, + 117, + 38, + 197, + 21, + 124, + 227, + 5, + 31, + 27, + 240, + 55, + 235, + 226, + 113, + 77, + 160, + 181, + 27, + 41, + 175, + 184, + 209, + 157, + 237, + 98, + 67, + 190, + 15, + 79, + 102, + 68, + 245, + 62, + 85, + 39, + 42, + 135, + 27, + 124, + 178, + 241, + 145, + 233, + 222, + 19, + 239, + 249, + 99, + 98, + 218, + 6, + 225, + 198, + 42, + 158, + 132, + 65, + 199, + 14, + 213, + 38, + 185, + 70, + 52, + 171, + 214, + 47, + 200, + 127, + 175, + 17, + 177, + 158, + 153, + 196, + 100, + 176, + 214, + 233, + 38, + 231, + 230, + 49, + 140, + 141, + 228, + 27, + 118, + 243, + 152, + 113, + 107, + 183, + 94, + 198, + 3, + 115, + 97, + 76, + 102, + 165, + 156, + 142, + 39, + 246, + 192, + 43, + 181, + 254, + 56, + 171, + 0, + 237, + 25, + 194, + 244, + 197, + 209, + 84, + 247, + 206, + 220, + 101, + 167, + 162, + 111, + 183, + 154, + 138, + 239, + 100, + 53, + 104, + 209, + 94, + 0, + 134, + 119, + 48, + 153, + 250, + 218, + 131, + 188, + 70, + 255, + 21, + 231, + 214, + 242, + 108, + 172, + 121, + 197, + 185, + 181, + 99, + 199, + 29, + 66, + 75, + 35, + 42, + 82, + 66, + 81, + 13, + 9, + 212, + 13, + 188, + 59, + 123, + 138, + 98, + 12, + 98, + 43, + 76, + 111, + 43, + 178, + 238, + 108, + 130, + 74, + 35, + 83, + 214, + 97, + 41, + 195, + 56, + 177, + 252, + 137, + 138, + 255, + 58, + 146, + 91, + 68, + 251, + 246, + 114, + 78, + 125, + 120, + 148, + 24, + 101, + 139, + 122, + 53, + 190, + 224, + 22, + 124, + 239, + 211, + 127, + 110, + 215, + 245, + 83, + 213, + 82, + 222, + 197, + 225, + 141, + 151, + 235, + 117, + 244, + 94, + 161, + 192, + 247, + 91, + 90, + 15, + 247, + 63, + 175, + 173, + 32, + 106, + 226, + 118, + 224, + 172, + 111, + 137, + 210, + 224, + 72, + 78, + 215, + 143, + 97, + 27, + 30, + 4, + 241, + 221, + 248, + 129, + 187, + 36, + 155, + 55, + 121, + 150, + 98, + 15, + 226, + 163, + 78, + 75, + 197, + 91, + 207, + 246, + 43, + 87, + 46, + 75, + 187, + 228, + 79, + 240, + 173, + 211, + 66, + 123, + 1, + 250, + 17, + 96, + 157, + 34, + 59, + 139, + 96, + 139, + 7, + 75, + 158, + 32, + 59, + 212, + 132, + 236, + 20, + 23, + 232, + 255, + 124, + 16, + 218, + 64, + 5, + 64, + 225, + 173, + 225, + 38, + 114, + 105, + 133, + 190, + 164, + 107, + 43, + 182, + 122, + 21, + 134, + 83, + 192, + 26, + 237, + 235, + 55, + 12, + 103, + 20, + 227, + 119, + 233, + 156, + 228, + 166, + 121, + 186, + 58, + 79, + 62, + 238, + 154, + 199, + 195, + 175, + 229, + 45, + 101, + 94, + 181, + 179, + 251, + 118, + 128, + 140, + 59, + 109, + 162, + 6, + 130, + 55, + 90, + 194, + 117, + 63, + 143, + 173, + 108, + 68, + 22, + 175, + 212, + 60, + 13, + 166, + 234, + 178, + 110, + 9, + 196, + 141, + 182, + 54, + 55, + 203, + 122, + 158, + 22, + 166, + 63, + 191, + 98, + 171, + 190, + 203, + 193, + 140, + 174, + 216, + 109, + 14, + 102, + 140, + 25, + 143, + 231, + 100, + 209, + 115, + 157, + 239, + 233, + 125, + 31, + 101, + 35, + 175, + 45, + 220, + 152, + 51, + 228, + 194, + 200, + 129, + 49, + 41, + 49, + 63, + 223, + 232, + 19, + 186, + 248, + 193, + 140, + 73, + 225, + 134, + 52, + 97, + 47, + 89, + 180, + 138, + 74, + 211, + 57, + 97, + 206, + 70, + 223, + 14, + 90, + 232, + 193, + 0, + 33, + 4, + 200, + 152, + 85, + 154, + 105, + 101, + 93, + 148, + 232, + 57, + 32, + 164, + 220, + 24, + 124, + 202, + 30, + 235, + 70, + 26, + 22, + 15, + 249, + 115, + 194, + 89, + 98, + 108, + 106, + 60, + 114, + 110, + 154, + 126, + 138, + 50, + 73, + 213, + 7, + 75, + 90, + 93, + 196, + 220, + 248, + 213, + 216, + 118, + 159, + 211, + 217, + 28, + 158, + 254, + 215, + 105, + 254, + 53, + 5, + 230, + 152, + 49, + 81, + 96, + 158, + 66, + 68, + 153, + 44, + 41, + 247, + 236, + 174, + 249, + 58, + 13, + 115, + 26, + 107, + 167, + 77, + 59, + 58, + 127, + 51, + 62, + 166, + 244, + 133, + 239, + 213, + 46, + 86, + 16, + 94, + 160, + 234, + 182, + 139, + 21, + 5, + 116, + 39, + 168, + 119, + 32, + 44, + 233, + 4, + 214, + 155, + 65, + 116, + 27, + 28, + 134, + 183, + 144, + 139, + 103, + 108, + 223, + 14, + 129, + 167, + 239, + 27, + 60, + 26, + 79, + 48, + 226, + 27, + 199, + 160, + 152, + 242, + 146, + 101, + 76, + 156, + 74, + 193, + 107, + 97, + 179, + 138, + 4, + 211, + 252, + 131, + 219, + 144, + 35, + 52, + 199, + 70, + 154, + 20, + 122, + 175, + 203, + 17, + 175, + 247, + 115, + 138, + 110, + 85, + 42, + 55, + 8, + 164, + 145, + 252, + 180, + 128, + 87, + 188, + 224, + 92, + 227, + 119, + 126, + 237, + 253, + 117, + 172, + 58, + 100, + 64, + 148, + 198, + 70, + 230, + 137, + 111, + 254, + 199, + 51, + 91, + 16, + 152, + 88, + 188, + 109, + 125, + 4, + 40, + 77, + 116, + 13, + 133, + 83, + 235, + 78, + 0, + 37, + 238, + 210, + 244, + 157, + 167, + 128, + 213, + 250, + 193, + 6, + 107, + 89, + 99, + 182, + 25, + 15, + 216, + 186, + 228, + 80, + 41, + 84, + 211, + 104, + 35, + 168, + 151, + 44, + 141, + 12, + 95, + 48, + 148, + 25, + 91, + 112, + 125, + 176, + 107, + 139, + 77, + 183, + 184, + 164, + 70, + 31, + 29, + 111, + 230, + 204, + 69, + 113, + 108, + 234, + 147, + 196, + 137, + 83, + 88, + 146, + 97, + 15, + 236, + 68, + 135, + 214, + 244, + 216, + 113, + 90, + 239, + 17, + 96, + 56, + 4, + 104, + 170, + 236, + 70, + 132, + 195, + 35, + 29, + 101, + 74, + 124, + 64, + 56, + 134, + 56, + 82, + 82, + 216, + 41, + 146, + 145, + 99, + 34, + 233, + 71, + 172, + 94, + 66, + 218, + 52, + 152, + 27, + 27, + 109, + 41, + 112, + 13, + 215, + 173, + 132, + 238, + 29, + 31, + 61, + 167, + 93, + 166, + 183, + 52, + 206, + 165, + 168, + 10, + 255, + 82, + 3, + 251, + 170, + 221, + 188, + 194, + 152, + 179, + 49, + 253, + 235, + 53, + 3, + 251, + 7, + 217, + 207, + 195, + 178, + 115, + 76, + 126, + 203, + 65, + 170, + 228, + 22, + 22, + 179, + 248, + 212, + 89, + 98, + 173, + 183, + 80, + 157, + 37, + 22, + 222, + 194, + 47, + 189, + 72, + 181, + 69, + 238, + 218, + 244, + 28, + 107, + 73, + 209, + 153, + 39, + 41, + 113, + 169, + 177, + 252, + 147, + 23, + 238, + 45, + 89, + 106, + 36, + 160, + 33, + 55, + 102, + 69, + 35, + 109, + 102, + 184, + 149, + 250, + 10, + 189, + 92, + 174, + 229, + 227, + 60, + 22, + 153, + 9, + 104, + 249, + 36, + 60, + 240, + 184, + 91, + 70, + 32, + 186, + 184, + 49, + 118, + 79, + 13, + 148, + 71, + 76, + 204, + 125, + 39, + 46, + 212, + 112, + 89, + 83, + 103, + 148, + 224, + 18, + 151, + 53, + 89, + 7, + 170, + 85, + 149, + 4, + 58, + 95, + 239, + 214, + 175, + 110, + 147, + 4, + 46, + 63, + 152, + 133, + 112, + 4, + 105, + 70, + 12, + 79, + 25, + 125, + 53, + 48, + 138, + 221, + 181, + 57, + 238, + 52, + 86, + 89, + 91, + 238, + 218, + 188, + 67, + 15, + 236, + 43, + 170, + 172, + 239, + 203, + 29, + 202, + 54, + 48, + 197, + 25, + 162, + 85, + 106, + 21, + 3, + 111, + 14, + 213, + 18, + 57, + 48, + 249, + 83, + 47, + 133, + 106, + 131, + 232, + 108, + 76, + 108, + 114, + 223, + 120, + 165, + 253, + 252, + 154, + 30, + 136, + 122, + 53, + 144, + 195, + 195, + 161, + 76, + 58, + 85, + 132, + 158, + 60, + 203, + 254, + 75, + 7, + 178, + 181, + 12, + 41, + 238, + 85, + 76, + 234, + 114, + 197, + 100, + 227, + 165, + 26, + 185, + 96, + 50, + 70, + 197, + 123, + 129, + 98, + 157, + 110, + 222, + 202, + 97, + 42, + 76, + 159, + 5, + 214, + 49, + 211, + 37, + 61, + 239, + 183, + 98, + 175, + 180, + 129, + 111, + 17, + 155, + 103, + 64, + 148, + 32, + 32, + 45, + 156, + 71, + 64, + 148, + 116, + 105, + 214, + 142, + 179, + 39, + 83, + 47, + 142, + 188, + 236, + 124, + 7, + 149, + 76, + 173, + 87, + 168, + 211, + 173, + 131, + 176, + 241, + 48, + 106, + 232, + 206, + 65, + 35, + 244, + 69, + 121, + 0, + 132, + 229, + 205, + 172, + 89, + 150, + 129, + 169, + 106, + 163, + 222, + 127, + 15, + 152, + 52, + 245, + 185, + 186, + 252, + 13, + 173, + 89, + 110, + 194, + 179, + 129, + 179, + 213, + 230, + 201, + 115, + 79, + 217, + 66, + 70, + 69, + 51, + 68, + 134, + 52, + 189, + 236, + 153, + 157, + 193, + 130, + 140, + 94, + 247, + 196, + 6, + 27, + 199, + 60, + 169, + 226, + 93, + 17, + 131, + 237, + 63, + 224, + 86, + 51, + 170, + 225, + 238, + 169, + 135, + 245, + 92, + 13, + 252, + 155, + 120, + 203, + 159, + 111, + 188, + 43, + 83, + 111, + 249, + 243, + 248, + 30, + 20, + 205, + 175, + 163, + 64, + 106, + 40, + 208, + 48, + 144, + 225, + 228, + 218, + 62, + 20, + 104, + 128, + 204, + 48, + 21, + 230, + 26, + 211, + 228, + 157, + 185, + 125, + 163, + 54, + 110, + 174, + 18, + 177, + 65, + 141, + 114, + 59, + 87, + 137, + 48, + 133, + 78, + 255, + 215, + 6, + 46, + 145, + 129, + 93, + 58, + 198, + 94, + 24, + 181, + 71, + 62, + 72, + 141, + 160, + 131, + 4, + 140, + 179, + 49, + 232, + 155, + 209, + 128, + 87, + 72, + 181, + 123, + 160, + 67, + 142, + 165, + 95, + 70, + 135, + 126, + 185, + 27, + 78, + 103, + 81, + 124, + 35, + 174, + 37, + 110, + 181, + 238, + 43, + 82, + 219, + 85, + 73, + 238, + 70, + 84, + 184, + 172, + 34, + 61, + 109, + 122, + 195, + 207, + 194, + 78, + 70, + 149, + 170, + 228, + 68, + 241, + 53, + 233, + 132, + 158, + 246, + 110, + 192, + 200, + 64, + 216, + 173, + 6, + 112, + 238, + 41, + 181, + 215, + 8, + 125, + 161, + 83, + 248, + 45, + 141, + 72, + 43, + 26, + 64, + 13, + 16, + 230, + 70, + 133, + 205, + 205, + 82, + 106, + 104, + 136, + 94, + 166, + 26, + 211, + 44, + 87, + 51, + 99, + 251, + 164, + 240, + 71, + 237, + 206, + 154, + 1, + 173, + 78, + 227, + 27, + 153, + 3, + 216, + 21, + 0, + 45, + 119, + 54, + 89, + 195, + 155, + 3, + 33, + 116, + 12, + 32, + 31, + 134, + 70, + 16, + 72, + 128, + 199, + 8, + 9, + 1, + 249, + 116, + 254, + 41, + 129, + 188, + 210, + 248, + 187, + 228, + 89, + 40, + 26, + 117, + 139, + 39, + 45, + 117, + 114, + 218, + 221, + 24, + 157, + 16, + 195, + 101, + 178, + 47, + 124, + 53, + 155, + 89, + 53, + 166, + 216, + 26, + 48, + 76, + 67, + 94, + 87, + 31, + 84, + 211, + 39, + 91, + 145, + 111, + 76, + 93, + 227, + 22, + 13, + 29, + 163, + 115, + 208, + 201, + 165, + 23, + 95, + 105, + 232, + 50, + 87, + 151, + 98, + 62, + 159, + 130, + 17, + 222, + 246, + 201, + 215, + 240, + 36, + 7, + 134, + 254, + 31, + 195, + 193, + 235, + 202, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 56, + 52, + 57, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 219, + 142, + 101, + 201, + 109, + 229, + 123, + 125, + 69, + 254, + 128, + 168, + 224, + 45, + 24, + 1, + 8, + 2, + 186, + 91, + 106, + 99, + 30, + 12, + 204, + 12, + 244, + 7, + 154, + 177, + 129, + 1, + 244, + 48, + 158, + 255, + 7, + 6, + 60, + 85, + 238, + 62, + 167, + 147, + 204, + 179, + 131, + 201, + 204, + 106, + 27, + 182, + 13, + 72, + 174, + 236, + 202, + 222, + 151, + 216, + 17, + 228, + 226, + 186, + 224, + 203, + 120, + 25, + 47, + 127, + 192, + 151, + 241, + 178, + 132, + 94, + 254, + 254, + 143, + 47, + 255, + 247, + 11, + 152, + 222, + 254, + 244, + 223, + 255, + 243, + 239, + 255, + 248, + 130, + 47, + 254, + 191, + 255, + 243, + 159, + 110, + 255, + 129, + 47, + 255, + 246, + 175, + 95, + 254, + 248, + 79, + 252, + 242, + 175, + 255, + 239, + 139, + 255, + 220, + 182, + 188, + 32, + 18, + 191, + 252, + 219, + 255, + 254, + 242, + 47, + 95, + 254, + 199, + 111, + 126, + 131, + 145, + 255, + 223, + 223, + 255, + 113, + 251, + 71, + 135, + 255, + 142, + 175, + 255, + 229, + 215, + 223, + 241, + 199, + 255, + 254, + 242, + 167, + 63, + 253, + 241, + 159, + 127, + 250, + 111, + 127, + 121, + 25, + 47, + 127, + 254, + 243, + 143, + 127, + 249, + 233, + 203, + 143, + 127, + 251, + 242, + 199, + 159, + 229, + 5, + 5, + 166, + 255, + 143, + 189, + 252, + 237, + 95, + 190, + 224, + 175, + 151, + 10, + 98, + 123, + 161, + 241, + 126, + 249, + 155, + 255, + 222, + 63, + 32, + 3, + 153, + 177, + 240, + 122, + 249, + 219, + 255, + 122, + 249, + 211, + 24, + 250, + 195, + 159, + 95, + 254, + 246, + 127, + 190, + 224, + 0, + 93, + 66, + 38, + 252, + 50, + 190, + 253, + 68, + 126, + 188, + 253, + 100, + 1, + 42, + 226, + 176, + 245, + 235, + 15, + 36, + 249, + 129, + 218, + 237, + 7, + 127, + 253, + 219, + 209, + 85, + 241, + 128, + 173, + 75, + 230, + 12, + 174, + 110, + 112, + 233, + 55, + 42, + 12, + 30, + 34, + 24, + 252, + 198, + 252, + 226, + 245, + 246, + 3, + 129, + 181, + 198, + 20, + 189, + 187, + 221, + 85, + 185, + 6, + 157, + 64, + 200, + 60, + 184, + 237, + 174, + 230, + 0, + 90, + 74, + 182, + 162, + 183, + 248, + 211, + 237, + 55, + 26, + 48, + 45, + 36, + 95, + 82, + 223, + 254, + 156, + 178, + 187, + 45, + 221, + 212, + 98, + 216, + 168, + 19, + 119, + 219, + 77, + 45, + 131, + 189, + 76, + 183, + 70, + 175, + 202, + 178, + 139, + 207, + 238, + 10, + 241, + 219, + 59, + 28, + 134, + 219, + 212, + 46, + 255, + 224, + 240, + 170, + 17, + 39, + 232, + 80, + 99, + 107, + 123, + 16, + 72, + 3, + 212, + 204, + 48, + 90, + 48, + 140, + 217, + 71, + 154, + 62, + 138, + 33, + 165, + 171, + 16, + 6, + 94, + 58, + 12, + 251, + 110, + 76, + 12, + 68, + 109, + 72, + 244, + 172, + 248, + 223, + 95, + 241, + 86, + 154, + 132, + 122, + 97, + 243, + 249, + 186, + 210, + 25, + 72, + 39, + 202, + 190, + 123, + 18, + 179, + 116, + 117, + 166, + 128, + 162, + 67, + 251, + 238, + 215, + 54, + 16, + 90, + 248, + 225, + 119, + 95, + 252, + 218, + 176, + 70, + 184, + 98, + 138, + 215, + 190, + 25, + 150, + 49, + 69, + 91, + 140, + 252, + 112, + 250, + 53, + 230, + 119, + 139, + 217, + 223, + 248, + 161, + 114, + 213, + 68, + 27, + 140, + 121, + 245, + 29, + 32, + 196, + 12, + 107, + 232, + 138, + 158, + 236, + 183, + 67, + 238, + 245, + 86, + 242, + 237, + 57, + 156, + 254, + 171, + 100, + 194, + 160, + 181, + 169, + 239, + 226, + 117, + 0, + 142, + 177, + 162, + 77, + 90, + 244, + 238, + 201, + 211, + 221, + 89, + 95, + 58, + 14, + 104, + 78, + 144, + 193, + 216, + 183, + 89, + 144, + 13, + 16, + 211, + 240, + 224, + 222, + 119, + 207, + 125, + 14, + 249, + 237, + 81, + 246, + 234, + 158, + 30, + 86, + 217, + 221, + 159, + 215, + 182, + 124, + 218, + 2, + 155, + 144, + 26, + 23, + 217, + 94, + 176, + 55, + 83, + 184, + 225, + 127, + 171, + 202, + 24, + 116, + 46, + 218, + 235, + 189, + 111, + 138, + 105, + 128, + 33, + 205, + 190, + 109, + 142, + 73, + 192, + 150, + 204, + 240, + 85, + 205, + 184, + 26, + 121, + 168, + 189, + 94, + 191, + 169, + 211, + 43, + 144, + 5, + 130, + 18, + 150, + 14, + 213, + 186, + 145, + 64, + 214, + 220, + 18, + 125, + 246, + 201, + 61, + 61, + 108, + 7, + 247, + 203, + 50, + 189, + 217, + 159, + 74, + 151, + 102, + 27, + 120, + 78, + 234, + 43, + 56, + 120, + 49, + 8, + 175, + 112, + 249, + 165, + 159, + 84, + 237, + 223, + 180, + 55, + 152, + 12, + 233, + 123, + 81, + 50, + 24, + 22, + 146, + 68, + 47, + 74, + 126, + 190, + 59, + 117, + 166, + 204, + 240, + 133, + 140, + 157, + 189, + 194, + 141, + 191, + 253, + 212, + 94, + 255, + 133, + 241, + 115, + 233, + 162, + 25, + 65, + 81, + 76, + 250, + 30, + 3, + 43, + 232, + 154, + 198, + 39, + 235, + 245, + 161, + 223, + 91, + 251, + 202, + 243, + 225, + 210, + 197, + 205, + 175, + 197, + 73, + 95, + 117, + 34, + 246, + 181, + 58, + 137, + 14, + 182, + 252, + 51, + 252, + 177, + 243, + 196, + 147, + 45, + 64, + 98, + 141, + 43, + 121, + 47, + 96, + 220, + 18, + 29, + 43, + 58, + 190, + 190, + 42, + 2, + 26, + 203, + 108, + 172, + 11, + 175, + 42, + 57, + 243, + 210, + 143, + 162, + 182, + 27, + 41, + 155, + 111, + 189, + 225, + 194, + 171, + 61, + 7, + 21, + 244, + 173, + 119, + 238, + 142, + 173, + 247, + 161, + 34, + 189, + 223, + 190, + 238, + 91, + 124, + 155, + 28, + 87, + 170, + 131, + 239, + 78, + 172, + 108, + 35, + 76, + 46, + 169, + 86, + 91, + 232, + 90, + 96, + 20, + 55, + 193, + 181, + 199, + 57, + 94, + 254, + 192, + 4, + 211, + 136, + 39, + 127, + 251, + 69, + 244, + 117, + 205, + 108, + 48, + 211, + 57, + 132, + 46, + 84, + 227, + 37, + 56, + 135, + 38, + 12, + 179, + 69, + 175, + 175, + 160, + 120, + 78, + 13, + 64, + 217, + 182, + 231, + 235, + 95, + 248, + 172, + 193, + 56, + 253, + 22, + 17, + 84, + 109, + 40, + 191, + 117, + 233, + 1, + 104, + 135, + 3, + 193, + 191, + 66, + 218, + 111, + 130, + 119, + 127, + 253, + 231, + 159, + 238, + 1, + 60, + 236, + 2, + 240, + 178, + 126, + 36, + 111, + 161, + 107, + 197, + 254, + 0, + 54, + 193, + 221, + 88, + 236, + 11, + 136, + 76, + 156, + 118, + 180, + 247, + 229, + 144, + 86, + 6, + 224, + 229, + 11, + 188, + 218, + 160, + 126, + 63, + 228, + 105, + 109, + 152, + 72, + 163, + 241, + 45, + 108, + 134, + 185, + 100, + 132, + 111, + 129, + 126, + 74, + 46, + 126, + 124, + 125, + 14, + 4, + 254, + 139, + 228, + 14, + 183, + 249, + 246, + 222, + 142, + 241, + 52, + 2, + 155, + 180, + 181, + 17, + 134, + 193, + 9, + 139, + 253, + 165, + 86, + 15, + 214, + 199, + 23, + 255, + 215, + 164, + 165, + 249, + 36, + 140, + 3, + 167, + 192, + 88, + 72, + 187, + 15, + 122, + 197, + 233, + 23, + 199, + 97, + 75, + 241, + 198, + 84, + 32, + 125, + 66, + 95, + 251, + 115, + 7, + 78, + 108, + 140, + 249, + 234, + 7, + 193, + 6, + 245, + 115, + 242, + 236, + 30, + 78, + 221, + 135, + 79, + 188, + 245, + 216, + 37, + 52, + 208, + 198, + 90, + 142, + 8, + 97, + 202, + 220, + 246, + 102, + 67, + 191, + 152, + 105, + 26, + 93, + 222, + 166, + 159, + 108, + 116, + 60, + 94, + 85, + 43, + 199, + 7, + 182, + 192, + 66, + 161, + 198, + 141, + 125, + 46, + 88, + 107, + 162, + 61, + 3, + 245, + 239, + 43, + 170, + 26, + 122, + 182, + 20, + 112, + 249, + 60, + 174, + 237, + 218, + 215, + 6, + 154, + 131, + 87, + 190, + 29, + 30, + 227, + 60, + 12, + 204, + 196, + 125, + 125, + 31, + 109, + 3, + 25, + 18, + 182, + 86, + 217, + 39, + 242, + 240, + 177, + 177, + 60, + 173, + 112, + 211, + 202, + 151, + 147, + 214, + 131, + 74, + 47, + 144, + 101, + 128, + 110, + 30, + 125, + 47, + 144, + 197, + 255, + 41, + 29, + 209, + 114, + 230, + 175, + 215, + 136, + 8, + 226, + 155, + 198, + 93, + 27, + 180, + 14, + 177, + 129, + 244, + 49, + 255, + 148, + 60, + 102, + 75, + 254, + 5, + 217, + 115, + 174, + 205, + 111, + 28, + 106, + 33, + 153, + 179, + 17, + 99, + 24, + 12, + 140, + 107, + 242, + 201, + 227, + 188, + 223, + 211, + 58, + 144, + 19, + 154, + 176, + 5, + 67, + 56, + 190, + 138, + 156, + 32, + 12, + 100, + 11, + 49, + 242, + 4, + 184, + 43, + 94, + 187, + 48, + 16, + 207, + 181, + 250, + 174, + 93, + 12, + 120, + 172, + 37, + 109, + 59, + 148, + 40, + 2, + 175, + 209, + 249, + 124, + 85, + 65, + 148, + 188, + 11, + 124, + 123, + 144, + 116, + 191, + 179, + 100, + 223, + 96, + 138, + 195, + 165, + 192, + 192, + 172, + 98, + 59, + 58, + 41, + 220, + 249, + 235, + 224, + 206, + 100, + 9, + 119, + 254, + 115, + 192, + 42, + 195, + 147, + 179, + 95, + 244, + 80, + 163, + 235, + 180, + 119, + 62, + 30, + 101, + 6, + 26, + 51, + 252, + 100, + 138, + 152, + 15, + 27, + 144, + 173, + 176, + 2, + 203, + 70, + 8, + 41, + 180, + 115, + 247, + 231, + 99, + 210, + 115, + 224, + 171, + 136, + 212, + 204, + 5, + 196, + 70, + 125, + 251, + 171, + 26, + 1, + 143, + 112, + 252, + 199, + 95, + 63, + 230, + 5, + 66, + 219, + 75, + 146, + 167, + 55, + 91, + 35, + 117, + 232, + 54, + 24, + 50, + 230, + 135, + 162, + 79, + 89, + 255, + 148, + 182, + 73, + 121, + 155, + 255, + 195, + 175, + 56, + 214, + 240, + 17, + 192, + 251, + 246, + 103, + 71, + 50, + 253, + 150, + 177, + 11, + 175, + 114, + 20, + 73, + 54, + 99, + 128, + 87, + 85, + 119, + 103, + 152, + 132, + 228, + 75, + 228, + 12, + 150, + 114, + 228, + 108, + 233, + 208, + 35, + 88, + 138, + 154, + 96, + 169, + 115, + 242, + 78, + 186, + 20, + 114, + 176, + 161, + 198, + 55, + 67, + 240, + 106, + 60, + 100, + 135, + 149, + 249, + 102, + 188, + 85, + 252, + 149, + 191, + 126, + 14, + 221, + 11, + 255, + 148, + 53, + 230, + 128, + 145, + 51, + 136, + 218, + 238, + 214, + 28, + 48, + 162, + 49, + 236, + 251, + 241, + 208, + 182, + 1, + 35, + 113, + 72, + 41, + 42, + 130, + 33, + 195, + 75, + 32, + 137, + 167, + 241, + 57, + 103, + 176, + 23, + 58, + 71, + 82, + 88, + 108, + 126, + 76, + 245, + 209, + 202, + 54, + 236, + 177, + 39, + 209, + 247, + 123, + 91, + 168, + 12, + 202, + 123, + 135, + 61, + 68, + 241, + 182, + 212, + 96, + 34, + 238, + 176, + 88, + 251, + 253, + 110, + 61, + 184, + 22, + 108, + 214, + 198, + 18, + 211, + 25, + 91, + 99, + 24, + 235, + 239, + 112, + 235, + 33, + 50, + 32, + 194, + 16, + 15, + 171, + 242, + 178, + 16, + 104, + 115, + 56, + 40, + 123, + 3, + 212, + 93, + 239, + 2, + 237, + 239, + 186, + 254, + 34, + 206, + 56, + 25, + 214, + 220, + 157, + 72, + 227, + 52, + 111, + 136, + 67, + 150, + 230, + 195, + 181, + 223, + 247, + 3, + 205, + 55, + 181, + 6, + 160, + 90, + 99, + 213, + 72, + 75, + 128, + 104, + 135, + 140, + 162, + 180, + 211, + 171, + 161, + 134, + 78, + 72, + 25, + 171, + 145, + 48, + 200, + 131, + 193, + 214, + 8, + 251, + 221, + 90, + 213, + 199, + 195, + 96, + 41, + 173, + 198, + 42, + 5, + 17, + 54, + 201, + 250, + 158, + 45, + 249, + 171, + 63, + 47, + 22, + 237, + 170, + 128, + 99, + 114, + 35, + 106, + 168, + 27, + 208, + 86, + 88, + 38, + 61, + 180, + 91, + 15, + 55, + 155, + 97, + 164, + 41, + 49, + 225, + 10, + 106, + 248, + 192, + 89, + 178, + 86, + 246, + 202, + 152, + 32, + 220, + 215, + 192, + 139, + 207, + 135, + 112, + 132, + 51, + 169, + 244, + 150, + 138, + 224, + 12, + 249, + 140, + 93, + 169, + 145, + 121, + 67, + 10, + 56, + 227, + 86, + 254, + 9, + 77, + 246, + 96, + 217, + 151, + 202, + 4, + 81, + 242, + 3, + 67, + 27, + 81, + 92, + 189, + 33, + 168, + 78, + 109, + 56, + 32, + 214, + 190, + 77, + 163, + 57, + 102, + 111, + 9, + 12, + 81, + 234, + 228, + 131, + 45, + 64, + 180, + 184, + 180, + 189, + 86, + 13, + 188, + 155, + 22, + 172, + 131, + 188, + 221, + 15, + 155, + 161, + 34, + 32, + 52, + 166, + 247, + 251, + 161, + 126, + 128, + 126, + 76, + 201, + 123, + 217, + 86, + 116, + 63, + 43, + 68, + 189, + 3, + 198, + 106, + 88, + 17, + 47, + 224, + 181, + 176, + 175, + 128, + 85, + 33, + 144, + 57, + 176, + 15, + 205, + 86, + 153, + 160, + 220, + 56, + 206, + 84, + 29, + 48, + 135, + 132, + 58, + 139, + 244, + 228, + 164, + 214, + 85, + 102, + 3, + 182, + 173, + 70, + 246, + 111, + 68, + 16, + 251, + 225, + 126, + 154, + 227, + 253, + 253, + 243, + 190, + 32, + 149, + 126, + 212, + 144, + 25, + 133, + 165, + 44, + 190, + 37, + 159, + 33, + 93, + 186, + 253, + 161, + 232, + 90, + 39, + 72, + 23, + 119, + 17, + 176, + 142, + 233, + 69, + 41, + 139, + 40, + 229, + 2, + 164, + 36, + 175, + 218, + 122, + 186, + 123, + 208, + 93, + 245, + 211, + 134, + 77, + 225, + 129, + 85, + 4, + 61, + 25, + 246, + 54, + 238, + 100, + 218, + 46, + 24, + 115, + 115, + 172, + 45, + 121, + 130, + 24, + 156, + 98, + 110, + 2, + 108, + 183, + 145, + 75, + 155, + 246, + 115, + 129, + 8, + 107, + 200, + 115, + 200, + 105, + 52, + 233, + 250, + 203, + 200, + 76, + 53, + 48, + 110, + 128, + 176, + 142, + 70, + 94, + 187, + 15, + 226, + 134, + 133, + 154, + 188, + 2, + 219, + 177, + 87, + 173, + 140, + 232, + 98, + 69, + 166, + 144, + 220, + 82, + 197, + 232, + 24, + 6, + 41, + 134, + 67, + 160, + 243, + 251, + 202, + 215, + 195, + 174, + 233, + 55, + 39, + 76, + 85, + 109, + 36, + 242, + 163, + 14, + 48, + 50, + 29, + 187, + 7, + 189, + 123, + 202, + 8, + 29, + 134, + 188, + 117, + 191, + 115, + 215, + 196, + 197, + 192, + 212, + 200, + 53, + 194, + 101, + 192, + 123, + 134, + 213, + 212, + 103, + 81, + 47, + 201, + 123, + 66, + 211, + 198, + 2, + 150, + 188, + 60, + 21, + 27, + 97, + 99, + 85, + 98, + 181, + 16, + 46, + 152, + 62, + 196, + 110, + 164, + 234, + 17, + 152, + 197, + 210, + 217, + 70, + 248, + 248, + 201, + 70, + 219, + 164, + 13, + 115, + 209, + 228, + 224, + 24, + 124, + 170, + 202, + 48, + 5, + 112, + 196, + 86, + 3, + 25, + 15, + 33, + 37, + 152, + 149, + 16, + 30, + 114, + 73, + 196, + 140, + 41, + 132, + 85, + 210, + 28, + 193, + 226, + 21, + 147, + 18, + 51, + 61, + 77, + 174, + 155, + 201, + 122, + 99, + 124, + 27, + 49, + 59, + 86, + 89, + 222, + 86, + 126, + 163, + 208, + 134, + 249, + 182, + 242, + 141, + 254, + 67, + 1, + 93, + 175, + 47, + 169, + 88, + 248, + 46, + 95, + 216, + 220, + 136, + 129, + 241, + 90, + 128, + 166, + 225, + 0, + 134, + 103, + 34, + 185, + 201, + 88, + 130, + 69, + 184, + 104, + 40, + 144, + 237, + 209, + 72, + 92, + 26, + 27, + 88, + 49, + 60, + 20, + 50, + 108, + 172, + 182, + 119, + 9, + 9, + 44, + 30, + 161, + 166, + 175, + 138, + 235, + 45, + 216, + 131, + 66, + 15, + 131, + 55, + 84, + 37, + 217, + 40, + 52, + 91, + 200, + 41, + 50, + 158, + 202, + 79, + 75, + 213, + 151, + 24, + 58, + 161, + 83, + 251, + 246, + 118, + 49, + 117, + 66, + 103, + 56, + 7, + 72, + 119, + 181, + 223, + 31, + 61, + 182, + 116, + 170, + 40, + 121, + 45, + 139, + 216, + 247, + 52, + 149, + 189, + 148, + 229, + 78, + 248, + 138, + 5, + 108, + 135, + 109, + 106, + 245, + 18, + 23, + 172, + 105, + 241, + 199, + 124, + 97, + 240, + 147, + 110, + 199, + 247, + 204, + 179, + 195, + 177, + 79, + 85, + 39, + 73, + 48, + 100, + 125, + 44, + 83, + 237, + 211, + 52, + 79, + 27, + 134, + 173, + 229, + 196, + 224, + 30, + 226, + 25, + 49, + 160, + 142, + 229, + 220, + 239, + 87, + 236, + 187, + 243, + 94, + 177, + 74, + 166, + 115, + 37, + 137, + 157, + 226, + 119, + 107, + 1, + 219, + 64, + 58, + 129, + 239, + 164, + 139, + 168, + 118, + 252, + 108, + 10, + 125, + 64, + 198, + 64, + 40, + 142, + 63, + 55, + 108, + 38, + 213, + 190, + 249, + 181, + 8, + 248, + 201, + 30, + 14, + 84, + 203, + 2, + 211, + 117, + 236, + 177, + 118, + 66, + 192, + 41, + 141, + 17, + 151, + 129, + 242, + 116, + 61, + 91, + 27, + 86, + 133, + 48, + 199, + 178, + 208, + 18, + 237, + 25, + 209, + 230, + 152, + 163, + 102, + 176, + 113, + 236, + 70, + 37, + 17, + 58, + 39, + 96, + 81, + 40, + 39, + 45, + 47, + 243, + 211, + 107, + 96, + 159, + 74, + 207, + 78, + 129, + 20, + 186, + 170, + 104, + 44, + 138, + 1, + 166, + 246, + 101, + 123, + 44, + 188, + 220, + 176, + 132, + 26, + 135, + 104, + 104, + 110, + 204, + 231, + 159, + 199, + 147, + 122, + 253, + 218, + 237, + 94, + 41, + 222, + 30, + 14, + 139, + 12, + 49, + 41, + 10, + 18, + 209, + 28, + 125, + 232, + 244, + 243, + 34, + 4, + 52, + 9, + 37, + 51, + 117, + 222, + 216, + 233, + 69, + 56, + 145, + 123, + 196, + 22, + 23, + 85, + 1, + 253, + 134, + 105, + 43, + 156, + 51, + 224, + 72, + 214, + 108, + 81, + 196, + 168, + 46, + 101, + 193, + 198, + 62, + 141, + 38, + 129, + 13, + 14, + 25, + 29, + 199, + 226, + 152, + 227, + 198, + 229, + 190, + 240, + 125, + 252, + 193, + 143, + 167, + 50, + 155, + 218, + 17, + 142, + 10, + 211, + 58, + 205, + 128, + 24, + 221, + 101, + 233, + 45, + 25, + 255, + 49, + 246, + 228, + 38, + 75, + 171, + 211, + 151, + 149, + 12, + 214, + 30, + 225, + 111, + 76, + 59, + 201, + 12, + 147, + 74, + 241, + 198, + 226, + 232, + 25, + 65, + 27, + 57, + 3, + 206, + 80, + 211, + 77, + 238, + 90, + 82, + 163, + 93, + 191, + 94, + 196, + 199, + 181, + 248, + 6, + 34, + 110, + 28, + 219, + 184, + 99, + 24, + 109, + 183, + 57, + 57, + 248, + 98, + 107, + 165, + 14, + 111, + 5, + 197, + 213, + 232, + 175, + 234, + 202, + 88, + 221, + 227, + 72, + 51, + 253, + 73, + 222, + 110, + 46, + 111, + 149, + 185, + 27, + 199, + 197, + 194, + 62, + 130, + 193, + 248, + 67, + 251, + 79, + 15, + 242, + 202, + 66, + 88, + 22, + 203, + 227, + 171, + 220, + 1, + 133, + 45, + 51, + 92, + 249, + 205, + 7, + 173, + 171, + 80, + 215, + 94, + 161, + 111, + 73, + 93, + 133, + 186, + 45, + 241, + 3, + 205, + 22, + 114, + 9, + 210, + 80, + 220, + 192, + 60, + 26, + 73, + 27, + 74, + 12, + 50, + 40, + 36, + 186, + 95, + 57, + 243, + 63, + 126, + 29, + 63, + 136, + 77, + 123, + 169, + 133, + 38, + 96, + 172, + 141, + 58, + 181, + 0, + 237, + 122, + 106, + 52, + 250, + 225, + 152, + 17, + 185, + 162, + 22, + 111, + 108, + 143, + 35, + 208, + 200, + 187, + 4, + 153, + 110, + 105, + 122, + 0, + 26, + 105, + 19, + 104, + 68, + 127, + 73, + 150, + 76, + 74, + 54, + 57, + 239, + 50, + 122, + 177, + 83, + 49, + 32, + 118, + 3, + 219, + 190, + 111, + 19, + 129, + 17, + 49, + 116, + 54, + 248, + 238, + 190, + 222, + 230, + 222, + 186, + 187, + 211, + 173, + 108, + 177, + 111, + 28, + 177, + 91, + 89, + 243, + 197, + 187, + 37, + 151, + 106, + 167, + 66, + 117, + 155, + 19, + 110, + 36, + 30, + 126, + 167, + 254, + 76, + 79, + 162, + 18, + 142, + 177, + 38, + 31, + 245, + 33, + 118, + 170, + 27, + 157, + 140, + 53, + 24, + 67, + 10, + 120, + 122, + 95, + 185, + 81, + 92, + 138, + 120, + 213, + 16, + 126, + 89, + 64, + 168, + 177, + 246, + 178, + 202, + 156, + 34, + 32, + 207, + 75, + 88, + 223, + 209, + 9, + 16, + 141, + 192, + 169, + 25, + 141, + 86, + 100, + 54, + 221, + 193, + 221, + 102, + 231, + 242, + 12, + 222, + 111, + 186, + 9, + 215, + 154, + 120, + 103, + 58, + 33, + 174, + 70, + 26, + 45, + 161, + 0, + 250, + 244, + 250, + 4, + 200, + 123, + 40, + 120, + 222, + 207, + 112, + 36, + 118, + 31, + 148, + 206, + 221, + 135, + 216, + 193, + 163, + 25, + 202, + 94, + 223, + 155, + 63, + 243, + 186, + 192, + 59, + 198, + 161, + 188, + 49, + 148, + 213, + 72, + 46, + 115, + 133, + 252, + 156, + 235, + 200, + 26, + 253, + 2, + 176, + 245, + 8, + 127, + 100, + 147, + 244, + 183, + 9, + 11, + 199, + 160, + 210, + 4, + 199, + 232, + 26, + 65, + 4, + 242, + 116, + 2, + 9, + 9, + 13, + 41, + 11, + 160, + 8, + 34, + 248, + 96, + 97, + 204, + 78, + 140, + 77, + 60, + 158, + 96, + 61, + 119, + 76, + 12, + 164, + 57, + 5, + 65, + 34, + 161, + 52, + 102, + 43, + 240, + 100, + 160, + 53, + 99, + 30, + 192, + 5, + 211, + 161, + 199, + 55, + 178, + 15, + 121, + 49, + 53, + 123, + 56, + 119, + 31, + 163, + 196, + 125, + 172, + 74, + 109, + 50, + 160, + 237, + 166, + 40, + 79, + 56, + 183, + 15, + 29, + 98, + 2, + 78, + 62, + 76, + 39, + 233, + 53, + 31, + 162, + 32, + 73, + 212, + 217, + 73, + 228, + 20, + 218, + 48, + 253, + 21, + 61, + 155, + 78, + 94, + 217, + 114, + 178, + 167, + 112, + 77, + 113, + 30, + 252, + 224, + 244, + 102, + 38, + 1, + 81, + 39, + 85, + 108, + 78, + 160, + 45, + 33, + 50, + 242, + 104, + 216, + 185, + 146, + 173, + 250, + 113, + 75, + 126, + 18, + 48, + 112, + 44, + 4, + 244, + 33, + 38, + 133, + 204, + 194, + 170, + 180, + 80, + 64, + 45, + 246, + 35, + 171, + 49, + 179, + 213, + 141, + 123, + 73, + 27, + 75, + 122, + 197, + 9, + 182, + 237, + 185, + 210, + 229, + 18, + 27, + 247, + 202, + 46, + 117, + 197, + 45, + 172, + 104, + 147, + 175, + 2, + 52, + 87, + 99, + 92, + 154, + 234, + 2, + 150, + 241, + 124, + 208, + 123, + 129, + 179, + 149, + 161, + 177, + 85, + 110, + 214, + 132, + 53, + 53, + 164, + 21, + 182, + 161, + 85, + 57, + 214, + 90, + 208, + 46, + 214, + 170, + 197, + 5, + 58, + 216, + 157, + 18, + 207, + 192, + 42, + 215, + 164, + 170, + 226, + 145, + 64, + 113, + 118, + 9, + 20, + 139, + 54, + 63, + 1, + 27, + 167, + 38, + 223, + 48, + 176, + 65, + 55, + 71, + 180, + 182, + 89, + 39, + 152, + 185, + 43, + 94, + 223, + 176, + 83, + 97, + 57, + 154, + 216, + 183, + 124, + 157, + 164, + 229, + 189, + 225, + 83, + 201, + 125, + 144, + 33, + 118, + 210, + 227, + 245, + 90, + 80, + 217, + 244, + 102, + 168, + 145, + 97, + 185, + 198, + 237, + 31, + 10, + 115, + 179, + 158, + 184, + 186, + 20, + 80, + 212, + 223, + 121, + 142, + 227, + 165, + 238, + 239, + 18, + 71, + 231, + 156, + 188, + 211, + 75, + 102, + 65, + 67, + 231, + 162, + 117, + 62, + 56, + 83, + 167, + 162, + 133, + 229, + 206, + 47, + 217, + 37, + 126, + 130, + 177, + 222, + 21, + 230, + 57, + 122, + 144, + 126, + 98, + 79, + 230, + 26, + 199, + 136, + 141, + 167, + 134, + 76, + 105, + 36, + 198, + 56, + 53, + 132, + 86, + 28, + 9, + 116, + 101, + 82, + 125, + 237, + 110, + 143, + 237, + 250, + 171, + 172, + 39, + 3, + 228, + 209, + 216, + 193, + 145, + 34, + 208, + 160, + 208, + 39, + 234, + 217, + 48, + 54, + 29, + 254, + 29, + 131, + 70, + 6, + 178, + 184, + 211, + 211, + 221, + 124, + 29, + 197, + 42, + 219, + 52, + 160, + 236, + 147, + 58, + 17, + 218, + 19, + 70, + 92, + 116, + 86, + 237, + 178, + 6, + 12, + 227, + 240, + 163, + 249, + 36, + 118, + 12, + 177, + 179, + 207, + 26, + 143, + 123, + 175, + 114, + 76, + 67, + 80, + 252, + 177, + 58, + 189, + 183, + 157, + 79, + 91, + 237, + 148, + 113, + 250, + 118, + 124, + 66, + 240, + 155, + 176, + 215, + 175, + 127, + 121, + 88, + 4, + 53, + 202, + 133, + 93, + 64, + 183, + 150, + 132, + 126, + 55, + 249, + 231, + 252, + 96, + 132, + 115, + 167, + 236, + 78, + 87, + 73, + 201, + 193, + 80, + 92, + 153, + 191, + 164, + 177, + 5, + 23, + 50, + 64, + 157, + 161, + 207, + 88, + 74, + 143, + 121, + 91, + 52, + 117, + 76, + 245, + 159, + 96, + 40, + 141, + 52, + 84, + 113, + 57, + 255, + 154, + 97, + 237, + 252, + 57, + 95, + 179, + 123, + 75, + 9, + 206, + 198, + 112, + 28, + 247, + 150, + 146, + 181, + 194, + 57, + 219, + 21, + 95, + 205, + 8, + 190, + 206, + 22, + 101, + 128, + 25, + 215, + 62, + 78, + 165, + 1, + 75, + 59, + 73, + 165, + 74, + 158, + 122, + 27, + 147, + 74, + 215, + 175, + 226, + 214, + 91, + 5, + 29, + 118, + 36, + 135, + 28, + 221, + 135, + 101, + 159, + 104, + 211, + 30, + 78, + 189, + 59, + 60, + 163, + 214, + 156, + 170, + 109, + 80, + 218, + 141, + 195, + 204, + 55, + 89, + 54, + 215, + 211, + 127, + 122, + 109, + 75, + 88, + 128, + 134, + 249, + 22, + 218, + 21, + 203, + 183, + 92, + 115, + 124, + 195, + 18, + 47, + 171, + 205, + 154, + 117, + 20, + 186, + 157, + 0, + 116, + 227, + 216, + 158, + 129, + 49, + 166, + 48, + 197, + 12, + 79, + 192, + 24, + 251, + 206, + 96, + 204, + 185, + 24, + 112, + 242, + 184, + 217, + 218, + 183, + 21, + 168, + 57, + 138, + 115, + 110, + 153, + 241, + 89, + 185, + 105, + 211, + 137, + 109, + 180, + 26, + 61, + 136, + 167, + 121, + 166, + 199, + 10, + 13, + 20, + 154, + 3, + 41, + 109, + 195, + 16, + 10, + 145, + 132, + 50, + 135, + 9, + 81, + 48, + 118, + 86, + 122, + 166, + 141, + 63, + 86, + 171, + 145, + 107, + 173, + 71, + 24, + 196, + 84, + 53, + 105, + 159, + 96, + 68, + 219, + 158, + 142, + 48, + 175, + 217, + 182, + 180, + 97, + 40, + 181, + 227, + 26, + 85, + 96, + 141, + 57, + 27, + 63, + 82, + 212, + 5, + 203, + 214, + 12, + 191, + 210, + 199, + 184, + 166, + 123, + 144, + 60, + 125, + 118, + 53, + 94, + 12, + 46, + 2, + 29, + 157, + 250, + 182, + 53, + 193, + 107, + 140, + 176, + 194, + 60, + 118, + 51, + 47, + 146, + 125, + 134, + 91, + 168, + 90, + 167, + 155, + 57, + 122, + 8, + 213, + 142, + 227, + 230, + 63, + 235, + 174, + 60, + 13, + 99, + 199, + 222, + 150, + 85, + 178, + 143, + 130, + 204, + 25, + 18, + 23, + 206, + 239, + 234, + 19, + 45, + 218, + 183, + 119, + 146, + 141, + 242, + 182, + 5, + 67, + 103, + 40, + 41, + 34, + 187, + 98, + 227, + 122, + 132, + 232, + 100, + 216, + 208, + 49, + 48, + 99, + 128, + 211, + 171, + 196, + 182, + 73, + 13, + 122, + 96, + 82, + 88, + 94, + 223, + 71, + 9, + 94, + 242, + 172, + 205, + 58, + 136, + 20, + 20, + 41, + 97, + 123, + 44, + 174, + 82, + 219, + 33, + 203, + 167, + 42, + 6, + 67, + 216, + 134, + 161, + 160, + 53, + 189, + 167, + 39, + 248, + 236, + 49, + 249, + 103, + 57, + 132, + 215, + 24, + 49, + 206, + 70, + 142, + 225, + 197, + 210, + 241, + 227, + 112, + 179, + 26, + 136, + 183, + 9, + 68, + 86, + 35, + 167, + 157, + 247, + 4, + 165, + 17, + 90, + 41, + 29, + 171, + 193, + 210, + 129, + 252, + 133, + 40, + 206, + 199, + 212, + 196, + 82, + 103, + 43, + 76, + 192, + 113, + 50, + 72, + 85, + 85, + 54, + 65, + 36, + 204, + 104, + 126, + 108, + 112, + 239, + 109, + 166, + 223, + 126, + 225, + 215, + 191, + 253, + 162, + 227, + 189, + 221, + 242, + 178, + 27, + 253, + 211, + 100, + 221, + 242, + 178, + 67, + 248, + 44, + 199, + 115, + 46, + 137, + 238, + 46, + 250, + 72, + 213, + 200, + 68, + 228, + 91, + 208, + 146, + 78, + 105, + 214, + 132, + 161, + 238, + 106, + 246, + 241, + 100, + 72, + 21, + 1, + 91, + 26, + 214, + 253, + 109, + 32, + 77, + 58, + 91, + 75, + 219, + 4, + 62, + 254, + 1, + 117, + 117, + 28, + 181, + 85, + 112, + 215, + 13, + 247, + 160, + 64, + 119, + 205, + 240, + 171, + 199, + 153, + 142, + 36, + 75, + 205, + 146, + 109, + 88, + 106, + 91, + 79, + 193, + 30, + 30, + 2, + 38, + 131, + 248, + 4, + 236, + 89, + 93, + 96, + 15, + 127, + 18, + 101, + 127, + 0, + 155, + 116, + 170, + 157, + 72, + 64, + 100, + 38, + 106, + 167, + 186, + 129, + 74, + 143, + 17, + 175, + 44, + 88, + 27, + 173, + 49, + 31, + 67, + 9, + 246, + 228, + 240, + 152, + 40, + 72, + 217, + 74, + 123, + 156, + 185, + 88, + 104, + 117, + 154, + 134, + 47, + 186, + 49, + 157, + 99, + 6, + 210, + 177, + 43, + 76, + 138, + 241, + 53, + 91, + 52, + 57, + 39, + 103, + 185, + 53, + 111, + 163, + 106, + 138, + 6, + 108, + 33, + 124, + 94, + 214, + 93, + 210, + 23, + 93, + 114, + 245, + 189, + 196, + 209, + 42, + 114, + 111, + 230, + 112, + 67, + 63, + 109, + 52, + 252, + 196, + 41, + 176, + 121, + 199, + 14, + 57, + 31, + 48, + 189, + 120, + 253, + 180, + 107, + 16, + 26, + 221, + 216, + 252, + 43, + 4, + 52, + 235, + 160, + 12, + 219, + 136, + 227, + 87, + 106, + 214, + 57, + 168, + 32, + 141, + 174, + 225, + 132, + 206, + 131, + 226, + 120, + 52, + 121, + 156, + 5, + 240, + 132, + 34, + 125, + 124, + 108, + 160, + 19, + 234, + 26, + 221, + 43, + 221, + 53, + 73, + 205, + 226, + 216, + 178, + 94, + 184, + 157, + 60, + 36, + 105, + 117, + 142, + 79, + 105, + 162, + 131, + 64, + 111, + 88, + 78, + 23, + 196, + 106, + 52, + 172, + 213, + 234, + 219, + 127, + 79, + 60, + 255, + 76, + 43, + 226, + 31, + 210, + 242, + 62, + 133, + 169, + 242, + 233, + 66, + 130, + 2, + 21, + 13, + 158, + 157, + 215, + 99, + 218, + 201, + 85, + 114, + 211, + 34, + 177, + 183, + 28, + 94, + 15, + 116, + 65, + 173, + 95, + 27, + 235, + 0, + 220, + 179, + 49, + 6, + 151, + 191, + 42, + 22, + 98, + 238, + 33, + 215, + 140, + 99, + 142, + 113, + 37, + 129, + 41, + 228, + 54, + 166, + 109, + 72, + 213, + 186, + 49, + 94, + 66, + 106, + 93, + 234, + 108, + 92, + 196, + 143, + 20, + 6, + 206, + 70, + 49, + 169, + 251, + 22, + 141, + 181, + 98, + 5, + 215, + 177, + 113, + 73, + 230, + 122, + 150, + 83, + 87, + 122, + 77, + 40, + 216, + 128, + 45, + 174, + 72, + 171, + 198, + 165, + 8, + 34, + 254, + 255, + 28, + 200, + 249, + 30, + 62, + 79, + 223, + 158, + 127, + 179, + 75, + 29, + 203, + 200, + 6, + 120, + 111, + 208, + 232, + 191, + 62, + 5, + 116, + 199, + 121, + 95, + 181, + 131, + 67, + 140, + 192, + 100, + 115, + 163, + 101, + 172, + 77, + 88, + 132, + 33, + 190, + 152, + 67, + 165, + 87, + 96, + 191, + 7, + 201, + 126, + 74, + 25, + 73, + 215, + 120, + 26, + 103, + 152, + 48, + 47, + 242, + 164, + 202, + 132, + 200, + 84, + 99, + 34, + 40, + 123, + 202, + 207, + 104, + 108, + 107, + 148, + 13, + 198, + 142, + 5, + 145, + 15, + 179, + 222, + 177, + 238, + 40, + 243, + 169, + 229, + 247, + 253, + 147, + 182, + 249, + 92, + 63, + 86, + 229, + 91, + 49, + 152, + 88, + 227, + 164, + 237, + 191, + 248, + 86, + 189, + 233, + 101, + 42, + 160, + 11, + 93, + 2, + 212, + 131, + 17, + 186, + 115, + 168, + 242, + 244, + 55, + 158, + 120, + 173, + 159, + 130, + 142, + 55, + 205, + 233, + 116, + 98, + 201, + 25, + 20, + 200, + 222, + 193, + 146, + 205, + 19, + 40, + 112, + 119, + 217, + 140, + 159, + 183, + 202, + 189, + 181, + 34, + 130, + 45, + 148, + 70, + 125, + 230, + 91, + 33, + 130, + 205, + 224, + 175, + 103, + 247, + 217, + 236, + 4, + 60, + 148, + 0, + 101, + 137, + 11, + 57, + 27, + 216, + 108, + 53, + 238, + 133, + 17, + 40, + 209, + 108, + 180, + 203, + 123, + 67, + 189, + 215, + 252, + 70, + 156, + 180, + 143, + 254, + 47, + 104, + 187, + 118, + 143, + 103, + 90, + 219, + 98, + 203, + 238, + 52, + 48, + 179, + 23, + 71, + 71, + 255, + 55, + 79, + 222, + 157, + 156, + 53, + 52, + 96, + 214, + 21, + 123, + 27, + 149, + 142, + 80, + 36, + 5, + 89, + 115, + 135, + 96, + 93, + 21, + 33, + 221, + 160, + 234, + 157, + 124, + 11, + 166, + 100, + 217, + 90, + 75, + 177, + 214, + 244, + 223, + 81, + 211, + 117, + 170, + 75, + 232, + 40, + 118, + 67, + 174, + 50, + 235, + 54, + 204, + 45, + 18, + 246, + 46, + 249, + 156, + 231, + 82, + 249, + 122, + 9, + 143, + 75, + 209, + 232, + 12, + 164, + 73, + 202, + 221, + 34, + 208, + 138, + 55, + 96, + 32, + 228, + 170, + 85, + 97, + 204, + 155, + 149, + 65, + 56, + 179, + 250, + 52, + 166, + 162, + 227, + 149, + 187, + 147, + 128, + 233, + 66, + 255, + 193, + 177, + 201, + 78, + 129, + 211, + 87, + 4, + 9, + 39, + 136, + 27, + 232, + 55, + 130, + 132, + 3, + 100, + 81, + 120, + 212, + 51, + 30, + 147, + 30, + 138, + 239, + 106, + 187, + 127, + 209, + 14, + 117, + 159, + 213, + 72, + 64, + 3, + 158, + 168, + 79, + 95, + 214, + 21, + 161, + 93, + 237, + 93, + 49, + 154, + 155, + 188, + 134, + 204, + 214, + 42, + 94, + 137, + 206, + 25, + 11, + 81, + 236, + 115, + 154, + 78, + 171, + 213, + 26, + 235, + 132, + 225, + 164, + 158, + 182, + 123, + 157, + 3, + 60, + 124, + 229, + 141, + 179, + 245, + 163, + 25, + 70, + 188, + 16, + 200, + 198, + 104, + 188, + 169, + 165, + 192, + 66, + 97, + 13, + 114, + 69, + 61, + 18, + 97, + 179, + 167, + 245, + 246, + 112, + 203, + 232, + 78, + 235, + 33, + 65, + 134, + 33, + 114, + 164, + 123, + 60, + 246, + 190, + 235, + 5, + 108, + 68, + 220, + 92, + 84, + 26, + 73, + 21, + 226, + 52, + 3, + 155, + 33, + 179, + 244, + 25, + 10, + 85, + 64, + 16, + 121, + 73, + 163, + 231, + 138, + 120, + 6, + 185, + 206, + 144, + 108, + 217, + 173, + 29, + 145, + 101, + 176, + 55, + 55, + 150, + 225, + 178, + 9, + 70, + 220, + 24, + 189, + 107, + 200, + 21, + 152, + 166, + 127, + 123, + 10, + 50, + 232, + 233, + 140, + 171, + 40, + 243, + 244, + 68, + 110, + 222, + 141, + 99, + 31, + 117, + 5, + 47, + 98, + 88, + 219, + 254, + 226, + 189, + 225, + 33, + 166, + 44, + 137, + 15, + 248, + 224, + 87, + 212, + 197, + 211, + 107, + 152, + 211, + 45, + 155, + 27, + 163, + 89, + 127, + 1, + 6, + 105, + 112, + 185, + 30, + 207, + 91, + 207, + 84, + 111, + 148, + 53, + 57, + 197, + 164, + 24, + 2, + 93, + 180, + 39, + 189, + 190, + 155, + 234, + 161, + 9, + 83, + 101, + 187, + 247, + 193, + 111, + 127, + 225, + 103, + 245, + 217, + 106, + 48, + 104, + 223, + 210, + 132, + 242, + 123, + 138, + 16, + 188, + 73, + 176, + 201, + 19, + 72, + 14, + 16, + 60, + 28, + 93, + 108, + 62, + 250, + 207, + 200, + 230, + 203, + 37, + 154, + 69, + 161, + 1, + 204, + 233, + 135, + 117, + 219, + 206, + 61, + 192, + 4, + 41, + 52, + 144, + 250, + 140, + 4, + 194, + 218, + 164, + 211, + 3, + 212, + 197, + 48, + 12, + 174, + 40, + 98, + 123, + 206, + 15, + 220, + 24, + 238, + 250, + 15, + 123, + 244, + 67, + 208, + 116, + 111, + 86, + 195, + 22, + 208, + 113, + 139, + 106, + 232, + 2, + 253, + 22, + 168, + 237, + 17, + 135, + 128, + 245, + 46, + 76, + 196, + 1, + 107, + 16, + 134, + 0, + 99, + 21, + 219, + 19, + 15, + 154, + 25, + 113, + 174, + 92, + 155, + 235, + 94, + 145, + 37, + 40, + 4, + 106, + 83, + 58, + 177, + 76, + 47, + 60, + 100, + 197, + 62, + 237, + 156, + 215, + 128, + 244, + 41, + 19, + 14, + 87, + 157, + 202, + 178, + 70, + 39, + 174, + 155, + 236, + 212, + 1, + 245, + 35, + 238, + 89, + 122, + 252, + 215, + 192, + 222, + 109, + 176, + 245, + 198, + 123, + 239, + 58, + 12, + 6, + 193, + 96, + 12, + 217, + 211, + 52, + 51, + 63, + 181, + 79, + 243, + 228, + 115, + 72, + 14, + 59, + 141, + 24, + 157, + 65, + 136, + 123, + 197, + 226, + 225, + 43, + 25, + 167, + 29, + 216, + 213, + 116, + 22, + 35, + 117, + 138, + 135, + 231, + 134, + 41, + 242, + 28, + 177, + 127, + 224, + 70, + 156, + 230, + 184, + 55, + 27, + 92, + 211, + 86, + 32, + 29, + 141, + 252, + 31, + 218, + 27, + 152, + 40, + 182, + 11, + 78, + 217, + 78, + 212, + 74, + 57, + 68, + 159, + 12, + 204, + 208, + 81, + 188, + 10, + 225, + 49, + 216, + 92, + 177, + 71, + 121, + 118, + 212, + 167, + 224, + 71, + 209, + 47, + 198, + 51, + 106, + 59, + 145, + 113, + 86, + 207, + 168, + 13, + 143, + 202, + 52, + 252, + 32, + 93, + 174, + 199, + 116, + 161, + 26, + 14, + 193, + 203, + 32, + 132, + 172, + 170, + 92, + 62, + 4, + 94, + 24, + 218, + 84, + 61, + 35, + 34, + 190, + 122, + 56, + 181, + 141, + 72, + 16, + 193, + 124, + 87, + 104, + 68, + 246, + 20, + 22, + 173, + 24, + 131, + 253, + 241, + 148, + 50, + 250, + 73, + 47, + 86, + 196, + 211, + 21, + 58, + 93, + 159, + 68, + 61, + 28, + 19, + 195, + 97, + 126, + 122, + 183, + 25, + 163, + 182, + 26, + 241, + 229, + 185, + 35, + 218, + 168, + 241, + 22, + 243, + 233, + 132, + 133, + 62, + 203, + 159, + 54, + 247, + 185, + 249, + 224, + 75, + 28, + 59, + 90, + 247, + 193, + 159, + 24, + 115, + 208, + 46, + 205, + 125, + 238, + 89, + 112, + 63, + 151, + 125, + 213, + 118, + 103, + 20, + 150, + 210, + 134, + 49, + 57, + 150, + 227, + 30, + 222, + 83, + 17, + 212, + 145, + 13, + 194, + 230, + 64, + 85, + 27, + 44, + 201, + 160, + 99, + 135, + 118, + 20, + 85, + 139, + 129, + 227, + 121, + 80, + 83, + 149, + 160, + 123, + 192, + 94, + 22, + 170, + 231, + 223, + 9, + 111, + 42, + 113, + 248, + 77, + 94, + 43, + 223, + 107, + 16, + 21, + 249, + 140, + 145, + 127, + 181, + 147, + 251, + 245, + 26, + 222, + 6, + 240, + 28, + 134, + 71, + 215, + 175, + 156, + 0, + 120, + 216, + 5, + 224, + 85, + 3, + 210, + 58, + 112, + 164, + 226, + 124, + 216, + 64, + 204, + 118, + 99, + 50, + 181, + 43, + 180, + 100, + 199, + 84, + 159, + 71, + 91, + 213, + 7, + 59, + 237, + 244, + 65, + 212, + 40, + 156, + 6, + 62, + 185, + 11, + 85, + 118, + 69, + 120, + 12, + 97, + 46, + 229, + 240, + 68, + 63, + 39, + 244, + 165, + 84, + 141, + 92, + 236, + 90, + 35, + 156, + 13, + 134, + 49, + 86, + 163, + 158, + 11, + 135, + 193, + 88, + 195, + 194, + 42, + 32, + 133, + 3, + 243, + 7, + 65, + 111, + 139, + 96, + 79, + 175, + 142, + 25, + 246, + 52, + 106, + 20, + 200, + 32, + 47, + 24, + 188, + 99, + 63, + 240, + 102, + 23, + 77, + 212, + 1, + 52, + 137, + 165, + 145, + 121, + 167, + 2, + 204, + 18, + 202, + 2, + 10, + 161, + 177, + 85, + 55, + 255, + 5, + 230, + 145, + 142, + 141, + 208, + 25, + 193, + 226, + 21, + 234, + 240, + 106, + 172, + 111, + 7, + 227, + 54, + 142, + 70, + 167, + 50, + 188, + 29, + 201, + 225, + 214, + 154, + 238, + 24, + 249, + 156, + 208, + 190, + 243, + 86, + 66, + 183, + 240, + 48, + 108, + 244, + 117, + 166, + 91, + 120, + 24, + 31, + 38, + 222, + 226, + 41, + 216, + 123, + 12, + 164, + 22, + 113, + 197, + 201, + 176, + 36, + 214, + 84, + 85, + 33, + 56, + 131, + 237, + 73, + 4, + 45, + 150, + 253, + 105, + 255, + 127, + 191, + 9, + 44, + 95, + 255, + 239, + 132, + 171, + 110, + 33, + 96, + 157, + 36, + 172, + 177, + 220, + 78, + 247, + 185, + 229, + 228, + 163, + 12, + 169, + 230, + 79, + 71, + 203, + 177, + 220, + 70, + 25, + 27, + 51, + 57, + 127, + 43, + 252, + 141, + 199, + 0, + 98, + 42, + 200, + 76, + 122, + 146, + 34, + 35, + 96, + 46, + 64, + 138, + 221, + 48, + 235, + 94, + 110, + 184, + 53, + 228, + 12, + 62, + 105, + 30, + 143, + 17, + 181, + 5, + 178, + 173, + 209, + 169, + 221, + 91, + 10, + 157, + 59, + 172, + 119, + 210, + 247, + 148, + 161, + 251, + 69, + 151, + 49, + 116, + 62, + 3, + 119, + 14, + 189, + 9, + 97, + 108, + 13, + 127, + 227, + 41, + 251, + 237, + 210, + 198, + 251, + 192, + 56, + 59, + 85, + 111, + 74, + 45, + 136, + 96, + 50, + 200, + 28, + 141, + 51, + 17, + 153, + 6, + 202, + 55, + 67, + 240, + 235, + 24, + 92, + 175, + 192, + 121, + 121, + 245, + 29, + 231, + 172, + 87, + 137, + 107, + 232, + 129, + 17, + 120, + 20, + 143, + 113, + 49, + 188, + 242, + 62, + 12, + 240, + 109, + 162, + 175, + 175, + 5, + 26, + 247, + 238, + 71, + 69, + 234, + 26, + 47, + 224, + 173, + 157, + 34, + 88, + 33, + 144, + 105, + 177, + 8, + 246, + 151, + 199, + 160, + 115, + 209, + 94, + 239, + 149, + 149, + 232, + 20, + 192, + 53, + 27, + 73, + 29, + 58, + 23, + 144, + 174, + 152, + 152, + 243, + 204, + 68, + 239, + 53, + 110, + 247, + 68, + 194, + 123, + 218, + 164, + 123, + 74, + 15, + 105, + 99, + 115, + 26, + 48, + 242, + 10, + 81, + 120, + 41, + 244, + 242, + 57, + 38, + 122, + 78, + 72, + 98, + 113, + 133, + 199, + 17, + 119, + 205, + 183, + 116, + 188, + 241, + 36, + 79, + 160, + 47, + 250, + 104, + 232, + 171, + 118, + 140, + 123, + 53, + 74, + 60, + 86, + 35, + 67, + 28, + 61, + 139, + 87, + 135, + 134, + 195, + 134, + 84, + 228, + 244, + 89, + 172, + 4, + 215, + 139, + 178, + 116, + 242, + 185, + 116, + 2, + 141, + 25, + 143, + 0, + 126, + 191, + 188, + 182, + 117, + 243, + 83, + 141, + 85, + 91, + 69, + 10, + 216, + 205, + 79, + 117, + 132, + 91, + 96, + 158, + 255, + 164, + 217, + 20, + 188, + 134, + 45, + 120, + 228, + 222, + 92, + 157, + 46, + 93, + 136, + 219, + 125, + 39, + 227, + 82, + 224, + 141, + 216, + 194, + 227, + 20, + 131, + 122, + 246, + 128, + 217, + 234, + 12, + 117, + 187, + 101, + 15, + 200, + 246, + 110, + 55, + 192, + 124, + 126, + 62, + 134, + 96, + 159, + 68, + 160, + 29, + 195, + 71, + 11, + 112, + 113, + 88, + 27, + 86, + 225, + 35, + 2, + 114, + 122, + 88, + 116, + 187, + 59, + 51, + 141, + 60, + 206, + 198, + 209, + 244, + 111, + 164, + 199, + 154, + 28, + 255, + 32, + 3, + 175, + 138, + 110, + 250, + 234, + 179, + 72, + 11, + 61, + 139, + 170, + 80, + 11, + 67, + 98, + 121, + 151, + 70, + 193, + 21, + 97, + 162, + 133, + 176, + 204, + 147, + 154, + 219, + 174, + 125, + 169, + 7, + 71, + 196, + 6, + 98, + 73, + 131, + 122, + 255, + 231, + 29, + 169, + 125, + 56, + 28, + 128, + 233, + 52, + 127, + 64, + 1, + 49, + 122, + 7, + 27, + 249, + 222, + 248, + 188, + 6, + 131, + 240, + 0, + 155, + 173, + 25, + 142, + 44, + 110, + 16, + 18, + 154, + 26, + 92, + 83, + 142, + 220, + 223, + 212, + 133, + 248, + 178, + 164, + 211, + 122, + 236, + 186, + 139, + 48, + 159, + 39, + 148, + 162, + 54, + 138, + 128, + 217, + 208, + 249, + 181, + 33, + 128, + 122, + 177, + 225, + 12, + 48, + 180, + 227, + 226, + 27, + 93, + 217, + 223, + 232, + 209, + 40, + 67, + 93, + 216, + 31, + 122, + 255, + 126, + 66, + 210, + 95, + 141, + 72, + 41, + 98, + 30, + 171, + 209, + 200, + 117, + 22, + 69, + 224, + 177, + 67, + 131, + 248, + 55, + 58, + 209, + 115, + 56, + 187, + 183, + 71, + 117, + 120, + 132, + 200, + 58, + 211, + 44, + 157, + 163, + 186, + 247, + 236, + 33, + 157, + 164, + 24, + 91, + 233, + 181, + 43, + 46, + 192, + 97, + 163, + 147, + 54, + 68, + 128, + 174, + 192, + 120, + 86, + 196, + 248, + 24, + 40, + 170, + 35, + 46, + 225, + 15, + 15, + 53, + 76, + 70, + 240, + 188, + 128, + 70, + 165, + 127, + 94, + 35, + 44, + 45, + 113, + 70, + 234, + 254, + 80, + 74, + 78, + 42, + 169, + 203, + 69, + 99, + 63, + 189, + 51, + 240, + 47, + 103, + 228, + 20, + 243, + 254, + 94, + 221, + 83, + 58, + 178, + 75, + 218, + 244, + 90, + 213, + 34, + 243, + 198, + 39, + 219, + 167, + 36, + 35, + 241, + 41, + 253, + 160, + 181, + 142, + 144, + 22, + 110, + 66, + 90, + 158, + 122, + 151, + 28, + 183, + 25, + 160, + 138, + 212, + 232, + 125, + 229, + 75, + 133, + 56, + 166, + 98, + 23, + 45, + 174, + 13, + 230, + 214, + 70, + 82, + 177, + 187, + 149, + 77, + 195, + 120, + 42, + 119, + 204, + 230, + 41, + 50, + 246, + 220, + 34, + 12, + 185, + 113, + 96, + 236, + 144, + 15, + 50, + 55, + 122, + 139, + 207, + 1, + 180, + 148, + 26, + 71, + 129, + 238, + 27, + 160, + 70, + 161, + 58, + 232, + 74, + 57, + 116, + 177, + 185, + 255, + 161, + 172, + 22, + 196, + 213, + 120, + 216, + 223, + 66, + 42, + 133, + 227, + 92, + 156, + 2, + 74, + 83, + 198, + 231, + 42, + 226, + 190, + 233, + 132, + 128, + 94, + 113, + 31, + 203, + 8, + 141, + 151, + 155, + 179, + 46, + 208, + 117, + 220, + 60, + 169, + 145, + 127, + 143, + 211, + 156, + 73, + 71, + 33, + 193, + 246, + 248, + 192, + 42, + 210, + 168, + 22, + 194, + 156, + 210, + 232, + 126, + 143, + 75, + 193, + 120, + 134, + 141, + 251, + 99, + 138, + 224, + 37, + 178, + 111, + 190, + 60, + 107, + 114, + 46, + 220, + 176, + 53, + 76, + 122, + 172, + 50, + 142, + 196, + 7, + 233, + 161, + 123, + 86, + 142, + 156, + 165, + 187, + 207, + 177, + 2, + 55, + 205, + 30, + 174, + 65, + 73, + 206, + 170, + 24, + 157, + 254, + 142, + 100, + 19, + 208, + 86, + 56, + 133, + 72, + 135, + 243, + 9, + 232, + 242, + 36, + 114, + 234, + 152, + 4, + 196, + 238, + 175, + 130, + 141, + 188, + 14, + 143, + 162, + 100, + 11, + 129, + 184, + 238, + 190, + 252, + 88, + 28, + 135, + 192, + 138, + 141, + 248, + 38, + 139, + 130, + 120, + 78, + 230, + 127, + 172, + 238, + 251, + 45, + 171, + 170, + 170, + 249, + 213, + 6, + 9, + 161, + 210, + 180, + 247, + 126, + 7, + 144, + 196, + 62, + 24, + 236, + 4, + 146, + 108, + 236, + 208, + 29, + 33, + 53, + 37, + 63, + 55, + 31, + 175, + 205, + 172, + 105, + 3, + 115, + 167, + 185, + 142, + 48, + 131, + 32, + 134, + 232, + 235, + 37, + 52, + 228, + 126, + 43, + 74, + 135, + 181, + 213, + 198, + 81, + 125, + 155, + 108, + 164, + 99, + 121, + 236, + 138, + 142, + 16, + 110, + 203, + 103, + 148, + 167, + 74, + 221, + 115, + 115, + 183, + 94, + 26, + 155, + 146, + 195, + 183, + 187, + 83, + 104, + 71, + 6, + 27, + 253, + 94, + 158, + 156, + 231, + 239, + 182, + 22, + 84, + 25, + 62, + 160, + 111, + 244, + 35, + 246, + 204, + 73, + 26, + 97, + 104, + 72, + 10, + 67, + 61, + 113, + 196, + 122, + 253, + 149, + 23, + 89, + 84, + 94, + 235, + 210, + 104, + 60, + 127, + 212, + 156, + 111, + 72, + 225, + 249, + 243, + 176, + 192, + 239, + 5, + 114, + 156, + 50, + 147, + 123, + 165, + 115, + 206, + 67, + 146, + 161, + 79, + 26, + 241, + 8, + 8, + 154, + 158, + 253, + 232, + 224, + 230, + 9, + 16, + 36, + 77, + 64, + 208, + 59, + 55, + 134, + 15, + 173, + 100, + 187, + 104, + 4, + 110, + 197, + 207, + 46, + 100, + 237, + 195, + 31, + 38, + 44, + 196, + 181, + 63, + 1, + 89, + 91, + 19, + 120, + 242, + 8, + 167, + 202, + 69, + 46, + 203, + 0, + 97, + 29, + 49, + 143, + 154, + 143, + 37, + 37, + 89, + 133, + 94, + 147, + 94, + 225, + 4, + 217, + 75, + 27, + 119, + 13, + 207, + 85, + 84, + 27, + 26, + 27, + 232, + 158, + 139, + 151, + 106, + 116, + 120, + 20, + 5, + 255, + 168, + 26, + 251, + 80, + 148, + 13, + 195, + 132, + 67, + 167, + 206, + 162, + 124, + 73, + 25, + 60, + 131, + 170, + 81, + 30, + 141, + 106, + 30, + 25, + 202, + 113, + 13, + 214, + 141, + 213, + 5, + 56, + 67, + 213, + 209, + 72, + 193, + 107, + 169, + 78, + 33, + 215, + 118, + 171, + 171, + 112, + 207, + 248, + 172, + 85, + 120, + 131, + 46, + 70, + 108, + 243, + 95, + 5, + 67, + 214, + 77, + 201, + 201, + 223, + 83, + 25, + 72, + 74, + 160, + 232, + 180, + 154, + 182, + 219, + 210, + 233, + 11, + 41, + 52, + 180, + 122, + 220, + 225, + 241, + 174, + 211, + 77, + 86, + 115, + 241, + 93, + 217, + 118, + 115, + 220, + 198, + 56, + 113, + 90, + 236, + 230, + 184, + 49, + 137, + 160, + 175, + 247, + 203, + 218, + 250, + 170, + 113, + 145, + 75, + 11, + 118, + 227, + 52, + 153, + 81, + 129, + 24, + 227, + 105, + 114, + 90, + 245, + 36, + 82, + 185, + 243, + 16, + 177, + 20, + 253, + 201, + 196, + 120, + 89, + 63, + 250, + 164, + 225, + 58, + 38, + 206, + 48, + 140, + 197, + 141, + 202, + 85, + 54, + 3, + 244, + 169, + 224, + 147, + 230, + 228, + 177, + 41, + 76, + 93, + 193, + 106, + 244, + 171, + 141, + 176, + 208, + 37, + 125, + 125, + 74, + 46, + 133, + 117, + 138, + 159, + 100, + 173, + 88, + 250, + 109, + 101, + 118, + 31, + 69, + 35, + 33, + 98, + 80, + 91, + 157, + 68, + 28, + 31, + 166, + 106, + 204, + 213, + 75, + 23, + 242, + 165, + 119, + 126, + 79, + 78, + 171, + 145, + 109, + 20, + 129, + 214, + 104, + 20, + 132, + 136, + 42, + 112, + 50, + 191, + 108, + 36, + 219, + 164, + 56, + 73, + 42, + 240, + 76, + 74, + 239, + 90, + 197, + 35, + 62, + 184, + 100, + 105, + 84, + 173, + 170, + 207, + 45, + 199, + 12, + 117, + 84, + 143, + 115, + 161, + 192, + 152, + 233, + 24, + 196, + 65, + 96, + 137, + 205, + 131, + 171, + 176, + 144, + 130, + 32, + 87, + 99, + 55, + 58, + 208, + 34, + 5, + 91, + 214, + 24, + 160, + 228, + 230, + 71, + 75, + 247, + 122, + 38, + 35, + 190, + 228, + 72, + 84, + 244, + 212, + 30, + 64, + 252, + 204, + 238, + 53, + 66, + 73, + 108, + 187, + 242, + 70, + 240, + 8, + 37, + 209, + 174, + 92, + 188, + 70, + 101, + 79, + 159, + 148, + 44, + 247, + 30, + 72, + 41, + 244, + 154, + 253, + 224, + 73, + 180, + 85, + 155, + 50, + 103, + 128, + 143, + 158, + 195, + 94, + 188, + 182, + 166, + 151, + 128, + 59, + 88, + 115, + 84, + 183, + 240, + 215, + 189, + 118, + 129, + 208, + 38, + 121, + 143, + 187, + 241, + 183, + 119, + 112, + 140, + 102, + 8, + 48, + 109, + 106, + 156, + 104, + 32, + 46, + 144, + 129, + 174, + 214, + 56, + 226, + 130, + 172, + 227, + 23, + 255, + 189, + 197, + 108, + 104, + 211, + 203, + 244, + 112, + 179, + 170, + 242, + 20, + 6, + 240, + 224, + 56, + 78, + 241, + 9, + 249, + 226, + 184, + 217, + 31, + 224, + 121, + 216, + 141, + 104, + 207, + 22, + 216, + 115, + 132, + 163, + 192, + 103, + 38, + 228, + 236, + 62, + 104, + 99, + 204, + 11, + 187, + 208, + 57, + 206, + 151, + 254, + 133, + 116, + 19, + 122, + 98, + 247, + 30, + 188, + 131, + 26, + 223, + 79, + 60, + 251, + 153, + 26, + 59, + 26, + 210, + 1, + 107, + 135, + 118, + 179, + 215, + 130, + 88, + 46, + 250, + 195, + 158, + 118, + 214, + 181, + 113, + 43, + 237, + 5, + 123, + 118, + 218, + 68, + 221, + 248, + 21, + 28, + 39, + 167, + 31, + 91, + 199, + 22, + 225, + 2, + 98, + 144, + 209, + 153, + 191, + 198, + 100, + 32, + 177, + 115, + 236, + 67, + 118, + 251, + 61, + 40, + 80, + 187, + 116, + 222, + 96, + 67, + 26, + 77, + 197, + 89, + 24, + 204, + 252, + 31, + 234, + 104, + 86, + 179, + 3, + 161, + 89, + 18, + 228, + 2, + 158, + 152, + 80, + 83, + 133, + 33, + 20, + 84, + 98, + 207, + 189, + 236, + 5, + 230, + 142, + 226, + 163, + 134, + 25, + 136, + 235, + 129, + 58, + 223, + 236, + 94, + 174, + 7, + 138, + 105, + 144, + 89, + 118, + 250, + 241, + 132, + 62, + 221, + 136, + 106, + 13, + 38, + 111, + 16, + 109, + 204, + 160, + 19, + 97, + 207, + 38, + 14, + 63, + 205, + 39, + 196, + 177, + 108, + 111, + 61, + 166, + 92, + 56, + 196, + 69, + 218, + 119, + 196, + 136, + 185, + 84, + 72, + 66, + 168, + 230, + 123, + 11, + 123, + 100, + 139, + 103, + 50, + 52, + 86, + 100, + 142, + 57, + 224, + 224, + 16, + 171, + 73, + 151, + 113, + 230, + 43, + 242, + 83, + 21, + 55, + 48, + 150, + 198, + 34, + 193, + 113, + 131, + 27, + 106, + 87, + 21, + 43, + 93, + 242, + 253, + 189, + 34, + 86, + 202, + 68, + 73, + 151, + 68, + 76, + 69, + 177, + 210, + 2, + 149, + 217, + 248, + 141, + 7, + 98, + 165, + 79, + 140, + 71, + 59, + 30, + 176, + 128, + 239, + 160, + 254, + 129, + 28, + 105, + 129, + 116, + 44, + 224, + 101, + 91, + 142, + 192, + 141, + 217, + 229, + 186, + 242, + 73, + 194, + 8, + 154, + 176, + 214, + 108, + 4, + 161, + 121, + 192, + 214, + 37, + 243, + 105, + 176, + 234, + 53, + 210, + 73, + 109, + 197, + 59, + 72, + 136, + 22, + 82, + 65, + 138, + 251, + 199, + 134, + 91, + 122, + 81, + 56, + 97, + 248, + 164, + 232, + 59, + 115, + 156, + 208, + 58, + 243, + 124, + 22, + 195, + 166, + 189, + 67, + 44, + 184, + 220, + 41, + 22, + 148, + 57, + 155, + 99, + 38, + 194, + 59, + 148, + 57, + 83, + 57, + 230, + 2, + 87, + 187, + 242, + 2, + 36, + 52, + 183, + 202, + 104, + 244, + 251, + 37, + 114, + 105, + 91, + 248, + 164, + 186, + 99, + 84, + 93, + 37, + 196, + 67, + 168, + 145, + 148, + 128, + 50, + 193, + 61, + 254, + 67, + 141, + 75, + 190, + 168, + 62, + 105, + 203, + 64, + 19, + 24, + 75, + 173, + 145, + 99, + 99, + 126, + 109, + 33, + 83, + 224, + 179, + 110, + 202, + 243, + 186, + 38, + 198, + 67, + 245, + 106, + 2, + 216, + 132, + 25, + 99, + 117, + 41, + 138, + 157, + 110, + 36, + 173, + 36, + 53, + 98, + 131, + 41, + 157, + 185, + 24, + 30, + 39, + 102, + 24, + 67, + 49, + 239, + 20, + 248, + 125, + 164, + 178, + 194, + 109, + 104, + 38, + 99, + 103, + 12, + 154, + 75, + 201, + 70, + 236, + 230, + 124, + 137, + 95, + 250, + 186, + 20, + 62, + 46, + 42, + 92, + 132, + 16, + 187, + 248, + 84, + 249, + 38, + 14, + 73, + 105, + 248, + 27, + 211, + 133, + 153, + 130, + 134, + 207, + 232, + 204, + 199, + 16, + 209, + 6, + 18, + 109, + 204, + 155, + 244, + 8, + 45, + 198, + 88, + 179, + 146, + 130, + 78, + 185, + 41, + 67, + 10, + 90, + 164, + 199, + 80, + 17, + 119, + 90, + 19, + 108, + 196, + 129, + 131, + 85, + 140, + 102, + 128, + 89, + 104, + 62, + 248, + 48, + 152, + 154, + 227, + 202, + 237, + 246, + 178, + 170, + 196, + 5, + 251, + 54, + 59, + 109, + 109, + 93, + 176, + 47, + 43, + 36, + 76, + 54, + 222, + 238, + 3, + 50, + 167, + 119, + 29, + 116, + 179, + 118, + 217, + 89, + 249, + 132, + 163, + 81, + 87, + 239, + 209, + 244, + 180, + 146, + 136, + 224, + 11, + 195, + 182, + 171, + 219, + 192, + 5, + 227, + 229, + 136, + 94, + 114, + 218, + 165, + 160, + 130, + 210, + 10, + 149, + 39, + 197, + 190, + 199, + 19, + 10, + 221, + 8, + 250, + 108, + 186, + 114, + 238, + 15, + 253, + 99, + 149, + 140, + 49, + 167, + 132, + 100, + 182, + 58, + 25, + 195, + 120, + 198, + 3, + 189, + 135, + 205, + 77, + 198, + 135, + 229, + 61, + 121, + 2, + 244, + 180, + 198, + 109, + 64, + 61, + 1, + 154, + 119, + 184, + 13, + 220, + 147, + 43, + 213, + 216, + 62, + 138, + 244, + 167, + 158, + 0, + 77, + 22, + 214, + 142, + 109, + 150, + 192, + 159, + 136, + 66, + 189, + 158, + 210, + 86, + 103, + 99, + 160, + 139, + 182, + 147, + 251, + 143, + 76, + 129, + 213, + 243, + 157, + 214, + 16, + 59, + 130, + 167, + 172, + 203, + 170, + 198, + 50, + 151, + 202, + 180, + 252, + 125, + 146, + 167, + 19, + 164, + 30, + 167, + 41, + 39, + 37, + 160, + 252, + 54, + 232, + 224, + 209, + 25, + 220, + 232, + 147, + 14, + 29, + 161, + 111, + 68, + 165, + 65, + 232, + 77, + 28, + 50, + 113, + 200, + 74, + 27, + 243, + 191, + 108, + 129, + 170, + 198, + 193, + 193, + 53, + 105, + 203, + 34, + 152, + 100, + 210, + 216, + 117, + 175, + 9, + 115, + 111, + 9, + 57, + 176, + 57, + 200, + 144, + 238, + 14, + 137, + 120, + 160, + 72, + 158, + 241, + 184, + 147, + 61, + 58, + 179, + 67, + 17, + 29, + 19, + 162, + 29, + 175, + 193, + 110, + 231, + 110, + 129, + 189, + 90, + 109, + 51, + 209, + 163, + 39, + 117, + 141, + 16, + 170, + 59, + 183, + 202, + 121, + 110, + 145, + 59, + 12, + 121, + 223, + 57, + 189, + 22, + 117, + 99, + 19, + 97, + 170, + 88, + 99, + 131, + 134, + 83, + 193, + 104, + 206, + 80, + 122, + 254, + 6, + 139, + 235, + 24, + 73, + 42, + 250, + 211, + 236, + 229, + 30, + 143, + 33, + 254, + 93, + 69, + 146, + 200, + 19, + 141, + 67, + 81, + 27, + 207, + 204, + 6, + 246, + 199, + 54, + 19, + 243, + 34, + 202, + 36, + 195, + 237, + 190, + 27, + 55, + 85, + 18, + 87, + 26, + 143, + 208, + 254, + 228, + 218, + 219, + 125, + 247, + 128, + 208, + 3, + 225, + 113, + 115, + 163, + 249, + 16, + 25, + 3, + 205, + 112, + 83, + 122, + 202, + 49, + 63, + 49, + 43, + 120, + 123, + 123, + 206, + 108, + 18, + 156, + 194, + 184, + 117, + 190, + 59, + 76, + 137, + 220, + 157, + 153, + 26, + 77, + 122, + 220, + 151, + 120, + 160, + 196, + 34, + 224, + 76, + 235, + 244, + 80, + 104, + 220, + 109, + 109, + 197, + 148, + 37, + 37, + 231, + 231, + 53, + 154, + 155, + 176, + 78, + 231, + 231, + 133, + 206, + 76, + 25, + 33, + 36, + 189, + 217, + 148, + 108, + 167, + 23, + 126, + 112, + 73, + 21, + 144, + 206, + 246, + 139, + 144, + 14, + 195, + 230, + 56, + 35, + 172, + 26, + 194, + 186, + 92, + 179, + 28, + 207, + 236, + 142, + 145, + 188, + 212, + 130, + 58, + 5, + 171, + 223, + 222, + 121, + 94, + 63, + 207, + 26, + 169, + 101, + 34, + 236, + 29, + 59, + 178, + 85, + 129, + 158, + 9, + 126, + 50, + 132, + 52, + 209, + 100, + 45, + 52, + 143, + 4, + 101, + 17, + 140, + 221, + 56, + 160, + 144, + 53, + 1, + 103, + 56, + 105, + 111, + 214, + 33, + 186, + 104, + 72, + 230, + 234, + 180, + 13, + 25, + 19, + 84, + 198, + 91, + 227, + 177, + 99, + 168, + 74, + 96, + 186, + 41, + 111, + 35, + 248, + 229, + 217, + 166, + 28, + 151, + 100, + 185, + 45, + 247, + 233, + 206, + 146, + 3, + 45, + 69, + 242, + 3, + 187, + 66, + 169, + 49, + 72, + 76, + 213, + 92, + 161, + 20, + 210, + 177, + 82, + 142, + 84, + 107, + 133, + 162, + 139, + 128, + 145, + 26, + 89, + 209, + 145, + 223, + 114, + 58, + 193, + 124, + 2, + 30, + 29, + 215, + 210, + 160, + 186, + 216, + 107, + 233, + 38, + 191, + 229, + 220, + 192, + 249, + 88, + 32, + 144, + 247, + 140, + 53, + 145, + 171, + 194, + 196, + 175, + 9, + 159, + 103, + 228, + 171, + 57, + 65, + 141, + 143, + 176, + 173, + 213, + 165, + 43, + 59, + 206, + 58, + 73, + 115, + 18, + 83, + 2, + 80, + 202, + 238, + 74, + 31, + 255, + 247, + 142, + 111, + 186, + 249, + 152, + 109, + 110, + 116, + 208, + 53, + 6, + 102, + 228, + 208, + 64, + 183, + 6, + 39, + 153, + 129, + 12, + 110, + 140, + 8, + 92, + 78, + 123, + 215, + 56, + 22, + 178, + 144, + 136, + 190, + 187, + 209, + 36, + 158, + 104, + 157, + 90, + 44, + 36, + 16, + 118, + 146, + 206, + 145, + 24, + 171, + 23, + 16, + 199, + 155, + 151, + 28, + 175, + 78, + 187, + 27, + 55, + 147, + 27, + 186, + 66, + 228, + 234, + 65, + 110, + 112, + 13, + 127, + 30, + 85, + 254, + 211, + 94, + 98, + 225, + 172, + 177, + 106, + 227, + 131, + 48, + 116, + 90, + 72, + 240, + 121, + 230, + 240, + 117, + 12, + 80, + 25, + 176, + 174, + 221, + 153, + 244, + 238, + 170, + 18, + 30, + 97, + 197, + 150, + 235, + 176, + 82, + 2, + 223, + 147, + 109, + 251, + 24, + 159, + 242, + 140, + 32, + 105, + 252, + 186, + 104, + 120, + 70, + 208, + 12, + 165, + 227, + 249, + 197, + 167, + 243, + 169, + 244, + 111, + 28, + 231, + 171, + 23, + 253, + 125, + 28, + 184, + 154, + 157, + 198, + 160, + 36, + 30, + 3, + 23, + 171, + 251, + 115, + 72, + 240, + 48, + 211, + 184, + 86, + 179, + 145, + 147, + 249, + 76, + 27, + 67, + 43, + 105, + 17, + 144, + 24, + 31, + 234, + 22, + 179, + 187, + 125, + 59, + 52, + 254, + 152, + 110, + 181, + 128, + 177, + 211, + 173, + 131, + 209, + 209, + 94, + 10, + 27, + 200, + 110, + 141, + 178, + 231, + 178, + 155, + 180, + 10, + 187, + 216, + 173, + 5, + 99, + 97, + 215, + 37, + 172, + 250, + 136, + 239, + 119, + 29, + 231, + 172, + 121, + 138, + 176, + 109, + 64, + 99, + 106, + 124, + 187, + 139, + 157, + 175, + 134, + 79, + 143, + 215, + 123, + 76, + 42, + 39, + 13, + 149, + 142, + 87, + 241, + 121, + 2, + 133, + 50, + 224, + 170, + 41, + 243, + 4, + 222, + 51, + 244, + 184, + 122, + 146, + 14, + 127, + 204, + 210, + 34, + 152, + 123, + 117, + 210, + 154, + 104, + 130, + 217, + 8, + 75, + 141, + 75, + 39, + 235, + 227, + 242, + 107, + 149, + 35, + 137, + 78, + 192, + 33, + 141, + 203, + 79, + 230, + 0, + 180, + 25, + 14, + 101, + 210, + 107, + 207, + 252, + 123, + 114, + 67, + 164, + 83, + 207, + 181, + 111, + 199, + 106, + 170, + 193, + 237, + 18, + 231, + 186, + 80, + 137, + 148, + 26, + 59, + 51, + 245, + 221, + 154, + 36, + 12, + 11, + 120, + 204, + 235, + 187, + 135, + 177, + 50, + 189, + 163, + 244, + 250, + 239, + 76, + 80, + 110, + 156, + 191, + 169, + 14, + 152, + 35, + 214, + 26, + 102, + 160, + 246, + 195, + 82, + 120, + 112, + 107, + 46, + 251, + 239, + 224, + 164, + 198, + 140, + 77, + 167, + 144, + 17, + 75, + 136, + 151, + 213, + 90, + 107, + 167, + 144, + 113, + 156, + 240, + 210, + 199, + 222, + 186, + 192, + 187, + 238, + 200, + 59, + 35, + 7, + 244, + 89, + 215, + 91, + 140, + 171, + 83, + 13, + 157, + 185, + 134, + 41, + 200, + 168, + 63, + 54, + 253, + 41, + 216, + 224, + 148, + 22, + 221, + 100, + 39, + 243, + 248, + 168, + 241, + 140, + 118, + 182, + 157, + 114, + 169, + 122, + 6, + 205, + 237, + 46, + 85, + 228, + 49, + 156, + 137, + 199, + 125, + 85, + 223, + 175, + 42, + 90, + 180, + 11, + 232, + 214, + 221, + 73, + 226, + 93, + 48, + 167, + 237, + 16, + 253, + 200, + 173, + 198, + 103, + 74, + 96, + 123, + 194, + 74, + 104, + 116, + 190, + 46, + 122, + 105, + 11, + 232, + 176, + 208, + 13, + 178, + 182, + 249, + 221, + 210, + 195, + 246, + 8, + 195, + 8, + 222, + 161, + 81, + 84, + 28, + 161, + 231, + 90, + 133, + 59, + 120, + 26, + 83, + 149, + 219, + 148, + 29, + 155, + 142, + 85, + 99, + 228, + 213, + 153, + 229, + 187, + 81, + 211, + 131, + 186, + 125, + 39, + 219, + 225, + 82, + 74, + 23, + 58, + 227, + 113, + 24, + 86, + 53, + 227, + 203, + 128, + 103, + 167, + 105, + 60, + 110, + 7, + 208, + 40, + 140, + 33, + 205, + 239, + 247, + 151, + 2, + 78, + 231, + 162, + 189, + 222, + 229, + 71, + 150, + 253, + 160, + 234, + 132, + 189, + 96, + 162, + 53, + 38, + 79, + 147, + 31, + 110, + 203, + 203, + 248, + 154, + 204, + 171, + 97, + 127, + 115, + 215, + 106, + 198, + 173, + 141, + 55, + 53, + 7, + 240, + 142, + 253, + 250, + 138, + 41, + 156, + 83, + 64, + 38, + 55, + 74, + 203, + 105, + 186, + 113, + 169, + 106, + 56, + 73, + 200, + 114, + 204, + 83, + 210, + 73, + 174, + 110, + 190, + 228, + 102, + 126, + 13, + 126, + 169, + 237, + 99, + 206, + 217, + 18, + 94, + 141, + 57, + 22, + 158, + 37, + 175, + 232, + 242, + 161, + 147, + 227, + 58, + 243, + 200, + 238, + 246, + 110, + 246, + 109, + 219, + 86, + 35, + 17, + 148, + 117, + 131, + 105, + 220, + 90, + 92, + 211, + 115, + 60, + 220, + 85, + 218, + 215, + 167, + 112, + 92, + 2, + 157, + 22, + 229, + 28, + 155, + 92, + 169, + 218, + 56, + 188, + 226, + 61, + 93, + 169, + 26, + 238, + 31, + 15, + 50, + 140, + 7, + 235, + 154, + 52, + 223, + 77, + 14, + 31, + 67, + 238, + 186, + 85, + 99, + 118, + 177, + 194, + 210, + 213, + 216, + 72, + 186, + 131, + 213, + 230, + 36, + 110, + 233, + 148, + 198, + 246, + 68, + 182, + 156, + 10, + 245, + 222, + 94, + 111, + 239, + 215, + 132, + 201, + 38, + 216, + 99, + 83, + 227, + 99, + 219, + 62, + 142, + 244, + 43, + 11, + 14, + 145, + 31, + 19, + 78, + 105, + 70, + 172, + 205, + 177, + 220, + 89, + 118, + 107, + 146, + 214, + 52, + 177, + 13, + 27, + 227, + 97, + 222, + 53, + 56, + 254, + 186, + 59, + 83, + 198, + 58, + 62, + 189, + 228, + 27, + 3, + 166, + 83, + 12, + 236, + 48, + 83, + 38, + 6, + 110, + 142, + 72, + 116, + 190, + 214, + 178, + 206, + 116, + 199, + 200, + 114, + 234, + 220, + 105, + 57, + 173, + 99, + 147, + 1, + 75, + 113, + 50, + 250, + 91, + 60, + 232, + 34, + 233, + 105, + 146, + 128, + 233, + 26, + 243, + 4, + 91, + 161, + 209, + 37, + 233, + 211, + 180, + 15, + 58, + 166, + 49, + 21, + 9, + 245, + 111, + 88, + 71, + 85, + 107, + 11, + 24, + 60, + 36, + 54, + 135, + 77, + 231, + 32, + 159, + 116, + 187, + 159, + 155, + 192, + 94, + 190, + 221, + 83, + 202, + 148, + 27, + 123, + 14, + 12, + 157, + 246, + 138, + 36, + 172, + 13, + 19, + 105, + 236, + 167, + 227, + 157, + 247, + 199, + 82, + 227, + 80, + 24, + 27, + 185, + 241, + 156, + 197, + 177, + 1, + 103, + 232, + 132, + 158, + 251, + 61, + 63, + 185, + 171, + 12, + 205, + 57, + 189, + 52, + 31, + 148, + 175, + 41, + 141, + 97, + 6, + 232, + 147, + 114, + 207, + 104, + 218, + 159, + 240, + 178, + 212, + 75, + 109, + 155, + 187, + 51, + 23, + 205, + 107, + 237, + 61, + 67, + 238, + 192, + 121, + 148, + 98, + 141, + 215, + 183, + 6, + 12, + 15, + 177, + 234, + 187, + 171, + 37, + 128, + 136, + 101, + 175, + 155, + 143, + 220, + 4, + 9, + 61, + 11, + 40, + 52, + 167, + 46, + 2, + 15, + 168, + 238, + 104, + 72, + 223, + 241, + 13, + 18, + 111, + 80, + 156, + 141, + 61, + 32, + 185, + 212, + 124, + 173, + 248, + 171, + 58, + 118, + 43, + 194, + 211, + 34, + 190, + 70, + 160, + 187, + 57, + 170, + 197, + 161, + 76, + 85, + 85, + 225, + 2, + 156, + 24, + 126, + 25, + 151, + 214, + 241, + 235, + 233, + 115, + 224, + 68, + 146, + 253, + 162, + 26, + 147, + 10, + 25, + 112, + 163, + 244, + 85, + 241, + 140, + 6, + 52, + 57, + 182, + 115, + 63, + 71, + 195, + 138, + 40, + 135, + 160, + 187, + 27, + 134, + 228, + 181, + 170, + 43, + 186, + 186, + 185, + 97, + 200, + 129, + 249, + 44, + 10, + 17, + 79, + 129, + 37, + 51, + 180, + 174, + 46, + 222, + 213, + 92, + 176, + 113, + 197, + 185, + 32, + 199, + 198, + 209, + 53, + 54, + 220, + 242, + 140, + 30, + 10, + 11, + 144, + 42, + 32, + 197, + 192, + 83, + 98, + 5, + 98, + 22, + 88, + 84, + 52, + 64, + 202, + 30, + 194, + 129, + 186, + 42, + 19, + 128, + 94, + 209, + 77, + 124, + 36, + 13, + 202, + 16, + 60, + 65, + 177, + 145, + 176, + 102, + 62, + 154, + 143, + 57, + 95, + 151, + 12, + 4, + 46, + 157, + 18, + 239, + 224, + 40, + 137, + 54, + 26, + 185, + 221, + 56, + 74, + 24, + 138, + 175, + 175, + 57, + 155, + 221, + 67, + 153, + 181, + 208, + 123, + 54, + 24, + 178, + 194, + 233, + 91, + 213, + 125, + 10, + 193, + 59, + 29, + 59, + 114, + 159, + 122, + 66, + 70, + 204, + 36, + 185, + 215, + 51, + 35, + 158, + 126, + 115, + 195, + 80, + 16, + 223, + 11, + 157, + 235, + 246, + 75, + 154, + 250, + 161, + 28, + 163, + 79, + 83, + 123, + 120, + 12, + 244, + 90, + 171, + 143, + 100, + 196, + 128, + 58, + 110, + 192, + 249, + 43, + 222, + 212, + 185, + 87, + 184, + 189, + 211, + 239, + 232, + 136, + 51, + 52, + 149, + 97, + 169, + 155, + 200, + 157, + 224, + 90, + 216, + 43, + 231, + 59, + 5, + 29, + 126, + 121, + 102, + 125, + 34, + 36, + 32, + 226, + 177, + 66, + 13, + 193, + 27, + 19, + 206, + 39, + 50, + 158, + 99, + 144, + 32, + 128, + 27, + 122, + 3, + 214, + 166, + 2, + 78, + 237, + 156, + 85, + 184, + 246, + 48, + 206, + 138, + 57, + 247, + 8, + 250, + 44, + 189, + 228, + 141, + 225, + 35, + 188, + 66, + 121, + 99, + 21, + 74, + 154, + 96, + 168, + 161, + 44, + 163, + 154, + 170, + 119, + 140, + 239, + 32, + 136, + 88, + 44, + 228, + 168, + 66, + 70, + 10, + 138, + 155, + 66, + 58, + 195, + 115, + 71, + 167, + 143, + 126, + 141, + 211, + 253, + 98, + 101, + 236, + 70, + 140, + 236, + 107, + 155, + 49, + 226, + 212, + 249, + 79, + 122, + 143, + 203, + 173, + 102, + 173, + 49, + 35, + 7, + 183, + 91, + 205, + 238, + 216, + 221, + 253, + 179, + 252, + 206, + 209, + 147, + 107, + 168, + 209, + 99, + 146, + 136, + 0, + 237, + 121, + 162, + 242, + 195, + 118, + 250, + 100, + 79, + 58, + 198, + 126, + 8, + 180, + 49, + 160, + 195, + 19, + 248, + 102, + 86, + 100, + 30, + 55, + 69, + 189, + 136, + 52, + 153, + 11, + 90, + 91, + 95, + 160, + 41, + 32, + 73, + 184, + 103, + 62, + 241, + 125, + 57, + 22, + 244, + 25, + 176, + 52, + 122, + 251, + 145, + 179, + 251, + 48, + 14, + 6, + 62, + 7, + 15, + 90, + 85, + 24, + 236, + 32, + 235, + 244, + 214, + 170, + 15, + 214, + 114, + 22, + 135, + 237, + 253, + 93, + 35, + 220, + 47, + 27, + 81, + 93, + 139, + 77, + 127, + 32, + 38, + 213, + 208, + 27, + 79, + 30, + 211, + 217, + 168, + 59, + 245, + 228, + 61, + 166, + 21, + 235, + 78, + 83, + 22, + 64, + 202, + 145, + 72, + 225, + 131, + 183, + 97, + 212, + 215, + 127, + 161, + 54, + 62, + 16, + 68, + 216, + 139, + 27, + 25, + 163, + 130, + 19, + 134, + 106, + 88, + 189, + 102, + 169, + 152, + 185, + 114, + 46, + 131, + 189, + 174, + 228, + 248, + 94, + 113, + 211, + 249, + 28, + 95, + 113, + 177, + 5, + 107, + 80, + 35, + 220, + 235, + 94, + 88, + 203, + 36, + 132, + 123, + 187, + 179, + 108, + 110, + 230, + 85, + 62, + 255, + 234, + 195, + 105, + 198, + 116, + 111, + 221, + 24, + 214, + 229, + 46, + 224, + 50, + 221, + 245, + 178, + 52, + 185, + 214, + 163, + 88, + 21, + 129, + 214, + 110, + 204, + 252, + 84, + 85, + 55, + 44, + 9, + 181, + 123, + 215, + 236, + 180, + 30, + 48, + 187, + 116, + 75, + 122, + 98, + 167, + 213, + 133, + 104, + 110, + 1, + 209, + 41, + 31, + 154, + 170, + 215, + 41, + 90, + 168, + 229, + 195, + 177, + 0, + 141, + 193, + 238, + 48, + 114, + 198, + 101, + 90, + 4, + 91, + 24, + 233, + 8, + 243, + 161, + 46, + 157, + 216, + 49, + 212, + 209, + 156, + 106, + 230, + 206, + 113, + 172, + 113, + 134, + 102, + 181, + 19, + 249, + 69, + 181, + 88, + 156, + 251, + 61, + 78, + 235, + 107, + 105, + 177, + 230, + 214, + 169, + 212, + 25, + 184, + 128, + 192, + 136, + 232, + 56, + 233, + 19, + 169, + 241, + 180, + 11, + 62, + 192, + 101, + 216, + 231, + 92, + 98, + 38, + 182, + 164, + 17, + 227, + 114, + 141, + 153, + 134, + 105, + 113, + 101, + 12, + 228, + 116, + 205, + 162, + 103, + 95, + 48, + 53, + 142, + 164, + 110, + 94, + 78, + 67, + 41, + 180, + 116, + 249, + 172, + 6, + 26, + 69, + 0, + 109, + 75, + 99, + 145, + 136, + 226, + 146, + 123, + 140, + 211, + 253, + 158, + 161, + 238, + 231, + 55, + 124, + 240, + 234, + 179, + 202, + 178, + 40, + 210, + 219, + 6, + 200, + 179, + 83, + 187, + 52, + 208, + 55, + 169, + 80, + 105, + 148, + 139, + 91, + 86, + 38, + 110, + 233, + 141, + 76, + 112, + 253, + 217, + 88, + 157, + 185, + 161, + 174, + 63, + 67, + 221, + 235, + 172, + 206, + 109, + 198, + 48, + 93, + 129, + 166, + 27, + 27, + 21, + 182, + 174, + 64, + 155, + 147, + 155, + 200, + 26, + 173, + 182, + 120, + 180, + 24, + 6, + 114, + 104, + 219, + 82, + 117, + 106, + 50, + 143, + 134, + 140, + 77, + 214, + 236, + 195, + 29, + 151, + 165, + 140, + 208, + 232, + 158, + 141, + 44, + 66, + 71, + 104, + 92, + 70, + 110, + 31, + 47, + 31, + 96, + 70, + 88, + 27, + 27, + 169, + 99, + 204, + 10, + 123, + 114, + 124, + 190, + 166, + 222, + 225, + 53, + 200, + 70, + 201, + 189, + 239, + 27, + 109, + 254, + 220, + 65, + 157, + 217, + 66, + 199, + 156, + 118, + 108, + 236, + 24, + 78, + 242, + 192, + 21, + 195, + 198, + 117, + 182, + 220, + 120, + 47, + 100, + 123, + 119, + 47, + 51, + 23, + 85, + 109, + 106, + 4, + 6, + 120, + 155, + 187, + 140, + 199, + 192, + 64, + 45, + 41, + 179, + 13, + 41, + 115, + 113, + 201, + 156, + 141, + 38, + 51, + 66, + 11, + 22, + 175, + 208, + 100, + 38, + 197, + 34, + 218, + 88, + 87, + 249, + 90, + 184, + 2, + 180, + 188, + 107, + 182, + 81, + 149, + 240, + 9, + 140, + 33, + 157, + 81, + 0, + 123, + 193, + 176, + 24, + 28, + 126, + 4, + 8, + 46, + 249, + 147, + 215, + 34, + 7, + 201, + 220, + 37, + 173, + 175, + 31, + 244, + 1, + 243, + 180, + 240, + 55, + 230, + 249, + 138, + 69, + 96, + 208, + 237, + 83, + 135, + 132, + 189, + 103, + 159, + 169, + 17, + 183, + 5, + 162, + 229, + 62, + 228, + 199, + 138, + 165, + 148, + 229, + 92, + 99, + 194, + 169, + 3, + 172, + 183, + 186, + 185, + 135, + 236, + 164, + 219, + 241, + 85, + 251, + 213, + 34, + 253, + 206, + 81, + 233, + 60, + 62, + 173, + 164, + 46, + 89, + 12, + 136, + 114, + 171, + 65, + 142, + 200, + 78, + 134, + 4, + 131, + 117, + 202, + 17, + 240, + 197, + 93, + 192, + 215, + 121, + 14, + 210, + 113, + 60, + 247, + 121, + 44, + 87, + 13, + 128, + 38, + 216, + 83, + 26, + 103, + 14, + 106, + 48, + 120, + 82, + 24, + 231, + 80, + 240, + 195, + 47, + 173, + 42, + 115, + 222, + 60, + 117, + 250, + 200, + 154, + 243, + 230, + 69, + 195, + 2, + 172, + 176, + 47, + 88, + 43, + 94, + 136, + 67, + 124, + 136, + 208, + 201, + 22, + 122, + 203, + 245, + 60, + 135, + 203, + 191, + 222, + 214, + 141, + 95, + 186, + 167, + 54, + 88, + 222, + 20, + 72, + 78, + 196, + 180, + 26, + 39, + 230, + 200, + 27, + 120, + 136, + 133, + 140, + 131, + 79, + 67, + 132, + 113, + 178, + 7, + 230, + 198, + 2, + 199, + 42, + 63, + 202, + 96, + 141, + 21, + 194, + 144, + 252, + 181, + 120, + 65, + 4, + 87, + 200, + 141, + 241, + 42, + 106, + 186, + 32, + 141, + 27, + 107, + 55, + 22, + 101, + 184, + 110, + 34, + 165, + 240, + 121, + 156, + 147, + 143, + 207, + 157, + 151, + 30, + 204, + 69, + 3, + 55, + 254, + 46, + 155, + 126, + 66, + 6, + 211, + 61, + 251, + 148, + 77, + 132, + 6, + 139, + 49, + 180, + 150, + 233, + 28, + 132, + 21, + 133, + 138, + 114, + 163, + 41, + 118, + 38, + 32, + 202, + 118, + 88, + 46, + 52, + 46, + 185, + 70, + 233, + 190, + 23, + 239, + 213, + 110, + 106, + 110, + 216, + 51, + 102, + 148, + 86, + 249, + 86, + 2, + 131, + 45, + 228, + 77, + 95, + 49, + 93, + 137, + 60, + 105, + 142, + 121, + 83, + 226, + 229, + 232, + 238, + 100, + 98, + 45, + 175, + 71, + 247, + 247, + 148, + 113, + 225, + 114, + 97, + 117, + 163, + 172, + 158, + 137, + 220, + 55, + 39, + 46, + 28, + 50, + 209, + 84, + 218, + 42, + 103, + 129, + 125, + 79, + 16, + 155, + 55, + 153, + 46, + 31, + 216, + 140, + 59, + 11, + 106, + 88, + 124, + 198, + 84, + 121, + 85, + 219, + 5, + 26, + 33, + 139, + 249, + 90, + 51, + 222, + 176, + 244, + 101, + 32, + 108, + 181, + 70, + 73, + 146, + 187, + 160, + 15, + 242, + 87, + 122, + 93, + 236, + 87, + 240, + 113, + 75, + 189, + 115, + 82, + 194, + 94, + 182, + 126, + 138, + 14, + 226, + 236, + 116, + 164, + 70, + 36, + 64, + 166, + 193, + 150, + 36, + 236, + 227, + 247, + 253, + 117, + 141, + 125, + 199, + 59, + 47, + 146, + 99, + 104, + 192, + 216, + 202, + 141, + 114, + 63, + 18, + 192, + 105, + 97, + 85, + 117, + 103, + 125, + 167, + 198, + 246, + 81, + 214, + 119, + 42, + 3, + 36, + 118, + 52, + 172, + 202, + 253, + 4, + 148, + 98, + 92, + 63, + 167, + 133, + 93, + 113, + 190, + 123, + 56, + 111, + 50, + 183, + 197, + 108, + 241, + 212, + 26, + 1, + 53, + 3, + 196, + 209, + 24, + 15, + 20, + 240, + 161, + 10, + 140, + 144, + 188, + 12, + 76, + 5, + 127, + 53, + 99, + 187, + 1, + 52, + 209, + 156, + 168, + 127, + 68, + 148, + 178, + 155, + 230, + 115, + 161, + 29, + 225, + 69, + 210, + 37, + 142, + 59, + 54, + 20, + 78, + 17, + 130, + 178, + 113, + 246, + 95, + 79, + 103, + 44, + 128, + 201, + 78, + 80, + 53, + 16, + 4, + 92, + 43, + 246, + 139, + 238, + 164, + 108, + 164, + 135, + 95, + 141, + 155, + 177, + 24, + 54, + 145, + 53, + 198, + 79, + 47, + 131, + 189, + 197, + 244, + 172, + 241, + 78, + 195, + 105, + 106, + 64, + 9, + 14, + 176, + 45, + 187, + 113, + 155, + 69, + 20, + 23, + 43, + 236, + 144, + 255, + 211, + 223, + 146, + 31, + 83, + 164, + 92, + 25, + 191, + 185, + 49, + 219, + 212, + 125, + 157, + 152, + 48, + 52, + 104, + 248, + 254, + 204, + 200, + 183, + 50, + 235, + 170, + 174, + 77, + 174, + 241, + 89, + 51, + 12, + 19, + 174, + 122, + 254, + 180, + 9, + 8, + 157, + 233, + 206, + 163, + 177, + 27, + 197, + 53, + 97, + 15, + 10, + 137, + 24, + 57, + 133, + 202, + 158, + 224, + 36, + 199, + 96, + 205, + 112, + 56, + 164, + 17, + 252, + 241, + 216, + 131, + 68, + 149, + 246, + 89, + 182, + 77, + 11, + 136, + 176, + 113, + 226, + 224, + 210, + 61, + 218, + 28, + 26, + 153, + 102, + 219, + 230, + 49, + 242, + 83, + 155, + 219, + 146, + 77, + 15, + 73, + 104, + 124, + 129, + 107, + 120, + 72, + 194, + 254, + 142, + 16, + 201, + 112, + 255, + 72, + 25, + 141, + 94, + 75, + 110, + 7, + 72, + 73, + 4, + 88, + 174, + 82, + 73, + 169, + 12, + 79, + 242, + 228, + 95, + 171, + 204, + 14, + 179, + 13, + 211, + 175, + 255, + 154, + 255, + 203, + 165, + 78, + 177, + 232, + 146, + 190, + 38, + 16, + 54, + 170, + 88, + 121, + 187, + 123, + 230, + 12, + 137, + 149, + 207, + 198, + 64, + 95, + 237, + 178, + 31, + 44, + 125, + 91, + 23, + 162, + 208, + 0, + 33, + 234, + 100, + 122, + 144, + 128, + 236, + 216, + 114, + 233, + 191, + 22, + 226, + 153, + 116, + 75, + 97, + 174, + 198, + 136, + 104, + 29, + 110, + 95, + 31, + 31, + 133, + 15, + 11, + 241, + 158, + 4, + 122, + 191, + 16, + 53, + 109, + 43, + 222, + 189, + 16, + 149, + 55, + 172, + 29, + 91, + 163, + 247, + 17, + 92, + 46, + 109, + 132, + 143, + 37, + 229, + 165, + 141, + 208, + 174, + 80, + 95, + 242, + 80, + 219, + 119, + 238, + 133, + 151, + 198, + 229, + 181, + 146, + 208, + 145, + 146, + 177, + 111, + 65, + 208, + 111, + 81, + 75, + 188, + 231, + 255, + 255, + 12, + 107, + 184, + 87, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 49, + 48, + 51, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 219, + 142, + 108, + 201, + 109, + 229, + 251, + 249, + 138, + 250, + 1, + 81, + 193, + 91, + 48, + 2, + 16, + 4, + 168, + 47, + 50, + 230, + 193, + 192, + 120, + 208, + 127, + 32, + 143, + 13, + 12, + 160, + 135, + 241, + 252, + 63, + 48, + 96, + 158, + 99, + 157, + 204, + 46, + 178, + 114, + 7, + 139, + 167, + 186, + 219, + 110, + 219, + 128, + 228, + 170, + 238, + 172, + 220, + 123, + 199, + 142, + 32, + 23, + 215, + 5, + 95, + 198, + 203, + 120, + 249, + 3, + 190, + 140, + 151, + 37, + 244, + 242, + 183, + 191, + 127, + 250, + 191, + 159, + 192, + 244, + 246, + 211, + 255, + 252, + 207, + 191, + 253, + 253, + 19, + 190, + 248, + 255, + 254, + 175, + 127, + 186, + 253, + 7, + 190, + 252, + 199, + 191, + 127, + 250, + 227, + 63, + 241, + 203, + 191, + 255, + 191, + 79, + 254, + 123, + 219, + 242, + 130, + 72, + 252, + 242, + 31, + 255, + 251, + 211, + 191, + 125, + 250, + 151, + 159, + 125, + 130, + 145, + 255, + 223, + 223, + 254, + 126, + 251, + 71, + 135, + 127, + 198, + 231, + 255, + 242, + 245, + 51, + 254, + 248, + 63, + 95, + 254, + 244, + 167, + 63, + 254, + 243, + 247, + 255, + 227, + 135, + 151, + 241, + 242, + 231, + 63, + 127, + 247, + 195, + 247, + 159, + 190, + 251, + 233, + 211, + 31, + 255, + 42, + 47, + 40, + 48, + 253, + 127, + 236, + 229, + 167, + 127, + 251, + 132, + 95, + 191, + 42, + 136, + 237, + 133, + 198, + 251, + 229, + 39, + 255, + 220, + 63, + 32, + 3, + 153, + 177, + 240, + 122, + 249, + 233, + 95, + 95, + 254, + 52, + 6, + 142, + 63, + 191, + 252, + 244, + 127, + 62, + 9, + 172, + 53, + 166, + 232, + 122, + 25, + 95, + 126, + 193, + 223, + 223, + 126, + 177, + 64, + 104, + 147, + 232, + 63, + 126, + 46, + 235, + 203, + 207, + 81, + 17, + 135, + 125, + 253, + 23, + 116, + 222, + 126, + 97, + 192, + 180, + 144, + 190, + 254, + 11, + 227, + 175, + 183, + 159, + 255, + 248, + 211, + 209, + 119, + 101, + 130, + 53, + 113, + 236, + 29, + 124, + 231, + 193, + 165, + 79, + 156, + 176, + 153, + 135, + 105, + 240, + 137, + 244, + 125, + 229, + 19, + 5, + 97, + 12, + 29, + 138, + 109, + 223, + 81, + 20, + 134, + 217, + 160, + 25, + 124, + 162, + 252, + 24, + 223, + 95, + 197, + 236, + 129, + 80, + 246, + 139, + 191, + 84, + 190, + 155, + 109, + 160, + 141, + 83, + 250, + 174, + 118, + 49, + 240, + 228, + 137, + 22, + 124, + 162, + 218, + 151, + 117, + 57, + 12, + 183, + 169, + 125, + 93, + 127, + 223, + 37, + 87, + 245, + 101, + 97, + 30, + 126, + 7, + 28, + 12, + 198, + 182, + 198, + 106, + 187, + 44, + 28, + 6, + 107, + 108, + 91, + 18, + 93, + 215, + 231, + 247, + 13, + 9, + 104, + 44, + 179, + 113, + 247, + 84, + 178, + 23, + 75, + 246, + 237, + 23, + 12, + 107, + 216, + 24, + 243, + 213, + 47, + 130, + 123, + 244, + 121, + 57, + 51, + 144, + 78, + 148, + 205, + 207, + 215, + 74, + 186, + 13, + 228, + 223, + 87, + 36, + 91, + 94, + 233, + 31, + 193, + 210, + 237, + 92, + 2, + 27, + 119, + 227, + 91, + 134, + 107, + 193, + 222, + 40, + 209, + 222, + 194, + 159, + 223, + 13, + 100, + 88, + 204, + 52, + 141, + 158, + 47, + 188, + 47, + 239, + 217, + 225, + 151, + 32, + 220, + 128, + 52, + 183, + 181, + 93, + 22, + 17, + 3, + 238, + 181, + 163, + 101, + 39, + 127, + 77, + 86, + 68, + 190, + 84, + 118, + 188, + 221, + 60, + 219, + 255, + 79, + 191, + 180, + 18, + 40, + 174, + 217, + 119, + 23, + 116, + 130, + 238, + 161, + 209, + 251, + 252, + 176, + 35, + 210, + 171, + 215, + 226, + 244, + 47, + 25, + 193, + 218, + 100, + 125, + 71, + 20, + 217, + 132, + 61, + 197, + 162, + 239, + 206, + 159, + 63, + 113, + 131, + 153, + 206, + 33, + 95, + 215, + 165, + 106, + 246, + 234, + 102, + 87, + 123, + 247, + 4, + 199, + 190, + 127, + 180, + 247, + 139, + 132, + 37, + 254, + 249, + 148, + 249, + 245, + 147, + 74, + 199, + 38, + 19, + 130, + 77, + 158, + 125, + 43, + 159, + 73, + 97, + 177, + 78, + 126, + 182, + 242, + 239, + 191, + 252, + 253, + 254, + 245, + 112, + 27, + 238, + 247, + 175, + 199, + 251, + 179, + 226, + 27, + 74, + 165, + 13, + 128, + 39, + 194, + 220, + 147, + 184, + 177, + 194, + 81, + 176, + 185, + 112, + 31, + 213, + 121, + 255, + 216, + 240, + 116, + 46, + 218, + 235, + 110, + 107, + 184, + 180, + 78, + 30, + 110, + 105, + 246, + 139, + 90, + 13, + 40, + 131, + 96, + 43, + 117, + 214, + 87, + 195, + 96, + 144, + 72, + 184, + 57, + 36, + 245, + 235, + 195, + 190, + 79, + 23, + 110, + 207, + 248, + 124, + 71, + 9, + 252, + 15, + 211, + 164, + 119, + 238, + 144, + 34, + 3, + 108, + 97, + 227, + 77, + 16, + 129, + 165, + 60, + 162, + 101, + 114, + 237, + 184, + 127, + 124, + 93, + 238, + 247, + 31, + 155, + 28, + 255, + 2, + 149, + 226, + 51, + 231, + 97, + 253, + 36, + 47, + 152, + 88, + 233, + 58, + 183, + 128, + 50, + 105, + 223, + 254, + 44, + 123, + 193, + 28, + 254, + 246, + 60, + 41, + 88, + 55, + 190, + 179, + 58, + 80, + 28, + 176, + 200, + 26, + 247, + 72, + 69, + 129, + 181, + 247, + 156, + 207, + 190, + 251, + 28, + 114, + 117, + 237, + 255, + 120, + 248, + 21, + 88, + 129, + 140, + 251, + 42, + 237, + 241, + 242, + 7, + 38, + 152, + 70, + 74, + 252, + 123, + 125, + 93, + 172, + 175, + 205, + 0, + 199, + 54, + 239, + 57, + 127, + 126, + 51, + 191, + 62, + 149, + 0, + 171, + 192, + 129, + 224, + 27, + 1, + 237, + 55, + 49, + 139, + 31, + 255, + 249, + 251, + 123, + 220, + 2, + 191, + 57, + 110, + 241, + 121, + 45, + 47, + 63, + 57, + 38, + 161, + 126, + 171, + 198, + 145, + 7, + 32, + 171, + 172, + 198, + 227, + 91, + 128, + 134, + 37, + 187, + 203, + 127, + 227, + 182, + 113, + 72, + 169, + 201, + 67, + 4, + 70, + 195, + 176, + 11, + 47, + 246, + 141, + 168, + 192, + 107, + 227, + 252, + 53, + 174, + 71, + 20, + 5, + 37, + 153, + 210, + 183, + 32, + 81, + 54, + 232, + 158, + 51, + 44, + 40, + 127, + 95, + 145, + 231, + 253, + 249, + 4, + 27, + 147, + 251, + 22, + 36, + 241, + 0, + 179, + 197, + 116, + 180, + 32, + 103, + 210, + 72, + 62, + 91, + 144, + 193, + 155, + 217, + 91, + 233, + 146, + 33, + 172, + 201, + 163, + 241, + 6, + 153, + 194, + 102, + 29, + 209, + 59, + 113, + 113, + 139, + 162, + 11, + 5, + 109, + 90, + 2, + 63, + 236, + 168, + 247, + 29, + 117, + 218, + 90, + 89, + 181, + 255, + 157, + 40, + 218, + 135, + 162, + 48, + 109, + 152, + 107, + 42, + 157, + 84, + 139, + 181, + 82, + 151, + 5, + 97, + 143, + 61, + 251, + 26, + 28, + 22, + 133, + 189, + 194, + 109, + 58, + 171, + 210, + 239, + 215, + 126, + 212, + 243, + 31, + 119, + 226, + 19, + 88, + 213, + 26, + 33, + 14, + 27, + 32, + 100, + 54, + 235, + 197, + 193, + 125, + 253, + 126, + 169, + 54, + 120, + 232, + 4, + 178, + 158, + 45, + 69, + 75, + 222, + 89, + 27, + 164, + 144, + 204, + 253, + 117, + 212, + 42, + 94, + 17, + 3, + 101, + 11, + 81, + 128, + 234, + 220, + 6, + 97, + 142, + 45, + 209, + 243, + 230, + 252, + 233, + 212, + 166, + 78, + 134, + 128, + 50, + 185, + 239, + 101, + 23, + 83, + 32, + 140, + 143, + 145, + 28, + 251, + 163, + 43, + 120, + 192, + 253, + 115, + 255, + 178, + 183, + 189, + 122, + 136, + 181, + 250, + 78, + 125, + 112, + 67, + 155, + 251, + 182, + 13, + 189, + 205, + 109, + 48, + 58, + 43, + 30, + 64, + 50, + 166, + 181, + 223, + 219, + 9, + 211, + 6, + 165, + 49, + 251, + 160, + 9, + 101, + 6, + 221, + 52, + 163, + 233, + 102, + 250, + 82, + 95, + 65, + 136, + 3, + 156, + 124, + 221, + 158, + 249, + 221, + 113, + 95, + 59, + 181, + 212, + 6, + 208, + 220, + 141, + 15, + 208, + 4, + 88, + 112, + 132, + 211, + 211, + 116, + 255, + 202, + 78, + 179, + 218, + 222, + 162, + 75, + 193, + 4, + 81, + 251, + 65, + 14, + 26, + 124, + 132, + 217, + 62, + 214, + 112, + 233, + 0, + 168, + 4, + 205, + 210, + 2, + 98, + 180, + 161, + 175, + 191, + 220, + 219, + 160, + 129, + 183, + 205, + 75, + 135, + 30, + 129, + 6, + 212, + 4, + 26, + 148, + 135, + 202, + 39, + 221, + 106, + 149, + 238, + 160, + 219, + 40, + 36, + 39, + 148, + 233, + 14, + 115, + 250, + 190, + 28, + 220, + 134, + 47, + 203, + 103, + 128, + 46, + 33, + 19, + 190, + 112, + 31, + 210, + 174, + 189, + 244, + 234, + 79, + 131, + 73, + 102, + 97, + 137, + 86, + 187, + 92, + 243, + 97, + 202, + 158, + 59, + 60, + 195, + 210, + 47, + 159, + 30, + 85, + 165, + 93, + 125, + 19, + 172, + 69, + 170, + 125, + 29, + 248, + 158, + 176, + 85, + 28, + 98, + 11, + 158, + 226, + 247, + 9, + 31, + 36, + 165, + 125, + 212, + 112, + 5, + 186, + 45, + 147, + 213, + 120, + 86, + 33, + 9, + 76, + 157, + 75, + 14, + 23, + 103, + 246, + 24, + 115, + 220, + 202, + 218, + 144, + 46, + 41, + 113, + 102, + 208, + 143, + 56, + 91, + 70, + 125, + 247, + 206, + 207, + 56, + 141, + 43, + 135, + 20, + 216, + 203, + 151, + 68, + 246, + 2, + 212, + 70, + 154, + 184, + 55, + 204, + 209, + 249, + 2, + 208, + 96, + 152, + 102, + 225, + 8, + 144, + 244, + 116, + 34, + 254, + 81, + 143, + 157, + 216, + 156, + 25, + 128, + 125, + 143, + 157, + 188, + 73, + 142, + 185, + 87, + 207, + 86, + 255, + 241, + 95, + 114, + 158, + 23, + 81, + 227, + 119, + 87, + 231, + 121, + 73, + 184, + 51, + 159, + 119, + 149, + 53, + 170, + 198, + 92, + 176, + 132, + 165, + 19, + 89, + 34, + 216, + 168, + 225, + 19, + 225, + 243, + 6, + 247, + 203, + 58, + 123, + 221, + 168, + 167, + 163, + 210, + 18, + 194, + 198, + 72, + 48, + 208, + 27, + 254, + 182, + 50, + 3, + 39, + 140, + 69, + 243, + 140, + 235, + 150, + 225, + 98, + 231, + 179, + 228, + 180, + 133, + 249, + 207, + 127, + 97, + 24, + 10, + 34, + 190, + 115, + 1, + 177, + 26, + 204, + 193, + 220, + 73, + 214, + 64, + 152, + 22, + 31, + 237, + 100, + 247, + 103, + 224, + 218, + 87, + 186, + 238, + 236, + 133, + 121, + 192, + 104, + 117, + 222, + 29, + 10, + 53, + 168, + 113, + 43, + 8, + 99, + 88, + 103, + 21, + 111, + 196, + 222, + 160, + 131, + 195, + 62, + 48, + 31, + 76, + 103, + 192, + 214, + 19, + 106, + 202, + 49, + 195, + 215, + 251, + 156, + 77, + 141, + 88, + 11, + 17, + 48, + 122, + 189, + 22, + 236, + 134, + 41, + 8, + 153, + 110, + 147, + 163, + 134, + 127, + 41, + 108, + 50, + 106, + 196, + 191, + 100, + 195, + 222, + 155, + 34, + 252, + 43, + 69, + 211, + 179, + 21, + 155, + 22, + 182, + 199, + 216, + 109, + 182, + 203, + 36, + 104, + 98, + 182, + 9, + 87, + 1, + 170, + 13, + 178, + 56, + 156, + 61, + 84, + 41, + 28, + 12, + 170, + 18, + 114, + 226, + 105, + 125, + 45, + 134, + 212, + 216, + 206, + 120, + 156, + 201, + 99, + 185, + 116, + 18, + 165, + 160, + 80, + 114, + 55, + 139, + 184, + 138, + 13, + 208, + 141, + 141, + 112, + 95, + 64, + 30, + 121, + 227, + 224, + 78, + 139, + 172, + 148, + 125, + 121, + 137, + 150, + 25, + 22, + 227, + 195, + 144, + 183, + 238, + 247, + 178, + 231, + 240, + 51, + 196, + 136, + 167, + 188, + 14, + 221, + 126, + 127, + 117, + 173, + 19, + 136, + 134, + 187, + 32, + 154, + 95, + 195, + 35, + 56, + 61, + 193, + 22, + 144, + 218, + 14, + 177, + 215, + 234, + 41, + 1, + 76, + 123, + 135, + 213, + 101, + 254, + 229, + 139, + 128, + 37, + 76, + 38, + 108, + 156, + 29, + 78, + 2, + 27, + 130, + 225, + 56, + 225, + 163, + 100, + 29, + 139, + 97, + 248, + 96, + 188, + 111, + 243, + 93, + 6, + 168, + 131, + 194, + 205, + 183, + 130, + 89, + 60, + 193, + 99, + 95, + 255, + 162, + 168, + 158, + 192, + 9, + 50, + 247, + 214, + 190, + 197, + 121, + 67, + 132, + 4, + 227, + 209, + 203, + 23, + 37, + 85, + 128, + 65, + 148, + 26, + 22, + 100, + 132, + 45, + 52, + 194, + 197, + 84, + 252, + 250, + 60, + 97, + 160, + 140, + 80, + 241, + 83, + 88, + 159, + 233, + 182, + 84, + 187, + 96, + 93, + 176, + 8, + 185, + 113, + 51, + 193, + 233, + 58, + 5, + 230, + 120, + 55, + 57, + 87, + 143, + 149, + 250, + 6, + 92, + 12, + 52, + 173, + 17, + 26, + 194, + 101, + 192, + 28, + 235, + 130, + 62, + 106, + 155, + 161, + 97, + 96, + 200, + 141, + 26, + 30, + 68, + 176, + 165, + 97, + 131, + 254, + 198, + 152, + 63, + 125, + 86, + 9, + 167, + 189, + 10, + 13, + 49, + 168, + 104, + 227, + 210, + 36, + 49, + 152, + 232, + 141, + 126, + 112, + 185, + 124, + 101, + 38, + 115, + 133, + 158, + 243, + 128, + 139, + 222, + 55, + 14, + 41, + 11, + 167, + 247, + 182, + 109, + 2, + 33, + 110, + 4, + 93, + 104, + 79, + 144, + 237, + 205, + 252, + 117, + 153, + 232, + 57, + 212, + 118, + 95, + 192, + 71, + 36, + 165, + 215, + 15, + 32, + 195, + 98, + 74, + 93, + 42, + 43, + 250, + 182, + 21, + 206, + 227, + 139, + 72, + 131, + 42, + 236, + 169, + 177, + 240, + 33, + 249, + 238, + 95, + 214, + 206, + 49, + 184, + 179, + 0, + 215, + 194, + 78, + 254, + 15, + 1, + 205, + 209, + 74, + 106, + 10, + 90, + 239, + 26, + 158, + 48, + 196, + 209, + 85, + 236, + 67, + 87, + 101, + 44, + 71, + 87, + 241, + 0, + 78, + 184, + 36, + 94, + 187, + 251, + 121, + 109, + 194, + 33, + 140, + 206, + 58, + 105, + 36, + 171, + 9, + 171, + 179, + 78, + 52, + 164, + 14, + 93, + 155, + 243, + 191, + 227, + 46, + 20, + 91, + 75, + 95, + 222, + 35, + 198, + 46, + 171, + 20, + 36, + 2, + 52, + 139, + 199, + 213, + 199, + 32, + 224, + 161, + 146, + 43, + 223, + 1, + 51, + 250, + 102, + 246, + 7, + 174, + 172, + 205, + 84, + 48, + 55, + 248, + 21, + 6, + 54, + 29, + 125, + 156, + 244, + 222, + 231, + 165, + 126, + 112, + 175, + 70, + 47, + 5, + 245, + 115, + 123, + 226, + 178, + 234, + 92, + 250, + 2, + 217, + 232, + 30, + 184, + 30, + 251, + 190, + 147, + 72, + 217, + 182, + 53, + 46, + 150, + 119, + 118, + 68, + 141, + 231, + 76, + 192, + 216, + 249, + 168, + 50, + 155, + 6, + 176, + 9, + 126, + 5, + 125, + 34, + 94, + 206, + 89, + 133, + 6, + 34, + 19, + 189, + 212, + 248, + 249, + 7, + 126, + 89, + 237, + 117, + 166, + 203, + 25, + 115, + 104, + 45, + 96, + 27, + 72, + 39, + 168, + 148, + 52, + 161, + 82, + 151, + 138, + 170, + 147, + 129, + 114, + 151, + 57, + 2, + 15, + 216, + 186, + 36, + 84, + 245, + 85, + 139, + 36, + 24, + 60, + 36, + 108, + 22, + 73, + 146, + 137, + 251, + 151, + 47, + 255, + 186, + 223, + 58, + 255, + 69, + 109, + 135, + 155, + 174, + 69, + 227, + 221, + 72, + 233, + 157, + 10, + 56, + 117, + 83, + 232, + 166, + 144, + 42, + 168, + 142, + 233, + 119, + 207, + 208, + 188, + 19, + 192, + 225, + 9, + 241, + 231, + 122, + 123, + 88, + 132, + 154, + 200, + 192, + 141, + 23, + 26, + 5, + 158, + 55, + 248, + 199, + 108, + 133, + 165, + 229, + 177, + 117, + 81, + 55, + 51, + 106, + 226, + 237, + 84, + 109, + 132, + 166, + 166, + 222, + 142, + 213, + 61, + 207, + 64, + 198, + 245, + 49, + 252, + 54, + 220, + 230, + 183, + 180, + 113, + 162, + 69, + 3, + 65, + 7, + 142, + 16, + 195, + 185, + 82, + 100, + 61, + 92, + 237, + 247, + 191, + 210, + 77, + 218, + 81, + 142, + 205, + 203, + 250, + 154, + 6, + 119, + 77, + 201, + 120, + 28, + 23, + 156, + 30, + 220, + 218, + 102, + 37, + 133, + 241, + 99, + 1, + 156, + 10, + 50, + 138, + 72, + 136, + 111, + 211, + 171, + 211, + 49, + 101, + 43, + 160, + 249, + 35, + 74, + 161, + 232, + 227, + 79, + 220, + 64, + 254, + 126, + 245, + 157, + 168, + 131, + 129, + 49, + 212, + 134, + 188, + 49, + 237, + 74, + 177, + 169, + 183, + 199, + 233, + 167, + 223, + 141, + 55, + 108, + 247, + 12, + 105, + 20, + 95, + 9, + 12, + 89, + 161, + 244, + 41, + 199, + 160, + 106, + 108, + 38, + 21, + 152, + 204, + 163, + 179, + 248, + 89, + 96, + 67, + 199, + 83, + 22, + 241, + 235, + 121, + 118, + 42, + 32, + 232, + 82, + 22, + 176, + 109, + 24, + 70, + 141, + 70, + 101, + 188, + 24, + 80, + 36, + 212, + 91, + 94, + 187, + 170, + 59, + 176, + 41, + 251, + 249, + 149, + 118, + 240, + 113, + 107, + 89, + 199, + 76, + 166, + 222, + 99, + 78, + 88, + 96, + 209, + 8, + 85, + 207, + 85, + 140, + 103, + 221, + 248, + 160, + 33, + 170, + 159, + 210, + 96, + 178, + 126, + 185, + 102, + 134, + 226, + 83, + 253, + 217, + 170, + 26, + 155, + 12, + 204, + 139, + 67, + 38, + 147, + 84, + 149, + 109, + 178, + 118, + 35, + 75, + 211, + 149, + 109, + 126, + 232, + 115, + 181, + 167, + 123, + 15, + 107, + 168, + 6, + 213, + 140, + 9, + 138, + 157, + 80, + 141, + 23, + 140, + 59, + 118, + 88, + 75, + 43, + 166, + 108, + 194, + 210, + 172, + 149, + 114, + 199, + 11, + 140, + 241, + 248, + 170, + 10, + 110, + 1, + 173, + 155, + 44, + 233, + 77, + 186, + 248, + 35, + 67, + 234, + 237, + 171, + 61, + 253, + 10, + 115, + 0, + 45, + 109, + 44, + 246, + 116, + 58, + 229, + 63, + 246, + 2, + 42, + 130, + 109, + 5, + 136, + 108, + 175, + 213, + 40, + 204, + 15, + 200, + 87, + 151, + 64, + 213, + 247, + 243, + 93, + 136, + 97, + 242, + 184, + 13, + 195, + 143, + 104, + 81, + 132, + 6, + 50, + 93, + 96, + 121, + 128, + 63, + 105, + 23, + 254, + 164, + 167, + 250, + 180, + 116, + 132, + 153, + 246, + 192, + 207, + 74, + 209, + 99, + 137, + 43, + 160, + 147, + 128, + 26, + 29, + 172, + 38, + 16, + 114, + 76, + 168, + 44, + 192, + 40, + 217, + 157, + 171, + 237, + 101, + 75, + 192, + 120, + 205, + 176, + 114, + 44, + 18, + 142, + 22, + 44, + 28, + 177, + 135, + 64, + 10, + 196, + 53, + 203, + 60, + 113, + 168, + 55, + 108, + 141, + 176, + 26, + 142, + 237, + 13, + 91, + 236, + 85, + 241, + 81, + 146, + 54, + 55, + 151, + 30, + 195, + 26, + 189, + 87, + 157, + 84, + 180, + 140, + 44, + 84, + 122, + 21, + 84, + 149, + 111, + 147, + 118, + 143, + 97, + 165, + 5, + 83, + 165, + 81, + 210, + 131, + 70, + 96, + 110, + 248, + 114, + 64, + 189, + 169, + 185, + 131, + 220, + 220, + 127, + 101, + 55, + 114, + 213, + 113, + 109, + 24, + 132, + 177, + 199, + 182, + 157, + 142, + 105, + 106, + 85, + 30, + 141, + 13, + 236, + 202, + 206, + 70, + 226, + 16, + 131, + 76, + 123, + 174, + 178, + 122, + 63, + 69, + 141, + 72, + 96, + 104, + 35, + 183, + 129, + 104, + 1, + 82, + 108, + 8, + 91, + 49, + 18, + 59, + 231, + 3, + 215, + 144, + 162, + 169, + 160, + 70, + 157, + 14, + 206, + 115, + 195, + 20, + 9, + 225, + 223, + 90, + 75, + 69, + 102, + 96, + 123, + 134, + 5, + 113, + 241, + 59, + 46, + 55, + 105, + 138, + 107, + 193, + 7, + 202, + 214, + 37, + 102, + 214, + 21, + 82, + 210, + 165, + 209, + 126, + 202, + 104, + 201, + 234, + 160, + 214, + 209, + 7, + 203, + 0, + 197, + 198, + 215, + 217, + 81, + 52, + 93, + 51, + 180, + 40, + 167, + 47, + 56, + 46, + 130, + 140, + 49, + 150, + 190, + 219, + 128, + 105, + 10, + 32, + 119, + 122, + 21, + 205, + 5, + 52, + 18, + 171, + 209, + 183, + 45, + 184, + 187, + 4, + 159, + 188, + 22, + 248, + 36, + 170, + 17, + 26, + 220, + 4, + 83, + 117, + 69, + 27, + 108, + 106, + 169, + 150, + 130, + 92, + 85, + 73, + 135, + 11, + 231, + 165, + 211, + 16, + 25, + 151, + 31, + 228, + 33, + 134, + 243, + 67, + 246, + 110, + 30, + 191, + 107, + 53, + 196, + 202, + 5, + 44, + 204, + 141, + 254, + 141, + 174, + 123, + 155, + 62, + 160, + 60, + 153, + 54, + 61, + 241, + 141, + 57, + 6, + 205, + 220, + 243, + 166, + 19, + 196, + 21, + 71, + 7, + 88, + 194, + 29, + 254, + 161, + 109, + 188, + 223, + 69, + 83, + 25, + 114, + 118, + 23, + 126, + 44, + 125, + 181, + 173, + 46, + 37, + 239, + 92, + 174, + 123, + 187, + 148, + 252, + 13, + 200, + 241, + 186, + 158, + 173, + 134, + 238, + 16, + 195, + 66, + 107, + 156, + 151, + 40, + 25, + 172, + 181, + 195, + 237, + 55, + 63, + 55, + 143, + 229, + 175, + 217, + 221, + 249, + 174, + 244, + 157, + 117, + 187, + 129, + 71, + 227, + 228, + 91, + 167, + 187, + 121, + 173, + 245, + 156, + 247, + 46, + 131, + 222, + 89, + 183, + 233, + 77, + 138, + 160, + 141, + 207, + 48, + 32, + 124, + 21, + 8, + 31, + 151, + 124, + 211, + 26, + 122, + 143, + 5, + 254, + 214, + 251, + 209, + 120, + 68, + 192, + 34, + 153, + 160, + 170, + 120, + 36, + 11, + 156, + 191, + 58, + 0, + 44, + 111, + 27, + 78, + 89, + 50, + 69, + 92, + 76, + 65, + 16, + 109, + 53, + 130, + 222, + 55, + 157, + 177, + 197, + 135, + 248, + 177, + 53, + 206, + 195, + 148, + 77, + 238, + 252, + 138, + 107, + 205, + 162, + 39, + 154, + 176, + 143, + 235, + 250, + 112, + 49, + 116, + 234, + 195, + 169, + 188, + 48, + 189, + 15, + 205, + 176, + 39, + 142, + 5, + 115, + 47, + 12, + 199, + 98, + 85, + 219, + 105, + 2, + 179, + 225, + 38, + 22, + 7, + 84, + 180, + 102, + 141, + 43, + 210, + 134, + 101, + 157, + 213, + 24, + 50, + 195, + 22, + 77, + 124, + 90, + 63, + 8, + 9, + 84, + 3, + 181, + 25, + 179, + 239, + 171, + 28, + 46, + 132, + 41, + 235, + 112, + 125, + 22, + 193, + 49, + 99, + 88, + 134, + 173, + 192, + 158, + 193, + 118, + 127, + 143, + 50, + 89, + 229, + 162, + 125, + 94, + 141, + 63, + 228, + 179, + 76, + 154, + 141, + 230, + 138, + 132, + 2, + 234, + 175, + 107, + 225, + 97, + 5, + 151, + 155, + 157, + 212, + 199, + 156, + 181, + 230, + 93, + 152, + 230, + 0, + 53, + 11, + 155, + 215, + 42, + 84, + 37, + 48, + 101, + 135, + 196, + 171, + 99, + 113, + 74, + 38, + 179, + 56, + 54, + 69, + 210, + 211, + 100, + 171, + 154, + 187, + 51, + 222, + 92, + 221, + 58, + 73, + 83, + 120, + 115, + 117, + 11, + 111, + 102, + 122, + 77, + 153, + 216, + 164, + 43, + 199, + 40, + 187, + 105, + 79, + 45, + 151, + 18, + 26, + 78, + 202, + 34, + 124, + 205, + 25, + 202, + 4, + 109, + 167, + 200, + 67, + 209, + 31, + 122, + 76, + 16, + 52, + 109, + 68, + 30, + 112, + 56, + 179, + 69, + 79, + 70, + 121, + 185, + 42, + 169, + 134, + 60, + 240, + 4, + 157, + 214, + 40, + 164, + 247, + 96, + 170, + 201, + 241, + 104, + 230, + 120, + 177, + 117, + 115, + 184, + 166, + 243, + 26, + 59, + 167, + 207, + 98, + 206, + 107, + 116, + 178, + 192, + 137, + 66, + 237, + 194, + 109, + 120, + 120, + 133, + 106, + 13, + 237, + 64, + 48, + 177, + 198, + 26, + 91, + 135, + 194, + 194, + 29, + 218, + 255, + 31, + 167, + 35, + 100, + 23, + 91, + 37, + 13, + 33, + 12, + 19, + 254, + 166, + 92, + 148, + 212, + 90, + 50, + 247, + 243, + 184, + 178, + 235, + 94, + 107, + 92, + 27, + 145, + 131, + 39, + 229, + 87, + 80, + 218, + 164, + 13, + 84, + 205, + 134, + 133, + 60, + 51, + 248, + 86, + 160, + 158, + 145, + 109, + 76, + 97, + 138, + 25, + 158, + 96, + 13, + 214, + 101, + 65, + 148, + 106, + 245, + 210, + 219, + 153, + 87, + 198, + 199, + 184, + 69, + 173, + 61, + 147, + 13, + 115, + 115, + 39, + 81, + 67, + 25, + 108, + 234, + 162, + 86, + 182, + 205, + 41, + 120, + 176, + 128, + 112, + 199, + 212, + 249, + 34, + 120, + 240, + 117, + 65, + 126, + 235, + 49, + 185, + 187, + 65, + 155, + 114, + 227, + 120, + 216, + 221, + 160, + 197, + 56, + 230, + 152, + 200, + 111, + 129, + 223, + 51, + 142, + 59, + 200, + 252, + 101, + 76, + 119, + 170, + 62, + 203, + 165, + 218, + 113, + 140, + 142, + 101, + 139, + 236, + 112, + 120, + 91, + 5, + 21, + 12, + 22, + 206, + 29, + 242, + 152, + 211, + 235, + 213, + 102, + 164, + 51, + 109, + 120, + 143, + 155, + 110, + 133, + 237, + 36, + 167, + 198, + 54, + 222, + 203, + 61, + 138, + 23, + 221, + 241, + 201, + 44, + 199, + 237, + 253, + 21, + 133, + 89, + 228, + 173, + 114, + 204, + 230, + 240, + 76, + 59, + 106, + 20, + 88, + 250, + 65, + 203, + 238, + 140, + 124, + 20, + 27, + 146, + 186, + 244, + 166, + 154, + 142, + 154, + 3, + 204, + 16, + 79, + 72, + 110, + 196, + 28, + 121, + 44, + 79, + 72, + 14, + 39, + 192, + 69, + 57, + 59, + 78, + 79, + 167, + 239, + 244, + 195, + 165, + 225, + 233, + 244, + 161, + 31, + 238, + 183, + 214, + 44, + 220, + 175, + 240, + 84, + 140, + 210, + 241, + 100, + 109, + 122, + 146, + 98, + 227, + 131, + 93, + 3, + 100, + 98, + 40, + 111, + 201, + 51, + 173, + 228, + 208, + 59, + 186, + 26, + 99, + 125, + 203, + 242, + 109, + 4, + 223, + 110, + 134, + 59, + 59, + 1, + 223, + 138, + 87, + 123, + 250, + 21, + 136, + 96, + 12, + 238, + 196, + 72, + 104, + 194, + 176, + 208, + 167, + 48, + 253, + 234, + 15, + 146, + 232, + 59, + 199, + 212, + 92, + 183, + 122, + 231, + 171, + 162, + 155, + 223, + 141, + 20, + 77, + 255, + 170, + 220, + 216, + 121, + 203, + 52, + 96, + 209, + 176, + 243, + 190, + 148, + 220, + 216, + 144, + 94, + 39, + 155, + 221, + 176, + 172, + 177, + 197, + 22, + 87, + 142, + 239, + 208, + 252, + 47, + 167, + 44, + 100, + 168, + 112, + 182, + 7, + 62, + 1, + 7, + 143, + 121, + 25, + 19, + 22, + 74, + 227, + 30, + 165, + 60, + 96, + 173, + 25, + 139, + 251, + 51, + 234, + 84, + 6, + 20, + 157, + 130, + 188, + 53, + 96, + 201, + 77, + 48, + 70, + 231, + 240, + 86, + 167, + 183, + 7, + 124, + 6, + 44, + 245, + 166, + 142, + 109, + 134, + 73, + 243, + 73, + 110, + 115, + 132, + 73, + 236, + 1, + 184, + 121, + 29, + 9, + 128, + 86, + 23, + 255, + 225, + 187, + 162, + 127, + 208, + 1, + 196, + 147, + 39, + 73, + 235, + 241, + 47, + 62, + 40, + 104, + 101, + 46, + 16, + 181, + 213, + 104, + 110, + 107, + 4, + 234, + 78, + 107, + 79, + 173, + 231, + 174, + 53, + 169, + 87, + 172, + 236, + 123, + 120, + 10, + 93, + 66, + 166, + 155, + 139, + 11, + 141, + 216, + 124, + 111, + 212, + 93, + 92, + 60, + 14, + 39, + 218, + 71, + 232, + 187, + 170, + 173, + 201, + 241, + 172, + 223, + 217, + 159, + 11, + 27, + 75, + 22, + 183, + 74, + 159, + 73, + 100, + 228, + 249, + 27, + 219, + 248, + 154, + 229, + 183, + 174, + 54, + 62, + 70, + 231, + 220, + 236, + 198, + 179, + 208, + 33, + 128, + 177, + 227, + 24, + 145, + 194, + 230, + 145, + 157, + 134, + 41, + 176, + 243, + 4, + 208, + 232, + 2, + 48, + 201, + 45, + 130, + 120, + 54, + 114, + 235, + 93, + 116, + 50, + 199, + 10, + 115, + 128, + 47, + 105, + 62, + 19, + 191, + 214, + 199, + 178, + 177, + 183, + 205, + 44, + 180, + 212, + 72, + 170, + 141, + 70, + 23, + 228, + 71, + 183, + 239, + 179, + 197, + 170, + 163, + 33, + 162, + 91, + 156, + 186, + 63, + 66, + 130, + 107, + 85, + 34, + 226, + 212, + 125, + 10, + 209, + 145, + 75, + 47, + 196, + 67, + 177, + 125, + 197, + 110, + 230, + 82, + 36, + 115, + 217, + 103, + 248, + 184, + 7, + 118, + 87, + 157, + 213, + 218, + 85, + 27, + 240, + 30, + 33, + 173, + 227, + 60, + 66, + 183, + 216, + 85, + 11, + 200, + 110, + 21, + 120, + 56, + 221, + 119, + 134, + 220, + 208, + 148, + 125, + 145, + 117, + 213, + 53, + 146, + 154, + 103, + 99, + 115, + 43, + 115, + 80, + 156, + 67, + 43, + 177, + 142, + 35, + 239, + 2, + 51, + 73, + 109, + 74, + 38, + 170, + 129, + 61, + 102, + 32, + 126, + 185, + 125, + 87, + 187, + 220, + 35, + 109, + 135, + 221, + 248, + 185, + 106, + 229, + 109, + 137, + 206, + 117, + 143, + 221, + 60, + 144, + 173, + 149, + 138, + 227, + 234, + 136, + 77, + 218, + 88, + 179, + 57, + 127, + 96, + 239, + 152, + 44, + 193, + 124, + 7, + 176, + 176, + 172, + 231, + 62, + 189, + 41, + 213, + 45, + 59, + 85, + 122, + 185, + 228, + 230, + 24, + 197, + 176, + 227, + 94, + 214, + 145, + 117, + 87, + 82, + 240, + 73, + 47, + 187, + 187, + 230, + 235, + 231, + 70, + 134, + 249, + 232, + 174, + 221, + 230, + 34, + 237, + 163, + 206, + 205, + 77, + 79, + 91, + 207, + 1, + 67, + 102, + 35, + 21, + 217, + 4, + 16, + 151, + 74, + 216, + 118, + 205, + 244, + 33, + 156, + 151, + 223, + 79, + 138, + 230, + 14, + 198, + 202, + 249, + 240, + 54, + 237, + 214, + 139, + 125, + 177, + 8, + 160, + 109, + 233, + 116, + 34, + 16, + 15, + 142, + 194, + 216, + 128, + 237, + 119, + 10, + 210, + 104, + 161, + 32, + 17, + 123, + 90, + 17, + 117, + 102, + 18, + 179, + 192, + 140, + 197, + 222, + 223, + 140, + 58, + 116, + 64, + 161, + 60, + 150, + 131, + 9, + 240, + 136, + 109, + 220, + 170, + 14, + 1, + 11, + 120, + 141, + 16, + 66, + 75, + 235, + 140, + 199, + 67, + 33, + 136, + 60, + 61, + 110, + 34, + 17, + 112, + 89, + 107, + 210, + 173, + 2, + 233, + 14, + 147, + 110, + 187, + 141, + 45, + 73, + 61, + 80, + 35, + 164, + 123, + 84, + 59, + 224, + 237, + 129, + 26, + 161, + 234, + 172, + 56, + 248, + 230, + 5, + 99, + 90, + 163, + 225, + 17, + 11, + 1, + 242, + 218, + 225, + 84, + 243, + 194, + 208, + 39, + 136, + 156, + 137, + 52, + 163, + 197, + 248, + 21, + 131, + 109, + 171, + 209, + 170, + 142, + 23, + 193, + 208, + 36, + 133, + 44, + 157, + 107, + 158, + 150, + 155, + 125, + 198, + 27, + 181, + 38, + 157, + 25, + 216, + 58, + 161, + 28, + 97, + 3, + 145, + 4, + 202, + 185, + 162, + 23, + 201, + 210, + 166, + 31, + 170, + 144, + 90, + 235, + 167, + 211, + 137, + 27, + 157, + 217, + 48, + 110, + 107, + 31, + 123, + 118, + 254, + 226, + 228, + 28, + 217, + 30, + 53, + 209, + 121, + 177, + 219, + 163, + 38, + 86, + 232, + 230, + 91, + 219, + 162, + 116, + 120, + 214, + 196, + 14, + 109, + 87, + 171, + 188, + 248, + 9, + 211, + 48, + 180, + 163, + 191, + 164, + 189, + 191, + 159, + 95, + 54, + 59, + 19, + 176, + 248, + 169, + 27, + 122, + 114, + 213, + 205, + 52, + 69, + 41, + 124, + 121, + 123, + 227, + 178, + 84, + 135, + 103, + 161, + 55, + 166, + 88, + 68, + 254, + 146, + 105, + 104, + 131, + 124, + 123, + 238, + 105, + 138, + 187, + 220, + 243, + 81, + 156, + 34, + 244, + 78, + 184, + 100, + 0, + 241, + 220, + 14, + 151, + 28, + 241, + 237, + 153, + 221, + 20, + 158, + 108, + 158, + 224, + 1, + 56, + 154, + 0, + 129, + 115, + 55, + 195, + 243, + 124, + 199, + 243, + 112, + 140, + 52, + 4, + 224, + 203, + 223, + 56, + 198, + 106, + 96, + 233, + 166, + 198, + 130, + 116, + 34, + 108, + 70, + 10, + 237, + 146, + 207, + 73, + 175, + 53, + 125, + 199, + 205, + 94, + 89, + 27, + 177, + 221, + 181, + 221, + 210, + 61, + 68, + 231, + 242, + 78, + 63, + 69, + 44, + 174, + 100, + 159, + 191, + 127, + 60, + 138, + 184, + 96, + 43, + 83, + 163, + 37, + 30, + 18, + 195, + 32, + 141, + 7, + 164, + 111, + 0, + 104, + 199, + 118, + 15, + 181, + 197, + 140, + 178, + 97, + 56, + 151, + 169, + 145, + 226, + 174, + 12, + 56, + 199, + 244, + 96, + 168, + 235, + 203, + 57, + 125, + 144, + 199, + 79, + 190, + 6, + 10, + 109, + 2, + 178, + 17, + 198, + 214, + 21, + 111, + 195, + 158, + 192, + 66, + 161, + 64, + 229, + 156, + 235, + 115, + 174, + 62, + 43, + 130, + 8, + 180, + 193, + 164, + 51, + 239, + 146, + 252, + 68, + 162, + 17, + 86, + 90, + 21, + 79, + 200, + 108, + 248, + 88, + 244, + 208, + 153, + 19, + 100, + 112, + 232, + 200, + 81, + 37, + 226, + 15, + 16, + 139, + 195, + 140, + 107, + 130, + 238, + 211, + 47, + 176, + 197, + 51, + 29, + 195, + 220, + 175, + 106, + 54, + 203, + 242, + 76, + 199, + 167, + 120, + 201, + 125, + 71, + 54, + 235, + 172, + 126, + 236, + 12, + 65, + 67, + 242, + 144, + 156, + 120, + 108, + 250, + 49, + 129, + 13, + 94, + 146, + 209, + 232, + 100, + 141, + 51, + 27, + 144, + 237, + 240, + 19, + 207, + 227, + 102, + 174, + 20, + 180, + 119, + 221, + 103, + 53, + 243, + 4, + 129, + 8, + 27, + 205, + 244, + 217, + 220, + 147, + 46, + 76, + 236, + 166, + 31, + 122, + 56, + 184, + 69, + 103, + 192, + 225, + 9, + 168, + 177, + 187, + 121, + 149, + 207, + 48, + 193, + 227, + 207, + 138, + 50, + 146, + 75, + 99, + 227, + 89, + 13, + 209, + 149, + 165, + 141, + 144, + 188, + 135, + 232, + 170, + 134, + 165, + 67, + 159, + 19, + 65, + 241, + 98, + 167, + 192, + 152, + 157, + 18, + 203, + 91, + 250, + 174, + 140, + 176, + 238, + 207, + 162, + 185, + 207, + 249, + 61, + 69, + 20, + 98, + 12, + 215, + 62, + 134, + 193, + 176, + 85, + 200, + 69, + 92, + 250, + 24, + 58, + 185, + 102, + 193, + 238, + 57, + 57, + 33, + 219, + 162, + 127, + 56, + 132, + 151, + 107, + 221, + 185, + 248, + 42, + 237, + 140, + 59, + 113, + 217, + 55, + 81, + 204, + 162, + 188, + 164, + 171, + 120, + 120, + 201, + 57, + 193, + 169, + 106, + 250, + 9, + 67, + 159, + 146, + 53, + 134, + 249, + 168, + 155, + 2, + 172, + 120, + 254, + 242, + 33, + 230, + 159, + 115, + 12, + 64, + 142, + 173, + 58, + 251, + 140, + 35, + 83, + 152, + 170, + 58, + 151, + 127, + 111, + 64, + 202, + 69, + 127, + 72, + 158, + 228, + 84, + 29, + 218, + 71, + 24, + 18, + 118, + 145, + 74, + 206, + 195, + 79, + 223, + 27, + 176, + 220, + 85, + 38, + 127, + 77, + 88, + 62, + 233, + 244, + 207, + 51, + 37, + 106, + 27, + 186, + 130, + 12, + 153, + 204, + 173, + 118, + 149, + 54, + 103, + 108, + 118, + 85, + 194, + 249, + 167, + 193, + 36, + 179, + 208, + 72, + 176, + 200, + 156, + 65, + 152, + 123, + 199, + 6, + 183, + 237, + 48, + 212, + 169, + 11, + 4, + 195, + 220, + 72, + 161, + 49, + 71, + 209, + 87, + 194, + 192, + 38, + 199, + 161, + 99, + 5, + 172, + 233, + 89, + 58, + 114, + 1, + 10, + 91, + 52, + 173, + 49, + 230, + 209, + 53, + 46, + 107, + 175, + 25, + 182, + 66, + 31, + 4, + 157, + 162, + 162, + 43, + 141, + 70, + 167, + 121, + 227, + 77, + 225, + 50, + 118, + 60, + 65, + 127, + 226, + 110, + 210, + 21, + 2, + 109, + 3, + 72, + 173, + 19, + 17, + 51, + 1, + 166, + 29, + 222, + 167, + 156, + 197, + 246, + 97, + 57, + 87, + 183, + 224, + 21, + 146, + 198, + 250, + 254, + 150, + 52, + 182, + 189, + 50, + 59, + 57, + 230, + 176, + 55, + 178, + 152, + 13, + 150, + 141, + 16, + 0, + 169, + 30, + 115, + 8, + 91, + 104, + 242, + 179, + 68, + 11, + 28, + 195, + 62, + 122, + 79, + 37, + 35, + 24, + 22, + 219, + 128, + 86, + 241, + 188, + 9, + 168, + 35, + 44, + 246, + 155, + 51, + 5, + 104, + 49, + 136, + 45, + 106, + 44, + 73, + 150, + 121, + 163, + 18, + 194, + 185, + 41, + 26, + 82, + 206, + 70, + 94, + 74, + 97, + 108, + 81, + 213, + 226, + 195, + 25, + 227, + 254, + 41, + 125, + 42, + 142, + 215, + 78, + 16, + 31, + 22, + 250, + 203, + 19, + 132, + 37, + 116, + 122, + 168, + 178, + 172, + 6, + 232, + 136, + 37, + 105, + 231, + 6, + 3, + 233, + 141, + 75, + 233, + 124, + 15, + 241, + 228, + 15, + 189, + 121, + 250, + 175, + 60, + 17, + 181, + 191, + 70, + 145, + 79, + 237, + 67, + 139, + 230, + 15, + 222, + 11, + 240, + 108, + 236, + 231, + 111, + 242, + 159, + 177, + 194, + 210, + 248, + 195, + 124, + 66, + 213, + 173, + 74, + 27, + 189, + 153, + 68, + 197, + 177, + 185, + 24, + 192, + 185, + 196, + 153, + 249, + 134, + 25, + 51, + 102, + 192, + 51, + 54, + 245, + 172, + 171, + 117, + 132, + 45, + 52, + 208, + 206, + 24, + 189, + 121, + 160, + 78, + 17, + 131, + 67, + 88, + 49, + 71, + 233, + 29, + 110, + 160, + 62, + 14, + 57, + 81, + 26, + 30, + 235, + 134, + 82, + 5, + 82, + 230, + 115, + 124, + 76, + 97, + 204, + 22, + 91, + 209, + 117, + 117, + 142, + 155, + 249, + 64, + 35, + 156, + 55, + 229, + 102, + 62, + 240, + 148, + 89, + 158, + 105, + 120, + 239, + 65, + 187, + 218, + 210, + 241, + 180, + 197, + 17, + 135, + 9, + 141, + 54, + 34, + 86, + 218, + 64, + 167, + 84, + 156, + 99, + 90, + 85, + 54, + 16, + 47, + 158, + 194, + 10, + 131, + 135, + 28, + 103, + 6, + 123, + 102, + 216, + 64, + 159, + 225, + 157, + 64, + 98, + 212, + 69, + 171, + 250, + 221, + 196, + 182, + 219, + 196, + 182, + 139, + 228, + 52, + 129, + 39, + 143, + 176, + 79, + 255, + 45, + 186, + 207, + 122, + 250, + 237, + 208, + 185, + 195, + 150, + 181, + 170, + 141, + 26, + 128, + 180, + 226, + 182, + 191, + 64, + 255, + 59, + 23, + 156, + 213, + 80, + 29, + 99, + 80, + 238, + 156, + 127, + 121, + 34, + 199, + 244, + 1, + 98, + 1, + 211, + 57, + 253, + 83, + 107, + 1, + 250, + 74, + 111, + 100, + 51, + 17, + 144, + 175, + 244, + 54, + 172, + 151, + 198, + 0, + 193, + 198, + 126, + 145, + 134, + 128, + 172, + 25, + 146, + 196, + 11, + 179, + 152, + 227, + 117, + 246, + 208, + 15, + 61, + 252, + 27, + 218, + 183, + 150, + 159, + 204, + 4, + 14, + 140, + 235, + 63, + 200, + 221, + 193, + 205, + 182, + 150, + 116, + 66, + 26, + 91, + 96, + 163, + 132, + 43, + 145, + 50, + 101, + 196, + 253, + 47, + 238, + 239, + 194, + 149, + 159, + 55, + 176, + 204, + 152, + 17, + 116, + 15, + 237, + 164, + 0, + 41, + 204, + 73, + 33, + 88, + 153, + 81, + 7, + 114, + 13, + 81, + 86, + 152, + 39, + 50, + 156, + 92, + 128, + 82, + 140, + 120, + 69, + 160, + 189, + 26, + 33, + 74, + 94, + 10, + 108, + 35, + 158, + 48, + 255, + 37, + 251, + 242, + 109, + 146, + 172, + 11, + 212, + 141, + 247, + 207, + 176, + 133, + 55, + 160, + 90, + 163, + 180, + 80, + 132, + 129, + 40, + 118, + 192, + 189, + 20, + 194, + 119, + 157, + 82, + 21, + 236, + 83, + 199, + 134, + 54, + 69, + 15, + 87, + 103, + 186, + 175, + 213, + 232, + 68, + 47, + 206, + 116, + 159, + 67, + 90, + 220, + 32, + 211, + 166, + 250, + 138, + 24, + 44, + 133, + 34, + 174, + 107, + 149, + 222, + 230, + 27, + 189, + 223, + 179, + 113, + 50, + 172, + 97, + 157, + 218, + 38, + 55, + 84, + 183, + 29, + 106, + 155, + 82, + 152, + 166, + 156, + 54, + 202, + 26, + 91, + 78, + 23, + 191, + 251, + 114, + 139, + 153, + 97, + 125, + 69, + 149, + 110, + 95, + 221, + 157, + 164, + 134, + 17, + 16, + 91, + 170, + 22, + 150, + 117, + 134, + 198, + 17, + 127, + 69, + 8, + 1, + 111, + 230, + 46, + 39, + 205, + 58, + 127, + 235, + 128, + 211, + 220, + 46, + 48, + 157, + 191, + 159, + 19, + 20, + 122, + 93, + 57, + 133, + 128, + 141, + 86, + 184, + 64, + 171, + 148, + 71, + 16, + 113, + 202, + 232, + 17, + 31, + 35, + 173, + 122, + 179, + 217, + 97, + 175, + 99, + 136, + 59, + 65, + 13, + 110, + 12, + 220, + 114, + 104, + 217, + 148, + 66, + 3, + 225, + 20, + 236, + 105, + 230, + 63, + 225, + 240, + 97, + 35, + 239, + 206, + 32, + 208, + 97, + 160, + 162, + 59, + 156, + 57, + 164, + 222, + 50, + 231, + 147, + 240, + 60, + 83, + 177, + 118, + 39, + 120, + 193, + 154, + 141, + 158, + 152, + 40, + 4, + 91, + 144, + 99, + 111, + 199, + 99, + 208, + 180, + 120, + 85, + 186, + 64, + 104, + 116, + 78, + 181, + 112, + 18, + 200, + 166, + 88, + 37, + 88, + 144, + 46, + 245, + 18, + 220, + 112, + 221, + 18, + 138, + 67, + 238, + 120, + 21, + 244, + 184, + 37, + 20, + 135, + 174, + 92, + 231, + 126, + 85, + 233, + 246, + 95, + 19, + 46, + 161, + 51, + 159, + 172, + 17, + 203, + 36, + 66, + 216, + 115, + 199, + 137, + 177, + 31, + 147, + 226, + 75, + 206, + 171, + 222, + 177, + 189, + 124, + 149, + 172, + 178, + 93, + 231, + 31, + 203, + 177, + 222, + 150, + 190, + 223, + 42, + 213, + 49, + 230, + 221, + 147, + 202, + 88, + 7, + 69, + 106, + 206, + 244, + 77, + 190, + 51, + 115, + 128, + 60, + 70, + 88, + 52, + 60, + 93, + 47, + 81, + 2, + 46, + 41, + 13, + 30, + 182, + 95, + 122, + 55, + 191, + 220, + 67, + 88, + 135, + 236, + 198, + 158, + 192, + 67, + 88, + 145, + 98, + 255, + 142, + 162, + 71, + 14, + 185, + 60, + 148, + 58, + 229, + 75, + 228, + 242, + 208, + 176, + 13, + 61, + 141, + 107, + 77, + 225, + 155, + 44, + 3, + 38, + 215, + 144, + 212, + 4, + 110, + 54, + 128, + 117, + 54, + 58, + 101, + 178, + 9, + 8, + 173, + 216, + 41, + 147, + 15, + 57, + 36, + 87, + 144, + 136, + 123, + 201, + 73, + 234, + 165, + 92, + 204, + 140, + 89, + 48, + 133, + 26, + 195, + 227, + 196, + 83, + 228, + 81, + 194, + 79, + 188, + 70, + 189, + 137, + 136, + 63, + 5, + 244, + 105, + 14, + 108, + 20, + 133, + 56, + 250, + 52, + 45, + 206, + 175, + 250, + 149, + 38, + 139, + 136, + 17, + 236, + 205, + 163, + 51, + 155, + 214, + 96, + 76, + 29, + 79, + 61, + 77, + 31, + 54, + 240, + 83, + 51, + 111, + 41, + 65, + 11, + 99, + 2, + 239, + 221, + 104, + 19, + 166, + 158, + 165, + 108, + 56, + 240, + 41, + 31, + 56, + 112, + 145, + 123, + 155, + 20, + 242, + 224, + 236, + 122, + 97, + 123, + 60, + 112, + 124, + 45, + 80, + 65, + 72, + 56, + 108, + 245, + 170, + 136, + 215, + 2, + 70, + 141, + 97, + 218, + 15, + 145, + 79, + 233, + 38, + 176, + 185, + 105, + 127, + 83, + 114, + 73, + 234, + 218, + 210, + 152, + 133, + 251, + 81, + 56, + 138, + 128, + 3, + 67, + 142, + 32, + 28, + 209, + 78, + 156, + 194, + 71, + 131, + 214, + 58, + 66, + 178, + 164, + 11, + 201, + 186, + 2, + 94, + 55, + 244, + 109, + 27, + 84, + 145, + 66, + 174, + 100, + 213, + 114, + 2, + 38, + 49, + 30, + 78, + 218, + 223, + 75, + 40, + 234, + 170, + 125, + 54, + 224, + 32, + 137, + 41, + 219, + 85, + 123, + 144, + 70, + 101, + 87, + 209, + 226, + 136, + 65, + 101, + 37, + 200, + 65, + 58, + 6, + 79, + 243, + 59, + 143, + 223, + 219, + 90, + 135, + 230, + 172, + 47, + 221, + 141, + 70, + 206, + 123, + 2, + 50, + 198, + 70, + 206, + 252, + 249, + 162, + 28, + 181, + 217, + 174, + 246, + 191, + 218, + 99, + 31, + 240, + 10, + 138, + 108, + 18, + 102, + 95, + 112, + 214, + 40, + 151, + 69, + 54, + 64, + 97, + 139, + 131, + 228, + 50, + 178, + 198, + 179, + 220, + 244, + 99, + 132, + 204, + 143, + 102, + 147, + 70, + 103, + 14, + 7, + 221, + 24, + 183, + 223, + 243, + 95, + 238, + 237, + 69, + 91, + 158, + 33, + 222, + 56, + 79, + 199, + 229, + 7, + 190, + 187, + 128, + 156, + 188, + 189, + 199, + 225, + 196, + 167, + 231, + 77, + 249, + 248, + 14, + 32, + 229, + 26, + 8, + 39, + 4, + 196, + 218, + 121, + 116, + 201, + 4, + 30, + 22, + 242, + 118, + 239, + 27, + 0, + 55, + 0, + 126, + 58, + 27, + 190, + 210, + 24, + 60, + 182, + 184, + 167, + 28, + 240, + 86, + 55, + 17, + 118, + 151, + 207, + 225, + 184, + 90, + 159, + 132, + 104, + 130, + 134, + 146, + 27, + 250, + 188, + 199, + 184, + 221, + 27, + 77, + 158, + 73, + 73, + 152, + 128, + 47, + 215, + 226, + 115, + 146, + 82, + 188, + 72, + 92, + 22, + 243, + 192, + 232, + 198, + 86, + 147, + 61, + 205, + 101, + 73, + 220, + 106, + 102, + 88, + 97, + 209, + 194, + 123, + 110, + 96, + 140, + 231, + 220, + 85, + 128, + 136, + 129, + 23, + 197, + 22, + 115, + 57, + 6, + 146, + 193, + 5, + 9, + 224, + 86, + 67, + 124, + 120, + 51, + 24, + 107, + 35, + 195, + 132, + 183, + 57, + 22, + 45, + 252, + 237, + 37, + 136, + 50, + 20, + 144, + 181, + 51, + 7, + 119, + 108, + 183, + 191, + 138, + 39, + 190, + 122, + 1, + 161, + 188, + 127, + 121, + 138, + 156, + 31, + 218, + 206, + 138, + 120, + 146, + 174, + 114, + 6, + 127, + 49, + 76, + 101, + 163, + 163, + 139, + 202, + 128, + 136, + 154, + 45, + 92, + 138, + 80, + 94, + 6, + 142, + 47, + 29, + 221, + 145, + 142, + 233, + 53, + 104, + 250, + 182, + 80, + 239, + 24, + 24, + 114, + 161, + 120, + 156, + 59, + 80, + 133, + 154, + 22, + 240, + 166, + 208, + 252, + 34, + 21, + 228, + 28, + 59, + 210, + 95, + 9, + 122, + 120, + 127, + 180, + 152, + 227, + 63, + 35, + 225, + 57, + 183, + 113, + 124, + 206, + 135, + 242, + 105, + 185, + 247, + 133, + 75, + 123, + 60, + 31, + 129, + 57, + 68, + 248, + 152, + 252, + 99, + 27, + 104, + 187, + 251, + 225, + 9, + 100, + 162, + 191, + 43, + 117, + 174, + 149, + 238, + 231, + 16, + 219, + 239, + 74, + 157, + 255, + 218, + 74, + 157, + 220, + 87, + 38, + 221, + 67, + 106, + 59, + 2, + 26, + 194, + 88, + 254, + 255, + 244, + 41, + 114, + 20, + 80, + 119, + 40, + 135, + 101, + 202, + 156, + 44, + 138, + 207, + 107, + 35, + 136, + 140, + 70, + 163, + 89, + 116, + 174, + 103, + 130, + 155, + 230, + 122, + 177, + 20, + 82, + 43, + 154, + 229, + 164, + 124, + 150, + 160, + 43, + 127, + 2, + 223, + 60, + 129, + 16, + 94, + 27, + 177, + 6, + 246, + 15, + 79, + 210, + 15, + 43, + 222, + 31, + 182, + 26, + 199, + 254, + 180, + 220, + 85, + 103, + 196, + 30, + 97, + 23, + 10, + 145, + 40, + 239, + 227, + 151, + 139, + 156, + 186, + 133, + 17, + 137, + 180, + 234, + 90, + 4, + 6, + 206, + 152, + 175, + 147, + 21, + 153, + 233, + 104, + 251, + 116, + 93, + 165, + 183, + 167, + 88, + 195, + 152, + 130, + 26, + 55, + 134, + 218, + 179, + 109, + 152, + 18, + 167, + 104, + 166, + 250, + 51, + 254, + 199, + 160, + 83, + 152, + 221, + 92, + 45, + 222, + 186, + 179, + 33, + 107, + 100, + 176, + 241, + 234, + 25, + 52, + 187, + 165, + 200, + 109, + 132, + 51, + 66, + 1, + 125, + 213, + 145, + 195, + 96, + 238, + 56, + 100, + 249, + 249, + 157, + 123, + 133, + 18, + 125, + 251, + 37, + 55, + 74, + 83, + 122, + 49, + 129, + 205, + 157, + 56, + 145, + 216, + 246, + 225, + 101, + 104, + 103, + 252, + 222, + 37, + 247, + 58, + 146, + 248, + 117, + 199, + 95, + 35, + 43, + 160, + 192, + 98, + 109, + 172, + 21, + 188, + 131, + 220, + 195, + 194, + 116, + 189, + 135, + 90, + 97, + 44, + 189, + 64, + 193, + 72, + 86, + 67, + 49, + 44, + 198, + 83, + 119, + 22, + 134, + 114, + 183, + 226, + 213, + 170, + 128, + 41, + 135, + 70, + 236, + 140, + 151, + 118, + 141, + 59, + 94, + 96, + 13, + 181, + 81, + 51, + 207, + 36, + 105, + 132, + 131, + 3, + 150, + 65, + 46, + 210, + 167, + 222, + 73, + 193, + 207, + 181, + 44, + 17, + 3, + 160, + 104, + 54, + 250, + 254, + 107, + 42, + 110, + 210, + 226, + 193, + 14, + 236, + 179, + 174, + 35, + 86, + 131, + 14, + 143, + 149, + 180, + 45, + 71, + 45, + 250, + 108, + 106, + 209, + 31, + 246, + 116, + 186, + 19, + 15, + 244, + 91, + 14, + 180, + 221, + 104, + 114, + 225, + 89, + 103, + 170, + 150, + 203, + 112, + 120, + 104, + 168, + 190, + 191, + 198, + 51, + 187, + 146, + 221, + 252, + 133, + 134, + 215, + 24, + 118, + 92, + 52, + 129, + 117, + 55, + 132, + 161, + 161, + 8, + 253, + 55, + 233, + 210, + 225, + 174, + 167, + 75, + 120, + 54, + 182, + 194, + 30, + 166, + 238, + 81, + 233, + 250, + 219, + 114, + 233, + 152, + 10, + 60, + 137, + 26, + 189, + 155, + 112, + 110, + 55, + 234, + 163, + 176, + 67, + 75, + 31, + 125, + 77, + 82, + 234, + 62, + 29, + 219, + 176, + 209, + 239, + 24, + 55, + 195, + 16, + 126, + 158, + 107, + 248, + 206, + 198, + 60, + 19, + 115, + 21, + 149, + 16, + 132, + 160, + 42, + 141, + 126, + 37, + 68, + 10, + 147, + 66, + 5, + 64, + 142, + 236, + 100, + 180, + 225, + 42, + 57, + 192, + 169, + 60, + 33, + 103, + 162, + 120, + 77, + 234, + 242, + 171, + 21, + 230, + 150, + 231, + 234, + 162, + 228, + 154, + 138, + 15, + 202, + 237, + 85, + 101, + 55, + 154, + 201, + 58, + 194, + 66, + 40, + 135, + 133, + 230, + 175, + 24, + 17, + 89, + 64, + 210, + 105, + 47, + 192, + 76, + 62, + 12, + 11, + 135, + 191, + 199, + 174, + 47, + 231, + 19, + 191, + 222, + 78, + 197, + 153, + 0, + 182, + 87, + 152, + 218, + 83, + 103, + 2, + 44, + 27, + 33, + 134, + 75, + 127, + 77, + 238, + 66, + 202, + 229, + 120, + 178, + 223, + 29, + 143, + 190, + 61, + 249, + 73, + 26, + 133, + 195, + 50, + 60, + 249, + 105, + 134, + 147, + 209, + 156, + 210, + 146, + 90, + 112, + 106, + 114, + 185, + 154, + 209, + 200, + 207, + 195, + 103, + 14, + 201, + 247, + 197, + 2, + 217, + 196, + 83, + 12, + 27, + 239, + 179, + 151, + 140, + 115, + 224, + 83, + 158, + 230, + 28, + 87, + 150, + 213, + 37, + 37, + 157, + 222, + 61, + 178, + 94, + 83, + 108, + 117, + 67, + 132, + 185, + 67, + 161, + 69, + 17, + 31, + 32, + 5, + 146, + 17, + 106, + 144, + 78, + 233, + 12, + 41, + 59, + 225, + 2, + 25, + 237, + 138, + 179, + 201, + 21, + 135, + 103, + 26, + 247, + 157, + 96, + 17, + 133, + 89, + 2, + 134, + 214, + 104, + 184, + 27, + 205, + 229, + 249, + 184, + 84, + 59, + 39, + 73, + 30, + 103, + 116, + 182, + 210, + 0, + 221, + 101, + 216, + 196, + 191, + 233, + 217, + 228, + 95, + 61, + 80, + 126, + 13, + 177, + 35, + 88, + 193, + 186, + 38, + 255, + 59, + 131, + 21, + 210, + 251, + 127, + 78, + 177, + 232, + 181, + 181, + 144, + 1, + 198, + 210, + 9, + 21, + 11, + 44, + 231, + 111, + 30, + 81, + 10, + 207, + 7, + 140, + 185, + 253, + 67, + 105, + 189, + 173, + 155, + 200, + 31, + 59, + 237, + 61, + 20, + 198, + 34, + 12, + 39, + 179, + 249, + 195, + 61, + 70, + 87, + 122, + 65, + 38, + 196, + 9, + 110, + 24, + 220, + 200, + 146, + 67, + 26, + 128, + 72, + 42, + 251, + 191, + 198, + 11, + 131, + 211, + 189, + 12, + 231, + 196, + 78, + 180, + 193, + 221, + 12, + 151, + 134, + 238, + 35, + 191, + 222, + 119, + 134, + 6, + 2, + 82, + 103, + 6, + 58, + 57, + 241, + 116, + 75, + 136, + 113, + 166, + 135, + 222, + 51, + 92, + 45, + 56, + 13, + 159, + 68, + 26, + 93, + 63, + 13, + 155, + 157, + 169, + 73, + 111, + 117, + 72, + 231, + 29, + 85, + 31, + 191, + 73, + 40, + 3, + 73, + 51, + 8, + 122, + 169, + 208, + 228, + 58, + 126, + 166, + 86, + 135, + 139, + 5, + 58, + 98, + 198, + 1, + 149, + 48, + 56, + 90, + 4, + 106, + 49, + 227, + 160, + 202, + 241, + 152, + 48, + 37, + 156, + 93, + 167, + 148, + 222, + 180, + 69, + 107, + 109, + 4, + 24, + 111, + 93, + 75, + 163, + 103, + 164, + 27, + 99, + 232, + 192, + 16, + 127, + 205, + 89, + 58, + 53, + 54, + 5, + 11, + 24, + 73, + 232, + 181, + 93, + 133, + 86, + 22, + 216, + 158, + 113, + 23, + 147, + 153, + 103, + 20, + 191, + 188, + 42, + 140, + 189, + 27, + 73, + 187, + 172, + 27, + 208, + 226, + 116, + 136, + 103, + 241, + 191, + 63, + 22, + 80, + 27, + 213, + 16, + 130, + 122, + 7, + 106, + 67, + 49, + 151, + 79, + 126, + 200, + 190, + 252, + 250, + 144, + 40, + 17, + 222, + 19, + 38, + 75, + 163, + 218, + 81, + 60, + 75, + 119, + 204, + 216, + 71, + 42, + 243, + 20, + 58, + 79, + 197, + 168, + 97, + 84, + 36, + 224, + 20, + 141, + 70, + 162, + 205, + 2, + 25, + 59, + 212, + 21, + 165, + 15, + 138, + 142, + 169, + 246, + 25, + 51, + 48, + 251, + 164, + 84, + 242, + 182, + 222, + 195, + 116, + 122, + 253, + 243, + 99, + 87, + 141, + 1, + 27, + 173, + 209, + 6, + 221, + 99, + 150, + 247, + 218, + 161, + 27, + 207, + 131, + 183, + 32, + 75, + 60, + 236, + 108, + 8, + 31, + 161, + 9, + 123, + 173, + 70, + 184, + 137, + 17, + 198, + 28, + 225, + 154, + 170, + 157, + 250, + 202, + 174, + 115, + 162, + 78, + 55, + 19, + 118, + 157, + 19, + 199, + 81, + 16, + 137, + 103, + 209, + 113, + 188, + 117, + 58, + 197, + 200, + 96, + 86, + 77, + 220, + 123, + 155, + 19, + 116, + 182, + 222, + 162, + 19, + 191, + 45, + 85, + 231, + 148, + 161, + 124, + 46, + 156, + 207, + 189, + 25, + 139, + 22, + 221, + 128, + 107, + 221, + 196, + 188, + 103, + 4, + 153, + 233, + 178, + 85, + 62, + 194, + 177, + 86, + 87, + 252, + 242, + 179, + 84, + 205, + 131, + 246, + 187, + 224, + 187, + 242, + 164, + 197, + 63, + 222, + 136, + 0, + 5, + 57, + 156, + 229, + 87, + 205, + 119, + 128, + 144, + 57, + 100, + 67, + 22, + 236, + 122, + 207, + 229, + 52, + 79, + 220, + 67, + 79, + 145, + 42, + 183, + 181, + 155, + 141, + 59, + 181, + 7, + 226, + 200, + 178, + 56, + 249, + 234, + 220, + 255, + 224, + 131, + 252, + 121, + 16, + 23, + 32, + 15, + 10, + 221, + 199, + 170, + 216, + 151, + 191, + 65, + 68, + 161, + 253, + 234, + 47, + 239, + 149, + 42, + 183, + 22, + 53, + 118, + 168, + 173, + 90, + 95, + 12, + 48, + 167, + 3, + 134, + 154, + 216, + 243, + 235, + 74, + 7, + 29, + 231, + 96, + 80, + 186, + 63, + 21, + 177, + 175, + 9, + 219, + 29, + 139, + 250, + 0, + 3, + 68, + 24, + 177, + 185, + 100, + 243, + 115, + 39, + 242, + 119, + 105, + 52, + 182, + 161, + 68, + 126, + 32, + 83, + 56, + 41, + 45, + 96, + 221, + 169, + 233, + 87, + 122, + 200, + 63, + 129, + 225, + 190, + 181, + 82, + 129, + 12, + 221, + 241, + 165, + 81, + 2, + 67, + 166, + 192, + 59, + 182, + 172, + 77, + 9, + 247, + 95, + 170, + 224, + 215, + 87, + 149, + 142, + 152, + 37, + 53, + 85, + 172, + 65, + 125, + 158, + 102, + 175, + 210, + 232, + 149, + 68, + 158, + 102, + 79, + 51, + 4, + 15, + 211, + 136, + 155, + 26, + 56, + 131, + 2, + 131, + 58, + 157, + 163, + 29, + 104, + 115, + 106, + 217, + 83, + 112, + 230, + 66, + 216, + 109, + 77, + 1, + 225, + 210, + 44, + 117, + 49, + 66, + 35, + 90, + 198, + 160, + 70, + 97, + 177, + 144, + 11, + 65, + 238, + 201, + 18, + 238, + 130, + 250, + 180, + 129, + 79, + 170, + 252, + 98, + 240, + 210, + 116, + 162, + 115, + 163, + 12, + 196, + 189, + 110, + 117, + 184, + 251, + 206, + 129, + 241, + 67, + 234, + 36, + 80, + 196, + 167, + 134, + 223, + 230, + 78, + 43, + 24, + 143, + 212, + 82, + 10, + 219, + 235, + 156, + 217, + 179, + 75, + 86, + 16, + 93, + 68, + 59, + 199, + 173, + 200, + 86, + 99, + 62, + 159, + 3, + 87, + 238, + 229, + 196, + 29, + 57, + 62, + 25, + 220, + 116, + 137, + 212, + 114, + 197, + 113, + 227, + 163, + 132, + 120, + 139, + 193, + 100, + 117, + 82, + 216, + 150, + 221, + 100, + 35, + 120, + 52, + 240, + 188, + 226, + 220, + 147, + 165, + 70, + 165, + 15, + 230, + 30, + 16, + 57, + 116, + 190, + 42, + 202, + 210, + 120, + 195, + 158, + 177, + 49, + 121, + 177, + 31, + 117, + 107, + 81, + 230, + 240, + 216, + 45, + 34, + 99, + 226, + 71, + 151, + 54, + 210, + 152, + 212, + 219, + 112, + 247, + 44, + 171, + 155, + 53, + 61, + 248, + 249, + 246, + 22, + 46, + 106, + 4, + 202, + 163, + 17, + 35, + 136, + 104, + 91, + 57, + 170, + 146, + 10, + 242, + 223, + 246, + 176, + 62, + 158, + 22, + 193, + 226, + 141, + 110, + 63, + 144, + 147, + 170, + 206, + 206, + 12, + 216, + 136, + 195, + 247, + 223, + 87, + 23, + 219, + 216, + 231, + 151, + 58, + 180, + 233, + 6, + 233, + 75, + 92, + 203, + 114, + 198, + 32, + 219, + 30, + 170, + 168, + 122, + 134, + 188, + 237, + 46, + 228, + 237, + 191, + 21, + 181, + 175, + 107, + 111, + 113, + 119, + 253, + 41, + 243, + 23, + 102, + 24, + 29, + 126, + 235, + 173, + 192, + 99, + 197, + 126, + 154, + 69, + 99, + 217, + 13, + 188, + 70, + 44, + 120, + 110, + 87, + 45, + 185, + 20, + 26, + 77, + 66, + 45, + 116, + 29, + 45, + 219, + 107, + 135, + 54, + 202, + 15, + 100, + 244, + 107, + 48, + 254, + 241, + 47, + 154, + 125, + 131, + 209, + 67, + 9, + 113, + 54, + 174, + 115, + 55, + 191, + 89, + 43, + 108, + 59, + 82, + 46, + 79, + 190, + 104, + 173, + 244, + 21, + 182, + 193, + 158, + 51, + 244, + 188, + 171, + 114, + 190, + 8, + 6, + 135, + 37, + 60, + 89, + 234, + 42, + 212, + 231, + 59, + 243, + 101, + 55, + 60, + 253, + 214, + 236, + 157, + 117, + 167, + 241, + 18, + 9, + 187, + 63, + 97, + 56, + 62, + 203, + 237, + 149, + 82, + 130, + 64, + 51, + 135, + 107, + 50, + 108, + 150, + 144, + 103, + 82, + 188, + 92, + 55, + 176, + 27, + 19, + 159, + 210, + 33, + 238, + 187, + 199, + 99, + 43, + 219, + 108, + 34, + 250, + 164, + 122, + 124, + 253, + 23, + 74, + 123, + 36, + 15, + 117, + 11, + 245, + 70, + 224, + 97, + 108, + 119, + 80, + 143, + 129, + 135, + 95, + 152, + 85, + 38, + 8, + 62, + 18, + 107, + 116, + 1, + 18, + 5, + 25, + 20, + 43, + 29, + 143, + 147, + 206, + 107, + 23, + 53, + 21, + 204, + 102, + 72, + 93, + 46, + 94, + 212, + 220, + 176, + 100, + 197, + 10, + 235, + 44, + 212, + 232, + 9, + 104, + 242, + 132, + 224, + 26, + 56, + 96, + 189, + 254, + 19, + 173, + 228, + 41, + 241, + 127, + 74, + 165, + 145, + 77, + 41, + 184, + 110, + 48, + 112, + 180, + 238, + 179, + 22, + 169, + 154, + 109, + 223, + 230, + 194, + 227, + 169, + 115, + 75, + 26, + 35, + 37, + 69, + 25, + 76, + 227, + 138, + 226, + 49, + 43, + 231, + 206, + 83, + 39, + 77, + 131, + 201, + 232, + 40, + 233, + 171, + 149, + 109, + 166, + 167, + 187, + 114, + 17, + 54, + 113, + 195, + 16, + 233, + 84, + 38, + 40, + 18, + 8, + 90, + 88, + 203, + 60, + 212, + 83, + 15, + 36, + 169, + 183, + 123, + 161, + 235, + 66, + 181, + 251, + 122, + 124, + 13, + 188, + 64, + 239, + 73, + 179, + 141, + 106, + 122, + 64, + 155, + 96, + 211, + 26, + 245, + 146, + 17, + 93, + 167, + 24, + 25, + 217, + 101, + 146, + 65, + 11, + 124, + 241, + 173, + 217, + 229, + 184, + 195, + 4, + 186, + 232, + 150, + 83, + 248, + 42, + 171, + 40, + 85, + 21, + 156, + 119, + 232, + 199, + 157, + 120, + 105, + 159, + 158, + 6, + 254, + 198, + 58, + 143, + 229, + 136, + 154, + 52, + 201, + 141, + 161, + 214, + 152, + 39, + 16, + 9, + 141, + 111, + 79, + 78, + 146, + 143, + 233, + 236, + 238, + 22, + 65, + 91, + 89, + 224, + 7, + 102, + 204, + 215, + 228, + 47, + 197, + 63, + 131, + 206, + 69, + 123, + 241, + 123, + 132, + 62, + 79, + 164, + 255, + 135, + 95, + 219, + 196, + 165, + 237, + 212, + 56, + 90, + 179, + 229, + 92, + 36, + 199, + 105, + 130, + 147, + 254, + 47, + 109, + 161, + 234, + 237, + 212, + 33, + 1, + 228, + 105, + 141, + 158, + 24, + 142, + 175, + 220, + 214, + 247, + 83, + 19, + 204, + 32, + 28, + 231, + 244, + 111, + 241, + 0, + 97, + 183, + 91, + 106, + 180, + 18, + 18, + 208, + 193, + 225, + 28, + 173, + 192, + 3, + 106, + 109, + 85, + 112, + 78, + 160, + 165, + 20, + 102, + 130, + 84, + 145, + 25, + 79, + 63, + 53, + 10, + 151, + 173, + 84, + 243, + 123, + 124, + 14, + 217, + 200, + 205, + 114, + 141, + 211, + 26, + 113, + 158, + 234, + 147, + 5, + 117, + 126, + 80, + 7, + 126, + 18, + 199, + 2, + 205, + 111, + 70, + 67, + 125, + 224, + 198, + 148, + 30, + 15, + 205, + 1, + 150, + 100, + 9, + 84, + 1, + 17, + 129, + 53, + 99, + 159, + 144, + 115, + 11, + 210, + 188, + 235, + 207, + 8, + 38, + 205, + 121, + 206, + 67, + 128, + 209, + 58, + 227, + 128, + 111, + 134, + 129, + 59, + 206, + 134, + 125, + 146, + 127, + 18, + 60, + 245, + 26, + 147, + 4, + 55, + 216, + 234, + 68, + 253, + 152, + 24, + 214, + 196, + 231, + 142, + 107, + 151, + 64, + 142, + 172, + 213, + 75, + 239, + 66, + 106, + 61, + 210, + 76, + 192, + 113, + 125, + 160, + 122, + 21, + 222, + 86, + 47, + 57, + 57, + 62, + 110, + 94, + 174, + 77, + 202, + 238, + 33, + 209, + 191, + 36, + 183, + 243, + 187, + 94, + 198, + 142, + 27, + 2, + 116, + 10, + 98, + 120, + 111, + 247, + 167, + 9, + 53, + 106, + 85, + 128, + 236, + 186, + 58, + 165, + 57, + 157, + 199, + 43, + 224, + 120, + 10, + 80, + 181, + 161, + 24, + 96, + 56, + 66, + 240, + 245, + 151, + 127, + 177, + 78, + 47, + 198, + 20, + 104, + 113, + 99, + 110, + 128, + 27, + 58, + 179, + 134, + 8, + 221, + 227, + 212, + 229, + 146, + 227, + 218, + 113, + 88, + 125, + 178, + 189, + 20, + 229, + 115, + 52, + 96, + 109, + 11, + 107, + 205, + 170, + 179, + 145, + 128, + 75, + 130, + 195, + 73, + 219, + 49, + 201, + 182, + 217, + 199, + 233, + 22, + 2, + 183, + 195, + 14, + 169, + 74, + 205, + 65, + 231, + 26, + 135, + 171, + 235, + 153, + 124, + 251, + 96, + 180, + 82, + 83, + 17, + 154, + 194, + 32, + 148, + 111, + 155, + 115, + 84, + 68, + 169, + 142, + 103, + 134, + 48, + 121, + 176, + 180, + 209, + 111, + 200, + 192, + 6, + 177, + 211, + 238, + 127, + 254, + 129, + 15, + 171, + 244, + 190, + 160, + 79, + 161, + 129, + 92, + 84, + 84, + 219, + 208, + 61, + 167, + 69, + 236, + 107, + 218, + 245, + 69, + 250, + 205, + 84, + 134, + 165, + 67, + 247, + 17, + 182, + 132, + 93, + 105, + 215, + 141, + 24, + 158, + 189, + 115, + 141, + 180, + 41, + 9, + 254, + 177, + 72, + 222, + 174, + 155, + 229, + 138, + 38, + 173, + 8, + 152, + 189, + 17, + 103, + 93, + 205, + 222, + 3, + 39, + 159, + 132, + 163, + 144, + 103, + 193, + 149, + 93, + 48, + 224, + 84, + 64, + 227, + 206, + 124, + 236, + 13, + 36, + 58, + 66, + 177, + 195, + 185, + 99, + 121, + 179, + 106, + 104, + 47, + 80, + 195, + 213, + 105, + 55, + 61, + 8, + 166, + 112, + 50, + 12, + 205, + 249, + 74, + 31, + 3, + 142, + 59, + 130, + 37, + 131, + 23, + 117, + 130, + 98, + 11, + 196, + 194, + 88, + 232, + 103, + 174, + 225, + 199, + 58, + 60, + 1, + 179, + 53, + 26, + 171, + 4, + 79, + 181, + 94, + 178, + 29, + 51, + 248, + 8, + 87, + 233, + 99, + 112, + 139, + 161, + 213, + 0, + 124, + 25, + 240, + 28, + 161, + 144, + 63, + 167, + 20, + 166, + 111, + 220, + 37, + 143, + 213, + 107, + 180, + 54, + 57, + 254, + 133, + 125, + 144, + 29, + 216, + 28, + 64, + 100, + 141, + 155, + 188, + 67, + 98, + 180, + 119, + 204, + 17, + 202, + 230, + 173, + 89, + 171, + 118, + 197, + 193, + 235, + 161, + 23, + 188, + 162, + 42, + 136, + 204, + 66, + 142, + 113, + 45, + 159, + 253, + 196, + 56, + 127, + 85, + 119, + 230, + 34, + 220, + 29, + 186, + 136, + 229, + 158, + 95, + 87, + 144, + 196, + 247, + 247, + 249, + 44, + 3, + 60, + 245, + 163, + 17, + 10, + 18, + 215, + 45, + 93, + 64, + 208, + 174, + 132, + 133, + 253, + 226, + 176, + 169, + 109, + 80, + 226, + 78, + 164, + 108, + 49, + 232, + 142, + 177, + 183, + 243, + 219, + 179, + 170, + 14, + 216, + 219, + 70, + 104, + 151, + 80, + 245, + 82, + 90, + 48, + 36, + 54, + 110, + 185, + 231, + 181, + 228, + 32, + 197, + 195, + 11, + 125, + 26, + 201, + 220, + 187, + 1, + 136, + 152, + 127, + 82, + 163, + 30, + 72, + 20, + 129, + 40, + 209, + 3, + 229, + 232, + 78, + 105, + 118, + 40, + 115, + 195, + 214, + 213, + 56, + 249, + 188, + 249, + 120, + 243, + 8, + 121, + 83, + 151, + 58, + 245, + 215, + 94, + 229, + 167, + 223, + 96, + 27, + 204, + 233, + 159, + 223, + 6, + 177, + 12, + 4, + 99, + 14, + 63, + 241, + 210, + 91, + 120, + 175, + 82, + 59, + 246, + 4, + 43, + 37, + 240, + 168, + 183, + 237, + 27, + 27, + 207, + 37, + 101, + 103, + 28, + 249, + 248, + 234, + 89, + 185, + 255, + 96, + 242, + 149, + 29, + 232, + 201, + 82, + 120, + 146, + 241, + 112, + 44, + 45, + 25, + 158, + 129, + 22, + 22, + 189, + 109, + 44, + 169, + 95, + 222, + 201, + 117, + 130, + 208, + 18, + 31, + 167, + 156, + 17, + 129, + 22, + 193, + 22, + 70, + 58, + 2, + 107, + 168, + 11, + 172, + 185, + 98, + 36, + 119, + 109, + 158, + 220, + 239, + 39, + 242, + 118, + 97, + 250, + 78, + 131, + 164, + 94, + 246, + 202, + 70, + 183, + 3, + 233, + 235, + 157, + 92, + 216, + 68, + 180, + 66, + 91, + 153, + 20, + 96, + 123, + 214, + 40, + 30, + 211, + 103, + 200, + 115, + 119, + 230, + 232, + 100, + 228, + 76, + 79, + 222, + 209, + 112, + 130, + 119, + 201, + 212, + 240, + 189, + 220, + 134, + 143, + 179, + 78, + 106, + 211, + 64, + 45, + 79, + 93, + 195, + 70, + 155, + 28, + 220, + 4, + 52, + 57, + 92, + 174, + 244, + 93, + 42, + 147, + 73, + 239, + 233, + 231, + 59, + 52, + 129, + 120, + 171, + 207, + 147, + 223, + 215, + 222, + 120, + 134, + 21, + 99, + 103, + 169, + 235, + 25, + 86, + 28, + 206, + 185, + 207, + 79, + 141, + 154, + 138, + 133, + 100, + 195, + 192, + 78, + 91, + 44, + 82, + 246, + 225, + 64, + 72, + 117, + 73, + 179, + 97, + 47, + 209, + 207, + 3, + 238, + 199, + 49, + 92, + 190, + 1, + 165, + 115, + 152, + 72, + 14, + 77, + 97, + 60, + 76, + 76, + 173, + 35, + 138, + 102, + 57, + 222, + 61, + 250, + 160, + 165, + 143, + 116, + 227, + 221, + 35, + 239, + 93, + 53, + 166, + 207, + 245, + 42, + 54, + 47, + 40, + 92, + 210, + 48, + 182, + 154, + 29, + 142, + 168, + 99, + 118, + 218, + 233, + 191, + 60, + 96, + 144, + 156, + 69, + 113, + 63, + 110, + 83, + 247, + 75, + 60, + 91, + 13, + 247, + 155, + 212, + 124, + 55, + 4, + 179, + 216, + 239, + 66, + 227, + 158, + 204, + 107, + 249, + 93, + 136, + 7, + 200, + 181, + 142, + 173, + 77, + 132, + 131, + 234, + 194, + 161, + 198, + 121, + 154, + 56, + 7, + 108, + 31, + 70, + 136, + 227, + 105, + 224, + 117, + 109, + 230, + 42, + 30, + 126, + 51, + 27, + 233, + 216, + 142, + 36, + 168, + 174, + 80, + 228, + 157, + 181, + 155, + 105, + 2, + 86, + 53, + 204, + 28, + 61, + 204, + 188, + 49, + 62, + 64, + 108, + 122, + 152, + 121, + 232, + 214, + 246, + 149, + 108, + 79, + 107, + 15, + 159, + 159, + 28, + 157, + 63, + 175, + 157, + 188, + 142, + 129, + 2, + 31, + 220, + 80, + 163, + 239, + 184, + 235, + 166, + 150, + 72, + 236, + 59, + 94, + 204, + 85, + 159, + 176, + 183, + 54, + 186, + 138, + 121, + 54, + 217, + 152, + 118, + 84, + 89, + 31, + 75, + 25, + 147, + 92, + 242, + 39, + 78, + 234, + 175, + 126, + 94, + 228, + 40, + 25, + 121, + 210, + 104, + 163, + 36, + 50, + 224, + 177, + 60, + 68, + 29, + 94, + 51, + 65, + 166, + 172, + 134, + 108, + 77, + 65, + 117, + 227, + 25, + 101, + 241, + 81, + 106, + 159, + 241, + 12, + 249, + 169, + 251, + 126, + 222, + 203, + 151, + 70, + 236, + 244, + 121, + 110, + 223, + 66, + 104, + 173, + 67, + 122, + 139, + 161, + 187, + 29, + 232, + 60, + 138, + 61, + 39, + 238, + 146, + 78, + 29, + 135, + 194, + 23, + 139, + 232, + 175, + 65, + 247, + 109, + 238, + 8, + 255, + 72, + 186, + 111, + 208, + 5, + 229, + 247, + 161, + 215, + 226, + 101, + 42, + 208, + 64, + 11, + 61, + 245, + 234, + 20, + 17, + 227, + 25, + 55, + 132, + 199, + 51, + 227, + 218, + 211, + 93, + 27, + 166, + 216, + 106, + 84, + 226, + 110, + 6, + 195, + 189, + 66, + 157, + 125, + 159, + 132, + 180, + 8, + 97, + 16, + 130, + 184, + 183, + 109, + 167, + 209, + 141, + 130, + 108, + 193, + 176, + 42, + 173, + 25, + 182, + 161, + 59, + 125, + 206, + 217, + 154, + 34, + 206, + 206, + 69, + 91, + 99, + 211, + 179, + 124, + 150, + 7, + 100, + 169, + 200, + 206, + 121, + 226, + 221, + 123, + 242, + 139, + 99, + 57, + 216, + 242, + 105, + 79, + 163, + 84, + 5, + 141, + 124, + 218, + 19, + 86, + 205, + 233, + 1, + 149, + 222, + 135, + 102, + 172, + 31, + 55, + 194, + 24, + 241, + 112, + 176, + 10, + 201, + 41, + 12, + 211, + 216, + 218, + 239, + 156, + 224, + 146, + 218, + 66, + 31, + 227, + 162, + 69, + 51, + 103, + 30, + 176, + 105, + 133, + 129, + 80, + 197, + 195, + 139, + 21, + 198, + 24, + 225, + 140, + 244, + 11, + 175, + 207, + 95, + 139, + 185, + 167, + 94, + 97, + 78, + 81, + 53, + 8, + 110, + 178, + 251, + 12, + 244, + 177, + 115, + 200, + 153, + 165, + 177, + 183, + 253, + 113, + 118, + 116, + 166, + 205, + 121, + 219, + 53, + 183, + 205, + 192, + 219, + 217, + 141, + 170, + 141, + 2, + 88, + 118, + 114, + 35, + 133, + 110, + 210, + 95, + 123, + 204, + 229, + 35, + 97, + 250, + 102, + 218, + 156, + 2, + 60, + 102, + 91, + 66, + 191, + 234, + 42, + 55, + 103, + 195, + 242, + 127, + 230, + 3, + 210, + 201, + 6, + 136, + 142, + 16, + 168, + 172, + 74, + 204, + 196, + 193, + 212, + 240, + 165, + 77, + 31, + 200, + 219, + 74, + 143, + 3, + 7, + 159, + 211, + 233, + 118, + 10, + 186, + 228, + 17, + 118, + 201, + 95, + 160, + 26, + 13, + 68, + 6, + 208, + 150, + 70, + 75, + 4, + 17, + 1, + 158, + 51, + 164, + 197, + 84, + 17, + 212, + 99, + 160, + 200, + 117, + 241, + 163, + 85, + 118, + 229, + 178, + 120, + 10, + 57, + 227, + 121, + 28, + 83, + 26, + 41, + 159, + 62, + 244, + 26, + 227, + 99, + 32, + 240, + 90, + 141, + 240, + 184, + 186, + 1, + 218, + 28, + 97, + 173, + 241, + 68, + 83, + 119, + 140, + 73, + 25, + 204, + 197, + 179, + 23, + 147, + 50, + 213, + 112, + 69, + 159, + 11, + 8, + 159, + 236, + 118, + 93, + 74, + 56, + 241, + 67, + 94, + 26, + 201, + 88, + 110, + 219, + 108, + 99, + 134, + 157, + 124, + 110, + 76, + 146, + 130, + 251, + 169, + 209, + 115, + 209, + 19, + 106, + 109, + 15, + 217, + 110, + 92, + 177, + 1, + 59, + 39, + 159, + 227, + 100, + 112, + 219, + 121, + 165, + 218, + 92, + 227, + 179, + 207, + 140, + 17, + 135, + 28, + 242, + 121, + 76, + 60, + 209, + 121, + 161, + 29, + 161, + 83, + 210, + 197, + 231, + 201, + 136, + 234, + 69, + 87, + 147, + 9, + 60, + 136, + 176, + 51, + 120, + 248, + 13, + 92, + 235, + 23, + 143, + 115, + 18, + 185, + 89, + 234, + 55, + 190, + 12, + 178, + 96, + 185, + 199, + 69, + 104, + 185, + 144, + 202, + 13, + 210, + 244, + 30, + 105, + 99, + 169, + 212, + 118, + 199, + 181, + 96, + 145, + 52, + 138, + 68, + 54, + 193, + 218, + 115, + 133, + 113, + 229, + 23, + 103, + 129, + 15, + 166, + 182, + 189, + 242, + 52, + 164, + 219, + 159, + 104, + 85, + 108, + 145, + 27, + 59, + 206, + 68, + 177, + 117, + 12, + 46, + 23, + 175, + 75, + 20, + 6, + 227, + 232, + 180, + 198, + 17, + 23, + 40, + 242, + 8, + 103, + 226, + 215, + 98, + 210, + 223, + 175, + 152, + 197, + 233, + 145, + 79, + 163, + 83, + 217, + 141, + 115, + 131, + 204, + 88, + 23, + 117, + 110, + 40, + 223, + 159, + 203, + 117, + 188, + 253, + 18, + 12, + 233, + 28, + 60, + 122, + 140, + 27, + 98, + 204, + 246, + 121, + 72, + 45, + 146, + 247, + 0, + 207, + 31, + 101, + 199, + 70, + 30, + 232, + 103, + 157, + 249, + 226, + 228, + 121, + 126, + 26, + 163, + 202, + 153, + 109, + 74, + 222, + 149, + 92, + 48, + 10, + 125, + 40, + 154, + 75, + 108, + 86, + 90, + 19, + 38, + 98, + 99, + 168, + 33, + 237, + 225, + 189, + 69, + 232, + 19, + 250, + 81, + 70, + 196, + 30, + 14, + 168, + 22, + 66, + 241, + 85, + 145, + 152, + 2, + 210, + 246, + 1, + 230, + 111, + 198, + 65, + 71, + 24, + 166, + 220, + 210, + 70, + 218, + 240, + 41, + 3, + 67, + 138, + 211, + 158, + 242, + 80, + 154, + 84, + 36, + 86, + 115, + 9, + 55, + 118, + 147, + 105, + 110, + 188, + 44, + 51, + 55, + 153, + 14, + 205, + 201, + 82, + 107, + 104, + 205, + 122, + 54, + 237, + 78, + 19, + 171, + 187, + 29, + 13, + 146, + 144, + 208, + 157, + 206, + 150, + 46, + 89, + 133, + 62, + 110, + 82, + 25, + 221, + 164, + 4, + 169, + 136, + 187, + 162, + 123, + 115, + 220, + 8, + 139, + 41, + 136, + 140, + 216, + 105, + 240, + 20, + 28, + 204, + 164, + 71, + 199, + 174, + 47, + 185, + 124, + 167, + 168, + 137, + 219, + 110, + 31, + 215, + 72, + 194, + 149, + 189, + 188, + 184, + 162, + 89, + 245, + 139, + 184, + 70, + 100, + 205, + 179, + 220, + 139, + 1, + 245, + 12, + 50, + 58, + 183, + 6, + 101, + 3, + 103, + 55, + 135, + 9, + 2, + 23, + 242, + 227, + 211, + 101, + 117, + 207, + 168, + 106, + 77, + 58, + 84, + 19, + 64, + 149, + 144, + 62, + 221, + 231, + 0, + 212, + 222, + 188, + 183, + 213, + 188, + 238, + 96, + 189, + 80, + 184, + 141, + 58, + 69, + 160, + 123, + 160, + 23, + 137, + 63, + 255, + 192, + 95, + 220, + 99, + 100, + 34, + 108, + 79, + 204, + 121, + 211, + 33, + 233, + 95, + 110, + 0, + 212, + 255, + 7, + 175, + 113, + 223, + 209, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 48, + 52, + 50, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 219, + 142, + 100, + 217, + 141, + 221, + 123, + 127, + 69, + 253, + 128, + 40, + 94, + 247, + 5, + 16, + 4, + 116, + 183, + 186, + 7, + 126, + 24, + 192, + 54, + 250, + 15, + 52, + 158, + 1, + 12, + 232, + 193, + 227, + 255, + 7, + 12, + 70, + 149, + 167, + 34, + 148, + 100, + 198, + 217, + 76, + 86, + 84, + 143, + 108, + 73, + 128, + 164, + 202, + 206, + 168, + 56, + 251, + 236, + 27, + 23, + 215, + 133, + 62, + 225, + 39, + 252, + 244, + 7, + 250, + 132, + 159, + 150, + 242, + 167, + 191, + 254, + 237, + 135, + 255, + 245, + 3, + 76, + 187, + 253, + 233, + 255, + 253, + 239, + 191, + 254, + 237, + 7, + 250, + 228, + 255, + 254, + 239, + 255, + 116, + 251, + 47, + 250, + 244, + 239, + 255, + 246, + 195, + 31, + 255, + 73, + 62, + 253, + 219, + 255, + 254, + 193, + 127, + 62, + 183, + 126, + 34, + 98, + 249, + 244, + 239, + 255, + 227, + 135, + 127, + 253, + 225, + 191, + 253, + 221, + 39, + 76, + 246, + 255, + 252, + 245, + 111, + 183, + 127, + 20, + 253, + 51, + 62, + 255, + 143, + 175, + 159, + 241, + 199, + 255, + 250, + 233, + 79, + 127, + 250, + 227, + 63, + 255, + 252, + 95, + 254, + 242, + 9, + 63, + 253, + 249, + 207, + 63, + 253, + 229, + 231, + 31, + 126, + 250, + 237, + 135, + 63, + 254, + 170, + 159, + 72, + 97, + 248, + 191, + 230, + 167, + 223, + 254, + 245, + 7, + 250, + 250, + 85, + 65, + 231, + 94, + 52, + 101, + 127, + 250, + 205, + 63, + 247, + 15, + 36, + 192, + 115, + 138, + 202, + 250, + 244, + 219, + 191, + 124, + 250, + 19, + 162, + 142, + 63, + 127, + 250, + 237, + 127, + 254, + 48, + 65, + 120, + 17, + 251, + 151, + 249, + 242, + 231, + 63, + 221, + 254, + 124, + 1, + 25, + 17, + 206, + 245, + 245, + 7, + 154, + 252, + 192, + 240, + 246, + 3, + 98, + 96, + 92, + 115, + 226, + 221, + 79, + 36, + 251, + 172, + 159, + 111, + 63, + 16, + 96, + 27, + 164, + 91, + 190, + 254, + 6, + 103, + 127, + 9, + 221, + 126, + 240, + 203, + 111, + 71, + 15, + 62, + 4, + 76, + 151, + 45, + 13, + 6, + 0, + 165, + 244, + 137, + 19, + 6, + 163, + 141, + 224, + 3, + 237, + 116, + 68, + 243, + 135, + 93, + 217, + 184, + 253, + 154, + 140, + 155, + 206, + 202, + 195, + 16, + 33, + 44, + 220, + 60, + 172, + 109, + 124, + 136, + 20, + 214, + 34, + 86, + 138, + 230, + 220, + 249, + 220, + 218, + 201, + 152, + 174, + 210, + 151, + 211, + 1, + 99, + 240, + 88, + 187, + 239, + 121, + 13, + 97, + 138, + 142, + 112, + 8, + 237, + 243, + 91, + 81, + 192, + 73, + 123, + 218, + 188, + 176, + 200, + 106, + 207, + 53, + 9, + 8, + 215, + 26, + 125, + 143, + 53, + 13, + 104, + 225, + 146, + 147, + 183, + 248, + 108, + 241, + 158, + 252, + 134, + 125, + 29, + 57, + 217, + 182, + 255, + 227, + 7, + 248, + 107, + 229, + 113, + 152, + 12, + 54, + 175, + 33, + 109, + 3, + 196, + 140, + 128, + 136, + 35, + 154, + 230, + 231, + 143, + 91, + 124, + 42, + 69, + 144, + 169, + 171, + 239, + 161, + 84, + 65, + 117, + 204, + 213, + 242, + 80, + 68, + 119, + 179, + 127, + 83, + 252, + 231, + 3, + 245, + 239, + 127, + 112, + 250, + 165, + 39, + 195, + 30, + 218, + 183, + 164, + 121, + 78, + 64, + 25, + 209, + 7, + 86, + 31, + 233, + 237, + 15, + 30, + 182, + 134, + 187, + 79, + 186, + 95, + 92, + 184, + 63, + 188, + 227, + 9, + 110, + 24, + 60, + 145, + 218, + 70, + 71, + 72, + 96, + 236, + 181, + 103, + 52, + 71, + 238, + 207, + 123, + 150, + 183, + 171, + 121, + 45, + 28, + 100, + 28, + 223, + 3, + 134, + 142, + 231, + 251, + 126, + 246, + 11, + 15, + 39, + 163, + 232, + 223, + 15, + 91, + 48, + 158, + 63, + 198, + 223, + 181, + 56, + 206, + 99, + 1, + 47, + 28, + 125, + 23, + 13, + 153, + 12, + 98, + 28, + 94, + 52, + 102, + 54, + 169, + 184, + 244, + 55, + 45, + 5, + 155, + 54, + 250, + 246, + 17, + 89, + 11, + 134, + 206, + 17, + 205, + 145, + 251, + 113, + 127, + 120, + 33, + 181, + 47, + 175, + 168, + 176, + 117, + 55, + 158, + 232, + 138, + 27, + 144, + 105, + 69, + 7, + 186, + 238, + 247, + 71, + 254, + 253, + 153, + 175, + 182, + 174, + 174, + 255, + 211, + 239, + 44, + 11, + 68, + 215, + 104, + 28, + 5, + 101, + 80, + 198, + 240, + 90, + 243, + 112, + 91, + 187, + 127, + 88, + 202, + 214, + 90, + 233, + 118, + 170, + 99, + 192, + 154, + 178, + 251, + 110, + 53, + 58, + 17, + 182, + 218, + 14, + 239, + 106, + 217, + 155, + 186, + 223, + 65, + 30, + 158, + 54, + 187, + 238, + 39, + 127, + 126, + 127, + 169, + 111, + 216, + 217, + 141, + 20, + 182, + 12, + 234, + 27, + 29, + 163, + 13, + 136, + 139, + 214, + 201, + 150, + 163, + 63, + 117, + 110, + 163, + 38, + 27, + 100, + 177, + 112, + 223, + 67, + 169, + 128, + 154, + 74, + 56, + 143, + 127, + 205, + 78, + 159, + 187, + 213, + 140, + 131, + 175, + 86, + 35, + 111, + 7, + 33, + 253, + 11, + 126, + 46, + 61, + 203, + 66, + 216, + 108, + 216, + 87, + 173, + 225, + 167, + 63, + 8, + 195, + 152, + 108, + 44, + 207, + 106, + 246, + 124, + 129, + 164, + 197, + 124, + 118, + 101, + 76, + 177, + 135, + 172, + 238, + 205, + 214, + 218, + 151, + 63, + 63, + 158, + 19, + 96, + 83, + 253, + 155, + 190, + 121, + 250, + 175, + 195, + 24, + 128, + 52, + 132, + 4, + 190, + 114, + 121, + 191, + 11, + 214, + 252, + 242, + 207, + 63, + 223, + 3, + 54, + 212, + 4, + 216, + 240, + 231, + 201, + 183, + 96, + 27, + 15, + 38, + 251, + 56, + 152, + 146, + 214, + 225, + 199, + 151, + 31, + 175, + 170, + 113, + 247, + 93, + 126, + 244, + 86, + 84, + 227, + 124, + 118, + 4, + 223, + 215, + 212, + 249, + 81, + 203, + 239, + 3, + 87, + 135, + 223, + 109, + 34, + 160, + 14, + 155, + 109, + 15, + 59, + 21, + 136, + 150, + 233, + 248, + 142, + 8, + 194, + 86, + 208, + 205, + 83, + 250, + 158, + 106, + 47, + 176, + 161, + 147, + 228, + 228, + 29, + 230, + 83, + 249, + 210, + 233, + 124, + 13, + 98, + 76, + 39, + 255, + 143, + 37, + 164, + 68, + 22, + 232, + 226, + 109, + 141, + 224, + 139, + 50, + 152, + 233, + 14, + 143, + 65, + 253, + 229, + 112, + 239, + 204, + 55, + 213, + 34, + 50, + 164, + 32, + 50, + 164, + 175, + 90, + 160, + 185, + 64, + 113, + 73, + 56, + 255, + 179, + 181, + 251, + 101, + 10, + 157, + 254, + 85, + 27, + 97, + 8, + 105, + 223, + 78, + 69, + 91, + 97, + 162, + 132, + 112, + 231, + 171, + 22, + 175, + 163, + 91, + 56, + 103, + 136, + 69, + 21, + 33, + 16, + 218, + 64, + 186, + 45, + 122, + 201, + 95, + 46, + 243, + 39, + 23, + 132, + 12, + 221, + 125, + 168, + 193, + 51, + 76, + 233, + 177, + 72, + 164, + 248, + 166, + 85, + 132, + 142, + 198, + 130, + 101, + 115, + 54, + 194, + 130, + 14, + 70, + 241, + 158, + 209, + 202, + 229, + 159, + 147, + 146, + 175, + 52, + 149, + 121, + 17, + 224, + 148, + 176, + 198, + 46, + 126, + 247, + 101, + 64, + 106, + 33, + 72, + 90, + 45, + 124, + 143, + 225, + 42, + 6, + 214, + 45, + 125, + 117, + 172, + 224, + 0, + 97, + 146, + 150, + 58, + 182, + 118, + 109, + 23, + 222, + 176, + 141, + 26, + 139, + 115, + 17, + 5, + 100, + 9, + 17, + 155, + 75, + 39, + 229, + 99, + 253, + 153, + 13, + 67, + 118, + 233, + 206, + 94, + 121, + 105, + 13, + 202, + 92, + 176, + 100, + 132, + 112, + 75, + 21, + 125, + 98, + 216, + 184, + 194, + 166, + 223, + 139, + 96, + 87, + 69, + 1, + 94, + 130, + 125, + 117, + 172, + 226, + 4, + 49, + 11, + 129, + 92, + 251, + 188, + 141, + 18, + 130, + 45, + 229, + 187, + 102, + 73, + 14, + 175, + 210, + 41, + 130, + 179, + 178, + 37, + 81, + 90, + 231, + 106, + 8, + 198, + 91, + 27, + 199, + 199, + 20, + 6, + 82, + 120, + 45, + 201, + 135, + 161, + 84, + 62, + 234, + 240, + 222, + 152, + 53, + 238, + 188, + 58, + 54, + 176, + 205, + 112, + 231, + 125, + 232, + 5, + 95, + 218, + 164, + 142, + 241, + 167, + 67, + 32, + 235, + 20, + 16, + 75, + 129, + 178, + 244, + 76, + 57, + 133, + 83, + 106, + 237, + 51, + 179, + 5, + 104, + 210, + 8, + 29, + 219, + 96, + 32, + 182, + 112, + 47, + 123, + 21, + 130, + 182, + 24, + 204, + 27, + 147, + 253, + 24, + 17, + 163, + 244, + 215, + 111, + 233, + 164, + 41, + 65, + 198, + 44, + 48, + 112, + 173, + 73, + 111, + 191, + 243, + 251, + 200, + 142, + 160, + 47, + 105, + 180, + 35, + 100, + 135, + 155, + 144, + 157, + 124, + 112, + 210, + 210, + 45, + 109, + 198, + 166, + 197, + 109, + 250, + 81, + 181, + 13, + 156, + 65, + 134, + 77, + 238, + 187, + 57, + 235, + 0, + 149, + 57, + 118, + 120, + 167, + 233, + 45, + 97, + 7, + 195, + 148, + 189, + 169, + 145, + 21, + 52, + 96, + 17, + 133, + 59, + 201, + 227, + 225, + 60, + 85, + 158, + 47, + 150, + 156, + 229, + 83, + 218, + 231, + 214, + 4, + 223, + 45, + 169, + 239, + 176, + 221, + 4, + 44, + 195, + 214, + 211, + 78, + 193, + 195, + 222, + 144, + 86, + 129, + 239, + 35, + 26, + 199, + 4, + 164, + 5, + 91, + 214, + 198, + 198, + 26, + 159, + 5, + 208, + 249, + 53, + 71, + 148, + 166, + 116, + 43, + 44, + 93, + 58, + 72, + 9, + 166, + 14, + 30, + 125, + 111, + 145, + 212, + 96, + 209, + 226, + 16, + 244, + 203, + 169, + 123, + 233, + 228, + 212, + 46, + 180, + 191, + 86, + 204, + 211, + 82, + 216, + 60, + 87, + 31, + 10, + 66, + 107, + 193, + 222, + 123, + 70, + 203, + 154, + 63, + 63, + 237, + 134, + 57, + 109, + 160, + 242, + 133, + 29, + 120, + 254, + 254, + 177, + 157, + 39, + 37, + 223, + 241, + 105, + 172, + 48, + 120, + 53, + 190, + 17, + 150, + 5, + 19, + 49, + 124, + 35, + 231, + 221, + 142, + 34, + 235, + 202, + 54, + 224, + 212, + 240, + 160, + 42, + 62, + 213, + 16, + 32, + 29, + 33, + 165, + 230, + 69, + 189, + 118, + 94, + 19, + 6, + 34, + 55, + 62, + 212, + 166, + 219, + 5, + 76, + 191, + 249, + 52, + 19, + 156, + 62, + 10, + 141, + 12, + 48, + 33, + 2, + 102, + 209, + 239, + 74, + 1, + 121, + 251, + 106, + 107, + 251, + 162, + 168, + 175, + 66, + 230, + 70, + 128, + 69, + 23, + 140, + 173, + 28, + 173, + 107, + 25, + 217, + 190, + 152, + 66, + 186, + 247, + 244, + 241, + 133, + 244, + 97, + 42, + 214, + 26, + 176, + 19, + 234, + 106, + 241, + 121, + 55, + 1, + 90, + 184, + 54, + 178, + 151, + 94, + 195, + 116, + 111, + 176, + 209, + 140, + 239, + 85, + 31, + 128, + 141, + 116, + 198, + 88, + 216, + 207, + 135, + 248, + 94, + 13, + 10, + 19, + 132, + 61, + 87, + 56, + 89, + 138, + 207, + 36, + 6, + 104, + 72, + 225, + 181, + 37, + 213, + 34, + 220, + 111, + 164, + 13, + 160, + 174, + 222, + 138, + 136, + 213, + 72, + 191, + 185, + 209, + 157, + 8, + 201, + 158, + 244, + 92, + 30, + 119, + 251, + 148, + 15, + 153, + 96, + 40, + 181, + 51, + 79, + 55, + 130, + 42, + 54, + 110, + 177, + 186, + 21, + 140, + 56, + 222, + 98, + 237, + 221, + 9, + 24, + 188, + 194, + 89, + 101, + 80, + 173, + 53, + 70, + 39, + 131, + 202, + 217, + 25, + 43, + 188, + 163, + 231, + 32, + 100, + 6, + 12, + 225, + 231, + 202, + 145, + 193, + 255, + 6, + 135, + 27, + 63, + 200, + 122, + 145, + 1, + 74, + 157, + 152, + 180, + 41, + 130, + 46, + 221, + 209, + 172, + 168, + 49, + 73, + 204, + 79, + 22, + 25, + 68, + 223, + 148, + 225, + 148, + 213, + 35, + 167, + 5, + 204, + 57, + 35, + 234, + 28, + 56, + 123, + 82, + 60, + 29, + 207, + 1, + 152, + 230, + 143, + 247, + 30, + 243, + 233, + 232, + 3, + 39, + 44, + 118, + 230, + 233, + 219, + 15, + 124, + 104, + 119, + 222, + 63, + 235, + 195, + 188, + 214, + 59, + 34, + 83, + 145, + 143, + 51, + 96, + 35, + 203, + 212, + 83, + 54, + 151, + 109, + 159, + 97, + 126, + 218, + 30, + 96, + 126, + 210, + 133, + 249, + 245, + 195, + 66, + 193, + 15, + 94, + 196, + 129, + 145, + 13, + 155, + 8, + 87, + 99, + 71, + 68, + 96, + 47, + 193, + 184, + 35, + 146, + 33, + 76, + 181, + 242, + 193, + 6, + 48, + 14, + 10, + 233, + 87, + 69, + 52, + 16, + 193, + 113, + 8, + 230, + 242, + 5, + 229, + 4, + 31, + 107, + 195, + 79, + 208, + 49, + 240, + 205, + 216, + 40, + 142, + 67, + 5, + 30, + 78, + 110, + 59, + 66, + 80, + 82, + 6, + 106, + 31, + 38, + 149, + 35, + 202, + 47, + 2, + 171, + 198, + 6, + 117, + 101, + 106, + 35, + 139, + 74, + 192, + 24, + 45, + 28, + 234, + 95, + 143, + 187, + 2, + 53, + 61, + 233, + 22, + 88, + 91, + 103, + 39, + 189, + 106, + 194, + 30, + 35, + 228, + 211, + 188, + 142, + 94, + 229, + 226, + 10, + 220, + 141, + 48, + 22, + 51, + 40, + 113, + 220, + 47, + 120, + 178, + 187, + 157, + 204, + 229, + 20, + 121, + 160, + 62, + 141, + 183, + 30, + 247, + 167, + 107, + 0, + 213, + 30, + 96, + 198, + 187, + 239, + 246, + 42, + 136, + 48, + 88, + 99, + 84, + 63, + 169, + 64, + 46, + 169, + 201, + 174, + 21, + 104, + 189, + 76, + 54, + 81, + 4, + 51, + 191, + 70, + 244, + 129, + 60, + 14, + 27, + 197, + 84, + 44, + 249, + 114, + 121, + 17, + 88, + 34, + 124, + 175, + 231, + 203, + 122, + 217, + 25, + 138, + 57, + 127, + 255, + 148, + 161, + 135, + 55, + 120, + 167, + 44, + 172, + 85, + 97, + 178, + 5, + 116, + 75, + 163, + 30, + 115, + 79, + 176, + 97, + 225, + 169, + 125, + 206, + 118, + 74, + 65, + 146, + 228, + 147, + 184, + 38, + 218, + 243, + 118, + 251, + 224, + 144, + 148, + 87, + 189, + 47, + 42, + 176, + 168, + 68, + 47, + 80, + 86, + 70, + 143, + 202, + 36, + 160, + 63, + 181, + 98, + 39, + 78, + 23, + 218, + 220, + 216, + 5, + 185, + 209, + 133, + 134, + 206, + 249, + 123, + 132, + 25, + 116, + 13, + 152, + 180, + 67, + 21, + 89, + 21, + 42, + 66, + 152, + 155, + 194, + 118, + 125, + 186, + 225, + 36, + 139, + 54, + 7, + 210, + 178, + 99, + 236, + 125, + 48, + 244, + 50, + 9, + 170, + 182, + 173, + 155, + 122, + 113, + 194, + 141, + 202, + 26, + 51, + 47, + 78, + 66, + 32, + 79, + 62, + 63, + 42, + 17, + 40, + 34, + 46, + 123, + 78, + 81, + 42, + 242, + 174, + 166, + 223, + 18, + 87, + 168, + 238, + 105, + 163, + 40, + 21, + 46, + 135, + 233, + 221, + 103, + 30, + 3, + 25, + 181, + 163, + 193, + 101, + 105, + 172, + 34, + 239, + 145, + 151, + 206, + 78, + 53, + 24, + 170, + 234, + 71, + 195, + 155, + 225, + 57, + 119, + 228, + 168, + 97, + 172, + 27, + 144, + 190, + 162, + 67, + 87, + 233, + 88, + 107, + 129, + 76, + 36, + 62, + 65, + 102, + 180, + 11, + 153, + 185, + 34, + 242, + 188, + 118, + 205, + 46, + 117, + 22, + 120, + 194, + 88, + 11, + 27, + 249, + 43, + 66, + 48, + 45, + 225, + 49, + 228, + 165, + 64, + 17, + 145, + 236, + 170, + 144, + 189, + 191, + 66, + 75, + 195, + 6, + 65, + 153, + 164, + 53, + 55, + 198, + 109, + 203, + 20, + 172, + 124, + 213, + 226, + 95, + 6, + 56, + 176, + 83, + 86, + 181, + 54, + 144, + 240, + 136, + 143, + 205, + 191, + 100, + 192, + 224, + 177, + 2, + 183, + 104, + 60, + 69, + 176, + 101, + 199, + 58, + 153, + 170, + 241, + 212, + 0, + 36, + 218, + 161, + 29, + 78, + 173, + 27, + 65, + 172, + 64, + 67, + 98, + 76, + 165, + 74, + 37, + 91, + 192, + 98, + 24, + 22, + 0, + 185, + 178, + 234, + 92, + 200, + 123, + 138, + 25, + 126, + 217, + 171, + 6, + 176, + 108, + 155, + 139, + 63, + 138, + 111, + 205, + 229, + 255, + 191, + 145, + 98, + 73, + 78, + 108, + 246, + 235, + 199, + 209, + 234, + 125, + 66, + 198, + 58, + 64, + 196, + 242, + 31, + 100, + 31, + 85, + 212, + 164, + 9, + 129, + 90, + 108, + 44, + 85, + 37, + 77, + 25, + 24, + 115, + 136, + 53, + 242, + 47, + 199, + 52, + 182, + 244, + 92, + 184, + 80, + 77, + 93, + 170, + 41, + 179, + 173, + 6, + 75, + 139, + 152, + 215, + 109, + 38, + 54, + 98, + 146, + 188, + 111, + 51, + 49, + 186, + 190, + 10, + 221, + 151, + 154, + 107, + 199, + 253, + 248, + 199, + 81, + 168, + 117, + 92, + 152, + 96, + 77, + 106, + 212, + 107, + 11, + 27, + 108, + 149, + 88, + 133, + 155, + 248, + 58, + 165, + 166, + 75, + 41, + 140, + 208, + 11, + 122, + 217, + 132, + 201, + 26, + 222, + 107, + 138, + 131, + 48, + 8, + 230, + 30, + 51, + 218, + 240, + 101, + 222, + 249, + 47, + 184, + 238, + 242, + 57, + 154, + 82, + 228, + 47, + 77, + 64, + 163, + 198, + 13, + 192, + 249, + 75, + 196, + 207, + 245, + 213, + 31, + 18, + 130, + 21, + 193, + 17, + 218, + 48, + 180, + 211, + 185, + 80, + 89, + 96, + 50, + 134, + 159, + 152, + 11, + 229, + 146, + 2, + 183, + 232, + 73, + 101, + 8, + 195, + 181, + 185, + 189, + 234, + 182, + 121, + 104, + 8, + 112, + 108, + 149, + 150, + 252, + 121, + 17, + 7, + 154, + 27, + 168, + 177, + 136, + 209, + 37, + 64, + 94, + 198, + 124, + 63, + 85, + 167, + 161, + 128, + 75, + 48, + 251, + 54, + 93, + 67, + 183, + 147, + 229, + 144, + 69, + 246, + 0, + 199, + 16, + 141, + 184, + 215, + 112, + 239, + 78, + 116, + 95, + 135, + 186, + 152, + 240, + 25, + 182, + 85, + 132, + 111, + 84, + 253, + 155, + 246, + 109, + 79, + 78, + 250, + 17, + 221, + 248, + 124, + 197, + 62, + 28, + 168, + 247, + 211, + 27, + 197, + 158, + 171, + 4, + 107, + 234, + 25, + 27, + 78, + 57, + 167, + 208, + 19, + 179, + 202, + 153, + 97, + 152, + 83, + 10, + 125, + 167, + 99, + 45, + 160, + 51, + 213, + 227, + 37, + 211, + 199, + 166, + 250, + 86, + 189, + 196, + 143, + 107, + 39, + 84, + 97, + 145, + 176, + 51, + 222, + 142, + 152, + 65, + 76, + 19, + 92, + 106, + 99, + 39, + 240, + 147, + 253, + 63, + 237, + 203, + 221, + 134, + 250, + 228, + 246, + 218, + 69, + 115, + 37, + 130, + 177, + 217, + 194, + 86, + 19, + 255, + 148, + 113, + 176, + 242, + 199, + 173, + 121, + 4, + 185, + 113, + 24, + 49, + 53, + 118, + 175, + 9, + 13, + 112, + 41, + 197, + 30, + 155, + 41, + 149, + 200, + 218, + 172, + 200, + 109, + 150, + 101, + 108, + 3, + 173, + 147, + 34, + 226, + 50, + 54, + 225, + 16, + 164, + 41, + 168, + 243, + 210, + 69, + 83, + 5, + 66, + 114, + 90, + 78, + 149, + 232, + 51, + 193, + 124, + 74, + 63, + 189, + 51, + 32, + 94, + 104, + 123, + 20, + 69, + 80, + 72, + 192, + 100, + 141, + 183, + 0, + 70, + 3, + 94, + 51, + 116, + 73, + 121, + 70, + 232, + 249, + 230, + 112, + 150, + 131, + 50, + 27, + 59, + 57, + 130, + 14, + 202, + 108, + 255, + 152, + 167, + 40, + 194, + 201, + 190, + 116, + 195, + 113, + 16, + 55, + 127, + 244, + 245, + 142, + 5, + 102, + 182, + 184, + 213, + 24, + 105, + 36, + 234, + 204, + 148, + 95, + 157, + 21, + 167, + 15, + 107, + 84, + 145, + 63, + 108, + 146, + 189, + 64, + 199, + 232, + 228, + 22, + 17, + 131, + 201, + 138, + 5, + 210, + 167, + 37, + 119, + 17, + 28, + 17, + 134, + 77, + 210, + 200, + 230, + 20, + 113, + 97, + 85, + 108, + 63, + 202, + 35, + 189, + 167, + 95, + 193, + 130, + 30, + 145, + 132, + 148, + 144, + 80, + 100, + 11, + 33, + 76, + 165, + 86, + 107, + 238, + 219, + 197, + 50, + 38, + 39, + 167, + 16, + 67, + 109, + 106, + 110, + 79, + 48, + 217, + 157, + 254, + 237, + 251, + 118, + 197, + 138, + 197, + 166, + 127, + 201, + 200, + 35, + 41, + 122, + 217, + 218, + 22, + 82, + 70, + 80, + 94, + 33, + 139, + 167, + 138, + 6, + 169, + 219, + 161, + 132, + 237, + 150, + 75, + 84, + 223, + 183, + 100, + 181, + 39, + 94, + 254, + 15, + 214, + 46, + 105, + 41, + 90, + 147, + 210, + 217, + 6, + 19, + 156, + 157, + 154, + 51, + 55, + 76, + 225, + 231, + 244, + 218, + 75, + 134, + 53, + 205, + 54, + 75, + 203, + 245, + 74, + 141, + 51, + 255, + 38, + 98, + 91, + 28, + 227, + 12, + 217, + 166, + 124, + 232, + 248, + 92, + 115, + 83, + 185, + 233, + 198, + 182, + 52, + 162, + 101, + 230, + 150, + 21, + 195, + 194, + 103, + 45, + 74, + 179, + 196, + 111, + 124, + 35, + 244, + 115, + 45, + 126, + 71, + 241, + 27, + 223, + 138, + 153, + 139, + 89, + 199, + 33, + 67, + 125, + 82, + 71, + 179, + 175, + 179, + 152, + 241, + 222, + 53, + 185, + 198, + 92, + 180, + 49, + 1, + 71, + 108, + 158, + 80, + 69, + 131, + 8, + 156, + 63, + 160, + 71, + 237, + 164, + 108, + 190, + 22, + 159, + 106, + 47, + 64, + 94, + 141, + 210, + 192, + 128, + 145, + 149, + 234, + 61, + 154, + 237, + 110, + 104, + 120, + 29, + 177, + 111, + 94, + 6, + 71, + 172, + 35, + 86, + 167, + 152, + 27, + 29, + 233, + 193, + 198, + 183, + 246, + 128, + 186, + 214, + 111, + 125, + 40, + 138, + 210, + 124, + 166, + 162, + 53, + 4, + 248, + 161, + 223, + 216, + 162, + 17, + 6, + 91, + 188, + 71, + 171, + 168, + 227, + 219, + 67, + 83, + 183, + 68, + 172, + 216, + 45, + 167, + 72, + 72, + 114, + 215, + 63, + 230, + 112, + 75, + 125, + 188, + 80, + 95, + 171, + 1, + 159, + 225, + 170, + 199, + 16, + 147, + 227, + 242, + 83, + 27, + 237, + 113, + 137, + 92, + 248, + 178, + 53, + 228, + 159, + 190, + 10, + 99, + 36, + 241, + 210, + 66, + 26, + 11, + 2, + 146, + 1, + 107, + 248, + 173, + 231, + 8, + 101, + 124, + 134, + 94, + 28, + 111, + 124, + 55, + 239, + 97, + 63, + 14, + 218, + 30, + 204, + 143, + 59, + 36, + 12, + 91, + 8, + 169, + 213, + 71, + 190, + 1, + 157, + 187, + 184, + 255, + 210, + 202, + 5, + 193, + 13, + 98, + 187, + 81, + 241, + 207, + 36, + 160, + 18, + 23, + 151, + 175, + 82, + 221, + 177, + 8, + 44, + 180, + 70, + 195, + 19, + 150, + 9, + 107, + 198, + 96, + 205, + 181, + 238, + 77, + 3, + 53, + 128, + 7, + 131, + 96, + 235, + 203, + 26, + 3, + 220, + 178, + 227, + 40, + 11, + 38, + 39, + 238, + 20, + 79, + 83, + 130, + 53, + 58, + 165, + 210, + 110, + 219, + 189, + 133, + 99, + 194, + 67, + 225, + 101, + 213, + 34, + 64, + 8, + 65, + 134, + 118, + 122, + 92, + 147, + 130, + 202, + 8, + 61, + 174, + 31, + 168, + 56, + 247, + 45, + 240, + 94, + 47, + 85, + 145, + 13, + 99, + 147, + 117, + 138, + 234, + 4, + 230, + 144, + 240, + 248, + 187, + 212, + 248, + 75, + 52, + 117, + 185, + 228, + 240, + 158, + 199, + 145, + 241, + 3, + 138, + 175, + 124, + 110, + 199, + 14, + 26, + 175, + 133, + 75, + 96, + 76, + 13, + 155, + 127, + 252, + 99, + 170, + 77, + 57, + 142, + 16, + 172, + 97, + 47, + 46, + 118, + 164, + 78, + 95, + 93, + 165, + 9, + 107, + 221, + 186, + 211, + 31, + 150, + 53, + 213, + 156, + 51, + 84, + 9, + 116, + 175, + 198, + 60, + 41, + 85, + 3, + 155, + 177, + 118, + 225, + 85, + 214, + 235, + 195, + 121, + 140, + 49, + 203, + 191, + 158, + 26, + 135, + 20, + 155, + 250, + 92, + 88, + 179, + 151, + 188, + 246, + 243, + 89, + 156, + 69, + 103, + 214, + 22, + 173, + 161, + 193, + 50, + 235, + 12, + 88, + 195, + 237, + 182, + 155, + 33, + 194, + 122, + 141, + 50, + 121, + 191, + 127, + 95, + 112, + 59, + 124, + 24, + 182, + 95, + 170, + 26, + 184, + 49, + 98, + 175, + 248, + 170, + 170, + 78, + 97, + 138, + 72, + 163, + 205, + 218, + 155, + 177, + 41, + 42, + 8, + 23, + 131, + 74, + 167, + 89, + 61, + 190, + 101, + 211, + 60, + 188, + 231, + 135, + 104, + 178, + 115, + 210, + 202, + 19, + 69, + 67, + 57, + 72, + 236, + 140, + 1, + 52, + 205, + 3, + 76, + 39, + 157, + 64, + 65, + 179, + 11, + 10, + 186, + 50, + 97, + 46, + 113, + 52, + 138, + 23, + 239, + 9, + 19, + 89, + 26, + 173, + 237, + 92, + 128, + 54, + 53, + 54, + 111, + 248, + 222, + 114, + 59, + 219, + 206, + 245, + 226, + 198, + 148, + 209, + 33, + 96, + 162, + 28, + 114, + 35, + 222, + 225, + 100, + 165, + 37, + 240, + 41, + 33, + 172, + 106, + 255, + 35, + 160, + 106, + 210, + 105, + 73, + 131, + 19, + 140, + 102, + 188, + 45, + 190, + 202, + 30, + 140, + 120, + 128, + 109, + 55, + 64, + 109, + 132, + 123, + 252, + 252, + 88, + 20, + 90, + 0, + 23, + 112, + 202, + 39, + 168, + 200, + 49, + 102, + 227, + 201, + 244, + 28, + 51, + 195, + 170, + 48, + 144, + 191, + 38, + 165, + 48, + 175, + 165, + 16, + 82, + 144, + 98, + 188, + 79, + 172, + 207, + 78, + 191, + 246, + 70, + 216, + 46, + 170, + 236, + 27, + 136, + 109, + 128, + 46, + 170, + 124, + 118, + 217, + 185, + 116, + 8, + 22, + 140, + 123, + 178, + 189, + 96, + 30, + 159, + 179, + 205, + 4, + 41, + 115, + 182, + 255, + 110, + 164, + 26, + 223, + 76, + 177, + 23, + 133, + 89, + 205, + 255, + 49, + 212, + 30, + 27, + 104, + 151, + 50, + 64, + 107, + 82, + 236, + 37, + 48, + 247, + 110, + 116, + 42, + 112, + 159, + 237, + 53, + 41, + 238, + 65, + 191, + 166, + 64, + 114, + 182, + 19, + 171, + 133, + 198, + 220, + 117, + 182, + 147, + 80, + 28, + 6, + 114, + 44, + 185, + 73, + 179, + 148, + 83, + 235, + 165, + 68, + 182, + 82, + 68, + 53, + 92, + 105, + 227, + 113, + 158, + 125, + 163, + 99, + 11, + 166, + 105, + 232, + 225, + 113, + 9, + 66, + 191, + 86, + 64, + 246, + 170, + 30, + 92, + 50, + 38, + 106, + 216, + 105, + 162, + 109, + 160, + 52, + 67, + 184, + 227, + 203, + 93, + 224, + 248, + 19, + 55, + 232, + 234, + 228, + 70, + 185, + 255, + 182, + 141, + 132, + 27, + 245, + 227, + 33, + 36, + 211, + 11, + 63, + 137, + 27, + 48, + 79, + 237, + 117, + 76, + 50, + 111, + 197, + 125, + 71, + 168, + 198, + 20, + 214, + 150, + 198, + 72, + 19, + 181, + 5, + 219, + 27, + 113, + 79, + 218, + 139, + 81, + 132, + 93, + 160, + 155, + 154, + 47, + 74, + 195, + 219, + 126, + 212, + 97, + 227, + 142, + 172, + 123, + 222, + 90, + 203, + 39, + 172, + 183, + 99, + 4, + 138, + 107, + 92, + 19, + 70, + 88, + 99, + 53, + 54, + 41, + 141, + 21, + 182, + 34, + 237, + 50, + 131, + 166, + 1, + 102, + 209, + 9, + 83, + 103, + 163, + 112, + 197, + 140, + 192, + 175, + 63, + 125, + 251, + 165, + 153, + 193, + 218, + 20, + 26, + 100, + 84, + 191, + 227, + 134, + 61, + 226, + 108, + 213, + 83, + 39, + 192, + 214, + 237, + 210, + 182, + 167, + 37, + 121, + 5, + 241, + 13, + 9, + 77, + 53, + 30, + 221, + 215, + 171, + 120, + 147, + 203, + 147, + 99, + 9, + 44, + 126, + 17, + 14, + 190, + 162, + 21, + 91, + 208, + 7, + 70, + 56, + 221, + 201, + 114, + 219, + 229, + 150, + 183, + 22, + 194, + 17, + 123, + 75, + 80, + 193, + 181, + 0, + 114, + 2, + 217, + 173, + 46, + 209, + 94, + 90, + 184, + 158, + 251, + 140, + 100, + 21, + 91, + 81, + 6, + 64, + 48, + 23, + 105, + 227, + 162, + 23, + 239, + 32, + 136, + 134, + 167, + 149, + 72, + 118, + 159, + 77, + 39, + 9, + 247, + 153, + 61, + 151, + 182, + 138, + 69, + 126, + 137, + 28, + 141, + 58, + 137, + 101, + 96, + 131, + 44, + 206, + 92, + 233, + 205, + 179, + 223, + 19, + 230, + 210, + 184, + 73, + 94, + 197, + 236, + 8, + 150, + 141, + 17, + 222, + 11, + 121, + 166, + 164, + 180, + 117, + 250, + 182, + 242, + 145, + 104, + 117, + 80, + 36, + 21, + 144, + 189, + 101, + 117, + 10, + 14, + 39, + 232, + 36, + 177, + 48, + 23, + 174, + 70, + 221, + 50, + 2, + 83, + 145, + 70, + 71, + 84, + 50, + 131, + 65, + 38, + 97, + 150, + 70, + 206, + 29, + 77, + 117, + 145, + 173, + 231, + 243, + 205, + 204, + 9, + 27, + 61, + 66, + 105, + 13, + 176, + 41, + 161, + 74, + 191, + 218, + 79, + 57, + 166, + 130, + 33, + 48, + 106, + 99, + 204, + 38, + 147, + 59, + 45, + 196, + 91, + 83, + 217, + 13, + 188, + 160, + 83, + 84, + 91, + 141, + 120, + 8, + 203, + 77, + 197, + 18, + 222, + 205, + 62, + 36, + 126, + 191, + 152, + 42, + 118, + 127, + 176, + 92, + 227, + 205, + 92, + 16, + 236, + 61, + 216, + 106, + 232, + 239, + 63, + 197, + 174, + 219, + 193, + 251, + 173, + 74, + 168, + 86, + 29, + 138, + 137, + 115, + 195, + 59, + 113, + 39, + 155, + 48, + 76, + 66, + 100, + 58, + 87, + 45, + 230, + 96, + 65, + 106, + 140, + 148, + 224, + 67, + 121, + 119, + 231, + 212, + 107, + 59, + 15, + 112, + 79, + 177, + 191, + 211, + 151, + 150, + 131, + 0, + 124, + 58, + 30, + 69, + 63, + 40, + 115, + 243, + 171, + 209, + 248, + 254, + 117, + 184, + 249, + 213, + 220, + 135, + 142, + 199, + 199, + 111, + 51, + 123, + 57, + 181, + 107, + 139, + 3, + 56, + 115, + 113, + 99, + 1, + 107, + 183, + 139, + 157, + 134, + 61, + 120, + 249, + 252, + 218, + 23, + 120, + 143, + 222, + 7, + 191, + 202, + 81, + 201, + 165, + 187, + 189, + 229, + 189, + 59, + 187, + 12, + 9, + 13, + 208, + 235, + 30, + 68, + 91, + 44, + 148, + 58, + 228, + 30, + 68, + 79, + 78, + 134, + 99, + 37, + 152, + 193, + 234, + 236, + 83, + 219, + 220, + 30, + 199, + 18, + 7, + 37, + 30, + 171, + 59, + 75, + 111, + 106, + 32, + 2, + 143, + 37, + 223, + 148, + 126, + 148, + 55, + 88, + 143, + 21, + 37, + 249, + 111, + 148, + 110, + 79, + 50, + 65, + 151, + 225, + 60, + 229, + 31, + 137, + 83, + 250, + 133, + 231, + 56, + 1, + 51, + 118, + 23, + 255, + 168, + 183, + 70, + 189, + 199, + 167, + 218, + 248, + 8, + 192, + 219, + 208, + 194, + 205, + 44, + 135, + 26, + 114, + 50, + 188, + 29, + 183, + 207, + 211, + 115, + 224, + 138, + 27, + 223, + 55, + 140, + 98, + 91, + 234, + 150, + 152, + 113, + 180, + 80, + 17, + 206, + 88, + 110, + 137, + 233, + 110, + 88, + 231, + 146, + 173, + 99, + 240, + 193, + 0, + 247, + 106, + 4, + 171, + 8, + 55, + 208, + 196, + 152, + 84, + 94, + 116, + 133, + 38, + 127, + 185, + 100, + 157, + 250, + 49, + 38, + 144, + 45, + 22, + 134, + 237, + 164, + 181, + 122, + 65, + 77, + 245, + 36, + 226, + 224, + 24, + 98, + 80, + 167, + 71, + 104, + 39, + 182, + 98, + 203, + 249, + 17, + 161, + 209, + 78, + 129, + 51, + 90, + 123, + 172, + 37, + 32, + 172, + 141, + 142, + 127, + 180, + 38, + 200, + 30, + 161, + 113, + 195, + 249, + 81, + 148, + 239, + 86, + 189, + 200, + 40, + 179, + 127, + 210, + 108, + 116, + 227, + 96, + 246, + 165, + 19, + 219, + 152, + 218, + 113, + 84, + 95, + 190, + 209, + 223, + 163, + 8, + 122, + 127, + 157, + 205, + 46, + 61, + 69, + 210, + 211, + 240, + 46, + 171, + 54, + 178, + 131, + 38, + 129, + 240, + 8, + 85, + 84, + 162, + 137, + 29, + 104, + 94, + 22, + 22, + 77, + 91, + 154, + 66, + 158, + 132, + 22, + 88, + 167, + 167, + 128, + 48, + 195, + 48, + 14, + 251, + 188, + 15, + 108, + 210, + 187, + 175, + 254, + 80, + 144, + 240, + 189, + 89, + 106, + 137, + 76, + 42, + 110, + 95, + 39, + 132, + 141, + 221, + 20, + 119, + 175, + 195, + 216, + 250, + 227, + 18, + 215, + 39, + 19, + 120, + 165, + 7, + 194, + 37, + 9, + 89, + 198, + 124, + 176, + 34, + 83, + 71, + 96, + 77, + 214, + 94, + 23, + 163, + 173, + 49, + 121, + 165, + 181, + 40, + 83, + 199, + 96, + 117, + 52, + 178, + 162, + 213, + 227, + 36, + 105, + 217, + 59, + 198, + 141, + 167, + 159, + 200, + 3, + 116, + 236, + 70, + 194, + 175, + 211, + 141, + 76, + 41, + 212, + 222, + 222, + 111, + 212, + 143, + 115, + 227, + 2, + 115, + 239, + 74, + 84, + 86, + 243, + 46, + 237, + 242, + 45, + 29, + 179, + 211, + 138, + 122, + 42, + 152, + 236, + 16, + 164, + 250, + 226, + 114, + 114, + 250, + 137, + 75, + 65, + 72, + 27, + 175, + 148, + 234, + 17, + 74, + 235, + 233, + 11, + 76, + 65, + 157, + 142, + 131, + 164, + 192, + 227, + 97, + 197, + 70, + 57, + 162, + 177, + 47, + 53, + 14, + 25, + 130, + 185, + 155, + 87, + 141, + 214, + 228, + 1, + 156, + 98, + 157, + 174, + 216, + 234, + 38, + 242, + 177, + 131, + 83, + 198, + 69, + 124, + 223, + 185, + 236, + 244, + 27, + 12, + 133, + 219, + 169, + 217, + 247, + 76, + 99, + 3, + 154, + 92, + 8, + 198, + 190, + 55, + 117, + 44, + 234, + 122, + 214, + 2, + 219, + 72, + 246, + 77, + 83, + 230, + 178, + 5, + 144, + 167, + 187, + 151, + 221, + 154, + 143, + 113, + 111, + 80, + 22, + 57, + 206, + 94, + 147, + 155, + 139, + 136, + 241, + 62, + 129, + 158, + 8, + 187, + 136, + 52, + 199, + 72, + 76, + 218, + 50, + 108, + 117, + 14, + 17, + 215, + 125, + 160, + 182, + 222, + 96, + 128, + 144, + 99, + 112, + 150, + 48, + 185, + 200, + 61, + 0, + 245, + 250, + 17, + 105, + 96, + 13, + 207, + 116, + 51, + 227, + 109, + 212, + 104, + 243, + 48, + 39, + 140, + 49, + 41, + 108, + 82, + 190, + 114, + 117, + 189, + 253, + 149, + 90, + 213, + 227, + 230, + 66, + 172, + 212, + 25, + 228, + 230, + 238, + 66, + 66, + 18, + 39, + 185, + 29, + 79, + 149, + 115, + 112, + 168, + 217, + 58, + 218, + 163, + 193, + 40, + 142, + 221, + 174, + 39, + 131, + 49, + 223, + 24, + 149, + 39, + 122, + 203, + 154, + 34, + 8, + 61, + 75, + 113, + 54, + 18, + 174, + 220, + 247, + 218, + 205, + 208, + 126, + 127, + 11, + 160, + 232, + 177, + 100, + 3, + 132, + 173, + 81, + 149, + 193, + 3, + 29, + 61, + 11, + 85, + 25, + 231, + 60, + 134, + 247, + 141, + 59, + 223, + 178, + 220, + 171, + 34, + 43, + 87, + 146, + 116, + 186, + 80, + 56, + 63, + 100, + 196, + 90, + 137, + 43, + 4, + 167, + 168, + 82, + 59, + 253, + 6, + 66, + 192, + 99, + 132, + 78, + 149, + 85, + 71, + 105, + 3, + 145, + 48, + 199, + 253, + 129, + 56, + 123, + 165, + 72, + 185, + 56, + 193, + 47, + 41, + 202, + 106, + 62, + 211, + 94, + 113, + 33, + 55, + 218, + 112, + 201, + 102, + 144, + 169, + 161, + 11, + 251, + 113, + 255, + 54, + 133, + 69, + 222, + 119, + 65, + 62, + 134, + 34, + 22, + 48, + 175, + 78, + 247, + 21, + 113, + 27, + 176, + 216, + 37, + 103, + 39, + 50, + 165, + 54, + 103, + 164, + 116, + 101, + 165, + 163, + 127, + 8, + 217, + 21, + 71, + 217, + 157, + 146, + 104, + 53, + 26, + 83, + 233, + 154, + 48, + 54, + 134, + 106, + 147, + 212, + 158, + 255, + 35, + 112, + 227, + 53, + 99, + 237, + 213, + 148, + 116, + 213, + 156, + 202, + 110, + 236, + 28, + 233, + 70, + 49, + 94, + 64, + 106, + 248, + 71, + 202, + 52, + 213, + 5, + 107, + 111, + 167, + 54, + 230, + 44, + 136, + 51, + 92, + 7, + 182, + 55, + 9, + 71, + 48, + 108, + 47, + 114, + 25, + 190, + 121, + 183, + 110, + 241, + 74, + 232, + 140, + 217, + 177, + 25, + 60, + 77, + 236, + 40, + 218, + 156, + 232, + 255, + 187, + 12, + 183, + 186, + 12, + 191, + 147, + 147, + 211, + 215, + 109, + 199, + 242, + 196, + 146, + 198, + 72, + 211, + 41, + 238, + 162, + 185, + 194, + 72, + 211, + 115, + 15, + 150, + 230, + 85, + 180, + 134, + 167, + 115, + 241, + 238, + 187, + 46, + 108, + 132, + 57, + 148, + 195, + 94, + 200, + 59, + 4, + 32, + 173, + 229, + 104, + 31, + 243, + 60, + 6, + 12, + 148, + 88, + 166, + 240, + 1, + 47, + 154, + 105, + 18, + 222, + 202, + 95, + 164, + 124, + 112, + 30, + 136, + 160, + 141, + 70, + 145, + 128, + 243, + 64, + 100, + 206, + 247, + 210, + 205, + 142, + 57, + 99, + 3, + 140, + 221, + 213, + 182, + 239, + 75, + 78, + 207, + 121, + 197, + 112, + 105, + 53, + 10, + 255, + 210, + 53, + 87, + 100, + 45, + 32, + 131, + 172, + 70, + 154, + 41, + 227, + 0, + 53, + 13, + 213, + 60, + 15, + 190, + 157, + 15, + 27, + 109, + 173, + 205, + 194, + 60, + 192, + 43, + 186, + 70, + 159, + 25, + 65, + 192, + 25, + 135, + 245, + 54, + 211, + 219, + 60, + 96, + 64, + 102, + 103, + 120, + 4, + 27, + 130, + 26, + 133, + 233, + 114, + 151, + 156, + 244, + 243, + 242, + 232, + 227, + 1, + 46, + 60, + 253, + 147, + 86, + 227, + 230, + 206, + 115, + 130, + 72, + 108, + 158, + 252, + 123, + 237, + 106, + 10, + 185, + 185, + 131, + 74, + 35, + 44, + 64, + 78, + 59, + 26, + 188, + 159, + 149, + 196, + 65, + 87, + 51, + 195, + 189, + 142, + 129, + 27, + 5, + 25, + 113, + 85, + 94, + 133, + 130, + 22, + 168, + 36, + 173, + 218, + 230, + 96, + 131, + 155, + 35, + 207, + 166, + 70, + 15, + 110, + 111, + 154, + 173, + 33, + 33, + 246, + 115, + 197, + 211, + 180, + 5, + 126, + 154, + 110, + 194, + 212, + 24, + 78, + 125, + 243, + 0, + 90, + 59, + 14, + 53, + 248, + 57, + 153, + 103, + 169, + 2, + 164, + 217, + 160, + 72, + 93, + 238, + 63, + 227, + 157, + 175, + 106, + 254, + 179, + 96, + 105, + 124, + 145, + 122, + 136, + 220, + 190, + 182, + 101, + 54, + 219, + 255, + 24, + 76, + 137, + 125, + 149, + 171, + 176, + 218, + 134, + 152, + 156, + 87, + 244, + 171, + 61, + 110, + 79, + 123, + 112, + 2, + 119, + 70, + 189, + 141, + 9, + 134, + 241, + 70, + 251, + 33, + 15, + 222, + 14, + 131, + 159, + 1, + 72, + 189, + 174, + 203, + 8, + 184, + 166, + 103, + 28, + 21, + 187, + 70, + 105, + 70, + 227, + 91, + 146, + 100, + 46, + 162, + 61, + 230, + 180, + 12, + 207, + 18, + 106, + 236, + 158, + 185, + 149, + 179, + 45, + 14, + 137, + 83, + 105, + 152, + 122, + 134, + 209, + 30, + 50, + 9, + 170, + 134, + 204, + 174, + 203, + 15, + 237, + 178, + 251, + 162, + 182, + 86, + 2, + 130, + 217, + 79, + 201, + 35, + 158, + 178, + 43, + 242, + 203, + 101, + 234, + 247, + 80, + 234, + 183, + 234, + 116, + 131, + 74, + 118, + 81, + 253, + 17, + 139, + 69, + 153, + 128, + 110, + 1, + 113, + 39, + 48, + 27, + 119, + 193, + 108, + 213, + 16, + 171, + 227, + 202, + 203, + 251, + 67, + 212, + 121, + 195, + 86, + 80, + 29, + 177, + 119, + 108, + 165, + 235, + 92, + 163, + 110, + 33, + 24, + 238, + 209, + 152, + 17, + 110, + 10, + 150, + 5, + 191, + 164, + 194, + 172, + 210, + 53, + 108, + 120, + 80, + 244, + 158, + 33, + 38, + 80, + 180, + 147, + 54, + 103, + 225, + 133, + 31, + 88, + 121, + 35, + 201, + 130, + 46, + 178, + 93, + 16, + 129, + 246, + 144, + 112, + 100, + 171, + 138, + 45, + 189, + 41, + 70, + 67, + 170, + 213, + 59, + 6, + 52, + 79, + 146, + 177, + 163, + 95, + 41, + 26, + 202, + 184, + 4, + 96, + 83, + 35, + 77, + 245, + 150, + 96, + 79, + 132, + 113, + 222, + 82, + 106, + 200, + 85, + 123, + 99, + 182, + 0, + 165, + 53, + 14, + 153, + 6, + 3, + 97, + 76, + 79, + 122, + 213, + 78, + 232, + 28, + 32, + 93, + 216, + 88, + 101, + 223, + 28, + 101, + 140, + 195, + 131, + 58, + 71, + 193, + 79, + 151, + 93, + 49, + 68, + 234, + 165, + 57, + 102, + 41, + 67, + 32, + 29, + 133, + 116, + 75, + 109, + 46, + 228, + 89, + 157, + 19, + 67, + 161, + 181, + 110, + 21, + 80, + 35, + 152, + 40, + 177, + 176, + 248, + 52, + 166, + 254, + 66, + 178, + 65, + 110, + 68, + 122, + 169, + 161, + 94, + 67, + 10, + 80, + 96, + 169, + 113, + 163, + 197, + 49, + 78, + 216, + 52, + 67, + 75, + 184, + 103, + 60, + 251, + 235, + 44, + 129, + 94, + 88, + 238, + 165, + 217, + 94, + 199, + 131, + 144, + 14, + 78, + 194, + 35, + 41, + 154, + 3, + 78, + 2, + 215, + 54, + 53, + 194, + 120, + 211, + 192, + 36, + 110, + 178, + 164, + 84, + 213, + 180, + 103, + 159, + 198, + 254, + 212, + 210, + 229, + 189, + 79, + 177, + 71, + 227, + 188, + 87, + 191, + 85, + 140, + 117, + 54, + 239, + 123, + 13, + 54, + 92, + 169, + 181, + 181, + 83, + 90, + 231, + 88, + 19, + 82, + 44, + 173, + 203, + 150, + 224, + 49, + 246, + 126, + 236, + 125, + 148, + 57, + 82, + 31, + 239, + 165, + 189, + 23, + 96, + 243, + 212, + 20, + 139, + 185, + 199, + 85, + 100, + 103, + 130, + 49, + 135, + 222, + 54, + 15, + 43, + 232, + 158, + 247, + 116, + 191, + 130, + 220, + 6, + 239, + 131, + 157, + 27, + 227, + 13, + 134, + 51, + 188, + 209, + 21, + 159, + 74, + 4, + 108, + 134, + 133, + 106, + 106, + 181, + 116, + 97, + 107, + 124, + 200, + 14, + 43, + 138, + 156, + 6, + 208, + 146, + 198, + 115, + 192, + 38, + 2, + 155, + 197, + 25, + 143, + 239, + 159, + 109, + 5, + 40, + 105, + 122, + 66, + 243, + 183, + 228, + 161, + 229, + 132, + 152, + 99, + 115, + 157, + 180, + 245, + 93, + 60, + 189, + 6, + 140, + 57, + 206, + 195, + 189, + 212, + 220, + 168, + 145, + 215, + 81, + 206, + 59, + 73, + 19, + 54, + 244, + 200, + 88, + 31, + 243, + 66, + 108, + 114, + 179, + 109, + 135, + 40, + 48, + 78, + 223, + 19, + 219, + 78, + 253, + 5, + 60, + 183, + 134, + 96, + 126, + 163, + 33, + 78, + 13, + 144, + 49, + 160, + 97, + 187, + 209, + 92, + 63, + 103, + 104, + 53, + 59, + 39, + 185, + 53, + 241, + 192, + 221, + 200, + 40, + 119, + 107, + 98, + 225, + 29, + 58, + 215, + 126, + 43, + 3, + 14, + 190, + 128, + 26, + 23, + 209, + 39, + 63, + 166, + 100, + 106, + 35, + 254, + 73, + 34, + 48, + 112, + 107, + 8, + 128, + 190, + 195, + 26, + 204, + 196, + 134, + 53, + 133, + 148, + 13, + 80, + 79, + 190, + 110, + 164, + 42, + 13, + 4, + 93, + 20, + 219, + 58, + 63, + 243, + 141, + 105, + 243, + 11, + 154, + 230, + 121, + 92, + 173, + 210, + 47, + 244, + 60, + 174, + 80, + 65, + 210, + 14, + 54, + 160, + 203, + 144, + 56, + 180, + 8, + 172, + 18, + 167, + 20, + 116, + 232, + 60, + 115, + 104, + 110, + 14, + 143, + 103, + 133, + 37, + 141, + 118, + 97, + 204, + 11, + 54, + 37, + 28, + 157, + 115, + 52, + 48, + 61, + 37, + 70, + 25, + 222, + 161, + 206, + 240, + 17, + 54, + 131, + 185, + 49, + 20, + 188, + 156, + 251, + 16, + 157, + 155, + 197, + 166, + 4, + 132, + 212, + 35, + 32, + 99, + 127, + 101, + 37, + 86, + 221, + 206, + 120, + 179, + 143, + 69, + 31, + 237, + 137, + 96, + 239, + 17, + 94, + 50, + 190, + 94, + 170, + 188, + 28, + 247, + 19, + 243, + 131, + 12, + 33, + 17, + 152, + 100, + 161, + 97, + 87, + 149, + 223, + 228, + 134, + 174, + 115, + 114, + 177, + 2, + 186, + 102, + 186, + 155, + 2, + 38, + 197, + 132, + 247, + 229, + 174, + 244, + 220, + 72, + 41, + 90, + 236, + 166, + 244, + 225, + 250, + 123, + 50, + 10, + 199, + 228, + 37, + 223, + 134, + 102, + 163, + 149, + 160, + 34, + 195, + 94, + 113, + 96, + 86, + 74, + 187, + 203, + 249, + 65, + 189, + 208, + 150, + 19, + 203, + 105, + 55, + 194, + 16, + 142, + 43, + 141, + 77, + 33, + 12, + 241, + 42, + 104, + 203, + 8, + 112, + 88, + 35, + 171, + 92, + 205, + 128, + 100, + 134, + 253, + 130, + 84, + 112, + 154, + 10, + 131, + 51, + 26, + 73, + 113, + 53, + 23, + 24, + 64, + 115, + 106, + 24, + 239, + 80, + 69, + 158, + 20, + 150, + 142, + 48, + 237, + 242, + 56, + 152, + 189, + 232, + 0, + 180, + 129, + 119, + 188, + 196, + 234, + 184, + 147, + 196, + 64, + 214, + 37, + 17, + 225, + 3, + 27, + 42, + 235, + 131, + 101, + 213, + 206, + 251, + 126, + 88, + 199, + 176, + 210, + 4, + 25, + 20, + 218, + 134, + 21, + 199, + 198, + 235, + 75, + 137, + 99, + 76, + 106, + 7, + 134, + 173, + 237, + 93, + 246, + 240, + 144, + 235, + 243, + 220, + 201, + 252, + 10, + 242, + 203, + 211, + 57, + 212, + 240, + 190, + 40, + 250, + 160, + 226, + 173, + 1, + 123, + 10, + 246, + 37, + 190, + 236, + 140, + 245, + 52, + 125, + 253, + 152, + 30, + 197, + 214, + 147, + 118, + 121, + 247, + 252, + 37, + 27, + 230, + 34, + 78, + 112, + 92, + 121, + 192, + 194, + 217, + 25, + 96, + 206, + 3, + 214, + 220, + 18, + 83, + 74, + 223, + 239, + 6, + 31, + 31, + 224, + 32, + 230, + 185, + 75, + 141, + 116, + 88, + 80, + 65, + 11, + 35, + 187, + 121, + 103, + 81, + 213, + 199, + 126, + 215, + 5, + 212, + 72, + 143, + 127, + 48, + 219, + 173, + 159, + 139, + 112, + 131, + 127, + 142, + 178, + 198, + 6, + 182, + 57, + 25, + 235, + 73, + 172, + 121, + 91, + 222, + 185, + 55, + 89, + 182, + 81, + 163, + 67, + 7, + 201, + 103, + 127, + 38, + 249, + 61, + 134, + 72, + 13, + 5, + 51, + 25, + 161, + 33, + 108, + 21, + 38, + 91, + 48, + 56, + 156, + 49, + 175, + 210, + 82, + 110, + 246, + 238, + 81, + 35, + 165, + 133, + 182, + 27, + 242, + 36, + 189, + 183, + 110, + 187, + 181, + 227, + 45, + 123, + 2, + 187, + 112, + 166, + 81, + 206, + 71, + 190, + 147, + 134, + 97, + 3, + 47, + 163, + 229, + 58, + 202, + 36, + 220, + 184, + 12, + 29, + 101, + 90, + 168, + 161, + 61, + 199, + 195, + 65, + 228, + 217, + 213, + 103, + 124, + 255, + 135, + 219, + 124, + 238, + 193, + 152, + 120, + 232, + 212, + 0, + 110, + 65, + 15, + 112, + 216, + 157, + 2, + 44, + 114, + 42, + 52, + 185, + 219, + 97, + 67, + 4, + 125, + 138, + 169, + 189, + 31, + 79, + 118, + 220, + 135, + 155, + 176, + 212, + 77, + 169, + 219, + 70, + 193, + 8, + 54, + 105, + 28, + 127, + 253, + 18, + 89, + 207, + 141, + 255, + 163, + 113, + 202, + 80, + 149, + 81, + 180, + 97, + 208, + 8, + 183, + 175, + 75, + 0, + 89, + 74, + 159, + 122, + 128, + 99, + 106, + 234, + 4, + 28, + 96, + 40, + 225, + 29, + 235, + 3, + 140, + 162, + 105, + 225, + 134, + 152, + 34, + 20, + 231, + 217, + 92, + 105, + 76, + 83, + 13, + 125, + 82, + 130, + 181, + 27, + 219, + 58, + 170, + 6, + 123, + 98, + 216, + 99, + 205, + 213, + 203, + 181, + 100, + 233, + 166, + 45, + 77, + 23, + 193, + 98, + 109, + 148, + 213, + 235, + 242, + 184, + 238, + 17, + 135, + 100, + 166, + 42, + 203, + 108, + 135, + 186, + 98, + 218, + 125, + 73, + 5, + 93, + 68, + 47, + 120, + 186, + 205, + 125, + 99, + 159, + 201, + 132, + 96, + 77, + 139, + 205, + 227, + 90, + 113, + 72, + 207, + 6, + 163, + 25, + 146, + 243, + 171, + 162, + 53, + 191, + 227, + 97, + 108, + 237, + 124, + 140, + 36, + 63, + 19, + 214, + 126, + 254, + 129, + 75, + 161, + 158, + 205, + 252, + 34, + 104, + 183, + 248, + 214, + 23, + 109, + 196, + 165, + 220, + 206, + 62, + 70, + 145, + 114, + 60, + 189, + 246, + 221, + 183, + 192, + 220, + 113, + 255, + 184, + 141, + 65, + 85, + 40, + 12, + 159, + 221, + 84, + 207, + 113, + 12, + 28, + 98, + 199, + 76, + 41, + 67, + 55, + 145, + 119, + 188, + 252, + 4, + 79, + 178, + 46, + 60, + 105, + 103, + 202, + 151, + 227, + 176, + 233, + 98, + 61, + 189, + 96, + 138, + 73, + 35, + 61, + 250, + 61, + 136, + 170, + 153, + 60, + 244, + 90, + 199, + 234, + 252, + 93, + 245, + 133, + 84, + 101, + 36, + 155, + 26, + 198, + 58, + 55, + 32, + 137, + 53, + 74, + 234, + 151, + 128, + 103, + 136, + 30, + 189, + 219, + 90, + 239, + 103, + 111, + 95, + 150, + 173, + 126, + 75, + 55, + 30, + 243, + 30, + 33, + 23, + 229, + 101, + 34, + 46, + 190, + 145, + 34, + 87, + 99, + 69, + 68, + 60, + 97, + 163, + 173, + 248, + 66, + 157, + 77, + 218, + 124, + 95, + 62, + 101, + 149, + 87, + 131, + 213, + 8, + 140, + 116, + 134, + 201, + 223, + 85, + 67, + 45, + 3, + 91, + 99, + 196, + 84, + 169, + 172, + 165, + 114, + 46, + 116, + 59, + 238, + 156, + 212, + 184, + 191, + 180, + 21, + 134, + 167, + 18, + 54, + 194, + 100, + 11, + 230, + 136, + 169, + 65, + 185, + 114, + 37, + 53, + 233, + 172, + 209, + 147, + 200, + 0, + 117, + 237, + 70, + 56, + 140, + 54, + 16, + 227, + 30, + 61, + 203, + 186, + 151, + 136, + 204, + 234, + 124, + 157, + 233, + 226, + 254, + 54, + 249, + 186, + 11, + 2, + 99, + 168, + 51, + 157, + 177, + 25, + 6, + 250, + 204, + 62, + 251, + 109, + 165, + 89, + 27, + 133, + 91, + 246, + 79, + 172, + 23, + 40, + 142, + 194, + 45, + 251, + 39, + 230, + 190, + 92, + 107, + 146, + 102, + 68, + 178, + 199, + 130, + 251, + 148, + 73, + 86, + 204, + 145, + 99, + 95, + 20, + 187, + 177, + 141, + 35, + 236, + 139, + 34, + 246, + 14, + 186, + 150, + 167, + 144, + 101, + 100, + 119, + 184, + 172, + 187, + 57, + 149, + 72, + 163, + 62, + 251, + 102, + 78, + 133, + 54, + 194, + 30, + 78, + 118, + 167, + 74, + 25, + 102, + 25, + 92, + 248, + 99, + 53, + 198, + 13, + 25, + 27, + 183, + 113, + 69, + 2, + 220, + 113, + 138, + 246, + 59, + 128, + 248, + 21, + 80, + 233, + 27, + 206, + 113, + 85, + 151, + 164, + 80, + 39, + 127, + 75, + 21, + 120, + 198, + 17, + 233, + 114, + 205, + 7, + 245, + 254, + 237, + 254, + 156, + 156, + 234, + 246, + 190, + 185, + 222, + 49, + 228, + 181, + 128, + 135, + 52, + 158, + 127, + 234, + 22, + 250, + 98, + 97, + 118, + 68, + 170, + 41, + 76, + 39, + 195, + 37, + 177, + 97, + 64, + 37, + 58, + 6, + 203, + 12, + 220, + 214, + 165, + 145, + 6, + 197, + 27, + 22, + 197, + 241, + 194, + 189, + 166, + 143, + 158, + 131, + 38, + 123, + 53, + 246, + 100, + 61, + 8, + 77, + 103, + 28, + 228, + 85, + 164, + 41, + 25, + 195, + 96, + 106, + 196, + 106, + 205, + 220, + 200, + 88, + 66, + 145, + 209, + 119, + 214, + 55, + 46, + 167, + 4, + 197, + 70, + 186, + 125, + 148, + 172, + 198, + 36, + 234, + 43, + 38, + 11, + 151, + 212, + 134, + 85, + 28, + 31, + 214, + 178, + 219, + 78, + 124, + 68, + 189, + 50, + 153, + 110, + 64, + 162, + 243, + 8, + 42, + 27, + 93, + 80, + 217, + 236, + 19, + 105, + 190, + 239, + 120, + 157, + 122, + 60, + 53, + 82, + 223, + 150, + 79, + 163, + 70, + 56, + 25, + 198, + 64, + 119, + 220, + 191, + 78, + 226, + 74, + 43, + 160, + 243, + 160, + 181, + 188, + 132, + 158, + 199, + 51, + 58, + 115, + 101, + 47, + 162, + 12, + 228, + 244, + 54, + 236, + 172, + 191, + 136, + 111, + 110, + 4, + 35, + 236, + 5, + 230, + 245, + 230, + 177, + 243, + 117, + 175, + 37, + 31, + 121, + 35, + 158, + 57, + 22, + 241, + 84, + 225, + 22, + 111, + 137, + 202, + 14, + 47, + 30, + 95, + 80, + 131, + 2, + 130, + 179, + 135, + 237, + 70, + 1, + 154, + 171, + 2, + 209, + 249, + 240, + 251, + 219, + 238, + 41, + 221, + 19, + 215, + 141, + 105, + 71, + 124, + 157, + 169, + 130, + 63, + 230, + 84, + 232, + 208, + 4, + 252, + 101, + 74, + 60, + 114, + 142, + 207, + 108, + 172, + 115, + 29, + 252, + 89, + 115, + 135, + 222, + 6, + 205, + 182, + 119, + 55, + 34, + 23, + 206, + 78, + 71, + 42, + 79, + 27, + 155, + 59, + 172, + 90, + 101, + 100, + 33, + 47, + 233, + 190, + 125, + 126, + 67, + 105, + 221, + 98, + 220, + 11, + 125, + 200, + 138, + 155, + 249, + 101, + 47, + 244, + 73, + 24, + 118, + 99, + 30, + 61, + 6, + 214, + 37, + 204, + 166, + 22, + 236, + 142, + 94, + 191, + 199, + 105, + 27, + 117, + 149, + 95, + 166, + 191, + 206, + 8, + 48, + 89, + 172, + 87, + 158, + 98, + 159, + 208, + 131, + 154, + 121, + 49, + 162, + 6, + 99, + 106, + 35, + 186, + 33, + 186, + 97, + 234, + 136, + 209, + 141, + 23, + 17, + 188, + 4, + 100, + 142, + 78, + 52, + 110, + 78, + 80, + 93, + 33, + 26, + 247, + 32, + 41, + 120, + 40, + 78, + 95, + 99, + 222, + 175, + 120, + 243, + 114, + 105, + 164, + 173, + 184, + 111, + 185, + 240, + 140, + 47, + 72, + 114, + 106, + 163, + 148, + 165, + 202, + 213, + 74, + 31, + 158, + 64, + 218, + 104, + 148, + 161, + 190, + 133, + 147, + 198, + 209, + 26, + 167, + 102, + 122, + 41, + 53, + 181, + 8, + 53, + 141, + 233, + 81, + 228, + 218, + 183, + 115, + 233, + 36, + 32, + 54, + 13, + 197, + 34, + 135, + 118, + 110, + 69, + 21, + 232, + 70, + 24, + 75, + 26, + 153, + 74, + 186, + 21, + 166, + 133, + 116, + 133, + 7, + 51, + 12, + 239, + 123, + 135, + 13, + 131, + 111, + 24, + 177, + 234, + 148, + 50, + 145, + 56, + 216, + 170, + 78, + 41, + 83, + 194, + 184, + 7, + 126, + 197, + 210, + 36, + 203, + 46, + 124, + 120, + 229, + 159, + 155, + 206, + 226, + 119, + 61, + 116, + 43, + 244, + 143, + 209, + 60, + 204, + 60, + 181, + 0, + 59, + 177, + 66, + 15, + 128, + 167, + 48, + 93, + 36, + 93, + 156, + 53, + 5, + 171, + 171, + 213, + 200, + 26, + 155, + 220, + 17, + 249, + 170, + 202, + 93, + 8, + 238, + 144, + 41, + 108, + 94, + 4, + 253, + 209, + 221, + 187, + 206, + 73, + 89, + 30, + 100, + 53, + 229, + 8, + 103, + 154, + 93, + 230, + 85, + 197, + 252, + 249, + 227, + 54, + 46, + 76, + 73, + 120, + 236, + 213, + 150, + 168, + 211, + 79, + 227, + 163, + 232, + 74, + 15, + 236, + 98, + 1, + 252, + 227, + 215, + 186, + 4, + 89, + 245, + 163, + 81, + 128, + 3, + 120, + 225, + 12, + 123, + 56, + 197, + 48, + 64, + 4, + 49, + 158, + 97, + 69, + 200, + 217, + 83, + 61, + 251, + 193, + 41, + 121, + 73, + 97, + 225, + 192, + 70, + 111, + 141, + 189, + 96, + 205, + 21, + 135, + 215, + 22, + 17, + 33, + 247, + 122, + 48, + 247, + 27, + 111, + 100, + 88, + 221, + 74, + 37, + 68, + 57, + 139, + 73, + 187, + 226, + 8, + 19, + 241, + 25, + 142, + 133, + 126, + 27, + 6, + 106, + 156, + 67, + 95, + 181, + 53, + 23, + 55, + 232, + 219, + 33, + 5, + 241, + 85, + 142, + 63, + 110, + 78, + 174, + 196, + 210, + 104, + 249, + 227, + 73, + 130, + 186, + 148, + 119, + 136, + 154, + 217, + 183, + 183, + 75, + 44, + 146, + 139, + 220, + 254, + 150, + 98, + 2, + 88, + 21, + 95, + 114, + 83, + 177, + 21, + 250, + 211, + 53, + 219, + 214, + 51, + 51, + 76, + 106, + 77, + 186, + 224, + 1, + 51, + 113, + 190, + 250, + 238, + 65, + 161, + 60, + 188, + 67, + 25, + 207, + 176, + 170, + 148, + 221, + 59, + 148, + 26, + 182, + 214, + 175, + 32, + 7, + 248, + 113, + 102, + 11, + 111, + 4, + 225, + 206, + 20, + 36, + 222, + 10, + 178, + 227, + 20, + 164, + 44, + 253, + 231, + 216, + 207, + 229, + 84, + 63, + 84, + 52, + 51, + 21, + 183, + 166, + 161, + 80, + 183, + 90, + 117, + 156, + 218, + 192, + 40, + 177, + 95, + 214, + 253, + 61, + 142, + 239, + 53, + 163, + 189, + 96, + 209, + 16, + 216, + 162, + 141, + 5, + 169, + 140, + 5, + 136, + 35, + 188, + 18, + 93, + 186, + 199, + 93, + 210, + 205, + 253, + 88, + 245, + 135, + 98, + 38, + 105, + 68, + 20, + 110, + 50, + 89, + 145, + 78, + 242, + 202, + 49, + 38, + 52, + 92, + 255, + 223, + 40, + 101, + 118, + 99, + 169, + 41, + 113, + 83, + 226, + 88, + 169, + 123, + 140, + 171, + 20, + 177, + 162, + 13, + 232, + 102, + 189, + 141, + 88, + 145, + 0, + 161, + 133, + 159, + 248, + 232, + 50, + 74, + 23, + 136, + 152, + 207, + 154, + 27, + 167, + 117, + 57, + 26, + 140, + 213, + 105, + 146, + 104, + 184, + 97, + 14, + 12, + 73, + 65, + 215, + 188, + 16, + 31, + 72, + 85, + 199, + 242, + 236, + 222, + 0, + 55, + 117, + 103, + 180, + 70, + 143, + 35, + 39, + 56, + 77, + 247, + 90, + 59, + 67, + 217, + 146, + 37, + 81, + 43, + 53, + 109, + 44, + 23, + 241, + 53, + 230, + 231, + 216, + 100, + 87, + 241, + 197, + 224, + 239, + 75, + 90, + 21, + 230, + 169, + 139, + 73, + 43, + 169, + 141, + 250, + 212, + 14, + 30, + 28, + 119, + 132, + 28, + 98, + 31, + 206, + 142, + 59, + 227, + 43, + 109, + 131, + 49, + 204, + 206, + 112, + 164, + 213, + 21, + 144, + 151, + 75, + 34, + 171, + 218, + 131, + 183, + 149, + 70, + 241, + 34, + 246, + 82, + 221, + 220, + 69, + 42, + 238, + 21, + 190, + 85, + 238, + 229, + 178, + 170, + 106, + 182, + 205, + 35, + 92, + 191, + 69, + 125, + 220, + 4, + 223, + 174, + 67, + 186, + 81, + 141, + 18, + 179, + 9, + 88, + 134, + 53, + 58, + 15, + 108, + 3, + 193, + 149, + 112, + 229, + 143, + 169, + 137, + 85, + 78, + 216, + 49, + 118, + 131, + 32, + 158, + 218, + 216, + 233, + 131, + 174, + 160, + 180, + 226, + 219, + 108, + 97, + 141, + 54, + 27, + 63, + 13, + 160, + 189, + 99, + 237, + 127, + 241, + 121, + 61, + 180, + 99, + 82, + 216, + 214, + 78, + 137, + 80, + 57, + 119, + 228, + 130, + 11, + 195, + 227, + 248, + 164, + 2, + 188, + 115, + 133, + 248, + 241, + 62, + 153, + 63, + 198, + 172, + 129, + 247, + 3, + 208, + 58, + 75, + 6, + 54, + 4, + 226, + 29, + 226, + 187, + 89, + 21, + 158, + 11, + 88, + 178, + 194, + 41, + 33, + 145, + 52, + 95, + 174, + 121, + 13, + 207, + 158, + 15, + 55, + 152, + 42, + 8, + 130, + 158, + 61, + 31, + 103, + 58, + 100, + 235, + 238, + 146, + 153, + 196, + 91, + 70, + 193, + 219, + 63, + 63, + 52, + 193, + 173, + 218, + 113, + 59, + 136, + 43, + 141, + 102, + 206, + 34, + 142, + 225, + 154, + 86, + 189, + 110, + 31, + 75, + 235, + 26, + 59, + 104, + 32, + 108, + 89, + 141, + 154, + 31, + 25, + 158, + 220, + 133, + 97, + 30, + 208, + 49, + 183, + 164, + 72, + 121, + 90, + 6, + 178, + 180, + 81, + 153, + 46, + 107, + 131, + 90, + 226, + 255, + 84, + 52, + 162, + 190, + 204, + 32, + 43, + 198, + 189, + 211, + 132, + 61, + 66, + 247, + 162, + 34, + 92, + 192, + 12, + 40, + 59, + 196, + 170, + 47, + 169, + 149, + 46, + 197, + 159, + 167, + 108, + 185, + 82, + 187, + 65, + 61, + 9, + 121, + 122, + 19, + 180, + 109, + 20, + 198, + 0, + 84, + 61, + 34, + 216, + 212, + 152, + 9, + 234, + 150, + 54, + 58, + 26, + 125, + 8, + 212, + 61, + 109, + 104, + 197, + 206, + 108, + 114, + 133, + 222, + 245, + 176, + 75, + 103, + 59, + 84, + 186, + 30, + 90, + 177, + 106, + 99, + 6, + 158, + 94, + 104, + 246, + 233, + 211, + 6, + 136, + 74, + 216, + 239, + 120, + 232, + 141, + 62, + 64, + 32, + 233, + 75, + 175, + 41, + 165, + 116, + 251, + 170, + 165, + 70, + 229, + 137, + 169, + 47, + 219, + 144, + 244, + 91, + 84, + 174, + 121, + 212, + 242, + 198, + 48, + 148, + 184, + 202, + 246, + 25, + 192, + 131, + 185, + 3, + 80, + 207, + 111, + 21, + 169, + 169, + 85, + 98, + 181, + 94, + 228, + 75, + 32, + 1, + 111, + 254, + 22, + 246, + 227, + 119, + 121, + 120, + 87, + 220, + 222, + 27, + 178, + 146, + 54, + 152, + 17, + 227, + 58, + 100, + 7, + 13, + 231, + 206, + 152, + 235, + 167, + 78, + 112, + 157, + 221, + 133, + 235, + 240, + 113, + 129, + 147, + 14, + 91, + 13, + 189, + 97, + 103, + 49, + 104, + 227, + 2, + 185, + 75, + 25, + 60, + 80, + 52, + 29, + 147, + 203, + 158, + 89, + 206, + 156, + 46, + 5, + 3, + 90, + 83, + 220, + 65, + 190, + 49, + 245, + 206, + 182, + 140, + 176, + 204, + 200, + 214, + 196, + 185, + 175, + 204, + 121, + 214, + 92, + 10, + 180, + 214, + 248, + 34, + 228, + 236, + 173, + 65, + 141, + 173, + 247, + 155, + 173, + 145, + 46, + 10, + 153, + 170, + 121, + 185, + 222, + 27, + 131, + 72, + 186, + 64, + 144, + 98, + 2, + 64, + 85, + 227, + 198, + 32, + 89, + 254, + 104, + 174, + 30, + 107, + 76, + 105, + 40, + 121, + 78, + 211, + 82, + 32, + 197, + 78, + 176, + 204, + 109, + 11, + 200, + 251, + 149, + 255, + 153, + 182, + 8, + 166, + 1, + 147, + 165, + 49, + 80, + 132, + 25, + 97, + 110, + 139, + 149, + 28, + 169, + 215, + 86, + 182, + 21, + 228, + 232, + 105, + 106, + 167, + 159, + 206, + 185, + 209, + 170, + 229, + 178, + 13, + 184, + 60, + 54, + 161, + 143, + 156, + 35, + 64, + 22, + 103, + 249, + 240, + 204, + 76, + 75, + 82, + 254, + 66, + 238, + 83, + 81, + 35, + 142, + 109, + 79, + 158, + 89, + 179, + 241, + 76, + 69, + 2, + 189, + 112, + 164, + 94, + 226, + 53, + 60, + 113, + 104, + 57, + 190, + 64, + 24, + 172, + 53, + 58, + 173, + 201, + 121, + 195, + 182, + 181, + 90, + 84, + 48, + 233, + 155, + 237, + 198, + 166, + 54, + 172, + 77, + 141, + 198, + 214, + 174, + 27, + 219, + 67, + 98, + 31, + 190, + 227, + 196, + 172, + 116, + 230, + 23, + 85, + 94, + 195, + 125, + 200, + 58, + 117, + 51, + 132, + 238, + 67, + 118, + 150, + 158, + 86, + 77, + 142, + 97, + 88, + 163, + 211, + 194, + 214, + 57, + 63, + 206, + 218, + 210, + 70, + 170, + 224, + 155, + 119, + 91, + 148, + 76, + 184, + 57, + 22, + 141, + 198, + 235, + 189, + 14, + 134, + 185, + 86, + 88, + 255, + 178, + 38, + 50, + 227, + 162, + 181, + 200, + 28, + 48, + 196, + 194, + 141, + 160, + 138, + 42, + 33, + 204, + 204, + 218, + 226, + 148, + 245, + 86, + 36, + 142, + 184, + 223, + 214, + 106, + 197, + 130, + 208, + 128, + 44, + 198, + 130, + 46, + 61, + 212, + 125, + 100, + 91, + 49, + 134, + 206, + 192, + 184, + 209, + 246, + 215, + 237, + 151, + 6, + 98, + 8, + 45, + 29, + 199, + 208, + 165, + 248, + 237, + 177, + 15, + 248, + 151, + 197, + 60, + 128, + 101, + 15, + 254, + 168, + 90, + 197, + 198, + 132, + 129, + 157, + 39, + 167, + 77, + 130, + 49, + 19, + 126, + 249, + 133, + 153, + 208, + 128, + 116, + 110, + 118, + 149, + 104, + 163, + 73, + 112, + 64, + 33, + 74, + 211, + 184, + 114, + 52, + 165, + 120, + 225, + 135, + 189, + 84, + 230, + 41, + 85, + 104, + 152, + 192, + 50, + 180, + 125, + 2, + 41, + 49, + 118, + 65, + 74, + 197, + 220, + 165, + 182, + 81, + 91, + 224, + 27, + 101, + 227, + 174, + 45, + 12, + 182, + 120, + 135, + 221, + 133, + 66, + 17, + 156, + 58, + 111, + 63, + 153, + 61, + 129, + 137, + 113, + 129, + 140, + 52, + 179, + 178, + 46, + 125, + 144, + 23, + 25, + 121, + 221, + 226, + 223, + 252, + 239, + 110, + 20, + 254, + 248, + 231, + 240, + 162, + 231, + 60, + 214, + 15, + 10, + 77, + 123, + 41, + 7, + 164, + 126, + 239, + 80, + 108, + 180, + 20, + 37, + 243, + 139, + 199, + 192, + 231, + 142, + 130, + 29, + 10, + 46, + 71, + 245, + 81, + 194, + 16, + 215, + 170, + 130, + 203, + 64, + 6, + 115, + 220, + 80, + 45, + 117, + 102, + 104, + 10, + 152, + 183, + 142, + 251, + 24, + 73, + 19, + 108, + 89, + 76, + 192, + 250, + 245, + 120, + 113, + 21, + 155, + 16, + 2, + 232, + 148, + 189, + 190, + 167, + 218, + 19, + 200, + 41, + 123, + 71, + 170, + 171, + 243, + 173, + 172, + 72, + 206, + 17, + 188, + 93, + 252, + 26, + 85, + 102, + 162, + 183, + 155, + 223, + 126, + 129, + 68, + 78, + 7, + 44, + 238, + 76, + 107, + 119, + 222, + 213, + 218, + 198, + 246, + 84, + 165, + 112, + 175, + 88, + 173, + 218, + 63, + 188, + 253, + 133, + 34, + 90, + 133, + 174, + 47, + 110, + 92, + 137, + 174, + 50, + 91, + 243, + 185, + 202, + 241, + 18, + 1, + 229, + 125, + 110, + 209, + 241, + 77, + 66, + 64, + 81, + 26, + 201, + 100, + 194, + 19, + 116, + 90, + 12, + 101, + 39, + 20, + 162, + 28, + 110, + 76, + 65, + 1, + 57, + 45, + 97, + 138, + 94, + 69, + 4, + 186, + 102, + 227, + 138, + 184, + 197, + 219, + 89, + 28, + 118, + 116, + 62, + 23, + 82, + 231, + 221, + 20, + 204, + 107, + 21, + 178, + 220, + 178, + 230, + 214, + 14, + 59, + 122, + 85, + 216, + 203, + 255, + 41, + 26, + 235, + 40, + 67, + 97, + 37, + 40, + 139, + 253, + 116, + 129, + 69, + 251, + 161, + 244, + 202, + 103, + 243, + 237, + 237, + 27, + 40, + 142, + 244, + 114, + 56, + 176, + 51, + 173, + 66, + 151, + 194, + 68, + 119, + 118, + 251, + 71, + 26, + 233, + 59, + 148, + 163, + 134, + 15, + 58, + 227, + 198, + 155, + 183, + 157, + 28, + 158, + 229, + 38, + 122, + 97, + 160, + 101, + 46, + 206, + 226, + 95, + 238, + 70, + 218, + 121, + 171, + 31, + 132, + 86, + 150, + 2, + 174, + 70, + 102, + 82, + 192, + 107, + 73, + 193, + 206, + 116, + 58, + 165, + 69, + 97, + 250, + 27, + 249, + 13, + 175, + 136, + 168, + 122, + 79, + 225, + 230, + 0, + 117, + 198, + 145, + 89, + 12, + 91, + 133, + 248, + 8, + 208, + 160, + 46, + 15, + 157, + 107, + 55, + 167, + 143, + 185, + 87, + 214, + 238, + 78, + 178, + 97, + 19, + 97, + 35, + 132, + 231, + 111, + 104, + 9, + 198, + 122, + 154, + 227, + 176, + 249, + 218, + 53, + 192, + 185, + 48, + 195, + 118, + 163, + 177, + 157, + 115, + 97, + 36, + 78, + 39, + 77, + 137, + 45, + 105, + 211, + 186, + 213, + 56, + 194, + 21, + 81, + 236, + 115, + 187, + 87, + 17, + 69, + 73, + 179, + 246, + 220, + 211, + 164, + 15, + 22, + 234, + 109, + 234, + 147, + 50, + 216, + 96, + 108, + 212, + 146, + 189, + 139, + 187, + 228, + 57, + 51, + 51, + 65, + 131, + 11, + 56, + 82, + 205, + 103, + 218, + 15, + 155, + 214, + 196, + 0, + 231, + 199, + 208, + 136, + 173, + 133, + 46, + 249, + 234, + 93, + 3, + 22, + 79, + 29, + 237, + 107, + 87, + 12, + 247, + 141, + 81, + 243, + 118, + 73, + 31, + 70, + 144, + 163, + 14, + 215, + 226, + 136, + 238, + 156, + 216, + 158, + 157, + 8, + 111, + 99, + 226, + 107, + 71, + 175, + 83, + 86, + 100, + 237, + 198, + 141, + 134, + 199, + 4, + 29, + 84, + 109, + 246, + 52, + 92, + 211, + 121, + 77, + 88, + 18, + 39, + 56, + 86, + 161, + 3, + 130, + 141, + 51, + 148, + 25, + 229, + 175, + 54, + 51, + 128, + 168, + 189, + 41, + 241, + 235, + 86, + 98, + 190, + 80, + 245, + 104, + 30, + 32, + 18, + 19, + 160, + 218, + 36, + 57, + 69, + 67, + 106, + 117, + 202, + 189, + 118, + 42, + 197, + 60, + 253, + 217, + 95, + 208, + 17, + 98, + 153, + 178, + 146, + 122, + 143, + 123, + 89, + 2, + 91, + 173, + 211, + 141, + 121, + 45, + 64, + 154, + 161, + 214, + 242, + 53, + 182, + 13, + 74, + 4, + 67, + 103, + 167, + 231, + 50, + 25, + 76, + 218, + 113, + 84, + 120, + 118, + 254, + 164, + 77, + 178, + 187, + 166, + 185, + 109, + 249, + 48, + 52, + 32, + 11, + 88, + 99, + 27, + 247, + 106, + 242, + 23, + 131, + 16, + 135, + 27, + 105, + 190, + 231, + 80, + 226, + 188, + 211, + 219, + 79, + 215, + 137, + 128, + 24, + 103, + 57, + 85, + 157, + 116, + 124, + 171, + 225, + 176, + 57, + 244, + 42, + 243, + 20, + 221, + 19, + 198, + 182, + 78, + 85, + 14, + 18, + 204, + 17, + 35, + 151, + 47, + 50, + 79, + 97, + 115, + 107, + 181, + 198, + 158, + 161, + 147, + 96, + 116, + 132, + 208, + 204, + 49, + 58, + 84, + 244, + 106, + 59, + 102, + 180, + 40, + 24, + 118, + 58, + 253, + 140, + 5, + 230, + 234, + 239, + 111, + 122, + 112, + 98, + 85, + 59, + 69, + 131, + 67, + 10, + 50, + 182, + 229, + 132, + 157, + 115, + 54, + 106, + 22, + 4, + 8, + 226, + 1, + 122, + 244, + 30, + 211, + 229, + 172, + 183, + 6, + 234, + 6, + 27, + 243, + 228, + 153, + 106, + 59, + 36, + 194, + 212, + 37, + 222, + 109, + 58, + 34, + 233, + 76, + 114, + 137, + 176, + 13, + 61, + 194, + 180, + 184, + 139, + 164, + 243, + 162, + 132, + 240, + 187, + 23, + 219, + 117, + 67, + 255, + 250, + 102, + 175, + 215, + 166, + 189, + 154, + 53, + 93, + 128, + 115, + 152, + 75, + 253, + 218, + 182, + 90, + 32, + 93, + 26, + 182, + 44, + 95, + 37, + 56, + 114, + 178, + 43, + 210, + 10, + 113, + 163, + 162, + 127, + 16, + 194, + 152, + 146, + 176, + 93, + 27, + 217, + 55, + 53, + 212, + 4, + 151, + 231, + 162, + 96, + 167, + 110, + 140, + 216, + 131, + 81, + 98, + 63, + 135, + 87, + 165, + 82, + 145, + 176, + 103, + 163, + 113, + 99, + 178, + 19, + 201, + 128, + 181, + 149, + 99, + 95, + 232, + 243, + 44, + 184, + 26, + 61, + 204, + 8, + 204, + 230, + 104, + 172, + 20, + 61, + 160, + 109, + 56, + 175, + 79, + 142, + 124, + 161, + 211, + 66, + 227, + 137, + 81, + 92, + 96, + 158, + 86, + 219, + 127, + 60, + 252, + 204, + 116, + 54, + 162, + 254, + 180, + 55, + 12, + 218, + 161, + 130, + 224, + 85, + 251, + 15, + 179, + 111, + 6, + 210, + 88, + 88, + 49, + 47, + 32, + 181, + 176, + 212, + 56, + 135, + 49, + 143, + 155, + 31, + 197, + 171, + 144, + 39, + 211, + 234, + 106, + 117, + 146, + 70, + 152, + 140, + 161, + 197, + 203, + 67, + 84, + 192, + 91, + 181, + 199, + 91, + 56, + 164, + 136, + 193, + 46, + 3, + 106, + 13, + 214, + 98, + 143, + 201, + 213, + 17, + 246, + 211, + 83, + 239, + 163, + 148, + 191, + 145, + 42, + 124, + 50, + 113, + 91, + 171, + 93, + 173, + 144, + 183, + 108, + 118, + 99, + 48, + 142, + 208, + 6, + 89, + 20, + 7, + 227, + 228, + 161, + 234, + 89, + 44, + 91, + 107, + 232, + 145, + 35, + 126, + 131, + 119, + 99, + 24, + 164, + 35, + 126, + 19, + 147, + 180, + 236, + 43, + 50, + 196, + 107, + 36, + 159, + 140, + 14, + 151, + 109, + 37, + 181, + 165, + 226, + 120, + 158, + 19, + 34, + 26, + 41, + 98, + 155, + 97, + 108, + 10, + 41, + 98, + 143, + 48, + 210, + 37, + 177, + 42, + 106, + 21, + 210, + 211, + 237, + 127, + 65, + 31, + 72, + 184, + 193, + 38, + 134, + 68, + 15, + 254, + 245, + 57, + 155, + 47, + 74, + 83, + 124, + 215, + 51, + 254, + 90, + 130, + 124, + 54, + 27, + 138, + 195, + 230, + 26, + 29, + 113, + 230, + 67, + 31, + 254, + 70, + 48, + 209, + 66, + 220, + 32, + 109, + 100, + 228, + 4, + 183, + 204, + 135, + 235, + 125, + 123, + 167, + 38, + 234, + 168, + 145, + 31, + 240, + 189, + 194, + 47, + 118, + 123, + 222, + 208, + 227, + 237, + 10, + 69, + 244, + 65, + 203, + 214, + 139, + 109, + 153, + 192, + 222, + 113, + 146, + 100, + 157, + 41, + 133, + 99, + 133, + 141, + 209, + 75, + 78, + 86, + 15, + 15, + 123, + 97, + 1, + 165, + 228, + 226, + 43, + 235, + 167, + 134, + 95, + 223, + 28, + 134, + 36, + 182, + 13, + 108, + 99, + 98, + 253, + 231, + 32, + 8, + 29, + 49, + 174, + 166, + 122, + 54, + 226, + 220, + 71, + 110, + 211, + 44, + 77, + 232, + 212, + 247, + 246, + 171, + 21, + 130, + 185, + 168, + 181, + 41, + 105, + 176, + 76, + 226, + 172, + 206, + 188, + 80, + 62, + 118, + 148, + 62, + 22, + 40, + 245, + 174, + 182, + 185, + 1, + 25, + 27, + 145, + 135, + 247, + 60, + 173, + 243, + 85, + 247, + 66, + 50, + 211, + 105, + 157, + 205, + 27, + 76, + 146, + 140, + 151, + 42, + 56, + 35, + 48, + 144, + 195, + 94, + 214, + 247, + 94, + 71, + 55, + 217, + 214, + 146, + 25, + 94, + 61, + 171, + 74, + 48, + 119, + 23, + 245, + 56, + 197, + 127, + 228, + 133, + 196, + 244, + 57, + 78, + 170, + 17, + 11, + 161, + 207, + 113, + 82, + 246, + 61, + 67, + 34, + 9, + 148, + 71, + 163, + 81, + 63, + 235, + 173, + 168, + 120, + 238, + 81, + 242, + 13, + 241, + 86, + 30, + 6, + 107, + 114, + 35, + 163, + 131, + 199, + 134, + 173, + 26, + 187, + 50, + 101, + 247, + 237, + 4, + 168, + 168, + 195, + 53, + 202, + 210, + 152, + 99, + 233, + 112, + 141, + 110, + 11, + 51, + 36, + 229, + 11, + 32, + 33, + 96, + 99, + 241, + 94, + 31, + 54, + 159, + 38, + 79, + 177, + 182, + 70, + 206, + 130, + 3, + 52, + 188, + 102, + 8, + 36, + 222, + 227, + 196, + 169, + 152, + 234, + 154, + 231, + 235, + 79, + 53, + 240, + 67, + 96, + 81, + 167, + 109, + 175, + 232, + 132, + 181, + 194, + 15, + 188, + 84, + 2, + 61, + 12, + 66, + 239, + 189, + 108, + 110, + 207, + 64, + 233, + 148, + 246, + 47, + 1, + 111, + 81, + 89, + 185, + 6, + 122, + 45, + 138, + 80, + 100, + 241, + 240, + 128, + 141, + 157, + 193, + 205, + 30, + 10, + 182, + 231, + 68, + 59, + 98, + 241, + 20, + 217, + 58, + 58, + 64, + 117, + 135, + 252, + 168, + 226, + 183, + 55, + 39, + 240, + 18, + 125, + 71, + 206, + 220, + 84, + 255, + 160, + 70, + 175, + 3, + 157, + 11, + 152, + 37, + 116, + 0, + 251, + 222, + 123, + 148, + 225, + 112, + 146, + 68, + 39, + 49, + 135, + 16, + 22, + 123, + 26, + 123, + 109, + 147, + 250, + 134, + 28, + 36, + 117, + 71, + 91, + 110, + 108, + 99, + 153, + 203, + 18, + 166, + 134, + 243, + 255, + 220, + 113, + 252, + 202, + 22, + 117, + 143, + 235, + 188, + 102, + 135, + 178, + 181, + 97, + 105, + 103, + 22, + 99, + 132, + 211, + 188, + 60, + 12, + 253, + 61, + 204, + 197, + 193, + 147, + 255, + 3, + 58, + 184, + 137, + 205, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 49, + 55, + 57, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 235, + 142, + 100, + 199, + 145, + 222, + 255, + 121, + 138, + 126, + 1, + 133, + 226, + 158, + 153, + 128, + 32, + 128, + 51, + 164, + 22, + 254, + 177, + 128, + 109, + 240, + 13, + 100, + 239, + 2, + 6, + 244, + 195, + 235, + 247, + 7, + 140, + 168, + 225, + 138, + 85, + 236, + 136, + 174, + 147, + 217, + 49, + 61, + 164, + 97, + 73, + 0, + 169, + 174, + 153, + 234, + 115, + 242, + 156, + 188, + 196, + 23, + 223, + 133, + 94, + 240, + 5, + 95, + 254, + 68, + 47, + 248, + 50, + 149, + 95, + 254, + 254, + 143, + 79, + 255, + 251, + 19, + 12, + 187, + 253, + 244, + 63, + 255, + 249, + 247, + 127, + 124, + 162, + 151, + 248, + 239, + 127, + 255, + 151, + 219, + 63, + 232, + 229, + 63, + 254, + 253, + 211, + 159, + 255, + 69, + 94, + 254, + 253, + 255, + 124, + 138, + 207, + 199, + 210, + 23, + 34, + 150, + 151, + 255, + 248, + 159, + 159, + 254, + 237, + 211, + 127, + 251, + 205, + 55, + 12, + 142, + 255, + 253, + 253, + 31, + 183, + 63, + 138, + 241, + 29, + 95, + 255, + 229, + 215, + 239, + 248, + 243, + 127, + 125, + 249, + 203, + 95, + 254, + 252, + 175, + 95, + 254, + 203, + 143, + 47, + 248, + 242, + 215, + 191, + 126, + 254, + 241, + 203, + 167, + 207, + 63, + 127, + 250, + 243, + 223, + 244, + 133, + 20, + 60, + 254, + 51, + 94, + 126, + 254, + 183, + 79, + 244, + 235, + 165, + 130, + 142, + 53, + 105, + 200, + 122, + 249, + 57, + 190, + 247, + 79, + 36, + 192, + 99, + 136, + 202, + 124, + 249, + 249, + 127, + 188, + 252, + 5, + 81, + 127, + 250, + 235, + 203, + 207, + 255, + 235, + 211, + 0, + 225, + 73, + 28, + 23, + 243, + 245, + 231, + 70, + 183, + 159, + 79, + 32, + 35, + 194, + 49, + 127, + 253, + 128, + 171, + 15, + 126, + 184, + 125, + 240, + 211, + 207, + 91, + 215, + 36, + 10, + 76, + 234, + 100, + 201, + 181, + 161, + 28, + 125, + 227, + 4, + 158, + 110, + 139, + 146, + 111, + 60, + 184, + 171, + 113, + 114, + 13, + 54, + 193, + 29, + 199, + 228, + 182, + 187, + 114, + 134, + 33, + 60, + 108, + 102, + 207, + 112, + 86, + 23, + 191, + 242, + 135, + 91, + 255, + 5, + 187, + 125, + 160, + 48, + 39, + 186, + 218, + 221, + 7, + 95, + 138, + 111, + 178, + 221, + 1, + 213, + 81, + 253, + 141, + 47, + 39, + 227, + 66, + 130, + 32, + 38, + 66, + 163, + 109, + 168, + 73, + 20, + 148, + 141, + 151, + 100, + 99, + 253, + 183, + 219, + 87, + 10, + 176, + 57, + 233, + 146, + 95, + 239, + 235, + 75, + 245, + 193, + 79, + 187, + 15, + 193, + 143, + 174, + 218, + 5, + 134, + 234, + 210, + 213, + 55, + 16, + 62, + 96, + 146, + 167, + 227, + 80, + 79, + 152, + 106, + 138, + 149, + 3, + 180, + 255, + 85, + 191, + 140, + 208, + 171, + 33, + 37, + 58, + 185, + 77, + 38, + 3, + 28, + 195, + 169, + 109, + 224, + 152, + 22, + 144, + 174, + 116, + 178, + 242, + 215, + 107, + 39, + 4, + 155, + 202, + 67, + 239, + 94, + 20, + 173, + 70, + 110, + 247, + 13, + 66, + 61, + 186, + 106, + 27, + 160, + 226, + 228, + 125, + 227, + 224, + 4, + 134, + 51, + 93, + 220, + 249, + 235, + 197, + 47, + 24, + 195, + 28, + 149, + 247, + 22, + 45, + 150, + 124, + 205, + 34, + 227, + 189, + 53, + 139, + 139, + 247, + 240, + 238, + 231, + 247, + 43, + 22, + 174, + 251, + 61, + 242, + 104, + 197, + 18, + 65, + 24, + 38, + 125, + 91, + 131, + 136, + 194, + 100, + 227, + 103, + 171, + 149, + 171, + 167, + 247, + 250, + 120, + 79, + 23, + 70, + 255, + 241, + 47, + 28, + 173, + 86, + 226, + 11, + 80, + 214, + 232, + 91, + 172, + 100, + 8, + 16, + 209, + 200, + 222, + 94, + 45, + 214, + 139, + 135, + 25, + 119, + 255, + 196, + 127, + 58, + 27, + 132, + 166, + 5, + 73, + 201, + 64, + 7, + 138, + 182, + 13, + 142, + 210, + 2, + 83, + 150, + 167, + 235, + 209, + 92, + 158, + 142, + 206, + 195, + 221, + 158, + 14, + 207, + 238, + 69, + 59, + 1, + 78, + 195, + 190, + 163, + 161, + 186, + 1, + 217, + 192, + 108, + 96, + 245, + 115, + 241, + 46, + 232, + 217, + 76, + 217, + 189, + 180, + 229, + 176, + 100, + 234, + 108, + 187, + 89, + 67, + 2, + 36, + 84, + 221, + 89, + 23, + 170, + 25, + 81, + 174, + 165, + 247, + 143, + 220, + 57, + 95, + 148, + 135, + 203, + 55, + 154, + 41, + 166, + 10, + 52, + 134, + 247, + 29, + 254, + 76, + 39, + 176, + 46, + 79, + 167, + 202, + 209, + 122, + 111, + 198, + 32, + 76, + 222, + 183, + 173, + 154, + 57, + 200, + 18, + 79, + 87, + 252, + 241, + 124, + 115, + 123, + 120, + 80, + 148, + 255, + 121, + 252, + 90, + 205, + 49, + 196, + 239, + 53, + 31, + 239, + 46, + 136, + 6, + 12, + 202, + 103, + 222, + 217, + 32, + 224, + 203, + 159, + 132, + 193, + 7, + 27, + 203, + 206, + 50, + 127, + 169, + 220, + 57, + 155, + 195, + 60, + 33, + 214, + 136, + 233, + 175, + 47, + 237, + 215, + 123, + 76, + 170, + 126, + 138, + 153, + 186, + 98, + 80, + 222, + 172, + 254, + 127, + 250, + 215, + 47, + 247, + 8, + 0, + 53, + 33, + 0, + 191, + 212, + 237, + 217, + 129, + 244, + 115, + 117, + 32, + 45, + 7, + 244, + 232, + 229, + 16, + 132, + 101, + 83, + 27, + 103, + 136, + 24, + 160, + 160, + 42, + 253, + 190, + 170, + 229, + 131, + 162, + 233, + 232, + 69, + 92, + 6, + 194, + 60, + 71, + 223, + 128, + 174, + 5, + 178, + 116, + 62, + 63, + 100, + 126, + 211, + 146, + 184, + 105, + 215, + 32, + 97, + 24, + 211, + 117, + 246, + 173, + 70, + 36, + 14, + 211, + 166, + 90, + 118, + 160, + 149, + 175, + 143, + 157, + 8, + 20, + 145, + 16, + 127, + 93, + 76, + 245, + 135, + 195, + 149, + 169, + 13, + 53, + 24, + 14, + 195, + 151, + 245, + 157, + 177, + 104, + 34, + 76, + 165, + 252, + 77, + 249, + 168, + 133, + 24, + 25, + 144, + 227, + 247, + 182, + 85, + 178, + 232, + 128, + 203, + 197, + 191, + 35, + 168, + 200, + 236, + 81, + 22, + 52, + 62, + 43, + 22, + 140, + 178, + 192, + 62, + 4, + 232, + 218, + 70, + 35, + 24, + 76, + 20, + 27, + 209, + 8, + 115, + 112, + 116, + 228, + 63, + 126, + 133, + 200, + 107, + 194, + 138, + 115, + 123, + 219, + 134, + 137, + 2, + 40, + 110, + 217, + 55, + 202, + 215, + 7, + 62, + 65, + 121, + 177, + 99, + 113, + 166, + 124, + 184, + 217, + 163, + 39, + 46, + 60, + 96, + 248, + 108, + 60, + 35, + 138, + 16, + 76, + 69, + 148, + 211, + 198, + 7, + 95, + 185, + 217, + 179, + 190, + 135, + 59, + 160, + 105, + 90, + 103, + 156, + 2, + 32, + 8, + 196, + 158, + 238, + 64, + 143, + 103, + 188, + 135, + 34, + 255, + 115, + 85, + 228, + 151, + 117, + 239, + 209, + 226, + 165, + 113, + 198, + 157, + 134, + 125, + 75, + 178, + 226, + 27, + 197, + 124, + 129, + 21, + 62, + 44, + 106, + 162, + 79, + 103, + 231, + 97, + 45, + 47, + 12, + 168, + 146, + 110, + 129, + 135, + 247, + 42, + 14, + 68, + 102, + 207, + 206, + 179, + 219, + 80, + 94, + 9, + 164, + 238, + 30, + 103, + 31, + 127, + 115, + 49, + 135, + 206, + 161, + 17, + 197, + 177, + 26, + 11, + 104, + 196, + 248, + 255, + 107, + 11, + 50, + 125, + 216, + 247, + 238, + 222, + 157, + 251, + 133, + 4, + 151, + 94, + 24, + 231, + 226, + 101, + 99, + 62, + 186, + 23, + 25, + 176, + 12, + 189, + 17, + 56, + 210, + 56, + 61, + 177, + 103, + 19, + 75, + 228, + 87, + 212, + 222, + 134, + 140, + 231, + 27, + 229, + 215, + 151, + 80, + 96, + 226, + 192, + 184, + 202, + 223, + 124, + 160, + 128, + 131, + 145, + 233, + 57, + 164, + 116, + 136, + 16, + 77, + 4, + 52, + 82, + 107, + 7, + 30, + 104, + 14, + 251, + 207, + 39, + 247, + 121, + 187, + 167, + 211, + 139, + 30, + 222, + 117, + 209, + 127, + 123, + 109, + 239, + 110, + 162, + 255, + 246, + 11, + 247, + 139, + 219, + 163, + 91, + 114, + 130, + 21, + 189, + 199, + 228, + 10, + 222, + 6, + 83, + 4, + 129, + 2, + 53, + 94, + 59, + 96, + 10, + 119, + 209, + 41, + 186, + 193, + 133, + 115, + 8, + 170, + 235, + 88, + 193, + 96, + 147, + 87, + 10, + 54, + 26, + 126, + 125, + 239, + 25, + 24, + 231, + 24, + 120, + 165, + 76, + 61, + 131, + 15, + 7, + 32, + 233, + 108, + 108, + 77, + 222, + 122, + 11, + 62, + 242, + 45, + 224, + 168, + 125, + 234, + 11, + 88, + 26, + 27, + 90, + 67, + 64, + 112, + 197, + 91, + 159, + 12, + 188, + 188, + 141, + 23, + 237, + 96, + 85, + 126, + 134, + 85, + 237, + 194, + 2, + 52, + 129, + 88, + 112, + 52, + 242, + 52, + 152, + 129, + 150, + 97, + 94, + 190, + 234, + 54, + 212, + 118, + 244, + 102, + 146, + 58, + 184, + 78, + 105, + 196, + 218, + 200, + 16, + 6, + 99, + 126, + 126, + 252, + 160, + 213, + 151, + 134, + 130, + 24, + 122, + 35, + 153, + 100, + 68, + 1, + 201, + 105, + 171, + 166, + 60, + 126, + 151, + 15, + 177, + 24, + 5, + 250, + 241, + 12, + 220, + 49, + 144, + 20, + 22, + 56, + 5, + 139, + 22, + 200, + 144, + 149, + 30, + 201, + 190, + 206, + 67, + 3, + 70, + 246, + 121, + 127, + 250, + 171, + 207, + 16, + 243, + 237, + 81, + 112, + 96, + 89, + 22, + 100, + 179, + 127, + 54, + 111, + 254, + 118, + 116, + 217, + 42, + 224, + 156, + 66, + 92, + 135, + 227, + 160, + 3, + 2, + 91, + 28, + 91, + 240, + 82, + 117, + 106, + 30, + 255, + 60, + 47, + 210, + 114, + 212, + 11, + 157, + 170, + 35, + 68, + 148, + 111, + 235, + 46, + 97, + 223, + 155, + 207, + 99, + 196, + 235, + 144, + 246, + 177, + 31, + 0, + 224, + 215, + 149, + 82, + 87, + 245, + 205, + 107, + 192, + 208, + 193, + 141, + 44, + 75, + 36, + 152, + 180, + 56, + 101, + 89, + 94, + 217, + 82, + 238, + 31, + 237, + 195, + 49, + 66, + 145, + 223, + 123, + 26, + 150, + 1, + 110, + 83, + 26, + 177, + 21, + 37, + 24, + 130, + 188, + 158, + 237, + 197, + 87, + 136, + 3, + 87, + 74, + 34, + 90, + 139, + 158, + 191, + 12, + 191, + 44, + 38, + 219, + 64, + 209, + 2, + 118, + 75, + 111, + 230, + 180, + 90, + 16, + 16, + 25, + 156, + 146, + 83, + 43, + 70, + 1, + 85, + 195, + 115, + 136, + 47, + 13, + 24, + 43, + 78, + 253, + 125, + 156, + 25, + 130, + 233, + 156, + 194, + 237, + 229, + 98, + 84, + 178, + 72, + 170, + 85, + 237, + 136, + 82, + 160, + 178, + 192, + 92, + 103, + 35, + 152, + 22, + 107, + 191, + 120, + 218, + 17, + 187, + 180, + 59, + 191, + 255, + 158, + 220, + 65, + 85, + 211, + 5, + 229, + 240, + 158, + 6, + 130, + 145, + 167, + 204, + 224, + 51, + 42, + 135, + 14, + 5, + 155, + 179, + 145, + 107, + 172, + 227, + 198, + 20, + 79, + 11, + 155, + 75, + 84, + 142, + 10, + 118, + 123, + 92, + 39, + 154, + 201, + 28, + 184, + 96, + 77, + 177, + 70, + 200, + 137, + 20, + 208, + 204, + 244, + 24, + 144, + 123, + 248, + 160, + 181, + 17, + 101, + 226, + 128, + 58, + 168, + 239, + 124, + 104, + 138, + 64, + 180, + 82, + 44, + 252, + 210, + 110, + 114, + 135, + 138, + 189, + 15, + 95, + 187, + 255, + 13, + 135, + 248, + 218, + 112, + 48, + 150, + 70, + 58, + 107, + 66, + 236, + 185, + 71, + 29, + 31, + 184, + 194, + 53, + 101, + 250, + 210, + 30, + 59, + 108, + 188, + 251, + 168, + 1, + 203, + 124, + 70, + 241, + 80, + 83, + 126, + 54, + 129, + 55, + 228, + 57, + 198, + 76, + 232, + 77, + 37, + 129, + 254, + 140, + 94, + 57, + 193, + 73, + 48, + 170, + 204, + 61, + 182, + 146, + 173, + 175, + 207, + 89, + 119, + 0, + 54, + 233, + 2, + 216, + 42, + 249, + 72, + 89, + 37, + 29, + 52, + 178, + 171, + 13, + 111, + 95, + 193, + 240, + 49, + 132, + 22, + 39, + 32, + 36, + 106, + 100, + 202, + 6, + 81, + 118, + 72, + 186, + 66, + 9, + 85, + 133, + 106, + 57, + 12, + 103, + 122, + 132, + 57, + 96, + 77, + 236, + 100, + 113, + 44, + 6, + 52, + 86, + 210, + 103, + 93, + 110, + 253, + 118, + 192, + 10, + 57, + 140, + 41, + 57, + 172, + 119, + 138, + 131, + 33, + 76, + 179, + 249, + 244, + 160, + 154, + 44, + 119, + 13, + 162, + 155, + 122, + 226, + 85, + 83, + 245, + 12, + 158, + 32, + 159, + 176, + 164, + 19, + 159, + 160, + 33, + 128, + 168, + 105, + 157, + 88, + 207, + 245, + 18, + 72, + 45, + 57, + 76, + 229, + 87, + 149, + 15, + 231, + 9, + 191, + 50, + 249, + 27, + 229, + 239, + 40, + 225, + 206, + 138, + 122, + 118, + 8, + 30, + 241, + 2, + 198, + 206, + 115, + 0, + 75, + 124, + 79, + 10, + 238, + 190, + 209, + 119, + 216, + 31, + 135, + 170, + 173, + 91, + 85, + 55, + 85, + 233, + 103, + 187, + 109, + 245, + 67, + 94, + 212, + 18, + 48, + 147, + 148, + 218, + 122, + 56, + 208, + 107, + 128, + 115, + 122, + 246, + 190, + 63, + 141, + 62, + 22, + 233, + 21, + 193, + 162, + 106, + 3, + 183, + 18, + 44, + 2, + 224, + 49, + 27, + 171, + 17, + 206, + 82, + 2, + 231, + 181, + 210, + 65, + 168, + 116, + 97, + 235, + 140, + 154, + 44, + 48, + 77, + 82, + 78, + 210, + 41, + 217, + 121, + 192, + 98, + 93, + 25, + 244, + 81, + 105, + 221, + 106, + 118, + 79, + 249, + 182, + 142, + 93, + 164, + 178, + 170, + 70, + 15, + 69, + 81, + 56, + 192, + 69, + 26, + 133, + 226, + 1, + 240, + 140, + 224, + 6, + 60, + 163, + 236, + 226, + 180, + 187, + 117, + 161, + 64, + 108, + 47, + 49, + 118, + 59, + 84, + 81, + 70, + 224, + 228, + 157, + 56, + 137, + 25, + 120, + 129, + 106, + 148, + 171, + 96, + 37, + 186, + 60, + 164, + 248, + 12, + 135, + 57, + 168, + 113, + 82, + 232, + 68, + 88, + 154, + 119, + 117, + 42, + 22, + 216, + 71, + 1, + 10, + 200, + 176, + 68, + 211, + 182, + 200, + 41, + 159, + 105, + 0, + 162, + 231, + 123, + 101, + 5, + 186, + 83, + 1, + 40, + 84, + 131, + 112, + 229, + 139, + 174, + 208, + 156, + 14, + 113, + 6, + 83, + 96, + 31, + 141, + 175, + 189, + 217, + 4, + 145, + 149, + 195, + 131, + 179, + 160, + 57, + 149, + 204, + 182, + 67, + 85, + 148, + 130, + 146, + 167, + 43, + 247, + 225, + 77, + 205, + 9, + 58, + 23, + 210, + 55, + 223, + 199, + 28, + 17, + 6, + 241, + 183, + 85, + 116, + 149, + 157, + 164, + 234, + 28, + 92, + 87, + 107, + 79, + 200, + 141, + 175, + 155, + 168, + 103, + 239, + 169, + 40, + 12, + 21, + 141, + 202, + 121, + 15, + 85, + 153, + 19, + 100, + 32, + 241, + 14, + 168, + 162, + 77, + 160, + 10, + 91, + 165, + 197, + 191, + 32, + 251, + 236, + 40, + 30, + 22, + 8, + 251, + 164, + 198, + 51, + 145, + 128, + 172, + 57, + 210, + 14, + 73, + 237, + 89, + 178, + 123, + 183, + 127, + 4, + 180, + 198, + 43, + 232, + 116, + 246, + 74, + 206, + 8, + 216, + 26, + 155, + 230, + 111, + 73, + 216, + 62, + 138, + 3, + 67, + 19, + 150, + 9, + 119, + 90, + 203, + 176, + 0, + 178, + 209, + 115, + 230, + 241, + 3, + 30, + 185, + 15, + 7, + 124, + 62, + 230, + 135, + 225, + 32, + 89, + 182, + 222, + 249, + 142, + 147, + 115, + 176, + 146, + 99, + 61, + 235, + 116, + 163, + 65, + 166, + 149, + 206, + 233, + 223, + 111, + 135, + 128, + 17, + 97, + 141, + 217, + 72, + 12, + 12, + 186, + 18, + 90, + 206, + 164, + 107, + 238, + 17, + 132, + 53, + 142, + 139, + 53, + 110, + 242, + 97, + 141, + 51, + 112, + 164, + 231, + 242, + 55, + 96, + 157, + 93, + 34, + 88, + 185, + 198, + 31, + 62, + 68, + 23, + 240, + 53, + 184, + 113, + 28, + 60, + 196, + 78, + 43, + 181, + 228, + 56, + 101, + 23, + 108, + 115, + 133, + 39, + 144, + 54, + 186, + 140, + 240, + 98, + 96, + 50, + 89, + 91, + 207, + 182, + 110, + 103, + 191, + 125, + 248, + 219, + 230, + 49, + 11, + 172, + 97, + 141, + 183, + 43, + 60, + 163, + 49, + 156, + 195, + 199, + 149, + 103, + 208, + 37, + 101, + 210, + 37, + 217, + 201, + 149, + 38, + 213, + 189, + 196, + 169, + 42, + 223, + 222, + 86, + 169, + 108, + 183, + 47, + 195, + 75, + 203, + 27, + 109, + 76, + 100, + 134, + 151, + 214, + 76, + 109, + 76, + 246, + 39, + 74, + 89, + 220, + 150, + 108, + 164, + 35, + 117, + 159, + 50, + 194, + 226, + 53, + 27, + 137, + 34, + 108, + 128, + 72, + 41, + 177, + 255, + 25, + 33, + 100, + 155, + 11, + 68, + 32, + 120, + 43, + 97, + 218, + 216, + 69, + 6, + 50, + 226, + 1, + 125, + 183, + 197, + 46, + 172, + 127, + 134, + 97, + 227, + 10, + 174, + 190, + 96, + 50, + 115, + 143, + 220, + 178, + 124, + 134, + 245, + 194, + 112, + 8, + 62, + 205, + 80, + 18, + 174, + 70, + 240, + 137, + 24, + 104, + 142, + 220, + 45, + 113, + 236, + 177, + 89, + 30, + 118, + 137, + 137, + 244, + 10, + 101, + 218, + 102, + 218, + 76, + 152, + 134, + 141, + 231, + 151, + 112, + 243, + 89, + 249, + 67, + 175, + 152, + 59, + 247, + 15, + 16, + 229, + 2, + 127, + 238, + 109, + 245, + 228, + 245, + 142, + 212, + 33, + 210, + 22, + 78, + 84, + 236, + 169, + 214, + 180, + 143, + 209, + 243, + 49, + 221, + 118, + 86, + 24, + 18, + 194, + 184, + 77, + 52, + 134, + 105, + 128, + 58, + 207, + 45, + 13, + 153, + 253, + 127, + 75, + 222, + 231, + 106, + 194, + 46, + 38, + 38, + 131, + 216, + 180, + 70, + 203, + 32, + 117, + 80, + 65, + 211, + 116, + 106, + 239, + 215, + 217, + 251, + 125, + 232, + 159, + 142, + 68, + 98, + 3, + 100, + 46, + 108, + 220, + 171, + 39, + 129, + 58, + 174, + 249, + 134, + 1, + 218, + 235, + 113, + 120, + 32, + 152, + 234, + 29, + 217, + 176, + 87, + 230, + 74, + 40, + 48, + 9, + 165, + 145, + 217, + 79, + 56, + 96, + 78, + 150, + 20, + 186, + 42, + 101, + 118, + 251, + 246, + 60, + 207, + 80, + 133, + 29, + 196, + 122, + 255, + 151, + 159, + 73, + 219, + 124, + 128, + 24, + 117, + 26, + 227, + 210, + 32, + 80, + 150, + 161, + 141, + 168, + 94, + 151, + 116, + 150, + 214, + 138, + 182, + 220, + 232, + 212, + 129, + 105, + 180, + 229, + 82, + 156, + 230, + 243, + 246, + 77, + 213, + 5, + 244, + 59, + 217, + 48, + 247, + 71, + 140, + 31, + 90, + 123, + 246, + 236, + 19, + 196, + 124, + 54, + 114, + 85, + 6, + 131, + 6, + 63, + 54, + 91, + 157, + 70, + 117, + 234, + 254, + 229, + 21, + 218, + 134, + 51, + 8, + 200, + 99, + 53, + 235, + 3, + 72, + 12, + 88, + 114, + 179, + 251, + 75, + 175, + 255, + 235, + 186, + 125, + 183, + 154, + 166, + 9, + 211, + 91, + 157, + 131, + 56, + 186, + 217, + 51, + 53, + 88, + 184, + 100, + 46, + 243, + 112, + 83, + 189, + 174, + 8, + 166, + 240, + 85, + 73, + 213, + 71, + 181, + 153, + 48, + 22, + 165, + 117, + 253, + 153, + 106, + 60, + 124, + 128, + 150, + 114, + 99, + 11, + 88, + 70, + 248, + 190, + 106, + 74, + 142, + 170, + 139, + 237, + 18, + 24, + 169, + 64, + 184, + 234, + 231, + 179, + 181, + 106, + 15, + 37, + 45, + 82, + 202, + 77, + 59, + 37, + 253, + 72, + 136, + 49, + 115, + 182, + 91, + 53, + 213, + 142, + 246, + 19, + 13, + 187, + 54, + 52, + 110, + 196, + 128, + 36, + 108, + 107, + 70, + 142, + 25, + 119, + 107, + 46, + 175, + 151, + 153, + 237, + 96, + 91, + 34, + 96, + 250, + 219, + 41, + 209, + 134, + 60, + 151, + 97, + 31, + 242, + 108, + 28, + 88, + 115, + 143, + 241, + 82, + 99, + 181, + 107, + 45, + 119, + 63, + 131, + 30, + 176, + 145, + 86, + 10, + 101, + 32, + 35, + 164, + 171, + 211, + 111, + 218, + 24, + 152, + 41, + 5, + 106, + 31, + 10, + 135, + 107, + 226, + 109, + 60, + 83, + 35, + 5, + 116, + 25, + 32, + 75, + 55, + 118, + 113, + 111, + 128, + 179, + 223, + 166, + 42, + 9, + 100, + 167, + 180, + 237, + 109, + 126, + 29, + 176, + 134, + 190, + 179, + 203, + 31, + 200, + 8, + 132, + 102, + 104, + 128, + 94, + 125, + 225, + 217, + 62, + 104, + 11, + 212, + 151, + 254, + 83, + 141, + 116, + 213, + 238, + 135, + 213, + 193, + 204, + 104, + 238, + 32, + 53, + 222, + 101, + 157, + 124, + 224, + 127, + 179, + 185, + 159, + 30, + 178, + 144, + 22, + 224, + 156, + 212, + 136, + 123, + 170, + 0, + 121, + 142, + 51, + 240, + 143, + 23, + 142, + 2, + 151, + 198, + 224, + 168, + 76, + 29, + 24, + 73, + 18, + 218, + 72, + 30, + 26, + 26, + 73, + 18, + 50, + 83, + 72, + 224, + 148, + 114, + 177, + 203, + 127, + 81, + 208, + 16, + 245, + 244, + 17, + 106, + 102, + 80, + 230, + 45, + 117, + 248, + 172, + 45, + 192, + 247, + 249, + 116, + 135, + 88, + 67, + 196, + 56, + 177, + 122, + 74, + 140, + 57, + 143, + 113, + 146, + 117, + 251, + 83, + 27, + 200, + 206, + 119, + 231, + 139, + 144, + 59, + 12, + 158, + 107, + 52, + 98, + 92, + 3, + 97, + 34, + 166, + 21, + 193, + 129, + 199, + 187, + 159, + 161, + 43, + 10, + 42, + 212, + 104, + 58, + 65, + 241, + 70, + 163, + 164, + 231, + 235, + 147, + 45, + 250, + 137, + 176, + 116, + 91, + 189, + 100, + 64, + 110, + 157, + 110, + 58, + 114, + 51, + 24, + 75, + 9, + 12, + 79, + 55, + 162, + 221, + 223, + 101, + 11, + 108, + 229, + 149, + 198, + 41, + 223, + 69, + 192, + 125, + 81, + 186, + 166, + 94, + 97, + 249, + 62, + 84, + 28, + 87, + 84, + 9, + 15, + 144, + 233, + 161, + 107, + 14, + 223, + 120, + 149, + 141, + 163, + 176, + 162, + 128, + 72, + 43, + 243, + 234, + 116, + 191, + 203, + 11, + 121, + 3, + 39, + 172, + 184, + 82, + 31, + 68, + 138, + 16, + 93, + 64, + 19, + 91, + 99, + 30, + 226, + 162, + 57, + 253, + 70, + 249, + 101, + 79, + 19, + 152, + 34, + 124, + 239, + 180, + 85, + 247, + 224, + 239, + 169, + 224, + 75, + 222, + 91, + 126, + 6, + 23, + 198, + 116, + 90, + 47, + 23, + 198, + 25, + 83, + 240, + 162, + 38, + 250, + 150, + 183, + 91, + 101, + 244, + 148, + 138, + 165, + 170, + 140, + 57, + 27, + 31, + 21, + 130, + 53, + 86, + 227, + 193, + 45, + 108, + 146, + 49, + 174, + 121, + 135, + 138, + 80, + 241, + 171, + 198, + 177, + 150, + 10, + 151, + 54, + 130, + 62, + 182, + 192, + 39, + 165, + 136, + 237, + 199, + 96, + 198, + 26, + 238, + 78, + 68, + 141, + 206, + 141, + 58, + 163, + 109, + 153, + 123, + 38, + 214, + 105, + 123, + 103, + 246, + 200, + 40, + 224, + 179, + 149, + 239, + 18, + 78, + 83, + 150, + 243, + 93, + 246, + 49, + 178, + 93, + 149, + 241, + 161, + 73, + 180, + 70, + 74, + 170, + 113, + 167, + 135, + 77, + 132, + 164, + 142, + 116, + 63, + 151, + 146, + 197, + 83, + 242, + 126, + 14, + 189, + 103, + 110, + 173, + 135, + 70, + 126, + 190, + 141, + 48, + 154, + 141, + 43, + 254, + 94, + 147, + 45, + 100, + 85, + 174, + 141, + 218, + 144, + 44, + 39, + 235, + 135, + 15, + 10, + 44, + 65, + 144, + 161, + 244, + 79, + 19, + 233, + 119, + 155, + 227, + 176, + 130, + 170, + 83, + 84, + 116, + 175, + 148, + 98, + 79, + 20, + 97, + 219, + 109, + 153, + 56, + 173, + 134, + 95, + 226, + 30, + 111, + 104, + 24, + 184, + 14, + 245, + 29, + 52, + 106, + 124, + 251, + 32, + 175, + 237, + 220, + 157, + 179, + 9, + 41, + 4, + 195, + 7, + 53, + 22, + 61, + 98, + 48, + 101, + 17, + 29, + 219, + 76, + 94, + 107, + 161, + 215, + 204, + 137, + 239, + 158, + 111, + 141, + 2, + 106, + 203, + 71, + 35, + 9, + 3, + 7, + 152, + 144, + 167, + 135, + 148, + 103, + 194, + 137, + 121, + 157, + 217, + 114, + 128, + 29, + 157, + 33, + 38, + 122, + 67, + 59, + 59, + 101, + 180, + 100, + 55, + 184, + 211, + 115, + 243, + 237, + 143, + 178, + 96, + 246, + 232, + 53, + 55, + 250, + 18, + 223, + 162, + 185, + 194, + 229, + 34, + 123, + 238, + 63, + 86, + 157, + 136, + 143, + 65, + 113, + 57, + 206, + 105, + 163, + 179, + 115, + 195, + 113, + 78, + 83, + 78, + 29, + 105, + 170, + 158, + 92, + 253, + 102, + 150, + 176, + 81, + 85, + 183, + 31, + 209, + 249, + 88, + 25, + 70, + 196, + 200, + 245, + 141, + 130, + 58, + 76, + 65, + 61, + 206, + 112, + 207, + 212, + 43, + 219, + 164, + 29, + 2, + 158, + 210, + 104, + 121, + 21, + 251, + 172, + 152, + 141, + 3, + 153, + 251, + 19, + 0, + 247, + 253, + 252, + 233, + 32, + 249, + 168, + 141, + 78, + 193, + 223, + 90, + 96, + 156, + 135, + 101, + 203, + 51, + 184, + 103, + 123, + 11, + 95, + 128, + 238, + 222, + 104, + 173, + 195, + 2, + 36, + 51, + 141, + 147, + 185, + 166, + 10, + 43, + 187, + 227, + 137, + 49, + 246, + 107, + 243, + 228, + 207, + 103, + 231, + 63, + 129, + 57, + 184, + 113, + 215, + 21, + 31, + 176, + 52, + 221, + 115, + 223, + 144, + 139, + 148, + 54, + 61, + 103, + 234, + 172, + 21, + 132, + 196, + 73, + 141, + 136, + 212, + 154, + 128, + 19, + 211, + 18, + 172, + 150, + 37, + 85, + 74, + 137, + 138, + 121, + 242, + 100, + 57, + 74, + 62, + 56, + 3, + 111, + 212, + 97, + 77, + 159, + 141, + 185, + 93, + 70, + 128, + 54, + 195, + 205, + 179, + 226, + 139, + 109, + 220, + 237, + 217, + 77, + 13, + 3, + 35, + 110, + 20, + 98, + 235, + 88, + 241, + 162, + 166, + 103, + 242, + 242, + 17, + 94, + 136, + 191, + 185, + 230, + 67, + 85, + 158, + 190, + 190, + 9, + 61, + 169, + 36, + 199, + 190, + 63, + 152, + 202, + 8, + 120, + 120, + 35, + 185, + 58, + 169, + 244, + 75, + 99, + 143, + 78, + 183, + 212, + 195, + 200, + 163, + 109, + 204, + 16, + 208, + 151, + 88, + 27, + 152, + 96, + 12, + 164, + 116, + 235, + 31, + 190, + 2, + 19, + 154, + 219, + 105, + 131, + 193, + 144, + 24, + 119, + 225, + 4, + 193, + 112, + 147, + 65, + 222, + 202, + 5, + 159, + 223, + 218, + 105, + 247, + 32, + 197, + 122, + 59, + 239, + 185, + 55, + 217, + 196, + 16, + 88, + 243, + 5, + 235, + 20, + 253, + 4, + 33, + 199, + 84, + 141, + 91, + 79, + 148, + 51, + 159, + 37, + 2, + 15, + 91, + 252, + 190, + 139, + 15, + 37, + 44, + 121, + 65, + 98, + 126, + 226, + 85, + 250, + 211, + 230, + 139, + 47, + 128, + 26, + 109, + 255, + 62, + 110, + 206, + 0, + 34, + 231, + 244, + 226, + 79, + 0, + 176, + 51, + 50, + 3, + 10, + 208, + 88, + 35, + 181, + 139, + 60, + 7, + 101, + 216, + 242, + 38, + 203, + 1, + 110, + 117, + 104, + 177, + 43, + 4, + 62, + 197, + 27, + 85, + 210, + 36, + 161, + 187, + 206, + 89, + 71, + 109, + 130, + 159, + 82, + 126, + 118, + 72, + 70, + 26, + 8, + 34, + 150, + 246, + 54, + 78, + 25, + 56, + 26, + 17, + 166, + 185, + 197, + 98, + 175, + 85, + 9, + 45, + 132, + 129, + 171, + 209, + 53, + 59, + 168, + 59, + 99, + 230, + 168, + 238, + 129, + 29, + 251, + 54, + 1, + 231, + 176, + 12, + 23, + 186, + 149, + 225, + 157, + 4, + 28, + 187, + 149, + 225, + 79, + 9, + 206, + 15, + 32, + 232, + 216, + 150, + 76, + 158, + 57, + 245, + 152, + 192, + 88, + 171, + 49, + 36, + 151, + 109, + 132, + 39, + 103, + 206, + 26, + 179, + 93, + 91, + 208, + 242, + 176, + 93, + 35, + 0, + 87, + 88, + 65, + 119, + 133, + 254, + 126, + 44, + 74, + 111, + 18, + 134, + 176, + 3, + 47, + 77, + 173, + 23, + 79, + 77, + 236, + 16, + 196, + 243, + 222, + 245, + 175, + 244, + 22, + 243, + 201, + 33, + 215, + 125, + 223, + 178, + 33, + 198, + 145, + 207, + 157, + 122, + 247, + 156, + 182, + 110, + 60, + 242, + 185, + 83, + 68, + 247, + 141, + 167, + 62, + 63, + 198, + 13, + 40, + 194, + 5, + 104, + 116, + 118, + 170, + 22, + 193, + 154, + 43, + 135, + 155, + 173, + 87, + 20, + 53, + 129, + 23, + 165, + 110, + 175, + 167, + 162, + 40, + 6, + 113, + 201, + 131, + 52, + 15, + 19, + 234, + 94, + 207, + 207, + 125, + 237, + 89, + 179, + 41, + 143, + 57, + 136, + 207, + 78, + 82, + 188, + 35, + 164, + 122, + 23, + 221, + 101, + 243, + 109, + 155, + 96, + 149, + 195, + 127, + 232, + 174, + 189, + 38, + 12, + 246, + 52, + 229, + 247, + 148, + 38, + 115, + 219, + 218, + 82, + 246, + 219, + 131, + 251, + 135, + 99, + 241, + 82, + 221, + 155, + 18, + 87, + 182, + 242, + 5, + 182, + 115, + 88, + 38, + 202, + 130, + 97, + 210, + 90, + 39, + 10, + 76, + 54, + 76, + 79, + 245, + 219, + 123, + 101, + 57, + 21, + 63, + 239, + 70, + 102, + 158, + 13, + 207, + 8, + 65, + 227, + 124, + 226, + 53, + 145, + 193, + 24, + 180, + 194, + 255, + 195, + 183, + 188, + 109, + 87, + 23, + 140, + 81, + 118, + 240, + 247, + 243, + 58, + 222, + 119, + 86, + 185, + 214, + 27, + 47, + 49, + 148, + 102, + 19, + 218, + 91, + 26, + 47, + 54, + 170, + 12, + 6, + 131, + 46, + 69, + 93, + 79, + 165, + 249, + 215, + 4, + 38, + 213, + 64, + 212, + 7, + 231, + 179, + 98, + 47, + 52, + 157, + 134, + 158, + 150, + 168, + 135, + 5, + 19, + 133, + 152, + 133, + 253, + 249, + 89, + 160, + 161, + 220, + 99, + 7, + 103, + 157, + 141, + 140, + 211, + 208, + 226, + 248, + 242, + 249, + 220, + 155, + 242, + 82, + 102, + 77, + 141, + 40, + 127, + 103, + 81, + 228, + 45, + 254, + 167, + 8, + 248, + 60, + 45, + 243, + 7, + 144, + 220, + 68, + 140, + 175, + 167, + 64, + 245, + 162, + 63, + 251, + 96, + 155, + 246, + 64, + 16, + 29, + 167, + 70, + 91, + 79, + 52, + 112, + 91, + 105, + 91, + 236, + 143, + 188, + 186, + 94, + 57, + 204, + 30, + 98, + 15, + 67, + 1, + 231, + 141, + 248, + 216, + 70, + 120, + 136, + 107, + 147, + 20, + 246, + 60, + 115, + 208, + 226, + 25, + 114, + 109, + 75, + 125, + 158, + 14, + 175, + 113, + 70, + 1, + 60, + 242, + 247, + 164, + 152, + 235, + 229, + 17, + 191, + 236, + 255, + 159, + 73, + 79, + 56, + 162, + 96, + 115, + 229, + 205, + 41, + 171, + 33, + 162, + 96, + 53, + 141, + 97, + 58, + 176, + 127, + 172, + 27, + 253, + 103, + 229, + 173, + 133, + 244, + 132, + 27, + 3, + 130, + 37, + 100, + 8, + 164, + 141, + 47, + 96, + 80, + 44, + 124, + 122, + 227, + 11, + 24, + 20, + 139, + 97, + 185, + 213, + 118, + 185, + 134, + 92, + 194, + 214, + 47, + 58, + 114, + 158, + 201, + 96, + 144, + 96, + 217, + 106, + 172, + 58, + 20, + 29, + 80, + 40, + 173, + 58, + 62, + 138, + 117, + 16, + 86, + 37, + 197, + 244, + 56, + 213, + 246, + 40, + 152, + 165, + 44, + 162, + 135, + 29, + 244, + 238, + 158, + 238, + 127, + 254, + 112, + 79, + 103, + 59, + 107, + 40, + 113, + 16, + 27, + 149, + 36, + 234, + 18, + 219, + 68, + 46, + 80, + 174, + 82, + 117, + 206, + 46, + 125, + 172, + 16, + 220, + 52, + 110, + 72, + 33, + 10, + 82, + 179, + 188, + 137, + 248, + 193, + 232, + 48, + 46, + 77, + 15, + 5, + 143, + 185, + 199, + 219, + 65, + 72, + 189, + 57, + 201, + 70, + 48, + 71, + 174, + 26, + 58, + 245, + 91, + 49, + 88, + 186, + 82, + 124, + 158, + 245, + 142, + 247, + 33, + 58, + 159, + 223, + 236, + 97, + 126, + 17, + 3, + 242, + 104, + 100, + 201, + 101, + 25, + 64, + 141, + 33, + 23, + 103, + 39, + 165, + 1, + 3, + 89, + 34, + 163, + 125, + 143, + 189, + 161, + 17, + 233, + 51, + 23, + 237, + 192, + 30, + 132, + 191, + 63, + 250, + 6, + 246, + 86, + 220, + 66, + 32, + 44, + 157, + 123, + 131, + 24, + 200, + 50, + 141, + 39, + 116, + 157, + 234, + 125, + 172, + 18, + 217, + 197, + 69, + 8, + 56, + 106, + 194, + 190, + 179, + 88, + 144, + 159, + 209, + 45, + 213, + 165, + 215, + 186, + 148, + 35, + 246, + 201, + 28, + 209, + 242, + 204, + 151, + 249, + 67, + 31, + 18, + 2, + 71, + 50, + 223, + 50, + 49, + 107, + 135, + 209, + 182, + 81, + 150, + 1, + 106, + 218, + 105, + 232, + 31, + 92, + 11, + 99, + 95, + 41, + 228, + 190, + 143, + 2, + 30, + 132, + 12, + 127, + 247, + 140, + 160, + 177, + 192, + 49, + 76, + 182, + 251, + 4, + 46, + 33, + 34, + 201, + 139, + 148, + 82, + 31, + 255, + 204, + 70, + 182, + 45, + 184, + 55, + 254, + 148, + 116, + 122, + 23, + 51, + 205, + 8, + 48, + 149, + 148, + 136, + 187, + 253, + 62, + 116, + 19, + 18, + 36, + 218, + 191, + 141, + 167, + 101, + 86, + 132, + 216, + 133, + 247, + 56, + 52, + 37, + 25, + 239, + 135, + 83, + 95, + 148, + 177, + 58, + 243, + 4, + 194, + 23, + 101, + 166, + 107, + 192, + 54, + 27, + 190, + 238, + 33, + 86, + 158, + 156, + 23, + 250, + 73, + 13, + 54, + 140, + 66, + 14, + 83, + 49, + 45, + 221, + 78, + 193, + 23, + 132, + 69, + 236, + 59, + 181, + 199, + 147, + 118, + 245, + 238, + 21, + 104, + 72, + 154, + 194, + 79, + 175, + 235, + 150, + 34, + 34, + 197, + 242, + 188, + 187, + 131, + 174, + 113, + 153, + 38, + 114, + 36, + 75, + 147, + 193, + 97, + 91, + 211, + 104, + 101, + 42, + 195, + 65, + 104, + 228, + 143, + 240, + 109, + 79, + 132, + 109, + 166, + 199, + 4, + 83, + 236, + 204, + 125, + 90, + 12, + 30, + 23, + 214, + 225, + 255, + 112, + 198, + 0, + 33, + 14, + 161, + 74, + 99, + 68, + 135, + 210, + 8, + 161, + 74, + 46, + 9, + 222, + 126, + 253, + 174, + 88, + 158, + 94, + 19, + 111, + 237, + 134, + 89, + 21, + 168, + 201, + 33, + 41, + 98, + 4, + 247, + 122, + 52, + 158, + 220, + 67, + 140, + 51, + 104, + 241, + 102, + 228, + 120, + 43, + 203, + 65, + 215, + 2, + 81, + 78, + 121, + 43, + 167, + 84, + 15, + 1, + 37, + 77, + 53, + 166, + 15, + 199, + 174, + 123, + 36, + 226, + 97, + 147, + 185, + 183, + 2, + 185, + 226, + 74, + 244, + 48, + 133, + 90, + 77, + 137, + 76, + 13, + 198, + 224, + 20, + 85, + 233, + 131, + 52, + 182, + 19, + 28, + 78, + 156, + 70, + 235, + 191, + 178, + 173, + 241, + 183, + 35, + 7, + 236, + 112, + 50, + 156, + 194, + 177, + 241, + 239, + 1, + 39, + 99, + 128, + 14, + 242, + 45, + 79, + 87, + 162, + 111, + 111, + 163, + 177, + 95, + 49, + 157, + 49, + 73, + 13, + 80, + 134, + 53, + 26, + 87, + 203, + 2, + 194, + 101, + 41, + 219, + 227, + 131, + 236, + 12, + 156, + 97, + 200, + 90, + 212, + 183, + 236, + 184, + 195, + 36, + 202, + 93, + 90, + 175, + 120, + 110, + 95, + 171, + 19, + 142, + 14, + 29, + 43, + 226, + 66, + 103, + 35, + 7, + 127, + 13, + 24, + 225, + 142, + 240, + 212, + 212, + 255, + 90, + 133, + 255, + 36, + 80, + 120, + 27, + 29, + 137, + 220, + 79, + 239, + 180, + 151, + 10, + 90, + 11, + 207, + 169, + 233, + 28, + 120, + 216, + 41, + 9, + 241, + 238, + 142, + 75, + 103, + 163, + 253, + 21, + 247, + 76, + 25, + 228, + 14, + 180, + 150, + 205, + 78, + 82, + 9, + 2, + 15, + 74, + 249, + 73, + 7, + 79, + 184, + 85, + 148, + 201, + 200, + 128, + 38, + 141, + 156, + 119, + 70, + 7, + 226, + 252, + 185, + 31, + 4, + 100, + 239, + 38, + 186, + 215, + 178, + 227, + 98, + 69, + 57, + 36, + 233, + 88, + 164, + 80, + 80, + 167, + 219, + 137, + 13, + 80, + 205, + 209, + 165, + 199, + 249, + 66, + 23, + 232, + 8, + 103, + 103, + 39, + 158, + 20, + 222, + 17, + 141, + 196, + 116, + 158, + 22, + 222, + 17, + 41, + 167, + 240, + 210, + 179, + 173, + 50, + 39, + 31, + 170, + 149, + 106, + 20, + 78, + 117, + 32, + 8, + 107, + 117, + 146, + 127, + 36, + 178, + 95, + 61, + 149, + 102, + 60, + 149, + 129, + 188, + 30, + 134, + 191, + 21, + 126, + 151, + 197, + 207, + 15, + 49, + 31, + 27, + 32, + 62, + 26, + 185, + 117, + 226, + 4, + 26, + 93, + 158, + 70, + 2, + 74, + 56, + 35, + 116, + 134, + 203, + 136, + 135, + 51, + 66, + 58, + 171, + 175, + 24, + 64, + 62, + 150, + 196, + 189, + 234, + 121, + 36, + 16, + 143, + 53, + 179, + 143, + 100, + 98, + 160, + 146, + 27, + 182, + 159, + 69, + 64, + 68, + 52, + 143, + 133, + 95, + 100, + 43, + 170, + 225, + 167, + 77, + 193, + 82, + 67, + 150, + 152, + 10, + 37, + 128, + 207, + 219, + 177, + 218, + 151, + 243, + 31, + 106, + 106, + 68, + 115, + 232, + 243, + 28, + 97, + 59, + 223, + 232, + 117, + 173, + 139, + 194, + 117, + 62, + 245, + 47, + 123, + 162, + 225, + 219, + 198, + 31, + 20, + 162, + 65, + 223, + 8, + 104, + 76, + 192, + 101, + 121, + 38, + 100, + 29, + 156, + 84, + 137, + 84, + 174, + 184, + 31, + 188, + 159, + 96, + 18, + 6, + 25, + 232, + 105, + 15, + 188, + 45, + 250, + 134, + 27, + 121, + 252, + 167, + 166, + 16, + 213, + 212, + 217, + 86, + 179, + 0, + 50, + 221, + 98, + 22, + 122, + 34, + 113, + 156, + 0, + 151, + 220, + 18, + 149, + 94, + 69, + 226, + 252, + 110, + 185, + 24, + 139, + 65, + 105, + 220, + 162, + 78, + 182, + 98, + 119, + 130, + 98, + 104, + 46, + 107, + 203, + 232, + 148, + 184, + 139, + 219, + 242, + 157, + 203, + 158, + 240, + 57, + 157, + 164, + 141, + 225, + 89, + 225, + 115, + 106, + 129, + 202, + 254, + 65, + 202, + 158, + 179, + 53, + 106, + 44, + 64, + 238, + 12, + 0, + 152, + 2, + 184, + 216, + 83, + 25, + 111, + 183, + 66, + 154, + 80, + 97, + 18, + 7, + 117, + 160, + 207, + 244, + 99, + 194, + 156, + 138, + 169, + 33, + 219, + 27, + 56, + 228, + 182, + 183, + 194, + 97, + 34, + 174, + 34, + 120, + 239, + 9, + 153, + 84, + 97, + 112, + 145, + 3, + 243, + 81, + 18, + 25, + 242, + 5, + 52, + 188, + 81, + 13, + 16, + 82, + 162, + 16, + 97, + 237, + 144, + 154, + 234, + 105, + 93, + 62, + 222, + 67, + 167, + 173, + 18, + 220, + 106, + 154, + 214, + 204, + 225, + 154, + 174, + 225, + 150, + 221, + 102, + 181, + 65, + 128, + 211, + 211, + 30, + 235, + 175, + 243, + 154, + 35, + 249, + 156, + 222, + 131, + 238, + 30, + 122, + 213, + 218, + 130, + 105, + 218, + 24, + 162, + 27, + 44, + 144, + 197, + 249, + 27, + 121, + 86, + 76, + 69, + 80, + 50, + 142, + 206, + 2, + 156, + 135, + 71, + 98, + 100, + 158, + 156, + 122, + 65, + 165, + 254, + 112, + 36, + 126, + 79, + 253, + 149, + 201, + 19, + 218, + 60, + 60, + 6, + 232, + 228, + 78, + 131, + 204, + 160, + 249, + 153, + 166, + 109, + 143, + 167, + 129, + 213, + 59, + 227, + 176, + 89, + 100, + 244, + 30, + 166, + 111, + 36, + 139, + 225, + 141, + 26, + 150, + 27, + 201, + 66, + 211, + 228, + 240, + 103, + 9, + 33, + 151, + 89, + 1, + 15, + 103, + 105, + 190, + 239, + 65, + 159, + 105, + 94, + 88, + 96, + 21, + 64, + 253, + 97, + 9, + 205, + 19, + 80, + 37, + 213, + 147, + 126, + 111, + 64, + 41, + 214, + 64, + 206, + 83, + 166, + 207, + 213, + 48, + 115, + 121, + 234, + 169, + 118, + 105, + 15, + 189, + 7, + 51, + 223, + 78, + 161, + 110, + 176, + 39, + 189, + 191, + 32, + 179, + 247, + 238, + 160, + 118, + 3, + 170, + 56, + 245, + 137, + 61, + 117, + 183, + 36, + 24, + 162, + 169, + 89, + 21, + 97, + 161, + 195, + 41, + 125, + 57, + 172, + 53, + 227, + 36, + 180, + 48, + 162, + 158, + 186, + 39, + 158, + 107, + 97, + 148, + 230, + 177, + 244, + 52, + 81, + 88, + 53, + 41, + 79, + 45, + 34, + 187, + 68, + 26, + 139, + 134, + 140, + 79, + 114, + 64, + 89, + 232, + 109, + 1, + 11, + 194, + 178, + 169, + 81, + 218, + 245, + 184, + 179, + 222, + 56, + 16, + 120, + 19, + 137, + 188, + 50, + 181, + 253, + 114, + 76, + 129, + 136, + 240, + 238, + 77, + 50, + 138, + 74, + 168, + 223, + 125, + 232, + 22, + 210, + 33, + 223, + 47, + 97, + 184, + 126, + 178, + 21, + 166, + 116, + 200, + 142, + 195, + 88, + 96, + 82, + 145, + 233, + 225, + 6, + 160, + 48, + 209, + 49, + 61, + 86, + 63, + 44, + 89, + 247, + 0, + 197, + 27, + 92, + 128, + 234, + 213, + 63, + 235, + 104, + 13, + 1, + 193, + 21, + 240, + 88, + 155, + 140, + 39, + 66, + 208, + 104, + 166, + 44, + 206, + 143, + 202, + 24, + 65, + 2, + 36, + 166, + 206, + 216, + 93, + 52, + 192, + 169, + 5, + 79, + 127, + 151, + 151, + 243, + 97, + 46, + 48, + 225, + 237, + 56, + 213, + 27, + 107, + 88, + 146, + 21, + 11, + 135, + 167, + 253, + 172, + 154, + 179, + 179, + 111, + 204, + 125, + 102, + 245, + 106, + 19, + 100, + 81, + 192, + 98, + 109, + 55, + 236, + 12, + 234, + 55, + 97, + 208, + 193, + 66, + 182, + 45, + 245, + 97, + 152, + 44, + 141, + 54, + 39, + 52, + 29, + 230, + 178, + 180, + 228, + 248, + 0, + 171, + 218, + 110, + 181, + 17, + 59, + 136, + 121, + 99, + 144, + 28, + 135, + 164, + 159, + 103, + 218, + 207, + 123, + 150, + 154, + 157, + 40, + 247, + 246, + 147, + 118, + 74, + 91, + 180, + 51, + 16, + 199, + 7, + 224, + 194, + 70, + 107, + 234, + 136, + 185, + 33, + 207, + 157, + 186, + 159, + 132, + 210, + 108, + 211, + 98, + 4, + 100, + 118, + 26, + 20, + 243, + 12, + 129, + 227, + 160, + 45, + 234, + 66, + 149, + 156, + 250, + 195, + 5, + 162, + 205, + 149, + 158, + 248, + 185, + 15, + 171, + 121, + 103, + 96, + 90, + 248, + 176, + 122, + 238, + 189, + 35, + 116, + 127, + 242, + 190, + 147, + 68, + 86, + 15, + 252, + 148, + 78, + 35, + 145, + 124, + 216, + 168, + 59, + 11, + 130, + 142, + 81, + 110, + 134, + 249, + 96, + 102, + 124, + 215, + 157, + 175, + 241, + 18, + 60, + 213, + 0, + 217, + 202, + 25, + 36, + 167, + 249, + 200, + 8, + 238, + 51, + 181, + 189, + 121, + 8, + 56, + 123, + 32, + 82, + 124, + 140, + 227, + 172, + 134, + 72, + 98, + 120, + 170, + 120, + 58, + 101, + 224, + 140, + 200, + 151, + 230, + 78, + 6, + 142, + 129, + 175, + 213, + 168, + 149, + 82, + 10, + 229, + 71, + 154, + 167, + 186, + 159, + 108, + 190, + 109, + 44, + 91, + 254, + 134, + 51, + 200, + 75, + 35, + 140, + 82, + 27, + 143, + 28, + 170, + 11, + 86, + 68, + 145, + 37, + 27, + 198, + 118, + 22, + 210, + 54, + 164, + 94, + 167, + 244, + 86, + 164, + 166, + 18, + 26, + 169, + 140, + 93, + 74, + 51, + 150, + 42, + 8, + 184, + 116, + 74, + 238, + 125, + 148, + 22, + 57, + 123, + 147, + 211, + 254, + 210, + 169, + 211, + 171, + 71, + 79, + 40, + 221, + 146, + 123, + 55, + 127, + 11, + 27, + 162, + 49, + 26, + 197, + 152, + 230, + 18, + 157, + 157, + 116, + 52, + 158, + 88, + 87, + 191, + 126, + 128, + 135, + 169, + 74, + 187, + 151, + 188, + 110, + 94, + 76, + 141, + 213, + 75, + 6, + 171, + 61, + 97, + 231, + 108, + 215, + 71, + 32, + 200, + 124, + 107, + 16, + 52, + 229, + 33, + 215, + 1, + 203, + 135, + 93, + 195, + 9, + 198, + 118, + 75, + 8, + 221, + 3, + 201, + 60, + 130, + 138, + 22, + 110, + 57, + 252, + 146, + 118, + 129, + 100, + 219, + 94, + 147, + 79, + 82, + 59, + 55, + 26, + 233, + 165, + 51, + 201, + 17, + 72, + 169, + 12, + 162, + 202, + 141, + 132, + 11, + 117, + 80, + 114, + 78, + 249, + 22, + 141, + 230, + 157, + 117, + 14, + 72, + 165, + 200, + 57, + 91, + 184, + 231, + 136, + 76, + 1, + 109, + 108, + 107, + 47, + 2, + 230, + 165, + 41, + 123, + 180, + 94, + 0, + 182, + 9, + 23, + 103, + 4, + 156, + 56, + 61, + 41, + 222, + 64, + 235, + 54, + 97, + 149, + 4, + 139, + 73, + 82, + 38, + 248, + 65, + 218, + 117, + 249, + 66, + 108, + 231, + 200, + 117, + 187, + 251, + 134, + 18, + 107, + 26, + 15, + 238, + 85, + 98, + 217, + 72, + 49, + 194, + 125, + 146, + 222, + 147, + 181, + 102, + 247, + 218, + 214, + 0, + 82, + 73, + 251, + 125, + 167, + 155, + 11, + 1, + 211, + 133, + 140, + 221, + 247, + 187, + 76, + 49, + 9, + 168, + 52, + 186, + 149, + 50, + 69, + 117, + 139, + 105, + 154, + 214, + 1, + 157, + 178, + 154, + 237, + 213, + 95, + 192, + 179, + 205, + 87, + 39, + 168, + 231, + 230, + 0, + 167, + 162, + 48, + 6, + 83, + 226, + 236, + 17, + 178, + 95, + 162, + 114, + 223, + 159, + 242, + 107, + 230, + 251, + 25, + 68, + 25, + 86, + 96, + 146, + 199, + 208, + 159, + 6, + 37, + 27, + 12, + 156, + 169, + 181, + 193, + 19, + 114, + 200, + 54, + 3, + 152, + 1, + 41, + 47, + 221, + 14, + 177, + 11, + 114, + 192, + 121, + 19, + 203, + 191, + 201, + 120, + 169, + 90, + 213, + 223, + 148, + 38, + 244, + 53, + 136, + 209, + 223, + 13, + 99, + 185, + 131, + 176, + 55, + 246, + 208, + 36, + 162, + 218, + 214, + 124, + 158, + 201, + 245, + 16, + 127, + 113, + 143, + 99, + 153, + 143, + 247, + 226, + 88, + 115, + 129, + 118, + 6, + 141, + 201, + 18, + 48, + 45, + 250, + 40, + 151, + 142, + 102, + 85, + 106, + 200, + 53, + 221, + 227, + 41, + 253, + 137, + 1, + 29, + 211, + 192, + 151, + 83, + 250, + 147, + 3, + 9, + 91, + 186, + 138, + 191, + 109, + 168, + 147, + 220, + 84, + 111, + 127, + 69, + 131, + 113, + 226, + 110, + 157, + 89, + 209, + 11, + 44, + 80, + 253, + 211, + 42, + 252, + 82, + 108, + 80, + 133, + 217, + 23, + 43, + 204, + 33, + 188, + 18, + 217, + 63, + 157, + 39, + 47, + 67, + 143, + 116, + 187, + 28, + 93, + 185, + 210, + 155, + 43, + 156, + 192, + 26, + 100, + 87, + 97, + 75, + 141, + 212, + 200, + 5, + 54, + 9, + 46, + 165, + 164, + 154, + 231, + 55, + 60, + 130, + 138, + 133, + 253, + 140, + 33, + 111, + 110, + 16, + 150, + 165, + 141, + 79, + 48, + 164, + 177, + 172, + 41, + 195, + 141, + 191, + 158, + 175, + 38, + 44, + 11, + 45, + 199, + 184, + 138, + 55, + 110, + 99, + 70, + 4, + 134, + 235, + 137, + 66, + 46, + 67, + 55, + 198, + 2, + 14, + 127, + 217, + 45, + 116, + 195, + 186, + 196, + 78, + 251, + 6, + 63, + 117, + 221, + 90, + 210, + 14, + 202, + 170, + 108, + 95, + 215, + 247, + 36, + 8, + 102, + 87, + 86, + 23, + 123, + 225, + 180, + 70, + 212, + 221, + 7, + 56, + 99, + 30, + 73, + 91, + 129, + 232, + 229, + 51, + 144, + 237, + 15, + 120, + 91, + 131, + 85, + 61, + 180, + 67, + 219, + 213, + 200, + 194, + 24, + 69, + 83, + 230, + 20, + 84, + 80, + 112, + 93, + 62, + 223, + 97, + 81, + 112, + 45, + 207, + 183, + 155, + 4, + 99, + 224, + 99, + 89, + 163, + 15, + 7, + 133, + 67, + 168, + 197, + 13, + 61, + 235, + 65, + 62, + 204, + 178, + 93, + 161, + 206, + 33, + 203, + 105, + 50, + 152, + 205, + 78, + 23, + 227, + 233, + 224, + 130, + 233, + 236, + 220, + 231, + 158, + 110, + 195, + 178, + 79, + 36, + 84, + 219, + 156, + 153, + 9, + 107, + 121, + 122, + 222, + 60, + 229, + 204, + 68, + 196, + 84, + 236, + 211, + 59, + 20, + 176, + 114, + 220, + 202, + 69, + 250, + 48, + 50, + 216, + 96, + 142, + 180, + 202, + 56, + 133, + 27, + 22, + 44, + 29, + 41, + 142, + 179, + 239, + 140, + 249, + 65, + 169, + 160, + 129, + 66, + 12, + 94, + 141, + 238, + 1, + 129, + 66, + 220, + 250, + 169, + 219, + 190, + 7, + 229, + 61, + 37, + 31, + 84, + 5, + 251, + 161, + 3, + 105, + 211, + 25, + 75, + 52, + 28, + 80, + 168, + 145, + 238, + 30, + 212, + 23, + 55, + 201, + 131, + 150, + 182, + 237, + 58, + 206, + 228, + 222, + 17, + 190, + 133, + 173, + 176, + 197, + 100, + 160, + 49, + 83, + 108, + 245, + 143, + 199, + 139, + 136, + 60, + 98, + 229, + 70, + 247, + 183, + 91, + 30, + 49, + 41, + 111, + 149, + 194, + 165, + 189, + 147, + 85, + 47, + 201, + 89, + 139, + 78, + 53, + 188, + 65, + 26, + 221, + 172, + 85, + 39, + 144, + 167, + 248, + 209, + 165, + 64, + 132, + 75, + 182, + 51, + 199, + 118, + 181, + 51, + 8, + 65, + 125, + 247, + 58, + 98, + 139, + 200, + 77, + 27, + 75, + 255, + 148, + 146, + 142, + 178, + 61, + 10, + 103, + 117, + 35, + 46, + 96, + 207, + 49, + 198, + 195, + 98, + 152, + 4, + 10, + 233, + 196, + 65, + 74, + 246, + 51, + 88, + 190, + 205, + 96, + 198, + 32, + 4, + 22, + 223, + 52, + 236, + 167, + 214, + 121, + 88, + 159, + 27, + 194, + 179, + 42, + 34, + 57, + 96, + 125, + 105, + 69, + 87, + 36, + 98, + 234, + 226, + 15, + 237, + 177, + 44, + 194, + 150, + 72, + 230, + 24, + 91, + 48, + 132, + 55, + 193, + 16, + 191, + 239, + 39, + 179, + 141, + 181, + 130, + 227, + 176, + 198, + 179, + 175, + 174, + 186, + 146, + 220, + 55, + 31, + 237, + 31, + 160, + 175, + 29, + 156, + 8, + 231, + 124, + 223, + 42, + 48, + 71, + 132, + 54, + 114, + 138, + 78, + 30, + 19, + 48, + 134, + 77, + 126, + 238, + 137, + 254, + 168, + 238, + 42, + 74, + 194, + 67, + 76, + 132, + 34, + 92, + 112, + 106, + 35, + 59, + 151, + 104, + 70, + 101, + 28, + 235, + 113, + 114, + 95, + 227, + 14, + 241, + 124, + 224, + 69, + 126, + 148, + 101, + 175, + 14, + 88, + 54, + 184, + 209, + 142, + 153, + 44, + 194, + 224, + 10, + 140, + 190, + 86, + 255, + 28, + 210, + 35, + 74, + 168, + 100, + 155, + 55, + 97, + 64, + 203, + 83, + 231, + 150, + 195, + 113, + 88, + 183, + 227, + 130, + 126, + 128, + 8, + 138, + 105, + 129, + 243, + 108, + 12, + 40, + 96, + 22, + 24, + 65, + 14, + 200, + 206, + 103, + 149, + 150, + 103, + 223, + 176, + 230, + 12, + 174, + 99, + 29, + 32, + 130, + 141, + 182, + 43, + 22, + 11, + 75, + 222, + 96, + 124, + 56, + 122, + 235, + 107, + 45, + 252, + 182, + 220, + 200, + 97, + 78, + 74, + 213, + 101, + 167, + 114, + 163, + 208, + 92, + 167, + 30, + 227, + 111, + 116, + 6, + 202, + 80, + 219, + 10, + 122, + 251, + 124, + 38, + 7, + 119, + 24, + 139, + 59, + 61, + 112, + 9, + 97, + 122, + 30, + 237, + 181, + 223, + 29, + 221, + 174, + 152, + 223, + 46, + 40, + 190, + 38, + 162, + 77, + 244, + 247, + 74, + 151, + 44, + 194, + 241, + 172, + 209, + 64, + 57, + 130, + 160, + 125, + 140, + 116, + 187, + 230, + 31, + 47, + 52, + 59, + 174, + 88, + 151, + 30, + 230, + 242, + 4, + 22, + 237, + 141, + 45, + 70, + 9, + 44, + 154, + 103, + 218, + 98, + 220, + 229, + 189, + 212, + 175, + 206, + 33, + 160, + 49, + 65, + 9, + 27, + 213, + 197, + 193, + 182, + 8, + 237, + 207, + 222, + 54, + 83, + 3, + 102, + 21, + 197, + 237, + 99, + 232, + 252, + 234, + 43, + 220, + 103, + 59, + 185, + 35, + 67, + 194, + 125, + 54, + 231, + 142, + 148, + 22, + 57, + 213, + 77, + 157, + 17, + 98, + 214, + 4, + 182, + 206, + 208, + 229, + 224, + 85, + 8, + 23, + 161, + 203, + 87, + 56, + 98, + 247, + 154, + 189, + 43, + 166, + 72, + 15, + 228, + 168, + 179, + 136, + 96, + 145, + 104, + 13, + 166, + 252, + 243, + 83, + 126, + 68, + 56, + 21, + 83, + 158, + 122, + 120, + 41, + 170, + 234, + 126, + 20, + 42, + 105, + 206, + 81, + 78, + 154, + 185, + 70, + 93, + 153, + 6, + 208, + 183, + 65, + 36, + 7, + 102, + 178, + 165, + 61, + 76, + 179, + 37, + 200, + 93, + 204, + 204, + 30, + 176, + 33, + 97, + 187, + 134, + 186, + 135, + 108, + 140, + 38, + 100, + 163, + 211, + 212, + 184, + 59, + 42, + 57, + 144, + 34, + 247, + 70, + 147, + 21, + 25, + 48, + 99, + 161, + 125, + 170, + 200, + 188, + 70, + 2, + 41, + 121, + 224, + 71, + 243, + 39, + 84, + 68, + 100, + 152, + 198, + 20, + 29, + 114, + 61, + 38, + 140, + 57, + 48, + 117, + 234, + 253, + 144, + 137, + 116, + 70, + 148, + 37, + 28, + 225, + 133, + 230, + 157, + 137, + 58, + 68, + 176, + 124, + 230, + 137, + 172, + 191, + 95, + 131, + 106, + 82, + 1, + 94, + 140, + 141, + 89, + 74, + 129, + 125, + 136, + 43, + 166, + 216, + 199, + 119, + 159, + 3, + 52, + 20, + 216, + 26, + 125, + 59, + 104, + 76, + 16, + 230, + 239, + 55, + 5, + 14, + 77, + 101, + 105, + 128, + 10, + 119, + 26, + 152, + 112, + 240, + 255, + 162, + 148, + 223, + 72, + 135, + 46, + 1, + 185, + 3, + 80, + 183, + 10, + 42, + 212, + 119, + 4, + 7, + 123, + 35, + 160, + 224, + 3, + 150, + 104, + 122, + 100, + 230, + 15, + 226, + 210, + 135, + 15, + 9, + 146, + 116, + 90, + 235, + 174, + 176, + 18, + 182, + 220, + 90, + 183, + 61, + 88, + 247, + 123, + 21, + 80, + 34, + 3, + 76, + 176, + 51, + 161, + 87, + 3, + 139, + 224, + 28, + 9, + 220, + 118, + 96, + 253, + 161, + 116, + 186, + 173, + 216, + 60, + 103, + 179, + 34, + 28, + 64, + 6, + 81, + 99, + 252, + 154, + 76, + 141, + 20, + 203, + 20, + 184, + 59, + 116, + 34, + 156, + 19, + 166, + 89, + 42, + 78, + 59, + 55, + 203, + 93, + 156, + 75, + 80, + 246, + 179, + 120, + 63, + 166, + 48, + 12, + 183, + 92, + 229, + 220, + 189, + 228, + 20, + 18, + 25, + 96, + 152, + 155, + 233, + 63, + 169, + 142, + 183, + 25, + 27, + 1, + 46, + 112, + 99, + 211, + 64, + 117, + 192, + 28, + 154, + 102, + 124, + 53, + 82, + 231, + 90, + 141, + 150, + 116, + 40, + 12, + 147, + 70, + 153, + 135, + 142, + 9, + 147, + 45, + 85, + 213, + 125, + 95, + 180, + 210, + 48, + 148, + 133, + 150, + 54, + 243, + 78, + 177, + 156, + 56, + 108, + 140, + 212, + 29, + 112, + 215, + 214, + 248, + 240, + 158, + 216, + 226, + 23, + 116, + 154, + 160, + 240, + 138, + 225, + 78, + 97, + 206, + 110, + 245, + 168, + 69, + 199, + 125, + 206, + 70, + 203, + 113, + 11, + 94, + 134, + 71, + 147, + 249, + 186, + 122, + 244, + 151, + 158, + 88, + 44, + 7, + 3, + 67, + 14, + 250, + 155, + 15, + 14, + 84, + 50, + 99, + 225, + 55, + 8, + 113, + 186, + 148, + 62, + 93, + 138, + 249, + 75, + 19, + 135, + 242, + 116, + 124, + 230, + 201, + 55, + 67, + 181, + 189, + 102, + 159, + 139, + 48, + 131, + 77, + 94, + 206, + 201, + 40, + 208, + 97, + 233, + 115, + 171, + 17, + 48, + 242, + 211, + 223, + 87, + 227, + 223, + 2, + 145, + 153, + 162, + 93, + 177, + 7, + 150, + 185, + 135, + 62, + 140, + 247, + 12, + 137, + 103, + 151, + 215, + 74, + 165, + 107, + 57, + 136, + 51, + 41, + 41, + 13, + 87, + 210, + 36, + 26, + 12, + 140, + 7, + 176, + 163, + 55, + 182, + 100, + 195, + 215, + 92, + 56, + 23, + 16, + 148, + 252, + 41, + 182, + 162, + 244, + 172, + 69, + 33, + 71, + 147, + 107, + 76, + 96, + 162, + 176, + 246, + 105, + 186, + 219, + 201, + 192, + 83, + 86, + 26, + 231, + 244, + 199, + 51, + 76, + 165, + 48, + 204, + 87, + 229, + 198, + 45, + 158, + 216, + 96, + 146, + 83, + 110, + 67, + 177, + 77, + 241, + 234, + 164, + 145, + 149, + 184, + 207, + 151, + 211, + 248, + 163, + 57, + 59, + 251, + 214, + 52, + 110, + 252, + 164, + 167, + 118, + 164, + 239, + 36, + 205, + 157, + 185, + 149, + 32, + 129, + 205, + 209, + 168, + 72, + 100, + 12, + 143, + 249, + 149, + 246, + 194, + 223, + 240, + 246, + 127, + 18, + 255, + 214, + 69, + 249, + 99, + 81, + 24, + 152, + 19, + 212, + 79, + 101, + 81, + 19, + 198, + 152, + 41, + 206, + 95, + 243, + 76, + 239, + 195, + 41, + 244, + 91, + 228, + 61, + 159, + 166, + 94, + 35, + 56, + 73, + 163, + 141, + 41, + 79, + 133, + 64, + 234, + 119, + 228, + 15, + 181, + 139, + 233, + 97, + 158, + 67, + 68, + 78, + 99, + 154, + 128, + 122, + 120, + 20, + 195, + 21, + 102, + 14, + 56, + 251, + 112, + 148, + 248, + 30, + 212, + 78, + 83, + 92, + 26, + 192, + 57, + 138, + 242, + 142, + 16, + 145, + 199, + 199, + 113, + 6, + 239, + 5, + 81, + 109, + 161, + 247, + 18, + 131, + 204, + 195, + 196, + 183, + 3, + 112, + 40, + 148, + 27, + 167, + 204, + 32, + 4, + 196, + 217, + 216, + 69, + 15, + 12, + 15, + 39, + 62, + 223, + 78, + 46, + 45, + 31, + 85, + 113, + 190, + 78, + 77, + 124, + 7, + 81, + 227, + 68, + 83, + 138, + 116, + 82, + 73, + 39, + 218, + 51, + 100, + 232, + 128, + 132, + 36, + 62, + 58, + 253, + 130, + 217, + 35, + 229, + 93, + 182, + 130, + 20, + 119, + 117, + 67, + 189, + 186, + 24, + 181, + 56, + 88, + 75, + 58, + 147, + 78, + 61, + 27, + 227, + 100, + 109, + 41, + 27, + 106, + 223, + 1, + 228, + 108, + 87, + 211, + 25, + 49, + 30, + 214, + 152, + 72, + 165, + 115, + 133, + 119, + 99, + 78, + 207, + 43, + 31, + 213, + 118, + 251, + 164, + 240, + 165, + 61, + 205, + 229, + 114, + 152, + 142, + 157, + 32, + 19, + 35, + 44, + 225, + 20, + 100, + 58, + 219, + 6, + 3, + 198, + 195, + 162, + 173, + 121, + 14, + 227, + 225, + 176, + 180, + 84, + 252, + 189, + 210, + 204, + 60, + 124, + 192, + 86, + 170, + 18, + 62, + 53, + 172, + 81, + 208, + 65, + 169, + 151, + 220, + 246, + 62, + 216, + 26, + 189, + 103, + 203, + 129, + 141, + 27, + 93, + 28, + 146, + 164, + 247, + 3, + 167, + 152, + 110, + 113, + 67, + 40, + 141, + 38, + 198, + 241, + 110, + 43, + 154, + 220, + 150, + 129, + 123, + 20, + 163, + 59, + 248, + 216, + 234, + 114, + 235, + 41, + 3, + 79, + 158, + 248, + 190, + 108, + 23, + 200, + 64, + 40, + 163, + 145, + 87, + 201, + 4, + 52, + 108, + 164, + 132, + 11, + 107, + 247, + 170, + 232, + 234, + 65, + 77, + 64, + 179, + 78, + 118, + 144, + 49, + 16, + 143, + 156, + 28, + 84, + 149, + 160, + 205, + 169, + 92, + 35, + 172, + 228, + 167, + 54, + 250, + 13, + 204, + 216, + 116, + 48, + 231, + 64, + 84, + 216, + 254, + 89, + 107, + 116, + 13, + 96, + 97, + 111, + 204, + 120, + 143, + 140, + 50, + 65, + 245, + 212, + 83, + 162, + 116, + 44, + 110, + 243, + 152, + 57, + 20, + 20, + 138, + 131, + 136, + 97, + 103, + 188, + 150, + 34, + 40, + 14, + 76, + 69, + 171, + 223, + 149, + 191, + 116, + 70, + 113, + 156, + 12, + 195, + 195, + 83, + 180, + 53, + 192, + 75, + 114, + 31, + 133, + 237, + 102, + 207, + 33, + 22, + 132, + 35, + 64, + 246, + 198, + 210, + 149, + 137, + 2, + 101, + 79, + 33, + 228, + 3, + 104, + 240, + 89, + 18, + 122, + 151, + 201, + 24, + 43, + 129, + 82, + 148, + 205, + 109, + 3, + 161, + 6, + 186, + 226, + 84, + 117, + 204, + 224, + 190, + 18, + 163, + 210, + 156, + 9, + 205, + 97, + 29, + 168, + 163, + 113, + 25, + 184, + 101, + 127, + 81, + 142, + 21, + 247, + 178, + 92, + 120, + 133, + 186, + 148, + 83, + 134, + 194, + 41, + 6, + 40, + 80, + 4, + 60, + 23, + 138, + 188, + 18, + 171, + 173, + 233, + 75, + 197, + 55, + 29, + 242, + 201, + 132, + 129, + 137, + 27, + 27, + 242, + 34, + 14, + 60, + 53, + 205, + 157, + 123, + 163, + 184, + 255, + 220, + 27, + 39, + 22, + 185, + 67, + 157, + 135, + 71, + 241, + 200, + 62, + 95, + 169, + 18, + 249, + 163, + 226, + 196, + 166, + 0, + 218, + 108, + 204, + 74, + 144, + 72, + 155, + 144, + 194, + 201, + 235, + 66, + 220, + 210, + 181, + 136, + 164, + 251, + 15, + 134, + 63, + 183, + 222, + 62, + 60, + 40, + 51, + 131, + 207, + 86, + 147, + 38, + 118, + 24, + 150, + 155, + 52, + 61, + 46, + 200, + 15, + 124, + 207, + 67, + 194, + 157, + 129, + 206, + 149, + 122, + 118, + 158, + 71, + 111, + 153, + 83, + 26, + 36, + 242, + 184, + 175, + 222, + 133, + 250, + 29, + 226, + 223, + 175, + 97, + 173, + 51, + 223, + 24, + 157, + 51, + 234, + 224, + 70, + 207, + 6, + 93, + 12, + 35, + 207, + 62, + 185, + 152, + 184, + 76, + 158, + 175, + 213, + 239, + 135, + 222, + 152, + 128, + 213, + 87, + 223, + 9, + 34, + 128, + 50, + 161, + 153, + 182, + 213, + 30, + 12, + 57, + 238, + 45, + 136, + 171, + 155, + 218, + 230, + 88, + 158, + 26, + 49, + 19, + 144, + 229, + 161, + 171, + 167, + 184, + 150, + 69, + 224, + 205, + 154, + 207, + 158, + 249, + 253, + 34, + 37, + 247, + 133, + 175, + 223, + 153, + 33, + 148, + 140, + 196, + 98, + 20, + 206, + 246, + 43, + 91, + 19, + 112, + 17, + 126, + 91, + 90, + 220, + 62, + 198, + 241, + 196, + 147, + 229, + 245, + 87, + 29, + 74, + 61, + 130, + 22, + 55, + 41, + 232, + 198, + 91, + 76, + 49, + 231, + 32, + 232, + 142, + 185, + 229, + 91, + 205, + 216, + 132, + 132, + 93, + 234, + 215, + 95, + 161, + 125, + 29, + 150, + 98, + 3, + 214, + 68, + 237, + 244, + 82, + 96, + 64, + 99, + 77, + 79, + 77, + 21, + 223, + 105, + 251, + 102, + 15, + 23, + 203, + 9, + 75, + 40, + 78, + 15, + 109, + 194, + 73, + 129, + 88, + 21, + 83, + 96, + 237, + 105, + 185, + 181, + 139, + 78, + 17, + 12, + 89, + 141, + 73, + 204, + 51, + 120, + 87, + 132, + 43, + 237, + 228, + 127, + 80, + 5, + 28, + 64, + 24, + 17, + 165, + 114, + 203, + 115, + 32, + 140, + 167, + 80, + 74, + 155, + 169, + 157, + 178, + 248, + 167, + 2, + 26, + 58, + 181, + 15, + 247, + 80, + 26, + 205, + 78, + 178, + 87, + 228, + 43, + 35, + 207, + 116, + 102, + 213, + 231, + 16, + 218, + 150, + 109, + 31, + 34, + 85, + 209, + 224, + 93, + 56, + 165, + 241, + 142, + 61, + 26, + 231, + 60, + 211, + 38, + 253, + 31, + 80, + 139, + 136, + 122, + 179, + 100, + 104, + 52, + 206, + 198, + 9, + 99, + 73, + 106, + 167, + 87, + 51, + 105, + 191, + 84, + 219, + 110, + 201, + 33, + 61, + 19, + 41, + 10, + 195, + 48, + 238, + 204, + 43, + 19, + 135, + 201, + 26, + 196, + 247, + 6, + 141, + 238, + 135, + 89, + 103, + 143, + 168, + 41, + 173, + 209, + 236, + 153, + 71, + 212, + 148, + 35, + 135, + 250, + 55, + 237, + 143, + 15, + 129, + 203, + 25, + 163, + 51, + 26, + 87, + 55, + 94, + 124, + 75, + 152, + 92, + 223, + 51, + 162, + 138, + 162, + 135, + 50, + 27, + 219, + 100, + 66, + 6, + 50, + 49, + 157, + 242, + 15, + 45, + 165, + 119, + 197, + 149, + 149, + 44, + 143, + 51, + 48, + 207, + 34, + 79, + 202, + 102, + 39, + 236, + 133, + 192, + 56, + 114, + 59, + 227, + 42, + 82, + 169, + 138, + 96, + 170, + 24, + 156, + 135, + 94, + 44, + 83, + 96, + 74, + 171, + 189, + 214, + 128, + 69, + 152, + 250, + 59, + 126, + 16, + 196, + 167, + 232, + 176, + 230, + 106, + 180, + 67, + 9, + 178, + 28, + 58, + 165, + 28, + 210, + 223, + 235, + 107, + 172, + 70, + 33, + 43, + 232, + 52, + 175, + 141, + 36, + 136, + 32, + 240, + 255, + 254, + 94, + 99, + 29, + 43, + 138, + 223, + 70, + 118, + 181, + 78, + 1, + 91, + 56, + 143, + 143, + 94, + 117, + 172, + 220, + 61, + 124, + 91, + 6, + 164, + 183, + 118, + 81, + 3, + 211, + 90, + 186, + 90, + 227, + 199, + 16, + 144, + 243, + 4, + 135, + 143, + 218, + 174, + 66, + 219, + 73, + 136, + 141, + 188, + 210, + 208, + 118, + 210, + 200, + 19, + 238, + 127, + 232, + 97, + 180, + 245, + 78, + 114, + 91, + 18, + 146, + 254, + 244, + 68, + 248, + 237, + 173, + 196, + 106, + 37, + 104, + 175, + 4, + 143, + 37, + 60, + 146, + 111, + 225, + 30, + 123, + 200, + 150, + 9, + 76, + 11, + 42, + 196, + 14, + 178, + 69, + 93, + 200, + 214, + 247, + 118, + 111, + 190, + 201, + 172, + 125, + 54, + 38, + 120, + 137, + 220, + 98, + 84, + 243, + 232, + 158, + 154, + 102, + 176, + 159, + 254, + 125, + 182, + 202, + 133, + 13, + 90, + 12, + 93, + 223, + 122, + 16, + 54, + 104, + 114, + 86, + 112, + 237, + 178, + 185, + 20, + 136, + 109, + 52, + 66, + 248, + 17, + 71, + 179, + 134, + 231, + 89, + 138, + 141, + 102, + 118, + 251, + 22, + 220, + 149, + 240, + 236, + 16, + 120, + 17, + 12, + 83, + 140, + 149, + 198, + 103, + 157, + 66, + 77, + 10, + 75, + 61, + 77, + 52, + 233, + 111, + 0, + 108, + 3, + 77, + 11, + 100, + 9, + 118, + 98, + 134, + 46, + 160, + 94, + 88, + 234, + 125, + 255, + 137, + 77, + 81, + 164, + 80, + 167, + 97, + 38, + 205, + 1, + 115, + 174, + 92, + 114, + 187, + 141, + 164, + 28, + 238, + 106, + 17, + 136, + 228, + 146, + 194, + 207, + 167, + 44, + 48, + 14, + 58, + 97, + 74, + 157, + 185, + 24, + 228, + 126, + 13, + 57, + 170, + 30, + 239, + 41, + 11, + 204, + 193, + 12, + 211, + 186, + 226, + 212, + 177, + 29, + 131, + 147, + 148, + 194, + 51, + 229, + 225, + 253, + 212, + 177, + 125, + 70, + 10, + 119, + 99, + 36, + 196, + 13, + 47, + 99, + 74, + 57, + 24, + 181, + 67, + 86, + 77, + 129, + 154, + 135, + 53, + 201, + 54, + 212, + 195, + 96, + 210, + 89, + 99, + 68, + 214, + 189, + 19, + 229, + 124, + 228, + 94, + 137, + 154, + 240, + 0, + 90, + 214, + 152, + 90, + 36, + 66, + 192, + 158, + 19, + 50, + 187, + 157, + 154, + 182, + 1, + 174, + 248, + 213, + 214, + 169, + 136, + 181, + 9, + 164, + 35, + 21, + 23, + 29, + 136, + 182, + 122, + 45, + 27, + 34, + 151, + 207, + 208, + 59, + 117, + 162, + 12, + 54, + 102, + 126, + 42, + 180, + 77, + 98, + 215, + 21, + 93, + 250, + 251, + 146, + 27, + 43, + 64, + 188, + 23, + 229, + 15, + 179, + 51, + 95, + 218, + 104, + 45, + 24, + 102, + 103, + 195, + 61, + 253, + 198, + 123, + 127, + 153, + 146, + 240, + 185, + 147, + 19, + 186, + 141, + 55, + 25, + 104, + 180, + 32, + 250, + 238, + 54, + 16, + 44, + 29, + 233, + 9, + 172, + 251, + 226, + 87, + 68, + 130, + 104, + 227, + 193, + 67, + 151, + 1, + 114, + 206, + 194, + 218, + 231, + 236, + 158, + 201, + 221, + 200, + 64, + 145, + 26, + 233, + 1, + 70, + 11, + 116, + 72, + 202, + 163, + 187, + 162, + 43, + 125, + 248, + 249, + 219, + 114, + 146, + 109, + 152, + 10, + 65, + 133, + 26, + 115, + 16, + 50, + 212, + 167, + 172, + 90, + 74, + 149, + 68, + 229, + 230, + 115, + 236, + 77, + 210, + 69, + 143, + 27, + 48, + 85, + 87, + 28, + 48, + 247, + 240, + 163, + 201, + 176, + 84, + 196, + 183, + 240, + 35, + 238, + 50, + 156, + 175, + 250, + 212, + 245, + 3, + 168, + 222, + 178, + 178, + 78, + 43, + 145, + 189, + 102, + 15, + 45, + 1, + 154, + 100, + 141, + 113, + 112, + 225, + 202, + 101, + 98, + 169, + 114, + 228, + 215, + 40, + 121, + 158, + 11, + 241, + 30, + 121, + 235, + 19, + 188, + 212, + 127, + 163, + 196, + 73, + 142, + 246, + 213, + 101, + 96, + 19, + 41, + 77, + 112, + 57, + 76, + 210, + 91, + 224, + 150, + 135, + 230, + 126, + 148, + 42, + 149, + 162, + 127, + 31, + 150, + 123, + 125, + 5, + 61, + 35, + 76, + 30, + 51, + 215, + 165, + 54, + 135, + 193, + 133, + 106, + 15, + 71, + 222, + 213, + 62, + 87, + 237, + 73, + 88, + 58, + 110, + 33, + 78, + 103, + 21, + 107, + 36, + 240, + 57, + 114, + 43, + 126, + 100, + 14, + 62, + 20, + 83, + 147, + 215, + 125, + 218, + 81, + 185, + 142, + 85, + 106, + 138, + 39, + 201, + 114, + 219, + 192, + 12, + 130, + 123, + 206, + 224, + 60, + 229, + 41, + 41, + 12, + 201, + 143, + 178, + 53, + 108, + 88, + 14, + 207, + 125, + 156, + 216, + 186, + 19, + 30, + 28, + 194, + 47, + 188, + 98, + 117, + 110, + 52, + 195, + 102, + 137, + 101, + 81, + 82, + 57, + 219, + 153, + 123, + 5, + 75, + 60, + 116, + 235, + 204, + 197, + 83, + 2, + 89, + 185, + 207, + 200, + 197, + 3, + 203, + 107, + 34, + 251, + 54, + 118, + 52, + 64, + 189, + 177, + 63, + 195, + 131, + 192, + 194, + 91, + 114, + 11, + 117, + 168, + 74, + 166, + 50, + 255, + 253, + 138, + 137, + 189, + 124, + 179, + 74, + 51, + 12, + 189, + 230, + 154, + 141, + 22, + 149, + 97, + 232, + 181, + 6, + 166, + 229, + 75, + 57, + 58, + 101, + 94, + 124, + 201, + 251, + 104, + 181, + 101, + 14, + 16, + 199, + 117, + 52, + 238, + 65, + 1, + 226, + 12, + 90, + 178, + 247, + 242, + 84, + 168, + 195, + 33, + 84, + 179, + 0, + 151, + 52, + 118, + 114, + 130, + 223, + 68, + 55, + 155, + 143, + 13, + 29, + 108, + 137, + 213, + 84, + 239, + 194, + 33, + 5, + 104, + 91, + 74, + 55, + 97, + 98, + 163, + 114, + 81, + 133, + 97, + 14, + 73, + 93, + 24, + 190, + 21, + 199, + 229, + 74, + 26, + 198, + 41, + 7, + 200, + 194, + 84, + 130, + 123, + 49, + 25, + 137, + 123, + 223, + 97, + 23, + 107, + 213, + 94, + 232, + 69, + 53, + 45, + 72, + 110, + 171, + 83, + 169, + 105, + 55, + 146, + 91, + 174, + 212, + 188, + 100, + 212, + 251, + 218, + 103, + 114, + 187, + 129, + 175, + 129, + 33, + 90, + 227, + 61, + 133, + 133, + 168, + 123, + 158, + 106, + 180, + 107, + 8, + 87, + 191, + 224, + 186, + 169, + 254, + 171, + 86, + 158, + 67, + 120, + 35, + 168, + 106, + 99, + 53, + 54, + 47, + 18, + 167, + 167, + 239, + 47, + 176, + 184, + 228, + 244, + 180, + 183, + 237, + 67, + 216, + 151, + 69, + 91, + 249, + 183, + 95, + 88, + 26, + 198, + 52, + 187, + 109, + 135, + 141, + 144, + 40, + 197, + 163, + 219, + 114, + 175, + 26, + 196, + 128, + 98, + 190, + 229, + 238, + 206, + 210, + 229, + 238, + 254, + 118, + 10, + 116, + 82, + 202, + 124, + 192, + 7, + 167, + 250, + 97, + 32, + 139, + 113, + 236, + 19, + 206, + 2, + 243, + 112, + 178, + 45, + 245, + 85, + 121, + 87, + 103, + 83, + 101, + 172, + 224, + 189, + 245, + 193, + 195, + 51, + 88, + 134, + 60, + 198, + 137, + 51, + 212, + 14, + 175, + 160, + 130, + 35, + 79, + 53, + 104, + 8, + 182, + 22, + 53, + 178, + 219, + 137, + 245, + 166, + 173, + 207, + 77, + 55, + 155, + 173, + 237, + 72, + 13, + 80, + 8, + 211, + 19, + 249, + 41, + 206, + 20, + 148, + 89, + 193, + 180, + 77, + 82, + 35, + 151, + 179, + 15, + 54, + 253, + 222, + 104, + 7, + 173, + 1, + 52, + 102, + 202, + 145, + 57, + 5, + 119, + 40, + 162, + 24, + 83, + 238, + 121, + 153, + 218, + 80, + 15, + 233, + 21, + 251, + 218, + 107, + 59, + 210, + 219, + 249, + 24, + 219, + 148, + 154, + 9, + 60, + 27, + 83, + 156, + 56, + 196, + 141, + 182, + 82, + 161, + 200, + 105, + 185, + 249, + 254, + 182, + 123, + 77, + 81, + 63, + 163, + 90, + 160, + 193, + 92, + 36, + 189, + 6, + 233, + 203, + 37, + 213, + 104, + 237, + 219, + 140, + 111, + 247, + 102, + 47, + 64, + 60, + 13, + 49, + 133, + 54, + 1, + 11, + 58, + 201, + 169, + 2, + 139, + 129, + 104, + 165, + 236, + 218, + 55, + 82, + 7, + 75, + 55, + 158, + 11, + 126, + 97, + 13, + 113, + 247, + 24, + 135, + 188, + 92, + 142, + 112, + 88, + 208, + 162, + 71, + 244, + 246, + 5, + 106, + 217, + 189, + 157, + 77, + 201, + 62, + 120, + 50, + 75, + 15, + 208, + 8, + 26, + 220, + 24, + 235, + 172, + 97, + 162, + 165, + 154, + 82, + 127, + 42, + 162, + 78, + 13, + 86, + 124, + 200, + 171, + 175, + 131, + 129, + 208, + 26, + 123, + 15, + 58, + 28, + 104, + 140, + 180, + 83, + 250, + 190, + 18, + 248, + 1, + 196, + 40, + 125, + 240, + 119, + 107, + 224, + 115, + 11, + 238, + 69, + 36, + 220, + 107, + 193, + 61, + 37, + 247, + 42, + 251, + 92, + 210, + 48, + 11, + 61, + 215, + 37, + 112, + 236, + 27, + 110, + 68, + 230, + 1, + 245, + 121, + 35, + 70, + 16, + 1, + 99, + 75, + 167, + 63, + 77, + 45, + 122, + 253, + 108, + 95, + 191, + 87, + 251, + 31, + 156, + 90, + 4, + 17, + 200, + 124, + 146, + 169, + 154, + 213, + 219, + 97, + 103, + 49, + 25, + 183, + 220, + 162, + 89, + 191, + 113, + 189, + 93, + 87, + 88, + 207, + 42, + 145, + 13, + 51, + 162, + 3, + 239, + 230, + 94, + 6, + 132, + 15, + 112, + 198, + 70, + 83, + 183, + 65, + 224, + 43, + 216, + 35, + 223, + 180, + 89, + 93, + 70, + 224, + 237, + 43, + 108, + 246, + 121, + 61, + 118, + 24, + 191, + 183, + 93, + 78, + 58, + 184, + 22, + 110, + 186, + 167, + 84, + 2, + 132, + 193, + 40, + 41, + 8, + 92, + 35, + 7, + 235, + 212, + 95, + 101, + 169, + 104, + 103, + 129, + 237, + 145, + 76, + 110, + 154, + 138, + 208, + 142, + 171, + 226, + 3, + 117, + 139, + 196, + 174, + 212, + 118, + 87, + 139, + 162, + 81, + 157, + 162, + 30, + 219, + 47, + 103, + 77, + 103, + 217, + 143, + 128, + 220, + 103, + 103, + 109, + 79, + 190, + 67, + 82, + 133, + 33, + 16, + 115, + 227, + 155, + 197, + 166, + 64, + 241, + 182, + 102, + 200, + 19, + 61, + 49, + 210, + 44, + 75, + 191, + 109, + 12, + 126, + 0, + 226, + 13, + 175, + 238, + 186, + 173, + 73, + 128, + 35, + 188, + 20, + 55, + 96, + 128, + 83, + 167, + 98, + 1, + 94, + 222, + 104, + 152, + 207, + 107, + 128, + 248, + 76, + 135, + 227, + 218, + 30, + 124, + 201, + 0, + 162, + 46, + 180, + 202, + 210, + 236, + 237, + 2, + 117, + 183, + 122, + 14, + 23, + 212, + 27, + 94, + 221, + 199, + 53, + 144, + 95, + 206, + 83, + 27, + 86, + 18, + 87, + 162, + 232, + 51, + 126, + 201, + 251, + 209, + 162, + 39, + 109, + 206, + 38, + 58, + 80, + 152, + 239, + 78, + 157, + 105, + 46, + 236, + 185, + 249, + 238, + 98, + 76, + 217, + 15, + 151, + 214, + 237, + 75, + 229, + 126, + 53, + 10, + 219, + 230, + 219, + 101, + 137, + 125, + 197, + 74, + 165, + 33, + 162, + 107, + 6, + 215, + 182, + 145, + 142, + 21, + 89, + 86, + 110, + 146, + 22, + 243, + 53, + 79, + 160, + 194, + 19, + 206, + 26, + 140, + 100, + 48, + 132, + 26, + 123, + 65, + 33, + 139, + 152, + 152, + 154, + 1, + 255, + 63, + 3, + 219, + 154, + 75, + 8, + 105, + 27, + 173, + 252, + 146, + 142, + 122, + 173, + 51, + 190, + 2, + 178, + 100, + 133, + 213, + 126, + 173, + 177, + 251, + 66, + 27, + 184, + 248, + 141, + 42, + 218, + 211, + 130, + 215, + 5, + 3, + 103, + 248, + 230, + 95, + 79, + 150, + 250, + 32, + 153, + 125, + 24, + 50, + 152, + 74, + 112, + 118, + 223, + 106, + 205, + 71, + 205, + 255, + 127, + 1, + 36, + 111, + 70, + 111, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 50, + 53, + 49, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 221, + 125, + 219, + 174, + 92, + 199, + 145, + 229, + 59, + 191, + 130, + 63, + 224, + 112, + 92, + 243, + 2, + 24, + 6, + 36, + 89, + 106, + 204, + 67, + 3, + 51, + 3, + 253, + 129, + 123, + 186, + 129, + 1, + 252, + 48, + 61, + 255, + 15, + 12, + 162, + 40, + 15, + 171, + 196, + 136, + 83, + 59, + 227, + 4, + 139, + 84, + 203, + 2, + 104, + 159, + 242, + 41, + 238, + 157, + 59, + 119, + 102, + 198, + 138, + 117, + 161, + 143, + 248, + 17, + 63, + 254, + 137, + 62, + 226, + 199, + 165, + 252, + 241, + 239, + 255, + 248, + 240, + 127, + 62, + 192, + 180, + 219, + 79, + 255, + 249, + 231, + 223, + 255, + 241, + 129, + 62, + 250, + 127, + 254, + 231, + 191, + 220, + 254, + 160, + 143, + 255, + 249, + 31, + 31, + 254, + 252, + 47, + 242, + 241, + 63, + 254, + 239, + 7, + 255, + 124, + 110, + 253, + 72, + 196, + 242, + 241, + 63, + 255, + 215, + 135, + 127, + 255, + 240, + 63, + 126, + 247, + 13, + 147, + 253, + 223, + 191, + 255, + 227, + 246, + 127, + 69, + 255, + 142, + 79, + 255, + 229, + 243, + 119, + 252, + 249, + 191, + 127, + 252, + 203, + 95, + 254, + 252, + 175, + 63, + 253, + 183, + 191, + 125, + 196, + 143, + 127, + 253, + 235, + 143, + 127, + 251, + 233, + 195, + 143, + 191, + 126, + 248, + 243, + 47, + 250, + 145, + 20, + 134, + 255, + 51, + 63, + 254, + 250, + 239, + 31, + 232, + 243, + 165, + 130, + 206, + 189, + 104, + 202, + 254, + 248, + 171, + 127, + 239, + 159, + 72, + 128, + 231, + 20, + 149, + 245, + 241, + 215, + 127, + 251, + 248, + 23, + 68, + 181, + 191, + 126, + 252, + 245, + 127, + 127, + 88, + 64, + 70, + 132, + 115, + 125, + 196, + 223, + 62, + 176, + 79, + 31, + 40, + 172, + 133, + 67, + 237, + 243, + 7, + 186, + 146, + 223, + 80, + 205, + 190, + 106, + 254, + 246, + 85, + 56, + 105, + 79, + 155, + 159, + 127, + 227, + 199, + 236, + 171, + 178, + 191, + 195, + 198, + 237, + 131, + 159, + 127, + 61, + 186, + 113, + 155, + 128, + 50, + 120, + 89, + 48, + 0, + 40, + 149, + 111, + 28, + 4, + 132, + 139, + 7, + 69, + 67, + 186, + 179, + 219, + 253, + 233, + 246, + 129, + 0, + 219, + 32, + 221, + 242, + 142, + 177, + 38, + 170, + 92, + 245, + 50, + 48, + 69, + 162, + 190, + 113, + 88, + 27, + 6, + 49, + 238, + 104, + 28, + 248, + 167, + 100, + 28, + 240, + 135, + 219, + 7, + 12, + 254, + 69, + 74, + 246, + 121, + 28, + 176, + 114, + 13, + 132, + 11, + 198, + 198, + 61, + 119, + 219, + 109, + 17, + 49, + 204, + 193, + 219, + 162, + 145, + 250, + 109, + 14, + 78, + 16, + 94, + 196, + 119, + 87, + 159, + 78, + 218, + 39, + 143, + 247, + 244, + 226, + 148, + 128, + 167, + 108, + 165, + 190, + 251, + 85, + 3, + 81, + 219, + 52, + 163, + 249, + 124, + 252, + 150, + 230, + 15, + 184, + 244, + 250, + 210, + 36, + 152, + 83, + 181, + 239, + 118, + 167, + 193, + 210, + 33, + 209, + 221, + 254, + 54, + 7, + 137, + 129, + 113, + 205, + 137, + 239, + 90, + 248, + 232, + 120, + 125, + 179, + 202, + 253, + 48, + 223, + 94, + 108, + 230, + 182, + 17, + 98, + 190, + 189, + 216, + 209, + 23, + 22, + 86, + 243, + 39, + 227, + 115, + 122, + 109, + 182, + 128, + 100, + 90, + 223, + 244, + 231, + 225, + 79, + 123, + 107, + 56, + 251, + 181, + 244, + 141, + 19, + 65, + 6, + 142, + 190, + 75, + 156, + 10, + 42, + 108, + 209, + 55, + 106, + 182, + 32, + 241, + 221, + 184, + 243, + 221, + 118, + 243, + 67, + 229, + 10, + 4, + 17, + 116, + 119, + 222, + 147, + 160, + 130, + 141, + 133, + 225, + 34, + 155, + 93, + 123, + 233, + 5, + 17, + 154, + 96, + 187, + 115, + 135, + 16, + 38, + 24, + 147, + 102, + 116, + 237, + 15, + 243, + 253, + 254, + 218, + 239, + 150, + 3, + 220, + 247, + 15, + 234, + 167, + 228, + 1, + 222, + 191, + 106, + 155, + 194, + 55, + 237, + 225, + 139, + 30, + 78, + 24, + 162, + 241, + 66, + 116, + 119, + 69, + 250, + 67, + 252, + 115, + 252, + 165, + 52, + 38, + 139, + 128, + 204, + 172, + 111, + 25, + 146, + 101, + 192, + 28, + 191, + 234, + 247, + 39, + 215, + 199, + 209, + 92, + 201, + 240, + 207, + 202, + 37, + 40, + 26, + 12, + 164, + 177, + 218, + 110, + 74, + 113, + 195, + 152, + 18, + 126, + 227, + 249, + 19, + 95, + 135, + 115, + 234, + 97, + 111, + 182, + 49, + 191, + 214, + 41, + 69, + 77, + 128, + 209, + 214, + 236, + 27, + 55, + 155, + 254, + 61, + 107, + 28, + 156, + 201, + 178, + 165, + 241, + 254, + 21, + 125, + 28, + 182, + 251, + 81, + 152, + 67, + 158, + 15, + 116, + 237, + 40, + 174, + 123, + 2, + 173, + 181, + 251, + 86, + 83, + 67, + 2, + 30, + 184, + 37, + 248, + 70, + 249, + 52, + 25, + 22, + 40, + 111, + 30, + 120, + 247, + 78, + 100, + 203, + 108, + 233, + 153, + 27, + 27, + 236, + 205, + 225, + 185, + 170, + 120, + 83, + 130, + 128, + 67, + 37, + 186, + 41, + 253, + 57, + 89, + 53, + 147, + 197, + 174, + 119, + 59, + 180, + 161, + 192, + 115, + 237, + 190, + 45, + 197, + 198, + 2, + 49, + 220, + 225, + 118, + 248, + 233, + 26, + 9, + 193, + 150, + 178, + 79, + 155, + 112, + 101, + 24, + 28, + 31, + 186, + 222, + 189, + 10, + 218, + 222, + 32, + 184, + 181, + 175, + 114, + 196, + 143, + 127, + 18, + 134, + 49, + 217, + 88, + 30, + 11, + 198, + 211, + 55, + 233, + 255, + 31, + 68, + 191, + 248, + 194, + 207, + 87, + 22, + 96, + 45, + 132, + 4, + 184, + 253, + 86, + 222, + 196, + 92, + 126, + 254, + 215, + 159, + 238, + 113, + 23, + 106, + 194, + 93, + 94, + 82, + 102, + 20, + 151, + 38, + 132, + 41, + 138, + 141, + 11, + 183, + 194, + 194, + 129, + 58, + 190, + 33, + 72, + 48, + 4, + 214, + 210, + 29, + 46, + 36, + 69, + 8, + 104, + 194, + 54, + 199, + 29, + 190, + 67, + 136, + 96, + 15, + 208, + 49, + 59, + 119, + 23, + 66, + 4, + 147, + 189, + 38, + 125, + 151, + 8, + 1, + 15, + 216, + 99, + 137, + 245, + 61, + 94, + 18, + 2, + 84, + 20, + 222, + 45, + 55, + 156, + 191, + 188, + 59, + 57, + 161, + 100, + 96, + 97, + 51, + 118, + 64, + 115, + 3, + 225, + 110, + 60, + 223, + 210, + 18, + 160, + 69, + 99, + 124, + 151, + 224, + 1, + 17, + 76, + 28, + 225, + 38, + 91, + 172, + 204, + 201, + 96, + 206, + 21, + 158, + 187, + 138, + 224, + 1, + 11, + 108, + 65, + 236, + 3, + 188, + 152, + 23, + 32, + 50, + 82, + 21, + 61, + 120, + 24, + 248, + 79, + 239, + 238, + 134, + 57, + 13, + 89, + 245, + 247, + 219, + 205, + 151, + 15, + 247, + 225, + 131, + 129, + 95, + 252, + 198, + 49, + 92, + 99, + 160, + 179, + 19, + 237, + 26, + 27, + 76, + 149, + 162, + 87, + 157, + 103, + 118, + 242, + 186, + 31, + 160, + 199, + 26, + 34, + 171, + 243, + 179, + 19, + 235, + 195, + 43, + 125, + 127, + 86, + 251, + 180, + 6, + 12, + 96, + 217, + 118, + 87, + 139, + 212, + 134, + 77, + 152, + 129, + 153, + 26, + 113, + 84, + 225, + 1, + 188, + 69, + 195, + 146, + 227, + 211, + 184, + 45, + 32, + 21, + 153, + 116, + 55, + 108, + 15, + 71, + 89, + 219, + 191, + 31, + 207, + 211, + 107, + 48, + 1, + 154, + 76, + 125, + 235, + 151, + 120, + 157, + 169, + 74, + 250, + 108, + 253, + 186, + 159, + 201, + 15, + 235, + 215, + 61, + 194, + 114, + 191, + 140, + 15, + 29, + 23, + 38, + 201, + 15, + 217, + 180, + 74, + 94, + 212, + 234, + 41, + 15, + 65, + 217, + 102, + 223, + 91, + 164, + 168, + 160, + 123, + 134, + 59, + 137, + 124, + 122, + 182, + 68, + 160, + 136, + 184, + 76, + 159, + 190, + 19, + 92, + 154, + 13, + 42, + 4, + 50, + 103, + 184, + 208, + 21, + 239, + 74, + 12, + 84, + 215, + 142, + 142, + 195, + 50, + 62, + 175, + 132, + 3, + 149, + 159, + 195, + 53, + 79, + 176, + 169, + 47, + 231, + 85, + 13, + 137, + 211, + 225, + 16, + 147, + 47, + 218, + 109, + 195, + 48, + 5, + 166, + 242, + 12, + 95, + 138, + 236, + 166, + 164, + 25, + 50, + 81, + 32, + 26, + 187, + 111, + 253, + 210, + 189, + 110, + 32, + 76, + 244, + 104, + 233, + 202, + 178, + 223, + 0, + 35, + 240, + 4, + 187, + 189, + 16, + 125, + 144, + 9, + 129, + 45, + 244, + 122, + 248, + 203, + 189, + 62, + 193, + 123, + 107, + 75, + 175, + 233, + 132, + 181, + 56, + 196, + 192, + 139, + 215, + 110, + 4, + 219, + 52, + 44, + 50, + 210, + 113, + 207, + 14, + 208, + 217, + 172, + 44, + 29, + 147, + 109, + 33, + 232, + 8, + 7, + 245, + 125, + 248, + 7, + 173, + 105, + 245, + 195, + 241, + 139, + 234, + 73, + 17, + 80, + 180, + 27, + 252, + 243, + 251, + 139, + 46, + 238, + 177, + 19, + 116, + 206, + 205, + 244, + 229, + 23, + 22, + 186, + 169, + 37, + 72, + 107, + 16, + 108, + 33, + 63, + 191, + 190, + 113, + 79, + 17, + 110, + 36, + 8, + 180, + 12, + 109, + 159, + 224, + 70, + 220, + 133, + 27, + 101, + 128, + 118, + 90, + 120, + 150, + 30, + 56, + 11, + 12, + 65, + 105, + 164, + 24, + 240, + 132, + 137, + 44, + 20, + 54, + 48, + 211, + 90, + 119, + 215, + 14, + 112, + 128, + 130, + 218, + 120, + 241, + 226, + 53, + 50, + 107, + 72, + 143, + 72, + 155, + 119, + 105, + 253, + 84, + 122, + 34, + 131, + 97, + 10, + 79, + 235, + 219, + 210, + 199, + 128, + 133, + 58, + 99, + 108, + 253, + 66, + 223, + 164, + 161, + 26, + 223, + 8, + 42, + 134, + 225, + 169, + 162, + 118, + 83, + 91, + 193, + 112, + 134, + 45, + 229, + 2, + 47, + 171, + 119, + 197, + 33, + 186, + 17, + 23, + 164, + 145, + 167, + 228, + 37, + 29, + 110, + 9, + 177, + 150, + 243, + 133, + 244, + 183, + 169, + 92, + 32, + 15, + 45, + 217, + 179, + 145, + 25, + 64, + 186, + 97, + 19, + 141, + 21, + 18, + 80, + 50, + 192, + 34, + 221, + 62, + 179, + 129, + 56, + 39, + 228, + 245, + 214, + 96, + 180, + 22, + 236, + 86, + 90, + 2, + 109, + 241, + 219, + 159, + 227, + 164, + 90, + 249, + 150, + 3, + 87, + 43, + 243, + 88, + 22, + 140, + 53, + 180, + 111, + 49, + 100, + 101, + 152, + 182, + 194, + 6, + 87, + 173, + 47, + 197, + 58, + 96, + 9, + 134, + 224, + 72, + 241, + 26, + 13, + 97, + 35, + 63, + 197, + 37, + 46, + 29, + 29, + 159, + 116, + 126, + 15, + 112, + 137, + 12, + 250, + 168, + 117, + 26, + 121, + 111, + 88, + 72, + 171, + 17, + 207, + 65, + 129, + 53, + 37, + 100, + 34, + 164, + 96, + 84, + 241, + 156, + 204, + 12, + 227, + 54, + 56, + 157, + 16, + 219, + 88, + 228, + 7, + 229, + 147, + 166, + 112, + 202, + 10, + 105, + 174, + 11, + 108, + 57, + 56, + 34, + 141, + 156, + 176, + 193, + 96, + 140, + 18, + 45, + 252, + 250, + 75, + 134, + 165, + 165, + 72, + 44, + 159, + 34, + 177, + 87, + 224, + 186, + 128, + 65, + 117, + 12, + 149, + 45, + 216, + 195, + 194, + 167, + 90, + 132, + 50, + 72, + 0, + 101, + 198, + 4, + 222, + 157, + 128, + 75, + 189, + 36, + 59, + 245, + 194, + 72, + 195, + 126, + 104, + 21, + 122, + 83, + 96, + 226, + 16, + 159, + 57, + 7, + 98, + 139, + 44, + 38, + 5, + 91, + 179, + 179, + 25, + 110, + 11, + 134, + 237, + 240, + 176, + 116, + 15, + 152, + 5, + 207, + 227, + 211, + 91, + 75, + 198, + 239, + 152, + 174, + 23, + 202, + 199, + 75, + 160, + 243, + 253, + 207, + 111, + 188, + 144, + 247, + 157, + 132, + 140, + 38, + 8, + 90, + 39, + 12, + 198, + 55, + 36, + 216, + 222, + 106, + 77, + 108, + 227, + 33, + 119, + 20, + 184, + 148, + 75, + 83, + 99, + 67, + 233, + 128, + 33, + 28, + 46, + 101, + 109, + 156, + 153, + 135, + 41, + 115, + 13, + 1, + 58, + 175, + 118, + 78, + 49, + 135, + 39, + 147, + 230, + 120, + 28, + 193, + 166, + 250, + 149, + 190, + 65, + 240, + 57, + 195, + 242, + 96, + 232, + 208, + 177, + 131, + 225, + 124, + 216, + 82, + 167, + 38, + 141, + 156, + 7, + 140, + 226, + 151, + 183, + 63, + 56, + 188, + 184, + 121, + 43, + 9, + 200, + 21, + 53, + 61, + 119, + 187, + 110, + 21, + 1, + 141, + 128, + 31, + 149, + 138, + 191, + 138, + 172, + 147, + 13, + 50, + 69, + 214, + 155, + 15, + 42, + 66, + 212, + 108, + 127, + 122, + 61, + 244, + 4, + 81, + 147, + 46, + 68, + 45, + 157, + 197, + 181, + 10, + 108, + 128, + 32, + 51, + 133, + 76, + 253, + 226, + 185, + 31, + 65, + 166, + 222, + 166, + 68, + 7, + 161, + 162, + 182, + 17, + 34, + 76, + 93, + 183, + 103, + 219, + 200, + 10, + 99, + 148, + 16, + 208, + 250, + 14, + 74, + 252, + 211, + 215, + 118, + 195, + 146, + 161, + 141, + 116, + 231, + 37, + 176, + 209, + 85, + 74, + 39, + 128, + 105, + 17, + 134, + 51, + 16, + 234, + 108, + 5, + 251, + 74, + 176, + 102, + 204, + 178, + 121, + 213, + 140, + 37, + 218, + 48, + 7, + 173, + 198, + 71, + 66, + 44, + 176, + 68, + 214, + 8, + 171, + 147, + 244, + 242, + 211, + 157, + 227, + 135, + 236, + 55, + 170, + 186, + 216, + 236, + 133, + 41, + 8, + 238, + 252, + 80, + 215, + 171, + 184, + 163, + 49, + 66, + 105, + 72, + 254, + 38, + 166, + 8, + 122, + 250, + 65, + 137, + 27, + 202, + 184, + 192, + 108, + 53, + 202, + 98, + 153, + 216, + 251, + 39, + 244, + 130, + 119, + 151, + 89, + 189, + 240, + 147, + 70, + 40, + 140, + 151, + 51, + 2, + 195, + 162, + 222, + 94, + 244, + 242, + 178, + 46, + 208, + 37, + 161, + 254, + 182, + 10, + 158, + 49, + 152, + 89, + 200, + 16, + 189, + 182, + 173, + 112, + 114, + 230, + 187, + 211, + 89, + 165, + 63, + 207, + 122, + 209, + 173, + 175, + 45, + 111, + 132, + 165, + 141, + 160, + 2, + 111, + 133, + 157, + 148, + 244, + 153, + 82, + 41, + 199, + 98, + 158, + 64, + 109, + 121, + 213, + 139, + 147, + 148, + 136, + 222, + 75, + 127, + 19, + 5, + 36, + 11, + 121, + 154, + 69, + 172, + 74, + 22, + 224, + 154, + 49, + 127, + 228, + 183, + 187, + 189, + 109, + 24, + 124, + 95, + 178, + 103, + 248, + 68, + 171, + 94, + 67, + 38, + 3, + 111, + 147, + 70, + 32, + 114, + 14, + 144, + 49, + 69, + 207, + 196, + 12, + 217, + 11, + 244, + 115, + 13, + 135, + 56, + 70, + 197, + 54, + 152, + 248, + 158, + 210, + 118, + 106, + 245, + 206, + 56, + 198, + 68, + 144, + 75, + 157, + 224, + 119, + 139, + 172, + 84, + 39, + 176, + 140, + 70, + 128, + 92, + 141, + 64, + 48, + 62, + 40, + 125, + 125, + 9, + 234, + 207, + 165, + 75, + 94, + 12, + 60, + 226, + 222, + 117, + 113, + 16, + 214, + 0, + 145, + 29, + 210, + 253, + 83, + 210, + 197, + 219, + 88, + 227, + 151, + 131, + 243, + 32, + 123, + 224, + 123, + 132, + 41, + 131, + 182, + 107, + 32, + 130, + 209, + 6, + 94, + 216, + 136, + 197, + 26, + 11, + 136, + 113, + 220, + 88, + 183, + 78, + 200, + 213, + 100, + 195, + 176, + 198, + 182, + 153, + 169, + 192, + 228, + 193, + 163, + 17, + 70, + 62, + 128, + 104, + 147, + 95, + 168, + 53, + 62, + 205, + 5, + 209, + 75, + 26, + 231, + 189, + 173, + 13, + 98, + 22, + 206, + 251, + 90, + 227, + 211, + 182, + 128, + 242, + 108, + 108, + 130, + 69, + 184, + 103, + 159, + 61, + 81, + 141, + 204, + 193, + 27, + 68, + 100, + 71, + 32, + 98, + 245, + 52, + 241, + 200, + 177, + 187, + 199, + 233, + 210, + 146, + 97, + 190, + 79, + 224, + 119, + 6, + 211, + 173, + 5, + 50, + 145, + 248, + 4, + 165, + 211, + 46, + 159, + 170, + 222, + 170, + 233, + 70, + 68, + 159, + 108, + 33, + 211, + 180, + 88, + 226, + 186, + 40, + 101, + 179, + 240, + 234, + 19, + 2, + 189, + 150, + 133, + 151, + 90, + 129, + 29, + 215, + 225, + 181, + 77, + 221, + 182, + 215, + 124, + 115, + 52, + 218, + 116, + 137, + 215, + 124, + 49, + 105, + 61, + 189, + 169, + 182, + 54, + 72, + 173, + 78, + 217, + 27, + 20, + 55, + 141, + 70, + 240, + 5, + 5, + 116, + 81, + 40, + 104, + 225, + 145, + 53, + 60, + 10, + 79, + 253, + 151, + 228, + 29, + 45, + 178, + 163, + 100, + 194, + 216, + 54, + 27, + 65, + 0, + 183, + 206, + 154, + 99, + 78, + 161, + 103, + 38, + 9, + 250, + 213, + 136, + 156, + 52, + 6, + 232, + 111, + 29, + 158, + 54, + 116, + 13, + 193, + 38, + 29, + 186, + 119, + 85, + 121, + 214, + 7, + 15, + 190, + 8, + 254, + 144, + 55, + 221, + 57, + 52, + 250, + 168, + 226, + 113, + 222, + 116, + 215, + 176, + 123, + 241, + 50, + 72, + 75, + 54, + 32, + 111, + 108, + 148, + 45, + 170, + 0, + 197, + 154, + 206, + 236, + 73, + 229, + 199, + 166, + 172, + 80, + 79, + 213, + 104, + 87, + 212, + 143, + 239, + 247, + 20, + 226, + 205, + 176, + 112, + 135, + 107, + 87, + 21, + 212, + 26, + 176, + 22, + 133, + 216, + 236, + 131, + 27, + 193, + 93, + 181, + 123, + 173, + 110, + 251, + 18, + 8, + 60, + 61, + 2, + 18, + 2, + 143, + 78, + 212, + 83, + 72, + 65, + 196, + 98, + 3, + 165, + 11, + 72, + 212, + 69, + 93, + 235, + 188, + 0, + 147, + 62, + 84, + 181, + 101, + 182, + 153, + 232, + 228, + 70, + 4, + 111, + 48, + 120, + 99, + 245, + 27, + 50, + 140, + 100, + 249, + 172, + 10, + 97, + 181, + 170, + 103, + 214, + 128, + 53, + 44, + 134, + 239, + 175, + 244, + 85, + 31, + 238, + 53, + 91, + 22, + 82, + 226, + 81, + 86, + 7, + 55, + 171, + 87, + 221, + 105, + 200, + 36, + 180, + 20, + 169, + 146, + 205, + 16, + 144, + 45, + 36, + 0, + 191, + 161, + 94, + 77, + 230, + 66, + 81, + 182, + 105, + 2, + 67, + 227, + 246, + 98, + 221, + 51, + 107, + 186, + 13, + 215, + 179, + 197, + 238, + 65, + 115, + 154, + 89, + 132, + 53, + 163, + 84, + 58, + 221, + 69, + 87, + 176, + 17, + 196, + 243, + 54, + 227, + 212, + 208, + 148, + 41, + 101, + 65, + 158, + 147, + 232, + 106, + 85, + 247, + 94, + 176, + 208, + 58, + 161, + 27, + 100, + 88, + 115, + 134, + 4, + 179, + 227, + 213, + 43, + 5, + 169, + 223, + 174, + 122, + 142, + 193, + 189, + 5, + 83, + 176, + 177, + 236, + 54, + 245, + 3, + 2, + 79, + 249, + 175, + 188, + 220, + 217, + 34, + 88, + 27, + 87, + 227, + 176, + 45, + 131, + 61, + 120, + 206, + 239, + 113, + 97, + 184, + 185, + 141, + 105, + 39, + 61, + 58, + 114, + 27, + 203, + 202, + 186, + 243, + 15, + 138, + 54, + 38, + 11, + 140, + 141, + 125, + 177, + 58, + 194, + 225, + 152, + 38, + 232, + 112, + 90, + 244, + 1, + 14, + 103, + 77, + 56, + 156, + 220, + 115, + 103, + 249, + 206, + 184, + 169, + 80, + 103, + 102, + 133, + 87, + 179, + 57, + 148, + 108, + 80, + 19, + 108, + 84, + 89, + 169, + 248, + 147, + 195, + 216, + 29, + 252, + 152, + 119, + 123, + 78, + 3, + 74, + 71, + 174, + 54, + 17, + 231, + 112, + 51, + 123, + 164, + 70, + 238, + 26, + 2, + 205, + 189, + 99, + 47, + 202, + 227, + 25, + 148, + 3, + 48, + 173, + 123, + 19, + 49, + 222, + 216, + 14, + 33, + 227, + 174, + 74, + 24, + 83, + 216, + 107, + 160, + 252, + 215, + 32, + 57, + 210, + 64, + 183, + 145, + 186, + 113, + 137, + 187, + 70, + 104, + 248, + 125, + 42, + 105, + 120, + 136, + 73, + 217, + 216, + 231, + 232, + 109, + 190, + 168, + 212, + 40, + 114, + 123, + 186, + 186, + 175, + 209, + 251, + 130, + 145, + 92, + 221, + 55, + 203, + 86, + 167, + 215, + 94, + 153, + 146, + 94, + 137, + 101, + 0, + 81, + 76, + 254, + 168, + 98, + 87, + 238, + 162, + 176, + 227, + 179, + 107, + 78, + 194, + 191, + 196, + 58, + 120, + 56, + 128, + 188, + 221, + 186, + 63, + 110, + 159, + 76, + 24, + 163, + 209, + 93, + 136, + 23, + 185, + 172, + 63, + 86, + 3, + 229, + 242, + 190, + 20, + 161, + 41, + 53, + 108, + 5, + 39, + 204, + 109, + 141, + 140, + 117, + 33, + 130, + 53, + 98, + 228, + 190, + 175, + 229, + 94, + 187, + 89, + 217, + 96, + 99, + 55, + 102, + 193, + 136, + 122, + 213, + 78, + 225, + 55, + 62, + 49, + 220, + 233, + 178, + 70, + 18, + 95, + 69, + 105, + 52, + 98, + 203, + 50, + 156, + 219, + 182, + 194, + 169, + 126, + 77, + 63, + 21, + 184, + 148, + 31, + 31, + 220, + 4, + 68, + 185, + 81, + 115, + 32, + 123, + 130, + 146, + 134, + 71, + 193, + 12, + 196, + 204, + 153, + 29, + 89, + 177, + 152, + 202, + 45, + 51, + 46, + 85, + 205, + 181, + 255, + 152, + 55, + 230, + 102, + 125, + 187, + 209, + 176, + 90, + 205, + 133, + 41, + 20, + 179, + 252, + 191, + 191, + 210, + 187, + 136, + 201, + 173, + 13, + 58, + 16, + 27, + 233, + 118, + 91, + 192, + 132, + 67, + 123, + 207, + 135, + 18, + 243, + 75, + 182, + 208, + 151, + 111, + 86, + 145, + 70, + 68, + 19, + 246, + 234, + 164, + 135, + 26, + 51, + 160, + 205, + 208, + 250, + 253, + 162, + 133, + 230, + 93, + 91, + 37, + 237, + 33, + 165, + 225, + 5, + 53, + 87, + 115, + 51, + 88, + 36, + 157, + 38, + 252, + 182, + 97, + 173, + 152, + 100, + 252, + 192, + 146, + 93, + 46, + 14, + 136, + 118, + 184, + 135, + 97, + 232, + 213, + 81, + 58, + 155, + 27, + 227, + 121, + 215, + 231, + 97, + 246, + 67, + 122, + 118, + 123, + 66, + 98, + 74, + 27, + 176, + 167, + 71, + 170, + 1, + 56, + 220, + 84, + 232, + 208, + 215, + 203, + 253, + 58, + 204, + 140, + 214, + 9, + 172, + 50, + 190, + 157, + 29, + 124, + 17, + 116, + 242, + 24, + 33, + 234, + 244, + 27, + 116, + 24, + 11, + 99, + 97, + 224, + 171, + 204, + 221, + 117, + 58, + 95, + 96, + 54, + 122, + 192, + 26, + 57, + 95, + 32, + 246, + 154, + 124, + 21, + 97, + 96, + 50, + 32, + 175, + 213, + 120, + 82, + 189, + 1, + 61, + 184, + 194, + 212, + 194, + 215, + 161, + 17, + 5, + 246, + 210, + 92, + 107, + 181, + 18, + 162, + 38, + 172, + 129, + 235, + 29, + 90, + 134, + 3, + 241, + 93, + 48, + 116, + 79, + 109, + 27, + 113, + 146, + 236, + 59, + 141, + 76, + 145, + 65, + 101, + 6, + 155, + 140, + 119, + 163, + 185, + 187, + 109, + 216, + 107, + 198, + 70, + 176, + 47, + 75, + 124, + 156, + 27, + 112, + 140, + 144, + 197, + 248, + 14, + 207, + 122, + 89, + 244, + 189, + 206, + 136, + 99, + 9, + 223, + 132, + 205, + 187, + 81, + 250, + 202, + 194, + 128, + 24, + 23, + 185, + 57, + 33, + 176, + 100, + 223, + 200, + 170, + 192, + 124, + 243, + 123, + 104, + 3, + 155, + 22, + 240, + 30, + 223, + 84, + 64, + 207, + 99, + 249, + 97, + 164, + 177, + 142, + 224, + 201, + 48, + 85, + 66, + 111, + 154, + 75, + 19, + 240, + 190, + 4, + 205, + 16, + 165, + 180, + 54, + 205, + 114, + 178, + 122, + 27, + 159, + 55, + 32, + 73, + 168, + 211, + 221, + 157, + 12, + 54, + 74, + 76, + 134, + 173, + 33, + 74, + 180, + 97, + 79, + 11, + 9, + 101, + 85, + 211, + 47, + 5, + 212, + 73, + 124, + 134, + 10, + 102, + 143, + 170, + 21, + 2, + 117, + 191, + 125, + 25, + 35, + 116, + 24, + 172, + 251, + 237, + 171, + 172, + 208, + 126, + 160, + 248, + 68, + 6, + 129, + 81, + 39, + 203, + 64, + 134, + 221, + 142, + 152, + 29, + 52, + 186, + 26, + 125, + 68, + 54, + 122, + 136, + 117, + 35, + 246, + 44, + 238, + 167, + 142, + 51, + 116, + 182, + 175, + 233, + 21, + 20, + 25, + 216, + 226, + 72, + 164, + 106, + 166, + 128, + 171, + 242, + 8, + 191, + 41, + 196, + 116, + 220, + 29, + 118, + 48, + 118, + 119, + 122, + 134, + 185, + 208, + 120, + 83, + 220, + 37, + 184, + 212, + 111, + 190, + 167, + 166, + 38, + 144, + 116, + 175, + 141, + 163, + 142, + 1, + 3, + 99, + 189, + 96, + 149, + 219, + 133, + 48, + 166, + 198, + 124, + 231, + 83, + 33, + 102, + 179, + 15, + 162, + 161, + 55, + 70, + 27, + 203, + 79, + 244, + 217, + 187, + 247, + 31, + 232, + 129, + 155, + 48, + 248, + 171, + 223, + 25, + 100, + 48, + 96, + 140, + 231, + 249, + 91, + 124, + 1, + 72, + 123, + 146, + 234, + 121, + 122, + 101, + 195, + 115, + 46, + 71, + 40, + 252, + 47, + 222, + 235, + 244, + 156, + 203, + 184, + 214, + 47, + 230, + 89, + 126, + 153, + 207, + 84, + 3, + 192, + 7, + 34, + 48, + 173, + 198, + 217, + 157, + 71, + 63, + 30, + 84, + 142, + 69, + 11, + 110, + 3, + 100, + 98, + 215, + 166, + 158, + 113, + 174, + 166, + 193, + 208, + 169, + 227, + 4, + 28, + 156, + 95, + 217, + 243, + 191, + 80, + 77, + 182, + 139, + 6, + 171, + 135, + 112, + 152, + 211, + 101, + 86, + 249, + 209, + 227, + 68, + 101, + 84, + 204, + 200, + 1, + 149, + 57, + 26, + 177, + 17, + 67, + 48, + 220, + 227, + 80, + 110, + 120, + 37, + 190, + 228, + 253, + 136, + 128, + 35, + 38, + 140, + 161, + 79, + 124, + 221, + 86, + 112, + 123, + 251, + 247, + 72, + 172, + 219, + 75, + 92, + 219, + 30, + 56, + 197, + 113, + 211, + 169, + 104, + 92, + 182, + 192, + 134, + 206, + 176, + 150, + 251, + 108, + 233, + 98, + 99, + 241, + 94, + 23, + 34, + 25, + 159, + 77, + 217, + 47, + 63, + 168, + 173, + 209, + 158, + 73, + 178, + 198, + 146, + 70, + 204, + 132, + 68, + 97, + 43, + 138, + 11, + 220, + 175, + 191, + 163, + 69, + 50, + 149, + 78, + 160, + 225, + 140, + 223, + 70, + 156, + 146, + 128, + 197, + 52, + 86, + 99, + 63, + 209, + 43, + 158, + 144, + 88, + 123, + 141, + 215, + 22, + 3, + 109, + 105, + 60, + 88, + 208, + 26, + 192, + 35, + 142, + 97, + 127, + 163, + 87, + 87, + 131, + 184, + 208, + 28, + 35, + 108, + 52, + 126, + 96, + 220, + 128, + 83, + 248, + 187, + 228, + 196, + 169, + 0, + 175, + 25, + 54, + 17, + 170, + 48, + 229, + 4, + 177, + 189, + 234, + 156, + 184, + 111, + 81, + 251, + 240, + 154, + 30, + 132, + 222, + 9, + 108, + 110, + 242, + 32, + 244, + 176, + 81, + 253, + 42, + 85, + 158, + 199, + 196, + 178, + 134, + 89, + 11, + 117, + 220, + 113, + 238, + 80, + 218, + 245, + 199, + 179, + 253, + 254, + 249, + 240, + 222, + 167, + 19, + 133, + 26, + 1, + 17, + 153, + 10, + 170, + 28, + 239, + 77, + 233, + 224, + 244, + 34, + 211, + 107, + 3, + 238, + 213, + 88, + 239, + 58, + 221, + 141, + 102, + 8, + 158, + 17, + 38, + 175, + 44, + 91, + 150, + 233, + 242, + 118, + 208, + 228, + 177, + 220, + 18, + 1, + 13, + 27, + 149, + 183, + 202, + 10, + 196, + 28, + 43, + 111, + 115, + 136, + 251, + 9, + 193, + 240, + 201, + 98, + 247, + 254, + 202, + 95, + 157, + 104, + 169, + 168, + 141, + 216, + 222, + 88, + 64, + 196, + 161, + 223, + 213, + 179, + 169, + 124, + 140, + 160, + 45, + 24, + 123, + 116, + 70, + 190, + 186, + 120, + 121, + 172, + 48, + 242, + 181, + 141, + 231, + 251, + 44, + 61, + 186, + 43, + 86, + 218, + 200, + 64, + 108, + 53, + 118, + 54, + 220, + 134, + 205, + 27, + 116, + 79, + 95, + 233, + 251, + 197, + 253, + 13, + 182, + 92, + 58, + 151, + 175, + 152, + 55, + 220, + 195, + 97, + 25, + 114, + 148, + 209, + 238, + 74, + 221, + 0, + 155, + 3, + 212, + 184, + 113, + 60, + 35, + 224, + 104, + 246, + 73, + 68, + 46, + 197, + 115, + 7, + 121, + 105, + 159, + 242, + 185, + 231, + 226, + 119, + 86, + 113, + 230, + 247, + 54, + 111, + 154, + 204, + 35, + 112, + 74, + 80, + 97, + 170, + 175, + 206, + 7, + 224, + 212, + 234, + 50, + 230, + 202, + 106, + 169, + 87, + 185, + 70, + 177, + 219, + 121, + 12, + 237, + 43, + 153, + 4, + 97, + 219, + 210, + 16, + 43, + 121, + 230, + 5, + 116, + 162, + 114, + 172, + 189, + 84, + 6, + 138, + 58, + 58, + 85, + 228, + 27, + 116, + 142, + 17, + 158, + 223, + 249, + 135, + 59, + 227, + 3, + 66, + 188, + 35, + 220, + 166, + 3, + 49, + 203, + 104, + 210, + 158, + 33, + 32, + 88, + 196, + 167, + 38, + 144, + 7, + 225, + 173, + 198, + 200, + 206, + 46, + 18, + 38, + 145, + 194, + 154, + 26, + 19, + 208, + 138, + 117, + 62, + 45, + 216, + 58, + 194, + 22, + 225, + 131, + 125, + 197, + 195, + 83, + 76, + 57, + 46, + 69, + 24, + 74, + 217, + 181, + 53, + 183, + 76, + 221, + 174, + 251, + 242, + 16, + 29, + 37, + 126, + 71, + 77, + 124, + 34, + 70, + 62, + 38, + 162, + 77, + 176, + 125, + 51, + 129, + 108, + 195, + 107, + 200, + 105, + 66, + 113, + 160, + 103, + 10, + 91, + 165, + 119, + 149, + 150, + 250, + 169, + 230, + 184, + 236, + 216, + 197, + 131, + 26, + 243, + 230, + 221, + 177, + 75, + 68, + 194, + 195, + 195, + 121, + 223, + 35, + 223, + 193, + 155, + 185, + 231, + 158, + 208, + 40, + 212, + 232, + 104, + 194, + 230, + 152, + 154, + 132, + 93, + 239, + 135, + 101, + 12, + 247, + 252, + 74, + 134, + 211, + 236, + 101, + 131, + 72, + 99, + 200, + 31, + 123, + 217, + 128, + 22, + 135, + 252, + 29, + 187, + 82, + 93, + 104, + 160, + 116, + 72, + 236, + 232, + 22, + 18, + 209, + 40, + 248, + 189, + 133, + 69, + 74, + 28, + 126, + 92, + 228, + 61, + 241, + 240, + 78, + 93, + 35, + 206, + 34, + 232, + 141, + 186, + 248, + 40, + 116, + 73, + 178, + 240, + 88, + 165, + 103, + 30, + 247, + 173, + 150, + 113, + 50, + 9, + 12, + 87, + 40, + 164, + 174, + 194, + 77, + 206, + 254, + 194, + 176, + 112, + 206, + 99, + 13, + 178, + 137, + 156, + 22, + 245, + 105, + 193, + 92, + 76, + 108, + 218, + 174, + 234, + 109, + 212, + 120, + 121, + 198, + 228, + 26, + 177, + 121, + 102, + 10, + 24, + 202, + 233, + 235, + 156, + 110, + 89, + 89, + 117, + 150, + 122, + 207, + 92, + 144, + 85, + 70, + 9, + 183, + 199, + 168, + 202, + 45, + 177, + 180, + 17, + 8, + 212, + 57, + 192, + 18, + 39, + 250, + 39, + 115, + 228, + 186, + 120, + 250, + 20, + 157, + 169, + 98, + 42, + 2, + 159, + 92, + 62, + 250, + 48, + 149, + 9, + 34, + 74, + 79, + 29, + 92, + 7, + 38, + 114, + 235, + 123, + 32, + 164, + 24, + 236, + 200, + 128, + 195, + 66, + 25, + 205, + 55, + 12, + 118, + 204, + 235, + 234, + 52, + 230, + 79, + 143, + 127, + 35, + 173, + 246, + 107, + 86, + 241, + 3, + 152, + 81, + 173, + 205, + 68, + 125, + 32, + 184, + 121, + 175, + 68, + 38, + 234, + 199, + 161, + 90, + 207, + 142, + 213, + 167, + 21, + 233, + 134, + 193, + 67, + 189, + 173, + 117, + 6, + 239, + 200, + 45, + 68, + 6, + 233, + 4, + 222, + 217, + 93, + 220, + 163, + 115, + 121, + 68, + 74, + 254, + 40, + 129, + 214, + 236, + 246, + 110, + 51, + 142, + 9, + 44, + 158, + 62, + 7, + 172, + 185, + 227, + 12, + 133, + 151, + 145, + 143, + 8, + 204, + 75, + 214, + 70, + 45, + 62, + 12, + 210, + 25, + 114, + 180, + 94, + 37, + 113, + 113, + 86, + 228, + 90, + 157, + 196, + 231, + 27, + 43, + 18, + 215, + 161, + 111, + 115, + 58, + 1, + 159, + 157, + 88, + 79, + 201, + 66, + 211, + 51, + 49, + 87, + 163, + 79, + 53, + 33, + 121, + 40, + 102, + 18, + 48, + 184, + 147, + 27, + 46, + 4, + 232, + 213, + 100, + 119, + 66, + 64, + 94, + 8, + 54, + 210, + 116, + 196, + 128, + 221, + 20, + 243, + 235, + 194, + 116, + 69, + 229, + 233, + 16, + 152, + 52, + 164, + 145, + 5, + 64, + 99, + 186, + 152, + 85, + 142, + 30, + 239, + 57, + 144, + 158, + 217, + 127, + 23, + 61, + 184, + 17, + 65, + 150, + 133, + 153, + 87, + 85, + 94, + 143, + 130, + 38, + 206, + 254, + 121, + 12, + 197, + 19, + 16, + 231, + 120, + 99, + 81, + 151, + 150, + 53, + 174, + 193, + 30, + 156, + 184, + 81, + 226, + 50, + 177, + 56, + 151, + 143, + 225, + 34, + 246, + 192, + 179, + 16, + 6, + 174, + 2, + 80, + 46, + 228, + 136, + 173, + 133, + 242, + 5, + 213, + 142, + 137, + 37, + 181, + 103, + 232, + 145, + 52, + 195, + 79, + 250, + 125, + 220, + 35, + 118, + 90, + 112, + 236, + 32, + 156, + 229, + 92, + 93, + 72, + 125, + 188, + 132, + 131, + 244, + 154, + 149, + 137, + 152, + 31, + 56, + 59, + 85, + 112, + 30, + 205, + 181, + 215, + 104, + 12, + 191, + 59, + 0, + 0, + 158, + 184, + 61, + 94, + 127, + 44, + 59, + 49, + 249, + 175, + 161, + 77, + 219, + 220, + 40, + 171, + 209, + 86, + 73, + 246, + 6, + 26, + 184, + 11, + 81, + 107, + 193, + 84, + 203, + 6, + 45, + 197, + 95, + 14, + 163, + 74, + 139, + 224, + 148, + 41, + 216, + 228, + 70, + 52, + 85, + 109, + 193, + 80, + 13, + 103, + 251, + 57, + 21, + 165, + 53, + 140, + 83, + 111, + 221, + 77, + 236, + 76, + 108, + 244, + 238, + 230, + 224, + 144, + 213, + 251, + 68, + 6, + 124, + 250, + 55, + 221, + 14, + 185, + 49, + 33, + 190, + 170, + 146, + 32, + 88, + 180, + 99, + 113, + 243, + 105, + 168, + 72, + 81, + 191, + 197, + 3, + 120, + 114, + 99, + 122, + 128, + 9, + 130, + 168, + 134, + 46, + 166, + 105, + 58, + 134, + 158, + 185, + 62, + 157, + 3, + 202, + 173, + 254, + 113, + 238, + 65, + 62, + 86, + 120, + 135, + 125, + 238, + 81, + 217, + 233, + 32, + 175, + 220, + 82, + 87, + 229, + 222, + 76, + 34, + 81, + 96, + 239, + 195, + 241, + 91, + 174, + 82, + 103, + 252, + 81, + 159, + 130, + 236, + 45, + 211, + 47, + 70, + 225, + 53, + 103, + 197, + 113, + 243, + 155, + 29, + 238, + 173, + 112, + 100, + 148, + 229, + 161, + 41, + 219, + 141, + 203, + 79, + 240, + 40, + 194, + 46, + 190, + 81, + 214, + 185, + 110, + 102, + 164, + 176, + 83, + 150, + 61, + 27, + 166, + 145, + 222, + 15, + 170, + 35, + 54, + 79, + 46, + 67, + 52, + 39, + 61, + 255, + 94, + 18, + 139, + 79, + 31, + 214, + 206, + 93, + 237, + 147, + 170, + 54, + 246, + 223, + 102, + 205, + 136, + 206, + 79, + 210, + 202, + 78, + 49, + 29, + 118, + 193, + 73, + 92, + 161, + 23, + 37, + 101, + 3, + 72, + 109, + 57, + 198, + 253, + 246, + 214, + 16, + 76, + 230, + 99, + 18, + 16, + 131, + 234, + 138, + 91, + 202, + 85, + 94, + 209, + 240, + 238, + 86, + 168, + 227, + 175, + 53, + 169, + 221, + 102, + 221, + 54, + 99, + 152, + 199, + 91, + 183, + 89, + 31, + 195, + 201, + 77, + 39, + 99, + 92, + 32, + 133, + 164, + 157, + 130, + 94, + 21, + 216, + 240, + 252, + 187, + 29, + 91, + 29, + 84, + 113, + 167, + 5, + 99, + 80, + 12, + 179, + 189, + 8, + 30, + 38, + 87, + 76, + 72, + 39, + 140, + 68, + 174, + 152, + 192, + 25, + 154, + 25, + 22, + 250, + 19, + 212, + 187, + 129, + 208, + 128, + 41, + 179, + 113, + 125, + 100, + 70, + 207, + 194, + 11, + 241, + 230, + 110, + 15, + 46, + 17, + 64, + 225, + 198, + 166, + 54, + 203, + 4, + 66, + 13, + 25, + 158, + 133, + 227, + 221, + 179, + 135, + 21, + 184, + 47, + 255, + 84, + 53, + 217, + 34, + 110, + 101, + 116, + 185, + 11, + 227, + 190, + 157, + 36, + 223, + 198, + 128, + 239, + 160, + 137, + 227, + 116, + 241, + 211, + 26, + 34, + 231, + 68, + 20, + 21, + 98, + 95, + 252, + 188, + 102, + 84, + 44, + 58, + 221, + 79, + 183, + 211, + 154, + 222, + 8, + 60, + 84, + 150, + 171, + 135, + 140, + 14, + 47, + 167, + 185, + 124, + 37, + 108, + 13, + 253, + 99, + 95, + 9, + 195, + 158, + 230, + 149, + 114, + 34, + 130, + 128, + 142, + 249, + 70, + 230, + 235, + 93, + 99, + 54, + 136, + 51, + 152, + 22, + 238, + 81, + 86, + 255, + 94, + 49, + 220, + 175, + 137, + 127, + 85, + 21, + 144, + 181, + 241, + 12, + 163, + 234, + 30, + 79, + 35, + 20, + 79, + 87, + 4, + 113, + 41, + 190, + 87, + 131, + 176, + 220, + 63, + 194, + 13, + 113, + 27, + 33, + 44, + 1, + 226, + 17, + 242, + 243, + 115, + 52, + 51, + 227, + 122, + 157, + 98, + 195, + 85, + 219, + 244, + 5, + 52, + 52, + 36, + 192, + 213, + 109, + 211, + 89, + 70, + 72, + 217, + 188, + 196, + 102, + 74, + 33, + 245, + 59, + 64, + 41, + 119, + 77, + 127, + 178, + 173, + 28, + 179, + 121, + 252, + 175, + 152, + 141, + 188, + 40, + 27, + 158, + 101, + 186, + 173, + 207, + 162, + 206, + 166, + 59, + 0, + 97, + 227, + 68, + 54, + 127, + 53, + 54, + 135, + 169, + 245, + 169, + 245, + 214, + 253, + 177, + 6, + 229, + 138, + 92, + 181, + 24, + 164, + 231, + 212, + 237, + 103, + 138, + 207, + 8, + 227, + 153, + 19, + 156, + 77, + 114, + 100, + 134, + 78, + 212, + 133, + 241, + 188, + 47, + 190, + 250, + 225, + 248, + 123, + 14, + 23, + 101, + 39, + 203, + 98, + 82, + 237, + 134, + 137, + 171, + 209, + 59, + 201, + 220, + 14, + 27, + 73, + 190, + 169, + 210, + 103, + 78, + 80, + 20, + 105, + 148, + 107, + 17, + 232, + 52, + 142, + 29, + 239, + 178, + 163, + 230, + 183, + 134, + 192, + 92, + 199, + 133, + 182, + 184, + 145, + 156, + 230, + 58, + 46, + 18, + 228, + 240, + 108, + 88, + 5, + 92, + 188, + 174, + 98, + 110, + 180, + 229, + 164, + 91, + 3, + 37, + 201, + 60, + 42, + 100, + 25, + 228, + 76, + 203, + 218, + 115, + 113, + 132, + 218, + 119, + 213, + 198, + 59, + 30, + 211, + 29, + 30, + 57, + 206, + 102, + 79, + 77, + 234, + 70, + 51, + 131, + 233, + 184, + 43, + 126, + 12, + 90, + 136, + 187, + 148, + 52, + 50, + 188, + 60, + 173, + 116, + 141, + 24, + 254, + 236, + 35, + 120, + 229, + 6, + 243, + 205, + 102, + 55, + 118, + 187, + 216, + 70, + 120, + 152, + 199, + 109, + 177, + 14, + 77, + 127, + 106, + 71, + 28, + 30, + 27, + 204, + 90, + 59, + 23, + 83, + 96, + 176, + 236, + 234, + 9, + 39, + 243, + 13, + 127, + 120, + 30, + 53, + 106, + 154, + 35, + 128, + 99, + 118, + 226, + 84, + 123, + 186, + 156, + 63, + 116, + 82, + 235, + 139, + 8, + 59, + 141, + 133, + 75, + 1, + 136, + 34, + 105, + 69, + 7, + 108, + 93, + 216, + 11, + 171, + 96, + 210, + 39, + 120, + 120, + 57, + 249, + 174, + 48, + 185, + 66, + 78, + 201, + 10, + 156, + 175, + 199, + 77, + 145, + 237, + 253, + 205, + 217, + 233, + 112, + 190, + 7, + 236, + 189, + 99, + 49, + 107, + 23, + 111, + 42, + 29, + 229, + 110, + 11, + 28, + 113, + 91, + 143, + 216, + 155, + 184, + 10, + 125, + 32, + 152, + 196, + 57, + 114, + 250, + 183, + 100, + 29, + 57, + 156, + 10, + 85, + 23, + 107, + 1, + 145, + 88, + 138, + 85, + 181, + 251, + 241, + 4, + 66, + 138, + 197, + 93, + 151, + 156, + 157, + 47, + 165, + 155, + 102, + 90, + 185, + 215, + 72, + 226, + 204, + 165, + 135, + 49, + 168, + 81, + 21, + 125, + 185, + 4, + 38, + 209, + 161, + 190, + 198, + 17, + 206, + 110, + 12, + 144, + 78, + 178, + 191, + 57, + 5, + 100, + 37, + 59, + 127, + 150, + 33, + 153, + 2, + 254, + 15, + 135, + 110, + 197, + 247, + 152, + 197, + 29, + 255, + 66, + 109, + 64, + 183, + 192, + 152, + 171, + 17, + 4, + 15, + 8, + 69, + 185, + 144, + 237, + 188, + 20, + 57, + 110, + 23, + 215, + 58, + 78, + 142, + 44, + 163, + 222, + 196, + 241, + 71, + 180, + 28, + 143, + 74, + 176, + 225, + 97, + 134, + 39, + 144, + 13, + 119, + 233, + 196, + 184, + 109, + 216, + 234, + 193, + 118, + 25, + 187, + 166, + 30, + 108, + 71, + 139, + 244, + 109, + 47, + 224, + 37, + 194, + 14, + 176, + 189, + 219, + 122, + 228, + 36, + 53, + 171, + 68, + 229, + 156, + 12, + 203, + 40, + 54, + 107, + 43, + 231, + 201, + 109, + 150, + 21, + 142, + 208, + 171, + 88, + 5, + 126, + 92, + 223, + 203, + 49, + 212, + 78, + 17, + 150, + 204, + 152, + 76, + 82, + 201, + 2, + 75, + 151, + 135, + 23, + 133, + 129, + 185, + 43, + 207, + 70, + 179, + 221, + 235, + 202, + 179, + 167, + 95, + 243, + 179, + 102, + 213, + 183, + 72, + 0, + 165, + 41, + 128, + 218, + 25, + 181, + 229, + 62, + 63, + 68, + 18, + 199, + 208, + 180, + 129, + 24, + 181, + 166, + 20, + 227, + 130, + 181, + 181, + 209, + 116, + 153, + 24, + 246, + 24, + 26, + 26, + 130, + 61, + 179, + 219, + 59, + 102, + 133, + 16, + 76, + 164, + 198, + 83, + 21, + 139, + 193, + 156, + 113, + 30, + 233, + 203, + 68, + 88, + 219, + 77, + 218, + 168, + 113, + 43, + 26, + 226, + 38, + 109, + 97, + 104, + 89, + 183, + 97, + 206, + 49, + 94, + 98, + 192, + 214, + 88, + 44, + 243, + 222, + 32, + 236, + 225, + 151, + 7, + 157, + 0, + 62, + 62, + 21, + 119, + 249, + 98, + 92, + 58, + 45, + 55, + 212, + 84, + 50, + 6, + 108, + 243, + 212, + 232, + 54, + 84, + 98, + 58, + 100, + 19, + 183, + 5, + 158, + 221, + 85, + 129, + 158, + 162, + 188, + 67, + 250, + 97, + 149, + 240, + 50, + 192, + 71, + 67, + 95, + 32, + 69, + 59, + 214, + 246, + 27, + 32, + 113, + 163, + 69, + 163, + 210, + 6, + 92, + 26, + 71, + 33, + 101, + 19, + 57, + 25, + 132, + 148, + 91, + 81, + 219, + 125, + 212, + 60, + 121, + 194, + 90, + 133, + 92, + 10, + 91, + 102, + 200, + 97, + 150, + 75, + 199, + 175, + 75, + 202, + 161, + 26, + 112, + 234, + 194, + 43, + 107, + 165, + 15, + 232, + 38, + 167, + 67, + 135, + 244, + 129, + 135, + 84, + 164, + 251, + 197, + 40, + 101, + 116, + 212, + 248, + 104, + 134, + 3, + 156, + 28, + 220, + 72, + 138, + 32, + 132, + 177, + 44, + 238, + 15, + 62, + 193, + 35, + 191, + 224, + 175, + 164, + 40, + 122, + 234, + 252, + 244, + 75, + 70, + 175, + 168, + 185, + 212, + 168, + 193, + 196, + 221, + 184, + 159, + 155, + 179, + 2, + 22, + 133, + 139, + 121, + 206, + 113, + 202, + 76, + 140, + 90, + 247, + 115, + 119, + 109, + 110, + 141, + 247, + 180, + 133, + 48, + 37, + 73, + 62, + 72, + 201, + 186, + 53, + 126, + 150, + 35, + 247, + 35, + 126, + 151, + 250, + 140, + 153, + 218, + 130, + 210, + 155, + 237, + 163, + 121, + 195, + 26, + 60, + 125, + 160, + 143, + 252, + 133, + 212, + 117, + 226, + 230, + 177, + 85, + 39, + 192, + 145, + 116, + 113, + 125, + 94, + 101, + 247, + 240, + 90, + 61, + 215, + 107, + 42, + 13, + 231, + 140, + 206, + 97, + 157, + 201, + 147, + 12, + 164, + 75, + 215, + 247, + 152, + 184, + 179, + 6, + 200, + 16, + 108, + 76, + 108, + 219, + 8, + 42, + 134, + 223, + 54, + 204, + 30, + 55, + 24, + 37, + 11, + 100, + 149, + 68, + 36, + 224, + 138, + 179, + 240, + 188, + 93, + 35, + 21, + 16, + 147, + 179, + 187, + 177, + 17, + 103, + 32, + 54, + 167, + 119, + 35, + 135, + 170, + 173, + 98, + 224, + 214, + 1, + 222, + 216, + 137, + 229, + 229, + 50, + 228, + 18, + 84, + 75, + 107, + 129, + 241, + 108, + 140, + 25, + 161, + 237, + 241, + 172, + 59, + 116, + 230, + 126, + 198, + 190, + 234, + 210, + 86, + 58, + 21, + 8, + 91, + 3, + 33, + 152, + 9, + 136, + 181, + 209, + 66, + 151, + 217, + 128, + 90, + 51, + 82, + 152, + 55, + 240, + 88, + 163, + 162, + 255, + 60, + 120, + 36, + 121, + 251, + 191, + 246, + 172, + 198, + 77, + 165, + 217, + 8, + 55, + 240, + 184, + 137, + 52, + 67, + 223, + 135, + 111, + 172, + 230, + 224, + 189, + 96, + 205, + 56, + 129, + 190, + 154, + 33, + 193, + 142, + 214, + 196, + 234, + 134, + 180, + 155, + 95, + 146, + 234, + 9, + 161, + 231, + 175, + 173, + 70, + 155, + 31, + 82, + 207, + 95, + 91, + 71, + 110, + 199, + 53, + 170, + 141, + 203, + 12, + 215, + 205, + 130, + 160, + 235, + 218, + 93, + 102, + 104, + 43, + 68, + 74, + 115, + 25, + 205, + 51, + 41, + 212, + 129, + 18, + 165, + 170, + 8, + 51, + 80, + 11, + 211, + 176, + 170, + 224, + 222, + 6, + 99, + 137, + 181, + 162, + 133, + 113, + 56, + 118, + 101, + 206, + 76, + 153, + 138, + 249, + 99, + 3, + 230, + 236, + 148, + 140, + 171, + 39, + 166, + 42, + 199, + 185, + 18, + 199, + 56, + 225, + 140, + 101, + 155, + 69, + 197, + 128, + 25, + 56, + 197, + 180, + 17, + 99, + 178, + 13, + 50, + 226, + 30, + 233, + 53, + 207, + 228, + 75, + 239, + 68, + 51, + 42, + 165, + 238, + 172, + 213, + 218, + 198, + 83, + 119, + 214, + 34, + 9, + 131, + 37, + 159, + 56, + 107, + 29, + 227, + 95, + 6, + 74, + 22, + 166, + 207, + 190, + 35, + 75, + 108, + 205, + 208, + 139, + 242, + 146, + 49, + 221, + 37, + 40, + 41, + 23, + 26, + 94, + 106, + 115, + 220, + 131, + 118, + 53, + 230, + 216, + 216, + 64, + 107, + 53, + 6, + 13, + 158, + 32, + 56, + 185, + 157, + 225, + 147, + 200, + 170, + 46, + 87, + 180, + 27, + 153, + 153, + 93, + 218, + 115, + 134, + 224, + 12, + 15, + 0, + 219, + 200, + 71, + 8, + 142, + 118, + 33, + 56, + 175, + 42, + 31, + 220, + 51, + 84, + 226, + 48, + 224, + 58, + 195, + 199, + 141, + 140, + 142, + 90, + 141, + 41, + 157, + 35, + 101, + 148, + 125, + 58, + 214, + 137, + 251, + 88, + 163, + 31, + 9, + 127, + 247, + 65, + 23, + 3, + 106, + 32, + 32, + 39, + 97, + 29, + 69, + 67, + 30, + 245, + 84, + 174, + 216, + 213, + 76, + 70, + 162, + 149, + 207, + 235, + 237, + 99, + 85, + 86, + 246, + 118, + 213, + 162, + 211, + 8, + 157, + 184, + 188, + 176, + 147, + 23, + 226, + 43, + 37, + 239, + 29, + 6, + 121, + 9, + 29, + 71, + 19, + 86, + 211, + 223, + 157, + 165, + 60, + 69, + 27, + 253, + 98, + 196, + 5, + 126, + 91, + 194, + 158, + 199, + 31, + 240, + 209, + 79, + 39, + 36, + 119, + 122, + 177, + 208, + 114, + 234, + 95, + 236, + 197, + 242, + 199, + 27, + 31, + 102, + 247, + 36, + 137, + 137, + 124, + 85, + 26, + 142, + 87, + 165, + 225, + 73, + 43, + 13, + 51, + 254, + 76, + 170, + 228, + 181, + 17, + 239, + 117, + 116, + 250, + 146, + 253, + 215, + 205, + 94, + 112, + 162, + 204, + 94, + 179, + 23, + 189, + 237, + 232, + 95, + 238, + 48, + 105, + 57, + 145, + 100, + 230, + 20, + 159, + 237, + 30, + 96, + 52, + 66, + 147, + 164, + 42, + 184, + 225, + 75, + 218, + 50, + 169, + 61, + 92, + 103, + 204, + 222, + 107, + 164, + 106, + 30, + 172, + 95, + 246, + 12, + 223, + 225, + 48, + 211, + 171, + 246, + 49, + 130, + 181, + 247, + 60, + 115, + 152, + 233, + 213, + 41, + 122, + 64, + 250, + 196, + 56, + 76, + 188, + 10, + 40, + 44, + 152, + 115, + 215, + 41, + 144, + 239, + 206, + 161, + 83, + 228, + 219, + 158, + 212, + 88, + 23, + 251, + 137, + 96, + 37, + 174, + 104, + 114, + 170, + 245, + 59, + 150, + 77, + 92, + 240, + 44, + 57, + 177, + 92, + 58, + 86, + 34, + 17, + 160, + 197, + 20, + 141, + 170, + 182, + 201, + 128, + 120, + 134, + 135, + 33, + 254, + 116, + 214, + 93, + 176, + 141, + 199, + 67, + 157, + 152, + 14, + 219, + 133, + 144, + 234, + 107, + 150, + 55, + 69, + 179, + 23, + 220, + 176, + 149, + 194, + 45, + 172, + 90, + 194, + 43, + 196, + 4, + 190, + 90, + 175, + 194, + 237, + 104, + 112, + 105, + 163, + 18, + 207, + 237, + 104, + 200, + 70, + 216, + 97, + 77, + 215, + 227, + 148, + 99, + 89, + 140, + 12, + 211, + 225, + 187, + 75, + 35, + 158, + 29, + 197, + 134, + 255, + 115, + 29, + 118, + 208, + 66, + 236, + 142, + 120, + 146, + 179, + 215, + 211, + 51, + 200, + 57, + 173, + 253, + 216, + 213, + 174, + 136, + 166, + 24, + 144, + 176, + 121, + 32, + 79, + 79, + 188, + 150, + 109, + 96, + 212, + 27, + 59, + 224, + 139, + 120, + 173, + 210, + 225, + 100, + 76, + 16, + 51, + 115, + 86, + 198, + 25, + 226, + 177, + 5, + 150, + 210, + 153, + 61, + 141, + 117, + 1, + 30, + 167, + 60, + 136, + 188, + 59, + 156, + 198, + 240, + 166, + 149, + 66, + 173, + 189, + 176, + 129, + 112, + 91, + 99, + 36, + 166, + 67, + 85, + 139, + 76, + 11, + 44, + 237, + 99, + 254, + 24, + 140, + 129, + 78, + 143, + 106, + 131, + 53, + 24, + 166, + 240, + 12, + 93, + 91, + 114, + 58, + 82, + 10, + 1, + 166, + 70, + 227, + 53, + 3, + 98, + 4, + 85, + 110, + 4, + 185, + 182, + 130, + 145, + 114, + 168, + 245, + 127, + 198, + 178, + 40, + 80, + 89, + 246, + 22, + 109, + 60, + 162, + 221, + 44, + 118, + 134, + 105, + 220, + 208, + 75, + 177, + 56, + 46, + 187, + 218, + 172, + 165, + 141, + 4, + 35, + 242, + 92, + 128, + 129, + 49, + 67, + 225, + 188, + 234, + 79, + 141, + 14, + 78, + 29, + 146, + 138, + 14, + 190, + 243, + 214, + 24, + 238, + 140, + 59, + 159, + 222, + 120, + 226, + 152, + 67, + 119, + 238, + 35, + 84, + 148, + 142, + 162, + 43, + 35, + 53, + 180, + 4, + 173, + 230, + 91, + 185, + 50, + 50, + 228, + 161, + 190, + 204, + 162, + 203, + 17, + 24, + 211, + 221, + 40, + 247, + 100, + 81, + 24, + 28, + 103, + 211, + 23, + 228, + 158, + 151, + 72, + 86, + 151, + 88, + 239, + 197, + 100, + 73, + 239, + 53, + 109, + 109, + 172, + 145, + 221, + 39, + 135, + 199, + 136, + 107, + 228, + 43, + 106, + 251, + 251, + 148, + 162, + 241, + 154, + 88, + 115, + 84, + 96, + 214, + 216, + 214, + 170, + 136, + 14, + 45, + 224, + 61, + 140, + 158, + 66, + 226, + 215, + 152, + 7, + 53, + 181, + 148, + 76, + 24, + 52, + 26, + 115, + 135, + 69, + 61, + 254, + 36, + 38, + 150, + 92, + 9, + 0, + 187, + 4, + 97, + 53, + 207, + 112, + 25, + 46, + 142, + 150, + 209, + 8, + 253, + 77, + 2, + 25, + 161, + 29, + 243, + 177, + 167, + 81, + 113, + 194, + 110, + 39, + 162, + 238, + 78, + 186, + 211, + 54, + 88, + 68, + 51, + 218, + 131, + 216, + 50, + 188, + 238, + 9, + 23, + 228, + 88, + 225, + 53, + 97, + 185, + 61, + 122, + 223, + 1, + 157, + 9, + 214, + 226, + 144, + 175, + 251, + 70, + 155, + 63, + 195, + 80, + 82, + 231, + 152, + 132, + 250, + 82, + 148, + 87, + 25, + 3, + 82, + 167, + 157, + 151, + 218, + 0, + 140, + 211, + 217, + 210, + 195, + 84, + 138, + 72, + 213, + 228, + 128, + 147, + 192, + 76, + 27, + 39, + 172, + 206, + 91, + 176, + 223, + 42, + 150, + 166, + 249, + 115, + 125, + 224, + 177, + 101, + 198, + 110, + 63, + 190, + 132, + 4, + 229, + 216, + 214, + 194, + 213, + 104, + 235, + 224, + 216, + 214, + 90, + 24, + 154, + 55, + 203, + 188, + 67, + 39, + 229, + 158, + 185, + 116, + 127, + 183, + 151, + 80, + 203, + 210, + 66, + 109, + 134, + 96, + 99, + 133, + 109, + 162, + 226, + 221, + 154, + 194, + 80, + 12, + 29, + 90, + 155, + 169, + 78, + 19, + 97, + 107, + 232, + 91, + 94, + 53, + 84, + 118, + 253, + 172, + 134, + 237, + 165, + 43, + 212, + 188, + 0, + 173, + 63, + 134, + 185, + 188, + 29, + 234, + 255, + 227, + 107, + 90, + 19, + 237, + 99, + 116, + 240, + 212, + 3, + 180, + 72, + 253, + 22, + 240, + 204, + 109, + 79, + 82, + 60, + 50, + 32, + 242, + 23, + 108, + 139, + 226, + 25, + 40, + 55, + 186, + 12, + 136, + 10, + 174, + 179, + 231, + 1, + 64, + 85, + 224, + 182, + 171, + 84, + 181, + 1, + 76, + 34, + 141, + 113, + 36, + 3, + 129, + 151, + 221, + 114, + 232, + 58, + 136, + 12, + 199, + 166, + 39, + 205, + 240, + 25, + 161, + 193, + 102, + 210, + 48, + 52, + 162, + 234, + 7, + 244, + 6, + 170, + 85, + 208, + 190, + 205, + 58, + 144, + 228, + 106, + 233, + 62, + 104, + 74, + 65, + 197, + 243, + 214, + 78, + 96, + 208, + 34, + 112, + 100, + 8, + 110, + 23, + 29, + 74, + 189, + 138, + 151, + 111, + 10, + 139, + 100, + 238, + 51, + 15, + 162, + 115, + 97, + 77, + 33, + 63, + 44, + 197, + 245, + 210, + 136, + 247, + 227, + 183, + 163, + 136, + 9, + 177, + 167, + 91, + 107, + 227, + 57, + 195, + 153, + 67, + 134, + 35, + 14, + 158, + 73, + 247, + 171, + 244, + 33, + 244, + 249, + 59, + 228, + 70, + 46, + 79, + 204, + 52, + 143, + 57, + 164, + 12, + 19, + 111, + 118, + 125, + 109, + 172, + 84, + 23, + 59, + 204, + 144, + 59, + 126, + 141, + 162, + 252, + 56, + 64, + 247, + 191, + 226, + 193, + 1, + 23, + 136, + 6, + 116, + 120, + 198, + 231, + 58, + 245, + 102, + 250, + 129, + 165, + 147, + 122, + 179, + 85, + 66, + 146, + 124, + 42, + 116, + 184, + 20, + 211, + 254, + 248, + 65, + 66, + 89, + 42, + 34, + 26, + 203, + 13, + 188, + 102, + 136, + 63, + 84, + 17, + 13, + 247, + 65, + 216, + 97, + 187, + 47, + 221, + 211, + 175, + 105, + 127, + 238, + 253, + 58, + 82, + 42, + 76, + 209, + 248, + 146, + 39, + 236, + 101, + 97, + 168, + 117, + 181, + 73, + 201, + 128, + 54, + 67, + 146, + 102, + 46, + 224, + 74, + 159, + 250, + 204, + 6, + 168, + 118, + 187, + 182, + 96, + 171, + 54, + 250, + 159, + 186, + 91, + 49, + 82, + 120, + 68, + 168, + 154, + 228, + 30, + 208, + 159, + 146, + 95, + 104, + 134, + 52, + 221, + 170, + 198, + 116, + 53, + 246, + 106, + 110, + 86, + 53, + 140, + 161, + 221, + 221, + 19, + 253, + 233, + 49, + 2, + 225, + 93, + 33, + 110, + 236, + 194, + 123, + 236, + 248, + 222, + 113, + 44, + 215, + 249, + 6, + 120, + 113, + 167, + 184, + 131, + 65, + 170, + 69, + 12, + 195, + 52, + 109, + 132, + 165, + 111, + 57, + 81, + 60, + 194, + 206, + 20, + 255, + 152, + 130, + 157, + 201, + 93, + 221, + 251, + 178, + 12, + 190, + 67, + 231, + 139, + 25, + 76, + 6, + 107, + 54, + 30, + 185, + 34, + 69, + 83, + 206, + 90, + 170, + 182, + 223, + 142, + 187, + 62, + 176, + 109, + 221, + 196, + 39, + 71, + 68, + 30, + 115, + 196, + 215, + 229, + 241, + 71, + 160, + 193, + 252, + 234, + 210, + 165, + 230, + 216, + 16, + 2, + 90, + 188, + 26, + 147, + 209, + 216, + 93, + 23, + 117, + 201, + 183, + 53, + 159, + 89, + 203, + 104, + 182, + 154, + 207, + 108, + 155, + 20, + 34, + 127, + 231, + 86, + 9, + 141, + 96, + 77, + 237, + 124, + 235, + 169, + 15, + 99, + 173, + 80, + 62, + 85, + 183, + 38, + 70, + 197, + 21, + 203, + 114, + 238, + 15, + 184, + 250, + 213, + 30, + 187, + 219, + 182, + 204, + 201, + 49, + 98, + 84, + 117, + 130, + 217, + 176, + 84, + 57, + 14, + 114, + 238, + 118, + 29, + 186, + 29, + 125, + 145, + 245, + 189, + 11, + 187, + 71, + 66, + 9, + 83, + 171, + 175, + 178, + 183, + 87, + 183, + 216, + 55, + 124, + 171, + 201, + 85, + 215, + 44, + 141, + 62, + 89, + 180, + 61, + 32, + 209, + 66, + 119, + 193, + 75, + 57, + 197, + 223, + 21, + 192, + 200, + 202, + 192, + 75, + 67, + 123, + 218, + 170, + 143, + 216, + 0, + 177, + 17, + 63, + 244, + 12, + 217, + 207, + 59, + 184, + 105, + 53, + 251, + 68, + 110, + 116, + 140, + 82, + 44, + 152, + 204, + 141, + 209, + 40, + 188, + 189, + 72, + 136, + 59, + 73, + 79, + 209, + 253, + 211, + 227, + 10, + 9, + 80, + 194, + 42, + 172, + 154, + 166, + 76, + 96, + 142, + 45, + 154, + 171, + 134, + 18, + 21, + 210, + 139, + 147, + 108, + 122, + 73, + 47, + 51, + 36, + 163, + 102, + 247, + 84, + 52, + 177, + 49, + 129, + 181, + 173, + 177, + 227, + 38, + 54, + 97, + 143, + 25, + 54, + 144, + 223, + 64, + 209, + 74, + 165, + 188, + 167, + 165, + 26, + 106, + 8, + 59, + 85, + 237, + 141, + 9, + 108, + 142, + 112, + 228, + 143, + 179, + 97, + 142, + 105, + 72, + 69, + 223, + 18, + 66, + 192, + 221, + 9, + 46, + 43, + 41, + 208, + 24, + 33, + 182, + 250, + 192, + 163, + 196, + 117, + 47, + 225, + 120, + 251, + 118, + 143, + 49, + 164, + 9, + 115, + 237, + 70, + 192, + 65, + 149, + 96, + 13, + 10, + 9, + 114, + 199, + 56, + 205, + 37, + 140, + 61, + 181, + 111, + 185, + 146, + 73, + 87, + 203, + 96, + 184, + 217, + 26, + 143, + 221, + 88, + 227, + 187, + 29, + 204, + 208, + 11, + 240, + 214, + 29, + 46, + 157, + 199, + 163, + 23, + 93, + 93, + 6, + 160, + 187, + 75, + 53, + 86, + 60, + 8, + 190, + 4, + 61, + 111, + 98, + 189, + 207, + 140, + 37, + 11, + 46, + 204, + 54, + 166, + 162, + 121, + 203, + 130, + 61, + 172, + 81, + 169, + 97, + 158, + 228, + 33, + 115, + 30, + 233, + 209, + 222, + 30, + 131, + 99, + 244, + 102, + 130, + 110, + 106, + 36, + 9, + 7, + 240, + 77, + 193, + 6, + 48, + 111, + 112, + 214, + 122, + 16, + 230, + 227, + 108, + 174, + 124, + 56, + 131, + 111, + 22, + 1, + 209, + 166, + 51, + 239, + 224, + 213, + 197, + 249, + 120, + 81, + 198, + 208, + 139, + 189, + 131, + 207, + 219, + 166, + 210, + 122, + 187, + 111, + 37, + 140, + 87, + 223, + 99, + 88, + 198, + 20, + 123, + 63, + 166, + 138, + 171, + 210, + 89, + 108, + 186, + 23, + 10, + 73, + 163, + 79, + 237, + 27, + 89, + 231, + 205, + 2, + 164, + 181, + 157, + 215, + 169, + 141, + 146, + 99, + 207, + 216, + 219, + 43, + 22, + 184, + 183, + 229, + 22, + 21, + 99, + 169, + 110, + 177, + 228, + 91, + 26, + 253, + 138, + 62, + 9, + 184, + 72, + 66, + 196, + 45, + 181, + 201, + 215, + 83, + 224, + 224, + 153, + 170, + 170, + 203, + 240, + 138, + 198, + 6, + 157, + 73, + 166, + 110, + 17, + 95, + 18, + 48, + 101, + 12, + 199, + 231, + 216, + 88, + 121, + 21, + 135, + 161, + 77, + 183, + 69, + 2, + 58, + 102, + 35, + 190, + 234, + 14, + 197, + 38, + 33, + 160, + 87, + 69, + 87, + 3, + 57, + 87, + 234, + 31, + 222, + 27, + 204, + 228, + 14, + 190, + 186, + 66, + 135, + 203, + 119, + 56, + 248, + 114, + 226, + 215, + 157, + 158, + 180, + 179, + 240, + 142, + 26, + 250, + 182, + 54, + 224, + 148, + 70, + 185, + 210, + 45, + 65, + 92, + 45, + 172, + 198, + 106, + 154, + 118, + 65, + 114, + 1, + 84, + 35, + 85, + 79, + 208, + 64, + 198, + 10, + 49, + 199, + 107, + 30, + 143, + 13, + 224, + 18, + 187, + 97, + 106, + 108, + 238, + 81, + 188, + 43, + 86, + 216, + 20, + 138, + 109, + 155, + 193, + 37, + 247, + 4, + 86, + 110, + 116, + 255, + 114, + 92, + 140, + 61, + 39, + 161, + 191, + 239, + 222, + 1, + 110, + 122, + 29, + 134, + 220, + 24, + 170, + 39, + 147, + 97, + 79, + 141, + 227, + 124, + 122, + 51, + 92, + 100, + 185, + 1, + 123, + 167, + 4, + 72, + 150, + 27, + 176, + 199, + 18, + 160, + 196, + 228, + 39, + 21, + 244, + 61, + 97, + 33, + 30, + 227, + 91, + 30, + 163, + 185, + 27, + 253, + 198, + 92, + 245, + 133, + 70, + 49, + 29, + 179, + 47, + 218, + 46, + 57, + 42, + 20, + 69, + 95, + 58, + 97, + 11, + 54, + 158, + 3, + 111, + 50, + 50, + 228, + 240, + 27, + 143, + 55, + 170, + 39, + 187, + 242, + 117, + 127, + 162, + 102, + 135, + 126, + 117, + 211, + 122, + 180, + 198, + 152, + 57, + 115, + 29, + 252, + 156, + 113, + 165, + 243, + 142, + 76, + 189, + 251, + 159, + 23, + 189, + 152, + 92, + 121, + 110, + 174, + 67, + 233, + 99, + 78, + 45, + 152, + 130, + 46, + 114, + 249, + 242, + 168, + 183, + 82, + 224, + 45, + 145, + 131, + 61, + 184, + 222, + 61, + 80, + 36, + 143, + 227, + 218, + 139, + 148, + 170, + 27, + 103, + 120, + 53, + 158, + 57, + 34, + 211, + 164, + 43, + 98, + 216, + 142, + 168, + 38, + 130, + 189, + 215, + 240, + 253, + 186, + 199, + 182, + 136, + 135, + 219, + 58, + 222, + 78, + 100, + 7, + 204, + 169, + 26, + 41, + 70, + 97, + 225, + 64, + 61, + 229, + 65, + 13, + 79, + 113, + 112, + 36, + 237, + 8, + 72, + 219, + 93, + 60, + 168, + 115, + 150, + 88, + 107, + 173, + 226, + 41, + 192, + 139, + 52, + 228, + 96, + 86, + 219, + 127, + 176, + 76, + 226, + 150, + 92, + 51, + 106, + 243, + 218, + 16, + 174, + 75, + 170, + 229, + 175, + 232, + 41, + 54, + 55, + 160, + 104, + 204, + 45, + 175, + 221, + 237, + 18, + 32, + 28, + 59, + 182, + 146, + 58, + 79, + 117, + 58, + 71, + 79, + 83, + 184, + 226, + 137, + 59, + 215, + 177, + 224, + 138, + 97, + 221, + 14, + 5, + 141, + 26, + 174, + 1, + 107, + 77, + 124, + 126, + 48, + 191, + 134, + 142, + 167, + 115, + 168, + 102, + 7, + 101, + 27, + 198, + 86, + 109, + 180, + 21, + 166, + 33, + 48, + 61, + 69, + 168, + 46, + 142, + 185, + 42, + 56, + 74, + 247, + 180, + 148, + 119, + 150, + 141, + 119, + 17, + 221, + 98, + 244, + 69, + 177, + 211, + 238, + 158, + 213, + 23, + 197, + 16, + 191, + 121, + 17, + 121, + 144, + 117, + 251, + 70, + 27, + 246, + 61, + 170, + 68, + 88, + 241, + 244, + 202, + 208, + 107, + 41, + 245, + 208, + 233, + 45, + 227, + 120, + 78, + 224, + 21, + 87, + 152, + 85, + 9, + 24, + 129, + 216, + 218, + 86, + 117, + 13, + 187, + 228, + 27, + 155, + 43, + 225, + 146, + 118, + 113, + 106, + 2, + 210, + 28, + 117, + 238, + 39, + 167, + 165, + 141, + 45, + 28, + 145, + 1, + 211, + 70, + 152, + 126, + 151, + 226, + 100, + 69, + 176, + 73, + 151, + 215, + 244, + 141, + 124, + 17, + 231, + 70, + 161, + 81, + 39, + 66, + 57, + 8, + 24, + 185, + 145, + 142, + 46, + 195, + 192, + 179, + 39, + 14, + 48, + 150, + 124, + 220, + 211, + 121, + 92, + 202, + 215, + 84, + 36, + 240, + 46, + 83, + 99, + 140, + 16, + 14, + 64, + 92, + 113, + 243, + 182, + 23, + 13, + 83, + 90, + 192, + 66, + 157, + 241, + 234, + 204, + 32, + 40, + 97, + 225, + 123, + 109, + 55, + 108, + 48, + 113, + 82, + 29, + 224, + 40, + 126, + 35, + 240, + 229, + 57, + 244, + 56, + 67, + 103, + 170, + 223, + 204, + 126, + 143, + 213, + 116, + 94, + 19, + 74, + 99, + 2, + 162, + 199, + 244, + 12, + 179, + 167, + 93, + 240, + 107, + 253, + 147, + 75, + 225, + 231, + 87, + 176, + 203, + 108, + 181, + 47, + 202, + 157, + 112, + 194, + 82, + 233, + 228, + 72, + 17, + 193, + 166, + 216, + 173, + 85, + 203, + 164, + 171, + 49, + 58, + 227, + 238, + 89, + 129, + 100, + 237, + 163, + 190, + 234, + 5, + 127, + 243, + 75, + 188, + 166, + 99, + 147, + 185, + 218, + 115, + 157, + 12, + 76, + 157, + 12, + 93, + 79, + 154, + 231, + 21, + 51, + 116, + 139, + 15, + 118, + 185, + 165, + 197, + 106, + 132, + 17, + 34, + 223, + 158, + 84, + 79, + 144, + 186, + 60, + 167, + 12, + 151, + 115, + 3, + 216, + 20, + 186, + 56, + 182, + 172, + 41, + 174, + 220, + 242, + 24, + 81, + 118, + 213, + 28, + 104, + 200, + 6, + 113, + 204, + 240, + 0, + 222, + 98, + 108, + 130, + 183, + 114, + 207, + 213, + 34, + 117, + 197, + 39, + 46, + 78, + 13, + 139, + 142, + 170, + 99, + 44, + 136, + 241, + 228, + 242, + 10, + 242, + 222, + 170, + 182, + 17, + 44, + 120, + 145, + 23, + 210, + 102, + 64, + 53, + 14, + 55, + 134, + 34, + 91, + 106, + 0, + 209, + 100, + 233, + 139, + 104, + 32, + 68, + 160, + 181, + 185, + 19, + 243, + 113, + 199, + 214, + 65, + 20, + 98, + 62, + 95, + 43, + 80, + 250, + 129, + 166, + 82, + 52, + 48, + 178, + 91, + 229, + 223, + 232, + 246, + 65, + 178, + 111, + 165, + 63, + 62, + 101, + 210, + 127, + 173, + 9, + 253, + 115, + 141, + 132, + 133, + 48, + 232, + 150, + 202, + 208, + 70, + 235, + 82, + 24, + 43, + 78, + 219, + 58, + 94, + 60, + 106, + 47, + 35, + 109, + 5, + 150, + 213, + 249, + 116, + 247, + 2, + 33, + 12, + 241, + 175, + 207, + 97, + 82, + 54, + 22, + 239, + 149, + 104, + 93, + 174, + 201, + 0, + 155, + 45, + 150, + 196, + 159, + 110, + 167, + 126, + 242, + 102, + 187, + 189, + 44, + 164, + 175, + 92, + 65, + 184, + 162, + 215, + 253, + 24, + 100, + 243, + 103, + 49, + 90, + 185, + 100, + 12, + 178, + 86, + 136, + 227, + 214, + 150, + 90, + 30, + 3, + 116, + 96, + 40, + 141, + 174, + 218, + 121, + 35, + 56, + 92, + 26, + 125, + 227, + 147, + 116, + 178, + 99, + 188, + 207, + 29, + 49, + 172, + 241, + 237, + 113, + 19, + 169, + 197, + 51, + 230, + 234, + 165, + 165, + 227, + 177, + 19, + 82, + 175, + 243, + 164, + 107, + 40, + 231, + 178, + 70, + 168, + 70, + 220, + 5, + 217, + 102, + 8, + 213, + 92, + 18, + 150, + 95, + 1, + 172, + 138, + 22, + 229, + 238, + 76, + 236, + 58, + 250, + 70, + 16, + 14, + 129, + 84, + 99, + 209, + 96, + 17, + 40, + 116, + 47, + 119, + 107, + 116, + 225, + 117, + 38, + 153, + 140, + 25, + 106, + 84, + 83, + 139, + 252, + 116, + 246, + 53, + 19, + 231, + 20, + 55, + 32, + 239, + 70, + 66, + 177, + 186, + 206, + 24, + 147, + 132, + 185, + 86, + 146, + 163, + 178, + 129, + 176, + 134, + 16, + 108, + 21, + 41, + 220, + 32, + 123, + 232, + 43, + 20, + 180, + 234, + 168, + 185, + 72, + 227, + 68, + 83, + 71, + 205, + 209, + 194, + 137, + 150, + 238, + 154, + 63, + 182, + 77, + 192, + 148, + 89, + 152, + 181, + 80, + 210, + 197, + 133, + 90, + 137, + 84, + 236, + 185, + 144, + 22, + 10, + 0, + 170, + 208, + 151, + 231, + 66, + 198, + 145, + 113, + 15, + 94, + 115, + 162, + 113, + 188, + 213, + 131, + 243, + 82, + 102, + 53, + 151, + 74, + 155, + 147, + 53, + 188, + 200, + 162, + 154, + 4, + 36, + 22, + 130, + 200, + 117, + 47, + 107, + 198, + 25, + 118, + 131, + 210, + 209, + 121, + 152, + 11, + 119, + 163, + 83, + 245, + 159, + 154, + 192, + 232, + 62, + 86, + 95, + 145, + 26, + 246, + 45, + 35, + 143, + 139, + 64, + 22, + 123, + 135, + 213, + 142, + 13, + 171, + 198, + 88, + 190, + 42, + 238, + 121, + 132, + 100, + 81, + 19, + 146, + 85, + 59, + 26, + 127, + 46, + 130, + 219, + 56, + 59, + 64, + 42, + 219, + 98, + 183, + 11, + 57, + 126, + 228, + 105, + 181, + 82, + 179, + 99, + 24, + 48, + 76, + 183, + 116, + 118, + 252, + 96, + 242, + 216, + 97, + 47, + 168, + 63, + 249, + 232, + 240, + 226, + 60, + 117, + 117, + 74, + 35, + 253, + 108, + 108, + 96, + 53, + 12, + 151, + 193, + 23, + 185, + 16, + 109, + 103, + 34, + 155, + 132, + 230, + 206, + 101, + 108, + 111, + 235, + 148, + 48, + 149, + 57, + 127, + 132, + 175, + 201, + 29, + 39, + 246, + 176, + 134, + 221, + 217, + 145, + 34, + 223, + 150, + 61, + 171, + 75, + 191, + 79, + 102, + 24, + 129, + 241, + 198, + 70, + 64, + 129, + 204, + 220, + 252, + 102, + 199, + 217, + 181, + 105, + 214, + 194, + 41, + 191, + 53, + 159, + 231, + 181, + 78, + 194, + 90, + 64, + 75, + 26, + 35, + 124, + 105, + 51, + 176, + 197, + 166, + 100, + 205, + 113, + 143, + 140, + 211, + 187, + 248, + 157, + 136, + 11, + 145, + 119, + 241, + 227, + 144, + 173, + 82, + 5, + 203, + 180, + 221, + 152, + 178, + 19, + 89, + 97, + 5, + 148, + 24, + 151, + 124, + 198, + 44, + 62, + 94, + 72, + 250, + 0, + 188, + 13, + 107, + 121, + 178, + 77, + 31, + 128, + 39, + 176, + 205, + 98, + 59, + 150, + 214, + 202, + 150, + 231, + 0, + 154, + 183, + 60, + 146, + 54, + 112, + 12, + 129, + 13, + 15, + 83, + 39, + 107, + 135, + 17, + 222, + 27, + 230, + 154, + 141, + 90, + 60, + 20, + 88, + 182, + 207, + 50, + 216, + 82, + 215, + 230, + 183, + 97, + 204, + 19, + 17, + 99, + 74, + 124, + 202, + 74, + 183, + 140, + 100, + 216, + 28, + 112, + 56, + 212, + 125, + 192, + 66, + 46, + 125, + 21, + 102, + 115, + 10, + 252, + 158, + 187, + 28, + 36, + 117, + 13, + 90, + 205, + 208, + 176, + 12, + 182, + 28, + 189, + 229, + 17, + 249, + 169, + 50, + 100, + 160, + 98, + 17, + 78, + 50, + 63, + 86, + 134, + 27, + 211, + 131, + 126, + 234, + 190, + 50, + 72, + 77, + 251, + 159, + 217, + 91, + 29, + 163, + 69, + 78, + 141, + 94, + 141, + 185, + 58, + 55, + 123, + 119, + 193, + 16, + 105, + 73, + 157, + 228, + 143, + 25, + 185, + 175, + 19, + 27, + 10, + 24, + 238, + 70, + 198, + 168, + 238, + 9, + 182, + 40, + 172, + 49, + 50, + 120, + 238, + 138, + 101, + 255, + 195, + 232, + 148, + 86, + 108, + 243, + 0, + 44, + 237, + 213, + 243, + 76, + 152, + 148, + 244, + 103, + 139, + 206, + 252, + 167, + 151, + 224, + 42, + 165, + 221, + 153, + 181, + 113, + 228, + 99, + 117, + 92, + 249, + 167, + 92, + 145, + 115, + 34, + 67, + 85, + 114, + 234, + 219, + 54, + 59, + 165, + 175, + 71, + 132, + 120, + 243, + 64, + 218, + 183, + 216, + 198, + 223, + 127, + 97, + 186, + 252, + 253, + 6, + 247, + 28, + 208, + 189, + 114, + 214, + 70, + 233, + 136, + 191, + 8, + 208, + 251, + 23, + 124, + 138, + 146, + 185, + 109, + 218, + 218, + 124, + 100, + 235, + 206, + 220, + 229, + 11, + 246, + 162, + 80, + 174, + 23, + 251, + 130, + 117, + 247, + 92, + 4, + 246, + 18, + 108, + 212, + 12, + 251, + 26, + 99, + 134, + 33, + 240, + 166, + 127, + 203, + 16, + 132, + 180, + 52, + 42, + 85, + 212, + 195, + 131, + 159, + 69, + 27, + 119, + 242, + 233, + 193, + 207, + 38, + 225, + 121, + 175, + 219, + 0, + 76, + 96, + 227, + 234, + 12, + 175, + 91, + 158, + 169, + 131, + 254, + 45, + 231, + 100, + 177, + 10, + 49, + 109, + 241, + 8, + 93, + 220, + 171, + 92, + 183, + 5, + 98, + 241, + 120, + 244, + 131, + 88, + 77, + 71, + 103, + 103, + 186, + 177, + 200, + 110, + 205, + 234, + 115, + 246, + 172, + 237, + 144, + 125, + 253, + 24, + 170, + 126, + 45, + 236, + 174, + 217, + 9, + 127, + 122, + 214, + 244, + 106, + 204, + 64, + 163, + 105, + 176, + 253, + 188, + 127, + 189, + 121, + 91, + 103, + 195, + 22, + 64, + 170, + 185, + 183, + 54, + 174, + 250, + 228, + 17, + 49, + 23, + 88, + 2, + 215, + 136, + 155, + 53, + 160, + 76, + 134, + 151, + 103, + 141, + 61, + 34, + 86, + 4, + 151, + 46, + 69, + 71, + 206, + 151, + 89, + 73, + 56, + 205, + 172, + 153, + 184, + 54, + 156, + 184, + 22, + 18, + 171, + 206, + 109, + 136, + 51, + 54, + 64, + 49, + 138, + 112, + 3, + 57, + 38, + 215, + 119, + 179, + 91, + 128, + 71, + 252, + 8, + 159, + 92, + 251, + 101, + 90, + 85, + 30, + 16, + 86, + 228, + 144, + 45, + 143, + 91, + 106, + 52, + 77, + 20, + 207, + 53, + 86, + 139, + 89, + 198, + 105, + 97, + 147, + 140, + 206, + 149, + 88, + 245, + 175, + 232, + 209, + 46, + 102, + 96, + 60, + 195, + 38, + 73, + 85, + 157, + 186, + 193, + 118, + 220, + 118, + 249, + 173, + 242, + 202, + 184, + 43, + 95, + 190, + 15, + 197, + 28, + 201, + 165, + 224, + 9, + 156, + 141, + 55, + 229, + 109, + 25, + 182, + 56, + 71, + 178, + 17, + 226, + 75, + 214, + 139, + 28, + 188, + 25, + 213, + 96, + 69, + 155, + 171, + 51, + 105, + 80, + 8, + 134, + 97, + 108, + 51, + 150, + 219, + 150, + 87, + 7, + 232, + 88, + 103, + 201, + 158, + 96, + 222, + 136, + 185, + 235, + 24, + 48, + 22, + 134, + 223, + 152, + 235, + 42, + 159, + 40, + 52, + 143, + 139, + 43, + 2, + 209, + 216, + 249, + 162, + 90, + 174, + 25, + 40, + 37, + 145, + 37, + 47, + 130, + 165, + 208, + 96, + 110, + 108, + 156, + 154, + 134, + 27, + 86, + 28, + 156, + 145, + 42, + 46, + 223, + 19, + 142, + 25, + 208, + 215, + 142, + 161, + 57, + 223, + 100, + 59, + 91, + 148, + 166, + 19, + 68, + 19, + 163, + 214, + 67, + 214, + 243, + 195, + 70, + 134, + 98, + 253, + 59, + 89, + 49, + 8, + 116, + 139, + 167, + 36, + 239, + 111, + 3, + 104, + 230, + 90, + 207, + 102, + 139, + 99, + 129, + 33, + 40, + 94, + 107, + 28, + 225, + 111, + 211, + 99, + 185, + 23, + 163, + 28, + 225, + 111, + 210, + 165, + 183, + 76, + 204, + 100, + 114, + 106, + 95, + 10, + 3, + 103, + 181, + 124, + 181, + 25, + 8, + 219, + 212, + 66, + 31, + 144, + 42, + 193, + 219, + 227, + 43, + 99, + 126, + 167, + 165, + 214, + 114, + 233, + 236, + 121, + 226, + 56, + 213, + 85, + 22, + 57, + 43, + 85, + 137, + 26, + 233, + 214, + 115, + 131, + 144, + 80, + 184, + 226, + 100, + 242, + 231, + 124, + 58, + 100, + 116, + 157, + 103, + 236, + 155, + 174, + 188, + 78, + 114, + 179, + 227, + 153, + 100, + 41, + 87, + 9, + 89, + 10, + 91, + 153, + 66, + 8, + 167, + 28, + 100, + 209, + 69, + 153, + 36, + 99, + 24, + 170, + 218, + 104, + 172, + 77, + 54, + 96, + 210, + 208, + 152, + 129, + 111, + 197, + 144, + 129, + 192, + 215, + 173, + 85, + 130, + 68, + 110, + 22, + 188, + 99, + 160, + 173, + 74, + 200, + 18, + 144, + 73, + 161, + 201, + 239, + 51, + 201, + 233, + 113, + 63, + 66, + 155, + 93, + 64, + 25, + 23, + 44, + 195, + 241, + 45, + 195, + 87, + 120, + 3, + 179, + 134, + 240, + 123, + 85, + 80, + 41, + 110, + 208, + 30, + 134, + 46, + 229, + 76, + 193, + 84, + 63, + 154, + 146, + 234, + 94, + 229, + 166, + 195, + 83, + 92, + 100, + 208, + 232, + 247, + 125, + 115, + 52, + 155, + 59, + 148, + 152, + 255, + 241, + 234, + 95, + 33, + 119, + 27, + 226, + 198, + 54, + 221, + 205, + 12, + 31, + 117, + 133, + 109, + 186, + 99, + 249, + 96, + 13, + 231, + 82, + 39, + 232, + 236, + 70, + 150, + 130, + 168, + 103, + 74, + 211, + 183, + 100, + 41, + 184, + 141, + 216, + 72, + 112, + 151, + 58, + 89, + 107, + 236, + 152, + 245, + 125, + 108, + 76, + 118, + 193, + 254, + 238, + 107, + 230, + 43, + 162, + 129, + 89, + 171, + 79, + 58, + 122, + 224, + 144, + 191, + 96, + 111, + 73, + 236, + 121, + 109, + 68, + 186, + 224, + 72, + 149, + 13, + 79, + 242, + 150, + 87, + 173, + 195, + 24, + 116, + 112, + 35, + 159, + 207, + 205, + 200, + 76, + 226, + 13, + 230, + 243, + 40, + 44, + 17, + 190, + 39, + 78, + 94, + 128, + 6, + 174, + 49, + 48, + 139, + 217, + 235, + 27, + 38, + 122, + 125, + 215, + 199, + 199, + 242, + 122, + 218, + 157, + 200, + 15, + 32, + 174, + 103, + 122, + 189, + 211, + 154, + 158, + 20, + 182, + 141, + 198, + 133, + 218, + 200, + 21, + 189, + 43, + 94, + 168, + 107, + 150, + 246, + 199, + 88, + 12, + 195, + 176, + 221, + 8, + 219, + 217, + 205, + 60, + 47, + 118, + 145, + 203, + 248, + 191, + 124, + 8, + 238, + 164, + 104, + 80, + 242, + 23, + 20, + 57, + 86, + 27, + 97, + 106, + 103, + 80, + 73, + 224, + 215, + 197, + 43, + 107, + 53, + 254, + 120, + 234, + 164, + 93, + 12, + 12, + 7, + 21, + 242, + 128, + 218, + 55, + 28, + 179, + 206, + 218, + 124, + 224, + 28, + 155, + 127, + 154, + 217, + 223, + 91, + 147, + 245, + 170, + 116, + 100, + 3, + 174, + 117, + 59, + 16, + 188, + 229, + 245, + 229, + 40, + 210, + 255, + 3, + 121, + 170, + 220, + 147, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 51, + 52, + 55, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 221, + 125, + 219, + 142, + 164, + 71, + 142, + 222, + 125, + 63, + 69, + 189, + 192, + 112, + 130, + 167, + 8, + 6, + 48, + 24, + 64, + 173, + 195, + 194, + 23, + 11, + 216, + 134, + 222, + 96, + 236, + 93, + 192, + 192, + 92, + 120, + 253, + 254, + 128, + 193, + 236, + 214, + 40, + 83, + 77, + 86, + 254, + 193, + 98, + 87, + 247, + 140, + 36, + 64, + 66, + 165, + 58, + 235, + 63, + 196, + 137, + 31, + 191, + 3, + 190, + 140, + 151, + 241, + 242, + 39, + 124, + 25, + 47, + 38, + 244, + 242, + 183, + 191, + 127, + 248, + 191, + 31, + 96, + 233, + 237, + 167, + 191, + 253, + 251, + 111, + 127, + 255, + 128, + 47, + 254, + 247, + 255, + 252, + 183, + 219, + 191, + 240, + 229, + 191, + 254, + 243, + 195, + 159, + 255, + 141, + 95, + 254, + 243, + 255, + 125, + 240, + 207, + 215, + 150, + 23, + 68, + 226, + 151, + 255, + 250, + 223, + 31, + 254, + 227, + 195, + 255, + 248, + 195, + 55, + 44, + 242, + 127, + 254, + 246, + 247, + 219, + 255, + 58, + 252, + 59, + 62, + 253, + 199, + 239, + 223, + 241, + 231, + 255, + 254, + 242, + 151, + 191, + 252, + 249, + 223, + 127, + 252, + 111, + 63, + 189, + 140, + 151, + 191, + 254, + 245, + 227, + 79, + 63, + 126, + 248, + 248, + 235, + 135, + 63, + 255, + 34, + 47, + 40, + 48, + 253, + 175, + 245, + 242, + 235, + 127, + 124, + 192, + 223, + 47, + 21, + 100, + 109, + 195, + 197, + 251, + 229, + 87, + 255, + 222, + 63, + 33, + 3, + 173, + 197, + 194, + 246, + 242, + 235, + 255, + 122, + 249, + 203, + 24, + 74, + 127, + 125, + 249, + 245, + 255, + 124, + 48, + 64, + 69, + 28, + 203, + 94, + 198, + 111, + 31, + 236, + 219, + 7, + 11, + 152, + 12, + 73, + 255, + 241, + 115, + 177, + 236, + 15, + 232, + 237, + 131, + 159, + 127, + 61, + 186, + 38, + 50, + 80, + 28, + 219, + 102, + 112, + 109, + 131, + 43, + 223, + 200, + 4, + 106, + 180, + 39, + 69, + 119, + 187, + 110, + 223, + 40, + 48, + 22, + 238, + 165, + 235, + 247, + 187, + 250, + 152, + 220, + 213, + 179, + 219, + 21, + 48, + 27, + 83, + 244, + 194, + 159, + 64, + 172, + 220, + 206, + 26, + 48, + 230, + 48, + 227, + 182, + 7, + 180, + 4, + 144, + 201, + 212, + 130, + 111, + 228, + 31, + 110, + 223, + 136, + 12, + 58, + 141, + 182, + 241, + 243, + 219, + 146, + 95, + 110, + 31, + 48, + 144, + 78, + 148, + 205, + 207, + 63, + 24, + 191, + 84, + 46, + 27, + 199, + 4, + 225, + 169, + 188, + 219, + 158, + 4, + 226, + 0, + 29, + 166, + 40, + 193, + 87, + 210, + 143, + 181, + 175, + 20, + 80, + 27, + 210, + 121, + 145, + 6, + 83, + 73, + 102, + 52, + 69, + 242, + 113, + 43, + 181, + 121, + 125, + 122, + 113, + 58, + 64, + 152, + 119, + 248, + 4, + 139, + 247, + 171, + 2, + 58, + 212, + 246, + 201, + 252, + 253, + 188, + 140, + 157, + 254, + 170, + 57, + 97, + 145, + 237, + 213, + 55, + 185, + 112, + 13, + 176, + 49, + 182, + 70, + 87, + 63, + 147, + 71, + 255, + 62, + 239, + 138, + 6, + 194, + 210, + 45, + 216, + 118, + 179, + 52, + 20, + 140, + 49, + 156, + 145, + 58, + 62, + 173, + 36, + 4, + 52, + 108, + 173, + 113, + 119, + 87, + 165, + 137, + 69, + 164, + 192, + 190, + 38, + 245, + 93, + 61, + 109, + 16, + 25, + 20, + 206, + 171, + 244, + 149, + 36, + 239, + 48, + 251, + 121, + 109, + 209, + 39, + 157, + 192, + 184, + 195, + 37, + 186, + 120, + 179, + 115, + 0, + 111, + 212, + 245, + 234, + 162, + 111, + 204, + 100, + 247, + 3, + 237, + 110, + 121, + 25, + 59, + 25, + 178, + 15, + 31, + 124, + 158, + 161, + 167, + 87, + 183, + 5, + 116, + 239, + 209, + 55, + 15, + 105, + 27, + 204, + 133, + 35, + 58, + 5, + 200, + 207, + 201, + 180, + 250, + 241, + 110, + 195, + 154, + 50, + 127, + 191, + 41, + 204, + 30, + 67, + 233, + 110, + 153, + 20, + 84, + 151, + 54, + 30, + 121, + 54, + 76, + 218, + 50, + 159, + 29, + 240, + 232, + 110, + 119, + 222, + 165, + 223, + 36, + 8, + 166, + 164, + 125, + 203, + 61, + 139, + 194, + 38, + 81, + 62, + 120, + 81, + 249, + 251, + 200, + 222, + 160, + 252, + 144, + 60, + 133, + 143, + 173, + 227, + 152, + 77, + 97, + 176, + 32, + 245, + 61, + 30, + 219, + 128, + 126, + 0, + 124, + 182, + 72, + 221, + 221, + 212, + 195, + 209, + 20, + 149, + 222, + 184, + 111, + 8, + 14, + 32, + 179, + 221, + 247, + 206, + 5, + 5, + 120, + 142, + 112, + 219, + 248, + 49, + 121, + 229, + 201, + 48, + 86, + 75, + 94, + 32, + 149, + 78, + 4, + 34, + 19, + 80, + 136, + 251, + 202, + 17, + 209, + 1, + 132, + 18, + 126, + 35, + 127, + 186, + 70, + 68, + 144, + 49, + 134, + 169, + 132, + 35, + 252, + 97, + 188, + 214, + 222, + 224, + 90, + 176, + 113, + 206, + 198, + 187, + 50, + 132, + 109, + 54, + 245, + 171, + 175, + 56, + 178, + 5, + 8, + 177, + 241, + 136, + 38, + 219, + 128, + 140, + 231, + 206, + 167, + 212, + 225, + 55, + 234, + 173, + 52, + 17, + 235, + 59, + 89, + 233, + 173, + 50, + 153, + 107, + 117, + 111, + 95, + 15, + 47, + 100, + 221, + 205, + 157, + 73, + 111, + 60, + 179, + 168, + 32, + 200, + 84, + 106, + 124, + 8, + 162, + 160, + 188, + 40, + 122, + 245, + 159, + 175, + 241, + 83, + 37, + 48, + 199, + 239, + 51, + 231, + 202, + 7, + 52, + 8, + 245, + 249, + 114, + 121, + 191, + 182, + 60, + 172, + 57, + 217, + 57, + 254, + 99, + 233, + 46, + 109, + 2, + 77, + 193, + 190, + 201, + 57, + 94, + 254, + 196, + 4, + 115, + 145, + 18, + 71, + 99, + 227, + 190, + 22, + 127, + 24, + 27, + 15, + 7, + 221, + 222, + 82, + 139, + 24, + 38, + 251, + 214, + 248, + 229, + 181, + 21, + 15, + 120, + 11, + 214, + 32, + 246, + 199, + 246, + 197, + 205, + 150, + 38, + 49, + 43, + 152, + 178, + 144, + 188, + 118, + 133, + 1, + 102, + 135, + 3, + 97, + 108, + 127, + 111, + 175, + 98, + 119, + 63, + 255, + 251, + 143, + 247, + 248, + 29, + 118, + 225, + 119, + 156, + 1, + 0, + 25, + 50, + 144, + 238, + 176, + 217, + 168, + 206, + 134, + 142, + 156, + 150, + 179, + 159, + 1, + 161, + 211, + 249, + 65, + 176, + 101, + 239, + 189, + 250, + 214, + 149, + 5, + 131, + 48, + 174, + 250, + 207, + 97, + 189, + 28, + 255, + 74, + 107, + 200, + 20, + 133, + 76, + 103, + 105, + 138, + 210, + 166, + 211, + 247, + 245, + 53, + 42, + 184, + 141, + 244, + 119, + 103, + 35, + 172, + 182, + 77, + 32, + 79, + 24, + 178, + 87, + 136, + 239, + 20, + 49, + 23, + 25, + 128, + 132, + 43, + 60, + 141, + 124, + 134, + 241, + 190, + 124, + 216, + 227, + 83, + 73, + 64, + 224, + 223, + 36, + 247, + 251, + 193, + 168, + 193, + 86, + 27, + 104, + 140, + 25, + 22, + 50, + 197, + 251, + 154, + 254, + 61, + 52, + 67, + 204, + 35, + 127, + 243, + 233, + 88, + 41, + 149, + 52, + 104, + 12, + 83, + 166, + 245, + 149, + 52, + 104, + 11, + 22, + 154, + 245, + 224, + 243, + 79, + 38, + 217, + 233, + 174, + 130, + 4, + 56, + 101, + 247, + 109, + 198, + 132, + 19, + 136, + 103, + 88, + 61, + 229, + 205, + 133, + 28, + 60, + 163, + 175, + 179, + 168, + 220, + 31, + 111, + 240, + 20, + 244, + 121, + 88, + 2, + 31, + 202, + 238, + 236, + 131, + 34, + 6, + 184, + 7, + 240, + 220, + 141, + 231, + 108, + 7, + 158, + 68, + 48, + 60, + 103, + 95, + 218, + 10, + 210, + 7, + 148, + 29, + 180, + 31, + 158, + 116, + 233, + 41, + 48, + 35, + 224, + 224, + 112, + 2, + 21, + 65, + 6, + 86, + 192, + 165, + 22, + 142, + 209, + 157, + 156, + 167, + 211, + 225, + 83, + 234, + 3, + 178, + 18, + 208, + 218, + 33, + 62, + 89, + 188, + 41, + 199, + 80, + 21, + 53, + 132, + 119, + 51, + 20, + 55, + 187, + 167, + 135, + 249, + 40, + 131, + 226, + 79, + 108, + 32, + 199, + 243, + 142, + 37, + 158, + 168, + 27, + 47, + 252, + 142, + 135, + 101, + 34, + 153, + 168, + 15, + 63, + 47, + 45, + 125, + 194, + 19, + 80, + 183, + 244, + 45, + 244, + 34, + 3, + 136, + 145, + 237, + 235, + 131, + 4, + 74, + 32, + 42, + 210, + 55, + 122, + 68, + 39, + 40, + 77, + 9, + 97, + 201, + 82, + 125, + 33, + 83, + 96, + 174, + 165, + 125, + 176, + 175, + 76, + 131, + 37, + 91, + 163, + 229, + 240, + 97, + 148, + 221, + 79, + 219, + 135, + 157, + 244, + 254, + 193, + 167, + 232, + 193, + 172, + 129, + 44, + 8, + 170, + 179, + 113, + 145, + 146, + 173, + 48, + 201, + 44, + 132, + 156, + 210, + 253, + 50, + 223, + 179, + 18, + 68, + 56, + 5, + 75, + 210, + 231, + 147, + 61, + 233, + 7, + 104, + 242, + 14, + 94, + 201, + 118, + 131, + 108, + 154, + 23, + 225, + 152, + 105, + 128, + 34, + 141, + 221, + 62, + 93, + 4, + 132, + 147, + 195, + 22, + 210, + 111, + 247, + 180, + 149, + 38, + 207, + 248, + 224, + 246, + 240, + 16, + 164, + 115, + 237, + 154, + 3, + 65, + 133, + 81, + 219, + 49, + 20, + 180, + 165, + 191, + 93, + 218, + 231, + 54, + 217, + 0, + 53, + 161, + 37, + 87, + 42, + 189, + 210, + 220, + 161, + 9, + 99, + 178, + 142, + 245, + 229, + 53, + 188, + 142, + 68, + 240, + 0, + 52, + 29, + 186, + 79, + 144, + 8, + 234, + 66, + 34, + 170, + 220, + 154, + 227, + 166, + 51, + 240, + 18, + 220, + 141, + 135, + 64, + 63, + 3, + 78, + 156, + 225, + 33, + 48, + 125, + 233, + 249, + 73, + 60, + 61, + 55, + 150, + 198, + 182, + 78, + 32, + 100, + 110, + 236, + 141, + 78, + 239, + 231, + 40, + 45, + 107, + 99, + 189, + 76, + 1, + 214, + 213, + 217, + 22, + 156, + 6, + 66, + 59, + 132, + 126, + 223, + 109, + 30, + 122, + 109, + 176, + 105, + 133, + 11, + 94, + 237, + 174, + 182, + 129, + 78, + 89, + 24, + 158, + 42, + 50, + 28, + 41, + 31, + 104, + 217, + 7, + 151, + 58, + 4, + 151, + 80, + 224, + 207, + 187, + 228, + 49, + 32, + 163, + 224, + 28, + 152, + 112, + 70, + 85, + 49, + 158, + 13, + 195, + 80, + 227, + 3, + 217, + 126, + 29, + 171, + 126, + 101, + 142, + 142, + 133, + 188, + 117, + 191, + 21, + 212, + 154, + 78, + 37, + 233, + 59, + 235, + 224, + 98, + 80, + 140, + 49, + 79, + 190, + 116, + 214, + 137, + 222, + 226, + 1, + 124, + 152, + 143, + 148, + 180, + 45, + 144, + 226, + 163, + 235, + 148, + 90, + 89, + 228, + 204, + 200, + 132, + 193, + 218, + 200, + 188, + 35, + 29, + 128, + 99, + 133, + 85, + 5, + 125, + 76, + 23, + 161, + 12, + 29, + 248, + 92, + 237, + 59, + 28, + 180, + 117, + 179, + 190, + 145, + 15, + 73, + 107, + 3, + 170, + 52, + 214, + 107, + 100, + 12, + 68, + 51, + 174, + 215, + 142, + 235, + 137, + 214, + 3, + 30, + 143, + 117, + 107, + 201, + 52, + 114, + 102, + 16, + 97, + 137, + 132, + 197, + 83, + 115, + 45, + 196, + 68, + 190, + 18, + 55, + 226, + 53, + 52, + 157, + 49, + 176, + 66, + 190, + 207, + 5, + 176, + 224, + 113, + 88, + 62, + 108, + 167, + 119, + 75, + 97, + 250, + 6, + 241, + 213, + 55, + 27, + 12, + 145, + 228, + 146, + 138, + 236, + 41, + 219, + 176, + 39, + 207, + 198, + 199, + 185, + 197, + 87, + 142, + 25, + 157, + 94, + 30, + 186, + 31, + 151, + 136, + 67, + 111, + 105, + 175, + 221, + 193, + 68, + 151, + 186, + 107, + 247, + 23, + 244, + 75, + 149, + 239, + 178, + 77, + 59, + 153, + 33, + 138, + 48, + 116, + 133, + 244, + 251, + 99, + 216, + 45, + 29, + 179, + 9, + 134, + 150, + 87, + 251, + 217, + 111, + 78, + 190, + 168, + 88, + 115, + 15, + 2, + 54, + 110, + 164, + 127, + 221, + 152, + 37, + 170, + 33, + 253, + 235, + 113, + 11, + 178, + 125, + 7, + 187, + 39, + 200, + 195, + 253, + 14, + 52, + 73, + 222, + 184, + 1, + 41, + 43, + 232, + 160, + 209, + 136, + 48, + 240, + 6, + 93, + 28, + 30, + 123, + 30, + 151, + 169, + 135, + 187, + 125, + 23, + 136, + 65, + 215, + 0, + 101, + 106, + 132, + 24, + 117, + 9, + 204, + 33, + 175, + 65, + 140, + 95, + 155, + 218, + 167, + 91, + 97, + 217, + 106, + 36, + 85, + 7, + 220, + 147, + 75, + 148, + 190, + 135, + 83, + 169, + 125, + 53, + 134, + 73, + 132, + 154, + 120, + 227, + 214, + 239, + 92, + 78, + 80, + 19, + 110, + 66, + 77, + 210, + 211, + 113, + 94, + 220, + 85, + 139, + 184, + 47, + 63, + 168, + 114, + 36, + 97, + 32, + 182, + 66, + 187, + 6, + 195, + 120, + 134, + 27, + 240, + 3, + 71, + 18, + 199, + 88, + 79, + 171, + 220, + 218, + 106, + 230, + 186, + 13, + 227, + 152, + 209, + 88, + 214, + 89, + 109, + 85, + 11, + 17, + 216, + 227, + 210, + 189, + 118, + 83, + 78, + 171, + 31, + 107, + 104, + 43, + 128, + 177, + 246, + 160, + 232, + 27, + 115, + 34, + 76, + 218, + 230, + 94, + 199, + 220, + 140, + 210, + 1, + 28, + 73, + 0, + 77, + 52, + 188, + 236, + 98, + 133, + 78, + 230, + 247, + 25, + 62, + 135, + 159, + 178, + 9, + 154, + 62, + 135, + 215, + 79, + 39, + 199, + 76, + 20, + 116, + 252, + 56, + 22, + 248, + 85, + 53, + 89, + 10, + 200, + 106, + 28, + 118, + 136, + 245, + 148, + 155, + 145, + 158, + 109, + 127, + 174, + 241, + 73, + 38, + 140, + 29, + 110, + 163, + 197, + 187, + 221, + 3, + 112, + 78, + 10, + 235, + 224, + 244, + 29, + 22, + 21, + 84, + 19, + 100, + 90, + 39, + 104, + 225, + 39, + 36, + 25, + 225, + 57, + 165, + 214, + 184, + 36, + 23, + 32, + 38, + 210, + 161, + 170, + 242, + 138, + 96, + 77, + 214, + 179, + 85, + 228, + 28, + 146, + 74, + 59, + 18, + 79, + 86, + 170, + 99, + 228, + 201, + 192, + 104, + 141, + 70, + 210, + 144, + 18, + 88, + 162, + 135, + 202, + 65, + 238, + 94, + 149, + 18, + 173, + 5, + 172, + 157, + 82, + 8, + 50, + 4, + 33, + 225, + 167, + 202, + 236, + 7, + 240, + 32, + 171, + 119, + 51, + 140, + 187, + 244, + 10, + 121, + 108, + 64, + 154, + 141, + 187, + 63, + 35, + 3, + 110, + 155, + 223, + 99, + 115, + 158, + 157, + 131, + 57, + 116, + 55, + 66, + 40, + 50, + 96, + 44, + 247, + 55, + 184, + 78, + 245, + 200, + 199, + 107, + 237, + 21, + 78, + 1, + 101, + 164, + 198, + 155, + 154, + 6, + 115, + 48, + 133, + 229, + 232, + 21, + 64, + 225, + 10, + 8, + 86, + 219, + 55, + 120, + 79, + 224, + 161, + 141, + 107, + 178, + 12, + 239, + 171, + 174, + 152, + 46, + 213, + 90, + 73, + 11, + 18, + 76, + 103, + 202, + 54, + 234, + 201, + 166, + 23, + 124, + 77, + 115, + 173, + 38, + 177, + 226, + 5, + 67, + 102, + 35, + 53, + 81, + 4, + 1, + 209, + 98, + 106, + 98, + 122, + 83, + 233, + 66, + 145, + 119, + 141, + 178, + 126, + 69, + 13, + 3, + 147, + 69, + 96, + 203, + 25, + 11, + 109, + 15, + 98, + 77, + 216, + 58, + 86, + 159, + 73, + 131, + 171, + 215, + 6, + 209, + 106, + 124, + 89, + 46, + 252, + 220, + 18, + 83, + 8, + 206, + 31, + 253, + 41, + 244, + 94, + 4, + 240, + 72, + 193, + 200, + 194, + 7, + 91, + 132, + 180, + 104, + 195, + 206, + 26, + 19, + 57, + 128, + 87, + 195, + 174, + 196, + 96, + 242, + 196, + 70, + 248, + 81, + 9, + 214, + 176, + 241, + 148, + 12, + 188, + 102, + 210, + 238, + 187, + 128, + 62, + 94, + 227, + 74, + 143, + 187, + 246, + 96, + 141, + 37, + 172, + 206, + 178, + 79, + 200, + 151, + 125, + 208, + 222, + 169, + 202, + 228, + 25, + 230, + 119, + 34, + 175, + 41, + 178, + 92, + 1, + 205, + 110, + 144, + 200, + 25, + 74, + 104, + 6, + 188, + 6, + 210, + 9, + 72, + 40, + 93, + 32, + 97, + 6, + 224, + 61, + 67, + 86, + 190, + 111, + 106, + 85, + 175, + 194, + 144, + 39, + 204, + 233, + 139, + 104, + 223, + 137, + 8, + 150, + 32, + 197, + 254, + 32, + 23, + 156, + 9, + 46, + 14, + 252, + 31, + 186, + 177, + 197, + 34, + 90, + 185, + 97, + 208, + 50, + 12, + 113, + 3, + 107, + 67, + 120, + 62, + 86, + 125, + 154, + 108, + 108, + 106, + 60, + 50, + 186, + 79, + 147, + 25, + 210, + 25, + 58, + 219, + 239, + 31, + 118, + 76, + 131, + 114, + 237, + 250, + 194, + 70, + 191, + 52, + 84, + 2, + 214, + 141, + 225, + 233, + 57, + 101, + 86, + 73, + 138, + 198, + 100, + 236, + 199, + 75, + 21, + 211, + 3, + 8, + 92, + 179, + 9, + 179, + 1, + 195, + 91, + 5, + 141, + 122, + 53, + 1, + 68, + 12, + 171, + 229, + 247, + 234, + 109, + 141, + 5, + 75, + 40, + 68, + 78, + 170, + 48, + 33, + 130, + 97, + 220, + 123, + 252, + 198, + 107, + 219, + 141, + 200, + 69, + 182, + 169, + 153, + 200, + 53, + 98, + 75, + 177, + 107, + 125, + 229, + 175, + 105, + 126, + 228, + 213, + 136, + 238, + 86, + 160, + 205, + 225, + 122, + 228, + 16, + 95, + 205, + 74, + 139, + 146, + 234, + 149, + 135, + 130, + 108, + 108, + 52, + 125, + 112, + 36, + 78, + 39, + 135, + 251, + 80, + 173, + 218, + 115, + 36, + 110, + 178, + 54, + 26, + 44, + 48, + 186, + 249, + 192, + 194, + 178, + 201, + 219, + 151, + 26, + 192, + 203, + 188, + 160, + 28, + 53, + 75, + 4, + 45, + 181, + 50, + 222, + 209, + 52, + 20, + 9, + 37, + 129, + 117, + 52, + 141, + 48, + 164, + 109, + 209, + 167, + 103, + 179, + 193, + 241, + 167, + 33, + 244, + 86, + 120, + 211, + 20, + 152, + 70, + 8, + 101, + 213, + 93, + 152, + 120, + 147, + 210, + 145, + 64, + 50, + 45, + 25, + 51, + 202, + 87, + 202, + 28, + 189, + 96, + 224, + 114, + 197, + 160, + 164, + 182, + 163, + 58, + 180, + 37, + 42, + 157, + 104, + 137, + 160, + 139, + 235, + 78, + 209, + 146, + 116, + 217, + 205, + 166, + 144, + 182, + 34, + 124, + 166, + 160, + 56, + 27, + 139, + 35, + 177, + 13, + 106, + 102, + 79, + 143, + 220, + 247, + 175, + 246, + 138, + 45, + 239, + 151, + 136, + 209, + 49, + 142, + 131, + 94, + 237, + 54, + 110, + 73, + 142, + 53, + 73, + 114, + 130, + 73, + 151, + 198, + 210, + 236, + 87, + 25, + 176, + 9, + 181, + 211, + 135, + 72, + 96, + 111, + 14, + 157, + 29, + 62, + 83, + 104, + 190, + 184, + 246, + 39, + 63, + 63, + 214, + 0, + 185, + 190, + 96, + 54, + 174, + 198, + 122, + 83, + 24, + 88, + 43, + 175, + 240, + 152, + 124, + 230, + 195, + 159, + 66, + 78, + 65, + 155, + 104, + 239, + 156, + 95, + 149, + 30, + 115, + 115, + 82, + 74, + 141, + 199, + 140, + 192, + 196, + 55, + 129, + 230, + 145, + 202, + 143, + 112, + 129, + 76, + 178, + 35, + 145, + 159, + 190, + 19, + 93, + 237, + 88, + 55, + 3, + 60, + 136, + 98, + 145, + 126, + 213, + 147, + 54, + 199, + 176, + 250, + 237, + 69, + 190, + 252, + 170, + 98, + 215, + 196, + 192, + 54, + 113, + 227, + 92, + 112, + 219, + 164, + 41, + 140, + 207, + 196, + 186, + 247, + 78, + 104, + 141, + 143, + 97, + 244, + 50, + 184, + 54, + 129, + 224, + 226, + 70, + 211, + 160, + 61, + 65, + 108, + 115, + 236, + 96, + 216, + 236, + 93, + 140, + 232, + 21, + 237, + 12, + 145, + 196, + 42, + 253, + 108, + 192, + 216, + 22, + 179, + 51, + 242, + 97, + 158, + 194, + 117, + 169, + 199, + 87, + 134, + 190, + 23, + 117, + 114, + 66, + 176, + 135, + 106, + 163, + 151, + 40, + 186, + 130, + 97, + 249, + 93, + 254, + 75, + 12, + 116, + 39, + 179, + 9, + 119, + 54, + 199, + 157, + 205, + 166, + 62, + 250, + 42, + 135, + 237, + 2, + 249, + 204, + 102, + 35, + 6, + 79, + 40, + 176, + 57, + 150, + 86, + 230, + 214, + 119, + 199, + 153, + 13, + 41, + 54, + 121, + 124, + 72, + 232, + 149, + 231, + 208, + 66, + 215, + 248, + 53, + 78, + 23, + 90, + 234, + 26, + 191, + 205, + 45, + 28, + 172, + 212, + 110, + 249, + 151, + 184, + 194, + 45, + 42, + 59, + 183, + 185, + 171, + 114, + 200, + 195, + 169, + 130, + 76, + 228, + 174, + 202, + 225, + 130, + 156, + 131, + 17, + 221, + 46, + 224, + 230, + 164, + 228, + 209, + 105, + 227, + 68, + 254, + 192, + 135, + 124, + 77, + 95, + 229, + 135, + 245, + 206, + 87, + 149, + 231, + 112, + 71, + 141, + 206, + 181, + 16, + 22, + 198, + 36, + 220, + 226, + 227, + 89, + 46, + 118, + 177, + 112, + 24, + 165, + 110, + 48, + 116, + 197, + 105, + 60, + 129, + 231, + 30, + 166, + 74, + 9, + 10, + 23, + 68, + 152, + 210, + 25, + 254, + 34, + 168, + 176, + 104, + 132, + 223, + 152, + 59, + 217, + 212, + 116, + 34, + 180, + 96, + 11, + 119, + 2, + 38, + 76, + 48, + 80, + 67, + 192, + 228, + 92, + 125, + 250, + 186, + 196, + 234, + 88, + 246, + 184, + 192, + 41, + 192, + 125, + 7, + 84, + 153, + 8, + 44, + 20, + 2, + 166, + 79, + 188, + 197, + 142, + 127, + 147, + 103, + 37, + 140, + 78, + 238, + 218, + 34, + 239, + 87, + 21, + 140, + 191, + 24, + 108, + 172, + 49, + 230, + 221, + 142, + 154, + 225, + 171, + 215, + 44, + 160, + 191, + 20, + 117, + 182, + 137, + 61, + 213, + 147, + 153, + 86, + 223, + 27, + 87, + 39, + 33, + 51, + 133, + 212, + 185, + 220, + 42, + 62, + 227, + 49, + 86, + 69, + 157, + 4, + 75, + 181, + 177, + 249, + 166, + 60, + 157, + 29, + 31, + 251, + 125, + 102, + 82, + 242, + 100, + 144, + 20, + 223, + 148, + 207, + 205, + 65, + 97, + 222, + 64, + 241, + 158, + 38, + 2, + 45, + 9, + 133, + 85, + 140, + 25, + 124, + 246, + 176, + 153, + 220, + 237, + 156, + 163, + 102, + 58, + 111, + 226, + 142, + 40, + 141, + 254, + 15, + 106, + 126, + 105, + 46, + 132, + 252, + 242, + 27, + 113, + 36, + 194, + 211, + 59, + 127, + 221, + 63, + 216, + 170, + 151, + 157, + 188, + 112, + 173, + 39, + 212, + 244, + 8, + 22, + 243, + 189, + 97, + 108, + 178, + 19, + 88, + 108, + 126, + 117, + 239, + 171, + 39, + 94, + 216, + 65, + 197, + 157, + 117, + 223, + 147, + 18, + 229, + 1, + 104, + 126, + 128, + 43, + 107, + 46, + 133, + 78, + 6, + 233, + 53, + 4, + 184, + 21, + 180, + 26, + 142, + 211, + 135, + 81, + 117, + 95, + 144, + 241, + 167, + 81, + 245, + 201, + 4, + 74, + 46, + 164, + 15, + 230, + 15, + 58, + 43, + 245, + 107, + 107, + 137, + 25, + 208, + 212, + 213, + 200, + 196, + 216, + 4, + 204, + 183, + 218, + 59, + 109, + 120, + 31, + 72, + 155, + 186, + 225, + 8, + 28, + 224, + 123, + 92, + 167, + 114, + 210, + 255, + 175, + 181, + 119, + 200, + 208, + 41, + 51, + 29, + 79, + 212, + 95, + 239, + 229, + 130, + 165, + 6, + 211, + 68, + 184, + 211, + 17, + 220, + 119, + 231, + 41, + 227, + 61, + 194, + 241, + 156, + 99, + 184, + 118, + 103, + 146, + 161, + 115, + 12, + 21, + 67, + 105, + 226, + 57, + 147, + 184, + 155, + 250, + 58, + 97, + 41, + 135, + 158, + 120, + 117, + 33, + 166, + 145, + 62, + 55, + 233, + 9, + 84, + 164, + 193, + 106, + 94, + 195, + 143, + 220, + 42, + 122, + 239, + 48, + 141, + 176, + 120, + 87, + 172, + 64, + 11, + 159, + 227, + 71, + 141, + 237, + 149, + 251, + 179, + 253, + 195, + 250, + 230, + 6, + 115, + 111, + 91, + 223, + 104, + 110, + 240, + 41, + 218, + 216, + 127, + 90, + 236, + 89, + 75, + 175, + 53, + 186, + 143, + 217, + 92, + 4, + 99, + 174, + 240, + 88, + 86, + 229, + 135, + 77, + 64, + 142, + 197, + 122, + 171, + 141, + 205, + 242, + 186, + 200, + 187, + 41, + 41, + 209, + 169, + 88, + 99, + 205, + 198, + 83, + 48, + 19, + 2, + 138, + 133, + 194, + 137, + 87, + 170, + 176, + 86, + 223, + 6, + 22, + 134, + 45, + 177, + 120, + 180, + 42, + 208, + 52, + 24, + 52, + 194, + 54, + 73, + 17, + 27, + 44, + 0, + 122, + 83, + 71, + 35, + 28, + 116, + 3, + 244, + 40, + 78, + 199, + 72, + 135, + 113, + 74, + 247, + 236, + 173, + 57, + 101, + 184, + 200, + 145, + 66, + 3, + 211, + 170, + 28, + 193, + 69, + 142, + 130, + 187, + 78, + 217, + 184, + 22, + 230, + 80, + 195, + 144, + 196, + 225, + 90, + 108, + 68, + 67, + 68, + 28, + 174, + 229, + 16, + 13, + 121, + 167, + 80, + 2, + 153, + 4, + 102, + 171, + 145, + 74, + 36, + 211, + 181, + 140, + 59, + 62, + 2, + 189, + 147, + 82, + 213, + 22, + 48, + 119, + 250, + 231, + 201, + 246, + 245, + 48, + 246, + 207, + 75, + 121, + 105, + 31, + 15, + 105, + 175, + 189, + 70, + 109, + 232, + 50, + 10, + 233, + 204, + 148, + 114, + 143, + 71, + 141, + 251, + 106, + 15, + 85, + 220, + 165, + 195, + 204, + 51, + 145, + 224, + 49, + 4, + 167, + 176, + 120, + 55, + 106, + 1, + 221, + 169, + 205, + 208, + 95, + 208, + 119, + 103, + 229, + 160, + 115, + 129, + 162, + 123, + 208, + 247, + 113, + 229, + 16, + 28, + 19, + 9, + 197, + 18, + 167, + 116, + 239, + 94, + 3, + 183, + 57, + 156, + 7, + 50, + 195, + 230, + 126, + 159, + 241, + 125, + 106, + 86, + 85, + 10, + 235, + 112, + 182, + 1, + 241, + 48, + 151, + 39, + 228, + 204, + 183, + 67, + 26, + 25, + 109, + 247, + 189, + 167, + 224, + 226, + 223, + 201, + 150, + 254, + 119, + 249, + 225, + 25, + 155, + 111, + 122, + 152, + 15, + 142, + 117, + 2, + 91, + 174, + 175, + 206, + 230, + 75, + 45, + 236, + 207, + 45, + 166, + 143, + 41, + 20, + 197, + 3, + 215, + 118, + 237, + 118, + 163, + 200, + 67, + 25, + 150, + 7, + 250, + 132, + 193, + 189, + 154, + 166, + 2, + 164, + 149, + 253, + 123, + 124, + 144, + 82, + 87, + 75, + 133, + 39, + 226, + 2, + 22, + 30, + 157, + 0, + 22, + 33, + 8, + 234, + 8, + 1, + 172, + 12, + 244, + 109, + 22, + 211, + 57, + 99, + 12, + 101, + 74, + 99, + 175, + 22, + 111, + 33, + 207, + 38, + 18, + 30, + 86, + 215, + 49, + 235, + 174, + 230, + 251, + 54, + 157, + 179, + 210, + 105, + 65, + 226, + 54, + 244, + 38, + 22, + 30, + 234, + 207, + 237, + 184, + 138, + 148, + 65, + 83, + 32, + 177, + 206, + 184, + 72, + 23, + 243, + 208, + 8, + 37, + 180, + 239, + 52, + 4, + 157, + 214, + 54, + 180, + 87, + 207, + 105, + 128, + 36, + 61, + 145, + 166, + 41, + 24, + 155, + 209, + 228, + 210, + 174, + 140, + 53, + 91, + 146, + 13, + 239, + 190, + 132, + 7, + 177, + 42, + 90, + 39, + 222, + 125, + 209, + 16, + 67, + 120, + 47, + 203, + 28, + 231, + 183, + 173, + 25, + 23, + 133, + 117, + 126, + 155, + 73, + 44, + 239, + 205, + 249, + 109, + 249, + 253, + 166, + 174, + 66, + 63, + 125, + 101, + 241, + 98, + 17, + 62, + 211, + 237, + 26, + 240, + 70, + 119, + 4, + 158, + 12, + 136, + 158, + 13, + 93, + 66, + 207, + 30, + 229, + 106, + 73, + 73, + 156, + 67, + 219, + 189, + 53, + 131, + 67, + 83, + 186, + 104, + 54, + 67, + 83, + 34, + 241, + 44, + 186, + 4, + 184, + 165, + 114, + 199, + 104, + 213, + 200, + 128, + 144, + 131, + 98, + 107, + 39, + 25, + 140, + 233, + 122, + 149, + 21, + 228, + 85, + 147, + 44, + 241, + 133, + 44, + 20, + 57, + 87, + 25, + 87, + 230, + 11, + 25, + 62, + 221, + 212, + 230, + 184, + 192, + 110, + 188, + 198, + 254, + 76, + 199, + 104, + 176, + 201, + 20, + 0, + 26, + 219, + 97, + 214, + 95, + 29, + 159, + 217, + 107, + 200, + 43, + 246, + 118, + 199, + 245, + 1, + 122, + 234, + 116, + 163, + 203, + 174, + 195, + 52, + 184, + 57, + 76, + 209, + 186, + 66, + 118, + 123, + 228, + 223, + 20, + 145, + 49, + 89, + 32, + 99, + 55, + 102, + 25, + 169, + 34, + 136, + 97, + 120, + 52, + 190, + 70, + 225, + 187, + 116, + 187, + 197, + 151, + 184, + 208, + 79, + 184, + 141, + 8, + 111, + 224, + 146, + 245, + 207, + 104, + 105, + 251, + 135, + 8, + 194, + 171, + 54, + 89, + 158, + 208, + 140, + 91, + 248, + 200, + 75, + 223, + 186, + 88, + 88, + 199, + 117, + 241, + 121, + 134, + 223, + 57, + 156, + 148, + 163, + 103, + 231, + 210, + 212, + 146, + 123, + 210, + 98, + 96, + 54, + 109, + 116, + 196, + 89, + 11, + 4, + 135, + 172, + 62, + 143, + 14, + 119, + 6, + 54, + 146, + 208, + 96, + 161, + 118, + 141, + 174, + 214, + 247, + 116, + 172, + 144, + 62, + 45, + 199, + 175, + 228, + 218, + 217, + 248, + 210, + 28, + 46, + 250, + 26, + 185, + 128, + 126, + 170, + 54, + 102, + 156, + 34, + 109, + 80, + 94, + 18, + 182, + 100, + 83, + 87, + 247, + 102, + 226, + 141, + 7, + 251, + 109, + 143, + 147, + 232, + 123, + 245, + 168, + 12, + 219, + 120, + 134, + 91, + 115, + 126, + 95, + 53, + 105, + 167, + 43, + 243, + 111, + 106, + 236, + 78, + 208, + 69, + 89, + 98, + 87, + 136, + 227, + 44, + 189, + 252, + 131, + 50, + 77, + 10, + 57, + 236, + 114, + 213, + 89, + 82, + 132, + 24, + 139, + 114, + 210, + 169, + 85, + 227, + 250, + 208, + 128, + 181, + 181, + 49, + 67, + 142, + 72, + 192, + 230, + 138, + 109, + 97, + 82, + 64, + 252, + 24, + 142, + 121, + 198, + 146, + 58, + 189, + 106, + 53, + 160, + 197, + 141, + 112, + 3, + 77, + 2, + 22, + 125, + 237, + 112, + 157, + 25, + 147, + 180, + 65, + 67, + 54, + 189, + 38, + 89, + 141, + 55, + 181, + 7, + 216, + 26, + 43, + 236, + 250, + 37, + 206, + 50, + 181, + 53, + 132, + 199, + 4, + 150, + 221, + 105, + 199, + 142, + 3, + 132, + 48, + 100, + 120, + 61, + 97, + 19, + 156, + 216, + 157, + 105, + 66, + 9, + 43, + 26, + 98, + 8, + 167, + 66, + 145, + 42, + 233, + 105, + 121, + 140, + 66, + 188, + 148, + 102, + 16, + 85, + 205, + 114, + 74, + 13, + 196, + 36, + 12, + 246, + 173, + 34, + 78, + 4, + 170, + 51, + 204, + 146, + 187, + 103, + 137, + 94, + 130, + 150, + 46, + 173, + 57, + 13, + 72, + 38, + 111, + 133, + 61, + 105, + 244, + 218, + 210, + 15, + 150, + 48, + 91, + 227, + 156, + 87, + 81, + 51, + 185, + 19, + 220, + 14, + 254, + 53, + 106, + 162, + 132, + 220, + 134, + 56, + 57, + 120, + 157, + 186, + 128, + 21, + 204, + 224, + 143, + 135, + 67, + 138, + 127, + 213, + 86, + 60, + 89, + 3, + 132, + 227, + 93, + 191, + 138, + 127, + 121, + 212, + 21, + 135, + 124, + 187, + 252, + 57, + 20, + 189, + 90, + 20, + 54, + 142, + 198, + 90, + 197, + 141, + 192, + 182, + 81, + 236, + 114, + 240, + 22, + 225, + 246, + 151, + 242, + 236, + 2, + 14, + 39, + 187, + 243, + 172, + 224, + 64, + 156, + 206, + 36, + 199, + 251, + 16, + 223, + 189, + 223, + 134, + 31, + 238, + 53, + 155, + 17, + 85, + 253, + 160, + 2, + 78, + 90, + 141, + 74, + 59, + 207, + 28, + 100, + 121, + 106, + 134, + 168, + 30, + 62, + 255, + 108, + 254, + 215, + 14, + 76, + 234, + 38, + 137, + 62, + 160, + 190, + 38, + 113, + 232, + 135, + 52, + 36, + 187, + 234, + 151, + 220, + 5, + 48, + 179, + 87, + 157, + 118, + 107, + 152, + 30, + 241, + 117, + 24, + 55, + 144, + 77, + 228, + 19, + 128, + 107, + 119, + 1, + 92, + 233, + 243, + 252, + 230, + 190, + 250, + 108, + 64, + 155, + 227, + 172, + 244, + 234, + 30, + 9, + 60, + 117, + 197, + 43, + 122, + 13, + 236, + 29, + 110, + 224, + 216, + 104, + 166, + 160, + 114, + 243, + 111, + 12, + 15, + 39, + 57, + 206, + 112, + 204, + 173, + 122, + 226, + 249, + 120, + 170, + 55, + 68, + 32, + 109, + 212, + 66, + 111, + 55, + 91, + 37, + 11, + 117, + 78, + 199, + 86, + 210, + 57, + 37, + 38, + 21, + 6, + 126, + 236, + 133, + 163, + 88, + 64, + 152, + 164, + 83, + 246, + 198, + 6, + 58, + 68, + 226, + 208, + 204, + 52, + 60, + 177, + 198, + 109, + 82, + 1, + 27, + 115, + 54, + 182, + 190, + 93, + 198, + 104, + 203, + 102, + 216, + 90, + 124, + 101, + 133, + 63, + 198, + 69, + 27, + 67, + 67, + 170, + 26, + 64, + 223, + 18, + 103, + 232, + 153, + 87, + 53, + 35, + 220, + 192, + 102, + 161, + 68, + 37, + 223, + 2, + 187, + 97, + 47, + 103, + 6, + 117, + 242, + 161, + 137, + 9, + 112, + 199, + 225, + 167, + 231, + 173, + 150, + 212, + 165, + 55, + 241, + 144, + 170, + 54, + 180, + 12, + 134, + 206, + 70, + 163, + 114, + 90, + 4, + 72, + 33, + 108, + 125, + 41, + 234, + 224, + 62, + 182, + 62, + 45, + 187, + 158, + 240, + 167, + 154, + 196, + 74, + 140, + 4, + 67, + 57, + 228, + 111, + 84, + 1, + 168, + 9, + 72, + 26, + 34, + 240, + 69, + 23, + 119, + 242, + 206, + 98, + 236, + 243, + 87, + 21, + 250, + 57, + 9, + 99, + 135, + 182, + 190, + 25, + 72, + 150, + 51, + 38, + 50, + 72, + 166, + 120, + 60, + 213, + 9, + 182, + 120, + 55, + 90, + 152, + 207, + 1, + 91, + 98, + 99, + 151, + 119, + 18, + 0, + 154, + 128, + 174, + 217, + 24, + 54, + 207, + 102, + 110, + 143, + 21, + 111, + 172, + 95, + 31, + 230, + 44, + 42, + 229, + 200, + 91, + 40, + 220, + 72, + 170, + 22, + 30, + 64, + 67, + 15, + 115, + 85, + 179, + 231, + 243, + 122, + 214, + 99, + 87, + 77, + 45, + 106, + 176, + 136, + 67, + 86, + 72, + 85, + 90, + 231, + 120, + 159, + 134, + 39, + 31, + 158, + 9, + 231, + 49, + 207, + 248, + 40, + 106, + 235, + 252, + 172, + 20, + 163, + 80, + 85, + 109, + 29, + 249, + 180, + 37, + 42, + 106, + 143, + 174, + 161, + 120, + 249, + 7, + 214, + 138, + 57, + 48, + 2, + 177, + 53, + 218, + 17, + 56, + 101, + 138, + 49, + 22, + 21, + 63, + 246, + 236, + 101, + 188, + 149, + 55, + 233, + 48, + 144, + 219, + 164, + 53, + 122, + 52, + 235, + 206, + 108, + 210, + 138, + 21, + 238, + 244, + 134, + 7, + 55, + 34, + 213, + 191, + 161, + 58, + 140, + 77, + 39, + 188, + 107, + 24, + 68, + 113, + 211, + 4, + 155, + 195, + 207, + 28, + 127, + 184, + 228, + 215, + 17, + 29, + 241, + 100, + 191, + 205, + 71, + 126, + 234, + 56, + 186, + 32, + 157, + 211, + 84, + 172, + 114, + 167, + 191, + 75, + 104, + 229, + 200, + 25, + 133, + 28, + 197, + 234, + 238, + 5, + 123, + 175, + 88, + 231, + 125, + 105, + 221, + 110, + 40, + 155, + 151, + 167, + 87, + 43, + 54, + 46, + 76, + 203, + 227, + 115, + 22, + 134, + 161, + 41, + 5, + 73, + 226, + 185, + 101, + 209, + 235, + 54, + 98, + 199, + 74, + 48, + 2, + 97, + 94, + 141, + 58, + 83, + 247, + 68, + 215, + 113, + 3, + 184, + 159, + 116, + 246, + 174, + 217, + 91, + 149, + 58, + 123, + 200, + 234, + 192, + 69, + 167, + 99, + 53, + 242, + 134, + 169, + 115, + 198, + 246, + 86, + 53, + 29, + 158, + 183, + 177, + 199, + 90, + 141, + 160, + 29, + 42, + 130, + 173, + 29, + 39, + 138, + 252, + 243, + 173, + 73, + 184, + 17, + 108, + 104, + 163, + 151, + 50, + 110, + 5, + 39, + 250, + 205, + 30, + 91, + 249, + 26, + 102, + 225, + 78, + 52, + 28, + 26, + 126, + 84, + 249, + 74, + 10, + 52, + 56, + 230, + 67, + 104, + 155, + 37, + 254, + 251, + 145, + 148, + 61, + 56, + 111, + 117, + 226, + 117, + 83, + 193, + 27, + 253, + 235, + 168, + 139, + 92, + 131, + 229, + 220, + 188, + 6, + 185, + 51, + 249, + 100, + 109, + 88, + 166, + 97, + 95, + 186, + 83, + 133, + 83, + 197, + 152, + 60, + 78, + 151, + 119, + 39, + 198, + 36, + 96, + 168, + 33, + 109, + 170, + 44, + 121, + 57, + 189, + 6, + 222, + 160, + 178, + 58, + 237, + 167, + 132, + 97, + 98, + 236, + 213, + 81, + 207, + 70, + 59, + 189, + 136, + 133, + 192, + 163, + 49, + 24, + 222, + 173, + 154, + 62, + 29, + 178, + 139, + 250, + 212, + 199, + 155, + 186, + 127, + 14, + 174, + 209, + 191, + 240, + 122, + 91, + 123, + 104, + 226, + 208, + 161, + 142, + 80, + 15, + 88, + 237, + 118, + 154, + 183, + 209, + 26, + 209, + 185, + 20, + 200, + 58, + 70, + 106, + 38, + 24, + 119, + 110, + 67, + 226, + 80, + 228, + 80, + 12, + 235, + 222, + 39, + 128, + 204, + 235, + 109, + 130, + 135, + 101, + 249, + 89, + 249, + 159, + 65, + 92, + 199, + 93, + 101, + 1, + 219, + 202, + 157, + 62, + 224, + 6, + 123, + 174, + 112, + 9, + 184, + 239, + 131, + 62, + 190, + 220, + 108, + 52, + 100, + 126, + 235, + 181, + 155, + 245, + 228, + 198, + 133, + 141, + 54, + 153, + 42, + 10, + 211, + 191, + 228, + 250, + 57, + 244, + 25, + 175, + 237, + 24, + 52, + 113, + 11, + 150, + 240, + 80, + 212, + 23, + 67, + 247, + 237, + 27, + 225, + 109, + 81, + 101, + 78, + 93, + 244, + 80, + 154, + 46, + 247, + 30, + 89, + 64, + 202, + 26, + 89, + 231, + 164, + 254, + 208, + 169, + 136, + 253, + 220, + 7, + 186, + 38, + 199, + 49, + 2, + 50, + 222, + 238, + 147, + 125, + 198, + 31, + 114, + 237, + 212, + 66, + 60, + 67, + 155, + 176, + 11, + 109, + 58, + 198, + 238, + 138, + 142, + 6, + 175, + 132, + 240, + 21, + 15, + 183, + 226, + 1, + 152, + 24, + 118, + 177, + 115, + 23, + 241, + 207, + 167, + 94, + 246, + 13, + 140, + 230, + 186, + 128, + 31, + 21, + 163, + 44, + 13, + 38, + 111, + 110, + 164, + 127, + 123, + 51, + 3, + 145, + 158, + 167, + 38, + 92, + 35, + 74, + 100, + 75, + 64, + 45, + 142, + 116, + 59, + 140, + 63, + 181, + 145, + 169, + 239, + 36, + 162, + 145, + 88, + 172, + 213, + 250, + 197, + 219, + 153, + 23, + 163, + 115, + 91, + 198, + 193, + 32, + 74, + 177, + 2, + 175, + 96, + 113, + 220, + 122, + 34, + 117, + 36, + 139, + 152, + 119, + 163, + 171, + 131, + 35, + 89, + 236, + 193, + 244, + 103, + 236, + 149, + 99, + 194, + 225, + 53, + 159, + 149, + 14, + 110, + 151, + 49, + 208, + 142, + 137, + 76, + 85, + 43, + 161, + 5, + 60, + 45, + 156, + 247, + 231, + 35, + 34, + 71, + 121, + 127, + 171, + 144, + 198, + 66, + 222, + 186, + 223, + 186, + 58, + 163, + 39, + 215, + 196, + 178, + 152, + 170, + 138, + 111, + 3, + 10, + 134, + 126, + 13, + 204, + 217, + 86, + 253, + 4, + 13, + 58, + 153, + 75, + 217, + 73, + 49, + 251, + 166, + 226, + 131, + 115, + 18, + 17, + 173, + 48, + 96, + 173, + 78, + 34, + 26, + 33, + 38, + 82, + 91, + 245, + 104, + 77, + 192, + 53, + 26, + 121, + 35, + 100, + 3, + 72, + 40, + 108, + 141, + 60, + 162, + 74, + 119, + 227, + 242, + 74, + 105, + 122, + 137, + 235, + 181, + 178, + 106, + 231, + 117, + 136, + 250, + 152, + 9, + 180, + 97, + 119, + 58, + 226, + 50, + 11, + 140, + 145, + 24, + 167, + 165, + 5, + 107, + 138, + 93, + 164, + 33, + 116, + 63, + 87, + 153, + 64, + 230, + 208, + 117, + 35, + 183, + 72, + 188, + 96, + 141, + 209, + 139, + 172, + 216, + 78, + 53, + 108, + 79, + 0, + 201, + 227, + 118, + 229, + 242, + 138, + 181, + 51, + 208, + 102, + 120, + 40, + 95, + 146, + 28, + 156, + 49, + 252, + 154, + 121, + 38, + 228, + 65, + 120, + 171, + 81, + 51, + 239, + 172, + 164, + 97, + 59, + 52, + 15, + 204, + 220, + 146, + 114, + 158, + 201, + 235, + 203, + 241, + 49, + 0, + 197, + 176, + 54, + 97, + 163, + 11, + 183, + 46, + 176, + 41, + 225, + 55, + 230, + 147, + 109, + 87, + 149, + 110, + 195, + 86, + 39, + 122, + 230, + 173, + 101, + 221, + 33, + 122, + 214, + 29, + 92, + 45, + 155, + 97, + 222, + 216, + 94, + 125, + 124, + 166, + 5, + 107, + 90, + 156, + 81, + 122, + 73, + 25, + 127, + 191, + 134, + 188, + 197, + 167, + 48, + 227, + 4, + 70, + 145, + 166, + 99, + 161, + 32, + 226, + 155, + 189, + 149, + 54, + 236, + 129, + 141, + 169, + 14, + 234, + 78, + 23, + 139, + 195, + 67, + 255, + 187, + 37, + 6, + 174, + 5, + 186, + 27, + 55, + 207, + 192, + 65, + 233, + 188, + 226, + 45, + 230, + 229, + 252, + 142, + 91, + 228, + 182, + 71, + 69, + 216, + 226, + 139, + 123, + 186, + 2, + 235, + 191, + 221, + 106, + 212, + 115, + 63, + 214, + 188, + 181, + 198, + 143, + 156, + 156, + 220, + 211, + 79, + 221, + 212, + 239, + 8, + 168, + 162, + 127, + 66, + 165, + 219, + 137, + 143, + 114, + 74, + 63, + 233, + 53, + 251, + 209, + 5, + 108, + 179, + 211, + 133, + 109, + 34, + 136, + 218, + 142, + 213, + 116, + 233, + 115, + 56, + 53, + 136, + 109, + 134, + 154, + 55, + 59, + 166, + 225, + 12, + 139, + 54, + 156, + 105, + 57, + 164, + 17, + 3, + 147, + 164, + 153, + 49, + 234, + 113, + 246, + 92, + 213, + 226, + 137, + 129, + 151, + 250, + 82, + 221, + 6, + 80, + 208, + 2, + 145, + 21, + 106, + 30, + 11, + 122, + 171, + 98, + 14, + 158, + 123, + 236, + 74, + 163, + 217, + 177, + 75, + 210, + 100, + 76, + 218, + 77, + 146, + 180, + 124, + 133, + 168, + 189, + 199, + 101, + 176, + 116, + 143, + 198, + 27, + 54, + 2, + 227, + 24, + 40, + 120, + 167, + 125, + 196, + 157, + 159, + 100, + 34, + 247, + 90, + 63, + 41, + 115, + 72, + 223, + 73, + 35, + 65, + 158, + 104, + 227, + 154, + 248, + 142, + 158, + 114, + 183, + 22, + 55, + 74, + 133, + 201, + 3, + 83, + 68, + 195, + 250, + 170, + 0, + 128, + 214, + 112, + 123, + 199, + 175, + 88, + 59, + 29, + 226, + 29, + 191, + 18, + 138, + 109, + 151, + 30, + 187, + 47, + 247, + 238, + 187, + 93, + 210, + 147, + 218, + 83, + 112, + 222, + 208, + 178, + 229, + 241, + 35, + 109, + 76, + 36, + 3, + 211, + 29, + 142, + 228, + 7, + 178, + 160, + 171, + 48, + 159, + 67, + 2, + 41, + 151, + 167, + 104, + 171, + 100, + 128, + 55, + 199, + 130, + 182, + 219, + 85, + 2, + 82, + 195, + 51, + 162, + 89, + 126, + 91, + 217, + 212, + 205, + 8, + 104, + 185, + 189, + 79, + 237, + 1, + 109, + 6, + 22, + 106, + 156, + 236, + 142, + 57, + 9, + 202, + 243, + 220, + 132, + 6, + 51, + 154, + 97, + 96, + 68, + 141, + 204, + 87, + 65, + 2, + 219, + 18, + 86, + 232, + 53, + 254, + 178, + 16, + 194, + 144, + 86, + 183, + 107, + 82, + 64, + 92, + 113, + 223, + 229, + 167, + 83, + 124, + 245, + 51, + 245, + 245, + 244, + 26, + 196, + 115, + 140, + 181, + 241, + 140, + 46, + 98, + 176, + 36, + 246, + 208, + 72, + 145, + 240, + 54, + 108, + 36, + 5, + 95, + 50, + 163, + 52, + 110, + 179, + 163, + 202, + 186, + 5, + 24, + 195, + 50, + 69, + 244, + 133, + 110, + 88, + 86, + 227, + 40, + 84, + 186, + 97, + 89, + 225, + 40, + 124, + 224, + 36, + 220, + 139, + 70, + 57, + 167, + 165, + 101, + 219, + 95, + 114, + 192, + 75, + 133, + 243, + 53, + 117, + 219, + 154, + 48, + 217, + 26, + 77, + 8, + 213, + 6, + 44, + 28, + 177, + 9, + 97, + 58, + 22, + 222, + 41, + 248, + 87, + 183, + 1, + 78, + 13, + 3, + 236, + 250, + 88, + 95, + 165, + 229, + 242, + 247, + 211, + 222, + 25, + 181, + 72, + 88, + 93, + 121, + 66, + 103, + 136, + 13, + 119, + 33, + 54, + 220, + 231, + 232, + 148, + 28, + 254, + 139, + 199, + 61, + 15, + 102, + 163, + 120, + 24, + 86, + 27, + 64, + 176, + 88, + 198, + 25, + 21, + 9, + 143, + 1, + 173, + 218, + 50, + 55, + 157, + 243, + 78, + 177, + 109, + 105, + 81, + 202, + 70, + 32, + 126, + 30, + 120, + 165, + 75, + 125, + 160, + 1, + 201, + 33, + 180, + 210, + 60, + 222, + 3, + 60, + 253, + 185, + 209, + 221, + 100, + 11, + 24, + 207, + 56, + 74, + 233, + 220, + 127, + 249, + 92, + 75, + 117, + 44, + 245, + 251, + 188, + 63, + 76, + 32, + 222, + 234, + 61, + 193, + 183, + 13, + 32, + 20, + 231, + 182, + 199, + 186, + 188, + 34, + 122, + 225, + 10, + 91, + 218, + 28, + 250, + 3, + 191, + 87, + 232, + 219, + 98, + 24, + 115, + 180, + 134, + 163, + 45, + 64, + 166, + 117, + 216, + 135, + 43, + 14, + 148, + 99, + 180, + 198, + 243, + 83, + 40, + 52, + 229, + 170, + 162, + 53, + 4, + 123, + 74, + 168, + 9, + 57, + 102, + 55, + 55, + 35, + 140, + 36, + 11, + 112, + 237, + 198, + 138, + 158, + 212, + 93, + 210, + 98, + 180, + 235, + 18, + 110, + 250, + 88, + 225, + 214, + 238, + 106, + 25, + 32, + 119, + 54, + 249, + 201, + 89, + 203, + 99, + 135, + 67, + 246, + 217, + 137, + 236, + 248, + 87, + 221, + 178, + 5, + 26, + 181, + 139, + 222, + 138, + 30, + 59, + 52, + 218, + 63, + 22, + 69, + 156, + 22, + 77, + 69, + 201, + 27, + 121, + 54, + 0, + 55, + 2, + 223, + 204, + 158, + 13, + 160, + 161, + 99, + 196, + 103, + 74, + 124, + 65, + 110, + 150, + 25, + 104, + 212, + 77, + 183, + 217, + 40, + 100, + 23, + 166, + 53, + 99, + 26, + 212, + 245, + 4, + 45, + 249, + 242, + 205, + 94, + 96, + 2, + 94, + 67, + 159, + 102, + 149, + 27, + 180, + 91, + 55, + 79, + 239, + 195, + 14, + 218, + 97, + 12, + 237, + 57, + 149, + 44, + 125, + 60, + 175, + 71, + 112, + 167, + 6, + 100, + 5, + 132, + 131, + 119, + 167, + 78, + 91, + 148, + 64, + 102, + 76, + 201, + 236, + 134, + 218, + 38, + 131, + 249, + 201, + 189, + 79, + 7, + 183, + 96, + 75, + 108, + 136, + 85, + 68, + 218, + 214, + 132, + 177, + 99, + 229, + 88, + 213, + 154, + 122, + 0, + 206, + 29, + 14, + 232, + 180, + 86, + 79, + 1, + 157, + 28, + 28, + 238, + 213, + 44, + 42, + 78, + 231, + 95, + 118, + 166, + 152, + 145, + 243, + 184, + 134, + 188, + 130, + 138, + 190, + 138, + 95, + 117, + 72, + 239, + 196, + 219, + 101, + 161, + 79, + 74, + 151, + 183, + 207, + 51, + 55, + 210, + 3, + 230, + 117, + 218, + 107, + 77, + 105, + 26, + 63, + 188, + 79, + 132, + 141, + 110, + 144, + 61, + 182, + 59, + 65, + 166, + 54, + 65, + 71, + 5, + 55, + 131, + 122, + 0, + 208, + 186, + 254, + 52, + 107, + 100, + 188, + 229, + 161, + 166, + 228, + 104, + 99, + 203, + 117, + 155, + 39, + 154, + 10, + 14, + 253, + 242, + 186, + 165, + 42, + 10, + 154, + 250, + 250, + 245, + 69, + 168, + 213, + 20, + 88, + 178, + 21, + 143, + 80, + 43, + 105, + 66, + 173, + 114, + 234, + 203, + 177, + 75, + 115, + 30, + 248, + 147, + 22, + 59, + 69, + 231, + 60, + 152, + 60, + 99, + 173, + 69, + 149, + 147, + 9, + 107, + 88, + 40, + 139, + 105, + 246, + 162, + 157, + 3, + 188, + 202, + 111, + 44, + 212, + 166, + 0, + 79, + 9, + 77, + 255, + 190, + 147, + 220, + 235, + 134, + 37, + 235, + 85, + 175, + 164, + 42, + 49, + 104, + 128, + 174, + 149, + 180, + 208, + 154, + 51, + 210, + 120, + 186, + 247, + 238, + 14, + 241, + 159, + 42, + 164, + 52, + 220, + 124, + 119, + 199, + 190, + 136, + 69, + 151, + 37, + 3, + 178, + 49, + 26, + 253, + 73, + 81, + 9, + 88, + 105, + 248, + 26, + 251, + 207, + 99, + 16, + 143, + 182, + 97, + 96, + 167, + 131, + 248, + 102, + 24, + 54, + 67, + 192, + 252, + 95, + 72, + 24, + 79, + 60, + 129, + 102, + 167, + 71, + 26, + 201, + 0, + 215, + 116, + 230, + 213, + 126, + 64, + 86, + 108, + 206, + 85, + 155, + 19, + 4, + 59, + 13, + 110, + 200, + 179, + 127, + 44, + 49, + 184, + 57, + 118, + 171, + 205, + 128, + 156, + 218, + 27, + 220, + 183, + 145, + 191, + 26, + 193, + 144, + 113, + 27, + 250, + 97, + 123, + 162, + 239, + 102, + 107, + 30, + 63, + 60, + 96, + 53, + 230, + 86, + 186, + 230, + 205, + 102, + 44, + 61, + 76, + 55, + 214, + 11, + 76, + 176, + 220, + 139, + 185, + 33, + 5, + 102, + 33, + 40, + 113, + 99, + 94, + 153, + 27, + 29, + 233, + 214, + 193, + 71, + 245, + 114, + 26, + 164, + 247, + 196, + 24, + 254, + 24, + 75, + 26, + 96, + 210, + 25, + 171, + 46, + 67, + 96, + 19, + 134, + 54, + 130, + 153, + 168, + 51, + 69, + 7, + 94, + 223, + 197, + 190, + 148, + 171, + 220, + 119, + 18, + 233, + 94, + 182, + 83, + 131, + 238, + 4, + 33, + 233, + 81, + 85, + 233, + 60, + 14, + 66, + 204, + 208, + 85, + 255, + 65, + 82, + 247, + 182, + 204, + 182, + 222, + 198, + 145, + 204, + 13, + 19, + 181, + 211, + 151, + 123, + 49, + 76, + 91, + 49, + 114, + 114, + 133, + 230, + 27, + 120, + 237, + 101, + 104, + 109, + 19, + 112, + 175, + 131, + 96, + 239, + 221, + 72, + 25, + 208, + 177, + 110, + 175, + 250, + 136, + 38, + 123, + 204, + 145, + 249, + 188, + 156, + 158, + 94, + 27, + 79, + 96, + 11, + 223, + 79, + 213, + 210, + 105, + 128, + 232, + 12, + 33, + 235, + 123, + 71, + 223, + 135, + 116, + 179, + 52, + 113, + 33, + 117, + 223, + 79, + 68, + 123, + 189, + 236, + 17, + 181, + 153, + 178, + 33, + 219, + 120, + 66, + 239, + 212, + 3, + 39, + 129, + 197, + 40, + 174, + 63, + 60, + 35, + 22, + 109, + 6, + 207, + 54, + 61, + 131, + 104, + 180, + 139, + 88, + 244, + 13, + 221, + 146, + 107, + 58, + 30, + 86, + 24, + 60, + 98, + 80, + 162, + 74, + 40, + 6, + 28, + 36, + 33, + 119, + 241, + 21, + 189, + 203, + 185, + 209, + 200, + 147, + 138, + 232, + 252, + 131, + 83, + 140, + 211, + 123, + 135, + 104, + 218, + 247, + 232, + 204, + 133, + 111, + 108, + 161, + 165, + 107, + 249, + 174, + 2, + 190, + 211, + 251, + 168, + 112, + 16, + 93, + 192, + 54, + 70, + 163, + 83, + 57, + 18, + 2, + 175, + 56, + 179, + 247, + 29, + 231, + 94, + 5, + 90, + 225, + 161, + 225, + 38, + 83, + 69, + 107, + 38, + 200, + 32, + 13, + 117, + 13, + 231, + 78, + 244, + 133, + 156, + 247, + 218, + 147, + 216, + 2, + 211, + 26, + 27, + 248, + 184, + 13, + 214, + 196, + 176, + 73, + 219, + 157, + 77, + 230, + 249, + 104, + 162, + 157, + 196, + 29, + 100, + 199, + 43, + 66, + 226, + 78, + 117, + 142, + 166, + 239, + 246, + 120, + 255, + 69, + 216, + 100, + 157, + 126, + 213, + 183, + 18, + 35, + 134, + 44, + 115, + 123, + 238, + 180, + 146, + 232, + 173, + 54, + 105, + 57, + 135, + 74, + 27, + 133, + 71, + 238, + 153, + 205, + 20, + 251, + 224, + 23, + 108, + 117, + 46, + 212, + 155, + 15, + 127, + 160, + 42, + 55, + 27, + 222, + 162, + 152, + 189, + 198, + 215, + 194, + 51, + 180, + 92, + 248, + 189, + 154, + 208, + 105, + 180, + 237, + 74, + 240, + 213, + 113, + 42, + 208, + 168, + 29, + 139, + 100, + 194, + 146, + 209, + 184, + 98, + 179, + 14, + 48, + 164, + 56, + 248, + 42, + 83, + 77, + 188, + 15, + 245, + 107, + 45, + 152, + 27, + 67, + 143, + 160, + 106, + 214, + 25, + 194, + 154, + 60, + 163, + 66, + 228, + 161, + 126, + 160, + 189, + 190, + 82, + 128, + 155, + 83, + 145, + 188, + 83, + 219, + 232, + 58, + 228, + 167, + 86, + 207, + 84, + 106, + 129, + 71, + 175, + 112, + 197, + 26, + 252, + 179, + 28, + 40, + 82, + 210, + 206, + 8, + 28, + 113, + 208, + 112, + 133, + 73, + 132, + 221, + 1, + 110, + 199, + 232, + 205, + 128, + 33, + 157, + 124, + 54, + 183, + 47, + 66, + 13, + 253, + 184, + 206, + 99, + 218, + 174, + 161, + 3, + 111, + 127, + 231, + 234, + 1, + 56, + 35, + 246, + 103, + 47, + 130, + 36, + 56, + 193, + 131, + 3, + 206, + 136, + 107, + 53, + 173, + 19, + 45, + 24, + 106, + 141, + 217, + 220, + 30, + 228, + 134, + 28, + 75, + 66, + 222, + 98, + 87, + 31, + 0, + 63, + 167, + 87, + 166, + 27, + 166, + 96, + 39, + 243, + 107, + 178, + 7, + 117, + 132, + 248, + 216, + 27, + 17, + 253, + 123, + 212, + 170, + 38, + 218, + 51, + 119, + 138, + 183, + 70, + 43, + 191, + 192, + 124, + 41, + 55, + 110, + 77, + 207, + 205, + 87, + 144, + 252, + 134, + 36, + 178, + 1, + 219, + 211, + 155, + 230, + 161, + 181, + 145, + 18, + 57, + 210, + 175, + 235, + 8, + 207, + 154, + 77, + 120, + 86, + 193, + 148, + 250, + 89, + 4, + 207, + 241, + 65, + 12, + 104, + 44, + 63, + 249, + 247, + 29, + 78, + 128, + 214, + 150, + 80, + 77, + 217, + 92, + 50, + 138, + 129, + 77, + 142, + 143, + 12, + 85, + 106, + 39, + 108, + 119, + 197, + 56, + 138, + 194, + 162, + 170, + 54, + 15, + 101, + 55, + 74, + 144, + 93, + 155, + 103, + 211, + 54, + 63, + 235, + 49, + 61, + 20, + 128, + 105, + 89, + 155, + 234, + 117, + 158, + 104, + 207, + 154, + 192, + 118, + 231, + 57, + 201, + 70, + 233, + 140, + 99, + 115, + 158, + 211, + 12, + 7, + 38, + 253, + 114, + 76, + 118, + 125, + 39, + 81, + 163, + 167, + 179, + 141, + 201, + 214, + 56, + 67, + 81, + 21, + 144, + 213, + 226, + 41, + 250, + 83, + 54, + 69, + 223, + 71, + 173, + 230, + 82, + 186, + 45, + 157, + 17, + 51, + 110, + 152, + 52, + 48, + 182, + 156, + 72, + 201, + 8, + 114, + 42, + 176, + 172, + 154, + 12, + 122, + 156, + 159, + 54, + 66, + 184, + 132, + 158, + 230, + 183, + 194, + 85, + 224, + 189, + 162, + 20, + 233, + 182, + 27, + 207, + 78, + 181, + 154, + 247, + 81, + 40, + 54, + 81, + 46, + 71, + 32, + 28, + 235, + 0, + 213, + 207, + 253, + 141, + 174, + 8, + 228, + 252, + 243, + 37, + 225, + 55, + 126, + 227, + 164, + 39, + 178, + 5, + 219, + 180, + 211, + 60, + 124, + 147, + 39, + 244, + 197, + 161, + 243, + 233, + 217, + 57, + 123, + 10, + 137, + 120, + 44, + 229, + 135, + 212, + 80, + 42, + 242, + 131, + 25, + 185, + 60, + 160, + 235, + 112, + 68, + 11, + 246, + 72, + 154, + 119, + 153, + 64, + 177, + 215, + 2, + 65, + 17, + 148, + 69, + 27, + 209, + 40, + 207, + 194, + 30, + 51, + 236, + 211, + 189, + 98, + 60, + 187, + 171, + 36, + 173, + 177, + 58, + 55, + 67, + 39, + 105, + 161, + 19, + 170, + 163, + 189, + 112, + 246, + 206, + 193, + 235, + 132, + 157, + 34, + 167, + 235, + 22, + 189, + 112, + 115, + 11, + 233, + 66, + 104, + 136, + 129, + 144, + 66, + 79, + 183, + 226, + 10, + 85, + 96, + 78, + 153, + 112, + 171, + 76, + 112, + 192, + 70, + 141, + 41, + 200, + 210, + 6, + 46, + 21, + 19, + 181, + 60, + 180, + 97, + 238, + 198, + 212, + 118, + 87, + 237, + 145, + 160, + 181, + 70, + 99, + 158, + 24, + 177, + 165, + 122, + 222, + 26, + 204, + 65, + 3, + 108, + 112, + 39, + 250, + 70, + 2, + 182, + 52, + 68, + 223, + 242, + 224, + 192, + 98, + 56, + 148, + 8, + 8, + 118, + 250, + 215, + 171, + 24, + 136, + 197, + 14, + 52, + 199, + 124, + 169, + 175, + 97, + 162, + 30, + 18, + 184, + 60, + 188, + 70, + 7, + 190, + 113, + 178, + 204, + 49, + 96, + 226, + 250, + 10, + 126, + 227, + 247, + 132, + 172, + 115, + 183, + 158, + 207, + 52, + 156, + 27, + 118, + 61, + 72, + 228, + 205, + 199, + 16, + 80, + 35, + 246, + 227, + 244, + 17, + 87, + 75, + 149, + 96, + 208, + 228, + 51, + 108, + 107, + 125, + 179, + 124, + 185, + 162, + 53, + 198, + 4, + 179, + 25, + 194, + 207, + 85, + 158, + 254, + 63, + 160, + 196, + 14, + 29, + 89, + 110, + 255, + 82, + 132, + 76, + 207, + 165, + 162, + 70, + 187, + 209, + 171, + 215, + 216, + 147, + 11, + 56, + 140, + 67, + 255, + 214, + 180, + 10, + 244, + 222, + 12, + 18, + 53, + 238, + 159, + 55, + 32, + 202, + 132, + 194, + 85, + 230, + 187, + 136, + 62, + 235, + 34, + 220, + 225, + 20, + 80, + 153, + 210, + 153, + 27, + 55, + 13, + 38, + 198, + 132, + 226, + 20, + 115, + 203, + 7, + 75, + 246, + 65, + 86, + 34, + 85, + 19, + 43, + 197, + 115, + 57, + 173, + 177, + 246, + 29, + 6, + 42, + 28, + 194, + 202, + 197, + 112, + 47, + 36, + 231, + 230, + 119, + 218, + 55, + 227, + 116, + 110, + 126, + 12, + 177, + 156, + 243, + 215, + 82, + 190, + 233, + 19, + 127, + 245, + 96, + 98, + 212, + 30, + 144, + 162, + 167, + 102, + 54, + 202, + 121, + 28, + 255, + 89, + 198, + 177, + 128, + 51, + 13, + 39, + 187, + 224, + 103, + 122, + 77, + 200, + 82, + 180, + 94, + 90, + 128, + 73, + 109, + 94, + 133, + 113, + 16, + 112, + 197, + 13, + 228, + 239, + 150, + 166, + 193, + 68, + 128, + 60, + 67, + 80, + 180, + 10, + 228, + 76, + 95, + 167, + 207, + 208, + 172, + 243, + 199, + 80, + 106, + 25, + 176, + 184, + 116, + 113, + 134, + 52, + 231, + 42, + 196, + 227, + 210, + 197, + 184, + 183, + 220, + 125, + 241, + 147, + 63, + 181, + 111, + 251, + 46, + 126, + 46, + 88, + 34, + 225, + 28, + 168, + 201, + 195, + 29, + 51, + 178, + 173, + 141, + 228, + 181, + 181, + 61, + 52, + 47, + 150, + 135, + 253, + 240, + 60, + 204, + 253, + 98, + 68, + 96, + 141, + 245, + 131, + 4, + 186, + 168, + 49, + 193, + 66, + 124, + 167, + 17, + 14, + 97, + 239, + 116, + 52, + 93, + 50, + 189, + 78, + 189, + 243, + 239, + 31, + 92, + 17, + 152, + 241, + 58, + 155, + 180, + 81, + 252, + 124, + 179, + 171, + 218, + 43, + 148, + 134, + 228, + 97, + 231, + 63, + 157, + 85, + 226, + 205, + 138, + 64, + 251, + 228, + 7, + 218, + 152, + 96, + 103, + 159, + 252, + 64, + 245, + 104, + 29, + 77, + 222, + 236, + 19, + 231, + 178, + 2, + 43, + 107, + 48, + 54, + 162, + 11, + 142, + 93, + 225, + 136, + 121, + 155, + 41, + 250, + 255, + 169, + 24, + 100, + 176, + 177, + 198, + 152, + 246, + 70, + 0, + 221, + 5, + 126, + 200, + 220, + 104, + 9, + 236, + 10, + 63, + 114, + 75, + 143, + 70, + 89, + 251, + 49, + 45, + 203, + 13, + 76, + 194, + 68, + 156, + 54, + 55, + 172, + 127, + 165, + 66, + 207, + 115, + 224, + 38, + 161, + 119, + 157, + 91, + 236, + 163, + 212, + 79, + 87, + 130, + 238, + 149, + 240, + 135, + 239, + 203, + 215, + 177, + 119, + 106, + 69, + 223, + 76, + 240, + 248, + 230, + 9, + 120, + 226, + 68, + 165, + 134, + 128, + 232, + 9, + 234, + 39, + 208, + 153, + 125, + 59, + 232, + 108, + 189, + 49, + 226, + 176, + 77, + 132, + 2, + 191, + 101, + 28, + 190, + 126, + 144, + 185, + 86, + 214, + 159, + 11, + 200, + 74, + 16, + 226, + 28, + 192, + 99, + 198, + 97, + 27, + 117, + 43, + 170, + 101, + 43, + 140, + 216, + 203, + 197, + 56, + 189, + 238, + 239, + 54, + 124, + 188, + 119, + 122, + 6, + 155, + 219, + 179, + 233, + 10, + 187, + 175, + 185, + 219, + 253, + 250, + 199, + 166, + 60, + 247, + 212, + 43, + 146, + 212, + 214, + 109, + 252, + 198, + 250, + 50, + 110, + 52, + 114, + 65, + 18, + 152, + 170, + 51, + 244, + 206, + 120, + 166, + 167, + 61, + 253, + 93, + 140, + 176, + 141, + 59, + 189, + 202, + 111, + 14, + 92, + 186, + 66, + 120, + 43, + 159, + 138, + 79, + 142, + 33, + 193, + 66, + 94, + 115, + 222, + 210, + 9, + 168, + 203, + 26, + 235, + 63, + 116, + 167, + 57, + 218, + 22, + 58, + 37, + 119, + 134, + 52, + 20, + 239, + 216, + 153, + 54, + 24, + 199, + 50, + 86, + 69, + 155, + 62, + 102, + 226, + 252, + 238, + 206, + 251, + 205, + 213, + 230, + 181, + 39, + 225, + 180, + 49, + 154, + 157, + 249, + 85, + 196, + 183, + 184, + 201, + 176, + 85, + 145, + 63, + 137, + 123, + 206, + 10, + 142, + 177, + 190, + 146, + 53, + 0, + 77, + 231, + 37, + 74, + 163, + 237, + 146, + 27, + 116, + 13, + 155, + 97, + 171, + 255, + 184, + 76, + 78, + 43, + 199, + 123, + 6, + 228, + 93, + 79, + 185, + 202, + 219, + 31, + 55, + 98, + 95, + 35, + 161, + 103, + 8, + 248, + 91, + 91, + 71, + 78, + 105, + 53, + 172, + 138, + 16, + 104, + 72, + 227, + 185, + 129, + 73, + 129, + 150, + 227, + 30, + 181, + 222, + 90, + 196, + 213, + 56, + 70, + 15, + 13, + 182, + 175, + 240, + 125, + 224, + 33, + 193, + 94, + 22, + 230, + 79, + 28, + 51, + 172, + 114, + 62, + 198, + 253, + 39, + 54, + 240, + 138, + 129, + 88, + 175, + 61, + 158, + 184, + 31, + 3, + 89, + 99, + 219, + 200, + 195, + 242, + 196, + 105, + 115, + 141, + 163, + 161, + 73, + 91, + 37, + 158, + 95, + 143, + 216, + 184, + 107, + 137, + 231, + 215, + 91, + 156, + 179, + 122, + 9, + 56, + 191, + 179, + 21, + 75, + 67, + 32, + 82, + 103, + 161, + 204, + 158, + 187, + 24, + 21, + 112, + 251, + 249, + 216, + 242, + 102, + 247, + 41, + 156, + 176, + 168, + 211, + 232, + 219, + 49, + 168, + 181, + 117, + 81, + 149, + 14, + 150, + 18, + 30, + 239, + 154, + 85, + 239, + 70, + 6, + 155, + 8, + 172, + 43, + 220, + 223, + 171, + 10, + 63, + 245, + 187, + 15, + 209, + 238, + 39, + 222, + 238, + 199, + 122, + 61, + 116, + 11, + 166, + 175, + 160, + 215, + 187, + 39, + 47, + 229, + 103, + 153, + 180, + 26, + 63, + 238, + 245, + 98, + 109, + 231, + 159, + 48, + 85, + 110, + 222, + 159, + 71, + 172, + 166, + 137, + 3, + 8, + 81, + 206, + 160, + 153, + 221, + 165, + 216, + 203, + 31, + 104, + 134, + 16, + 22, + 79, + 135, + 12, + 147, + 56, + 118, + 83, + 172, + 58, + 102, + 192, + 220, + 26, + 90, + 123, + 191, + 147, + 99, + 145, + 34, + 48, + 53, + 50, + 207, + 85, + 129, + 247, + 146, + 240, + 100, + 241, + 138, + 21, + 214, + 121, + 8, + 97, + 233, + 110, + 189, + 245, + 62, + 101, + 54, + 90, + 36, + 184, + 173, + 62, + 79, + 125, + 122, + 190, + 127, + 188, + 171, + 143, + 23, + 36, + 20, + 215, + 16, + 237, + 175, + 159, + 95, + 87, + 195, + 239, + 208, + 143, + 14, + 107, + 58, + 161, + 180, + 79, + 35, + 103, + 48, + 196, + 36, + 78, + 51, + 231, + 172, + 140, + 184, + 20, + 156, + 123, + 237, + 73, + 180, + 42, + 3, + 112, + 111, + 208, + 141, + 141, + 172, + 105, + 26, + 12, + 115, + 198, + 58, + 61, + 154, + 233, + 220, + 59, + 151, + 53, + 167, + 210, + 137, + 188, + 141, + 82, + 29, + 118, + 93, + 36, + 254, + 155, + 219, + 209, + 220, + 141, + 54, + 154, + 55, + 183, + 35, + 241, + 77, + 175, + 106, + 243, + 243, + 112, + 170, + 77, + 220, + 120, + 179, + 159, + 23, + 105, + 203, + 99, + 193, + 148, + 206, + 128, + 39, + 70, + 231, + 116, + 173, + 152, + 235, + 126, + 193, + 227, + 231, + 210, + 9, + 190, + 120, + 179, + 108, + 160, + 123, + 118, + 250, + 60, + 10, + 193, + 140, + 149, + 232, + 105, + 255, + 251, + 202, + 2, + 253, + 32, + 175, + 203, + 6, + 72, + 86, + 50, + 95, + 26, + 57, + 15, + 36, + 160, + 94, + 180, + 104, + 251, + 52, + 208, + 176, + 129, + 94, + 117, + 211, + 220, + 238, + 17, + 23, + 82, + 94, + 31, + 207, + 122, + 56, + 223, + 232, + 173, + 43, + 120, + 51, + 232, + 104, + 60, + 209, + 185, + 58, + 107, + 200, + 8, + 75, + 230, + 172, + 162, + 77, + 241, + 129, + 42, + 45, + 198, + 61, + 246, + 58, + 119, + 94, + 145, + 5, + 18, + 38, + 6, + 126, + 238, + 36, + 25, + 108, + 165, + 201, + 119, + 85, + 101, + 106, + 9, + 148, + 230, + 213, + 215, + 236, + 38, + 92, + 42, + 184, + 164, + 145, + 103, + 32, + 107, + 3, + 201, + 12, + 229, + 223, + 205, + 188, + 58, + 177, + 13, + 198, + 24, + 170, + 156, + 170, + 81, + 65, + 46, + 4, + 8, + 13, + 215, + 210, + 5, + 234, + 245, + 229, + 227, + 244, + 248, + 239, + 172, + 234, + 57, + 27, + 67, + 54, + 220, + 218, + 105, + 178, + 185, + 43, + 242, + 147, + 130, + 226, + 62, + 176, + 46, + 5, + 53, + 78, + 201, + 191, + 25, + 213, + 175, + 136, + 29, + 233, + 132, + 217, + 10, + 173, + 59, + 207, + 102, + 141, + 56, + 56, + 249, + 154, + 148, + 240, + 158, + 208, + 124, + 197, + 202, + 63, + 197, + 142, + 2, + 53, + 219, + 113, + 211, + 223, + 15, + 105, + 132, + 253, + 25, + 122, + 119, + 222, + 67, + 223, + 128, + 201, + 113, + 100, + 127, + 52, + 121, + 3, + 15, + 55, + 164, + 60, + 0, + 83, + 104, + 116, + 241, + 92, + 78, + 179, + 180, + 210, + 154, + 53, + 255, + 32, + 125, + 206, + 23, + 194, + 97, + 27, + 226, + 186, + 238, + 18, + 1, + 187, + 168, + 37, + 11, + 38, + 139, + 133, + 0, + 238, + 51, + 106, + 73, + 65, + 58, + 166, + 171, + 147, + 232, + 236, + 218, + 49, + 218, + 59, + 222, + 52, + 158, + 4, + 78, + 158, + 150, + 188, + 99, + 0, + 49, + 97, + 99, + 119, + 14, + 135, + 248, + 108, + 241, + 213, + 234, + 201, + 158, + 247, + 246, + 104, + 63, + 167, + 173, + 204, + 49, + 185, + 145, + 107, + 123, + 227, + 173, + 44, + 99, + 12, + 125, + 67, + 191, + 95, + 164, + 24, + 29, + 229, + 255, + 148, + 135, + 209, + 199, + 9, + 113, + 47, + 23, + 165, + 144, + 19, + 242, + 29, + 192, + 59, + 7, + 46, + 75, + 173, + 101, + 44, + 145, + 194, + 92, + 179, + 209, + 125, + 137, + 104, + 195, + 18, + 11, + 29, + 79, + 138, + 210, + 55, + 102, + 48, + 26, + 225, + 40, + 174, + 210, + 68, + 22, + 216, + 166, + 16, + 169, + 45, + 68, + 42, + 20, + 253, + 207, + 39, + 195, + 86, + 175, + 145, + 251, + 232, + 32, + 6, + 131, + 98, + 85, + 201, + 165, + 237, + 47, + 57, + 178, + 62, + 194, + 40, + 181, + 243, + 202, + 86, + 88, + 212, + 105, + 115, + 225, + 121, + 109, + 54, + 98, + 155, + 139, + 103, + 225, + 212, + 199, + 48, + 148, + 235, + 234, + 165, + 209, + 27, + 137, + 93, + 106, + 176, + 227, + 58, + 240, + 218, + 42, + 123, + 129, + 184, + 115, + 197, + 196, + 161, + 193, + 234, + 157, + 167, + 167, + 99, + 175, + 176, + 207, + 84, + 21, + 112, + 9, + 160, + 238, + 240, + 164, + 254, + 94, + 164, + 24, + 91, + 30, + 144, + 215, + 233, + 50, + 176, + 17, + 108, + 98, + 24, + 174, + 245, + 112, + 18, + 122, + 115, + 184, + 159, + 140, + 5, + 28, + 27, + 132, + 84, + 245, + 91, + 232, + 34, + 251, + 208, + 32, + 161, + 96, + 189, + 159, + 142, + 239, + 26, + 11, + 135, + 21, + 76, + 59, + 85, + 59, + 194, + 27, + 182, + 247, + 221, + 162, + 29, + 108, + 103, + 144, + 212, + 113, + 106, + 161, + 102, + 236, + 130, + 43, + 196, + 189, + 75, + 140, + 190, + 135, + 128, + 235, + 55, + 155, + 163, + 233, + 152, + 176, + 88, + 67, + 163, + 242, + 42, + 250, + 226, + 214, + 62, + 137, + 245, + 121, + 42, + 106, + 236, + 141, + 248, + 98, + 143, + 83, + 88, + 214, + 105, + 143, + 109, + 160, + 195, + 187, + 50, + 193, + 232, + 249, + 152, + 65, + 74, + 87, + 114, + 14, + 199, + 190, + 47, + 240, + 106, + 110, + 224, + 115, + 1, + 47, + 108, + 12, + 58, + 212, + 133, + 32, + 194, + 161, + 231, + 246, + 123, + 169, + 193, + 124, + 101, + 77, + 32, + 253, + 54, + 98, + 205, + 179, + 32, + 247, + 131, + 182, + 122, + 241, + 164, + 110, + 30, + 60, + 64, + 14, + 70, + 159, + 209, + 103, + 166, + 1, + 239, + 41, + 118, + 132, + 248, + 96, + 23, + 226, + 147, + 159, + 166, + 211, + 236, + 36, + 250, + 254, + 93, + 129, + 10, + 53, + 66, + 10, + 12, + 166, + 16, + 78, + 105, + 134, + 79, + 111, + 48, + 232, + 104, + 132, + 112, + 22, + 3, + 227, + 138, + 113, + 255, + 102, + 252, + 201, + 20, + 84, + 6, + 54, + 66, + 180, + 230, + 137, + 166, + 52, + 66, + 197, + 219, + 43, + 132, + 130, + 115, + 114, + 66, + 250, + 65, + 233, + 8, + 135, + 158, + 218, + 48, + 145, + 27, + 185, + 197, + 46, + 44, + 66, + 102, + 14, + 187, + 39, + 125, + 54, + 78, + 69, + 196, + 71, + 13, + 140, + 117, + 54, + 246, + 46, + 112, + 18, + 236, + 177, + 102, + 24, + 213, + 114, + 145, + 66, + 241, + 54, + 31, + 155, + 218, + 58, + 143, + 91, + 157, + 238, + 216, + 232, + 223, + 229, + 92, + 32, + 50, + 14, + 163, + 199, + 10, + 33, + 127, + 79, + 12, + 228, + 143, + 225, + 34, + 55, + 196, + 142, + 59, + 112, + 85, + 112, + 7, + 125, + 22, + 134, + 162, + 197, + 202, + 118, + 84, + 116, + 35, + 114, + 87, + 115, + 9, + 211, + 202, + 170, + 224, + 142, + 171, + 135, + 230, + 83, + 55, + 162, + 75, + 116, + 249, + 212, + 189, + 8, + 79, + 123, + 116, + 69, + 52, + 104, + 122, + 80, + 122, + 39, + 173, + 195, + 157, + 33, + 111, + 77, + 194, + 215, + 197, + 4, + 29, + 120, + 7, + 78, + 216, + 179, + 51, + 72, + 221, + 101, + 69, + 67, + 48, + 108, + 179, + 246, + 9, + 102, + 138, + 119, + 171, + 126, + 176, + 26, + 141, + 192, + 157, + 227, + 69, + 91, + 105, + 63, + 93, + 142, + 54, + 190, + 21, + 183, + 91, + 12, + 184, + 180, + 145, + 191, + 225, + 209, + 110, + 36, + 177, + 243, + 196, + 37, + 220, + 238, + 18, + 35, + 173, + 232, + 190, + 90, + 16, + 27, + 17, + 91, + 35, + 244, + 47, + 164, + 192, + 56, + 48, + 92, + 121, + 47, + 153, + 96, + 52, + 68, + 46, + 186, + 172, + 200, + 8, + 27, + 115, + 86, + 68, + 189, + 91, + 192, + 97, + 150, + 37, + 253, + 144, + 249, + 157, + 167, + 19, + 52, + 243, + 125, + 169, + 161, + 95, + 155, + 97, + 201, + 108, + 228, + 216, + 203, + 94, + 224, + 41, + 204, + 161, + 103, + 205, + 21, + 200, + 234, + 203, + 96, + 171, + 83, + 147, + 34, + 159, + 254, + 52, + 156, + 169, + 17, + 110, + 100, + 131, + 235, + 118, + 123, + 85, + 102, + 141, + 39, + 47, + 83, + 99, + 120, + 235, + 77, + 200, + 180, + 36, + 180, + 108, + 171, + 50, + 107, + 142, + 245, + 72, + 19, + 112, + 104, + 163, + 79, + 194, + 151, + 46, + 58, + 233, + 10, + 247, + 164, + 248, + 63, + 40, + 56, + 242, + 115, + 121, + 17, + 78, + 6, + 52, + 91, + 126, + 204, + 58, + 241, + 143, + 153, + 219, + 73, + 140, + 123, + 233, + 17, + 202, + 66, + 77, + 40, + 203, + 179, + 206, + 228, + 151, + 207, + 191, + 228, + 170, + 72, + 228, + 112, + 45, + 55, + 134, + 49, + 56, + 106, + 179, + 54, + 135, + 197, + 78, + 33, + 102, + 188, + 228, + 24, + 164, + 195, + 131, + 77, + 185, + 177, + 2, + 81, + 241, + 96, + 83, + 14, + 131, + 51, + 11, + 5, + 215, + 147, + 0, + 184, + 192, + 137, + 163, + 84, + 120, + 154, + 91, + 62, + 106, + 99, + 120, + 162, + 235, + 161, + 116, + 197, + 201, + 35, + 133, + 66, + 172, + 185, + 240, + 68, + 183, + 8, + 221, + 58, + 26, + 251, + 25, + 232, + 30, + 161, + 115, + 37, + 145, + 220, + 207, + 244, + 105, + 167, + 191, + 76, + 20, + 220, + 224, + 160, + 49, + 90, + 0, + 221, + 71, + 116, + 9, + 135, + 221, + 144, + 148, + 21, + 244, + 204, + 196, + 236, + 24, + 183, + 217, + 32, + 210, + 26, + 127, + 182, + 24, + 148, + 70, + 60, + 14, + 27, + 241, + 143, + 119, + 98, + 71, + 17, + 14, + 216, + 187, + 51, + 209, + 149, + 80, + 97, + 172, + 17, + 182, + 166, + 73, + 51, + 110, + 84, + 239, + 107, + 119, + 74, + 206, + 152, + 187, + 147, + 228, + 35, + 8, + 40, + 24, + 206, + 143, + 34, + 17, + 73, + 28, + 154, + 227, + 78, + 80, + 71, + 28, + 154, + 211, + 80, + 207, + 158, + 195, + 22, + 217, + 41, + 188, + 53, + 70, + 128, + 204, + 115, + 8, + 221, + 191, + 171, + 237, + 102, + 205, + 99, + 8, + 45, + 14, + 14, + 238, + 101, + 236, + 208, + 94, + 192, + 19, + 195, + 144, + 167, + 42, + 192, + 132, + 32, + 204, + 225, + 227, + 200, + 232, + 27, + 85, + 124, + 105, + 121, + 159, + 189, + 211, + 33, + 135, + 208, + 15, + 110, + 75, + 190, + 71, + 212, + 194, + 122, + 10, + 97, + 199, + 122, + 182, + 236, + 70, + 214, + 11, + 47, + 103, + 211, + 97, + 60, + 55, + 91, + 9, + 59, + 188, + 25, + 116, + 140, + 78, + 255, + 238, + 189, + 220, + 195, + 57, + 252, + 198, + 87, + 2, + 74, + 106, + 116, + 35, + 116, + 203, + 249, + 29, + 194, + 35, + 117, + 27, + 28, + 52, + 140, + 233, + 153, + 25, + 66, + 152, + 106, + 114, + 122, + 65, + 51, + 153, + 32, + 172, + 141, + 244, + 126, + 79, + 39, + 211, + 17, + 231, + 119, + 22, + 200, + 85, + 23, + 210, + 183, + 59, + 84, + 128, + 134, + 32, + 179, + 17, + 191, + 23, + 111, + 253, + 178, + 133, + 228, + 247, + 71, + 167, + 186, + 7, + 33, + 86, + 250, + 24, + 86, + 85, + 95, + 230, + 209, + 224, + 157, + 12, + 39, + 143, + 167, + 89, + 161, + 118, + 163, + 119, + 13, + 81, + 239, + 163, + 237, + 217, + 56, + 48, + 213, + 157, + 40, + 147, + 120, + 105, + 253, + 198, + 93, + 9, + 231, + 49, + 217, + 48, + 119, + 249, + 253, + 122, + 148, + 159, + 175, + 160, + 144, + 40, + 5, + 129, + 109, + 111, + 217, + 231, + 156, + 159, + 38, + 15, + 158, + 115, + 230, + 74, + 81, + 32, + 133, + 128, + 195, + 200, + 225, + 150, + 35, + 30, + 211, + 162, + 9, + 106, + 168, + 114, + 132, + 176, + 113, + 23, + 194, + 118, + 14, + 70, + 213, + 210, + 191, + 205, + 207, + 126, + 183, + 232, + 183, + 54, + 61, + 70, + 14, + 218, + 157, + 91, + 194, + 116, + 27, + 147, + 47, + 32, + 101, + 109, + 204, + 124, + 207, + 45, + 135, + 190, + 2, + 231, + 227, + 92, + 94, + 167, + 158, + 172, + 209, + 72, + 111, + 114, + 211, + 168, + 29, + 119, + 142, + 159, + 172, + 209, + 135, + 191, + 105, + 111, + 159, + 182, + 210, + 88, + 159, + 227, + 112, + 168, + 125, + 112, + 232, + 135, + 250, + 202, + 33, + 245, + 212, + 173, + 168, + 102, + 222, + 128, + 236, + 153, + 58, + 187, + 213, + 98, + 72, + 24, + 198, + 198, + 216, + 190, + 42, + 181, + 85, + 206, + 59, + 34, + 181, + 192, + 188, + 57, + 28, + 246, + 164, + 70, + 11, + 61, + 143, + 145, + 35, + 95, + 200, + 195, + 81, + 120, + 44, + 136, + 206, + 101, + 161, + 233, + 108, + 172, + 1, + 28, + 99, + 128, + 39, + 29, + 119, + 166, + 190, + 9, + 224, + 222, + 113, + 157, + 125, + 236, + 165, + 149, + 142, + 243, + 39, + 130, + 229, + 54, + 156, + 81, + 4, + 144, + 180, + 21, + 145, + 51, + 192, + 189, + 98, + 68, + 238, + 151, + 211, + 64, + 181, + 215, + 211, + 211, + 79, + 47, + 205, + 3, + 153, + 90, + 115, + 198, + 201, + 4, + 134, + 142, + 184, + 143, + 206, + 79, + 226, + 114, + 191, + 112, + 203, + 188, + 146, + 155, + 118, + 197, + 25, + 232, + 77, + 254, + 166, + 111, + 79, + 90, + 188, + 121, + 28, + 237, + 213, + 152, + 45, + 197, + 50, + 97, + 77, + 219, + 223, + 69, + 218, + 117, + 195, + 137, + 223, + 22, + 48, + 199, + 100, + 235, + 186, + 238, + 76, + 18, + 238, + 66, + 46, + 242, + 204, + 38, + 93, + 209, + 40, + 25, + 97, + 173, + 78, + 114, + 190, + 160, + 130, + 137, + 197, + 170, + 147, + 107, + 180, + 238, + 43, + 49, + 82, + 153, + 155, + 80, + 234, + 35, + 93, + 114, + 51, + 148, + 233, + 231, + 2, + 105, + 36, + 20, + 202, + 116, + 43, + 202, + 25, + 111, + 200, + 221, + 240, + 159, + 77, + 88, + 131, + 195, + 77, + 175, + 202, + 64, + 26, + 222, + 109, + 10, + 155, + 144, + 63, + 157, + 2, + 98, + 159, + 79, + 19, + 5, + 101, + 154, + 231, + 8, + 116, + 214, + 37, + 2, + 50, + 102, + 120, + 156, + 124, + 226, + 51, + 220, + 133, + 16, + 177, + 193, + 224, + 233, + 181, + 127, + 27, + 207, + 129, + 188, + 40, + 224, + 208, + 178, + 238, + 138, + 211, + 220, + 149, + 36, + 250, + 52, + 31, + 240, + 66, + 228, + 252, + 173, + 251, + 247, + 70, + 234, + 151, + 41, + 144, + 179, + 255, + 218, + 145, + 166, + 59, + 203, + 158, + 111, + 95, + 154, + 146, + 1, + 185, + 202, + 231, + 55, + 218, + 83, + 232, + 39, + 116, + 8, + 93, + 241, + 96, + 87, + 229, + 254, + 241, + 251, + 222, + 43, + 9, + 204, + 145, + 0, + 35, + 141, + 46, + 225, + 30, + 104, + 114, + 196, + 232, + 255, + 3, + 79, + 202, + 151, + 47, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 49, + 51, + 57, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 217, + 142, + 100, + 201, + 113, + 229, + 123, + 125, + 69, + 254, + 0, + 141, + 182, + 186, + 187, + 1, + 4, + 129, + 94, + 216, + 194, + 60, + 8, + 24, + 9, + 253, + 7, + 212, + 2, + 12, + 192, + 135, + 209, + 252, + 63, + 48, + 176, + 168, + 162, + 58, + 162, + 211, + 44, + 227, + 186, + 167, + 85, + 86, + 73, + 51, + 146, + 0, + 82, + 25, + 89, + 145, + 119, + 241, + 205, + 142, + 157, + 133, + 94, + 240, + 5, + 95, + 254, + 64, + 47, + 248, + 178, + 148, + 95, + 254, + 250, + 183, + 79, + 255, + 251, + 19, + 76, + 187, + 253, + 244, + 239, + 255, + 249, + 215, + 191, + 125, + 162, + 151, + 248, + 223, + 127, + 254, + 135, + 219, + 127, + 208, + 203, + 127, + 252, + 251, + 167, + 63, + 254, + 131, + 188, + 252, + 251, + 255, + 249, + 20, + 159, + 79, + 215, + 23, + 34, + 150, + 151, + 255, + 248, + 215, + 79, + 255, + 246, + 233, + 159, + 126, + 247, + 13, + 147, + 227, + 255, + 254, + 250, + 183, + 219, + 175, + 98, + 124, + 199, + 231, + 255, + 242, + 219, + 119, + 252, + 241, + 127, + 190, + 252, + 233, + 79, + 127, + 252, + 199, + 159, + 254, + 199, + 207, + 47, + 248, + 242, + 231, + 63, + 255, + 248, + 243, + 79, + 159, + 126, + 252, + 245, + 211, + 31, + 127, + 209, + 23, + 82, + 24, + 241, + 63, + 243, + 229, + 215, + 127, + 251, + 68, + 191, + 93, + 42, + 232, + 244, + 69, + 83, + 252, + 229, + 215, + 248, + 222, + 63, + 144, + 0, + 207, + 41, + 42, + 235, + 229, + 215, + 127, + 121, + 249, + 19, + 162, + 141, + 63, + 191, + 252, + 250, + 191, + 62, + 77, + 16, + 94, + 196, + 113, + 49, + 95, + 126, + 206, + 183, + 159, + 47, + 32, + 35, + 194, + 185, + 126, + 251, + 192, + 110, + 31, + 40, + 172, + 133, + 67, + 237, + 202, + 7, + 63, + 221, + 62, + 24, + 192, + 226, + 54, + 23, + 255, + 231, + 7, + 248, + 203, + 237, + 131, + 191, + 252, + 186, + 117, + 23, + 98, + 96, + 198, + 113, + 73, + 175, + 239, + 6, + 229, + 232, + 27, + 29, + 6, + 43, + 154, + 38, + 223, + 168, + 86, + 61, + 135, + 85, + 125, + 48, + 79, + 174, + 193, + 28, + 220, + 23, + 171, + 181, + 221, + 213, + 80, + 192, + 137, + 204, + 148, + 189, + 245, + 159, + 118, + 223, + 122, + 121, + 183, + 118, + 114, + 109, + 206, + 96, + 139, + 24, + 103, + 219, + 221, + 250, + 128, + 97, + 66, + 75, + 178, + 119, + 248, + 243, + 237, + 27, + 5, + 216, + 6, + 169, + 203, + 243, + 219, + 253, + 242, + 214, + 55, + 175, + 129, + 104, + 0, + 19, + 153, + 246, + 13, + 77, + 98, + 4, + 94, + 98, + 156, + 142, + 205, + 159, + 170, + 251, + 26, + 71, + 127, + 75, + 16, + 214, + 152, + 211, + 27, + 47, + 95, + 20, + 92, + 124, + 206, + 236, + 242, + 141, + 170, + 49, + 197, + 173, + 83, + 139, + 204, + 64, + 72, + 124, + 244, + 205, + 45, + 50, + 7, + 89, + 230, + 154, + 78, + 46, + 188, + 125, + 37, + 49, + 48, + 174, + 57, + 241, + 213, + 74, + 184, + 251, + 199, + 230, + 2, + 103, + 94, + 218, + 119, + 249, + 139, + 193, + 93, + 87, + 122, + 245, + 178, + 189, + 240, + 63, + 153, + 69, + 201, + 7, + 191, + 20, + 3, + 87, + 203, + 101, + 166, + 124, + 166, + 68, + 39, + 79, + 128, + 21, + 1, + 105, + 52, + 110, + 34, + 172, + 10, + 184, + 214, + 28, + 201, + 55, + 202, + 231, + 247, + 190, + 64, + 217, + 99, + 137, + 79, + 159, + 28, + 223, + 205, + 223, + 117, + 116, + 5, + 99, + 193, + 98, + 100, + 238, + 187, + 167, + 201, + 176, + 60, + 223, + 66, + 180, + 56, + 56, + 168, + 22, + 247, + 116, + 246, + 158, + 124, + 128, + 49, + 91, + 223, + 61, + 9, + 34, + 152, + 171, + 165, + 99, + 255, + 243, + 250, + 18, + 27, + 39, + 185, + 83, + 58, + 44, + 209, + 239, + 111, + 246, + 126, + 32, + 139, + 254, + 254, + 231, + 187, + 151, + 70, + 14, + 194, + 238, + 125, + 247, + 202, + 2, + 138, + 180, + 178, + 49, + 249, + 112, + 233, + 67, + 71, + 58, + 40, + 31, + 110, + 182, + 92, + 0, + 244, + 104, + 89, + 22, + 157, + 176, + 20, + 87, + 227, + 57, + 206, + 8, + 156, + 242, + 133, + 146, + 253, + 203, + 93, + 185, + 241, + 144, + 49, + 211, + 241, + 122, + 237, + 118, + 173, + 26, + 225, + 229, + 40, + 169, + 254, + 68, + 53, + 87, + 206, + 30, + 168, + 198, + 111, + 25, + 207, + 190, + 67, + 149, + 210, + 130, + 201, + 58, + 229, + 217, + 92, + 25, + 120, + 55, + 246, + 127, + 44, + 110, + 170, + 122, + 108, + 103, + 55, + 171, + 2, + 52, + 177, + 111, + 174, + 168, + 78, + 96, + 229, + 229, + 207, + 14, + 90, + 247, + 211, + 220, + 143, + 254, + 146, + 41, + 216, + 36, + 164, + 190, + 107, + 183, + 5, + 67, + 37, + 253, + 198, + 242, + 117, + 28, + 237, + 49, + 58, + 21, + 98, + 241, + 108, + 124, + 238, + 211, + 1, + 105, + 82, + 182, + 12, + 216, + 15, + 159, + 119, + 125, + 4, + 91, + 202, + 230, + 87, + 55, + 153, + 106, + 140, + 189, + 30, + 172, + 103, + 39, + 101, + 163, + 9, + 130, + 210, + 56, + 211, + 140, + 9, + 100, + 218, + 222, + 76, + 251, + 178, + 82, + 239, + 254, + 41, + 17, + 48, + 95, + 171, + 111, + 75, + 53, + 153, + 48, + 102, + 94, + 145, + 63, + 172, + 162, + 100, + 156, + 31, + 245, + 238, + 95, + 85, + 117, + 174, + 168, + 128, + 138, + 213, + 57, + 190, + 109, + 17, + 140, + 209, + 57, + 55, + 241, + 229, + 15, + 194, + 48, + 38, + 173, + 105, + 79, + 15, + 179, + 103, + 23, + 205, + 8, + 98, + 190, + 166, + 191, + 254, + 83, + 191, + 93, + 115, + 130, + 54, + 17, + 18, + 160, + 199, + 77, + 190, + 137, + 58, + 253, + 229, + 31, + 127, + 186, + 71, + 158, + 168, + 11, + 121, + 234, + 43, + 52, + 202, + 175, + 170, + 235, + 137, + 242, + 44, + 83, + 149, + 38, + 205, + 40, + 150, + 25, + 184, + 136, + 242, + 232, + 195, + 123, + 16, + 226, + 108, + 130, + 217, + 188, + 230, + 159, + 238, + 150, + 144, + 105, + 191, + 157, + 126, + 240, + 243, + 10, + 203, + 16, + 95, + 164, + 100, + 23, + 74, + 180, + 163, + 219, + 157, + 2, + 178, + 230, + 162, + 190, + 21, + 115, + 78, + 80, + 243, + 233, + 41, + 224, + 83, + 22, + 158, + 71, + 243, + 203, + 5, + 230, + 96, + 108, + 60, + 108, + 248, + 132, + 37, + 226, + 233, + 73, + 245, + 113, + 211, + 155, + 90, + 156, + 160, + 30, + 110, + 171, + 4, + 130, + 102, + 241, + 222, + 235, + 127, + 81, + 129, + 50, + 250, + 195, + 17, + 210, + 160, + 2, + 106, + 182, + 172, + 111, + 156, + 147, + 78, + 48, + 158, + 75, + 178, + 129, + 254, + 229, + 68, + 246, + 250, + 134, + 159, + 225, + 217, + 187, + 23, + 49, + 20, + 134, + 144, + 141, + 190, + 141, + 130, + 198, + 130, + 137, + 146, + 163, + 208, + 63, + 110, + 191, + 121, + 60, + 186, + 6, + 103, + 16, + 242, + 206, + 183, + 229, + 3, + 196, + 41, + 189, + 171, + 122, + 17, + 174, + 238, + 234, + 203, + 32, + 76, + 158, + 67, + 245, + 128, + 206, + 170, + 11, + 102, + 5, + 71, + 54, + 233, + 131, + 82, + 120, + 129, + 207, + 20, + 222, + 175, + 95, + 238, + 254, + 238, + 85, + 253, + 139, + 67, + 148, + 108, + 48, + 200, + 66, + 109, + 124, + 12, + 99, + 128, + 26, + 107, + 186, + 73, + 253, + 88, + 157, + 246, + 171, + 163, + 226, + 253, + 150, + 60, + 228, + 157, + 59, + 50, + 187, + 129, + 186, + 75, + 223, + 216, + 103, + 247, + 40, + 244, + 196, + 158, + 237, + 200, + 247, + 135, + 250, + 135, + 29, + 217, + 238, + 128, + 138, + 179, + 25, + 45, + 180, + 96, + 24, + 166, + 16, + 222, + 41, + 168, + 196, + 48, + 57, + 69, + 25, + 239, + 55, + 143, + 71, + 44, + 229, + 168, + 82, + 17, + 113, + 64, + 86, + 109, + 188, + 118, + 21, + 64, + 31, + 146, + 29, + 67, + 74, + 48, + 182, + 186, + 169, + 18, + 21, + 60, + 43, + 42, + 101, + 42, + 172, + 57, + 27, + 97, + 126, + 137, + 198, + 129, + 122, + 218, + 19, + 123, + 90, + 131, + 148, + 183, + 53, + 95, + 85, + 96, + 85, + 197, + 182, + 246, + 138, + 244, + 251, + 197, + 253, + 226, + 131, + 62, + 218, + 187, + 213, + 8, + 212, + 40, + 61, + 40, + 159, + 226, + 47, + 6, + 198, + 5, + 254, + 98, + 197, + 83, + 40, + 97, + 214, + 251, + 85, + 205, + 197, + 222, + 185, + 172, + 233, + 98, + 32, + 233, + 236, + 116, + 232, + 26, + 183, + 65, + 147, + 30, + 84, + 42, + 68, + 179, + 21, + 40, + 55, + 68, + 88, + 147, + 169, + 111, + 95, + 50, + 12, + 92, + 75, + 137, + 143, + 143, + 41, + 247, + 16, + 250, + 195, + 49, + 229, + 254, + 41, + 220, + 237, + 244, + 56, + 126, + 43, + 33, + 75, + 132, + 135, + 207, + 16, + 30, + 37, + 24, + 241, + 253, + 109, + 79, + 71, + 13, + 198, + 92, + 233, + 154, + 79, + 88, + 0, + 60, + 119, + 59, + 28, + 35, + 223, + 149, + 150, + 247, + 59, + 28, + 186, + 189, + 119, + 135, + 179, + 225, + 48, + 90, + 177, + 184, + 41, + 48, + 209, + 39, + 215, + 227, + 251, + 0, + 85, + 90, + 3, + 27, + 151, + 246, + 191, + 163, + 74, + 108, + 44, + 143, + 77, + 131, + 141, + 99, + 100, + 93, + 227, + 151, + 85, + 133, + 95, + 88, + 234, + 175, + 97, + 57, + 71, + 173, + 112, + 67, + 48, + 100, + 11, + 176, + 248, + 247, + 183, + 255, + 54, + 210, + 37, + 8, + 180, + 12, + 205, + 119, + 144, + 46, + 110, + 66, + 186, + 106, + 14, + 81, + 89, + 148, + 86, + 96, + 211, + 233, + 57, + 30, + 6, + 117, + 78, + 17, + 65, + 24, + 203, + 242, + 114, + 230, + 97, + 65, + 184, + 127, + 229, + 151, + 186, + 224, + 9, + 233, + 104, + 31, + 7, + 99, + 159, + 171, + 177, + 101, + 60, + 20, + 100, + 248, + 226, + 185, + 133, + 214, + 236, + 115, + 169, + 234, + 249, + 88, + 77, + 237, + 18, + 173, + 41, + 113, + 189, + 67, + 10, + 13, + 77, + 24, + 75, + 103, + 99, + 111, + 154, + 152, + 96, + 218, + 152, + 51, + 45, + 137, + 203, + 181, + 76, + 191, + 113, + 73, + 28, + 100, + 34, + 26, + 156, + 110, + 14, + 231, + 92, + 34, + 22, + 29, + 254, + 61, + 78, + 38, + 90, + 11, + 150, + 142, + 70, + 70, + 152, + 51, + 56, + 173, + 244, + 56, + 90, + 182, + 120, + 202, + 123, + 170, + 139, + 152, + 15, + 194, + 55, + 131, + 71, + 68, + 195, + 200, + 90, + 121, + 68, + 44, + 51, + 61, + 137, + 214, + 235, + 64, + 249, + 132, + 202, + 226, + 245, + 47, + 155, + 69, + 91, + 193, + 24, + 61, + 59, + 161, + 6, + 50, + 50, + 116, + 165, + 224, + 253, + 233, + 142, + 36, + 48, + 25, + 211, + 246, + 125, + 61, + 137, + 62, + 255, + 41, + 135, + 57, + 109, + 160, + 222, + 29, + 200, + 171, + 167, + 112, + 198, + 116, + 137, + 237, + 50, + 30, + 85, + 223, + 221, + 138, + 198, + 233, + 39, + 111, + 154, + 55, + 119, + 23, + 197, + 12, + 80, + 58, + 185, + 186, + 98, + 14, + 132, + 138, + 227, + 217, + 16, + 191, + 84, + 46, + 87, + 28, + 129, + 10, + 102, + 192, + 163, + 35, + 188, + 248, + 2, + 38, + 105, + 44, + 170, + 20, + 25, + 120, + 153, + 101, + 239, + 240, + 97, + 117, + 31, + 152, + 19, + 36, + 47, + 114, + 140, + 10, + 254, + 199, + 33, + 154, + 32, + 14, + 172, + 72, + 125, + 149, + 76, + 16, + 121, + 132, + 242, + 90, + 254, + 163, + 64, + 82, + 13, + 156, + 219, + 177, + 241, + 116, + 163, + 129, + 115, + 15, + 78, + 169, + 212, + 239, + 195, + 19, + 202, + 151, + 251, + 56, + 43, + 206, + 72, + 85, + 174, + 224, + 83, + 188, + 145, + 65, + 230, + 14, + 168, + 230, + 99, + 3, + 25, + 123, + 24, + 227, + 119, + 40, + 73, + 201, + 100, + 170, + 30, + 91, + 9, + 52, + 158, + 41, + 52, + 2, + 59, + 182, + 217, + 10, + 171, + 76, + 32, + 246, + 161, + 167, + 10, + 141, + 130, + 124, + 120, + 255, + 243, + 179, + 83, + 174, + 5, + 22, + 45, + 228, + 125, + 200, + 187, + 5, + 22, + 141, + 146, + 238, + 248, + 15, + 219, + 176, + 104, + 94, + 41, + 37, + 120, + 217, + 118, + 97, + 136, + 183, + 166, + 158, + 255, + 63, + 193, + 237, + 137, + 170, + 34, + 110, + 81, + 119, + 16, + 15, + 233, + 66, + 60, + 246, + 15, + 170, + 117, + 29, + 125, + 52, + 130, + 37, + 14, + 45, + 211, + 26, + 181, + 44, + 18, + 135, + 22, + 47, + 40, + 122, + 189, + 236, + 2, + 99, + 32, + 37, + 73, + 1, + 135, + 195, + 233, + 23, + 202, + 36, + 17, + 148, + 70, + 49, + 216, + 46, + 97, + 199, + 97, + 169, + 140, + 198, + 102, + 242, + 18, + 240, + 160, + 96, + 248, + 30, + 139, + 166, + 36, + 23, + 244, + 82, + 158, + 8, + 21, + 120, + 44, + 105, + 108, + 95, + 18, + 46, + 16, + 69, + 73, + 105, + 84, + 101, + 123, + 174, + 132, + 155, + 62, + 131, + 185, + 2, + 11, + 39, + 226, + 120, + 245, + 65, + 194, + 26, + 234, + 85, + 1, + 146, + 42, + 76, + 65, + 94, + 157, + 228, + 160, + 5, + 11, + 153, + 83, + 94, + 78, + 205, + 134, + 122, + 194, + 192, + 216, + 102, + 242, + 56, + 208, + 28, + 141, + 90, + 78, + 154, + 2, + 172, + 43, + 157, + 59, + 251, + 168, + 73, + 169, + 187, + 187, + 210, + 200, + 125, + 248, + 7, + 37, + 26, + 87, + 142, + 185, + 242, + 171, + 74, + 92, + 230, + 194, + 69, + 93, + 106, + 83, + 31, + 66, + 231, + 147, + 96, + 41, + 53, + 98, + 231, + 60, + 13, + 156, + 36, + 23, + 138, + 205, + 74, + 165, + 82, + 29, + 244, + 43, + 105, + 194, + 33, + 7, + 1, + 5, + 6, + 82, + 138, + 201, + 226, + 33, + 46, + 19, + 220, + 112, + 153, + 105, + 107, + 188, + 60, + 184, + 159, + 93, + 60, + 45, + 224, + 180, + 156, + 62, + 39, + 186, + 132, + 28, + 43, + 123, + 81, + 165, + 208, + 160, + 132, + 41, + 14, + 53, + 82, + 12, + 19, + 149, + 250, + 22, + 72, + 209, + 1, + 115, + 142, + 231, + 240, + 98, + 85, + 96, + 221, + 55, + 239, + 171, + 178, + 180, + 44, + 188, + 202, + 2, + 215, + 43, + 49, + 81, + 249, + 47, + 74, + 32, + 100, + 22, + 31, + 156, + 205, + 127, + 69, + 3, + 85, + 237, + 20, + 26, + 161, + 131, + 209, + 192, + 108, + 142, + 93, + 2, + 36, + 59, + 10, + 125, + 33, + 48, + 210, + 148, + 194, + 113, + 120, + 87, + 97, + 203, + 176, + 70, + 126, + 58, + 110, + 174, + 137, + 130, + 110, + 227, + 58, + 26, + 11, + 57, + 13, + 242, + 60, + 45, + 179, + 111, + 130, + 72, + 30, + 142, + 76, + 119, + 32, + 94, + 141, + 80, + 156, + 161, + 0, + 35, + 166, + 80, + 156, + 124, + 190, + 91, + 34, + 80, + 68, + 92, + 166, + 79, + 59, + 9, + 135, + 186, + 8, + 30, + 16, + 215, + 223, + 136, + 60, + 8, + 6, + 5, + 37, + 45, + 166, + 158, + 136, + 227, + 94, + 191, + 243, + 93, + 53, + 83, + 205, + 117, + 57, + 19, + 158, + 13, + 7, + 147, + 78, + 94, + 242, + 223, + 33, + 12, + 161, + 148, + 194, + 117, + 237, + 220, + 248, + 196, + 175, + 97, + 255, + 192, + 221, + 85, + 97, + 168, + 195, + 196, + 21, + 219, + 231, + 239, + 110, + 242, + 109, + 236, + 100, + 45, + 144, + 137, + 196, + 59, + 208, + 137, + 118, + 201, + 162, + 26, + 207, + 212, + 85, + 101, + 176, + 175, + 10, + 217, + 174, + 37, + 14, + 113, + 71, + 7, + 93, + 50, + 27, + 157, + 58, + 134, + 128, + 153, + 165, + 27, + 29, + 255, + 178, + 253, + 64, + 171, + 7, + 87, + 211, + 45, + 142, + 166, + 185, + 43, + 96, + 224, + 26, + 125, + 103, + 89, + 95, + 183, + 189, + 34, + 247, + 97, + 185, + 226, + 228, + 144, + 176, + 147, + 182, + 9, + 31, + 8, + 46, + 102, + 169, + 110, + 231, + 148, + 67, + 98, + 128, + 56, + 45, + 237, + 77, + 30, + 44, + 62, + 229, + 13, + 159, + 145, + 102, + 212, + 65, + 77, + 70, + 227, + 41, + 139, + 76, + 192, + 216, + 210, + 249, + 113, + 70, + 77, + 164, + 65, + 48, + 230, + 152, + 141, + 117, + 19, + 13, + 131, + 169, + 107, + 202, + 158, + 186, + 237, + 132, + 229, + 241, + 100, + 171, + 218, + 173, + 204, + 41, + 108, + 113, + 82, + 103, + 144, + 195, + 82, + 159, + 38, + 224, + 136, + 43, + 78, + 190, + 177, + 84, + 94, + 150, + 220, + 167, + 125, + 85, + 84, + 249, + 65, + 185, + 151, + 84, + 213, + 19, + 158, + 209, + 99, + 198, + 128, + 49, + 45, + 173, + 117, + 78, + 209, + 19, + 132, + 169, + 51, + 165, + 218, + 191, + 167, + 103, + 246, + 120, + 179, + 135, + 2, + 162, + 5, + 170, + 158, + 14, + 251, + 83, + 240, + 132, + 193, + 242, + 214, + 120, + 41, + 43, + 232, + 45, + 20, + 3, + 3, + 89, + 110, + 141, + 115, + 66, + 120, + 128, + 143, + 169, + 179, + 239, + 5, + 110, + 183, + 134, + 194, + 1, + 168, + 85, + 104, + 99, + 241, + 91, + 233, + 118, + 189, + 95, + 61, + 86, + 140, + 173, + 154, + 243, + 112, + 246, + 102, + 151, + 129, + 187, + 112, + 35, + 5, + 203, + 17, + 112, + 88, + 174, + 12, + 187, + 68, + 207, + 44, + 220, + 98, + 118, + 44, + 151, + 18, + 48, + 241, + 232, + 180, + 162, + 113, + 180, + 88, + 171, + 111, + 225, + 82, + 118, + 160, + 129, + 186, + 229, + 197, + 84, + 34, + 111, + 111, + 179, + 247, + 14, + 4, + 81, + 100, + 220, + 106, + 72, + 99, + 192, + 185, + 103, + 225, + 133, + 138, + 59, + 183, + 97, + 194, + 73, + 178, + 112, + 188, + 151, + 192, + 52, + 61, + 166, + 106, + 163, + 194, + 89, + 151, + 192, + 84, + 74, + 177, + 163, + 210, + 80, + 172, + 132, + 243, + 75, + 55, + 170, + 51, + 206, + 10, + 46, + 160, + 53, + 103, + 35, + 154, + 18, + 199, + 48, + 75, + 25, + 66, + 143, + 71, + 187, + 229, + 227, + 185, + 93, + 79, + 33, + 224, + 61, + 44, + 30, + 149, + 64, + 112, + 164, + 116, + 154, + 115, + 221, + 147, + 204, + 180, + 61, + 41, + 84, + 221, + 108, + 185, + 89, + 253, + 240, + 27, + 182, + 27, + 170, + 214, + 247, + 2, + 101, + 115, + 130, + 55, + 218, + 15, + 36, + 92, + 150, + 90, + 84, + 255, + 132, + 197, + 177, + 47, + 79, + 89, + 107, + 232, + 155, + 20, + 151, + 77, + 117, + 138, + 219, + 210, + 49, + 18, + 122, + 206, + 199, + 112, + 29, + 194, + 225, + 107, + 197, + 86, + 183, + 201, + 218, + 137, + 130, + 65, + 71, + 152, + 144, + 109, + 32, + 79, + 214, + 69, + 218, + 217, + 119, + 229, + 60, + 244, + 99, + 141, + 255, + 151, + 133, + 59, + 85, + 5, + 96, + 70, + 156, + 22, + 90, + 31, + 134, + 53, + 34, + 76, + 209, + 70, + 154, + 180, + 42, + 44, + 172, + 78, + 12, + 223, + 156, + 96, + 245, + 193, + 116, + 158, + 109, + 121, + 79, + 109, + 150, + 115, + 200, + 230, + 89, + 32, + 166, + 163, + 239, + 118, + 137, + 24, + 148, + 71, + 222, + 8, + 220, + 191, + 173, + 18, + 236, + 237, + 245, + 173, + 34, + 29, + 32, + 163, + 241, + 92, + 76, + 134, + 160, + 138, + 154, + 114, + 14, + 158, + 184, + 211, + 31, + 0, + 83, + 78, + 94, + 224, + 49, + 135, + 88, + 87, + 248, + 182, + 211, + 248, + 150, + 11, + 15, + 57, + 1, + 77, + 77, + 15, + 160, + 167, + 203, + 169, + 1, + 235, + 72, + 37, + 148, + 251, + 228, + 176, + 78, + 253, + 241, + 19, + 245, + 86, + 57, + 45, + 182, + 69, + 88, + 6, + 115, + 136, + 116, + 202, + 186, + 28, + 150, + 152, + 164, + 88, + 78, + 117, + 60, + 222, + 246, + 78, + 172, + 36, + 47, + 247, + 208, + 1, + 191, + 155, + 72, + 205, + 107, + 0, + 138, + 119, + 218, + 2, + 57, + 2, + 17, + 137, + 111, + 84, + 140, + 53, + 210, + 85, + 106, + 206, + 123, + 109, + 22, + 194, + 93, + 217, + 104, + 166, + 175, + 244, + 20, + 27, + 155, + 96, + 203, + 57, + 123, + 12, + 108, + 31, + 67, + 13, + 17, + 245, + 56, + 187, + 54, + 130, + 1, + 98, + 2, + 195, + 220, + 191, + 33, + 226, + 55, + 39, + 176, + 119, + 146, + 10, + 100, + 17, + 200, + 72, + 193, + 179, + 239, + 22, + 241, + 83, + 226, + 155, + 106, + 191, + 111, + 188, + 42, + 13, + 152, + 54, + 71, + 58, + 109, + 43, + 15, + 148, + 110, + 38, + 211, + 4, + 146, + 78, + 63, + 98, + 37, + 96, + 148, + 220, + 51, + 221, + 218, + 150, + 162, + 138, + 33, + 247, + 132, + 214, + 182, + 141, + 77, + 141, + 240, + 88, + 79, + 149, + 150, + 167, + 130, + 46, + 12, + 143, + 245, + 244, + 208, + 218, + 109, + 84, + 140, + 2, + 36, + 214, + 234, + 242, + 51, + 129, + 49, + 119, + 13, + 63, + 116, + 118, + 33, + 3, + 177, + 220, + 25, + 231, + 20, + 96, + 115, + 8, + 43, + 239, + 45, + 129, + 124, + 121, + 80, + 120, + 194, + 176, + 125, + 253, + 77, + 103, + 215, + 108, + 8, + 50, + 181, + 113, + 39, + 76, + 252, + 109, + 234, + 179, + 223, + 234, + 179, + 69, + 61, + 183, + 98, + 12, + 120, + 218, + 239, + 200, + 126, + 135, + 164, + 190, + 5, + 56, + 205, + 249, + 77, + 131, + 155, + 109, + 41, + 209, + 244, + 16, + 254, + 252, + 254, + 11, + 31, + 253, + 22, + 175, + 181, + 226, + 143, + 240, + 189, + 69, + 160, + 99, + 6, + 228, + 190, + 101, + 218, + 195, + 58, + 130, + 187, + 67, + 107, + 7, + 12, + 27, + 31, + 164, + 96, + 219, + 174, + 19, + 65, + 34, + 139, + 171, + 177, + 239, + 16, + 202, + 192, + 169, + 185, + 70, + 243, + 131, + 96, + 78, + 85, + 136, + 77, + 177, + 145, + 209, + 115, + 27, + 255, + 195, + 114, + 32, + 175, + 247, + 149, + 132, + 171, + 207, + 92, + 179, + 177, + 1, + 58, + 22, + 168, + 225, + 72, + 101, + 228, + 7, + 75, + 206, + 147, + 116, + 175, + 38, + 43, + 14, + 119, + 80, + 116, + 106, + 236, + 154, + 16, + 10, + 232, + 162, + 148, + 152, + 204, + 63, + 111, + 138, + 212, + 158, + 112, + 24, + 119, + 47, + 77, + 16, + 100, + 96, + 39, + 241, + 61, + 34, + 206, + 84, + 88, + 117, + 239, + 173, + 239, + 99, + 34, + 103, + 112, + 157, + 9, + 68, + 204, + 85, + 99, + 233, + 67, + 54, + 3, + 75, + 92, + 41, + 210, + 221, + 184, + 129, + 30, + 226, + 147, + 17, + 224, + 176, + 44, + 69, + 18, + 78, + 195, + 210, + 44, + 138, + 156, + 220, + 51, + 182, + 162, + 78, + 110, + 63, + 134, + 102, + 6, + 41, + 71, + 71, + 132, + 164, + 145, + 65, + 202, + 129, + 118, + 44, + 75, + 93, + 170, + 62, + 42, + 201, + 143, + 85, + 192, + 71, + 167, + 251, + 8, + 199, + 134, + 35, + 156, + 251, + 126, + 190, + 43, + 36, + 243, + 53, + 142, + 183, + 205, + 116, + 27, + 96, + 42, + 141, + 202, + 35, + 94, + 8, + 131, + 242, + 205, + 181, + 98, + 42, + 148, + 165, + 69, + 111, + 238, + 138, + 160, + 193, + 26, + 222, + 106, + 8, + 229, + 224, + 74, + 121, + 158, + 211, + 126, + 246, + 217, + 5, + 227, + 203, + 6, + 181, + 153, + 104, + 88, + 84, + 96, + 163, + 7, + 185, + 104, + 88, + 186, + 112, + 238, + 65, + 190, + 42, + 72, + 113, + 247, + 110, + 31, + 70, + 201, + 188, + 99, + 114, + 92, + 153, + 67, + 215, + 192, + 176, + 67, + 106, + 19, + 6, + 183, + 224, + 86, + 79, + 181, + 97, + 94, + 24, + 188, + 139, + 156, + 220, + 84, + 208, + 178, + 246, + 213, + 162, + 165, + 132, + 236, + 104, + 55, + 80, + 99, + 48, + 108, + 245, + 245, + 177, + 1, + 54, + 11, + 95, + 159, + 74, + 146, + 124, + 6, + 97, + 13, + 1, + 71, + 109, + 236, + 217, + 233, + 152, + 224, + 115, + 224, + 38, + 135, + 233, + 131, + 40, + 91, + 234, + 11, + 92, + 242, + 124, + 202, + 115, + 89, + 31, + 98, + 174, + 25, + 184, + 114, + 83, + 15, + 35, + 86, + 246, + 126, + 94, + 121, + 57, + 149, + 51, + 226, + 76, + 22, + 23, + 102, + 55, + 74, + 173, + 126, + 41, + 225, + 74, + 150, + 179, + 99, + 47, + 142, + 145, + 113, + 185, + 95, + 183, + 45, + 146, + 10, + 42, + 2, + 166, + 182, + 254, + 125, + 62, + 70, + 31, + 131, + 32, + 176, + 192, + 16, + 188, + 121, + 164, + 236, + 17, + 165, + 166, + 193, + 208, + 169, + 99, + 7, + 27, + 154, + 93, + 216, + 80, + 217, + 2, + 223, + 239, + 91, + 87, + 152, + 198, + 151, + 243, + 195, + 235, + 191, + 241, + 236, + 131, + 237, + 230, + 92, + 248, + 187, + 114, + 163, + 195, + 171, + 120, + 24, + 188, + 114, + 218, + 29, + 174, + 33, + 199, + 186, + 62, + 44, + 6, + 226, + 153, + 141, + 227, + 68, + 64, + 147, + 217, + 24, + 187, + 54, + 21, + 136, + 109, + 166, + 105, + 18, + 15, + 118, + 30, + 247, + 22, + 248, + 205, + 134, + 51, + 30, + 105, + 228, + 216, + 90, + 244, + 6, + 134, + 99, + 156, + 27, + 219, + 62, + 97, + 229, + 236, + 148, + 129, + 219, + 152, + 254, + 169, + 211, + 208, + 2, + 30, + 54, + 27, + 243, + 231, + 200, + 24, + 68, + 230, + 112, + 222, + 115, + 159, + 58, + 115, + 20, + 154, + 4, + 56, + 165, + 145, + 92, + 72, + 211, + 128, + 52, + 87, + 102, + 237, + 203, + 198, + 14, + 209, + 56, + 55, + 48, + 242, + 244, + 40, + 125, + 74, + 92, + 114, + 48, + 167, + 92, + 130, + 82, + 97, + 113, + 103, + 240, + 49, + 19, + 193, + 162, + 78, + 14, + 12, + 89, + 208, + 160, + 211, + 82, + 133, + 103, + 217, + 170, + 217, + 6, + 18, + 203, + 201, + 88, + 117, + 23, + 15, + 213, + 112, + 54, + 195, + 189, + 182, + 49, + 101, + 135, + 7, + 129, + 33, + 230, + 158, + 170, + 219, + 105, + 212, + 103, + 199, + 149, + 8, + 242, + 152, + 183, + 252, + 137, + 54, + 76, + 38, + 188, + 76, + 102, + 10, + 105, + 93, + 50, + 72, + 77, + 42, + 142, + 215, + 32, + 78, + 249, + 116, + 158, + 249, + 92, + 252, + 94, + 116, + 115, + 120, + 200, + 136, + 0, + 138, + 136, + 255, + 236, + 59, + 100, + 8, + 194, + 52, + 79, + 109, + 185, + 222, + 176, + 42, + 105, + 245, + 66, + 14, + 213, + 159, + 44, + 110, + 172, + 170, + 197, + 162, + 131, + 164, + 185, + 227, + 84, + 113, + 14, + 218, + 23, + 208, + 85, + 53, + 223, + 225, + 187, + 117, + 5, + 193, + 213, + 72, + 149, + 12, + 171, + 109, + 89, + 152, + 234, + 104, + 31, + 140, + 177, + 227, + 209, + 127, + 29, + 194, + 152, + 178, + 4, + 31, + 177, + 49, + 35, + 91, + 121, + 2, + 45, + 201, + 115, + 15, + 10, + 170, + 212, + 62, + 72, + 86, + 210, + 138, + 244, + 24, + 40, + 17, + 111, + 164, + 117, + 232, + 100, + 64, + 34, + 254, + 16, + 80, + 246, + 0, + 120, + 89, + 62, + 59, + 131, + 164, + 144, + 193, + 135, + 207, + 175, + 15, + 146, + 25, + 125, + 14, + 189, + 233, + 219, + 151, + 140, + 62, + 135, + 222, + 204, + 198, + 205, + 118, + 237, + 18, + 156, + 183, + 85, + 87, + 51, + 160, + 236, + 198, + 89, + 251, + 218, + 29, + 105, + 63, + 181, + 252, + 0, + 20, + 216, + 246, + 225, + 220, + 76, + 102, + 60, + 212, + 87, + 46, + 24, + 58, + 52, + 216, + 158, + 165, + 155, + 210, + 22, + 93, + 130, + 97, + 210, + 210, + 176, + 73, + 253, + 221, + 247, + 149, + 113, + 229, + 31, + 101, + 192, + 179, + 16, + 124, + 173, + 17, + 106, + 159, + 29, + 227, + 40, + 65, + 133, + 169, + 200, + 178, + 131, + 74, + 173, + 175, + 157, + 50, + 118, + 160, + 37, + 218, + 54, + 64, + 170, + 189, + 73, + 202, + 64, + 238, + 237, + 194, + 229, + 191, + 130, + 165, + 148, + 86, + 29, + 181, + 39, + 0, + 224, + 238, + 248, + 140, + 200, + 67, + 105, + 36, + 147, + 69, + 196, + 61, + 154, + 165, + 141, + 199, + 55, + 192, + 140, + 143, + 114, + 82, + 226, + 248, + 45, + 197, + 70, + 81, + 2, + 241, + 130, + 41, + 69, + 5, + 81, + 151, + 200, + 126, + 134, + 62, + 133, + 32, + 217, + 177, + 51, + 44, + 94, + 195, + 223, + 158, + 242, + 78, + 113, + 109, + 152, + 116, + 232, + 220, + 53, + 20, + 108, + 76, + 239, + 116, + 238, + 26, + 11, + 134, + 68, + 141, + 186, + 1, + 63, + 213, + 108, + 250, + 125, + 224, + 241, + 40, + 39, + 134, + 41, + 98, + 36, + 185, + 113, + 45, + 97, + 82, + 96, + 211, + 241, + 17, + 128, + 21, + 15, + 208, + 217, + 233, + 5, + 193, + 130, + 16, + 213, + 234, + 106, + 217, + 141, + 78, + 97, + 38, + 4, + 103, + 73, + 207, + 169, + 135, + 119, + 101, + 26, + 46, + 96, + 169, + 196, + 245, + 160, + 70, + 41, + 143, + 133, + 103, + 12, + 168, + 25, + 234, + 0, + 109, + 60, + 232, + 243, + 18, + 48, + 28, + 169, + 27, + 18, + 123, + 101, + 71, + 94, + 246, + 188, + 203, + 41, + 90, + 53, + 148, + 247, + 3, + 173, + 170, + 136, + 233, + 66, + 119, + 117, + 218, + 23, + 67, + 16, + 90, + 141, + 98, + 169, + 27, + 92, + 228, + 152, + 138, + 165, + 228, + 203, + 22, + 43, + 176, + 68, + 248, + 190, + 16, + 170, + 42, + 170, + 234, + 113, + 86, + 165, + 89, + 173, + 37, + 59, + 243, + 90, + 247, + 5, + 147, + 181, + 17, + 254, + 142, + 56, + 180, + 233, + 99, + 75, + 2, + 122, + 88, + 232, + 147, + 3, + 250, + 106, + 148, + 242, + 223, + 224, + 162, + 25, + 233, + 194, + 95, + 223, + 219, + 233, + 245, + 132, + 56, + 227, + 125, + 171, + 213, + 12, + 135, + 83, + 78, + 208, + 4, + 89, + 70, + 111, + 15, + 112, + 27, + 139, + 125, + 61, + 199, + 6, + 46, + 249, + 124, + 221, + 253, + 252, + 208, + 14, + 42, + 78, + 210, + 43, + 37, + 9, + 158, + 234, + 227, + 4, + 230, + 192, + 92, + 62, + 88, + 14, + 133, + 94, + 77, + 164, + 225, + 231, + 144, + 190, + 78, + 215, + 167, + 91, + 72, + 95, + 78, + 153, + 186, + 63, + 109, + 174, + 112, + 15, + 127, + 39, + 138, + 35, + 18, + 68, + 16, + 111, + 180, + 113, + 146, + 9, + 83, + 211, + 149, + 165, + 228, + 51, + 181, + 6, + 128, + 154, + 45, + 32, + 106, + 108, + 127, + 216, + 96, + 32, + 207, + 117, + 157, + 181, + 230, + 111, + 30, + 91, + 142, + 211, + 106, + 84, + 216, + 218, + 20, + 48, + 71, + 166, + 22, + 104, + 177, + 55, + 67, + 196, + 124, + 128, + 120, + 167, + 27, + 110, + 198, + 173, + 170, + 11, + 234, + 39, + 150, + 203, + 93, + 46, + 46, + 28, + 169, + 140, + 195, + 163, + 122, + 220, + 162, + 93, + 137, + 220, + 78, + 40, + 72, + 59, + 0, + 151, + 119, + 57, + 163, + 255, + 127, + 232, + 181, + 111, + 18, + 222, + 129, + 175, + 175, + 55, + 235, + 103, + 121, + 29, + 37, + 145, + 103, + 23, + 117, + 34, + 96, + 118, + 109, + 20, + 39, + 185, + 129, + 32, + 229, + 46, + 92, + 221, + 168, + 14, + 78, + 176, + 66, + 247, + 117, + 234, + 8, + 69, + 96, + 62, + 110, + 198, + 117, + 111, + 215, + 98, + 15, + 92, + 178, + 114, + 205, + 184, + 84, + 139, + 93, + 139, + 24, + 208, + 237, + 15, + 42, + 98, + 99, + 51, + 82, + 79, + 75, + 195, + 49, + 175, + 17, + 146, + 137, + 244, + 7, + 147, + 2, + 146, + 217, + 78, + 84, + 120, + 2, + 132, + 110, + 224, + 226, + 207, + 44, + 208, + 182, + 193, + 27, + 137, + 44, + 193, + 209, + 8, + 156, + 200, + 4, + 37, + 78, + 149, + 164, + 251, + 131, + 244, + 240, + 174, + 108, + 129, + 185, + 89, + 39, + 235, + 136, + 97, + 140, + 169, + 41, + 200, + 245, + 36, + 121, + 120, + 27, + 220, + 137, + 225, + 208, + 41, + 78, + 229, + 185, + 128, + 180, + 72, + 101, + 186, + 162, + 93, + 188, + 196, + 70, + 120, + 226, + 183, + 180, + 11, + 45, + 16, + 194, + 228, + 28, + 85, + 60, + 68, + 94, + 40, + 156, + 20, + 115, + 137, + 243, + 165, + 212, + 204, + 66, + 232, + 240, + 248, + 20, + 170, + 15, + 158, + 25, + 83, + 55, + 185, + 223, + 202, + 64, + 8, + 109, + 95, + 223, + 200, + 151, + 161, + 192, + 204, + 41, + 101, + 69, + 158, + 113, + 172, + 118, + 255, + 86, + 152, + 40, + 79, + 105, + 76, + 96, + 151, + 53, + 97, + 233, + 5, + 189, + 234, + 149, + 33, + 126, + 8, + 46, + 224, + 2, + 102, + 76, + 57, + 212, + 167, + 226, + 51, + 6, + 118, + 78, + 43, + 123, + 25, + 69, + 239, + 177, + 14, + 137, + 175, + 84, + 123, + 181, + 11, + 81, + 129, + 77, + 29, + 154, + 157, + 132, + 109, + 126, + 30, + 222, + 114, + 138, + 64, + 5, + 42, + 201, + 163, + 41, + 90, + 115, + 91, + 237, + 120, + 74, + 60, + 154, + 128, + 216, + 169, + 81, + 52, + 36, + 192, + 85, + 104, + 20, + 15, + 205, + 6, + 119, + 47, + 129, + 25, + 120, + 52, + 102, + 31, + 71, + 48, + 156, + 200, + 72, + 33, + 143, + 109, + 212, + 160, + 100, + 11, + 190, + 205, + 188, + 57, + 65, + 105, + 86, + 103, + 160, + 140, + 141, + 1, + 60, + 40, + 15, + 207, + 216, + 150, + 165, + 29, + 218, + 114, + 185, + 220, + 44, + 133, + 236, + 171, + 154, + 61, + 53, + 218, + 165, + 148, + 212, + 139, + 191, + 116, + 152, + 139, + 95, + 117, + 51, + 146, + 193, + 224, + 108, + 188, + 101, + 237, + 77, + 248, + 213, + 189, + 189, + 183, + 61, + 178, + 234, + 87, + 243, + 196, + 63, + 124, + 251, + 224, + 13, + 56, + 164, + 115, + 123, + 16, + 12, + 63, + 57, + 77, + 133, + 147, + 205, + 224, + 128, + 114, + 216, + 194, + 89, + 186, + 19, + 157, + 170, + 150, + 195, + 22, + 206, + 52, + 245, + 228, + 221, + 159, + 20, + 37, + 196, + 115, + 182, + 149, + 135, + 10, + 142, + 150, + 105, + 163, + 174, + 110, + 5, + 194, + 109, + 188, + 117, + 212, + 121, + 70, + 153, + 72, + 234, + 207, + 67, + 121, + 220, + 138, + 226, + 89, + 58, + 245, + 100, + 97, + 7, + 78, + 204, + 169, + 158, + 108, + 127, + 150, + 158, + 189, + 70, + 98, + 129, + 69, + 44, + 141, + 62, + 28, + 196, + 19, + 86, + 56, + 197, + 251, + 119, + 249, + 34, + 45, + 252, + 95, + 180, + 213, + 254, + 42, + 118, + 125, + 28, + 185, + 162, + 103, + 251, + 61, + 30, + 186, + 32, + 69, + 139, + 5, + 71, + 167, + 178, + 110, + 78, + 136, + 198, + 3, + 239, + 112, + 125, + 142, + 131, + 97, + 119, + 183, + 10, + 28, + 64, + 40, + 157, + 168, + 79, + 48, + 189, + 166, + 229, + 166, + 94, + 189, + 91, + 5, + 71, + 204, + 188, + 47, + 107, + 4, + 226, + 110, + 76, + 47, + 204, + 19, + 137, + 222, + 101, + 106, + 132, + 239, + 78, + 120, + 13, + 118, + 21, + 77, + 110, + 229, + 107, + 45, + 96, + 213, + 245, + 13, + 229, + 66, + 188, + 56, + 28, + 69, + 26, + 249, + 145, + 188, + 38, + 160, + 174, + 180, + 38, + 236, + 118, + 153, + 233, + 74, + 36, + 18, + 214, + 91, + 56, + 105, + 167, + 31, + 122, + 160, + 185, + 169, + 126, + 166, + 47, + 235, + 177, + 244, + 198, + 239, + 173, + 242, + 101, + 44, + 64, + 155, + 141, + 174, + 29, + 50, + 25, + 136, + 61, + 69, + 252, + 244, + 231, + 10, + 116, + 44, + 65, + 141, + 86, + 163, + 197, + 80, + 5, + 186, + 204, + 72, + 222, + 110, + 83, + 5, + 122, + 160, + 36, + 233, + 55, + 150, + 119, + 91, + 3, + 89, + 151, + 226, + 5, + 43, + 134, + 231, + 53, + 239, + 239, + 51, + 171, + 38, + 181, + 8, + 13, + 110, + 52, + 238, + 211, + 48, + 244, + 175, + 34, + 219, + 190, + 113, + 62, + 157, + 78, + 9, + 119, + 178, + 70, + 67, + 63, + 157, + 11, + 80, + 53, + 53, + 13, + 255, + 152, + 176, + 129, + 0, + 223, + 198, + 84, + 109, + 228, + 47, + 97, + 4, + 42, + 231, + 81, + 75, + 15, + 90, + 49, + 179, + 226, + 77, + 189, + 118, + 94, + 218, + 70, + 223, + 28, + 100, + 142, + 78, + 113, + 164, + 8, + 104, + 164, + 68, + 111, + 224, + 243, + 165, + 142, + 240, + 138, + 95, + 221, + 235, + 165, + 125, + 155, + 183, + 20, + 33, + 37, + 216, + 152, + 27, + 155, + 113, + 131, + 246, + 185, + 23, + 251, + 145, + 80, + 31, + 212, + 98, + 182, + 9, + 200, + 228, + 241, + 138, + 247, + 88, + 70, + 30, + 42, + 225, + 32, + 97, + 237, + 64, + 101, + 212, + 69, + 51, + 42, + 159, + 142, + 252, + 87, + 112, + 254, + 238, + 21, + 141, + 8, + 199, + 1, + 140, + 211, + 112, + 174, + 211, + 174, + 98, + 228, + 175, + 114, + 95, + 130, + 125, + 196, + 228, + 49, + 74, + 35, + 101, + 79, + 67, + 8, + 206, + 146, + 26, + 16, + 236, + 139, + 147, + 14, + 230, + 237, + 153, + 38, + 48, + 90, + 131, + 139, + 103, + 95, + 11, + 117, + 13, + 144, + 137, + 156, + 215, + 145, + 101, + 211, + 127, + 223, + 217, + 186, + 217, + 235, + 137, + 12, + 198, + 114, + 111, + 164, + 63, + 19, + 57, + 204, + 65, + 43, + 173, + 90, + 247, + 161, + 245, + 222, + 244, + 102, + 82, + 130, + 105, + 162, + 141, + 166, + 52, + 161, + 46, + 92, + 108, + 146, + 114, + 176, + 117, + 219, + 88, + 168, + 89, + 3, + 69, + 19, + 163, + 181, + 216, + 137, + 109, + 105, + 180, + 22, + 101, + 253, + 55, + 166, + 221, + 29, + 162, + 53, + 74, + 64, + 186, + 26, + 141, + 53, + 35, + 89, + 143, + 25, + 211, + 245, + 255, + 1, + 173, + 209, + 11, + 190, + 7, + 165, + 20, + 172, + 215, + 226, + 38, + 224, + 29, + 202, + 25, + 96, + 167, + 232, + 206, + 136, + 124, + 197, + 220, + 189, + 168, + 91, + 41, + 115, + 64, + 150, + 210, + 185, + 82, + 98, + 240, + 41, + 253, + 106, + 129, + 25, + 166, + 223, + 248, + 198, + 113, + 247, + 237, + 204, + 240, + 215, + 139, + 167, + 181, + 26, + 71, + 71, + 187, + 214, + 52, + 119, + 205, + 61, + 61, + 248, + 12, + 24, + 5, + 61, + 114, + 223, + 38, + 187, + 24, + 11, + 181, + 204, + 175, + 151, + 222, + 17, + 190, + 218, + 56, + 121, + 245, + 250, + 106, + 83, + 1, + 227, + 94, + 243, + 86, + 185, + 31, + 250, + 85, + 248, + 92, + 197, + 7, + 57, + 204, + 158, + 91, + 48, + 172, + 211, + 111, + 70, + 149, + 97, + 114, + 110, + 148, + 86, + 51, + 15, + 75, + 160, + 178, + 242, + 24, + 42, + 61, + 214, + 175, + 24, + 207, + 92, + 160, + 203, + 52, + 251, + 206, + 32, + 69, + 189, + 211, + 233, + 238, + 140, + 6, + 26, + 172, + 241, + 211, + 156, + 205, + 6, + 73, + 24, + 79, + 80, + 213, + 70, + 22, + 141, + 9, + 129, + 209, + 72, + 171, + 194, + 7, + 67, + 157, + 75, + 178, + 224, + 179, + 163, + 153, + 69, + 100, + 151, + 172, + 70, + 198, + 99, + 68, + 203, + 13, + 202, + 181, + 140, + 215, + 164, + 181, + 15, + 31, + 180, + 158, + 188, + 109, + 50, + 12, + 204, + 195, + 159, + 79, + 165, + 113, + 35, + 220, + 134, + 210, + 93, + 231, + 99, + 208, + 203, + 129, + 8, + 130, + 146, + 90, + 16, + 118, + 121, + 104, + 125, + 197, + 108, + 181, + 29, + 183, + 38, + 101, + 10, + 60, + 79, + 108, + 11, + 102, + 226, + 46, + 152, + 105, + 159, + 225, + 214, + 139, + 23, + 176, + 198, + 26, + 72, + 157, + 2, + 144, + 117, + 83, + 138, + 166, + 56, + 245, + 119, + 138, + 107, + 158, + 6, + 141, + 239, + 202, + 210, + 70, + 152, + 188, + 202, + 108, + 52, + 208, + 9, + 138, + 47, + 185, + 164, + 85, + 201, + 137, + 99, + 83, + 175, + 178, + 143, + 100, + 0, + 218, + 240, + 70, + 66, + 88, + 184, + 40, + 17, + 47, + 207, + 205, + 157, + 63, + 38, + 174, + 128, + 134, + 132, + 237, + 108, + 180, + 137, + 251, + 232, + 66, + 19, + 150, + 228, + 92, + 237, + 39, + 116, + 228, + 242, + 45, + 238, + 94, + 130, + 71, + 64, + 39, + 53, + 34, + 168, + 55, + 103, + 111, + 145, + 20, + 57, + 60, + 38, + 43, + 110, + 83, + 120, + 28, + 72, + 221, + 122, + 35, + 208, + 42, + 36, + 255, + 128, + 176, + 86, + 187, + 116, + 93, + 2, + 210, + 198, + 149, + 144, + 174, + 234, + 108, + 112, + 180, + 138, + 241, + 10, + 171, + 95, + 74, + 41, + 153, + 167, + 59, + 198, + 2, + 153, + 57, + 141, + 242, + 139, + 96, + 35, + 6, + 255, + 240, + 97, + 23, + 200, + 251, + 15, + 15, + 84, + 241, + 194, + 99, + 40, + 161, + 186, + 75, + 78, + 99, + 175, + 31, + 232, + 235, + 192, + 166, + 51, + 115, + 150, + 16, + 115, + 45, + 235, + 244, + 37, + 9, + 49, + 151, + 11, + 166, + 5, + 251, + 67, + 117, + 240, + 218, + 54, + 124, + 155, + 150, + 34, + 161, + 98, + 108, + 37, + 186, + 204, + 155, + 138, + 209, + 247, + 84, + 15, + 21, + 54, + 208, + 11, + 151, + 249, + 4, + 245, + 78, + 141, + 135, + 34, + 129, + 205, + 60, + 120, + 163, + 162, + 107, + 148, + 108, + 150, + 214, + 122, + 71, + 217, + 129, + 103, + 10, + 147, + 31, + 222, + 234, + 77, + 131, + 108, + 249, + 139, + 253, + 214, + 212, + 20, + 155, + 48, + 157, + 26, + 11, + 33, + 29, + 4, + 107, + 136, + 55, + 25, + 203, + 149, + 32, + 78, + 129, + 125, + 29, + 218, + 68, + 249, + 12, + 163, + 175, + 70, + 106, + 109, + 192, + 57, + 211, + 71, + 58, + 99, + 8, + 139, + 117, + 247, + 146, + 184, + 241, + 146, + 194, + 171, + 160, + 132, + 212, + 88, + 66, + 97, + 43, + 87, + 113, + 84, + 238, + 17, + 21, + 244, + 215, + 186, + 153, + 109, + 197, + 215, + 4, + 17, + 181, + 190, + 213, + 212, + 102, + 136, + 118, + 135, + 110, + 174, + 166, + 103, + 8, + 137, + 7, + 168, + 155, + 51, + 21, + 250, + 40, + 51, + 187, + 166, + 12, + 205, + 26, + 2, + 158, + 48, + 145, + 37, + 152, + 137, + 53, + 205, + 101, + 175, + 97, + 2, + 115, + 70, + 15, + 44, + 185, + 215, + 94, + 122, + 71, + 228, + 233, + 250, + 148, + 160, + 119, + 108, + 49, + 116, + 212, + 16, + 24, + 133, + 182, + 140, + 174, + 73, + 186, + 160, + 147, + 107, + 77, + 163, + 68, + 235, + 215, + 180, + 17, + 70, + 104, + 154, + 56, + 53, + 50, + 12, + 110, + 161, + 105, + 132, + 57, + 193, + 160, + 170, + 2, + 117, + 191, + 178, + 168, + 44, + 148, + 206, + 54, + 135, + 21, + 209, + 156, + 36, + 169, + 38, + 247, + 144, + 114, + 18, + 209, + 156, + 194, + 105, + 75, + 165, + 222, + 28, + 168, + 76, + 71, + 170, + 102, + 250, + 161, + 60, + 42, + 168, + 37, + 131, + 56, + 245, + 134, + 125, + 7, + 181, + 68, + 132, + 83, + 111, + 232, + 131, + 252, + 184, + 102, + 227, + 109, + 117, + 192, + 129, + 216, + 104, + 73, + 114, + 75, + 164, + 23, + 78, + 131, + 199, + 106, + 220, + 106, + 95, + 158, + 82, + 211, + 114, + 14, + 179, + 202, + 8, + 148, + 155, + 33, + 18, + 45, + 226, + 70, + 246, + 237, + 132, + 122, + 215, + 183, + 27, + 208, + 129, + 216, + 25, + 61, + 206, + 19, + 120, + 114, + 110, + 88, + 184, + 79, + 40, + 122, + 130, + 206, + 190, + 13, + 111, + 230, + 205, + 83, + 156, + 164, + 177, + 162, + 191, + 147, + 42, + 50, + 9, + 56, + 21, + 172, + 156, + 26, + 248, + 24, + 136, + 206, + 212, + 23, + 229, + 41, + 83, + 100, + 247, + 111, + 133, + 15, + 197, + 232, + 172, + 239, + 4, + 9, + 72, + 92, + 78, + 119, + 181, + 172, + 224, + 57, + 16, + 37, + 205, + 225, + 141, + 174, + 231, + 33, + 74, + 90, + 154, + 247, + 77, + 174, + 120, + 247, + 94, + 75, + 114, + 59, + 4, + 121, + 16, + 6, + 75, + 163, + 156, + 34, + 96, + 163, + 225, + 150, + 202, + 41, + 182, + 99, + 171, + 174, + 240, + 17, + 30, + 158, + 78, + 241, + 7, + 14, + 221, + 102, + 80, + 97, + 240, + 108, + 244, + 80, + 12, + 127, + 159, + 225, + 158, + 118, + 107, + 47, + 209, + 8, + 58, + 96, + 10, + 65, + 24, + 190, + 58, + 51, + 186, + 68, + 97, + 78, + 76, + 197, + 140, + 223, + 107, + 242, + 147, + 142, + 5, + 52, + 71, + 35, + 69, + 36, + 146, + 202, + 88, + 87, + 106, + 143, + 253, + 65, + 22, + 58, + 97, + 37, + 173, + 66, + 141, + 187, + 112, + 128, + 57, + 134, + 146, + 159, + 189, + 174, + 64, + 222, + 143, + 211, + 185, + 138, + 167, + 188, + 16, + 91, + 121, + 233, + 177, + 29, + 90, + 248, + 234, + 4, + 242, + 198, + 105, + 110, + 70, + 192, + 99, + 61, + 55, + 102, + 120, + 191, + 3, + 96, + 56, + 6, + 141, + 57, + 58, + 249, + 51, + 99, + 192, + 212, + 149, + 150, + 170, + 31, + 20, + 154, + 106, + 107, + 2, + 49, + 55, + 186, + 188, + 102, + 134, + 65, + 7, + 165, + 67, + 169, + 227, + 47, + 249, + 41, + 173, + 188, + 182, + 155, + 163, + 203, + 28, + 33, + 245, + 220, + 114, + 18, + 210, + 233, + 192, + 110, + 186, + 101, + 194, + 76, + 218, + 4, + 190, + 60, + 70, + 85, + 140, + 89, + 64, + 177, + 215, + 30, + 116, + 85, + 206, + 28, + 250, + 237, + 125, + 168, + 233, + 206, + 126, + 22, + 218, + 83, + 14, + 204, + 119, + 109, + 186, + 179, + 95, + 130, + 159, + 157, + 104, + 124, + 129, + 13, + 157, + 233, + 145, + 243, + 148, + 43, + 195, + 48, + 100, + 140, + 180, + 249, + 121, + 173, + 179, + 240, + 78, + 165, + 87, + 171, + 109, + 34, + 233, + 45, + 160, + 40, + 215, + 101, + 157, + 114, + 107, + 2, + 231, + 153, + 233, + 105, + 135, + 199, + 190, + 91, + 253, + 51, + 0, + 114, + 247, + 242, + 214, + 2, + 26, + 220, + 105, + 181, + 237, + 12, + 44, + 154, + 26, + 233, + 213, + 243, + 247, + 232, + 60, + 194, + 200, + 176, + 104, + 117, + 186, + 250, + 226, + 128, + 229, + 152, + 178, + 201, + 202, + 189, + 171, + 30, + 156, + 85, + 66, + 227, + 1, + 57, + 110, + 219, + 222, + 168, + 190, + 170, + 162, + 75, + 127, + 150, + 96, + 199, + 67, + 35, + 237, + 175, + 113, + 103, + 224, + 177, + 96, + 97, + 30, + 43, + 89, + 54, + 164, + 202, + 94, + 238, + 179, + 8, + 149, + 178, + 90, + 220, + 104, + 143, + 159, + 21, + 223, + 187, + 120, + 129, + 12, + 80, + 206, + 109, + 162, + 14, + 17, + 8, + 69, + 48, + 196, + 84, + 221, + 184, + 127, + 128, + 125, + 59, + 54, + 235, + 132, + 83, + 163, + 163, + 51, + 250, + 124, + 56, + 32, + 173, + 244, + 168, + 124, + 101, + 84, + 93, + 51, + 38, + 41, + 153, + 3, + 85, + 171, + 251, + 204, + 201, + 132, + 6, + 240, + 92, + 141, + 150, + 206, + 26, + 194, + 119, + 195, + 212, + 27, + 229, + 30, + 43, + 122, + 188, + 219, + 234, + 241, + 20, + 63, + 191, + 127, + 8, + 13, + 218, + 193, + 160, + 145, + 32, + 55, + 46, + 254, + 193, + 34, + 65, + 207, + 49, + 85, + 254, + 241, + 73, + 251, + 62, + 121, + 60, + 247, + 38, + 228, + 46, + 239, + 190, + 221, + 91, + 195, + 191, + 51, + 90, + 205, + 21, + 56, + 50, + 55, + 159, + 158, + 76, + 238, + 111, + 247, + 97, + 165, + 189, + 55, + 254, + 248, + 10, + 89, + 85, + 18, + 158, + 162, + 141, + 42, + 158, + 91, + 136, + 90, + 186, + 173, + 84, + 35, + 185, + 88, + 193, + 15, + 213, + 86, + 193, + 123, + 202, + 221, + 130, + 78, + 17, + 8, + 10, + 130, + 115, + 138, + 151, + 239, + 235, + 146, + 206, + 184, + 192, + 22, + 129, + 222, + 132, + 95, + 57, + 214, + 169, + 234, + 104, + 108, + 247, + 239, + 183, + 229, + 10, + 205, + 22, + 10, + 65, + 11, + 153, + 17, + 88, + 188, + 73, + 11, + 177, + 176, + 69, + 93, + 115, + 110, + 1, + 19, + 246, + 29, + 10, + 106, + 14, + 101, + 226, + 225, + 179, + 197, + 157, + 25, + 6, + 111, + 184, + 175, + 60, + 187, + 248, + 228, + 131, + 74, + 35, + 241, + 17, + 94, + 219, + 71, + 167, + 201, + 181, + 194, + 242, + 13, + 27, + 205, + 89, + 195, + 89, + 104, + 17, + 230, + 89, + 128, + 181, + 106, + 102, + 109, + 135, + 25, + 245, + 58, + 41, + 17, + 15, + 24, + 58, + 90, + 253, + 134, + 5, + 35, + 1, + 172, + 240, + 27, + 46, + 93, + 110, + 182, + 91, + 242, + 245, + 144, + 56, + 114, + 251, + 161, + 96, + 47, + 78, + 105, + 100, + 151, + 211, + 52, + 48, + 181, + 92, + 115, + 253, + 81, + 2, + 28, + 143, + 246, + 85, + 35, + 236, + 207, + 40, + 209, + 190, + 162, + 61, + 51, + 233, + 179, + 101, + 47, + 126, + 203, + 172, + 145, + 54, + 192, + 20, + 49, + 30, + 51, + 207, + 182, + 111, + 92, + 172, + 206, + 224, + 28, + 165, + 136, + 7, + 235, + 140, + 81, + 87, + 131, + 129, + 35, + 237, + 88, + 149, + 224, + 204, + 129, + 217, + 206, + 161, + 243, + 231, + 43, + 136, + 225, + 212, + 68, + 37, + 242, + 59, + 164, + 81, + 57, + 199, + 142, + 160, + 104, + 233, + 161, + 238, + 203, + 193, + 114, + 251, + 27, + 195, + 251, + 100, + 54, + 30, + 231, + 57, + 208, + 108, + 245, + 148, + 190, + 93, + 215, + 225, + 23, + 216, + 34, + 73, + 201, + 186, + 13, + 213, + 16, + 144, + 117, + 42, + 189, + 69, + 194, + 219, + 167, + 136, + 92, + 170, + 160, + 154, + 67, + 95, + 58, + 13, + 251, + 4, + 199, + 70, + 166, + 139, + 17, + 228, + 141, + 143, + 135, + 57, + 248, + 128, + 50, + 61, + 105, + 254, + 118, + 189, + 168, + 105, + 241, + 69, + 169, + 29, + 221, + 169, + 160, + 202, + 129, + 89, + 82, + 210, + 200, + 54, + 204, + 84, + 170, + 238, + 202, + 126, + 255, + 181, + 160, + 154, + 111, + 18, + 197, + 100, + 10, + 190, + 58, + 93, + 127, + 212, + 28, + 208, + 10, + 215, + 159, + 98, + 129, + 61, + 228, + 242, + 223, + 168, + 135, + 150, + 26, + 170, + 158, + 114, + 96, + 110, + 228, + 195, + 188, + 207, + 112, + 165, + 168, + 189, + 38, + 206, + 148, + 66, + 72, + 115, + 212, + 3, + 54, + 50, + 96, + 91, + 141, + 46, + 136, + 70, + 14, + 34, + 152, + 22, + 97, + 151, + 44, + 215, + 239, + 241, + 167, + 114, + 232, + 163, + 158, + 186, + 163, + 132, + 36, + 190, + 211, + 111, + 69, + 65, + 70, + 174, + 241, + 229, + 107, + 240, + 226, + 253, + 253, + 222, + 161, + 139, + 145, + 70, + 241, + 206, + 119, + 187, + 4, + 20, + 87, + 35, + 189, + 241, + 181, + 55, + 73, + 125, + 174, + 186, + 224, + 49, + 220, + 0, + 189, + 220, + 60, + 52, + 208, + 215, + 166, + 151, + 73, + 192, + 134, + 186, + 80, + 247, + 160, + 151, + 209, + 149, + 46, + 181, + 239, + 42, + 177, + 221, + 67, + 63, + 76, + 197, + 140, + 17, + 99, + 222, + 233, + 102, + 55, + 227, + 136, + 232, + 123, + 185, + 68, + 31, + 192, + 37, + 56, + 155, + 82, + 211, + 97, + 201, + 208, + 198, + 56, + 142, + 155, + 38, + 104, + 229, + 45, + 128, + 167, + 8, + 203, + 9, + 177, + 67, + 165, + 211, + 172, + 144, + 112, + 192, + 164, + 220, + 211, + 109, + 31, + 200, + 61, + 244, + 78, + 65, + 144, + 112, + 230, + 105, + 52, + 176, + 21, + 5, + 165, + 69, + 57, + 19, + 191, + 217, + 142, + 201, + 34, + 191, + 183, + 53, + 141, + 135, + 76, + 97, + 58, + 75, + 30, + 135, + 98, + 219, + 139, + 207, + 126, + 180, + 93, + 179, + 69, + 113, + 176, + 79, + 194, + 89, + 185, + 145, + 207, + 50, + 64, + 148, + 115, + 111, + 156, + 111, + 14, + 140, + 179, + 194, + 26, + 179, + 51, + 158, + 137, + 23, + 120, + 174, + 164, + 239, + 247, + 213, + 234, + 10, + 87, + 99, + 155, + 160, + 54, + 27, + 209, + 108, + 30, + 81, + 179, + 166, + 21, + 252, + 163, + 38, + 178, + 236, + 141, + 126, + 197, + 56, + 160, + 0, + 83, + 40, + 5, + 32, + 207, + 161, + 20, + 90, + 57, + 94, + 113, + 6, + 247, + 8, + 50, + 176, + 229, + 120, + 197, + 169, + 224, + 105, + 128, + 240, + 204, + 125, + 179, + 43, + 118, + 197, + 182, + 195, + 67, + 221, + 28, + 61, + 4, + 130, + 38, + 12, + 203, + 247, + 134, + 83, + 206, + 14, + 193, + 172, + 240, + 133, + 109, + 206, + 206, + 21, + 148, + 37, + 115, + 61, + 217, + 62, + 216, + 49, + 140, + 69, + 157, + 1, + 234, + 115, + 132, + 51, + 123, + 26, + 160, + 222, + 248, + 24, + 198, + 105, + 156, + 146, + 13, + 106, + 12, + 104, + 82, + 20, + 24, + 34, + 207, + 91, + 14, + 239, + 191, + 120, + 165, + 32, + 133, + 204, + 198, + 116, + 105, + 165, + 21, + 133, + 244, + 243, + 243, + 209, + 21, + 241, + 222, + 21, + 27, + 221, + 114, + 166, + 55, + 216, + 18, + 143, + 72, + 130, + 144, + 78, + 111, + 230, + 49, + 64, + 134, + 165, + 223, + 248, + 128, + 142, + 190, + 6, + 177, + 74, + 200, + 110, + 247, + 18, + 162, + 246, + 31, + 157, + 110, + 60, + 107, + 130, + 105, + 97, + 230, + 38, + 187, + 2, + 175, + 109, + 36, + 248, + 251, + 116, + 90, + 214, + 1, + 180, + 22, + 246, + 218, + 247, + 242, + 64, + 164, + 243, + 35, + 202, + 29, + 156, + 116, + 8, + 27, + 133, + 33, + 89, + 171, + 174, + 217, + 194, + 144, + 76, + 60, + 69, + 228, + 119, + 33, + 193, + 195, + 123, + 10, + 37, + 31, + 229, + 6, + 139, + 109, + 132, + 166, + 131, + 180, + 218, + 146, + 15, + 113, + 180, + 206, + 83, + 28, + 152, + 85, + 194, + 62, + 104, + 143, + 135, + 52, + 6, + 216, + 20, + 214, + 45, + 52, + 108, + 118, + 17, + 145, + 164, + 15, + 13, + 43, + 185, + 249, + 37, + 60, + 180, + 107, + 134, + 116, + 200, + 243, + 92, + 176, + 230, + 194, + 70, + 43, + 72, + 99, + 112, + 117, + 247, + 167, + 52, + 193, + 164, + 96, + 223, + 252, + 83, + 55, + 6, + 173, + 120, + 99, + 160, + 199, + 48, + 160, + 97, + 158, + 154, + 184, + 62, + 132, + 83, + 62, + 204, + 162, + 114, + 56, + 180, + 70, + 113, + 190, + 101, + 169, + 115, + 78, + 162, + 82, + 203, + 205, + 80, + 106, + 186, + 207, + 19, + 202, + 204, + 190, + 12, + 115, + 27, + 3, + 35, + 240, + 57, + 59, + 219, + 7, + 55, + 151, + 99, + 245, + 153, + 250, + 116, + 30, + 242, + 155, + 84, + 195, + 122, + 101, + 53, + 18, + 112, + 73, + 87, + 120, + 175, + 228, + 81, + 139, + 251, + 43, + 204, + 153, + 119, + 108, + 240, + 182, + 112, + 33, + 247, + 242, + 182, + 200, + 56, + 111, + 217, + 111, + 75, + 81, + 15, + 252, + 201, + 15, + 165, + 72, + 55, + 91, + 98, + 78, + 77, + 210, + 223, + 97, + 75, + 76, + 105, + 30, + 214, + 129, + 5, + 222, + 238, + 198, + 114, + 169, + 103, + 127, + 229, + 40, + 123, + 106, + 184, + 179, + 96, + 144, + 99, + 103, + 244, + 54, + 195, + 112, + 194, + 231, + 29, + 208, + 59, + 155, + 223, + 107, + 236, + 136, + 106, + 88, + 101, + 138, + 140, + 109, + 170, + 176, + 3, + 81, + 92, + 105, + 31, + 155, + 71, + 128, + 214, + 72, + 75, + 226, + 39, + 204, + 133, + 228, + 166, + 182, + 107, + 229, + 93, + 67, + 145, + 226, + 123, + 14, + 253, + 151, + 61, + 142, + 155, + 216, + 105, + 164, + 227, + 225, + 195, + 192, + 169, + 170, + 153, + 127, + 185, + 0, + 249, + 220, + 59, + 21, + 55, + 187, + 250, + 10, + 12, + 142, + 134, + 115, + 155, + 76, + 107, + 194, + 140, + 55, + 242, + 180, + 3, + 120, + 141, + 251, + 243, + 196, + 215, + 247, + 213, + 32, + 60, + 52, + 186, + 29, + 3, + 22, + 97, + 35, + 7, + 87, + 39, + 194, + 90, + 121, + 184, + 53, + 159, + 69, + 157, + 46, + 132, + 97, + 179, + 145, + 123, + 170, + 75, + 97, + 114, + 110, + 143, + 85, + 42, + 225, + 118, + 37, + 117, + 247, + 30, + 107, + 98, + 72, + 239, + 69, + 41, + 232, + 230, + 9, + 159, + 154, + 50, + 156, + 214, + 30, + 4, + 226, + 43, + 93, + 60, + 223, + 153, + 199, + 23, + 241, + 50, + 233, + 7, + 247, + 40, + 209, + 33, + 6, + 96, + 18, + 198, + 179, + 40, + 95, + 211, + 87, + 229, + 146, + 163, + 222, + 69, + 37, + 64, + 217, + 153, + 219, + 79, + 134, + 221, + 119, + 128, + 61, + 107, + 93, + 142, + 5, + 170, + 114, + 51, + 0, + 169, + 61, + 90, + 182, + 8, + 23, + 12, + 70, + 102, + 33, + 103, + 254, + 253, + 23, + 150, + 85, + 110, + 137, + 170, + 212, + 15, + 238, + 104, + 64, + 45, + 131, + 229, + 243, + 6, + 107, + 109, + 25, + 210, + 152, + 135, + 45, + 170, + 217, + 158, + 27, + 240, + 234, + 34, + 31, + 61, + 233, + 255, + 127, + 223, + 121, + 221, + 207, + 2, + 91, + 75, + 192, + 102, + 227, + 131, + 67, + 55, + 29, + 133, + 21, + 70, + 173, + 141, + 233, + 134, + 11, + 214, + 50, + 74, + 251, + 97, + 7, + 138, + 163, + 39, + 246, + 77, + 187, + 131, + 159, + 64, + 151, + 143, + 70, + 183, + 181, + 101, + 209, + 97, + 179, + 60, + 209, + 114, + 219, + 66, + 163, + 94, + 136, + 203, + 90, + 183, + 23, + 242, + 35, + 38, + 80, + 178, + 78, + 87, + 88, + 98, + 3, + 93, + 195, + 211, + 71, + 196, + 243, + 137, + 163, + 215, + 9, + 178, + 194, + 44, + 141, + 38, + 32, + 55, + 100, + 197, + 85, + 244, + 91, + 70, + 82, + 77, + 2, + 103, + 109, + 12, + 33, + 12, + 96, + 197, + 125, + 164, + 207, + 233, + 13, + 6, + 223, + 190, + 30, + 245, + 44, + 182, + 14, + 7, + 184, + 89, + 39, + 177, + 132, + 40, + 44, + 26, + 82, + 253, + 95, + 179, + 99, + 23, + 11, + 129, + 196, + 128, + 239, + 187, + 120, + 49, + 80, + 91, + 123, + 84, + 168, + 179, + 9, + 196, + 58, + 97, + 44, + 110, + 212, + 220, + 176, + 69, + 116, + 189, + 166, + 80, + 203, + 3, + 48, + 160, + 120, + 133, + 47, + 211, + 253, + 178, + 162, + 67, + 236, + 157, + 110, + 186, + 236, + 20, + 7, + 37, + 250, + 250, + 70, + 146, + 130, + 17, + 194, + 196, + 169, + 132, + 242, + 148, + 218, + 52, + 35, + 159, + 57, + 53, + 187, + 41, + 69, + 31, + 79, + 156, + 102, + 14, + 20, + 107, + 230, + 115, + 244, + 42, + 214, + 198, + 240, + 84, + 148, + 184, + 47, + 164, + 44, + 227, + 232, + 15, + 221, + 133, + 12, + 130, + 82, + 222, + 107, + 46, + 52, + 45, + 199, + 101, + 62, + 36, + 92, + 54, + 96, + 181, + 137, + 230, + 210, + 11, + 171, + 205, + 206, + 6, + 76, + 216, + 68, + 59, + 119, + 2, + 202, + 138, + 14, + 97, + 166, + 255, + 148, + 188, + 124, + 137, + 91, + 52, + 119, + 13, + 193, + 42, + 223, + 175, + 102, + 43, + 156, + 240, + 37, + 34, + 109, + 236, + 239, + 232, + 176, + 104, + 107, + 112, + 106, + 213, + 112, + 165, + 203, + 157, + 168, + 76, + 223, + 102, + 244, + 60, + 184, + 30, + 87, + 190, + 72, + 135, + 197, + 148, + 59, + 184, + 165, + 97, + 15, + 167, + 41, + 90, + 10, + 200, + 158, + 175, + 133, + 101, + 168, + 247, + 21, + 207, + 253, + 123, + 249, + 214, + 38, + 216, + 126, + 104, + 162, + 164, + 6, + 46, + 173, + 252, + 28, + 195, + 48, + 14, + 73, + 249, + 57, + 103, + 84, + 225, + 144, + 197, + 225, + 106, + 244, + 36, + 53, + 139, + 167, + 42, + 185, + 203, + 250, + 181, + 76, + 195, + 135, + 148, + 178, + 109, + 204, + 241, + 1, + 45, + 184, + 159, + 42, + 119, + 31, + 48, + 222, + 135, + 206, + 28, + 162, + 181, + 30, + 114, + 16, + 74, + 109, + 70, + 14, + 31, + 157, + 135, + 26, + 36, + 103, + 255, + 31, + 190, + 93, + 95, + 176, + 134, + 125, + 155, + 152, + 178, + 58, + 211, + 165, + 132, + 2, + 206, + 10, + 167, + 1, + 107, + 221, + 98, + 223, + 182, + 184, + 84, + 35, + 2, + 52, + 108, + 174, + 61, + 183, + 105, + 239, + 2, + 247, + 190, + 53, + 44, + 20, + 207, + 10, + 85, + 27, + 205, + 203, + 101, + 132, + 197, + 187, + 226, + 252, + 222, + 96, + 161, + 51, + 9, + 114, + 0, + 218, + 209, + 22, + 233, + 123, + 64, + 115, + 192, + 64, + 90, + 233, + 3, + 250, + 166, + 10, + 203, + 51, + 66, + 15, + 45, + 240, + 129, + 210, + 168, + 203, + 39, + 22, + 64, + 97, + 73, + 253, + 144, + 15, + 252, + 217, + 187, + 67, + 195, + 108, + 198, + 169, + 41, + 127, + 129, + 167, + 33, + 233, + 4, + 66, + 52, + 83, + 219, + 167, + 3, + 31, + 189, + 51, + 164, + 109, + 49, + 168, + 107, + 163, + 126, + 139, + 214, + 0, + 27, + 99, + 124, + 67, + 248, + 144, + 9, + 111, + 105, + 25, + 141, + 221, + 14, + 210, + 91, + 92, + 198, + 83, + 13, + 212, + 181, + 85, + 251, + 212, + 106, + 238, + 245, + 7, + 103, + 188, + 0, + 182, + 80, + 134, + 116, + 122, + 208, + 241, + 136, + 156, + 130, + 220, + 209, + 244, + 208, + 221, + 58, + 76, + 151, + 181, + 179, + 99, + 53, + 17, + 212, + 71, + 74, + 47, + 127, + 224, + 179, + 222, + 23, + 148, + 187, + 210, + 133, + 170, + 86, + 123, + 56, + 153, + 190, + 246, + 157, + 122, + 251, + 231, + 15, + 38, + 162, + 103, + 137, + 222, + 232, + 96, + 158, + 250, + 77, + 159, + 198, + 185, + 10, + 140, + 33, + 121, + 202, + 245, + 133, + 89, + 158, + 17, + 169, + 14, + 36, + 126, + 236, + 218, + 88, + 191, + 132, + 196, + 79, + 70, + 222, + 46, + 171, + 54, + 208, + 75, + 210, + 136, + 75, + 138, + 212, + 237, + 161, + 112, + 232, + 30, + 177, + 6, + 120, + 167, + 115, + 191, + 56, + 65, + 224, + 95, + 233, + 198, + 253, + 249, + 41, + 80, + 164, + 51, + 35, + 46, + 123, + 46, + 9, + 60, + 132, + 34, + 226, + 183, + 22, + 55, + 174, + 22, + 33, + 158, + 155, + 150, + 103, + 132, + 107, + 183, + 157, + 212, + 238, + 181, + 153, + 6, + 136, + 223, + 233, + 72, + 109, + 43, + 64, + 252, + 124, + 211, + 190, + 162, + 229, + 109, + 120, + 133, + 211, + 1, + 197, + 27, + 77, + 142, + 66, + 94, + 71, + 68, + 233, + 55, + 158, + 109, + 74, + 161, + 175, + 163, + 149, + 139, + 95, + 79, + 173, + 192, + 41, + 228, + 218, + 233, + 116, + 124, + 3, + 50, + 41, + 233, + 131, + 227, + 152, + 124, + 70, + 185, + 253, + 203, + 123, + 200, + 103, + 244, + 92, + 59, + 242, + 208, + 21, + 170, + 12, + 151, + 90, + 165, + 35, + 166, + 10, + 228, + 171, + 209, + 136, + 196, + 110, + 90, + 4, + 180, + 173, + 240, + 204, + 18, + 244, + 170, + 132, + 185, + 51, + 127, + 56, + 251, + 42, + 205, + 214, + 0, + 202, + 64, + 153, + 230, + 154, + 141, + 113, + 17, + 175, + 237, + 171, + 190, + 240, + 74, + 147, + 216, + 201, + 242, + 184, + 124, + 10, + 38, + 225, + 156, + 161, + 41, + 218, + 113, + 169, + 26, + 38, + 176, + 12, + 205, + 119, + 176, + 36, + 198, + 239, + 208, + 32, + 252, + 236, + 161, + 41, + 104, + 248, + 250, + 244, + 213, + 197, + 55, + 183, + 176, + 69, + 169, + 152, + 228, + 32, + 61, + 185, + 180, + 185, + 62, + 212, + 221, + 2, + 170, + 104, + 35, + 79, + 55, + 90, + 76, + 100, + 154, + 186, + 96, + 127, + 132, + 239, + 75, + 179, + 188, + 53, + 104, + 147, + 107, + 174, + 148, + 15, + 112, + 168, + 204, + 243, + 200, + 110, + 88, + 105, + 14, + 234, + 126, + 152, + 252, + 165, + 72, + 80, + 74, + 180, + 97, + 25, + 61, + 168, + 100, + 105, + 150, + 240, + 119, + 133, + 151, + 247, + 134, + 169, + 133, + 251, + 55, + 97, + 35, + 137, + 154, + 166, + 67, + 238, + 31, + 182, + 255, + 6, + 14, + 137, + 43, + 168, + 225, + 234, + 150, + 178, + 234, + 78, + 25, + 172, + 43, + 92, + 221, + 114, + 143, + 244, + 253, + 117, + 166, + 12, + 124, + 63, + 131, + 63, + 196, + 96, + 230, + 22, + 203, + 167, + 156, + 42, + 15, + 191, + 170, + 212, + 109, + 236, + 161, + 74, + 35, + 196, + 187, + 117, + 230, + 135, + 143, + 129, + 33, + 121, + 50, + 168, + 33, + 119, + 162, + 61, + 3, + 140, + 47, + 152, + 135, + 189, + 223, + 183, + 153, + 215, + 130, + 169, + 157, + 239, + 202, + 35, + 93, + 111, + 166, + 79, + 163, + 212, + 138, + 93, + 176, + 242, + 108, + 176, + 44, + 145, + 56, + 216, + 243, + 106, + 116, + 121, + 147, + 224, + 203, + 198, + 33, + 111, + 135, + 18, + 33, + 87, + 2, + 225, + 30, + 78, + 195, + 103, + 141, + 178, + 56, + 217, + 227, + 108, + 140, + 216, + 17, + 11, + 151, + 60, + 79, + 107, + 133, + 186, + 208, + 190, + 98, + 211, + 250, + 154, + 0, + 178, + 13, + 12, + 33, + 76, + 207, + 37, + 110, + 135, + 55, + 187, + 194, + 35, + 47, + 207, + 244, + 220, + 246, + 138, + 58, + 160, + 174, + 173, + 99, + 215, + 164, + 177, + 26, + 115, + 57, + 149, + 25, + 68, + 49, + 53, + 244, + 236, + 244, + 13, + 239, + 13, + 2, + 12, + 238, + 147, + 70, + 72, + 97, + 43, + 249, + 201, + 210, + 5, + 185, + 242, + 91, + 42, + 197, + 162, + 229, + 35, + 168, + 152, + 33, + 79, + 98, + 0, + 187, + 188, + 134, + 80, + 96, + 225, + 178, + 70, + 163, + 110, + 156, + 49, + 224, + 211, + 41, + 36, + 118, + 137, + 82, + 243, + 192, + 156, + 41, + 138, + 255, + 114, + 210, + 61, + 233, + 103, + 108, + 35, + 37, + 3, + 40, + 104, + 26, + 173, + 172, + 40, + 22, + 79, + 249, + 204, + 242, + 249, + 41, + 44, + 80, + 118, + 30, + 119, + 108, + 235, + 202, + 217, + 187, + 228, + 186, + 22, + 79, + 231, + 240, + 33, + 4, + 136, + 232, + 157, + 146, + 141, + 132, + 152, + 243, + 40, + 234, + 191, + 148, + 251, + 244, + 192, + 14, + 12, + 24, + 228, + 125, + 149, + 50, + 59, + 160, + 14, + 15, + 174, + 111, + 205, + 205, + 217, + 235, + 247, + 68, + 50, + 184, + 135, + 72, + 226, + 149, + 169, + 211, + 199, + 152, + 24, + 91, + 200, + 221, + 157, + 163, + 39, + 176, + 71, + 55, + 90, + 225, + 3, + 36, + 50, + 182, + 32, + 34, + 234, + 130, + 136, + 62, + 168, + 233, + 30, + 78, + 137, + 40, + 141, + 254, + 133, + 55, + 201, + 61, + 75, + 106, + 231, + 248, + 206, + 240, + 229, + 247, + 235, + 74, + 117, + 128, + 202, + 236, + 84, + 189, + 88, + 100, + 2, + 251, + 200, + 91, + 1, + 117, + 248, + 248, + 81, + 121, + 57, + 49, + 38, + 103, + 122, + 10, + 61, + 228, + 55, + 133, + 47, + 238, + 50, + 29, + 91, + 121, + 79, + 251, + 102, + 214, + 167, + 222, + 251, + 219, + 4, + 167, + 80, + 101, + 12, + 237, + 212, + 213, + 81, + 200, + 50, + 86, + 14, + 29, + 54, + 70, + 98, + 157, + 133, + 137, + 134, + 144, + 208, + 23, + 122, + 35, + 176, + 73, + 122, + 75, + 137, + 241, + 46, + 100, + 115, + 215, + 89, + 236, + 148, + 16, + 165, + 224, + 56, + 26, + 131, + 137, + 104, + 45, + 240, + 185, + 114, + 86, + 244, + 174, + 179, + 221, + 62, + 47, + 172, + 215, + 68, + 38, + 76, + 202, + 87, + 206, + 131, + 58, + 197, + 165, + 24, + 124, + 208, + 123, + 108, + 42, + 202, + 85, + 190, + 36, + 147, + 223, + 149, + 18, + 135, + 135, + 155, + 208, + 113, + 12, + 195, + 70, + 205, + 227, + 136, + 68, + 158, + 153, + 10, + 17, + 247, + 125, + 149, + 15, + 181, + 129, + 14, + 147, + 242, + 166, + 237, + 41, + 144, + 37, + 240, + 158, + 145, + 255, + 112, + 175, + 85, + 117, + 251, + 100, + 224, + 31, + 192, + 81, + 166, + 209, + 251, + 235, + 3, + 184, + 28, + 6, + 89, + 186, + 12, + 126, + 191, + 254, + 233, + 3, + 193, + 165, + 209, + 64, + 233, + 166, + 252, + 163, + 194, + 64, + 169, + 124, + 231, + 87, + 220, + 104, + 146, + 89, + 190, + 141, + 83, + 73, + 0, + 184, + 141, + 246, + 132, + 178, + 102, + 32, + 184, + 169, + 40, + 240, + 131, + 102, + 179, + 226, + 130, + 224, + 116, + 244, + 205, + 102, + 141, + 227, + 231, + 208, + 173, + 56, + 193, + 146, + 64, + 89, + 66, + 240, + 171, + 11, + 254, + 59, + 164, + 33, + 69, + 59, + 191, + 243, + 161, + 89, + 0, + 56, + 150, + 6, + 104, + 63, + 186, + 65, + 92, + 203, + 179, + 120, + 146, + 15, + 112, + 29, + 35, + 190, + 175, + 246, + 239, + 50, + 6, + 79, + 237, + 171, + 16, + 108, + 72, + 163, + 82, + 210, + 226, + 183, + 196, + 210, + 70, + 195, + 67, + 207, + 81, + 238, + 181, + 128, + 23, + 12, + 246, + 146, + 40, + 183, + 109, + 20, + 107, + 2, + 119, + 102, + 42, + 152, + 17, + 176, + 35, + 125, + 143, + 107, + 163, + 69, + 169, + 200, + 214, + 216, + 207, + 79, + 12, + 185, + 182, + 143, + 193, + 7, + 73, + 193, + 165, + 216, + 104, + 109, + 214, + 21, + 135, + 230, + 210, + 55, + 253, + 8, + 255, + 39, + 122, + 117, + 213, + 135, + 106, + 18, + 3, + 138, + 141, + 45, + 219, + 111, + 230, + 38, + 236, + 232, + 193, + 197, + 241, + 157, + 82, + 181, + 86, + 138, + 131, + 24, + 44, + 19, + 109, + 60, + 171, + 138, + 131, + 115, + 154, + 146, + 124, + 76, + 113, + 232, + 16, + 110, + 53, + 211, + 115, + 214, + 2, + 145, + 197, + 141, + 200, + 143, + 51, + 40, + 33, + 167, + 185, + 56, + 108, + 149, + 178, + 173, + 100, + 75, + 60, + 81, + 58, + 238, + 48, + 50, + 170, + 82, + 249, + 236, + 96, + 64, + 202, + 1, + 113, + 73, + 163, + 209, + 3, + 69, + 59, + 196, + 81, + 210, + 148, + 244, + 99, + 132, + 100, + 91, + 134, + 22, + 122, + 173, + 78, + 161, + 13, + 77, + 132, + 33, + 35, + 79, + 28, + 255, + 60, + 34, + 12, + 24, + 57, + 8, + 251, + 191, + 193, + 17, + 94, + 77, + 178, + 18, + 183, + 221, + 166, + 186, + 213, + 62, + 208, + 251, + 102, + 141, + 219, + 134, + 144, + 95, + 238, + 124, + 27, + 30, + 153, + 193, + 15, + 111, + 52, + 134, + 10, + 141, + 11, + 231, + 45, + 184, + 135, + 134, + 153, + 126, + 189, + 78, + 193, + 24, + 128, + 182, + 26, + 3, + 169, + 67, + 218, + 69, + 18, + 39, + 187, + 235, + 98, + 141, + 39, + 254, + 62, + 39, + 72, + 199, + 192, + 78, + 201, + 161, + 79, + 88, + 194, + 169, + 35, + 64, + 213, + 198, + 173, + 29, + 169, + 75, + 22, + 208, + 219, + 25, + 60, + 219, + 45, + 186, + 1, + 174, + 157, + 228, + 32, + 37, + 64, + 82, + 157, + 31, + 99, + 187, + 188, + 123, + 117, + 97, + 83, + 55, + 243, + 172, + 194, + 243, + 116, + 53, + 84, + 77, + 141, + 37, + 122, + 225, + 129, + 176, + 45, + 18, + 157, + 205, + 110, + 224, + 97, + 8, + 42, + 31, + 144, + 149, + 134, + 51, + 108, + 164, + 82, + 201, + 217, + 41, + 182, + 65, + 225, + 35, + 149, + 194, + 208, + 37, + 184, + 113, + 45, + 23, + 254, + 161, + 91, + 119, + 197, + 75, + 62, + 225, + 167, + 108, + 131, + 14, + 14, + 36, + 177, + 251, + 244, + 113, + 119, + 4, + 24, + 115, + 66, + 106, + 13, + 254, + 92, + 240, + 206, + 86, + 34, + 122, + 111, + 105, + 181, + 4, + 108, + 230, + 16, + 203, + 121, + 142, + 218, + 208, + 153, + 187, + 177, + 84, + 106, + 148, + 170, + 195, + 112, + 88, + 119, + 163, + 128, + 139, + 173, + 198, + 216, + 50, + 92, + 128, + 56, + 115, + 235, + 214, + 75, + 101, + 243, + 3, + 154, + 112, + 129, + 73, + 244, + 0, + 181, + 116, + 51, + 137, + 16, + 204, + 177, + 19, + 132, + 209, + 248, + 45, + 78, + 181, + 125, + 215, + 82, + 221, + 30, + 134, + 248, + 15, + 167, + 169, + 110, + 190, + 184, + 211, + 5, + 126, + 46, + 64, + 211, + 52, + 72, + 229, + 208, + 87, + 104, + 49, + 16, + 55, + 90, + 7, + 100, + 33, + 109, + 87, + 196, + 214, + 215, + 224, + 136, + 163, + 247, + 32, + 17, + 197, + 169, + 35, + 114, + 19, + 182, + 136, + 62, + 83, + 9, + 136, + 3, + 246, + 223, + 1, + 107, + 228, + 27, + 19, + 125, + 118, + 64, + 135, + 94, + 154, + 133, + 56, + 232, + 192, + 78, + 71, + 79, + 21, + 48, + 97, + 166, + 77, + 227, + 219, + 82, + 175, + 115, + 69, + 190, + 185, + 227, + 224, + 177, + 11, + 174, + 32, + 204, + 185, + 26, + 249, + 231, + 174, + 55, + 177, + 226, + 115, + 74, + 246, + 53, + 196, + 161, + 124, + 12, + 103, + 105, + 102, + 20, + 161, + 205, + 51, + 63, + 66, + 158, + 218, + 10, + 69, + 106, + 179, + 175, + 212, + 76, + 179, + 102, + 19, + 85, + 105, + 135, + 135, + 122, + 172, + 128, + 142, + 80, + 27, + 217, + 2, + 55, + 228, + 104, + 142, + 188, + 157, + 250, + 184, + 91, + 37, + 38, + 227, + 109, + 247, + 53, + 22, + 248, + 234, + 164, + 252, + 81, + 196, + 154, + 154, + 165, + 7, + 251, + 239, + 22, + 139, + 126, + 75, + 72, + 118, + 106, + 55, + 196, + 193, + 198, + 74, + 157, + 11, + 62, + 16, + 141, + 222, + 189, + 234, + 104, + 99, + 181, + 102, + 210, + 178, + 25, + 136, + 220, + 56, + 196, + 95, + 185, + 28, + 230, + 73, + 48, + 148, + 26, + 43, + 38, + 158, + 6, + 17, + 13, + 52, + 190, + 126, + 57, + 204, + 107, + 0, + 251, + 77, + 185, + 222, + 6, + 62, + 33, + 200, + 240, + 116, + 72, + 127, + 148, + 49, + 54, + 41, + 44, + 206, + 163, + 215, + 79, + 61, + 139, + 22, + 44, + 207, + 73, + 91, + 167, + 164, + 140, + 141, + 56, + 237, + 226, + 31, + 212, + 196, + 157, + 51, + 8, + 110, + 48, + 40, + 207, + 86, + 111, + 199, + 1, + 234, + 158, + 234, + 175, + 63, + 136, + 203, + 18, + 158, + 69, + 107, + 74, + 10, + 3, + 158, + 130, + 85, + 8, + 30, + 57, + 204, + 59, + 232, + 106, + 245, + 106, + 159, + 24, + 138, + 191, + 254, + 249, + 161, + 140, + 108, + 129, + 10, + 230, + 109, + 149, + 195, + 195, + 50, + 131, + 97, + 10, + 215, + 86, + 183, + 244, + 5, + 235, + 217, + 253, + 67, + 26, + 137, + 108, + 214, + 168, + 139, + 82, + 93, + 48, + 125, + 230, + 102, + 110, + 149, + 152, + 169, + 4, + 193, + 233, + 109, + 88, + 248, + 181, + 46, + 237, + 137, + 168, + 246, + 243, + 16, + 153, + 227, + 221, + 56, + 158, + 223, + 210, + 41, + 26, + 205, + 186, + 12, + 111, + 233, + 20, + 233, + 92, + 46, + 137, + 148, + 87, + 158, + 91, + 181, + 19, + 148, + 217, + 143, + 149, + 87, + 205, + 131, + 32, + 235, + 12, + 69, + 49, + 12, + 244, + 174, + 209, + 254, + 32, + 156, + 178, + 39, + 173, + 20, + 97, + 44, + 183, + 195, + 135, + 246, + 4, + 175, + 11, + 157, + 167, + 67, + 60, + 102, + 129, + 139, + 140, + 175, + 233, + 192, + 83, + 203, + 19, + 246, + 221, + 52, + 142, + 228, + 9, + 236, + 32, + 113, + 80, + 175, + 157, + 121, + 54, + 149, + 100, + 178, + 84, + 231, + 223, + 165, + 105, + 119, + 55, + 250, + 65, + 149, + 174, + 5, + 151, + 192, + 111, + 133, + 253, + 27, + 94, + 67, + 1, + 20, + 253, + 95, + 164, + 231, + 93, + 201, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 53, + 57, + 51, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 229, + 125, + 221, + 174, + 36, + 201, + 113, + 222, + 253, + 62, + 197, + 188, + 0, + 131, + 241, + 155, + 145, + 9, + 16, + 4, + 102, + 119, + 73, + 193, + 23, + 2, + 108, + 131, + 111, + 32, + 91, + 2, + 12, + 240, + 194, + 242, + 251, + 3, + 70, + 244, + 140, + 56, + 221, + 123, + 34, + 78, + 87, + 230, + 137, + 233, + 89, + 217, + 146, + 0, + 82, + 219, + 59, + 61, + 93, + 85, + 89, + 153, + 17, + 95, + 124, + 63, + 244, + 9, + 63, + 225, + 167, + 63, + 208, + 39, + 252, + 52, + 149, + 63, + 253, + 203, + 223, + 127, + 250, + 223, + 63, + 129, + 219, + 237, + 159, + 254, + 199, + 127, + 254, + 203, + 223, + 127, + 162, + 79, + 241, + 191, + 255, + 253, + 159, + 110, + 255, + 65, + 159, + 254, + 253, + 223, + 126, + 250, + 227, + 63, + 201, + 167, + 127, + 251, + 63, + 63, + 197, + 231, + 190, + 244, + 19, + 17, + 203, + 167, + 127, + 255, + 159, + 63, + 253, + 235, + 79, + 255, + 237, + 55, + 223, + 224, + 28, + 255, + 247, + 47, + 127, + 191, + 253, + 171, + 24, + 223, + 241, + 229, + 191, + 124, + 251, + 142, + 63, + 254, + 215, + 79, + 127, + 250, + 211, + 31, + 255, + 249, + 151, + 255, + 242, + 235, + 39, + 252, + 244, + 231, + 63, + 255, + 252, + 235, + 47, + 63, + 253, + 252, + 183, + 159, + 254, + 248, + 87, + 253, + 68, + 10, + 35, + 254, + 199, + 63, + 253, + 237, + 95, + 127, + 162, + 111, + 63, + 21, + 212, + 215, + 36, + 151, + 245, + 233, + 111, + 241, + 189, + 127, + 32, + 1, + 118, + 23, + 149, + 249, + 233, + 111, + 255, + 227, + 211, + 159, + 16, + 109, + 252, + 249, + 211, + 223, + 254, + 215, + 79, + 14, + 194, + 147, + 56, + 126, + 204, + 215, + 127, + 238, + 183, + 127, + 174, + 128, + 78, + 203, + 205, + 255, + 241, + 129, + 234, + 237, + 131, + 9, + 100, + 68, + 232, + 243, + 219, + 7, + 159, + 139, + 15, + 136, + 110, + 31, + 252, + 229, + 111, + 91, + 63, + 86, + 8, + 220, + 149, + 23, + 39, + 63, + 26, + 229, + 232, + 27, + 13, + 166, + 14, + 30, + 51, + 249, + 70, + 193, + 219, + 55, + 18, + 3, + 227, + 116, + 199, + 249, + 252, + 122, + 141, + 138, + 15, + 240, + 175, + 39, + 191, + 110, + 76, + 136, + 171, + 149, + 182, + 203, + 117, + 6, + 67, + 98, + 180, + 236, + 169, + 151, + 79, + 247, + 231, + 234, + 233, + 206, + 234, + 54, + 216, + 215, + 175, + 154, + 19, + 135, + 218, + 155, + 63, + 177, + 249, + 171, + 9, + 13, + 22, + 58, + 89, + 219, + 125, + 32, + 92, + 176, + 124, + 17, + 143, + 228, + 43, + 235, + 213, + 252, + 203, + 237, + 3, + 1, + 182, + 65, + 186, + 228, + 194, + 99, + 255, + 178, + 254, + 25, + 226, + 239, + 86, + 122, + 243, + 42, + 237, + 254, + 108, + 25, + 160, + 232, + 3, + 103, + 223, + 157, + 80, + 140, + 255, + 223, + 166, + 102, + 75, + 162, + 186, + 46, + 227, + 234, + 131, + 253, + 69, + 180, + 125, + 83, + 203, + 77, + 229, + 236, + 37, + 163, + 197, + 48, + 196, + 184, + 111, + 83, + 161, + 53, + 192, + 209, + 179, + 47, + 84, + 171, + 110, + 92, + 249, + 46, + 29, + 173, + 20, + 38, + 7, + 156, + 36, + 171, + 237, + 162, + 152, + 9, + 200, + 68, + 188, + 126, + 99, + 182, + 191, + 113, + 129, + 160, + 170, + 247, + 253, + 70, + 17, + 16, + 31, + 106, + 61, + 119, + 190, + 92, + 128, + 197, + 249, + 248, + 117, + 141, + 239, + 254, + 104, + 23, + 16, + 92, + 216, + 183, + 254, + 216, + 29, + 100, + 226, + 202, + 118, + 137, + 135, + 55, + 151, + 191, + 189, + 109, + 186, + 142, + 254, + 166, + 185, + 96, + 160, + 226, + 232, + 251, + 237, + 75, + 96, + 248, + 192, + 236, + 204, + 211, + 191, + 222, + 109, + 21, + 67, + 71, + 190, + 135, + 136, + 230, + 187, + 209, + 162, + 252, + 159, + 15, + 252, + 246, + 7, + 234, + 191, + 225, + 232, + 224, + 18, + 90, + 224, + 178, + 172, + 239, + 246, + 8, + 11, + 76, + 34, + 75, + 247, + 22, + 207, + 31, + 237, + 253, + 35, + 199, + 85, + 213, + 115, + 247, + 183, + 167, + 88, + 223, + 135, + 69, + 155, + 25, + 216, + 180, + 217, + 89, + 180, + 45, + 24, + 230, + 158, + 22, + 109, + 95, + 150, + 194, + 151, + 194, + 41, + 150, + 209, + 243, + 187, + 112, + 246, + 104, + 167, + 130, + 204, + 248, + 158, + 182, + 171, + 154, + 19, + 116, + 16, + 103, + 7, + 177, + 254, + 165, + 168, + 200, + 105, + 247, + 145, + 127, + 62, + 249, + 105, + 202, + 12, + 195, + 243, + 26, + 225, + 236, + 98, + 149, + 7, + 184, + 166, + 79, + 112, + 127, + 25, + 83, + 241, + 65, + 117, + 215, + 30, + 234, + 214, + 251, + 191, + 225, + 203, + 218, + 25, + 192, + 241, + 206, + 202, + 7, + 235, + 10, + 245, + 1, + 107, + 209, + 106, + 188, + 105, + 147, + 0, + 71, + 122, + 166, + 151, + 45, + 91, + 177, + 221, + 219, + 67, + 111, + 163, + 200, + 207, + 111, + 78, + 185, + 103, + 254, + 82, + 236, + 153, + 15, + 127, + 199, + 68, + 146, + 244, + 239, + 192, + 241, + 237, + 239, + 254, + 122, + 21, + 155, + 183, + 197, + 140, + 96, + 209, + 162, + 190, + 54, + 201, + 204, + 226, + 209, + 97, + 122, + 167, + 203, + 251, + 240, + 115, + 113, + 178, + 150, + 247, + 167, + 120, + 121, + 239, + 235, + 219, + 134, + 187, + 179, + 12, + 8, + 209, + 169, + 237, + 238, + 224, + 167, + 63, + 72, + 236, + 7, + 52, + 221, + 158, + 54, + 196, + 189, + 157, + 96, + 212, + 160, + 147, + 231, + 160, + 183, + 63, + 225, + 219, + 181, + 36, + 24, + 10, + 33, + 1, + 174, + 184, + 248, + 119, + 177, + 148, + 191, + 252, + 243, + 47, + 247, + 120, + 10, + 117, + 225, + 41, + 37, + 144, + 80, + 247, + 81, + 189, + 247, + 45, + 234, + 226, + 69, + 67, + 26, + 207, + 96, + 7, + 29, + 146, + 119, + 162, + 7, + 77, + 224, + 19, + 64, + 101, + 23, + 55, + 49, + 88, + 115, + 46, + 236, + 235, + 44, + 28, + 1, + 7, + 206, + 41, + 223, + 25, + 56, + 249, + 229, + 228, + 199, + 45, + 7, + 31, + 66, + 171, + 175, + 217, + 139, + 247, + 101, + 138, + 145, + 167, + 157, + 84, + 249, + 176, + 100, + 247, + 131, + 242, + 70, + 60, + 223, + 80, + 208, + 73, + 150, + 173, + 15, + 22, + 167, + 100, + 8, + 46, + 138, + 179, + 17, + 91, + 50, + 133, + 137, + 3, + 99, + 147, + 122, + 243, + 149, + 252, + 165, + 205, + 154, + 176, + 140, + 7, + 223, + 3, + 66, + 251, + 59, + 193, + 231, + 237, + 213, + 117, + 6, + 58, + 45, + 135, + 56, + 183, + 250, + 142, + 87, + 70, + 2, + 150, + 145, + 98, + 111, + 37, + 26, + 84, + 189, + 100, + 103, + 207, + 157, + 41, + 64, + 159, + 209, + 8, + 61, + 80, + 96, + 62, + 51, + 5, + 146, + 249, + 203, + 62, + 64, + 8, + 54, + 149, + 93, + 229, + 123, + 109, + 4, + 172, + 12, + 238, + 76, + 141, + 168, + 143, + 14, + 152, + 170, + 148, + 61, + 43, + 249, + 82, + 143, + 44, + 112, + 55, + 155, + 235, + 105, + 33, + 244, + 236, + 76, + 187, + 94, + 192, + 31, + 62, + 243, + 185, + 128, + 145, + 189, + 113, + 33, + 175, + 248, + 30, + 77, + 145, + 62, + 249, + 242, + 122, + 146, + 192, + 20, + 97, + 227, + 231, + 117, + 162, + 190, + 91, + 120, + 111, + 3, + 5, + 14, + 58, + 153, + 250, + 144, + 98, + 17, + 2, + 51, + 165, + 180, + 63, + 213, + 11, + 143, + 60, + 80, + 139, + 15, + 150, + 49, + 198, + 224, + 41, + 2, + 121, + 10, + 36, + 12, + 152, + 56, + 87, + 182, + 186, + 191, + 190, + 129, + 215, + 59, + 170, + 67, + 24, + 1, + 65, + 101, + 73, + 223, + 154, + 12, + 96, + 34, + 126, + 89, + 182, + 7, + 60, + 28, + 25, + 31, + 106, + 173, + 203, + 222, + 229, + 8, + 9, + 86, + 54, + 224, + 49, + 26, + 15, + 97, + 13, + 108, + 89, + 230, + 164, + 125, + 128, + 97, + 247, + 111, + 82, + 131, + 161, + 212, + 8, + 223, + 170, + 46, + 112, + 18, + 204, + 126, + 251, + 87, + 252, + 230, + 235, + 81, + 18, + 43, + 55, + 219, + 86, + 30, + 55, + 209, + 106, + 119, + 61, + 171, + 173, + 117, + 42, + 184, + 229, + 213, + 205, + 41, + 172, + 49, + 97, + 50, + 155, + 239, + 93, + 239, + 209, + 251, + 102, + 232, + 96, + 230, + 171, + 111, + 165, + 25, + 17, + 12, + 94, + 41, + 204, + 83, + 189, + 111, + 37, + 254, + 113, + 180, + 213, + 155, + 48, + 32, + 198, + 116, + 177, + 237, + 154, + 100, + 0, + 250, + 160, + 116, + 5, + 190, + 191, + 255, + 189, + 189, + 38, + 59, + 67, + 96, + 28, + 216, + 230, + 242, + 118, + 212, + 130, + 141, + 229, + 25, + 104, + 246, + 185, + 172, + 215, + 202, + 182, + 164, + 110, + 241, + 207, + 222, + 137, + 1, + 202, + 34, + 115, + 188, + 253, + 213, + 135, + 143, + 20, + 65, + 151, + 201, + 63, + 144, + 147, + 187, + 47, + 44, + 39, + 99, + 245, + 32, + 188, + 26, + 128, + 21, + 245, + 218, + 25, + 128, + 58, + 13, + 140, + 109, + 198, + 40, + 168, + 190, + 7, + 25, + 216, + 35, + 8, + 52, + 13, + 109, + 237, + 128, + 61, + 220, + 4, + 246, + 236, + 115, + 67, + 202, + 74, + 227, + 96, + 25, + 22, + 95, + 197, + 71, + 71, + 155, + 121, + 212, + 254, + 203, + 250, + 54, + 150, + 17, + 72, + 237, + 88, + 146, + 109, + 44, + 132, + 69, + 123, + 32, + 95, + 126, + 60, + 17, + 104, + 252, + 91, + 232, + 23, + 70, + 183, + 71, + 155, + 206, + 34, + 96, + 94, + 154, + 254, + 186, + 179, + 235, + 93, + 6, + 130, + 164, + 41, + 16, + 245, + 202, + 221, + 231, + 237, + 31, + 57, + 91, + 17, + 164, + 11, + 166, + 91, + 35, + 208, + 100, + 2, + 75, + 125, + 250, + 216, + 90, + 17, + 247, + 67, + 62, + 189, + 2, + 162, + 156, + 241, + 142, + 166, + 128, + 217, + 74, + 231, + 232, + 135, + 151, + 59, + 29, + 2, + 169, + 27, + 167, + 51, + 190, + 107, + 36, + 156, + 207, + 223, + 26, + 115, + 100, + 213, + 143, + 246, + 205, + 28, + 19, + 132, + 213, + 216, + 54, + 243, + 2, + 154, + 196, + 254, + 180, + 109, + 30, + 94, + 244, + 205, + 37, + 222, + 117, + 95, + 145, + 156, + 93, + 237, + 8, + 100, + 219, + 227, + 228, + 109, + 163, + 99, + 16, + 152, + 172, + 244, + 27, + 159, + 214, + 183, + 111, + 203, + 246, + 7, + 78, + 25, + 191, + 173, + 180, + 190, + 188, + 46, + 126, + 55, + 191, + 60, + 108, + 182, + 113, + 0, + 161, + 245, + 109, + 134, + 66, + 8, + 228, + 254, + 124, + 170, + 118, + 71, + 69, + 40, + 187, + 154, + 18, + 76, + 186, + 84, + 159, + 62, + 244, + 71, + 159, + 171, + 15, + 126, + 62, + 37, + 39, + 204, + 105, + 157, + 196, + 128, + 33, + 176, + 204, + 57, + 173, + 198, + 183, + 49, + 181, + 234, + 216, + 169, + 106, + 186, + 135, + 51, + 118, + 119, + 172, + 153, + 221, + 232, + 221, + 74, + 152, + 22, + 136, + 105, + 227, + 252, + 82, + 89, + 64, + 57, + 197, + 126, + 247, + 135, + 187, + 71, + 175, + 150, + 170, + 192, + 68, + 156, + 125, + 221, + 141, + 170, + 195, + 116, + 206, + 247, + 24, + 217, + 5, + 231, + 182, + 39, + 214, + 163, + 88, + 83, + 187, + 139, + 240, + 112, + 196, + 141, + 12, + 170, + 222, + 8, + 162, + 25, + 14, + 48, + 90, + 233, + 188, + 244, + 190, + 10, + 187, + 134, + 137, + 29, + 118, + 245, + 8, + 203, + 57, + 157, + 146, + 156, + 118, + 245, + 6, + 168, + 58, + 158, + 93, + 212, + 195, + 111, + 47, + 9, + 113, + 71, + 45, + 157, + 5, + 180, + 133, + 51, + 133, + 182, + 78, + 169, + 26, + 2, + 62, + 49, + 229, + 11, + 238, + 191, + 205, + 173, + 16, + 188, + 249, + 4, + 142, + 3, + 250, + 59, + 18, + 47, + 182, + 165, + 26, + 101, + 203, + 244, + 149, + 0, + 26, + 27, + 147, + 35, + 142, + 55, + 31, + 116, + 77, + 222, + 98, + 138, + 128, + 76, + 177, + 253, + 238, + 81, + 56, + 108, + 125, + 185, + 137, + 186, + 211, + 213, + 75, + 83, + 87, + 255, + 173, + 44, + 181, + 49, + 121, + 205, + 11, + 35, + 188, + 179, + 14, + 139, + 163, + 193, + 66, + 75, + 167, + 44, + 167, + 115, + 27, + 88, + 202, + 154, + 85, + 93, + 236, + 85, + 171, + 89, + 247, + 22, + 37, + 41, + 250, + 10, + 217, + 46, + 193, + 42, + 190, + 176, + 237, + 124, + 242, + 71, + 209, + 162, + 1, + 131, + 150, + 55, + 238, + 151, + 11, + 97, + 44, + 114, + 229, + 255, + 92, + 98, + 25, + 86, + 192, + 229, + 163, + 177, + 184, + 32, + 158, + 64, + 99, + 141, + 252, + 228, + 40, + 39, + 246, + 71, + 103, + 57, + 201, + 4, + 55, + 89, + 141, + 83, + 62, + 82, + 134, + 201, + 182, + 40, + 125, + 144, + 79, + 186, + 235, + 109, + 60, + 99, + 1, + 197, + 11, + 208, + 136, + 25, + 12, + 1, + 14, + 48, + 36, + 85, + 232, + 212, + 96, + 81, + 181, + 222, + 14, + 137, + 50, + 115, + 0, + 162, + 107, + 223, + 235, + 69, + 11, + 1, + 125, + 105, + 118, + 89, + 226, + 5, + 77, + 166, + 255, + 245, + 218, + 17, + 109, + 29, + 173, + 104, + 150, + 9, + 186, + 152, + 59, + 73, + 25, + 12, + 54, + 52, + 197, + 79, + 154, + 215, + 51, + 219, + 132, + 57, + 134, + 54, + 254, + 248, + 193, + 176, + 100, + 234, + 142, + 56, + 165, + 236, + 221, + 31, + 216, + 96, + 19, + 199, + 135, + 25, + 34, + 33, + 156, + 81, + 236, + 100, + 136, + 16, + 168, + 141, + 116, + 58, + 252, + 176, + 200, + 239, + 71, + 102, + 79, + 154, + 205, + 109, + 150, + 197, + 155, + 63, + 240, + 176, + 194, + 109, + 248, + 7, + 87, + 184, + 200, + 130, + 57, + 102, + 223, + 26, + 17, + 141, + 154, + 5, + 211, + 110, + 86, + 127, + 173, + 154, + 211, + 237, + 102, + 243, + 140, + 88, + 51, + 66, + 185, + 48, + 27, + 69, + 185, + 226, + 8, + 147, + 49, + 101, + 109, + 213, + 200, + 254, + 33, + 168, + 183, + 130, + 65, + 141, + 169, + 0, + 248, + 240, + 215, + 47, + 3, + 54, + 78, + 79, + 167, + 23, + 181, + 202, + 1, + 17, + 57, + 154, + 204, + 86, + 136, + 200, + 227, + 123, + 246, + 216, + 220, + 191, + 156, + 130, + 65, + 66, + 154, + 234, + 126, + 206, + 193, + 32, + 153, + 35, + 93, + 162, + 215, + 166, + 78, + 15, + 64, + 116, + 249, + 16, + 175, + 77, + 157, + 238, + 30, + 239, + 217, + 174, + 172, + 203, + 97, + 78, + 106, + 156, + 58, + 25, + 18, + 44, + 147, + 116, + 176, + 201, + 250, + 109, + 120, + 50, + 80, + 249, + 2, + 174, + 121, + 134, + 14, + 240, + 4, + 20, + 106, + 172, + 115, + 131, + 7, + 66, + 40, + 41, + 12, + 246, + 34, + 96, + 211, + 140, + 65, + 221, + 173, + 111, + 45, + 155, + 13, + 48, + 77, + 249, + 58, + 15, + 192, + 196, + 53, + 69, + 82, + 53, + 33, + 233, + 61, + 34, + 108, + 34, + 144, + 205, + 70, + 241, + 245, + 127, + 32, + 63, + 66, + 243, + 245, + 66, + 251, + 125, + 128, + 199, + 39, + 105, + 20, + 120, + 191, + 249, + 205, + 231, + 22, + 29, + 38, + 183, + 253, + 241, + 55, + 223, + 199, + 191, + 20, + 247, + 160, + 174, + 224, + 241, + 12, + 181, + 132, + 37, + 44, + 209, + 63, + 150, + 87, + 148, + 33, + 86, + 115, + 130, + 56, + 18, + 239, + 0, + 86, + 218, + 69, + 67, + 169, + 212, + 1, + 251, + 200, + 78, + 189, + 62, + 206, + 200, + 158, + 8, + 110, + 102, + 141, + 111, + 135, + 42, + 76, + 118, + 75, + 9, + 112, + 15, + 100, + 207, + 75, + 247, + 225, + 208, + 170, + 197, + 128, + 145, + 188, + 81, + 9, + 63, + 2, + 239, + 148, + 49, + 95, + 0, + 186, + 248, + 130, + 25, + 164, + 200, + 190, + 31, + 63, + 5, + 22, + 175, + 98, + 128, + 178, + 237, + 196, + 80, + 94, + 238, + 195, + 120, + 226, + 225, + 131, + 51, + 169, + 11, + 41, + 204, + 101, + 214, + 120, + 126, + 17, + 77, + 88, + 195, + 45, + 231, + 99, + 31, + 189, + 64, + 196, + 14, + 68, + 115, + 116, + 66, + 100, + 66, + 64, + 11, + 71, + 170, + 161, + 173, + 143, + 154, + 39, + 206, + 25, + 219, + 216, + 25, + 5, + 172, + 49, + 211, + 86, + 226, + 148, + 94, + 100, + 55, + 153, + 79, + 170, + 51, + 175, + 230, + 26, + 245, + 14, + 249, + 196, + 245, + 102, + 27, + 82, + 67, + 192, + 201, + 141, + 92, + 100, + 154, + 10, + 100, + 154, + 250, + 99, + 29, + 208, + 202, + 234, + 183, + 235, + 104, + 139, + 100, + 92, + 160, + 152, + 90, + 46, + 157, + 106, + 174, + 4, + 212, + 3, + 211, + 219, + 161, + 97, + 94, + 34, + 142, + 124, + 208, + 32, + 230, + 204, + 179, + 39, + 176, + 227, + 219, + 247, + 244, + 97, + 109, + 18, + 122, + 105, + 127, + 69, + 27, + 203, + 147, + 33, + 234, + 240, + 190, + 151, + 151, + 231, + 0, + 15, + 213, + 114, + 246, + 120, + 203, + 185, + 244, + 21, + 200, + 33, + 107, + 223, + 154, + 154, + 85, + 161, + 9, + 230, + 210, + 88, + 7, + 72, + 152, + 111, + 168, + 229, + 16, + 226, + 171, + 220, + 78, + 2, + 81, + 240, + 209, + 136, + 26, + 25, + 129, + 234, + 76, + 113, + 229, + 93, + 38, + 210, + 33, + 142, + 231, + 8, + 107, + 173, + 209, + 136, + 90, + 186, + 197, + 89, + 146, + 78, + 32, + 251, + 113, + 60, + 3, + 149, + 220, + 7, + 232, + 20, + 199, + 91, + 96, + 40, + 41, + 223, + 239, + 254, + 21, + 41, + 181, + 69, + 151, + 144, + 234, + 179, + 250, + 254, + 6, + 108, + 132, + 81, + 102, + 91, + 199, + 32, + 3, + 200, + 87, + 202, + 105, + 189, + 151, + 181, + 62, + 0, + 64, + 215, + 184, + 136, + 9, + 241, + 242, + 186, + 176, + 245, + 212, + 105, + 102, + 130, + 21, + 35, + 149, + 83, + 73, + 22, + 195, + 32, + 76, + 173, + 217, + 94, + 35, + 140, + 12, + 6, + 22, + 107, + 231, + 97, + 104, + 132, + 32, + 196, + 238, + 79, + 182, + 28, + 92, + 250, + 189, + 246, + 28, + 11, + 118, + 199, + 208, + 78, + 250, + 83, + 176, + 59, + 196, + 82, + 157, + 212, + 83, + 255, + 157, + 109, + 40, + 78, + 129, + 11, + 167, + 200, + 83, + 112, + 111, + 66, + 81, + 157, + 111, + 207, + 180, + 158, + 48, + 216, + 182, + 33, + 60, + 14, + 19, + 135, + 70, + 211, + 178, + 204, + 53, + 199, + 183, + 109, + 49, + 202, + 82, + 244, + 176, + 180, + 8, + 247, + 190, + 155, + 224, + 165, + 230, + 98, + 237, + 13, + 199, + 194, + 188, + 239, + 166, + 119, + 121, + 115, + 177, + 191, + 86, + 144, + 69, + 121, + 77, + 189, + 160, + 236, + 2, + 157, + 95, + 106, + 152, + 45, + 222, + 89, + 56, + 105, + 234, + 224, + 185, + 37, + 38, + 179, + 46, + 231, + 160, + 31, + 173, + 253, + 8, + 41, + 157, + 46, + 78, + 253, + 31, + 78, + 103, + 187, + 192, + 76, + 180, + 178, + 61, + 240, + 69, + 186, + 30, + 251, + 50, + 114, + 111, + 44, + 158, + 134, + 0, + 114, + 172, + 146, + 31, + 163, + 235, + 57, + 52, + 190, + 69, + 12, + 55, + 232, + 149, + 122, + 150, + 156, + 250, + 6, + 105, + 116, + 63, + 57, + 169, + 231, + 29, + 4, + 98, + 223, + 23, + 234, + 208, + 63, + 217, + 192, + 132, + 181, + 239, + 252, + 37, + 185, + 25, + 160, + 74, + 106, + 93, + 240, + 117, + 62, + 177, + 77, + 87, + 187, + 57, + 160, + 222, + 164, + 186, + 109, + 12, + 56, + 15, + 206, + 66, + 110, + 222, + 251, + 146, + 73, + 210, + 95, + 242, + 119, + 224, + 80, + 133, + 56, + 199, + 13, + 175, + 110, + 188, + 65, + 11, + 3, + 175, + 78, + 41, + 44, + 135, + 79, + 113, + 25, + 32, + 82, + 163, + 140, + 140, + 214, + 2, + 116, + 201, + 141, + 186, + 95, + 247, + 12, + 183, + 217, + 111, + 8, + 40, + 141, + 108, + 25, + 22, + 5, + 66, + 77, + 183, + 218, + 206, + 219, + 112, + 198, + 245, + 179, + 1, + 139, + 168, + 145, + 243, + 207, + 3, + 97, + 205, + 124, + 51, + 120, + 220, + 80, + 237, + 130, + 3, + 83, + 101, + 254, + 252, + 215, + 220, + 63, + 249, + 208, + 164, + 113, + 125, + 101, + 234, + 247, + 213, + 12, + 40, + 32, + 154, + 187, + 228, + 212, + 55, + 225, + 53, + 146, + 22, + 225, + 9, + 182, + 188, + 209, + 255, + 69, + 162, + 62, + 29, + 43, + 247, + 127, + 249, + 46, + 238, + 163, + 13, + 50, + 61, + 25, + 10, + 106, + 152, + 30, + 252, + 167, + 189, + 196, + 4, + 227, + 220, + 14, + 185, + 188, + 168, + 51, + 254, + 162, + 47, + 32, + 28, + 157, + 80, + 224, + 20, + 32, + 159, + 41, + 96, + 250, + 163, + 9, + 140, + 26, + 105, + 26, + 51, + 167, + 164, + 30, + 162, + 69, + 132, + 128, + 230, + 169, + 78, + 254, + 144, + 35, + 64, + 19, + 24, + 87, + 106, + 64, + 115, + 202, + 232, + 99, + 224, + 73, + 185, + 19, + 195, + 1, + 247, + 237, + 144, + 234, + 55, + 65, + 180, + 145, + 67, + 175, + 193, + 183, + 162, + 145, + 14, + 238, + 203, + 173, + 226, + 208, + 231, + 106, + 40, + 12, + 89, + 141, + 51, + 0, + 29, + 19, + 156, + 40, + 61, + 218, + 118, + 173, + 187, + 107, + 165, + 233, + 33, + 65, + 48, + 236, + 114, + 164, + 209, + 64, + 214, + 162, + 51, + 26, + 150, + 206, + 133, + 190, + 191, + 121, + 247, + 3, + 229, + 226, + 74, + 65, + 112, + 15, + 248, + 223, + 91, + 12, + 28, + 45, + 123, + 115, + 14, + 67, + 158, + 198, + 134, + 198, + 124, + 0, + 91, + 84, + 120, + 103, + 34, + 130, + 75, + 198, + 230, + 103, + 136, + 201, + 64, + 4, + 71, + 73, + 103, + 174, + 109, + 206, + 85, + 66, + 219, + 194, + 189, + 51, + 140, + 128, + 3, + 6, + 117, + 137, + 17, + 251, + 150, + 7, + 83, + 248, + 134, + 154, + 25, + 205, + 29, + 212, + 108, + 116, + 113, + 223, + 158, + 112, + 190, + 182, + 5, + 88, + 32, + 200, + 76, + 141, + 244, + 40, + 70, + 16, + 215, + 28, + 4, + 187, + 52, + 95, + 249, + 56, + 8, + 166, + 26, + 166, + 113, + 214, + 104, + 9, + 174, + 51, + 76, + 227, + 172, + 203, + 18, + 252, + 7, + 131, + 12, + 211, + 129, + 230, + 192, + 212, + 65, + 242, + 80, + 79, + 74, + 97, + 105, + 135, + 233, + 166, + 85, + 90, + 29, + 213, + 116, + 244, + 102, + 217, + 104, + 240, + 212, + 116, + 52, + 242, + 22, + 136, + 5, + 144, + 38, + 202, + 177, + 187, + 106, + 131, + 131, + 147, + 14, + 24, + 55, + 216, + 191, + 145, + 82, + 134, + 224, + 140, + 146, + 71, + 240, + 108, + 175, + 230, + 122, + 6, + 244, + 34, + 186, + 54, + 205, + 5, + 83, + 130, + 145, + 208, + 7, + 84, + 9, + 44, + 92, + 231, + 165, + 206, + 53, + 107, + 179, + 103, + 54, + 231, + 47, + 203, + 160, + 123, + 168, + 55, + 15, + 85, + 255, + 99, + 193, + 136, + 131, + 182, + 239, + 132, + 113, + 1, + 55, + 78, + 123, + 218, + 218, + 87, + 141, + 42, + 44, + 165, + 170, + 157, + 214, + 102, + 194, + 206, + 145, + 47, + 159, + 144, + 67, + 120, + 219, + 52, + 90, + 81, + 49, + 133, + 1, + 207, + 38, + 83, + 167, + 74, + 25, + 107, + 21, + 179, + 137, + 133, + 199, + 132, + 167, + 158, + 226, + 167, + 92, + 171, + 48, + 157, + 91, + 169, + 131, + 210, + 163, + 3, + 196, + 125, + 235, + 251, + 227, + 226, + 150, + 14, + 85, + 98, + 55, + 122, + 199, + 72, + 173, + 245, + 78, + 97, + 141, + 136, + 248, + 154, + 41, + 63, + 247, + 209, + 147, + 146, + 46, + 216, + 48, + 31, + 82, + 123, + 100, + 2, + 82, + 40, + 224, + 251, + 196, + 18, + 12, + 56, + 149, + 190, + 51, + 186, + 56, + 78, + 49, + 134, + 185, + 168, + 147, + 200, + 52, + 130, + 126, + 31, + 166, + 49, + 223, + 29, + 69, + 84, + 95, + 96, + 26, + 17, + 67, + 125, + 5, + 181, + 132, + 167, + 73, + 186, + 135, + 151, + 86, + 69, + 165, + 99, + 251, + 133, + 20, + 64, + 198, + 202, + 107, + 225, + 65, + 158, + 222, + 186, + 185, + 7, + 131, + 73, + 216, + 103, + 35, + 209, + 75, + 28, + 100, + 173, + 124, + 80, + 198, + 23, + 110, + 219, + 219, + 107, + 221, + 253, + 5, + 131, + 66, + 179, + 214, + 233, + 200, + 29, + 145, + 70, + 108, + 91, + 142, + 220, + 103, + 145, + 158, + 225, + 90, + 69, + 58, + 27, + 51, + 68, + 50, + 219, + 170, + 237, + 18, + 173, + 46, + 16, + 223, + 247, + 158, + 251, + 160, + 216, + 240, + 50, + 75, + 200, + 35, + 5, + 32, + 236, + 81, + 54, + 240, + 14, + 239, + 98, + 9, + 237, + 155, + 53, + 149, + 5, + 239, + 147, + 175, + 58, + 184, + 157, + 3, + 83, + 129, + 198, + 41, + 75, + 57, + 164, + 152, + 246, + 28, + 240, + 126, + 117, + 246, + 116, + 181, + 12, + 15, + 205, + 172, + 4, + 136, + 148, + 26, + 109, + 26, + 222, + 131, + 51, + 158, + 13, + 193, + 175, + 83, + 151, + 186, + 243, + 206, + 41, + 190, + 137, + 26, + 215, + 15, + 209, + 128, + 57, + 36, + 95, + 64, + 251, + 225, + 83, + 135, + 252, + 21, + 97, + 16, + 101, + 111, + 116, + 76, + 185, + 37, + 195, + 147, + 122, + 42, + 191, + 57, + 64, + 139, + 79, + 211, + 212, + 22, + 48, + 51, + 117, + 102, + 169, + 135, + 251, + 213, + 210, + 60, + 204, + 250, + 192, + 38, + 170, + 217, + 173, + 44, + 120, + 67, + 51, + 117, + 230, + 61, + 197, + 78, + 12, + 208, + 52, + 69, + 99, + 186, + 185, + 42, + 24, + 218, + 200, + 41, + 125, + 123, + 76, + 8, + 252, + 60, + 28, + 40, + 122, + 206, + 168, + 121, + 76, + 15, + 26, + 210, + 56, + 166, + 12, + 255, + 46, + 150, + 104, + 80, + 55, + 174, + 234, + 48, + 78, + 61, + 82, + 58, + 108, + 54, + 122, + 29, + 179, + 41, + 152, + 96, + 218, + 66, + 92, + 59, + 47, + 47, + 197, + 68, + 181, + 214, + 96, + 188, + 240, + 230, + 194, + 213, + 232, + 57, + 182, + 130, + 156, + 50, + 210, + 111, + 44, + 181, + 77, + 181, + 89, + 72, + 121, + 27, + 14, + 177, + 40, + 1, + 95, + 216, + 168, + 122, + 142, + 236, + 183, + 57, + 56, + 181, + 49, + 43, + 65, + 172, + 51, + 176, + 74, + 44, + 116, + 227, + 157, + 244, + 112, + 89, + 240, + 101, + 47, + 111, + 232, + 121, + 15, + 17, + 184, + 33, + 224, + 100, + 218, + 233, + 224, + 238, + 224, + 211, + 83, + 222, + 113, + 77, + 71, + 43, + 197, + 99, + 37, + 41, + 229, + 125, + 52, + 118, + 155, + 39, + 116, + 179, + 205, + 108, + 20, + 43, + 41, + 14, + 200, + 35, + 157, + 122, + 87, + 101, + 0, + 119, + 204, + 214, + 24, + 8, + 126, + 227, + 35, + 45, + 79, + 29, + 68, + 47, + 241, + 12, + 239, + 175, + 233, + 10, + 176, + 218, + 224, + 49, + 111, + 225, + 5, + 224, + 141, + 228, + 126, + 181, + 240, + 179, + 206, + 229, + 2, + 175, + 227, + 37, + 94, + 63, + 125, + 206, + 106, + 216, + 240, + 6, + 83, + 162, + 70, + 252, + 195, + 208, + 66, + 122, + 148, + 70, + 113, + 214, + 163, + 152, + 221, + 248, + 208, + 67, + 106, + 78, + 232, + 23, + 124, + 116, + 90, + 231, + 171, + 220, + 252, + 17, + 159, + 157, + 181, + 87, + 104, + 72, + 21, + 42, + 87, + 251, + 87, + 30, + 26, + 181, + 223, + 132, + 219, + 141, + 90, + 211, + 196, + 175, + 235, + 53, + 3, + 111, + 22, + 24, + 130, + 18, + 39, + 77, + 139, + 249, + 22, + 59, + 56, + 178, + 196, + 1, + 255, + 219, + 11, + 58, + 136, + 169, + 42, + 21, + 79, + 135, + 54, + 107, + 48, + 6, + 134, + 115, + 248, + 150, + 45, + 151, + 160, + 66, + 144, + 230, + 100, + 7, + 170, + 155, + 93, + 80, + 93, + 233, + 203, + 127, + 134, + 36, + 48, + 48, + 11, + 118, + 54, + 113, + 52, + 66, + 228, + 139, + 150, + 155, + 200, + 148, + 45, + 195, + 190, + 135, + 204, + 145, + 156, + 68, + 130, + 169, + 205, + 74, + 141, + 201, + 41, + 193, + 212, + 142, + 8, + 222, + 103, + 71, + 251, + 195, + 85, + 149, + 22, + 86, + 251, + 38, + 50, + 126, + 236, + 216, + 213, + 200, + 217, + 184, + 249, + 117, + 177, + 187, + 253, + 64, + 88, + 108, + 221, + 236, + 129, + 176, + 147, + 137, + 130, + 97, + 16, + 36, + 249, + 40, + 232, + 226, + 209, + 123, + 41, + 130, + 236, + 236, + 240, + 37, + 113, + 24, + 195, + 27, + 235, + 84, + 82, + 2, + 151, + 149, + 3, + 199, + 221, + 180, + 72, + 155, + 128, + 74, + 210, + 137, + 126, + 13, + 6, + 34, + 225, + 220, + 206, + 224, + 69, + 148, + 177, + 105, + 224, + 42, + 141, + 62, + 70, + 55, + 134, + 21, + 229, + 244, + 231, + 31, + 127, + 138, + 50, + 35, + 184, + 231, + 136, + 227, + 105, + 188, + 159, + 194, + 212, + 145, + 174, + 193, + 230, + 243, + 143, + 197, + 1, + 199, + 106, + 76, + 75, + 97, + 37, + 160, + 168, + 255, + 251, + 79, + 191, + 135, + 230, + 254, + 76, + 76, + 25, + 73, + 112, + 133, + 107, + 210, + 169, + 188, + 112, + 2, + 50, + 166, + 88, + 71, + 217, + 216, + 218, + 54, + 197, + 160, + 215, + 185, + 9, + 21, + 198, + 26, + 141, + 62, + 36, + 130, + 19, + 124, + 204, + 121, + 0, + 152, + 189, + 73, + 44, + 60, + 59, + 251, + 132, + 21, + 88, + 103, + 167, + 47, + 59, + 79, + 16, + 206, + 97, + 197, + 107, + 81, + 187, + 56, + 237, + 121, + 31, + 127, + 54, + 223, + 20, + 27, + 48, + 57, + 87, + 205, + 159, + 66, + 108, + 24, + 214, + 157, + 233, + 162, + 120, + 60, + 208, + 231, + 219, + 136, + 199, + 46, + 125, + 151, + 44, + 12, + 214, + 96, + 167, + 242, + 117, + 41, + 240, + 44, + 70, + 42, + 47, + 49, + 98, + 82, + 114, + 88, + 132, + 141, + 231, + 161, + 50, + 197, + 208, + 44, + 253, + 198, + 114, + 111, + 41, + 119, + 210, + 146, + 253, + 178, + 153, + 81, + 126, + 246, + 222, + 6, + 99, + 77, + 116, + 166, + 28, + 247, + 115, + 198, + 154, + 6, + 191, + 124, + 75, + 37, + 240, + 75, + 190, + 25, + 213, + 89, + 177, + 71, + 70, + 216, + 186, + 24, + 196, + 87, + 35, + 87, + 75, + 215, + 0, + 53, + 202, + 185, + 90, + 5, + 30, + 250, + 112, + 204, + 220, + 95, + 211, + 25, + 138, + 16, + 140, + 0, + 206, + 171, + 149, + 67, + 4, + 140, + 99, + 43, + 202, + 67, + 14, + 43, + 33, + 222, + 165, + 229, + 253, + 64, + 76, + 219, + 92, + 222, + 251, + 153, + 158, + 159, + 59, + 109, + 49, + 131, + 85, + 230, + 202, + 141, + 81, + 218, + 9, + 171, + 236, + 32, + 65, + 254, + 44, + 227, + 151, + 53, + 204, + 23, + 227, + 120, + 108, + 242, + 205, + 10, + 15, + 1, + 148, + 168, + 63, + 222, + 48, + 229, + 138, + 77, + 190, + 86, + 63, + 156, + 69, + 168, + 18, + 8, + 17, + 197, + 155, + 189, + 197, + 123, + 19, + 185, + 29, + 170, + 72, + 59, + 96, + 218, + 234, + 2, + 211, + 94, + 142, + 169, + 182, + 137, + 51, + 254, + 129, + 170, + 94, + 199, + 156, + 246, + 131, + 204, + 14, + 95, + 85, + 142, + 180, + 105, + 178, + 198, + 145, + 128, + 3, + 242, + 162, + 116, + 36, + 80, + 31, + 105, + 255, + 15, + 101, + 83, + 134, + 175, + 188, + 221, + 98, + 61, + 27, + 137, + 108, + 19, + 134, + 45, + 76, + 67, + 224, + 94, + 21, + 140, + 17, + 0, + 150, + 75, + 48, + 244, + 90, + 17, + 172, + 137, + 107, + 174, + 46, + 180, + 164, + 180, + 251, + 166, + 31, + 45, + 188, + 91, + 2, + 36, + 157, + 57, + 24, + 180, + 28, + 24, + 61, + 119, + 249, + 58, + 220, + 43, + 187, + 118, + 149, + 0, + 133, + 22, + 118, + 122, + 205, + 49, + 79, + 88, + 51, + 183, + 91, + 110, + 197, + 118, + 15, + 21, + 125, + 2, + 107, + 181, + 122, + 185, + 207, + 128, + 186, + 82, + 37, + 107, + 73, + 140, + 121, + 98, + 162, + 186, + 93, + 165, + 172, + 136, + 122, + 235, + 116, + 183, + 90, + 33, + 254, + 200, + 29, + 252, + 95, + 211, + 222, + 10, + 13, + 88, + 166, + 141, + 178, + 177, + 208, + 22, + 34, + 143, + 231, + 243, + 179, + 7, + 79, + 150, + 146, + 108, + 86, + 213, + 127, + 23, + 196, + 136, + 29, + 182, + 78, + 1, + 212, + 140, + 112, + 150, + 239, + 4, + 106, + 150, + 248, + 90, + 223, + 223, + 178, + 70, + 92, + 128, + 70, + 238, + 249, + 115, + 106, + 241, + 238, + 192, + 146, + 187, + 251, + 95, + 41, + 50, + 46, + 153, + 167, + 31, + 154, + 164, + 227, + 2, + 36, + 109, + 44, + 219, + 148, + 4, + 112, + 230, + 217, + 175, + 251, + 73, + 173, + 173, + 112, + 169, + 42, + 193, + 32, + 242, + 206, + 12, + 41, + 131, + 49, + 37, + 221, + 176, + 249, + 215, + 205, + 64, + 130, + 94, + 191, + 46, + 143, + 180, + 95, + 233, + 244, + 194, + 242, + 1, + 67, + 44, + 247, + 194, + 42, + 137, + 92, + 243, + 37, + 118, + 122, + 186, + 44, + 66, + 211, + 26, + 201, + 151, + 26, + 115, + 101, + 13, + 187, + 220, + 45, + 177, + 247, + 153, + 240, + 143, + 22, + 204, + 232, + 236, + 26, + 193, + 36, + 129, + 233, + 69, + 214, + 243, + 54, + 233, + 174, + 170, + 19, + 206, + 144, + 179, + 112, + 51, + 99, + 212, + 198, + 70, + 209, + 24, + 100, + 113, + 106, + 144, + 246, + 16, + 203, + 32, + 58, + 159, + 202, + 84, + 47, + 165, + 50, + 60, + 220, + 157, + 98, + 3, + 63, + 108, + 163, + 151, + 130, + 91, + 174, + 91, + 233, + 243, + 129, + 58, + 46, + 103, + 223, + 126, + 112, + 56, + 184, + 154, + 192, + 115, + 88, + 180, + 107, + 91, + 6, + 81, + 18, + 49, + 224, + 28, + 177, + 104, + 27, + 192, + 17, + 97, + 19, + 114, + 196, + 179, + 114, + 213, + 185, + 98, + 104, + 113, + 173, + 191, + 220, + 110, + 184, + 158, + 8, + 97, + 186, + 44, + 189, + 66, + 73, + 60, + 231, + 106, + 172, + 138, + 28, + 1, + 7, + 230, + 227, + 211, + 90, + 33, + 211, + 58, + 135, + 89, + 2, + 99, + 17, + 55, + 250, + 12, + 47, + 7, + 31, + 66, + 105, + 157, + 122, + 14, + 52, + 119, + 61, + 68, + 226, + 1, + 60, + 28, + 185, + 83, + 66, + 136, + 32, + 178, + 242, + 108, + 240, + 99, + 179, + 250, + 109, + 82, + 145, + 7, + 117, + 95, + 27, + 179, + 126, + 104, + 80, + 112, + 247, + 243, + 44, + 155, + 26, + 80, + 42, + 95, + 186, + 18, + 66, + 107, + 54, + 228, + 90, + 161, + 157, + 230, + 148, + 145, + 119, + 110, + 32, + 190, + 68, + 83, + 103, + 153, + 82, + 215, + 188, + 239, + 178, + 84, + 179, + 100, + 94, + 4, + 172, + 177, + 70, + 38, + 78, + 52, + 31, + 125, + 164, + 160, + 112, + 97, + 137, + 90, + 225, + 71, + 152, + 119, + 190, + 99, + 79, + 91, + 209, + 23, + 106, + 59, + 212, + 237, + 168, + 170, + 195, + 220, + 16, + 118, + 152, + 218, + 170, + 252, + 23, + 130, + 69, + 156, + 70, + 179, + 94, + 220, + 143, + 191, + 159, + 77, + 79, + 128, + 26, + 74, + 67, + 26, + 47, + 55, + 252, + 180, + 103, + 78, + 37, + 41, + 131, + 207, + 203, + 53, + 119, + 102, + 187, + 53, + 9, + 108, + 113, + 39, + 124, + 50, + 13, + 198, + 208, + 220, + 100, + 240, + 137, + 166, + 227, + 123, + 71, + 215, + 43, + 78, + 152, + 50, + 58, + 153, + 28, + 196, + 176, + 48, + 231, + 134, + 92, + 17, + 135, + 109, + 24, + 173, + 109, + 115, + 222, + 23, + 248, + 210, + 198, + 112, + 10, + 85, + 9, + 156, + 48, + 205, + 203, + 234, + 245, + 167, + 81, + 27, + 128, + 51, + 45, + 203, + 78, + 9, + 55, + 24, + 40, + 225, + 76, + 235, + 3, + 185, + 160, + 94, + 187, + 64, + 10, + 44, + 121, + 56, + 135, + 94, + 103, + 147, + 225, + 203, + 15, + 106, + 187, + 9, + 115, + 128, + 77, + 73, + 85, + 111, + 252, + 115, + 121, + 254, + 148, + 199, + 204, + 253, + 252, + 116, + 201, + 71, + 183, + 87, + 163, + 176, + 42, + 136, + 4, + 187, + 54, + 164, + 129, + 86, + 140, + 224, + 211, + 193, + 229, + 197, + 243, + 246, + 158, + 140, + 243, + 62, + 174, + 242, + 214, + 90, + 235, + 126, + 61, + 224, + 186, + 47, + 158, + 206, + 216, + 27, + 3, + 193, + 231, + 72, + 151, + 240, + 169, + 223, + 148, + 194, + 180, + 162, + 165, + 59, + 27, + 204, + 84, + 0, + 205, + 54, + 174, + 34, + 32, + 99, + 61, + 241, + 229, + 205, + 16, + 7, + 119, + 80, + 15, + 97, + 231, + 14, + 226, + 64, + 93, + 92, + 21, + 105, + 203, + 163, + 46, + 197, + 71, + 181, + 214, + 170, + 44, + 226, + 241, + 148, + 33, + 162, + 107, + 165, + 42, + 141, + 15, + 48, + 68, + 104, + 249, + 113, + 30, + 235, + 7, + 153, + 50, + 205, + 249, + 84, + 33, + 59, + 178, + 53, + 26, + 125, + 60, + 8, + 29, + 76, + 104, + 164, + 93, + 236, + 1, + 10, + 216, + 29, + 172, + 246, + 158, + 238, + 232, + 148, + 8, + 98, + 48, + 137, + 10, + 199, + 170, + 110, + 135, + 247, + 119, + 116, + 71, + 167, + 168, + 195, + 136, + 204, + 3, + 78, + 187, + 237, + 151, + 73, + 153, + 106, + 225, + 209, + 185, + 181, + 243, + 156, + 110, + 169, + 184, + 187, + 180, + 70, + 227, + 94, + 193, + 82, + 184, + 59, + 140, + 78, + 181, + 54, + 211, + 4, + 145, + 220, + 36, + 188, + 150, + 246, + 148, + 136, + 73, + 249, + 39, + 182, + 241, + 143, + 222, + 65, + 34, + 15, + 3, + 91, + 170, + 157, + 225, + 100, + 43, + 254, + 173, + 148, + 25, + 89, + 149, + 194, + 207, + 48, + 139, + 109, + 6, + 9, + 2, + 42, + 90, + 175, + 89, + 16, + 17, + 231, + 156, + 148, + 223, + 103, + 226, + 90, + 36, + 134, + 41, + 142, + 198, + 177, + 163, + 132, + 159, + 156, + 231, + 229, + 95, + 117, + 15, + 158, + 160, + 15, + 201, + 113, + 92, + 221, + 132, + 51, + 89, + 152, + 83, + 196, + 153, + 54, + 174, + 4, + 113, + 139, + 52, + 83, + 107, + 241, + 34, + 42, + 247, + 252, + 221, + 252, + 186, + 234, + 139, + 14, + 153, + 20, + 34, + 160, + 113, + 80, + 53, + 10, + 234, + 29, + 116, + 97, + 106, + 226, + 204, + 127, + 221, + 117, + 22, + 171, + 62, + 232, + 29, + 214, + 170, + 71, + 192, + 96, + 110, + 2, + 112, + 202, + 177, + 112, + 80, + 178, + 247, + 18, + 69, + 223, + 34, + 90, + 53, + 6, + 118, + 40, + 215, + 25, + 160, + 75, + 27, + 79, + 202, + 200, + 197, + 178, + 49, + 220, + 15, + 229, + 58, + 13, + 164, + 3, + 70, + 8, + 59, + 200, + 190, + 245, + 106, + 108, + 97, + 177, + 158, + 78, + 156, + 94, + 132, + 61, + 154, + 26, + 200, + 236, + 204, + 224, + 48, + 93, + 209, + 130, + 108, + 249, + 69, + 247, + 250, + 79, + 153, + 75, + 224, + 245, + 141, + 170, + 137, + 132, + 255, + 240, + 206, + 252, + 110, + 219, + 180, + 226, + 80, + 10, + 52, + 0, + 191, + 114, + 169, + 106, + 254, + 195, + 158, + 22, + 57, + 88, + 225, + 250, + 15, + 45, + 208, + 253, + 213, + 238, + 27, + 28, + 159, + 61, + 186, + 200, + 5, + 95, + 35, + 34, + 204, + 182, + 56, + 29, + 225, + 239, + 102, + 67, + 213, + 182, + 16, + 22, + 254, + 255, + 1, + 97, + 73, + 24, + 102, + 135, + 80, + 232, + 59, + 72, + 201, + 217, + 130, + 27, + 4, + 184, + 100, + 165, + 231, + 245, + 139, + 216, + 27, + 83, + 193, + 57, + 160, + 214, + 182, + 139, + 154, + 19, + 124, + 13, + 78, + 109, + 96, + 75, + 117, + 76, + 249, + 126, + 213, + 51, + 255, + 51, + 215, + 96, + 12, + 215, + 138, + 200, + 165, + 106, + 148, + 3, + 17, + 144, + 204, + 130, + 73, + 255, + 162, + 125, + 131, + 132, + 192, + 40, + 191, + 233, + 167, + 156, + 20, + 139, + 157, + 125, + 164, + 179, + 252, + 122, + 243, + 175, + 17, + 135, + 75, + 173, + 72, + 146, + 207, + 181, + 251, + 187, + 29, + 97, + 96, + 107, + 66, + 189, + 43, + 12, + 207, + 19, + 234, + 15, + 158, + 111, + 51, + 252, + 183, + 22, + 80, + 171, + 134, + 154, + 81, + 128, + 214, + 76, + 117, + 7, + 79, + 220, + 134, + 119, + 56, + 44, + 229, + 230, + 124, + 104, + 169, + 173, + 3, + 100, + 24, + 55, + 6, + 69, + 134, + 35, + 180, + 120, + 154, + 130, + 221, + 237, + 165, + 51, + 34, + 118, + 28, + 27, + 205, + 43, + 120, + 12, + 112, + 73, + 167, + 148, + 87, + 24, + 202, + 223, + 209, + 219, + 150, + 215, + 4, + 35, + 105, + 60, + 69, + 5, + 25, + 108, + 90, + 78, + 174, + 58, + 202, + 192, + 22, + 66, + 112, + 201, + 71, + 234, + 135, + 191, + 145, + 20, + 38, + 206, + 20, + 81, + 191, + 175, + 158, + 62, + 104, + 131, + 189, + 239, + 225, + 81, + 50, + 159, + 240, + 216, + 109, + 217, + 102, + 163, + 56, + 36, + 160, + 165, + 41, + 177, + 115, + 236, + 64, + 130, + 165, + 227, + 194, + 147, + 166, + 114, + 247, + 199, + 45, + 135, + 185, + 180, + 145, + 9, + 170, + 72, + 176, + 70, + 113, + 232, + 94, + 202, + 99, + 108, + 96, + 144, + 41, + 15, + 144, + 53, + 59, + 77, + 156, + 5, + 65, + 29, + 83, + 23, + 120, + 145, + 106, + 200, + 88, + 82, + 28, + 170, + 46, + 90, + 94, + 129, + 248, + 134, + 132, + 39, + 134, + 233, + 141, + 12, + 158, + 137, + 64, + 30, + 230, + 72, + 27, + 88, + 126, + 181, + 91, + 63, + 209, + 194, + 109, + 247, + 163, + 30, + 187, + 79, + 138, + 195, + 158, + 210, + 63, + 40, + 50, + 67, + 210, + 111, + 124, + 145, + 63, + 183, + 5, + 194, + 142, + 214, + 153, + 123, + 166, + 177, + 190, + 61, + 245, + 210, + 217, + 182, + 79, + 42, + 125, + 103, + 142, + 140, + 235, + 108, + 56, + 200, + 208, + 198, + 176, + 105, + 115, + 2, + 149, + 193, + 105, + 80, + 74, + 175, + 204, + 41, + 82, + 248, + 108, + 53, + 142, + 205, + 178, + 64, + 180, + 102, + 33, + 90, + 4, + 140, + 219, + 186, + 157, + 129, + 77, + 14, + 53, + 181, + 229, + 205, + 190, + 83, + 229, + 89, + 83, + 165, + 19, + 230, + 180, + 219, + 224, + 119, + 203, + 163, + 70, + 197, + 96, + 88, + 28, + 103, + 59, + 176, + 148, + 116, + 133, + 209, + 111, + 143, + 197, + 233, + 215, + 238, + 72, + 249, + 243, + 71, + 174, + 131, + 70, + 234, + 48, + 82, + 197, + 146, + 239, + 127, + 240, + 181, + 60, + 120, + 219, + 198, + 60, + 251, + 224, + 119, + 173, + 123, + 122, + 36, + 77, + 94, + 82, + 150, + 148, + 24, + 68, + 137, + 108, + 226, + 81, + 99, + 65, + 168, + 192, + 110, + 218, + 201, + 118, + 193, + 9, + 162, + 174, + 57, + 129, + 203, + 74, + 156, + 166, + 108, + 204, + 169, + 247, + 138, + 101, + 129, + 160, + 173, + 78, + 175, + 21, + 21, + 16, + 247, + 220, + 122, + 246, + 235, + 90, + 223, + 214, + 62, + 9, + 144, + 137, + 53, + 70, + 79, + 188, + 43, + 167, + 170, + 81, + 238, + 50, + 172, + 254, + 76, + 211, + 229, + 3, + 124, + 74, + 35, + 219, + 156, + 38, + 194, + 52, + 203, + 233, + 9, + 239, + 115, + 102, + 18, + 180, + 164, + 92, + 132, + 178, + 125, + 127, + 14, + 9, + 77, + 11, + 214, + 176, + 78, + 127, + 49, + 86, + 64, + 241, + 84, + 142, + 82, + 94, + 110, + 77, + 104, + 42, + 247, + 165, + 95, + 78, + 33, + 173, + 197, + 210, + 72, + 86, + 142, + 144, + 179, + 181, + 44, + 117, + 147, + 125, + 199, + 209, + 182, + 48, + 56, + 188, + 196, + 30, + 109, + 104, + 112, + 121, + 17, + 12, + 195, + 70, + 152, + 130, + 151, + 129, + 51, + 251, + 211, + 168, + 68, + 185, + 163, + 22, + 28, + 104, + 200, + 126, + 57, + 246, + 35, + 70, + 235, + 132, + 220, + 34, + 70, + 211, + 61, + 143, + 199, + 254, + 181, + 234, + 119, + 74, + 55, + 150, + 42, + 7, + 174, + 90, + 39, + 135, + 84, + 173, + 17, + 105, + 130, + 51, + 237, + 91, + 78, + 193, + 41, + 6, + 137, + 80, + 140, + 30, + 180, + 230, + 80, + 0, + 183, + 70, + 248, + 123, + 118, + 162, + 53, + 136, + 48, + 41, + 79, + 1, + 44, + 93, + 84, + 203, + 135, + 187, + 114, + 0, + 163, + 238, + 245, + 123, + 197, + 188, + 170, + 177, + 84, + 169, + 209, + 39, + 79, + 117, + 128, + 170, + 164, + 137, + 100, + 167, + 172, + 149, + 138, + 106, + 182, + 141, + 77, + 41, + 144, + 118, + 230, + 231, + 169, + 79, + 96, + 42, + 242, + 243, + 170, + 223, + 126, + 193, + 201, + 33, + 131, + 119, + 182, + 177, + 169, + 5, + 107, + 205, + 70, + 51, + 122, + 163, + 120, + 112, + 121, + 2, + 108, + 1, + 171, + 109, + 83, + 175, + 62, + 159, + 250, + 189, + 240, + 180, + 212, + 157, + 229, + 3, + 126, + 47, + 230, + 41, + 180, + 178, + 175, + 147, + 62, + 117, + 38, + 142, + 234, + 116, + 53, + 114, + 103, + 223, + 134, + 127, + 29, + 228, + 20, + 63, + 25, + 208, + 126, + 119, + 142, + 130, + 4, + 127, + 76, + 110, + 213, + 73, + 75, + 144, + 152, + 10, + 24, + 219, + 13, + 195, + 189, + 30, + 36, + 214, + 27, + 183, + 51, + 22, + 216, + 156, + 54, + 54, + 243, + 194, + 194, + 226, + 221, + 117, + 217, + 150, + 197, + 49, + 105, + 151, + 83, + 205, + 171, + 172, + 92, + 23, + 160, + 207, + 217, + 8, + 71, + 115, + 116, + 179, + 225, + 31, + 183, + 213, + 122, + 54, + 218, + 77, + 60, + 177, + 236, + 217, + 93, + 61, + 8, + 131, + 103, + 142, + 174, + 31, + 18, + 175, + 20, + 28, + 49, + 85, + 157, + 60, + 203, + 149, + 22, + 152, + 232, + 136, + 227, + 163, + 129, + 211, + 51, + 70, + 204, + 216, + 24, + 195, + 49, + 99, + 194, + 204, + 51, + 157, + 75, + 237, + 103, + 196, + 53, + 122, + 37, + 29, + 6, + 218, + 179, + 130, + 139, + 73, + 227, + 16, + 158, + 120, + 198, + 195, + 147, + 148, + 169, + 37, + 95, + 222, + 246, + 72, + 128, + 88, + 172, + 223, + 79, + 24, + 102, + 2, + 38, + 115, + 166, + 145, + 164, + 231, + 72, + 83, + 88, + 109, + 230, + 72, + 211, + 149, + 186, + 229, + 123, + 186, + 10, + 45, + 138, + 40, + 227, + 70, + 132, + 229, + 230, + 206, + 179, + 10, + 132, + 101, + 255, + 64, + 219, + 63, + 238, + 207, + 136, + 150, + 44, + 6, + 136, + 163, + 209, + 237, + 150, + 229, + 118, + 112, + 164, + 202, + 137, + 107, + 186, + 212, + 107, + 158, + 168, + 103, + 16, + 139, + 199, + 216, + 209, + 82, + 207, + 152, + 211, + 160, + 134, + 24, + 59, + 250, + 166, + 109, + 192, + 25, + 82, + 128, + 49, + 144, + 231, + 198, + 19, + 57, + 130, + 179, + 88, + 53, + 119, + 186, + 216, + 71, + 10, + 74, + 179, + 139, + 51, + 4, + 65, + 56, + 114, + 131, + 83, + 52, + 231, + 92, + 195, + 54, + 57, + 14, + 201, + 178, + 172, + 218, + 253, + 70, + 141, + 100, + 151, + 60, + 185, + 232, + 240, + 55, + 170, + 194, + 10, + 124, + 234, + 137, + 198, + 249, + 130, + 247, + 72, + 9, + 96, + 85, + 221, + 97, + 115, + 138, + 178, + 248, + 2, + 83, + 109, + 156, + 94, + 72, + 76, + 222, + 195, + 154, + 165, + 69, + 94, + 122, + 193, + 48, + 59, + 113, + 3, + 221, + 109, + 115, + 34, + 233, + 193, + 181, + 145, + 2, + 29, + 209, + 243, + 67, + 71, + 158, + 30, + 249, + 17, + 39, + 142, + 7, + 208, + 175, + 204, + 137, + 122, + 226, + 23, + 182, + 123, + 49, + 54, + 131, + 182, + 212, + 136, + 253, + 107, + 72, + 247, + 189, + 136, + 238, + 219, + 6, + 129, + 155, + 157, + 155, + 167, + 194, + 154, + 163, + 49, + 32, + 85, + 231, + 2, + 180, + 153, + 198, + 31, + 159, + 177, + 76, + 245, + 150, + 25, + 177, + 26, + 217, + 131, + 134, + 4, + 95, + 238, + 222, + 6, + 112, + 123, + 255, + 114, + 70, + 246, + 217, + 199, + 38, + 142, + 183, + 4, + 46, + 105, + 172, + 114, + 44, + 210, + 43, + 136, + 210, + 228, + 131, + 75, + 3, + 199, + 7, + 151, + 182, + 247, + 125, + 223, + 223, + 191, + 57, + 15, + 180, + 217, + 251, + 29, + 255, + 238, + 165, + 61, + 84, + 22, + 69, + 192, + 196, + 146, + 198, + 44, + 85, + 115, + 6, + 26, + 105, + 232, + 77, + 117, + 15, + 238, + 135, + 45, + 15, + 180, + 179, + 146, + 191, + 118, + 116, + 144, + 219, + 138, + 247, + 136, + 26, + 15, + 242, + 132, + 211, + 245, + 142, + 25, + 236, + 231, + 31, + 156, + 241, + 36, + 3, + 134, + 233, + 146, + 109, + 42, + 85, + 248, + 127, + 40, + 201, + 30, + 22, + 102, + 77, + 88, + 88, + 213, + 29, + 215, + 140, + 154, + 18, + 113, + 232, + 117, + 227, + 149, + 91, + 134, + 136, + 165, + 22, + 243, + 167, + 167, + 126, + 100, + 136, + 164, + 170, + 252, + 179, + 210, + 85, + 13, + 112, + 77, + 93, + 157, + 190, + 250, + 64, + 142, + 154, + 154, + 28, + 181, + 55, + 252, + 55, + 218, + 24, + 134, + 137, + 255, + 199, + 22, + 254, + 28, + 48, + 212, + 103, + 58, + 54, + 59, + 244, + 137, + 70, + 136, + 214, + 60, + 109, + 211, + 74, + 235, + 170, + 242, + 114, + 79, + 243, + 197, + 24, + 156, + 166, + 118, + 154, + 5, + 211, + 0, + 95, + 168, + 233, + 238, + 93, + 190, + 87, + 175, + 226, + 242, + 69, + 240, + 24, + 89, + 180, + 139, + 141, + 132, + 46, + 2, + 230, + 165, + 233, + 25, + 95, + 146, + 23, + 187, + 77, + 159, + 71, + 16, + 119, + 198, + 236, + 164, + 128, + 141, + 40, + 185, + 103, + 171, + 46, + 116, + 255, + 224, + 218, + 38, + 179, + 134, + 146, + 84, + 67, + 129, + 222, + 38, + 40, + 12, + 37, + 105, + 96, + 80, + 27, + 203, + 185, + 222, + 174, + 206, + 152, + 79, + 188, + 98, + 140, + 141, + 157, + 232, + 155, + 0, + 207, + 149, + 202, + 36, + 159, + 121, + 164, + 61, + 185, + 220, + 11, + 193, + 24, + 207, + 24, + 66, + 111, + 183, + 255, + 51, + 85, + 229, + 116, + 152, + 133, + 174, + 225, + 148, + 40, + 69, + 225, + 96, + 152, + 243, + 7, + 91, + 83, + 153, + 34, + 89, + 158, + 141, + 211, + 44, + 224, + 83, + 17, + 31, + 71, + 100, + 26, + 118, + 122, + 110, + 109, + 168, + 254, + 202, + 63, + 113, + 24, + 31, + 98, + 97, + 40, + 71, + 105, + 74, + 253, + 225, + 253, + 49, + 135, + 101, + 130, + 239, + 3, + 210, + 54, + 38, + 199, + 243, + 127, + 206, + 28, + 122, + 18, + 111, + 244, + 246, + 131, + 83, + 2, + 21, + 198, + 55, + 53, + 90, + 70, + 70, + 116, + 188, + 240, + 76, + 233, + 251, + 125, + 12, + 161, + 39, + 9, + 131, + 27, + 160, + 227, + 56, + 53, + 155, + 154, + 35, + 37, + 137, + 157, + 242, + 170, + 8, + 86, + 220, + 182, + 62, + 132, + 197, + 16, + 112, + 74, + 99, + 16, + 144, + 154, + 2, + 153, + 165, + 163, + 54, + 30, + 229, + 20, + 66, + 183, + 245, + 186, + 5, + 90, + 243, + 224, + 238, + 60, + 62, + 74, + 192, + 137, + 124, + 46, + 67, + 235, + 52, + 119, + 70, + 1, + 115, + 207, + 133, + 158, + 151, + 120, + 176, + 247, + 200, + 195, + 153, + 186, + 47, + 166, + 188, + 210, + 169, + 198, + 49, + 9, + 55, + 249, + 220, + 162, + 172, + 132, + 160, + 106, + 14, + 149, + 190, + 36, + 205, + 45, + 116, + 127, + 132, + 157, + 51, + 129, + 208, + 253, + 145, + 15, + 58, + 245, + 228, + 123, + 184, + 216, + 51, + 61, + 224, + 50, + 24, + 188, + 158, + 56, + 230, + 37, + 224, + 137, + 133, + 72, + 102, + 186, + 111, + 97, + 39, + 163, + 75, + 134, + 182, + 95, + 227, + 238, + 247, + 234, + 87, + 178, + 74, + 119, + 130, + 95, + 186, + 224, + 174, + 17, + 7, + 62, + 207, + 70, + 193, + 211, + 112, + 136, + 16, + 186, + 180, + 157, + 120, + 7, + 247, + 43, + 10, + 233, + 179, + 146, + 97, + 133, + 53, + 136, + 97, + 99, + 147, + 180, + 20, + 12, + 61, + 15, + 128, + 218, + 117, + 130, + 58, + 108, + 236, + 131, + 252, + 106, + 51, + 119, + 95, + 61, + 69, + 50, + 38, + 144, + 32, + 167, + 198, + 38, + 103, + 96, + 26, + 113, + 236, + 168, + 204, + 141, + 117, + 199, + 45, + 208, + 203, + 195, + 137, + 179, + 209, + 241, + 102, + 27, + 2, + 89, + 16, + 144, + 79, + 163, + 171, + 64, + 48, + 141, + 150, + 15, + 75, + 219, + 149, + 26, + 102, + 40, + 55, + 140, + 102, + 55, + 53, + 154, + 20, + 129, + 52, + 41, + 200, + 117, + 42, + 77, + 179, + 112, + 109, + 201, + 221, + 212, + 126, + 52, + 250, + 201, + 100, + 33, + 161, + 110, + 84, + 94, + 133, + 116, + 205, + 60, + 151, + 8, + 91, + 101, + 169, + 209, + 43, + 47, + 100, + 37, + 32, + 197, + 198, + 224, + 99, + 86, + 3, + 38, + 206, + 7, + 87, + 213, + 171, + 120, + 105, + 45, + 95, + 225, + 29, + 148, + 182, + 49, + 189, + 201, + 222, + 95, + 228, + 103, + 46, + 214, + 44, + 63, + 91, + 233, + 62, + 123, + 106, + 170, + 241, + 182, + 127, + 60, + 235, + 174, + 89, + 129, + 77, + 59, + 137, + 59, + 33, + 103, + 227, + 145, + 146, + 119, + 75, + 44, + 180, + 98, + 238, + 84, + 10, + 179, + 202, + 84, + 220, + 143, + 163, + 220, + 37, + 247, + 238, + 63, + 205, + 40, + 67, + 88, + 184, + 158, + 123, + 14, + 190, + 24, + 138, + 58, + 156, + 137, + 174, + 91, + 121, + 222, + 120, + 22, + 40, + 114, + 152, + 240, + 230, + 153, + 29, + 251, + 122, + 204, + 210, + 26, + 237, + 140, + 156, + 34, + 20, + 153, + 65, + 157, + 182, + 81, + 98, + 145, + 25, + 148, + 74, + 27, + 175, + 120, + 14, + 95, + 91, + 14, + 103, + 27, + 64, + 136, + 56, + 100, + 74, + 35, + 19, + 84, + 199, + 4, + 181, + 156, + 91, + 90, + 239, + 118, + 87, + 226, + 133, + 63, + 28, + 220, + 23, + 190, + 223, + 107, + 228, + 211, + 227, + 115, + 78, + 15, + 202, + 204, + 79, + 196, + 31, + 134, + 37, + 158, + 65, + 206, + 166, + 12, + 182, + 172, + 177, + 195, + 48, + 29, + 48, + 134, + 167, + 75, + 97, + 31, + 111, + 250, + 209, + 89, + 98, + 115, + 0, + 49, + 142, + 239, + 169, + 135, + 123, + 149, + 33, + 237, + 157, + 39, + 206, + 142, + 226, + 203, + 34, + 193, + 96, + 162, + 238, + 33, + 53, + 222, + 229, + 99, + 93, + 155, + 146, + 150, + 109, + 194, + 182, + 78, + 230, + 16, + 170, + 13, + 185, + 144, + 54, + 58, + 232, + 104, + 200, + 133, + 6, + 166, + 252, + 231, + 114, + 230, + 254, + 138, + 228, + 157, + 99, + 118, + 137, + 12, + 193, + 70, + 168, + 255, + 61, + 140, + 231, + 32, + 24, + 173, + 89, + 86, + 195, + 14, + 184, + 156, + 82, + 134, + 253, + 169, + 225, + 51, + 1, + 141, + 69, + 41, + 149, + 170, + 219, + 36, + 141, + 140, + 192, + 120, + 33, + 55, + 170, + 187, + 204, + 96, + 32, + 174, + 116, + 9, + 252, + 208, + 44, + 169, + 67, + 60, + 110, + 25, + 152, + 228, + 17, + 56, + 167, + 202, + 169, + 5, + 3, + 45, + 109, + 215, + 165, + 126, + 192, + 229, + 245, + 150, + 230, + 254, + 219, + 174, + 255, + 255, + 248, + 19, + 232, + 20, + 177, + 165, + 31, + 44, + 57, + 111, + 184, + 4, + 143, + 198, + 197, + 21, + 184, + 4, + 173, + 60, + 99, + 247, + 225, + 206, + 205, + 241, + 28, + 126, + 248, + 208, + 125, + 203, + 27, + 52, + 116, + 82, + 34, + 250, + 232, + 125, + 155, + 35, + 200, + 108, + 157, + 254, + 64, + 193, + 209, + 91, + 152, + 206, + 116, + 175, + 224, + 57, + 215, + 124, + 95, + 143, + 182, + 80, + 137, + 240, + 25, + 52, + 109, + 108, + 202, + 57, + 4, + 121, + 158, + 186, + 111, + 92, + 169, + 200, + 179, + 71, + 187, + 141, + 52, + 32, + 240, + 192, + 206, + 56, + 50, + 83, + 16, + 225, + 188, + 181, + 44, + 121, + 246, + 103, + 140, + 148, + 49, + 192, + 204, + 26, + 115, + 192, + 37, + 194, + 0, + 56, + 71, + 218, + 174, + 201, + 238, + 62, + 238, + 114, + 33, + 203, + 0, + 173, + 49, + 53, + 73, + 194, + 242, + 95, + 136, + 198, + 105, + 97, + 242, + 29, + 95, + 170, + 0, + 34, + 124, + 9, + 55, + 214, + 169, + 178, + 96, + 142, + 136, + 193, + 249, + 254, + 85, + 73, + 228, + 145, + 51, + 119, + 242, + 33, + 2, + 252, + 224, + 229, + 173, + 94, + 65, + 7, + 82, + 168, + 225, + 157, + 215, + 20, + 9, + 47, + 42, + 41, + 124, + 85, + 9, + 105, + 106, + 128, + 225, + 10, + 230, + 254, + 112, + 19, + 46, + 12, + 228, + 30, + 162, + 174, + 43, + 130, + 70, + 241, + 207, + 15, + 173, + 108, + 212, + 65, + 230, + 74, + 211, + 217, + 250, + 84, + 45, + 87, + 156, + 210, + 47, + 114, + 131, + 215, + 174, + 117, + 71, + 117, + 223, + 75, + 64, + 225, + 240, + 70, + 70, + 0, + 22, + 91, + 8, + 79, + 123, + 220, + 147, + 237, + 166, + 10, + 141, + 186, + 245, + 237, + 253, + 252, + 254, + 162, + 150, + 179, + 155, + 176, + 190, + 52, + 71, + 226, + 155, + 26, + 33, + 139, + 3, + 212, + 133, + 117, + 11, + 61, + 153, + 223, + 89, + 35, + 212, + 236, + 160, + 113, + 243, + 5, + 33, + 109, + 68, + 201, + 110, + 182, + 32, + 162, + 105, + 221, + 241, + 163, + 253, + 51, + 134, + 0, + 210, + 196, + 198, + 209, + 200, + 8, + 228, + 0, + 49, + 61, + 162, + 207, + 56, + 25, + 193, + 11, + 27, + 140, + 41, + 239, + 247, + 208, + 222, + 217, + 128, + 69, + 86, + 106, + 167, + 89, + 231, + 69, + 149, + 195, + 237, + 214, + 72, + 132, + 80, + 237, + 178, + 117, + 242, + 22, + 66, + 181, + 187, + 92, + 83, + 254, + 201, + 143, + 190, + 90, + 226, + 47, + 50, + 135, + 84, + 247, + 124, + 202, + 183, + 9, + 107, + 16, + 92, + 105, + 73, + 220, + 31, + 168, + 213, + 38, + 124, + 50, + 131, + 233, + 139, + 26, + 199, + 246, + 100, + 193, + 225, + 160, + 104, + 220, + 183, + 184, + 108, + 71, + 97, + 53, + 20, + 38, + 17, + 200, + 141, + 65, + 16, + 52, + 131, + 236, + 171, + 169, + 2, + 166, + 170, + 22, + 202, + 221, + 177, + 59, + 133, + 129, + 22, + 40, + 73, + 171, + 179, + 179, + 128, + 78, + 203, + 125, + 135, + 158, + 76, + 1, + 182, + 181, + 69, + 11, + 124, + 166, + 246, + 100, + 167, + 240, + 149, + 192, + 180, + 152, + 80, + 61, + 49, + 6, + 40, + 95, + 172, + 251, + 10, + 188, + 34, + 173, + 63, + 144, + 211, + 215, + 157, + 149, + 192, + 131, + 4, + 241, + 190, + 211, + 121, + 246, + 193, + 9, + 126, + 53, + 90, + 213, + 74, + 8, + 83, + 49, + 53, + 175, + 39, + 44, + 106, + 107, + 246, + 221, + 148, + 246, + 102, + 241, + 215, + 168, + 30, + 192, + 46, + 208, + 160, + 51, + 114, + 160, + 26, + 119, + 12, + 49, + 142, + 28, + 168, + 20, + 76, + 250, + 166, + 16, + 138, + 243, + 6, + 239, + 173, + 58, + 171, + 133, + 216, + 122, + 210, + 201, + 92, + 209, + 194, + 141, + 78, + 160, + 70, + 32, + 82, + 60, + 118, + 92, + 24, + 202, + 48, + 184, + 195, + 177, + 225, + 205, + 1, + 204, + 26, + 115, + 200, + 149, + 28, + 22, + 122, + 250, + 141, + 229, + 43, + 241, + 104, + 71, + 22, + 73, + 87, + 31, + 230, + 220, + 188, + 161, + 55, + 157, + 81, + 18, + 116, + 24, + 144, + 142, + 70, + 126, + 186, + 142, + 144, + 154, + 230, + 182, + 108, + 23, + 110, + 208, + 123, + 139, + 255, + 123, + 6, + 125, + 17, + 69, + 163, + 209, + 25, + 238, + 78, + 225, + 123, + 128, + 121, + 184, + 251, + 166, + 15, + 203, + 33, + 150, + 32, + 6, + 58, + 172, + 145, + 42, + 110, + 178, + 192, + 194, + 77, + 252, + 233, + 4, + 237, + 94, + 241, + 83, + 238, + 251, + 101, + 190, + 35, + 21, + 4, + 149, + 109, + 176, + 236, + 115, + 235, + 253, + 92, + 129, + 207, + 175, + 212, + 31, + 187, + 13, + 228, + 170, + 211, + 123, + 154, + 59, + 107, + 94, + 32, + 180, + 134, + 141, + 93, + 144, + 37, + 68, + 72, + 99, + 32, + 111, + 129, + 44, + 171, + 75, + 76, + 244, + 68, + 90, + 190, + 109, + 81, + 0, + 130, + 204, + 20, + 119, + 161, + 77, + 238, + 95, + 167, + 97, + 93, + 114, + 77, + 251, + 56, + 68, + 164, + 10, + 81, + 166, + 54, + 22, + 46, + 58, + 1, + 67, + 75, + 241, + 123, + 4, + 36, + 110, + 89, + 88, + 51, + 47, + 82, + 15, + 225, + 151, + 72, + 17, + 184, + 157, + 66, + 125, + 143, + 176, + 4, + 167, + 183, + 209, + 18, + 134, + 97, + 132, + 141, + 186, + 126, + 194, + 17, + 225, + 45, + 57, + 122, + 95, + 131, + 193, + 37, + 115, + 164, + 180, + 152, + 42, + 154, + 226, + 179, + 202, + 133, + 130, + 250, + 24, + 227, + 210, + 198, + 40, + 123, + 67, + 112, + 246, + 252, + 196, + 172, + 251, + 157, + 207, + 21, + 80, + 177, + 207, + 154, + 59, + 204, + 124, + 95, + 20, + 133, + 118, + 167, + 114, + 237, + 29, + 242, + 205, + 9, + 75, + 176, + 100, + 118, + 148, + 50, + 204, + 83, + 225, + 230, + 54, + 50, + 48, + 65, + 103, + 39, + 203, + 136, + 141, + 99, + 138, + 159, + 178, + 140, + 202, + 92, + 175, + 107, + 194, + 141, + 107, + 154, + 156, + 43, + 3, + 194, + 75, + 206, + 147, + 173, + 19, + 66, + 33, + 10, + 225, + 98, + 95, + 115, + 73, + 6, + 236, + 178, + 214, + 239, + 173, + 15, + 171, + 13, + 77, + 207, + 210, + 48, + 134, + 130, + 206, + 153, + 74, + 155, + 78, + 181, + 51, + 19, + 108, + 228, + 198, + 61, + 87, + 180, + 249, + 247, + 242, + 161, + 51, + 73, + 212, + 20, + 96, + 150, + 84, + 193, + 124, + 106, + 215, + 235, + 192, + 203, + 188, + 135, + 102, + 80, + 190, + 114, + 103, + 62, + 33, + 132, + 64, + 40, + 141, + 214, + 75, + 225, + 244, + 75, + 110, + 169, + 88, + 122, + 31, + 180, + 44, + 185, + 117, + 85, + 143, + 90, + 221, + 207, + 67, + 0, + 194, + 22, + 132, + 98, + 179, + 241, + 246, + 196, + 204, + 208, + 53, + 213, + 160, + 60, + 204, + 104, + 227, + 29, + 184, + 122, + 27, + 182, + 235, + 101, + 135, + 137, + 214, + 9, + 171, + 68, + 144, + 128, + 251, + 58, + 29, + 210, + 238, + 144, + 158, + 222, + 138, + 126, + 15, + 125, + 93, + 163, + 199, + 52, + 235, + 116, + 248, + 21, + 1, + 101, + 231, + 87, + 184, + 224, + 71, + 68, + 20, + 141, + 92, + 104, + 121, + 26, + 58, + 21, + 208, + 116, + 238, + 243, + 87, + 246, + 68, + 151, + 10, + 128, + 123, + 144, + 228, + 56, + 106, + 156, + 152, + 58, + 177, + 162, + 233, + 64, + 171, + 136, + 137, + 43, + 214, + 223, + 89, + 148, + 76, + 88, + 234, + 106, + 238, + 144, + 252, + 49, + 88, + 6, + 205, + 159, + 246, + 52, + 101, + 201, + 235, + 29, + 178, + 161, + 111, + 191, + 224, + 195, + 65, + 218, + 191, + 249, + 190, + 103, + 57, + 63, + 219, + 69, + 5, + 140, + 17, + 91, + 76, + 253, + 187, + 19, + 44, + 105, + 4, + 153, + 197, + 124, + 110, + 153, + 250, + 50, + 118, + 201, + 157, + 202, + 96, + 167, + 179, + 134, + 148, + 163, + 170, + 193, + 217, + 57, + 32, + 31, + 81, + 214, + 20, + 236, + 217, + 51, + 79, + 176, + 247, + 162, + 213, + 143, + 233, + 67, + 70, + 147, + 242, + 57, + 248, + 165, + 225, + 234, + 199, + 59, + 96, + 99, + 88, + 78, + 218, + 185, + 87, + 59, + 160, + 138, + 230, + 1, + 129, + 187, + 92, + 192, + 154, + 163, + 81, + 54, + 198, + 71, + 183, + 97, + 26, + 152, + 58, + 55, + 86, + 214, + 115, + 193, + 160, + 197, + 169, + 144, + 188, + 52, + 93, + 42, + 17, + 175, + 237, + 251, + 182, + 79, + 236, + 172, + 240, + 225, + 250, + 17, + 252, + 114, + 156, + 152, + 62, + 112, + 116, + 250, + 30, + 71, + 98, + 186, + 112, + 238, + 90, + 191, + 111, + 162, + 117, + 8, + 37, + 133, + 45, + 205, + 236, + 44, + 92, + 111, + 182, + 52, + 230, + 169, + 253, + 247, + 161, + 7, + 210, + 92, + 48, + 121, + 165, + 19, + 198, + 83, + 184, + 75, + 96, + 97, + 234, + 21, + 247, + 78, + 164, + 214, + 190, + 175, + 217, + 246, + 58, + 63, + 140, + 117, + 15, + 253, + 215, + 232, + 116, + 178, + 186, + 249, + 210, + 136, + 166, + 93, + 90, + 243, + 49, + 202, + 230, + 160, + 230, + 141, + 134, + 41, + 60, + 110, + 124, + 226, + 244, + 183, + 215, + 180, + 171, + 215, + 204, + 157, + 121, + 5, + 25, + 112, + 118, + 154, + 175, + 34, + 129, + 230, + 74, + 233, + 82, + 145, + 119, + 230, + 234, + 130, + 51, + 216, + 70, + 169, + 149, + 241, + 185, + 193, + 240, + 84, + 204, + 101, + 134, + 189, + 230, + 200, + 188, + 128, + 84, + 58, + 205, + 145, + 195, + 15, + 59, + 159, + 24, + 21, + 64, + 225, + 161, + 72, + 76, + 13, + 84, + 102, + 227, + 16, + 90, + 116, + 65, + 12, + 148, + 252, + 123, + 198, + 60, + 29, + 130, + 198, + 238, + 97, + 135, + 21, + 66, + 128, + 54, + 164, + 48, + 34, + 130, + 114, + 174, + 251, + 97, + 50, + 219, + 52, + 16, + 27, + 157, + 44, + 177, + 185, + 64, + 185, + 112, + 179, + 217, + 15, + 203, + 219, + 245, + 38, + 61, + 180, + 185, + 17, + 140, + 51, + 167, + 177, + 249, + 81, + 209, + 56, + 115, + 82, + 228, + 187, + 222, + 157, + 87, + 241, + 178, + 85, + 166, + 80, + 189, + 250, + 211, + 192, + 30, + 109, + 228, + 218, + 196, + 83, + 52, + 51, + 252, + 62, + 115, + 24, + 229, + 16, + 174, + 127, + 243, + 207, + 15, + 159, + 248, + 205, + 115, + 98, + 54, + 186, + 223, + 105, + 120, + 78, + 40, + 166, + 146, + 228, + 195, + 157, + 104, + 155, + 180, + 21, + 43, + 164, + 113, + 115, + 181, + 176, + 0, + 141, + 151, + 249, + 25, + 151, + 229, + 82, + 36, + 217, + 89, + 111, + 44, + 14, + 142, + 212, + 168, + 96, + 48, + 37, + 112, + 151, + 84, + 83, + 121, + 205, + 51, + 237, + 130, + 64, + 177, + 164, + 208, + 87, + 249, + 93, + 103, + 15, + 60, + 186, + 147, + 33, + 141, + 39, + 76, + 226, + 57, + 116, + 77, + 105, + 253, + 113, + 221, + 92, + 96, + 59, + 66, + 51, + 220, + 160, + 118, + 76, + 135, + 70, + 36, + 33, + 4, + 202, + 180, + 133, + 194, + 81, + 151, + 108, + 238, + 222, + 166, + 234, + 222, + 93, + 234, + 64, + 241, + 82, + 246, + 194, + 127, + 121, + 137, + 8, + 150, + 33, + 20, + 23, + 141, + 181, + 124, + 204, + 11, + 112, + 80, + 106, + 82, + 116, + 45, + 81, + 226, + 90, + 218, + 121, + 249, + 193, + 217, + 201, + 48, + 39, + 24, + 174, + 217, + 168, + 130, + 95, + 12, + 54, + 105, + 166, + 252, + 129, + 125, + 185, + 234, + 89, + 191, + 19, + 81, + 87, + 203, + 108, + 165, + 140, + 222, + 83, + 131, + 104, + 7, + 100, + 95, + 105, + 244, + 112, + 77, + 28, + 171, + 88, + 36, + 231, + 137, + 86, + 138, + 156, + 243, + 244, + 207, + 19, + 173, + 212, + 149, + 164, + 105, + 225, + 62, + 112, + 42, + 148, + 46, + 187, + 26, + 30, + 128, + 95, + 234, + 216, + 72, + 2, + 15, + 240, + 203, + 98, + 24, + 153, + 173, + 219, + 151, + 205, + 148, + 12, + 22, + 117, + 22, + 53, + 140, + 11, + 214, + 92, + 41, + 165, + 225, + 112, + 42, + 113, + 43, + 147, + 58, + 85, + 150, + 28, + 70, + 233, + 196, + 105, + 166, + 104, + 61, + 149, + 232, + 247, + 135, + 118, + 239, + 20, + 47, + 7, + 14, + 55, + 149, + 83, + 143, + 239, + 107, + 208, + 247, + 219, + 48, + 149, + 109, + 52, + 109, + 129, + 58, + 119, + 170, + 204, + 92, + 34, + 190, + 251, + 169, + 111, + 89, + 225, + 79, + 124, + 205, + 188, + 181, + 252, + 166, + 51, + 236, + 139, + 20, + 4, + 163, + 54, + 239, + 195, + 190, + 38, + 136, + 115, + 234, + 92, + 212, + 59, + 46, + 23, + 193, + 112, + 33, + 109, + 36, + 148, + 73, + 252, + 91, + 158, + 110, + 246, + 37, + 108, + 215, + 75, + 46, + 52, + 13, + 205, + 81, + 163, + 189, + 188, + 216, + 4, + 94, + 152, + 2, + 222, + 53, + 189, + 112, + 223, + 125, + 104, + 219, + 97, + 186, + 12, + 242, + 56, + 75, + 136, + 138, + 108, + 66, + 94, + 222, + 104, + 197, + 140, + 97, + 178, + 71, + 233, + 92, + 236, + 63, + 163, + 62, + 46, + 172, + 203, + 53, + 87, + 113, + 157, + 2, + 58, + 8, + 139, + 56, + 157, + 94, + 125, + 69, + 32, + 223, + 71, + 175, + 238, + 57, + 119, + 221, + 153, + 102, + 190, + 128, + 166, + 52, + 30, + 195, + 26, + 92, + 79, + 203, + 45, + 165, + 78, + 99, + 227, + 131, + 104, + 63, + 82, + 10, + 216, + 41, + 236, + 100, + 160, + 62, + 153, + 78, + 133, + 252, + 247, + 251, + 90, + 173, + 130, + 147, + 221, + 220, + 171, + 10, + 6, + 122, + 248, + 59, + 38, + 210, + 5, + 127, + 235, + 130, + 43, + 86, + 58, + 59, + 31, + 54, + 192, + 30, + 92, + 229, + 124, + 74, + 216, + 39, + 144, + 43, + 195, + 61, + 202, + 126, + 169, + 28, + 80, + 158, + 242, + 14, + 182, + 133, + 208, + 64, + 200, + 26, + 175, + 85, + 143, + 169, + 147, + 10, + 144, + 235, + 45, + 145, + 237, + 183, + 95, + 120, + 160, + 67, + 58, + 170, + 128, + 2, + 232, + 214, + 105, + 81, + 6, + 110, + 201, + 7, + 199, + 100, + 88, + 42, + 50, + 182, + 192, + 38, + 254, + 222, + 148, + 47, + 61, + 5, + 155, + 14, + 200, + 82, + 108, + 188, + 58, + 93, + 55, + 193, + 86, + 168, + 150, + 158, + 13, + 124, + 19, + 21, + 205, + 239, + 90, + 87, + 120, + 54, + 142, + 11, + 16, + 78, + 167, + 54, + 78, + 165, + 3, + 132, + 99, + 212, + 52, + 189, + 164, + 166, + 177, + 85, + 136, + 218, + 9, + 159, + 164, + 53, + 211, + 56, + 236, + 150, + 144, + 150, + 164, + 253, + 214, + 169, + 128, + 48, + 164, + 238, + 20, + 198, + 107, + 215, + 201, + 114, + 207, + 46, + 247, + 139, + 139, + 135, + 79, + 254, + 48, + 188, + 133, + 48, + 39, + 231, + 38, + 67, + 167, + 86, + 225, + 10, + 203, + 52, + 183, + 245, + 45, + 207, + 167, + 230, + 13, + 152, + 108, + 4, + 100, + 238, + 141, + 33, + 124, + 52, + 8, + 144, + 53, + 221, + 74, + 94, + 97, + 76, + 85, + 195, + 124, + 227, + 88, + 196, + 184, + 60, + 188, + 20, + 219, + 120, + 98, + 43, + 104, + 206, + 233, + 120, + 247, + 153, + 35, + 222, + 54, + 34, + 102, + 65, + 105, + 109, + 28, + 76, + 49, + 99, + 80, + 90, + 115, + 51, + 224, + 227, + 93, + 105, + 27, + 192, + 26, + 64, + 56, + 210, + 55, + 231, + 84, + 111, + 137, + 64, + 158, + 211, + 144, + 186, + 169, + 105, + 131, + 65, + 145, + 26, + 241, + 97, + 30, + 3, + 212, + 101, + 166, + 216, + 87, + 145, + 129, + 92, + 67, + 3, + 87, + 122, + 229, + 135, + 182, + 160, + 21, + 61, + 15, + 76, + 204, + 204, + 27, + 171, + 255, + 192, + 196, + 170, + 188, + 219, + 103, + 186, + 152, + 3, + 80, + 12, + 165, + 49, + 78, + 34, + 64, + 49, + 194, + 220, + 196, + 236, + 129, + 164, + 242, + 224, + 27, + 94, + 58, + 162, + 92, + 9, + 177, + 107, + 136, + 230, + 146, + 33, + 145, + 250, + 209, + 200, + 28, + 149, + 225, + 145, + 236, + 154, + 66, + 115, + 205, + 184, + 166, + 47, + 112, + 193, + 209, + 136, + 201, + 78, + 129, + 137, + 156, + 14, + 198, + 206, + 192, + 11, + 89, + 4, + 203, + 164, + 241, + 204, + 150, + 53, + 0, + 57, + 191, + 189, + 191, + 15, + 51, + 234, + 215, + 107, + 205, + 35, + 165, + 126, + 56, + 55, + 30, + 252, + 106, + 225, + 249, + 173, + 233, + 52, + 169, + 70, + 53, + 239, + 153, + 13, + 15, + 18, + 189, + 74, + 121, + 124, + 129, + 169, + 119, + 9, + 12, + 110, + 230, + 53, + 80, + 48, + 248, + 59, + 51, + 172, + 141, + 22, + 76, + 193, + 231, + 30, + 97, + 247, + 171, + 243, + 1, + 93, + 23, + 45, + 220, + 167, + 175, + 4, + 121, + 54, + 199, + 150, + 221, + 0, + 93, + 107, + 220, + 119, + 108, + 40, + 172, + 153, + 103, + 219, + 150, + 107, + 228, + 48, + 114, + 13, + 65, + 71, + 103, + 57, + 150, + 208, + 159, + 74, + 86, + 142, + 118, + 233, + 132, + 206, + 106, + 81, + 49, + 64, + 65, + 13, + 143, + 212, + 146, + 46, + 245, + 17, + 152, + 239, + 219, + 247, + 61, + 187, + 210, + 109, + 254, + 93, + 176, + 97, + 98, + 193, + 237, + 208, + 188, + 156, + 24, + 80, + 140, + 246, + 144, + 55, + 233, + 66, + 222, + 94, + 99, + 125, + 197, + 2, + 67, + 176, + 213, + 247, + 54, + 216, + 147, + 44, + 105, + 207, + 183, + 175, + 235, + 107, + 102, + 252, + 133, + 238, + 209, + 156, + 26, + 57, + 184, + 161, + 123, + 228, + 152, + 79, + 253, + 56, + 135, + 251, + 73, + 224, + 35, + 232, + 136, + 109, + 34, + 70, + 131, + 41, + 156, + 239, + 208, + 237, + 6, + 247, + 93, + 137, + 233, + 225, + 60, + 46, + 184, + 114, + 150, + 205, + 7, + 156, + 199, + 39, + 205, + 148, + 141, + 124, + 250, + 112, + 119, + 216, + 90, + 79, + 222, + 138, + 109, + 184, + 202, + 99, + 148, + 144, + 162, + 142, + 135, + 55, + 200, + 25, + 144, + 44, + 157, + 4, + 30, + 44, + 136, + 67, + 51, + 47, + 14, + 31, + 222, + 198, + 139, + 90, + 35, + 220, + 193, + 82, + 227, + 238, + 122, + 208, + 245, + 243, + 38, + 106, + 187, + 157, + 143, + 82, + 35, + 228, + 135, + 192, + 18, + 199, + 40, + 161, + 147, + 106, + 53, + 98, + 146, + 144, + 203, + 162, + 106, + 171, + 145, + 23, + 101, + 104, + 179, + 123, + 224, + 104, + 141, + 44, + 30, + 158, + 20, + 56, + 154, + 61, + 229, + 37, + 92, + 227, + 31, + 244, + 66, + 75, + 40, + 96, + 28, + 225, + 130, + 125, + 42, + 73, + 7, + 91, + 43, + 207, + 156, + 168, + 166, + 232, + 197, + 59, + 81, + 122, + 86, + 215, + 72, + 221, + 149, + 151, + 229, + 138, + 74, + 169, + 146, + 144, + 156, + 202, + 237, + 8, + 200, + 90, + 209, + 159, + 72, + 50, + 225, + 34, + 159, + 250, + 26, + 15, + 248, + 245, + 186, + 166, + 88, + 26, + 18, + 143, + 165, + 13, + 61, + 32, + 130, + 129, + 146, + 31, + 43, + 251, + 10, + 228, + 210, + 119, + 225, + 125, + 192, + 120, + 27, + 242, + 136, + 233, + 137, + 164, + 113, + 184, + 167, + 32, + 74, + 76, + 79, + 44, + 173, + 205, + 95, + 35, + 239, + 210, + 96, + 35, + 45, + 107, + 52, + 109, + 8, + 163, + 47, + 25, + 249, + 16, + 238, + 74, + 192, + 231, + 195, + 53, + 93, + 177, + 98, + 123, + 124, + 253, + 75, + 238, + 144, + 239, + 17, + 129, + 234, + 125, + 252, + 76, + 114, + 166, + 6, + 230, + 157, + 26, + 126, + 211, + 5, + 67, + 87, + 106, + 240, + 162, + 191, + 86, + 176, + 101, + 33, + 57, + 43, + 133, + 119, + 159, + 187, + 165, + 101, + 70, + 185, + 171, + 68, + 27, + 182, + 82, + 73, + 65, + 234, + 194, + 174, + 172, + 86, + 101, + 91, + 53, + 116, + 108, + 78, + 77, + 52, + 98, + 228, + 181, + 133, + 94, + 220, + 50, + 141, + 125, + 201, + 22, + 122, + 161, + 93, + 182, + 227, + 165, + 98, + 160, + 20, + 31, + 85, + 9, + 131, + 251, + 38, + 185, + 135, + 247, + 153, + 98, + 26, + 135, + 157, + 242, + 92, + 139, + 105, + 92, + 158, + 94, + 242, + 34, + 120, + 39, + 178, + 37, + 108, + 201, + 104, + 244, + 250, + 22, + 16, + 33, + 201, + 67, + 139, + 75, + 139, + 235, + 94, + 42, + 199, + 18, + 240, + 200, + 37, + 239, + 43, + 111, + 151, + 131, + 187, + 219, + 243, + 220, + 213, + 6, + 219, + 51, + 66, + 192, + 40, + 248, + 27, + 157, + 144, + 110, + 42, + 108, + 182, + 84, + 73, + 249, + 163, + 19, + 9, + 73, + 39, + 240, + 116, + 106, + 108, + 70, + 200, + 24, + 196, + 86, + 145, + 148, + 179, + 79, + 188, + 41, + 87, + 103, + 89, + 107, + 30, + 66, + 84, + 115, + 1, + 82, + 35, + 214, + 26, + 62, + 76, + 56, + 71, + 218, + 115, + 151, + 233, + 175, + 215, + 188, + 179, + 175, + 121, + 136, + 95, + 152, + 103, + 94, + 155, + 84, + 140, + 78, + 149, + 6, + 155, + 128, + 152, + 99, + 99, + 179, + 31, + 38, + 75, + 177, + 151, + 191, + 219, + 151, + 133, + 24, + 195, + 62, + 48, + 182, + 60, + 67, + 54, + 22, + 193, + 144, + 145, + 58, + 206, + 157, + 166, + 152, + 25, + 56, + 206, + 180, + 147, + 41, + 127, + 123, + 57, + 35, + 63, + 228, + 198, + 12, + 152, + 171, + 49, + 132, + 90, + 24, + 97, + 141, + 34, + 132, + 250, + 194, + 89, + 220, + 224, + 113, + 44, + 170, + 209, + 32, + 142, + 198, + 139, + 210, + 25, + 13, + 98, + 206, + 180, + 173, + 58, + 154, + 234, + 162, + 74, + 179, + 171, + 205, + 172, + 160, + 51, + 221, + 144, + 172, + 168, + 109, + 61, + 149, + 243, + 157, + 19, + 61, + 92, + 87, + 158, + 91, + 91, + 116, + 201, + 92, + 221, + 156, + 242, + 131, + 90, + 91, + 242, + 140, + 130, + 180, + 221, + 6, + 44, + 112, + 146, + 78, + 223, + 111, + 19, + 240, + 105, + 121, + 102, + 197, + 133, + 86, + 188, + 132, + 238, + 202, + 125, + 225, + 193, + 176, + 179, + 202, + 30, + 60, + 4, + 161, + 98, + 253, + 224, + 108, + 244, + 99, + 214, + 53, + 96, + 76, + 204, + 93, + 227, + 75, + 66, + 218, + 251, + 209, + 93, + 219, + 180, + 143, + 120, + 66, + 50, + 27, + 13, + 50, + 200, + 97, + 154, + 165, + 201, + 53, + 167, + 250, + 1, + 130, + 21, + 95, + 212, + 247, + 27, + 217, + 96, + 173, + 149, + 51, + 1, + 171, + 227, + 7, + 207, + 64, + 146, + 17, + 117, + 100, + 163, + 19, + 182, + 25, + 134, + 165, + 76, + 138, + 8, + 127, + 200, + 27, + 238, + 94, + 132, + 118, + 182, + 150, + 124, + 194, + 210, + 156, + 248, + 214, + 134, + 174, + 108, + 75, + 23, + 86, + 241, + 7, + 202, + 74, + 244, + 52, + 53, + 234, + 246, + 170, + 198, + 78, + 243, + 81, + 2, + 1, + 134, + 85, + 203, + 77, + 223, + 250, + 14, + 26, + 19, + 176, + 202, + 255, + 5, + 223, + 227, + 194, + 151, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 51, + 48, + 51, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 229, + 125, + 219, + 142, + 164, + 199, + 141, + 230, + 189, + 158, + 162, + 95, + 192, + 116, + 240, + 20, + 193, + 0, + 12, + 3, + 146, + 44, + 13, + 246, + 98, + 128, + 221, + 133, + 223, + 192, + 179, + 51, + 192, + 2, + 190, + 216, + 217, + 247, + 7, + 22, + 204, + 110, + 91, + 153, + 106, + 178, + 242, + 15, + 22, + 59, + 187, + 167, + 215, + 54, + 32, + 163, + 82, + 149, + 245, + 31, + 35, + 200, + 143, + 223, + 1, + 63, + 140, + 15, + 227, + 195, + 31, + 240, + 195, + 248, + 96, + 66, + 31, + 254, + 246, + 247, + 31, + 254, + 207, + 15, + 176, + 244, + 246, + 211, + 127, + 252, + 243, + 111, + 127, + 255, + 1, + 63, + 248, + 127, + 255, + 231, + 191, + 220, + 254, + 129, + 31, + 254, + 243, + 63, + 126, + 248, + 227, + 191, + 240, + 135, + 255, + 248, + 191, + 63, + 248, + 231, + 107, + 203, + 7, + 68, + 226, + 15, + 255, + 249, + 191, + 126, + 248, + 247, + 31, + 254, + 199, + 239, + 190, + 97, + 145, + 255, + 239, + 111, + 127, + 191, + 253, + 171, + 195, + 191, + 227, + 227, + 255, + 249, + 237, + 59, + 254, + 248, + 223, + 63, + 252, + 233, + 79, + 127, + 252, + 215, + 159, + 255, + 219, + 95, + 62, + 140, + 15, + 127, + 254, + 243, + 79, + 127, + 249, + 249, + 135, + 159, + 254, + 250, + 195, + 31, + 127, + 149, + 15, + 40, + 48, + 253, + 63, + 235, + 195, + 95, + 255, + 253, + 7, + 252, + 237, + 80, + 65, + 214, + 54, + 92, + 188, + 63, + 252, + 213, + 191, + 247, + 15, + 200, + 64, + 107, + 177, + 176, + 125, + 248, + 235, + 191, + 125, + 248, + 211, + 24, + 36, + 127, + 254, + 240, + 215, + 255, + 253, + 195, + 134, + 181, + 116, + 14, + 161, + 15, + 227, + 211, + 7, + 138, + 183, + 15, + 12, + 80, + 17, + 199, + 178, + 127, + 126, + 32, + 235, + 246, + 193, + 47, + 127, + 61, + 250, + 219, + 52, + 97, + 172, + 101, + 20, + 28, + 194, + 224, + 202, + 23, + 242, + 0, + 148, + 189, + 246, + 140, + 78, + 234, + 231, + 210, + 55, + 10, + 16, + 225, + 90, + 216, + 119, + 140, + 6, + 180, + 121, + 201, + 10, + 190, + 81, + 36, + 185, + 190, + 58, + 42, + 127, + 74, + 13, + 166, + 242, + 36, + 109, + 59, + 248, + 73, + 176, + 72, + 231, + 136, + 46, + 135, + 234, + 237, + 27, + 5, + 204, + 198, + 20, + 189, + 123, + 56, + 44, + 59, + 171, + 121, + 251, + 96, + 1, + 147, + 33, + 233, + 111, + 191, + 144, + 252, + 92, + 179, + 47, + 146, + 143, + 247, + 150, + 129, + 116, + 162, + 108, + 190, + 240, + 192, + 254, + 88, + 57, + 125, + 68, + 3, + 36, + 30, + 107, + 181, + 93, + 81, + 36, + 2, + 220, + 58, + 148, + 163, + 75, + 250, + 115, + 114, + 33, + 40, + 187, + 162, + 86, + 58, + 6, + 81, + 48, + 82, + 222, + 210, + 119, + 90, + 178, + 193, + 246, + 226, + 185, + 163, + 199, + 124, + 127, + 122, + 82, + 198, + 194, + 189, + 116, + 253, + 118, + 248, + 217, + 35, + 148, + 159, + 112, + 233, + 197, + 192, + 181, + 129, + 198, + 182, + 198, + 219, + 104, + 12, + 100, + 104, + 209, + 171, + 166, + 43, + 57, + 93, + 249, + 233, + 248, + 121, + 158, + 165, + 117, + 118, + 76, + 24, + 182, + 251, + 214, + 89, + 194, + 1, + 56, + 17, + 45, + 186, + 185, + 63, + 102, + 183, + 234, + 120, + 125, + 200, + 23, + 142, + 236, + 181, + 70, + 76, + 46, + 245, + 249, + 7, + 162, + 119, + 127, + 131, + 56, + 60, + 168, + 177, + 239, + 87, + 45, + 73, + 62, + 200, + 150, + 185, + 135, + 231, + 98, + 227, + 239, + 15, + 233, + 244, + 158, + 236, + 13, + 203, + 214, + 108, + 220, + 76, + 25, + 76, + 183, + 134, + 155, + 233, + 199, + 39, + 23, + 7, + 168, + 9, + 217, + 158, + 207, + 47, + 79, + 182, + 150, + 13, + 41, + 29, + 28, + 51, + 236, + 173, + 163, + 241, + 116, + 217, + 96, + 204, + 53, + 162, + 183, + 132, + 63, + 222, + 41, + 131, + 173, + 52, + 121, + 198, + 111, + 240, + 197, + 135, + 33, + 185, + 233, + 227, + 227, + 107, + 67, + 224, + 135, + 68, + 147, + 222, + 249, + 202, + 243, + 90, + 160, + 52, + 134, + 53, + 214, + 45, + 8, + 186, + 105, + 68, + 107, + 230, + 167, + 85, + 24, + 9, + 104, + 216, + 90, + 227, + 238, + 77, + 45, + 85, + 93, + 50, + 16, + 144, + 108, + 247, + 173, + 207, + 50, + 20, + 104, + 140, + 29, + 238, + 178, + 28, + 191, + 233, + 15, + 11, + 22, + 42, + 197, + 203, + 243, + 148, + 25, + 175, + 75, + 247, + 107, + 70, + 86, + 232, + 216, + 233, + 146, + 145, + 252, + 188, + 182, + 100, + 200, + 100, + 48, + 89, + 210, + 87, + 220, + 202, + 92, + 176, + 113, + 115, + 116, + 227, + 232, + 227, + 19, + 142, + 8, + 50, + 198, + 48, + 149, + 223, + 239, + 238, + 167, + 127, + 203, + 22, + 200, + 26, + 218, + 247, + 136, + 203, + 70, + 80, + 33, + 93, + 207, + 106, + 150, + 187, + 247, + 246, + 225, + 89, + 96, + 9, + 31, + 133, + 199, + 149, + 161, + 212, + 42, + 41, + 42, + 224, + 162, + 221, + 119, + 171, + 20, + 55, + 144, + 72, + 88, + 3, + 93, + 170, + 59, + 233, + 238, + 77, + 177, + 55, + 223, + 160, + 211, + 35, + 147, + 5, + 75, + 213, + 250, + 214, + 118, + 85, + 4, + 163, + 101, + 209, + 163, + 146, + 158, + 211, + 143, + 247, + 91, + 28, + 153, + 62, + 125, + 203, + 107, + 47, + 161, + 26, + 193, + 178, + 201, + 125, + 213, + 217, + 248, + 240, + 7, + 38, + 152, + 11, + 109, + 233, + 63, + 54, + 48, + 78, + 58, + 122, + 249, + 53, + 169, + 52, + 243, + 162, + 44, + 237, + 81, + 47, + 44, + 114, + 15, + 191, + 48, + 126, + 173, + 189, + 246, + 96, + 166, + 184, + 236, + 243, + 179, + 252, + 237, + 114, + 5, + 48, + 10, + 14, + 132, + 177, + 253, + 250, + 190, + 9, + 167, + 252, + 242, + 175, + 63, + 223, + 67, + 42, + 216, + 4, + 169, + 188, + 177, + 67, + 210, + 105, + 145, + 123, + 169, + 158, + 124, + 40, + 101, + 211, + 58, + 250, + 31, + 59, + 220, + 88, + 200, + 91, + 247, + 123, + 31, + 229, + 9, + 52, + 84, + 103, + 223, + 139, + 59, + 135, + 127, + 141, + 74, + 244, + 114, + 208, + 188, + 127, + 65, + 151, + 240, + 133, + 71, + 52, + 187, + 164, + 15, + 213, + 151, + 224, + 103, + 215, + 244, + 240, + 176, + 183, + 192, + 96, + 65, + 217, + 109, + 23, + 98, + 27, + 224, + 152, + 126, + 183, + 191, + 30, + 74, + 64, + 8, + 139, + 167, + 204, + 62, + 56, + 9, + 73, + 193, + 134, + 73, + 88, + 129, + 28, + 175, + 39, + 159, + 62, + 40, + 32, + 21, + 194, + 214, + 9, + 67, + 162, + 50, + 40, + 14, + 127, + 5, + 83, + 28, + 242, + 243, + 183, + 52, + 127, + 6, + 139, + 24, + 7, + 129, + 218, + 238, + 188, + 91, + 107, + 194, + 156, + 56, + 163, + 11, + 245, + 233, + 149, + 59, + 70, + 77, + 4, + 12, + 105, + 113, + 35, + 14, + 227, + 219, + 67, + 12, + 174, + 166, + 91, + 93, + 138, + 182, + 100, + 11, + 106, + 190, + 210, + 62, + 217, + 78, + 143, + 113, + 22, + 129, + 45, + 70, + 125, + 85, + 31, + 225, + 134, + 65, + 3, + 67, + 88, + 78, + 223, + 94, + 47, + 14, + 118, + 162, + 82, + 215, + 71, + 178, + 97, + 47, + 107, + 124, + 98, + 73, + 5, + 134, + 142, + 25, + 61, + 95, + 121, + 235, + 254, + 118, + 49, + 251, + 54, + 126, + 245, + 240, + 77, + 84, + 234, + 107, + 200, + 187, + 16, + 214, + 198, + 145, + 3, + 109, + 133, + 57, + 214, + 12, + 151, + 163, + 95, + 147, + 179, + 165, + 172, + 53, + 205, + 62, + 144, + 95, + 18, + 128, + 167, + 84, + 230, + 49, + 35, + 200, + 68, + 108, + 28, + 14, + 177, + 130, + 50, + 135, + 144, + 72, + 6, + 1, + 164, + 48, + 206, + 195, + 139, + 126, + 215, + 246, + 213, + 10, + 39, + 214, + 13, + 56, + 89, + 26, + 79, + 118, + 50, + 16, + 107, + 184, + 177, + 22, + 39, + 97, + 115, + 1, + 143, + 21, + 182, + 246, + 197, + 99, + 92, + 8, + 188, + 54, + 135, + 111, + 231, + 58, + 125, + 44, + 179, + 126, + 251, + 97, + 91, + 213, + 59, + 236, + 174, + 86, + 218, + 201, + 32, + 88, + 131, + 86, + 95, + 105, + 39, + 99, + 194, + 90, + 226, + 13, + 205, + 231, + 151, + 33, + 121, + 167, + 178, + 22, + 52, + 191, + 60, + 165, + 121, + 151, + 200, + 128, + 109, + 155, + 27, + 33, + 22, + 81, + 24, + 183, + 55, + 38, + 120, + 9, + 127, + 76, + 65, + 229, + 108, + 173, + 46, + 34, + 71, + 11, + 97, + 203, + 10, + 135, + 53, + 197, + 211, + 90, + 19, + 6, + 110, + 147, + 62, + 48, + 229, + 24, + 187, + 218, + 48, + 117, + 96, + 223, + 57, + 233, + 96, + 88, + 68, + 24, + 158, + 83, + 130, + 98, + 63, + 220, + 168, + 249, + 30, + 196, + 244, + 151, + 210, + 33, + 179, + 192, + 180, + 198, + 161, + 128, + 178, + 193, + 82, + 10, + 103, + 32, + 175, + 185, + 175, + 58, + 9, + 216, + 40, + 4, + 174, + 139, + 231, + 52, + 39, + 136, + 134, + 189, + 233, + 67, + 227, + 124, + 9, + 9, + 79, + 106, + 165, + 34, + 126, + 176, + 17, + 214, + 216, + 235, + 203, + 66, + 97, + 116, + 7, + 67, + 227, + 24, + 23, + 198, + 177, + 181, + 10, + 134, + 24, + 38, + 49, + 250, + 154, + 144, + 3, + 85, + 71, + 95, + 184, + 96, + 110, + 197, + 249, + 249, + 247, + 165, + 157, + 254, + 39, + 212, + 250, + 116, + 99, + 222, + 176, + 209, + 72, + 248, + 20, + 98, + 115, + 254, + 141, + 169, + 202, + 58, + 129, + 216, + 168, + 9, + 98, + 75, + 89, + 35, + 79, + 96, + 144, + 131, + 73, + 245, + 49, + 36, + 81, + 156, + 203, + 248, + 36, + 146, + 112, + 55, + 174, + 229, + 4, + 200, + 130, + 97, + 79, + 241, + 56, + 203, + 189, + 199, + 209, + 242, + 43, + 87, + 170, + 38, + 12, + 65, + 148, + 141, + 250, + 42, + 72, + 83, + 80, + 82, + 27, + 225, + 84, + 47, + 189, + 137, + 41, + 126, + 180, + 122, + 129, + 37, + 20, + 159, + 159, + 175, + 198, + 229, + 204, + 249, + 71, + 155, + 49, + 38, + 143, + 21, + 104, + 38, + 41, + 78, + 90, + 42, + 141, + 81, + 24, + 120, + 173, + 141, + 157, + 52, + 162, + 5, + 34, + 219, + 246, + 211, + 114, + 241, + 26, + 254, + 219, + 58, + 62, + 69, + 159, + 177, + 155, + 54, + 118, + 68, + 104, + 8, + 83, + 23, + 71, + 47, + 254, + 119, + 52, + 194, + 33, + 30, + 183, + 57, + 107, + 95, + 77, + 67, + 94, + 248, + 161, + 68, + 215, + 237, + 252, + 242, + 212, + 158, + 126, + 210, + 1, + 99, + 115, + 35, + 150, + 233, + 232, + 21, + 206, + 24, + 8, + 202, + 231, + 73, + 69, + 164, + 113, + 137, + 47, + 165, + 33, + 98, + 93, + 173, + 86, + 12, + 116, + 175, + 176, + 116, + 190, + 50, + 52, + 127, + 168, + 63, + 239, + 151, + 182, + 57, + 238, + 126, + 225, + 126, + 145, + 95, + 243, + 66, + 35, + 124, + 191, + 200, + 63, + 182, + 146, + 86, + 226, + 110, + 20, + 88, + 70, + 182, + 71, + 72, + 160, + 45, + 162, + 40, + 66, + 176, + 39, + 110, + 171, + 240, + 114, + 46, + 19, + 76, + 114, + 214, + 219, + 175, + 73, + 103, + 247, + 64, + 152, + 184, + 191, + 103, + 69, + 136, + 204, + 54, + 112, + 43, + 87, + 124, + 51, + 136, + 198, + 116, + 47, + 202, + 152, + 42, + 159, + 182, + 210, + 211, + 122, + 14, + 25, + 198, + 104, + 220, + 22, + 5, + 23, + 140, + 197, + 60, + 207, + 86, + 134, + 148, + 147, + 150, + 190, + 69, + 89, + 223, + 87, + 164, + 117, + 169, + 47, + 50, + 52, + 27, + 47, + 132, + 250, + 34, + 35, + 225, + 55, + 62, + 93, + 34, + 63, + 95, + 102, + 82, + 12, + 81, + 170, + 116, + 34, + 92, + 107, + 54, + 210, + 171, + 182, + 2, + 201, + 14, + 87, + 105, + 46, + 220, + 247, + 100, + 185, + 173, + 237, + 234, + 74, + 11, + 140, + 73, + 251, + 94, + 81, + 101, + 132, + 61, + 68, + 159, + 34, + 80, + 247, + 203, + 203, + 67, + 181, + 155, + 64, + 249, + 193, + 222, + 114, + 204, + 40, + 154, + 192, + 58, + 26, + 135, + 52, + 58, + 7, + 8, + 81, + 56, + 164, + 121, + 3, + 25, + 205, + 206, + 170, + 196, + 26, + 85, + 155, + 32, + 54, + 159, + 128, + 136, + 81, + 231, + 47, + 2, + 139, + 135, + 204, + 125, + 210, + 249, + 115, + 87, + 231, + 127, + 204, + 247, + 200, + 63, + 72, + 91, + 222, + 100, + 195, + 44, + 75, + 79, + 186, + 192, + 130, + 201, + 160, + 179, + 149, + 43, + 59, + 23, + 76, + 22, + 11, + 251, + 214, + 151, + 161, + 103, + 27, + 193, + 59, + 251, + 198, + 130, + 116, + 43, + 48, + 251, + 25, + 124, + 69, + 10, + 141, + 247, + 239, + 115, + 116, + 54, + 9, + 72, + 12, + 131, + 137, + 99, + 60, + 247, + 27, + 160, + 60, + 52, + 138, + 52, + 78, + 47, + 205, + 68, + 96, + 196, + 101, + 141, + 87, + 123, + 42, + 176, + 241, + 210, + 232, + 106, + 243, + 204, + 58, + 244, + 99, + 0, + 38, + 191, + 168, + 165, + 151, + 9, + 247, + 130, + 189, + 56, + 228, + 191, + 22, + 187, + 187, + 65, + 48, + 68, + 99, + 189, + 83, + 14, + 204, + 100, + 143, + 68, + 145, + 41, + 65, + 14, + 135, + 81, + 56, + 76, + 172, + 226, + 8, + 94, + 169, + 75, + 184, + 70, + 124, + 58, + 198, + 244, + 224, + 15, + 62, + 200, + 118, + 237, + 140, + 85, + 80, + 187, + 235, + 180, + 8, + 144, + 48, + 68, + 71, + 171, + 61, + 253, + 4, + 220, + 28, + 54, + 77, + 151, + 70, + 130, + 1, + 207, + 230, + 152, + 203, + 50, + 65, + 103, + 35, + 166, + 202, + 99, + 192, + 228, + 29, + 51, + 162, + 18, + 210, + 127, + 62, + 102, + 79, + 57, + 66, + 87, + 6, + 160, + 17, + 121, + 232, + 237, + 15, + 238, + 31, + 158, + 218, + 59, + 196, + 202, + 48, + 7, + 55, + 86, + 237, + 172, + 11, + 230, + 82, + 137, + 22, + 27, + 254, + 180, + 52, + 48, + 24, + 223, + 90, + 133, + 103, + 85, + 123, + 54, + 76, + 77, + 123, + 154, + 34, + 169, + 124, + 12, + 103, + 236, + 54, + 78, + 142, + 101, + 136, + 51, + 118, + 195, + 87, + 229, + 202, + 201, + 94, + 98, + 27, + 213, + 180, + 36, + 194, + 8, + 134, + 241, + 4, + 184, + 120, + 178, + 172, + 96, + 182, + 66, + 252, + 53, + 29, + 135, + 99, + 239, + 29, + 116, + 242, + 249, + 196, + 70, + 238, + 185, + 204, + 1, + 204, + 28, + 210, + 93, + 171, + 252, + 155, + 91, + 109, + 48, + 72, + 222, + 139, + 134, + 201, + 30, + 32, + 230, + 162, + 148, + 62, + 104, + 65, + 64, + 85, + 12, + 59, + 222, + 218, + 75, + 20, + 202, + 128, + 71, + 112, + 140, + 15, + 44, + 103, + 168, + 140, + 198, + 57, + 169, + 32, + 172, + 45, + 161, + 200, + 49, + 163, + 164, + 61, + 44, + 237, + 131, + 223, + 173, + 244, + 242, + 170, + 85, + 169, + 145, + 11, + 168, + 83, + 65, + 200, + 191, + 229, + 219, + 131, + 81, + 108, + 131, + 173, + 17, + 34, + 60, + 239, + 99, + 124, + 48, + 214, + 121, + 1, + 205, + 179, + 21, + 95, + 28, + 121, + 35, + 226, + 103, + 135, + 246, + 54, + 166, + 178, + 24, + 140, + 132, + 232, + 4, + 82, + 145, + 46, + 72, + 165, + 221, + 162, + 33, + 184, + 156, + 197, + 138, + 101, + 129, + 76, + 158, + 141, + 210, + 102, + 185, + 17, + 174, + 53, + 236, + 19, + 113, + 36, + 231, + 251, + 184, + 40, + 122, + 69, + 250, + 238, + 121, + 251, + 231, + 87, + 187, + 118, + 133, + 204, + 110, + 132, + 210, + 208, + 6, + 167, + 136, + 157, + 16, + 152, + 204, + 216, + 6, + 39, + 191, + 66, + 247, + 170, + 121, + 186, + 19, + 180, + 52, + 94, + 160, + 34, + 50, + 192, + 174, + 47, + 159, + 157, + 59, + 7, + 178, + 2, + 110, + 195, + 112, + 3, + 37, + 205, + 144, + 129, + 20, + 0, + 200, + 230, + 112, + 37, + 94, + 36, + 206, + 5, + 203, + 176, + 147, + 152, + 177, + 16, + 76, + 57, + 164, + 231, + 23, + 136, + 40, + 199, + 76, + 172, + 102, + 198, + 21, + 141, + 13, + 204, + 56, + 26, + 145, + 4, + 100, + 144, + 17, + 183, + 202, + 253, + 47, + 198, + 177, + 210, + 198, + 125, + 156, + 118, + 35, + 48, + 70, + 50, + 193, + 70, + 104, + 8, + 115, + 141, + 167, + 19, + 217, + 31, + 20, + 240, + 14, + 155, + 157, + 172, + 146, + 53, + 97, + 243, + 162, + 103, + 84, + 217, + 199, + 99, + 191, + 223, + 238, + 108, + 224, + 149, + 211, + 253, + 75, + 242, + 178, + 31, + 210, + 36, + 30, + 38, + 11, + 239, + 102, + 227, + 50, + 79, + 144, + 49, + 87, + 223, + 59, + 193, + 50, + 64, + 86, + 232, + 56, + 240, + 173, + 182, + 24, + 108, + 12, + 83, + 180, + 209, + 25, + 139, + 109, + 193, + 194, + 21, + 18, + 186, + 83, + 114, + 74, + 10, + 31, + 21, + 17, + 128, + 177, + 128, + 214, + 228, + 198, + 201, + 52, + 34, + 176, + 196, + 220, + 206, + 23, + 9, + 32, + 88, + 110, + 234, + 193, + 198, + 115, + 226, + 125, + 83, + 15, + 62, + 27, + 172, + 60, + 220, + 143, + 115, + 119, + 168, + 148, + 124, + 81, + 67, + 6, + 22, + 194, + 148, + 17, + 250, + 174, + 85, + 181, + 45, + 10, + 11, + 105, + 90, + 11, + 232, + 123, + 234, + 139, + 84, + 171, + 128, + 117, + 24, + 240, + 216, + 141, + 175, + 173, + 162, + 235, + 48, + 48, + 172, + 169, + 127, + 91, + 188, + 116, + 218, + 109, + 91, + 125, + 182, + 74, + 229, + 207, + 207, + 175, + 9, + 152, + 80, + 228, + 100, + 136, + 11, + 98, + 180, + 241, + 165, + 80, + 113, + 69, + 76, + 44, + 109, + 191, + 40, + 224, + 186, + 215, + 5, + 189, + 205, + 196, + 57, + 70, + 19, + 24, + 214, + 86, + 92, + 95, + 82, + 63, + 114, + 238, + 215, + 81, + 28, + 116, + 136, + 179, + 229, + 153, + 222, + 20, + 97, + 28, + 125, + 161, + 57, + 195, + 147, + 246, + 254, + 252, + 11, + 11, + 115, + 226, + 125, + 200, + 20, + 46, + 18, + 82, + 22, + 152, + 200, + 86, + 61, + 84, + 162, + 248, + 120, + 114, + 163, + 163, + 239, + 7, + 216, + 137, + 126, + 105, + 58, + 74, + 122, + 153, + 95, + 245, + 76, + 57, + 18, + 53, + 59, + 29, + 179, + 92, + 41, + 196, + 164, + 177, + 62, + 238, + 69, + 39, + 53, + 5, + 216, + 180, + 113, + 182, + 61, + 13, + 68, + 151, + 249, + 67, + 247, + 246, + 232, + 230, + 132, + 83, + 127, + 14, + 184, + 12, + 75, + 182, + 155, + 34, + 132, + 51, + 1, + 231, + 192, + 112, + 114, + 154, + 179, + 62, + 74, + 187, + 47, + 250, + 238, + 235, + 84, + 192, + 70, + 120, + 5, + 9, + 68, + 149, + 194, + 146, + 181, + 83, + 1, + 145, + 194, + 155, + 53, + 160, + 201, + 229, + 206, + 162, + 49, + 59, + 167, + 238, + 172, + 139, + 184, + 56, + 182, + 2, + 106, + 132, + 94, + 90, + 121, + 239, + 238, + 244, + 178, + 215, + 88, + 141, + 79, + 132, + 109, + 24, + 66, + 103, + 207, + 115, + 193, + 113, + 247, + 152, + 198, + 87, + 4, + 47, + 200, + 191, + 201, + 119, + 251, + 54, + 42, + 11, + 1, + 145, + 132, + 29, + 217, + 179, + 179, + 61, + 46, + 85, + 24, + 38, + 99, + 39, + 242, + 226, + 22, + 128, + 131, + 53, + 124, + 219, + 179, + 7, + 179, + 168, + 106, + 42, + 232, + 90, + 230, + 68, + 47, + 163, + 186, + 78, + 214, + 29, + 0, + 153, + 67, + 185, + 231, + 249, + 124, + 174, + 136, + 139, + 124, + 78, + 2, + 79, + 125, + 51, + 106, + 134, + 180, + 228, + 243, + 249, + 217, + 88, + 155, + 51, + 251, + 124, + 222, + 48, + 4, + 82, + 146, + 41, + 229, + 3, + 195, + 48, + 16, + 165, + 180, + 169, + 85, + 116, + 192, + 26, + 157, + 157, + 8, + 171, + 192, + 90, + 203, + 213, + 223, + 29, + 246, + 196, + 118, + 138, + 70, + 20, + 11, + 206, + 205, + 48, + 38, + 119, + 210, + 181, + 246, + 2, + 76, + 220, + 145, + 82, + 188, + 116, + 86, + 65, + 50, + 199, + 34, + 26, + 77, + 136, + 209, + 217, + 5, + 113, + 81, + 247, + 76, + 164, + 113, + 250, + 167, + 200, + 96, + 108, + 9, + 1, + 249, + 42, + 26, + 70, + 128, + 115, + 134, + 51, + 164, + 99, + 223, + 136, + 115, + 221, + 94, + 209, + 192, + 102, + 26, + 24, + 114, + 163, + 123, + 134, + 248, + 144, + 193, + 52, + 134, + 111, + 159, + 144, + 252, + 142, + 109, + 0, + 196, + 163, + 66, + 26, + 45, + 93, + 196, + 12, + 120, + 106, + 108, + 233, + 114, + 1, + 165, + 189, + 36, + 152, + 44, + 154, + 254, + 226, + 4, + 235, + 212, + 74, + 41, + 13, + 247, + 206, + 11, + 39, + 148, + 153, + 183, + 127, + 122, + 74, + 169, + 254, + 52, + 251, + 160, + 104, + 128, + 226, + 94, + 148, + 179, + 51, + 176, + 69, + 221, + 138, + 146, + 99, + 7, + 193, + 243, + 153, + 203, + 219, + 220, + 159, + 207, + 175, + 66, + 17, + 188, + 221, + 10, + 182, + 103, + 163, + 197, + 214, + 231, + 164, + 160, + 175, + 230, + 2, + 115, + 145, + 252, + 227, + 213, + 251, + 24, + 123, + 29, + 57, + 169, + 204, + 46, + 179, + 226, + 116, + 98, + 123, + 238, + 165, + 146, + 247, + 230, + 171, + 59, + 61, + 169, + 184, + 38, + 146, + 47, + 137, + 43, + 236, + 188, + 94, + 36, + 11, + 154, + 10, + 123, + 207, + 216, + 166, + 178, + 118, + 82, + 107, + 192, + 152, + 54, + 248, + 72, + 20, + 148, + 159, + 85, + 170, + 99, + 40, + 177, + 81, + 246, + 132, + 173, + 162, + 225, + 88, + 189, + 136, + 5, + 184, + 183, + 55, + 77, + 13, + 249, + 60, + 221, + 46, + 39, + 254, + 7, + 100, + 119, + 2, + 142, + 136, + 254, + 132, + 161, + 198, + 50, + 230, + 118, + 91, + 151, + 54, + 22, + 149, + 220, + 136, + 141, + 171, + 145, + 53, + 239, + 224, + 214, + 70, + 156, + 161, + 206, + 255, + 101, + 107, + 182, + 51, + 47, + 213, + 21, + 144, + 141, + 116, + 169, + 5, + 115, + 204, + 216, + 31, + 240, + 88, + 139, + 250, + 42, + 1, + 157, + 231, + 70, + 33, + 73, + 104, + 45, + 241, + 142, + 224, + 168, + 61, + 227, + 41, + 234, + 57, + 43, + 170, + 57, + 38, + 139, + 151, + 123, + 71, + 55, + 98, + 238, + 36, + 8, + 91, + 103, + 56, + 134, + 238, + 62, + 120, + 37, + 80, + 193, + 78, + 171, + 104, + 157, + 48, + 145, + 99, + 97, + 212, + 37, + 95, + 220, + 96, + 176, + 125, + 12, + 182, + 161, + 19, + 85, + 26, + 219, + 2, + 90, + 234, + 68, + 21, + 125, + 69, + 140, + 17, + 109, + 111, + 112, + 221, + 14, + 175, + 237, + 232, + 183, + 191, + 30, + 75, + 66, + 4, + 33, + 51, + 92, + 73, + 203, + 246, + 43, + 228, + 132, + 123, + 24, + 165, + 53, + 175, + 204, + 225, + 187, + 197, + 216, + 56, + 17, + 96, + 22, + 176, + 193, + 177, + 201, + 221, + 207, + 201, + 197, + 201, + 97, + 206, + 81, + 149, + 211, + 153, + 81, + 99, + 44, + 153, + 174, + 91, + 181, + 20, + 58, + 160, + 189, + 173, + 108, + 56, + 230, + 213, + 51, + 136, + 3, + 170, + 125, + 199, + 238, + 6, + 105, + 241, + 184, + 249, + 201, + 161, + 119, + 32, + 73, + 31, + 239, + 248, + 4, + 226, + 173, + 119, + 63, + 47, + 10, + 174, + 220, + 194, + 71, + 87, + 99, + 38, + 145, + 123, + 248, + 32, + 237, + 176, + 210, + 185, + 40, + 58, + 176, + 251, + 133, + 247, + 91, + 77, + 162, + 147, + 57, + 129, + 69, + 26, + 55, + 38, + 89, + 3, + 36, + 142, + 161, + 200, + 25, + 72, + 249, + 3, + 116, + 65, + 159, + 152, + 145, + 108, + 27, + 220, + 254, + 21, + 13, + 196, + 180, + 113, + 118, + 166, + 68, + 160, + 26, + 174, + 171, + 15, + 207, + 213, + 253, + 69, + 120, + 176, + 46, + 96, + 185, + 43, + 177, + 126, + 106, + 26, + 39, + 165, + 233, + 0, + 189, + 99, + 38, + 93, + 10, + 166, + 216, + 232, + 175, + 246, + 15, + 236, + 200, + 173, + 72, + 158, + 212, + 163, + 5, + 67, + 217, + 222, + 142, + 140, + 54, + 48, + 205, + 219, + 72, + 236, + 119, + 199, + 252, + 54, + 216, + 52, + 17, + 112, + 160, + 206, + 19, + 176, + 105, + 53, + 129, + 77, + 249, + 90, + 119, + 108, + 167, + 81, + 72, + 152, + 189, + 242, + 84, + 62, + 100, + 241, + 212, + 158, + 74, + 118, + 212, + 74, + 27, + 157, + 24, + 116, + 57, + 106, + 37, + 33, + 70, + 250, + 138, + 231, + 179, + 182, + 216, + 237, + 1, + 107, + 161, + 52, + 178, + 28, + 188, + 194, + 22, + 230, + 112, + 26, + 255, + 29, + 61, + 64, + 110, + 173, + 75, + 58, + 99, + 35, + 250, + 186, + 181, + 174, + 151, + 16, + 161, + 215, + 201, + 43, + 30, + 161, + 154, + 169, + 222, + 45, + 132, + 74, + 181, + 81, + 169, + 133, + 54, + 96, + 81, + 28, + 252, + 155, + 47, + 78, + 47, + 155, + 31, + 140, + 13, + 196, + 163, + 81, + 233, + 239, + 202, + 52, + 30, + 20, + 138, + 191, + 202, + 88, + 212, + 49, + 212, + 194, + 48, + 87, + 124, + 205, + 171, + 116, + 167, + 5, + 75, + 236, + 75, + 44, + 4, + 60, + 244, + 91, + 41, + 111, + 200, + 156, + 197, + 137, + 141, + 200, + 36, + 237, + 1, + 196, + 28, + 62, + 13, + 153, + 158, + 44, + 247, + 41, + 169, + 9, + 214, + 10, + 84, + 162, + 177, + 165, + 51, + 45, + 201, + 131, + 11, + 230, + 60, + 115, + 72, + 40, + 118, + 217, + 62, + 111, + 178, + 221, + 136, + 9, + 177, + 76, + 79, + 202, + 242, + 180, + 134, + 154, + 103, + 197, + 189, + 161, + 76, + 198, + 11, + 42, + 98, + 60, + 62, + 135, + 218, + 141, + 36, + 20, + 94, + 110, + 137, + 205, + 97, + 202, + 125, + 186, + 86, + 211, + 186, + 111, + 10, + 239, + 82, + 78, + 143, + 91, + 191, + 228, + 37, + 127, + 150, + 121, + 255, + 17, + 131, + 216, + 239, + 86, + 243, + 184, + 113, + 207, + 34, + 12, + 149, + 88, + 117, + 227, + 158, + 181, + 57, + 28, + 60, + 189, + 10, + 50, + 115, + 87, + 96, + 91, + 157, + 165, + 141, + 187, + 2, + 111, + 145, + 208, + 211, + 42, + 53, + 148, + 74, + 238, + 109, + 17, + 46, + 90, + 6, + 238, + 211, + 219, + 200, + 59, + 50, + 114, + 223, + 179, + 80, + 215, + 199, + 31, + 239, + 148, + 129, + 208, + 166, + 57, + 174, + 176, + 169, + 106, + 126, + 59, + 46, + 27, + 221, + 59, + 228, + 32, + 86, + 85, + 117, + 30, + 1, + 135, + 33, + 197, + 233, + 18, + 207, + 55, + 51, + 148, + 186, + 131, + 173, + 154, + 3, + 224, + 220, + 34, + 200, + 22, + 54, + 138, + 104, + 84, + 20, + 182, + 132, + 102, + 222, + 79, + 98, + 240, + 78, + 255, + 208, + 36, + 32, + 209, + 70, + 98, + 141, + 103, + 73, + 49, + 174, + 213, + 67, + 93, + 78, + 233, + 115, + 69, + 51, + 227, + 13, + 72, + 218, + 152, + 32, + 25, + 169, + 1, + 155, + 149, + 51, + 206, + 217, + 231, + 97, + 158, + 0, + 210, + 163, + 250, + 195, + 9, + 180, + 117, + 232, + 166, + 224, + 224, + 187, + 141, + 142, + 38, + 76, + 149, + 91, + 92, + 224, + 153, + 90, + 111, + 251, + 84, + 88, + 88, + 78, + 240, + 39, + 107, + 194, + 159, + 190, + 38, + 74, + 80, + 220, + 92, + 8, + 88, + 173, + 51, + 102, + 221, + 43, + 72, + 30, + 73, + 204, + 250, + 139, + 242, + 170, + 167, + 130, + 142, + 29, + 86, + 177, + 69, + 25, + 223, + 6, + 53, + 140, + 61, + 29, + 159, + 189, + 182, + 105, + 3, + 124, + 120, + 12, + 182, + 97, + 171, + 106, + 35, + 135, + 220, + 163, + 229, + 105, + 197, + 149, + 69, + 149, + 174, + 118, + 34, + 209, + 44, + 117, + 108, + 200, + 236, + 190, + 215, + 216, + 73, + 249, + 98, + 115, + 223, + 235, + 216, + 178, + 39, + 119, + 47, + 75, + 175, + 68, + 137, + 180, + 140, + 170, + 46, + 70, + 176, + 70, + 7, + 98, + 212, + 13, + 52, + 150, + 141, + 253, + 21, + 109, + 202, + 141, + 192, + 216, + 26, + 137, + 231, + 104, + 19, + 54, + 186, + 25, + 206, + 151, + 23, + 159, + 238, + 13, + 200, + 220, + 73, + 132, + 25, + 12, + 52, + 52, + 108, + 99, + 243, + 204, + 184, + 140, + 222, + 211, + 237, + 92, + 69, + 19, + 140, + 59, + 231, + 135, + 158, + 206, + 181, + 99, + 165, + 38, + 253, + 146, + 237, + 149, + 233, + 206, + 151, + 174, + 48, + 181, + 99, + 155, + 254, + 194, + 205, + 48, + 214, + 186, + 120, + 182, + 211, + 223, + 55, + 251, + 6, + 21, + 17, + 180, + 111, + 250, + 163, + 144, + 195, + 91, + 181, + 186, + 190, + 233, + 143, + 66, + 152, + 171, + 224, + 104, + 147, + 13, + 194, + 171, + 2, + 65, + 115, + 72, + 184, + 145, + 97, + 193, + 76, + 176, + 36, + 102, + 88, + 92, + 50, + 102, + 185, + 2, + 140, + 165, + 70, + 24, + 167, + 90, + 137, + 244, + 136, + 146, + 22, + 176, + 136, + 200, + 109, + 114, + 184, + 183, + 213, + 2, + 98, + 2, + 143, + 56, + 57, + 238, + 159, + 148, + 78, + 241, + 150, + 230, + 126, + 105, + 63, + 85, + 169, + 86, + 85, + 112, + 221, + 74, + 18, + 161, + 13, + 123, + 122, + 95, + 83, + 220, + 157, + 19, + 254, + 93, + 36, + 194, + 44, + 160, + 94, + 178, + 118, + 163, + 95, + 155, + 76, + 103, + 146, + 96, + 88, + 107, + 94, + 146, + 150, + 94, + 17, + 15, + 21, + 29, + 204, + 182, + 2, + 250, + 74, + 213, + 119, + 178, + 123, + 3, + 81, + 92, + 244, + 60, + 177, + 220, + 127, + 243, + 231, + 247, + 80, + 84, + 81, + 21, + 70, + 11, + 150, + 114, + 167, + 35, + 180, + 59, + 192, + 147, + 138, + 156, + 112, + 132, + 30, + 97, + 116, + 187, + 231, + 86, + 101, + 152, + 106, + 246, + 150, + 23, + 169, + 61, + 3, + 54, + 141, + 169, + 95, + 18, + 207, + 41, + 68, + 73, + 29, + 215, + 228, + 189, + 246, + 55, + 30, + 22, + 109, + 60, + 29, + 194, + 63, + 2, + 93, + 24, + 55, + 144, + 77, + 228, + 19, + 208, + 101, + 119, + 89, + 36, + 37, + 128, + 72, + 33, + 151, + 171, + 54, + 66, + 20, + 32, + 148, + 103, + 65, + 103, + 167, + 194, + 52, + 155, + 186, + 67, + 93, + 250, + 79, + 175, + 57, + 43, + 47, + 142, + 23, + 55, + 26, + 99, + 123, + 109, + 44, + 58, + 98, + 123, + 167, + 222, + 182, + 205, + 195, + 193, + 167, + 53, + 58, + 20, + 123, + 54, + 184, + 140, + 100, + 180, + 112, + 46, + 157, + 74, + 95, + 218, + 180, + 1, + 252, + 118, + 115, + 177, + 60, + 228, + 96, + 174, + 213, + 104, + 255, + 249, + 166, + 20, + 236, + 226, + 96, + 246, + 154, + 206, + 52, + 189, + 15, + 23, + 102, + 179, + 151, + 214, + 237, + 26, + 45, + 137, + 134, + 220, + 146, + 19, + 59, + 19, + 182, + 12, + 84, + 147, + 122, + 100, + 30, + 71, + 159, + 231, + 170, + 207, + 81, + 118, + 144, + 86, + 11, + 19, + 95, + 222, + 225, + 32, + 205, + 227, + 57, + 141, + 33, + 91, + 64, + 35, + 187, + 136, + 168, + 88, + 73, + 134, + 251, + 69, + 248, + 197, + 124, + 118, + 215, + 202, + 198, + 25, + 24, + 59, + 132, + 164, + 243, + 248, + 79, + 104, + 103, + 65, + 74, + 132, + 218, + 234, + 108, + 60, + 124, + 122, + 181, + 194, + 45, + 240, + 53, + 30, + 192, + 236, + 253, + 158, + 186, + 44, + 162, + 237, + 156, + 188, + 223, + 227, + 65, + 82, + 78, + 101, + 77, + 19, + 119, + 35, + 49, + 198, + 241, + 192, + 109, + 128, + 153, + 133, + 153, + 177, + 197, + 243, + 157, + 226, + 72, + 125, + 56, + 91, + 202, + 4, + 35, + 85, + 185, + 209, + 2, + 244, + 40, + 197, + 198, + 18, + 204, + 51, + 67, + 53, + 108, + 128, + 175, + 216, + 101, + 93, + 138, + 220, + 170, + 225, + 150, + 50, + 60, + 248, + 83, + 59, + 69, + 48, + 46, + 72, + 226, + 21, + 58, + 76, + 93, + 26, + 105, + 30, + 217, + 62, + 5, + 215, + 39, + 35, + 60, + 22, + 211, + 187, + 20, + 120, + 199, + 162, + 149, + 42, + 7, + 200, + 173, + 84, + 226, + 196, + 146, + 156, + 171, + 156, + 34, + 50, + 69, + 3, + 159, + 1, + 110, + 74, + 208, + 104, + 86, + 97, + 226, + 137, + 87, + 33, + 218, + 127, + 30, + 49, + 216, + 251, + 66, + 171, + 187, + 126, + 42, + 133, + 203, + 127, + 221, + 115, + 91, + 40, + 214, + 225, + 191, + 177, + 193, + 103, + 91, + 74, + 2, + 202, + 164, + 28, + 155, + 26, + 74, + 225, + 62, + 109, + 123, + 132, + 122, + 205, + 170, + 133, + 143, + 129, + 205, + 216, + 76, + 245, + 10, + 23, + 234, + 253, + 96, + 155, + 251, + 106, + 51, + 222, + 40, + 36, + 95, + 46, + 165, + 43, + 27, + 217, + 22, + 156, + 57, + 107, + 153, + 40, + 238, + 97, + 57, + 216, + 71, + 75, + 169, + 81, + 207, + 153, + 208, + 28, + 214, + 32, + 118, + 132, + 242, + 119, + 223, + 215, + 77, + 187, + 113, + 4, + 104, + 18, + 186, + 127, + 228, + 137, + 197, + 16, + 139, + 1, + 47, + 219, + 120, + 2, + 0, + 225, + 232, + 53, + 201, + 62, + 109, + 234, + 255, + 121, + 179, + 219, + 58, + 215, + 59, + 198, + 213, + 219, + 62, + 97, + 215, + 186, + 169, + 39, + 131, + 208, + 70, + 127, + 237, + 226, + 14, + 34, + 30, + 112, + 172, + 177, + 234, + 39, + 125, + 7, + 207, + 45, + 131, + 206, + 51, + 160, + 107, + 83, + 15, + 99, + 24, + 123, + 175, + 198, + 181, + 201, + 22, + 224, + 194, + 21, + 231, + 93, + 228, + 167, + 117, + 156, + 168, + 254, + 169, + 24, + 59, + 125, + 94, + 253, + 152, + 88, + 169, + 211, + 73, + 217, + 237, + 135, + 198, + 162, + 208, + 109, + 183, + 64, + 118, + 171, + 217, + 42, + 177, + 51, + 166, + 7, + 54, + 210, + 53, + 81, + 156, + 50, + 237, + 41, + 76, + 39, + 240, + 101, + 1, + 172, + 125, + 226, + 25, + 30, + 252, + 70, + 66, + 109, + 46, + 226, + 121, + 230, + 98, + 208, + 216, + 8, + 183, + 120, + 229, + 54, + 130, + 56, + 120, + 122, + 148, + 101, + 247, + 162, + 53, + 145, + 200, + 85, + 164, + 210, + 8, + 115, + 19, + 185, + 138, + 116, + 198, + 238, + 97, + 223, + 194, + 154, + 120, + 251, + 235, + 226, + 9, + 162, + 239, + 107, + 179, + 104, + 46, + 160, + 33, + 157, + 49, + 119, + 31, + 13, + 122, + 170, + 11, + 199, + 99, + 75, + 89, + 171, + 219, + 182, + 39, + 3, + 88, + 35, + 111, + 228, + 22, + 49, + 159, + 72, + 46, + 143, + 3, + 143, + 174, + 69, + 197, + 7, + 185, + 79, + 41, + 175, + 166, + 105, + 213, + 96, + 65, + 96, + 158, + 141, + 237, + 26, + 139, + 58, + 209, + 35, + 206, + 119, + 187, + 215, + 203, + 14, + 83, + 249, + 66, + 64, + 2, + 79, + 3, + 26, + 187, + 113, + 113, + 224, + 69, + 64, + 134, + 97, + 36, + 244, + 203, + 92, + 133, + 182, + 103, + 66, + 239, + 198, + 34, + 135, + 183, + 130, + 48, + 134, + 223, + 152, + 63, + 178, + 69, + 235, + 28, + 132, + 197, + 210, + 184, + 61, + 9, + 42, + 216, + 152, + 33, + 69, + 54, + 71, + 65, + 122, + 173, + 122, + 133, + 124, + 41, + 157, + 157, + 136, + 30, + 251, + 82, + 26, + 178, + 213, + 174, + 237, + 185, + 247, + 40, + 101, + 70, + 194, + 169, + 53, + 152, + 115, + 192, + 68, + 183, + 228, + 235, + 99, + 22, + 121, + 46, + 153, + 196, + 102, + 226, + 169, + 143, + 89, + 70, + 81, + 76, + 17, + 159, + 31, + 19, + 225, + 231, + 115, + 251, + 251, + 158, + 253, + 214, + 5, + 115, + 67, + 40, + 172, + 163, + 234, + 130, + 57, + 196, + 56, + 160, + 254, + 26, + 136, + 251, + 57, + 242, + 117, + 76, + 30, + 34, + 160, + 29, + 155, + 26, + 86, + 233, + 72, + 211, + 11, + 216, + 221, + 33, + 34, + 59, + 55, + 16, + 75, + 160, + 178, + 222, + 221, + 86, + 13, + 1, + 151, + 52, + 166, + 134, + 124, + 14, + 161, + 125, + 253, + 202, + 220, + 67, + 148, + 121, + 187, + 70, + 245, + 8, + 136, + 90, + 11, + 100, + 141, + 35, + 171, + 107, + 196, + 47, + 29, + 116, + 255, + 242, + 250, + 222, + 37, + 226, + 239, + 29, + 163, + 184, + 50, + 108, + 237, + 78, + 151, + 186, + 233, + 162, + 226, + 29, + 155, + 173, + 189, + 8, + 26, + 152, + 203, + 119, + 31, + 107, + 116, + 13, + 242, + 140, + 84, + 147, + 21, + 190, + 141, + 223, + 19, + 48, + 128, + 211, + 49, + 149, + 78, + 150, + 6, + 210, + 112, + 76, + 37, + 174, + 82, + 26, + 233, + 60, + 185, + 184, + 176, + 134, + 46, + 169, + 0, + 227, + 142, + 211, + 176, + 170, + 66, + 45, + 3, + 222, + 40, + 161, + 169, + 87, + 89, + 22, + 116, + 122, + 16, + 107, + 193, + 22, + 143, + 9, + 232, + 83, + 106, + 17, + 12, + 194, + 112, + 136, + 254, + 95, + 79, + 42, + 235, + 200, + 14, + 219, + 104, + 100, + 186, + 121, + 78, + 155, + 40, + 133, + 74, + 70, + 146, + 228, + 250, + 116, + 143, + 170, + 84, + 28, + 160, + 104, + 44, + 43, + 73, + 13, + 230, + 160, + 176, + 109, + 78, + 189, + 98, + 106, + 180, + 35, + 15, + 59, + 224, + 209, + 41, + 207, + 115, + 147, + 153, + 65, + 244, + 213, + 88, + 71, + 180, + 125, + 116, + 24, + 195, + 231, + 85, + 4, + 202, + 135, + 135, + 225, + 178, + 253, + 36, + 204, + 46, + 213, + 99, + 28, + 243, + 158, + 28, + 29, + 146, + 80, + 23, + 87, + 101, + 82, + 41, + 200, + 8, + 167, + 42, + 181, + 89, + 32, + 51, + 187, + 207, + 105, + 39, + 40, + 194, + 11, + 38, + 237, + 112, + 94, + 112, + 169, + 249, + 188, + 198, + 245, + 42, + 186, + 94, + 77, + 5, + 230, + 29, + 218, + 132, + 84, + 185, + 94, + 27, + 4, + 49, + 156, + 124, + 166, + 212, + 144, + 39, + 12, + 153, + 183, + 63, + 184, + 34, + 14, + 201, + 32, + 141, + 98, + 69, + 140, + 12, + 130, + 26, + 246, + 150, + 117, + 223, + 102, + 177, + 21, + 163, + 195, + 153, + 171, + 117, + 218, + 197, + 102, + 252, + 141, + 146, + 223, + 188, + 136, + 0, + 207, + 21, + 58, + 246, + 87, + 167, + 197, + 6, + 194, + 59, + 38, + 209, + 203, + 41, + 234, + 146, + 178, + 34, + 107, + 103, + 107, + 4, + 83, + 185, + 145, + 11, + 32, + 54, + 97, + 145, + 134, + 213, + 84, + 138, + 74, + 21, + 162, + 236, + 70, + 53, + 32, + 109, + 176, + 53, + 86, + 176, + 158, + 144, + 134, + 56, + 226, + 228, + 163, + 98, + 238, + 232, + 233, + 33, + 200, + 0, + 49, + 9, + 133, + 104, + 85, + 51, + 37, + 1, + 141, + 147, + 116, + 114, + 137, + 115, + 134, + 25, + 63, + 72, + 156, + 239, + 129, + 179, + 12, + 124, + 202, + 174, + 90, + 77, + 84, + 224, + 102, + 214, + 138, + 98, + 95, + 18, + 52, + 250, + 255, + 65, + 156, + 225, + 197, + 173, + 76, + 57, + 197, + 165, + 100, + 76, + 208, + 41, + 162, + 71, + 192, + 20, + 125, + 113, + 95, + 236, + 151, + 89, + 207, + 26, + 232, + 136, + 157, + 65, + 171, + 37, + 32, + 232, + 82, + 139, + 29, + 121, + 146, + 59, + 126, + 30, + 225, + 158, + 94, + 133, + 90, + 11, + 57, + 63, + 218, + 234, + 53, + 130, + 79, + 4, + 58, + 144, + 66, + 182, + 1, + 235, + 49, + 191, + 40, + 205, + 33, + 207, + 155, + 242, + 230, + 24, + 48, + 28, + 176, + 108, + 173, + 198, + 220, + 36, + 68, + 1, + 211, + 189, + 194, + 220, + 224, + 175, + 14, + 115, + 163, + 8, + 160, + 135, + 16, + 118, + 234, + 231, + 12, + 104, + 106, + 76, + 231, + 255, + 174, + 32, + 106, + 220, + 195, + 3, + 49, + 27, + 1, + 171, + 45, + 48, + 183, + 198, + 116, + 189, + 23, + 33, + 212, + 228, + 3, + 233, + 229, + 172, + 134, + 54, + 4, + 0, + 221, + 57, + 108, + 196, + 22, + 166, + 223, + 12, + 66, + 61, + 246, + 187, + 19, + 43, + 166, + 192, + 210, + 217, + 72, + 112, + 37, + 143, + 124, + 38, + 11, + 233, + 242, + 95, + 121, + 142, + 126, + 147, + 220, + 205, + 78, + 160, + 232, + 38, + 185, + 227, + 16, + 40, + 250, + 142, + 198, + 232, + 236, + 53, + 253, + 166, + 86, + 207, + 108, + 131, + 57, + 37, + 20, + 155, + 190, + 138, + 184, + 230, + 240, + 139, + 201, + 106, + 244, + 196, + 243, + 4, + 175, + 141, + 155, + 236, + 187, + 38, + 174, + 9, + 154, + 119, + 233, + 141, + 158, + 123, + 66, + 62, + 103, + 10, + 109, + 110, + 94, + 153, + 196, + 117, + 60, + 154, + 197, + 91, + 186, + 96, + 35, + 3, + 201, + 177, + 249, + 68, + 63, + 41, + 181, + 28, + 168, + 99, + 4, + 102, + 1, + 202, + 104, + 204, + 207, + 147, + 141, + 64, + 72, + 241, + 120, + 224, + 69, + 32, + 7, + 34, + 168, + 205, + 70, + 107, + 83, + 69, + 133, + 169, + 22, + 199, + 59, + 127, + 161, + 117, + 255, + 65, + 223, + 156, + 16, + 138, + 242, + 165, + 161, + 166, + 165, + 155, + 4, + 195, + 176, + 217, + 175, + 26, + 53, + 22, + 29, + 231, + 8, + 223, + 41, + 165, + 168, + 26, + 123, + 239, + 29, + 125, + 156, + 76, + 218, + 230, + 111, + 148, + 195, + 61, + 59, + 73, + 223, + 109, + 182, + 76, + 117, + 187, + 202, + 169, + 183, + 249, + 223, + 145, + 93, + 145, + 39, + 21, + 76, + 157, + 116, + 6, + 198, + 112, + 23, + 75, + 40, + 109, + 178, + 211, + 182, + 41, + 181, + 199, + 89, + 125, + 66, + 199, + 31, + 187, + 21, + 96, + 85, + 220, + 28, + 198, + 154, + 26, + 78, + 143, + 243, + 106, + 42, + 5, + 52, + 106, + 36, + 33, + 31, + 125, + 72, + 227, + 102, + 232, + 184, + 15, + 79, + 14, + 185, + 84, + 233, + 59, + 81, + 155, + 137, + 223, + 100, + 226, + 157, + 145, + 48, + 174, + 18, + 103, + 116, + 228, + 178, + 163, + 123, + 44, + 162, + 36, + 67, + 1, + 135, + 206, + 206, + 86, + 127, + 108, + 192, + 181, + 102, + 168, + 17, + 251, + 22, + 240, + 234, + 143, + 65, + 47, + 206, + 225, + 126, + 39, + 164, + 230, + 165, + 157, + 138, + 53, + 34, + 255, + 232, + 181, + 29, + 77, + 11, + 237, + 243, + 24, + 207, + 175, + 221, + 143, + 191, + 181, + 210, + 131, + 228, + 189, + 115, + 90, + 220, + 14, + 54, + 123, + 81, + 220, + 134, + 3, + 12, + 114, + 255, + 247, + 58, + 47, + 228, + 253, + 62, + 218, + 238, + 205, + 76, + 232, + 185, + 154, + 109, + 39, + 197, + 3, + 200, + 56, + 4, + 154, + 206, + 209, + 159, + 220, + 162, + 172, + 72, + 75, + 90, + 176, + 55, + 55, + 102, + 175, + 146, + 23, + 128, + 179, + 103, + 210, + 158, + 206, + 248, + 154, + 19, + 235, + 205, + 245, + 185, + 28, + 2, + 119, + 197, + 139, + 224, + 242, + 206, + 161, + 33, + 106, + 116, + 201, + 104, + 232, + 253, + 6, + 16, + 236, + 18, + 30, + 181, + 198, + 16, + 66, + 118, + 196, + 148, + 71, + 24, + 54, + 126, + 174, + 170, + 106, + 190, + 135, + 110, + 250, + 68, + 200, + 141, + 51, + 31, + 231, + 42, + 145, + 233, + 209, + 98, + 116, + 41, + 231, + 40, + 176, + 228, + 57, + 134, + 161, + 4, + 72, + 184, + 209, + 86, + 213, + 53, + 120, + 140, + 241, + 12, + 254, + 24, + 134, + 74, + 35, + 5, + 107, + 38, + 227, + 27, + 1, + 137, + 26, + 101, + 24, + 46, + 164, + 195, + 45, + 187, + 5, + 115, + 123, + 77, + 126, + 162, + 208, + 132, + 189, + 102, + 35, + 233, + 194, + 165, + 107, + 35, + 38, + 11, + 158, + 155, + 95, + 39, + 23, + 173, + 8, + 22, + 170, + 130, + 108, + 233, + 180, + 96, + 210, + 13, + 58, + 103, + 104, + 193, + 148, + 119, + 215, + 63, + 93, + 128, + 208, + 3, + 2, + 88, + 19, + 1, + 66, + 182, + 128, + 26, + 53, + 250, + 196, + 201, + 54, + 207, + 122, + 10, + 125, + 226, + 200, + 178, + 41, + 75, + 186, + 91, + 101, + 187, + 249, + 207, + 85, + 119, + 107, + 226, + 53, + 27, + 85, + 119, + 172, + 192, + 99, + 135, + 79, + 209, + 27, + 40, + 217, + 177, + 20, + 181, + 102, + 9, + 162, + 211, + 67, + 244, + 184, + 83, + 101, + 56, + 21, + 68, + 52, + 86, + 25, + 190, + 8, + 52, + 53, + 5, + 195, + 221, + 72, + 119, + 251, + 156, + 251, + 116, + 105, + 231, + 125, + 95, + 195, + 88, + 197, + 116, + 186, + 216, + 43, + 174, + 20, + 48, + 95, + 141, + 14, + 169, + 79, + 183, + 177, + 236, + 17, + 212, + 38, + 95, + 154, + 247, + 244, + 170, + 32, + 50, + 98, + 216, + 186, + 59, + 231, + 75, + 228, + 81, + 85, + 168, + 113, + 164, + 83, + 182, + 244, + 157, + 143, + 236, + 211, + 15, + 50, + 112, + 162, + 214, + 170, + 79, + 6, + 53, + 214, + 144, + 37, + 95, + 132, + 218, + 150, + 71, + 186, + 235, + 228, + 19, + 11, + 174, + 60, + 187, + 172, + 212, + 226, + 152, + 193, + 160, + 189, + 66, + 218, + 64, + 49, + 169, + 141, + 0, + 71, + 18, + 158, + 241, + 196, + 44, + 234, + 244, + 47, + 109, + 167, + 168, + 197, + 148, + 135, + 42, + 210, + 198, + 78, + 82, + 179, + 80, + 56, + 85, + 112, + 79, + 47, + 21, + 235, + 72, + 11, + 144, + 9, + 67, + 22, + 88, + 53, + 53, + 14, + 221, + 0, + 7, + 67, + 172, + 181, + 59, + 136, + 76, + 24, + 132, + 22, + 181, + 218, + 172, + 47, + 144, + 189, + 41, + 220, + 152, + 229, + 120, + 37, + 105, + 246, + 33, + 68, + 183, + 137, + 100, + 107, + 28, + 44, + 184, + 179, + 149, + 224, + 8, + 41, + 18, + 133, + 80, + 195, + 94, + 222, + 35, + 161, + 131, + 180, + 94, + 215, + 245, + 145, + 190, + 28, + 163, + 181, + 176, + 49, + 43, + 64, + 180, + 69, + 214, + 47, + 27, + 44, + 87, + 145, + 247, + 157, + 150, + 16, + 216, + 88, + 161, + 172, + 226, + 60, + 240, + 163, + 202, + 51, + 99, + 64, + 187, + 121, + 100, + 182, + 97, + 147, + 11, + 72, + 57, + 180, + 193, + 120, + 40, + 85, + 238, + 213, + 83, + 235, + 216, + 47, + 104, + 86, + 93, + 233, + 149, + 36, + 100, + 147, + 86, + 75, + 152, + 13, + 186, + 61, + 45, + 230, + 164, + 35, + 200, + 154, + 219, + 183, + 193, + 201, + 84, + 195, + 120, + 64, + 52, + 43, + 122, + 98, + 177, + 52, + 171, + 197, + 216, + 109, + 13, + 109, + 133, + 197, + 210, + 215, + 167, + 16, + 185, + 183, + 213, + 108, + 45, + 117, + 121, + 77, + 207, + 22, + 225, + 114, + 60, + 237, + 21, + 136, + 232, + 225, + 109, + 161, + 43, + 252, + 147, + 34, + 27, + 201, + 195, + 179, + 105, + 53, + 210, + 122, + 133, + 6, + 208, + 222, + 177, + 127, + 119, + 246, + 244, + 167, + 241, + 90, + 199, + 134, + 223, + 69, + 188, + 80, + 39, + 224, + 108, + 28, + 235, + 184, + 159, + 20, + 49, + 197, + 254, + 93, + 167, + 185, + 114, + 207, + 232, + 154, + 199, + 92, + 134, + 27, + 188, + 215, + 104, + 145, + 40, + 55, + 121, + 184, + 197, + 62, + 17, + 173, + 232, + 182, + 14, + 1, + 162, + 216, + 155, + 160, + 8, + 4, + 13, + 3, + 218, + 82, + 103, + 148, + 222, + 139, + 230, + 106, + 56, + 144, + 199, + 130, + 78, + 107, + 172, + 178, + 220, + 191, + 106, + 201, + 144, + 240, + 156, + 178, + 165, + 136, + 159, + 255, + 252, + 129, + 8, + 151, + 125, + 79, + 166, + 222, + 63, + 135, + 10, + 147, + 215, + 225, + 33, + 43, + 42, + 176, + 185, + 235, + 242, + 191, + 155, + 99, + 220, + 76, + 103, + 223, + 190, + 47, + 17, + 180, + 180, + 182, + 63, + 82, + 155, + 142, + 208, + 37, + 253, + 226, + 232, + 210, + 183, + 107, + 94, + 195, + 6, + 147, + 157, + 241, + 220, + 184, + 13, + 193, + 26, + 59, + 94, + 40, + 242, + 174, + 48, + 191, + 16, + 89, + 6, + 110, + 111, + 212, + 181, + 235, + 189, + 105, + 220, + 28, + 245, + 187, + 120, + 82, + 19, + 166, + 95, + 6, + 108, + 210, + 95, + 182, + 90, + 153, + 186, + 8, + 206, + 97, + 253, + 48, + 174, + 185, + 170, + 171, + 51, + 199, + 245, + 49, + 246, + 93, + 60, + 87, + 147, + 209, + 75, + 76, + 124, + 80, + 54, + 200, + 232, + 204, + 44, + 70, + 101, + 144, + 165, + 26, + 34, + 102, + 105, + 104, + 113, + 142, + 218, + 181, + 3, + 41, + 62, + 180, + 220, + 141, + 14, + 139, + 232, + 85, + 205, + 194, + 56, + 154, + 235, + 235, + 3, + 41, + 2, + 3, + 173, + 211, + 208, + 27, + 13, + 198, + 30, + 103, + 105, + 132, + 191, + 181, + 99, + 58, + 141, + 182, + 93, + 121, + 1, + 82, + 25, + 97, + 22, + 35, + 94, + 35, + 86, + 221, + 40, + 26, + 214, + 72, + 16, + 117, + 145, + 28, + 83, + 28, + 182, + 215, + 214, + 166, + 61, + 84, + 28, + 159, + 79, + 242, + 187, + 42, + 17, + 30, + 2, + 56, + 103, + 35, + 74, + 204, + 94, + 245, + 178, + 133, + 217, + 81, + 231, + 70, + 214, + 85, + 40, + 2, + 221, + 238, + 163, + 113, + 202, + 194, + 172, + 110, + 247, + 17, + 219, + 115, + 127, + 125, + 40, + 98, + 110, + 96, + 180, + 16, + 56, + 168, + 171, + 225, + 120, + 143, + 56, + 233, + 36, + 203, + 124, + 170, + 69, + 217, + 217, + 246, + 58, + 162, + 145, + 65, + 181, + 25, + 214, + 140, + 233, + 219, + 23, + 222, + 206, + 199, + 219, + 81, + 132, + 62, + 22, + 240, + 238, + 244, + 255, + 18, + 242, + 132, + 223, + 88, + 166, + 205, + 167, + 158, + 189, + 167, + 109, + 90, + 122, + 113, + 222, + 118, + 83, + 59, + 61, + 197, + 37, + 110, + 170, + 222, + 24, + 97, + 34, + 235, + 230, + 193, + 17, + 82, + 59, + 158, + 202, + 179, + 142, + 113, + 138, + 229, + 171, + 94, + 103, + 167, + 61, + 16, + 24, + 71, + 248, + 141, + 199, + 104, + 87, + 81, + 84, + 69, + 10, + 107, + 114, + 167, + 132, + 140, + 54, + 24, + 199, + 81, + 133, + 247, + 250, + 114, + 93, + 124, + 129, + 160, + 218, + 43, + 48, + 87, + 221, + 128, + 115, + 135, + 10, + 206, + 47, + 31, + 212, + 246, + 235, + 127, + 105, + 195, + 228, + 150, + 208, + 183, + 59, + 187, + 228, + 223, + 115, + 141, + 94, + 111, + 150, + 124, + 66, + 248, + 185, + 133, + 55, + 218, + 58, + 243, + 224, + 158, + 77, + 160, + 204, + 183, + 99, + 104, + 241, + 126, + 113, + 186, + 220, + 146, + 41, + 26, + 23, + 81, + 49, + 183, + 22, + 137, + 13, + 83, + 191, + 186, + 21, + 206, + 50, + 23, + 184, + 52, + 210, + 169, + 205, + 195, + 86, + 120, + 135, + 188, + 210, + 239, + 106, + 229, + 65, + 18, + 152, + 130, + 241, + 40, + 168, + 234, + 205, + 109, + 224, + 199, + 22, + 163, + 245, + 175, + 202, + 113, + 147, + 13, + 182, + 103, + 227, + 134, + 235, + 96, + 205, + 158, + 182, + 98, + 29, + 208, + 247, + 179, + 116, + 184, + 4, + 110, + 45, + 9, + 37, + 49, + 117, + 9, + 156, + 73, + 124, + 47, + 190, + 250, + 210, + 65, + 76, + 128, + 54, + 86, + 167, + 56, + 110, + 2, + 41, + 197, + 140, + 187, + 47, + 181, + 118, + 92, + 225, + 242, + 55, + 135, + 184, + 45, + 131, + 137, + 163, + 17, + 239, + 32, + 71, + 214, + 141, + 234, + 22, + 90, + 29, + 110, + 56, + 131, + 221, + 24, + 160, + 113, + 214, + 206, + 99, + 193, + 230, + 21, + 46, + 176, + 223, + 143, + 27, + 14, + 171, + 79, + 51, + 185, + 49, + 111, + 154, + 117, + 130, + 225, + 19, + 108, + 220, + 93, + 34, + 248, + 94, + 129, + 247, + 34, + 253, + 150, + 137, + 247, + 195, + 157, + 79, + 137, + 153, + 155, + 82, + 198, + 79, + 73, + 246, + 166, + 95, + 129, + 66, + 175, + 120, + 90, + 215, + 94, + 21, + 215, + 111, + 217, + 220, + 157, + 38, + 57, + 60, + 96, + 139, + 63, + 140, + 111, + 19, + 176, + 27, + 140, + 229, + 69, + 150, + 203, + 13, + 27, + 177, + 108, + 81, + 71, + 25, + 52, + 198, + 178, + 223, + 230, + 196, + 30, + 119, + 119, + 19, + 214, + 150, + 112, + 157, + 172, + 226, + 59, + 3, + 108, + 206, + 88, + 42, + 153, + 15, + 98, + 211, + 165, + 55, + 131, + 179, + 106, + 186, + 162, + 49, + 97, + 141, + 24, + 233, + 168, + 250, + 22, + 121, + 116, + 235, + 138, + 29, + 166, + 210, + 147, + 146, + 38, + 46, + 197, + 19, + 215, + 162, + 99, + 172, + 101, + 56, + 119, + 46, + 20, + 126, + 22, + 175, + 142, + 138, + 115, + 231, + 194, + 177, + 95, + 126, + 82, + 187, + 236, + 172, + 180, + 103, + 200, + 35, + 127, + 135, + 179, + 210, + 180, + 144, + 211, + 245, + 137, + 14, + 123, + 250, + 141, + 107, + 0, + 201, + 8, + 125, + 114, + 219, + 20, + 96, + 121, + 31, + 248, + 68, + 203, + 240, + 249, + 146, + 242, + 34, + 54, + 136, + 32, + 12, + 147, + 229, + 99, + 141, + 35, + 128, + 135, + 61, + 182, + 96, + 200, + 25, + 194, + 179, + 186, + 252, + 147, + 78, + 181, + 9, + 133, + 178, + 60, + 45, + 84, + 245, + 216, + 254, + 226, + 92, + 181, + 151, + 229, + 61, + 21, + 201, + 85, + 19, + 252, + 86, + 53, + 14, + 195, + 124, + 159, + 89, + 115, + 141, + 111, + 178, + 21, + 196, + 49, + 128, + 112, + 204, + 198, + 40, + 7, + 116, + 42, + 164, + 209, + 140, + 157, + 82, + 190, + 43, + 32, + 73, + 38, + 76, + 25, + 97, + 9, + 81, + 5, + 92, + 6, + 44, + 164, + 25, + 18, + 173, + 94, + 134, + 35, + 45, + 4, + 219, + 26, + 178, + 52, + 139, + 167, + 181, + 20, + 246, + 92, + 242, + 157, + 195, + 72, + 68, + 94, + 99, + 133, + 161, + 62, + 213, + 196, + 51, + 1, + 19, + 13, + 43, + 246, + 175, + 190, + 116, + 120, + 20, + 26, + 174, + 221, + 232, + 101, + 225, + 81, + 104, + 164, + 223, + 123, + 50, + 49, + 143, + 1, + 115, + 236, + 70, + 191, + 60, + 167, + 225, + 76, + 11, + 175, + 219, + 203, + 48, + 36, + 82, + 176, + 41, + 141, + 141, + 177, + 59, + 1, + 109, + 158, + 61, + 238, + 177, + 223, + 104, + 52, + 49, + 47, + 129, + 37, + 212, + 73, + 95, + 89, + 6, + 134, + 66, + 161, + 52, + 46, + 115, + 66, + 73, + 85, + 46, + 169, + 183, + 83, + 173, + 124, + 30, + 14, + 94, + 205, + 70, + 94, + 149, + 71, + 140, + 13, + 178, + 144, + 87, + 149, + 222, + 242, + 12, + 28, + 44, + 142, + 177, + 153, + 157, + 33, + 219, + 216, + 42, + 137, + 183, + 11, + 75, + 71, + 57, + 6, + 116, + 92, + 2, + 73, + 243, + 5, + 160, + 149, + 76, + 231, + 154, + 3, + 227, + 78, + 144, + 84, + 140, + 97, + 15, + 13, + 57, + 201, + 231, + 254, + 101, + 197, + 68, + 176, + 65, + 176, + 123, + 195, + 179, + 60, + 175, + 94, + 99, + 167, + 234, + 251, + 22, + 110, + 108, + 185, + 192, + 11, + 189, + 199, + 175, + 108, + 224, + 169, + 112, + 237, + 94, + 58, + 244, + 99, + 252, + 39, + 138, + 113, + 80, + 158, + 220, + 187, + 164, + 113, + 242, + 228, + 112, + 138, + 72, + 220, + 191, + 60, + 10, + 183, + 239, + 105, + 90, + 15, + 51, + 133, + 123, + 60, + 106, + 85, + 13, + 115, + 72, + 37, + 236, + 240, + 218, + 236, + 163, + 83, + 119, + 154, + 130, + 70, + 160, + 183, + 101, + 230, + 9, + 115, + 77, + 113, + 68, + 235, + 200, + 87, + 218, + 113, + 43, + 93, + 76, + 114, + 132, + 139, + 88, + 19, + 46, + 242, + 42, + 45, + 9, + 185, + 2, + 127, + 80, + 171, + 53, + 39, + 216, + 34, + 140, + 69, + 253, + 167, + 186, + 144, + 226, + 174, + 231, + 100, + 43, + 142, + 29, + 154, + 171, + 235, + 31, + 200, + 86, + 14, + 157, + 195, + 138, + 32, + 166, + 128, + 186, + 28, + 186, + 17, + 104, + 117, + 53, + 216, + 230, + 80, + 137, + 159, + 226, + 255, + 79, + 12, + 173, + 10, + 36, + 157, + 185, + 99, + 11, + 188, + 178, + 16, + 139, + 5, + 103, + 40, + 72, + 43, + 128, + 50, + 173, + 172, + 94, + 244, + 35, + 34, + 195, + 198, + 88, + 85, + 116, + 118, + 245, + 24, + 35, + 180, + 163, + 120, + 102, + 14, + 212, + 150, + 219, + 230, + 116, + 161, + 49, + 58, + 61, + 49, + 208, + 165, + 181, + 190, + 42, + 60, + 181, + 117, + 189, + 228, + 136, + 159, + 35, + 231, + 53, + 63, + 33, + 117, + 151, + 74, + 226, + 78, + 87, + 109, + 117, + 77, + 69, + 226, + 158, + 42, + 127, + 57, + 197, + 64, + 158, + 184, + 26, + 31, + 3, + 94, + 11, + 118, + 175, + 125, + 146, + 161, + 59, + 60, + 135, + 238, + 67, + 105, + 28, + 99, + 106, + 224, + 85, + 213, + 157, + 21, + 196, + 96, + 115, + 117, + 110, + 125, + 30, + 23, + 36, + 20, + 234, + 213, + 94, + 245, + 242, + 18, + 11, + 160, + 16, + 54, + 106, + 230, + 216, + 185, + 156, + 18, + 130, + 190, + 215, + 204, + 135, + 46, + 217, + 184, + 94, + 35, + 138, + 100, + 77, + 193, + 251, + 205, + 111, + 201, + 220, + 222, + 104, + 52, + 82, + 86, + 105, + 123, + 113, + 69, + 225, + 32, + 56, + 245, + 196, + 76, + 197, + 83, + 124, + 225, + 131, + 43, + 49, + 234, + 185, + 7, + 200, + 19, + 204, + 45, + 115, + 20, + 56, + 174, + 199, + 9, + 134, + 53, + 106, + 151, + 249, + 22, + 221, + 163, + 97, + 215, + 150, + 75, + 55, + 107, + 91, + 62, + 219, + 2, + 91, + 218, + 248, + 118, + 185, + 241, + 244, + 150, + 21, + 195, + 163, + 215, + 114, + 150, + 82, + 64, + 165, + 193, + 244, + 132, + 24, + 22, + 74, + 163, + 113, + 136, + 208, + 130, + 101, + 30, + 215, + 243, + 100, + 95, + 204, + 196, + 48, + 215, + 252, + 129, + 107, + 16, + 160, + 14, + 208, + 205, + 161, + 221, + 100, + 149, + 130, + 228, + 255, + 150, + 134, + 248, + 82, + 70, + 95, + 121, + 149, + 81, + 135, + 44, + 133, + 193, + 212, + 232, + 239, + 238, + 104, + 154, + 171, + 186, + 194, + 34, + 239, + 215, + 83, + 5, + 30, + 181, + 186, + 217, + 59, + 195, + 200, + 108, + 54, + 34, + 161, + 138, + 2, + 91, + 45, + 172, + 31, + 186, + 89, + 57, + 228, + 234, + 135, + 216, + 100, + 173, + 42, + 86, + 155, + 192, + 106, + 88, + 85, + 146, + 6, + 228, + 198, + 227, + 6, + 120, + 195, + 182, + 86, + 85, + 161, + 10, + 184, + 196, + 134, + 206, + 150, + 82, + 73, + 192, + 182, + 108, + 198, + 82, + 6, + 225, + 6, + 218, + 238, + 43, + 185, + 213, + 182, + 91, + 25, + 132, + 243, + 138, + 116, + 2, + 85, + 163, + 55, + 206, + 155, + 92, + 147, + 27, + 115, + 188, + 35, + 4, + 49, + 101, + 227, + 212, + 154, + 243, + 9, + 60, + 136, + 110, + 25, + 59, + 103, + 184, + 223, + 86, + 255, + 250, + 113, + 102, + 67, + 180, + 187, + 248, + 80, + 105, + 183, + 116, + 14, + 118, + 164, + 156, + 164, + 172, + 141, + 42, + 78, + 140, + 125, + 18, + 74, + 218, + 24, + 102, + 244, + 86, + 16, + 221, + 249, + 5, + 170, + 69, + 189, + 56, + 154, + 54, + 215, + 110, + 172, + 83, + 39, + 193, + 226, + 189, + 227, + 74, + 239, + 53, + 185, + 83, + 142, + 166, + 173, + 65, + 157, + 94, + 214, + 3, + 68, + 40, + 12, + 196, + 57, + 119, + 131, + 46, + 18, + 130, + 80, + 156, + 16, + 212, + 169, + 16, + 113, + 59, + 164, + 61, + 151, + 198, + 62, + 88, + 205, + 110, + 208, + 140, + 128, + 123, + 116, + 110, + 238, + 200, + 10, + 52, + 41, + 182, + 43, + 77, + 199, + 43, + 197, + 195, + 87, + 4, + 157, + 78, + 32, + 109, + 197, + 206, + 92, + 67, + 114, + 6, + 163, + 212, + 144, + 191, + 233, + 70, + 158, + 56, + 58, + 159, + 29, + 103, + 39, + 111, + 142, + 93, + 29, + 79, + 185, + 195, + 205, + 198, + 97, + 123, + 1, + 46, + 226, + 70, + 101, + 221, + 64, + 32, + 145, + 208, + 39, + 86, + 79, + 135, + 61, + 53, + 35, + 135, + 27, + 11, + 109, + 117, + 106, + 47, + 136, + 12, + 182, + 204, + 80, + 106, + 252, + 198, + 92, + 46, + 91, + 238, + 138, + 131, + 57, + 37, + 208, + 185, + 27, + 125, + 86, + 72, + 157, + 15, + 138, + 70, + 69, + 26, + 246, + 99, + 119, + 150, + 207, + 240, + 107, + 116, + 189, + 77, + 206, + 66, + 223, + 125, + 139, + 32, + 237, + 9, + 170, + 20, + 86, + 220, + 199, + 236, + 155, + 34, + 212, + 133, + 19, + 54, + 197, + 220, + 234, + 42, + 237, + 108, + 192, + 222, + 59, + 68, + 152, + 11, + 18, + 60, + 57, + 196, + 104, + 115, + 127, + 229, + 154, + 104, + 111, + 14, + 16, + 245, + 76, + 233, + 62, + 44, + 80, + 110, + 254, + 230, + 248, + 245, + 242, + 137, + 92, + 137, + 104, + 187, + 51, + 236, + 192, + 149, + 136, + 123, + 141, + 80, + 189, + 159, + 147, + 224, + 142, + 35, + 181, + 138, + 162, + 19, + 116, + 225, + 86, + 39, + 136, + 228, + 1, + 144, + 178, + 103, + 207, + 45, + 124, + 149, + 19, + 182, + 44, + 152, + 140, + 163, + 87, + 188, + 184, + 6, + 135, + 78, + 133, + 79, + 150, + 175, + 99, + 182, + 132, + 129, + 127, + 103, + 39, + 14, + 72, + 48, + 214, + 162, + 67, + 241, + 98, + 137, + 71, + 33, + 27, + 97, + 162, + 96, + 167, + 45, + 183, + 194, + 180, + 248, + 249, + 203, + 253, + 60, + 79, + 3, + 26, + 91, + 103, + 42, + 30, + 108, + 167, + 164, + 212, + 27, + 108, + 167, + 123, + 133, + 65, + 17, + 151, + 54, + 154, + 6, + 207, + 170, + 57, + 192, + 148, + 190, + 128, + 204, + 111, + 232, + 138, + 134, + 103, + 215, + 68, + 99, + 231, + 18, + 176, + 183, + 73, + 39, + 7, + 195, + 254, + 154, + 247, + 187, + 128, + 46, + 241, + 35, + 253, + 253, + 201, + 191, + 9, + 131, + 77, + 242, + 160, + 183, + 101, + 120, + 2, + 131, + 209, + 232, + 130, + 193, + 158, + 68, + 206, + 159, + 220, + 176, + 98, + 61, + 10, + 204, + 188, + 103, + 103, + 224, + 7, + 200, + 80, + 231, + 199, + 62, + 67, + 167, + 79, + 212, + 166, + 167, + 15, + 195, + 6, + 153, + 91, + 26, + 67, + 168, + 61, + 244, + 77, + 48, + 14, + 2, + 104, + 231, + 185, + 164, + 36, + 137, + 243, + 15, + 78, + 113, + 46, + 115, + 148, + 99, + 117, + 130, + 52, + 131, + 28, + 229, + 136, + 5, + 7, + 36, + 9, + 147, + 62, + 189, + 114, + 53, + 198, + 243, + 205, + 108, + 138, + 149, + 27, + 41, + 207, + 120, + 99, + 143, + 173, + 56, + 232, + 252, + 81, + 228, + 113, + 77, + 21, + 217, + 27, + 82, + 136, + 186, + 96, + 169, + 80, + 163, + 206, + 3, + 39, + 130, + 209, + 164, + 112, + 110, + 252, + 198, + 171, + 125, + 158, + 150, + 247, + 34, + 62, + 156, + 219, + 67, + 237, + 198, + 212, + 88, + 26, + 19, + 182, + 209, + 62, + 202, + 214, + 107, + 188, + 60, + 69, + 96, + 137, + 55, + 168, + 141, + 198, + 186, + 152, + 132, + 97, + 42, + 133, + 162, + 177, + 156, + 4, + 89, + 187, + 133, + 170, + 48, + 148, + 26, + 187, + 80, + 114, + 11, + 81, + 138, + 205, + 84, + 142, + 41, + 93, + 167, + 192, + 195, + 139, + 28, + 195, + 105, + 171, + 147, + 83, + 26, + 135, + 62, + 180, + 55, + 152, + 26, + 63, + 173, + 163, + 31, + 84, + 45, + 111, + 215, + 209, + 215, + 117, + 130, + 69, + 4, + 131, + 13, + 80, + 164, + 113, + 220, + 203, + 66, + 64, + 56, + 67, + 44, + 238, + 89, + 194, + 205, + 241, + 159, + 218, + 160, + 18, + 235, + 211, + 170, + 182, + 87, + 12, + 19, + 87, + 37, + 166, + 169, + 9, + 183, + 231, + 105, + 64, + 139, + 195, + 26, + 171, + 42, + 196, + 36, + 96, + 81, + 106, + 49, + 221, + 62, + 39, + 104, + 94, + 232, + 136, + 174, + 97, + 86, + 189, + 22, + 173, + 110, + 118, + 181, + 227, + 96, + 222, + 170, + 88, + 82, + 97, + 120, + 68, + 207, + 81, + 220, + 196, + 199, + 203, + 105, + 110, + 24, + 76, + 190, + 105, + 94, + 228, + 223, + 100, + 55, + 236, + 24, + 14, + 218, + 160, + 173, + 233, + 165, + 178, + 24, + 38, + 89, + 200, + 203, + 73, + 149, + 243, + 233, + 73, + 165, + 212, + 150, + 215, + 196, + 192, + 41, + 34, + 224, + 152, + 141, + 54, + 10, + 138, + 10, + 184, + 44, + 156, + 161, + 165, + 22, + 87, + 15, + 85, + 37, + 217, + 115, + 83, + 172, + 243, + 32, + 177, + 98, + 135, + 169, + 19, + 22, + 117, + 34, + 161, + 142, + 3, + 173, + 100, + 160, + 250, + 174, + 72, + 146, + 187, + 29, + 183, + 8, + 187, + 153, + 125, + 148, + 133, + 181, + 35, + 84, + 191, + 121, + 55, + 229, + 203, + 196, + 125, + 245, + 224, + 51, + 148, + 111, + 191, + 175, + 16, + 113, + 80, + 101, + 121, + 69, + 125, + 226, + 80, + 53, + 149, + 193, + 116, + 232, + 62, + 130, + 162, + 176, + 9, + 138, + 122, + 35, + 255, + 205, + 218, + 184, + 90, + 217, + 142, + 88, + 235, + 92, + 68, + 97, + 18, + 90, + 163, + 190, + 71, + 60, + 199, + 132, + 45, + 52, + 221, + 121, + 216, + 175, + 238, + 228, + 223, + 185, + 239, + 79, + 202, + 255, + 249, + 169, + 55, + 22, + 206, + 231, + 221, + 198, + 141, + 156, + 203, + 61, + 96, + 209, + 112, + 200, + 187, + 75, + 6, + 186, + 5, + 214, + 38, + 14, + 219, + 170, + 226, + 49, + 154, + 91, + 157, + 112, + 40, + 74, + 204, + 152, + 23, + 231, + 97, + 219, + 159, + 54, + 160, + 27, + 64, + 53, + 72, + 222, + 219, + 120, + 33, + 127, + 212, + 121, + 54, + 194, + 80, + 50, + 64, + 144, + 227, + 141, + 58, + 123, + 100, + 207, + 149, + 103, + 233, + 10, + 217, + 76, + 71, + 68, + 79, + 144, + 233, + 229, + 184, + 121, + 130, + 12, + 45, + 13, + 231, + 92, + 111, + 219, + 133, + 126, + 217, + 113, + 73, + 137, + 222, + 79, + 184, + 96, + 18, + 133, + 170, + 243, + 42, + 11, + 8, + 97, + 110, + 9, + 77, + 78, + 11, + 160, + 213, + 249, + 117, + 72, + 29, + 21, + 106, + 128, + 144, + 79, + 211, + 134, + 116, + 2, + 66, + 211, + 137, + 87, + 243, + 140, + 150, + 112, + 205, + 46, + 251, + 225, + 9, + 170, + 105, + 59, + 205, + 83, + 195, + 148, + 27, + 65, + 204, + 205, + 30, + 132, + 66, + 225, + 218, + 191, + 179, + 137, + 104, + 10, + 116, + 165, + 102, + 112, + 89, + 197, + 127, + 197, + 5, + 247, + 146, + 61, + 110, + 209, + 66, + 203, + 179, + 190, + 169, + 51, + 75, + 111, + 14, + 112, + 44, + 47, + 12, + 244, + 72, + 155, + 149, + 26, + 207, + 104, + 13, + 240, + 6, + 171, + 211, + 200, + 74, + 192, + 84, + 67, + 151, + 180, + 75, + 150, + 166, + 153, + 29, + 206, + 146, + 65, + 253, + 210, + 206, + 116, + 61, + 63, + 197, + 97, + 143, + 105, + 14, + 53, + 54, + 141, + 43, + 58, + 199, + 108, + 92, + 171, + 220, + 78, + 27, + 151, + 197, + 107, + 85, + 10, + 65, + 188, + 109, + 203, + 118, + 122, + 8, + 182, + 220, + 120, + 180, + 53, + 63, + 30, + 33, + 118, + 188, + 215, + 182, + 71, + 48, + 125, + 212, + 190, + 8, + 19, + 43, + 120, + 116, + 62, + 107, + 213, + 107, + 16, + 170, + 78, + 134, + 33, + 51, + 172, + 118, + 218, + 36, + 76, + 149, + 89, + 95, + 86, + 23, + 244, + 58, + 182, + 223, + 76, + 219, + 198, + 114, + 47, + 216, + 92, + 12, + 117, + 198, + 210, + 3, + 245, + 83, + 252, + 252, + 251, + 106, + 125, + 144, + 183, + 172, + 40, + 11, + 79, + 213, + 90, + 211, + 8, + 182, + 48, + 207, + 35, + 108, + 128, + 190, + 90, + 62, + 217, + 171, + 234, + 97, + 135, + 178, + 213, + 164, + 177, + 161, + 114, + 40, + 155, + 135, + 132, + 91, + 222, + 185, + 212, + 76, + 158, + 152, + 2, + 95, + 167, + 134, + 212, + 214, + 131, + 181, + 97, + 176, + 236, + 70, + 172, + 223, + 216, + 247, + 172, + 45, + 187, + 64, + 103, + 58, + 109, + 241, + 61, + 246, + 124, + 99, + 167, + 179, + 243, + 96, + 16, + 75, + 226, + 223, + 207, + 241, + 196, + 154, + 22, + 135, + 22, + 32, + 98, + 103, + 206, + 213, + 77, + 91, + 229, + 133, + 95, + 88, + 100, + 214, + 24, + 51, + 236, + 204, + 48, + 209, + 206, + 139, + 47, + 78, + 13, + 139, + 29, + 201, + 107, + 171, + 41, + 138, + 175, + 247, + 166, + 97, + 113, + 93, + 21, + 101, + 33, + 168, + 14, + 9, + 147, + 226, + 243, + 94, + 245, + 248, + 253, + 239, + 37, + 63, + 226, + 30, + 48, + 103, + 156, + 247, + 94, + 188, + 14, + 142, + 216, + 121, + 66, + 250, + 25, + 215, + 167, + 70, + 66, + 68, + 6, + 153, + 43, + 28, + 156, + 21, + 155, + 88, + 92, + 160, + 28, + 7, + 137, + 60, + 209, + 95, + 31, + 140, + 13, + 242, + 109, + 241, + 9, + 123, + 179, + 66, + 114, + 193, + 213, + 76, + 114, + 25, + 182, + 99, + 221, + 103, + 206, + 92, + 79, + 65, + 141, + 221, + 233, + 55, + 71, + 91, + 96, + 147, + 53, + 90, + 115, + 59, + 59, + 197, + 127, + 119, + 125, + 77, + 141, + 212, + 118, + 207, + 85, + 237, + 3, + 238, + 152, + 216, + 61, + 87, + 67, + 19, + 194, + 212, + 161, + 56, + 119, + 152, + 57, + 118, + 40, + 46, + 114, + 60, + 212, + 64, + 214, + 108, + 180, + 159, + 114, + 163, + 37, + 21, + 139, + 173, + 4, + 245, + 16, + 101, + 42, + 146, + 113, + 188, + 58, + 39, + 110, + 220, + 134, + 216, + 38, + 236, + 173, + 97, + 146, + 250, + 55, + 96, + 63, + 253, + 165, + 9, + 106, + 55, + 247, + 237, + 221, + 42, + 183, + 242, + 78, + 110, + 238, + 176, + 156, + 73, + 103, + 207, + 15, + 100, + 197, + 75, + 250, + 192, + 146, + 143, + 181, + 76, + 5, + 165, + 29, + 138, + 80, + 170, + 49, + 220, + 27, + 230, + 136, + 235, + 220, + 220, + 34, + 230, + 28, + 180, + 190, + 54, + 15, + 185, + 15, + 252, + 203, + 2, + 2, + 107, + 110, + 51, + 62, + 13, + 209, + 217, + 104, + 76, + 170, + 132, + 176, + 40, + 246, + 11, + 74, + 129, + 230, + 108, + 145, + 201, + 236, + 173, + 223, + 198, + 154, + 142, + 137, + 40, + 6, + 50, + 164, + 113, + 98, + 246, + 57, + 57, + 227, + 13, + 110, + 192, + 185, + 43, + 75, + 178, + 178, + 156, + 19, + 227, + 139, + 100, + 22, + 63, + 181, + 117, + 155, + 160, + 157, + 144, + 51, + 22, + 18, + 12, + 246, + 78, + 227, + 4, + 128, + 225, + 38, + 0, + 38, + 103, + 199, + 252, + 211, + 248, + 207, + 152, + 105, + 46, + 250, + 118, + 120, + 229, + 158, + 115, + 201, + 155, + 194, + 45, + 172, + 202, + 32, + 3, + 70, + 196, + 88, + 73, + 82, + 115, + 167, + 86, + 96, + 99, + 108, + 116, + 194, + 115, + 229, + 145, + 42, + 242, + 89, + 101, + 125, + 206, + 33, + 73, + 223, + 175, + 34, + 49, + 97, + 12, + 112, + 219, + 174, + 70, + 13, + 255, + 45, + 129, + 108, + 34, + 154, + 62, + 179, + 201, + 123, + 167, + 143, + 254, + 47, + 85, + 38, + 198, + 16, + 154, + 141, + 17, + 115, + 78, + 197, + 64, + 148, + 25, + 94, + 195, + 103, + 111, + 221, + 49, + 76, + 65, + 192, + 188, + 98, + 170, + 121, + 21, + 249, + 152, + 14, + 183, + 205, + 208, + 97, + 164, + 0, + 244, + 166, + 15, + 123, + 241, + 9, + 53, + 129, + 177, + 87, + 200, + 73, + 170, + 154, + 57, + 27, + 160, + 219, + 184, + 87, + 4, + 92, + 21, + 105, + 208, + 208, + 144, + 220, + 89, + 133, + 56, + 6, + 236, + 21, + 219, + 58, + 63, + 243, + 62, + 234, + 192, + 169, + 94, + 148, + 246, + 73, + 174, + 99, + 91, + 187, + 17, + 224, + 39, + 151, + 177, + 41, + 198, + 142, + 229, + 73, + 78, + 117, + 10, + 18, + 100, + 153, + 77, + 191, + 212, + 173, + 153, + 173, + 177, + 141, + 188, + 89, + 51, + 227, + 8, + 247, + 224, + 222, + 104, + 104, + 30, + 6, + 100, + 177, + 53, + 122, + 177, + 5, + 70, + 2, + 158, + 24, + 46, + 208, + 89, + 30, + 78, + 193, + 101, + 181, + 215, + 244, + 89, + 124, + 222, + 178, + 58, + 233, + 35, + 234, + 243, + 150, + 29, + 6, + 10, + 92, + 172, + 10, + 239, + 37, + 44, + 23, + 236, + 184, + 223, + 223, + 146, + 240, + 38, + 192, + 237, + 154, + 250, + 182, + 171, + 176, + 167, + 39, + 110, + 196, + 86, + 105, + 242, + 18, + 181, + 152, + 224, + 114, + 19, + 159, + 198, + 121, + 136, + 144, + 187, + 89, + 200, + 172, + 18, + 254, + 31, + 31, + 240, + 98, + 24, + 189, + 2, + 170, + 132, + 138, + 213, + 42, + 206, + 178, + 129, + 104, + 134, + 6, + 87, + 57, + 153, + 34, + 235, + 172, + 83, + 215, + 159, + 172, + 137, + 188, + 192, + 219, + 233, + 176, + 193, + 217, + 8, + 186, + 91, + 45, + 165, + 111, + 110, + 172, + 18, + 62, + 93, + 57, + 243, + 237, + 2, + 240, + 112, + 69, + 21, + 114, + 119, + 95, + 104, + 220, + 75, + 44, + 106, + 141, + 159, + 58, + 37, + 121, + 83, + 39, + 42, + 35, + 158, + 34, + 228, + 197, + 196, + 87, + 12, + 155, + 155, + 12, + 83, + 184, + 49, + 70, + 67, + 231, + 114, + 211, + 249, + 240, + 229, + 203, + 147, + 86, + 143, + 249, + 69, + 9, + 218, + 84, + 68, + 79, + 182, + 130, + 116, + 74, + 7, + 79, + 148, + 64, + 207, + 66, + 14, + 14, + 20, + 42, + 233, + 7, + 197, + 169, + 198, + 2, + 52, + 97, + 15, + 94, + 61, + 2, + 149, + 4, + 157, + 108, + 186, + 249, + 8, + 84, + 146, + 175, + 199, + 234, + 249, + 218, + 202, + 42, + 118, + 147, + 31, + 146, + 198, + 166, + 157, + 13, + 166, + 72, + 156, + 26, + 248, + 5, + 60, + 45, + 14, + 143, + 238, + 6, + 227, + 147, + 115, + 196, + 186, + 206, + 215, + 53, + 170, + 75, + 66, + 76, + 166, + 240, + 60, + 60, + 193, + 108, + 143, + 17, + 35, + 4, + 94, + 11, + 59, + 123, + 252, + 161, + 32, + 178, + 49, + 22, + 229, + 158, + 155, + 144, + 23, + 12, + 140, + 178, + 74, + 174, + 24, + 225, + 53, + 128, + 196, + 70, + 35, + 23, + 0, + 85, + 128, + 105, + 184, + 199, + 235, + 129, + 66, + 70, + 94, + 131, + 214, + 163, + 57, + 166, + 54, + 86, + 35, + 44, + 105, + 2, + 104, + 177, + 130, + 38, + 183, + 35, + 74, + 167, + 25, + 197, + 68, + 174, + 1, + 52, + 93, + 233, + 217, + 135, + 6, + 185, + 230, + 148, + 66, + 122, + 65, + 249, + 189, + 62, + 61, + 6, + 22, + 88, + 62, + 95, + 238, + 59, + 43, + 54, + 88, + 203, + 194, + 114, + 227, + 156, + 139, + 169, + 63, + 221, + 61, + 203, + 227, + 222, + 112, + 160, + 118, + 19, + 231, + 116, + 46, + 97, + 163, + 111, + 31, + 173, + 1, + 170, + 28, + 115, + 174, + 190, + 85, + 75, + 80, + 30, + 142, + 68, + 139, + 52, + 2, + 63, + 195, + 129, + 232, + 56, + 132, + 249, + 53, + 153, + 45, + 204, + 3, + 6, + 55, + 90, + 109, + 179, + 167, + 213, + 13, + 11, + 95, + 141, + 75, + 98, + 213, + 75, + 24, + 87, + 237, + 254, + 77, + 3, + 38, + 103, + 150, + 183, + 154, + 174, + 36, + 118, + 1, + 85, + 92, + 227, + 179, + 171, + 144, + 119, + 119, + 221, + 176, + 143, + 163, + 197, + 113, + 178, + 85, + 221, + 248, + 119, + 211, + 10, + 195, + 41, + 154, + 29, + 111, + 153, + 128, + 226, + 92, + 190, + 170, + 207, + 139, + 167, + 205, + 96, + 248, + 24, + 191, + 203, + 162, + 34, + 32, + 155, + 28, + 51, + 94, + 4, + 12, + 111, + 74, + 141, + 54, + 14, + 141, + 129, + 89, + 184, + 174, + 101, + 192, + 139, + 164, + 72, + 205, + 97, + 238, + 65, + 177, + 57, + 31, + 12, + 27, + 59, + 217, + 208, + 58, + 22, + 108, + 91, + 225, + 252, + 224, + 161, + 79, + 191, + 39, + 149, + 61, + 178, + 69, + 30, + 76, + 91, + 50, + 246, + 207, + 219, + 18, + 206, + 182, + 216, + 123, + 244, + 137, + 89, + 227, + 74, + 231, + 38, + 48, + 67, + 54, + 63, + 189, + 60, + 247, + 235, + 208, + 131, + 40, + 127, + 142, + 203, + 176, + 221, + 233, + 177, + 153, + 35, + 138, + 40, + 95, + 146, + 23, + 212, + 238, + 179, + 112, + 14, + 7, + 16, + 202, + 116, + 92, + 240, + 13, + 216, + 197, + 241, + 147, + 255, + 7, + 69, + 105, + 114, + 139, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 49, + 49, + 50, + 55, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 235, + 142, + 100, + 199, + 141, + 230, + 127, + 61, + 69, + 191, + 128, + 233, + 224, + 45, + 130, + 4, + 12, + 3, + 110, + 89, + 30, + 236, + 143, + 1, + 118, + 23, + 122, + 3, + 207, + 206, + 0, + 11, + 248, + 199, + 206, + 190, + 63, + 176, + 96, + 118, + 203, + 202, + 84, + 145, + 149, + 39, + 162, + 216, + 85, + 173, + 193, + 202, + 2, + 228, + 238, + 236, + 206, + 58, + 151, + 56, + 113, + 200, + 143, + 223, + 5, + 63, + 141, + 79, + 227, + 211, + 31, + 240, + 211, + 248, + 100, + 66, + 159, + 254, + 254, + 143, + 31, + 254, + 207, + 15, + 176, + 244, + 246, + 187, + 191, + 252, + 247, + 239, + 255, + 248, + 1, + 63, + 197, + 255, + 254, + 231, + 191, + 220, + 254, + 131, + 159, + 254, + 243, + 63, + 126, + 248, + 227, + 191, + 240, + 167, + 255, + 248, + 191, + 63, + 196, + 231, + 203, + 229, + 19, + 34, + 241, + 167, + 255, + 252, + 95, + 63, + 252, + 251, + 15, + 255, + 227, + 55, + 223, + 176, + 40, + 254, + 253, + 251, + 63, + 110, + 127, + 116, + 196, + 119, + 124, + 249, + 63, + 191, + 126, + 199, + 31, + 255, + 251, + 167, + 63, + 253, + 233, + 143, + 255, + 250, + 227, + 127, + 251, + 235, + 167, + 241, + 233, + 207, + 127, + 254, + 252, + 215, + 31, + 127, + 248, + 252, + 243, + 15, + 127, + 252, + 155, + 124, + 66, + 129, + 25, + 255, + 172, + 79, + 63, + 255, + 251, + 15, + 248, + 235, + 161, + 130, + 44, + 55, + 92, + 236, + 159, + 126, + 142, + 239, + 253, + 3, + 50, + 208, + 90, + 44, + 108, + 159, + 126, + 254, + 183, + 79, + 127, + 26, + 67, + 231, + 159, + 63, + 253, + 252, + 191, + 127, + 88, + 192, + 100, + 72, + 113, + 48, + 95, + 126, + 95, + 62, + 223, + 126, + 223, + 0, + 21, + 113, + 44, + 251, + 245, + 3, + 43, + 62, + 24, + 127, + 185, + 125, + 64, + 16, + 63, + 81, + 240, + 215, + 175, + 250, + 250, + 35, + 126, + 250, + 121, + 235, + 96, + 153, + 97, + 233, + 156, + 99, + 37, + 7, + 61, + 248, + 232, + 27, + 23, + 24, + 153, + 26, + 103, + 151, + 65, + 111, + 223, + 40, + 96, + 54, + 166, + 232, + 221, + 233, + 254, + 120, + 251, + 128, + 129, + 116, + 162, + 56, + 255, + 250, + 193, + 95, + 170, + 11, + 84, + 93, + 57, + 93, + 95, + 127, + 198, + 88, + 232, + 75, + 215, + 63, + 63, + 64, + 60, + 57, + 157, + 53, + 64, + 16, + 85, + 180, + 237, + 2, + 45, + 1, + 49, + 86, + 194, + 228, + 27, + 249, + 203, + 117, + 48, + 16, + 114, + 146, + 187, + 155, + 75, + 213, + 217, + 218, + 201, + 33, + 184, + 3, + 161, + 184, + 97, + 219, + 73, + 225, + 96, + 32, + 155, + 174, + 217, + 66, + 146, + 191, + 21, + 119, + 183, + 62, + 173, + 234, + 3, + 249, + 233, + 232, + 232, + 120, + 0, + 46, + 22, + 233, + 91, + 230, + 200, + 2, + 36, + 42, + 68, + 217, + 9, + 75, + 117, + 94, + 95, + 150, + 51, + 14, + 80, + 19, + 90, + 114, + 183, + 208, + 189, + 88, + 182, + 95, + 239, + 112, + 114, + 41, + 170, + 171, + 122, + 182, + 208, + 113, + 17, + 40, + 211, + 104, + 92, + 19, + 107, + 194, + 28, + 236, + 158, + 124, + 35, + 142, + 98, + 39, + 160, + 85, + 93, + 161, + 175, + 107, + 98, + 243, + 32, + 104, + 12, + 32, + 26, + 131, + 218, + 78, + 139, + 134, + 0, + 57, + 166, + 167, + 165, + 63, + 230, + 251, + 124, + 243, + 243, + 75, + 180, + 192, + 137, + 152, + 251, + 78, + 138, + 17, + 220, + 133, + 179, + 187, + 255, + 202, + 162, + 45, + 215, + 57, + 190, + 190, + 59, + 239, + 30, + 221, + 36, + 112, + 165, + 53, + 251, + 206, + 119, + 46, + 24, + 36, + 43, + 219, + 214, + 31, + 222, + 32, + 142, + 111, + 93, + 128, + 203, + 129, + 100, + 165, + 239, + 195, + 195, + 99, + 55, + 6, + 70, + 55, + 218, + 41, + 52, + 238, + 95, + 176, + 83, + 230, + 91, + 111, + 136, + 47, + 240, + 213, + 90, + 54, + 12, + 130, + 33, + 54, + 178, + 203, + 36, + 235, + 110, + 53, + 81, + 254, + 250, + 24, + 126, + 255, + 184, + 61, + 172, + 88, + 245, + 124, + 93, + 222, + 125, + 19, + 29, + 221, + 90, + 22, + 5, + 226, + 217, + 184, + 44, + 89, + 28, + 120, + 216, + 162, + 157, + 45, + 243, + 161, + 104, + 32, + 95, + 249, + 174, + 115, + 127, + 221, + 142, + 54, + 29, + 94, + 6, + 78, + 195, + 164, + 239, + 108, + 141, + 192, + 157, + 44, + 187, + 229, + 63, + 21, + 27, + 41, + 158, + 45, + 5, + 135, + 181, + 116, + 144, + 200, + 175, + 133, + 244, + 223, + 78, + 14, + 89, + 104, + 128, + 172, + 129, + 125, + 229, + 160, + 144, + 128, + 10, + 97, + 182, + 243, + 210, + 143, + 119, + 59, + 209, + 28, + 146, + 119, + 1, + 58, + 87, + 94, + 20, + 220, + 63, + 231, + 95, + 63, + 216, + 61, + 56, + 142, + 23, + 141, + 104, + 223, + 230, + 37, + 18, + 47, + 154, + 169, + 233, + 230, + 245, + 101, + 133, + 35, + 1, + 13, + 91, + 107, + 88, + 250, + 162, + 121, + 184, + 189, + 213, + 58, + 249, + 218, + 63, + 237, + 30, + 220, + 90, + 96, + 172, + 179, + 241, + 116, + 13, + 193, + 199, + 210, + 227, + 98, + 129, + 222, + 250, + 216, + 234, + 80, + 80, + 94, + 222, + 119, + 78, + 58, + 28, + 230, + 112, + 79, + 111, + 161, + 21, + 199, + 126, + 246, + 147, + 72, + 193, + 49, + 127, + 54, + 14, + 143, + 157, + 28, + 220, + 4, + 121, + 227, + 221, + 89, + 222, + 143, + 135, + 229, + 42, + 131, + 222, + 184, + 250, + 116, + 42, + 24, + 49, + 245, + 109, + 176, + 58, + 29, + 204, + 243, + 103, + 109, + 21, + 91, + 203, + 3, + 242, + 64, + 69, + 173, + 71, + 111, + 237, + 54, + 212, + 5, + 88, + 144, + 251, + 10, + 136, + 241, + 233, + 15, + 76, + 48, + 23, + 218, + 210, + 95, + 94, + 140, + 95, + 203, + 0, + 6, + 157, + 70, + 110, + 119, + 39, + 179, + 221, + 84, + 149, + 31, + 156, + 189, + 71, + 152, + 128, + 7, + 79, + 123, + 121, + 208, + 135, + 175, + 210, + 9, + 188, + 116, + 234, + 124, + 249, + 133, + 95, + 95, + 34, + 187, + 27, + 215, + 0, + 145, + 53, + 153, + 94, + 59, + 194, + 4, + 91, + 195, + 129, + 48, + 60, + 110, + 232, + 171, + 24, + 219, + 79, + 255, + 250, + 227, + 61, + 206, + 134, + 93, + 56, + 91, + 217, + 170, + 212, + 29, + 24, + 110, + 35, + 109, + 235, + 119, + 128, + 180, + 85, + 125, + 64, + 217, + 177, + 29, + 173, + 146, + 57, + 96, + 178, + 186, + 244, + 109, + 208, + 83, + 96, + 141, + 229, + 152, + 213, + 212, + 117, + 87, + 73, + 187, + 96, + 96, + 13, + 188, + 86, + 72, + 100, + 249, + 195, + 75, + 136, + 242, + 108, + 103, + 64, + 156, + 96, + 147, + 53, + 30, + 229, + 46, + 32, + 134, + 6, + 56, + 171, + 198, + 195, + 252, + 178, + 210, + 214, + 215, + 161, + 137, + 174, + 30, + 30, + 5, + 129, + 135, + 47, + 234, + 43, + 68, + 80, + 20, + 216, + 112, + 166, + 80, + 204, + 67, + 237, + 124, + 127, + 235, + 235, + 231, + 218, + 59, + 107, + 73, + 156, + 11, + 22, + 227, + 16, + 111, + 4, + 212, + 16, + 108, + 112, + 138, + 101, + 149, + 171, + 240, + 217, + 179, + 177, + 123, + 12, + 78, + 128, + 107, + 165, + 176, + 231, + 225, + 89, + 249, + 4, + 18, + 199, + 180, + 68, + 110, + 124, + 126, + 143, + 230, + 35, + 132, + 14, + 67, + 167, + 246, + 245, + 123, + 68, + 12, + 72, + 246, + 188, + 40, + 123, + 0, + 129, + 107, + 8, + 174, + 111, + 191, + 58, + 91, + 231, + 52, + 21, + 196, + 133, + 58, + 177, + 57, + 7, + 157, + 51, + 71, + 214, + 75, + 28, + 235, + 168, + 12, + 37, + 27, + 224, + 139, + 197, + 26, + 193, + 57, + 133, + 33, + 154, + 78, + 26, + 234, + 254, + 246, + 236, + 237, + 203, + 67, + 64, + 141, + 184, + 17, + 145, + 25, + 6, + 83, + 37, + 5, + 150, + 239, + 23, + 212, + 99, + 15, + 94, + 117, + 12, + 85, + 13, + 82, + 244, + 236, + 103, + 157, + 4, + 11, + 195, + 180, + 28, + 201, + 61, + 5, + 225, + 86, + 148, + 106, + 43, + 187, + 172, + 36, + 191, + 194, + 73, + 115, + 8, + 61, + 5, + 166, + 190, + 98, + 151, + 219, + 165, + 29, + 131, + 177, + 52, + 214, + 0, + 188, + 22, + 248, + 184, + 53, + 8, + 215, + 31, + 170, + 175, + 67, + 169, + 109, + 88, + 47, + 96, + 81, + 137, + 230, + 166, + 13, + 40, + 12, + 88, + 116, + 206, + 244, + 142, + 156, + 61, + 58, + 206, + 192, + 203, + 26, + 175, + 175, + 47, + 16, + 29, + 57, + 208, + 83, + 13, + 20, + 172, + 2, + 45, + 171, + 57, + 249, + 217, + 46, + 39, + 68, + 176, + 134, + 74, + 223, + 62, + 33, + 52, + 97, + 173, + 244, + 9, + 233, + 222, + 228, + 68, + 38, + 48, + 74, + 35, + 36, + 167, + 3, + 216, + 38, + 165, + 119, + 170, + 122, + 138, + 171, + 59, + 245, + 100, + 143, + 59, + 64, + 11, + 99, + 74, + 221, + 137, + 63, + 42, + 8, + 206, + 116, + 160, + 240, + 0, + 105, + 240, + 29, + 2, + 84, + 110, + 7, + 173, + 96, + 171, + 142, + 5, + 50, + 172, + 177, + 112, + 80, + 68, + 16, + 27, + 180, + 135, + 119, + 125, + 46, + 110, + 121, + 89, + 105, + 20, + 183, + 252, + 172, + 221, + 83, + 54, + 96, + 245, + 198, + 157, + 94, + 133, + 64, + 24, + 211, + 2, + 179, + 28, + 15, + 60, + 204, + 79, + 38, + 61, + 197, + 62, + 123, + 223, + 225, + 186, + 24, + 216, + 71, + 35, + 247, + 64, + 215, + 2, + 153, + 232, + 246, + 228, + 29, + 174, + 139, + 11, + 170, + 197, + 221, + 201, + 30, + 222, + 89, + 119, + 144, + 57, + 166, + 127, + 75, + 136, + 179, + 196, + 121, + 74, + 128, + 179, + 250, + 224, + 112, + 4, + 138, + 176, + 12, + 37, + 10, + 232, + 61, + 152, + 48, + 24, + 57, + 166, + 81, + 39, + 111, + 192, + 132, + 212, + 4, + 19, + 214, + 236, + 147, + 207, + 101, + 159, + 245, + 142, + 132, + 60, + 33, + 242, + 198, + 154, + 126, + 129, + 161, + 80, + 74, + 204, + 250, + 188, + 141, + 253, + 108, + 119, + 149, + 117, + 45, + 243, + 101, + 131, + 157, + 64, + 236, + 186, + 140, + 222, + 184, + 135, + 152, + 194, + 196, + 225, + 141, + 123, + 136, + 57, + 76, + 35, + 91, + 171, + 5, + 93, + 122, + 54, + 89, + 56, + 32, + 220, + 141, + 169, + 148, + 78, + 225, + 78, + 57, + 124, + 11, + 144, + 23, + 165, + 133, + 123, + 201, + 79, + 59, + 0, + 32, + 206, + 128, + 39, + 30, + 176, + 230, + 154, + 163, + 17, + 79, + 99, + 1, + 99, + 215, + 148, + 210, + 80, + 63, + 2, + 71, + 207, + 53, + 70, + 213, + 137, + 102, + 216, + 72, + 65, + 84, + 137, + 183, + 102, + 62, + 218, + 189, + 52, + 204, + 124, + 56, + 173, + 122, + 248, + 126, + 134, + 127, + 122, + 16, + 239, + 82, + 104, + 246, + 20, + 39, + 20, + 224, + 129, + 102, + 207, + 24, + 66, + 111, + 131, + 243, + 235, + 101, + 107, + 207, + 118, + 184, + 177, + 144, + 253, + 142, + 109, + 116, + 182, + 145, + 81, + 84, + 132, + 35, + 31, + 235, + 28, + 98, + 82, + 66, + 192, + 107, + 165, + 116, + 223, + 250, + 85, + 248, + 182, + 29, + 238, + 190, + 159, + 56, + 218, + 224, + 40, + 102, + 75, + 50, + 172, + 239, + 121, + 161, + 152, + 45, + 33, + 165, + 23, + 246, + 225, + 245, + 117, + 165, + 241, + 59, + 228, + 205, + 5, + 58, + 104, + 107, + 244, + 189, + 221, + 201, + 28, + 240, + 57, + 234, + 112, + 169, + 227, + 57, + 163, + 133, + 13, + 7, + 229, + 116, + 180, + 116, + 88, + 175, + 32, + 195, + 28, + 154, + 78, + 0, + 31, + 222, + 66, + 15, + 231, + 84, + 118, + 107, + 165, + 228, + 160, + 188, + 179, + 15, + 88, + 187, + 121, + 222, + 36, + 93, + 34, + 159, + 221, + 111, + 75, + 15, + 31, + 28, + 66, + 157, + 139, + 97, + 44, + 153, + 141, + 80, + 231, + 90, + 128, + 50, + 103, + 74, + 62, + 251, + 92, + 93, + 135, + 250, + 210, + 221, + 151, + 116, + 206, + 111, + 237, + 141, + 101, + 76, + 64, + 103, + 109, + 196, + 173, + 112, + 0, + 229, + 211, + 156, + 250, + 182, + 223, + 63, + 47, + 37, + 240, + 93, + 227, + 119, + 107, + 190, + 245, + 17, + 11, + 196, + 10, + 141, + 87, + 31, + 160, + 42, + 42, + 64, + 170, + 41, + 128, + 87, + 17, + 125, + 30, + 78, + 42, + 224, + 133, + 183, + 114, + 237, + 20, + 132, + 27, + 17, + 88, + 89, + 14, + 138, + 35, + 69, + 82, + 222, + 139, + 106, + 199, + 128, + 50, + 90, + 169, + 118, + 11, + 8, + 201, + 124, + 227, + 149, + 85, + 66, + 54, + 247, + 91, + 228, + 184, + 123, + 56, + 75, + 208, + 179, + 248, + 1, + 103, + 72, + 129, + 42, + 2, + 145, + 164, + 91, + 205, + 225, + 197, + 81, + 5, + 242, + 153, + 74, + 142, + 248, + 203, + 49, + 6, + 32, + 56, + 198, + 48, + 125, + 241, + 246, + 219, + 198, + 147, + 4, + 76, + 86, + 227, + 35, + 248, + 11, + 152, + 51, + 116, + 61, + 175, + 192, + 183, + 117, + 22, + 199, + 172, + 52, + 53, + 242, + 73, + 47, + 142, + 237, + 152, + 149, + 54, + 85, + 156, + 237, + 197, + 247, + 29, + 147, + 210, + 22, + 77, + 15, + 246, + 102, + 121, + 124, + 25, + 216, + 164, + 254, + 229, + 150, + 201, + 14, + 216, + 196, + 77, + 96, + 83, + 57, + 34, + 144, + 143, + 102, + 164, + 13, + 208, + 224, + 255, + 52, + 206, + 233, + 4, + 116, + 81, + 62, + 62, + 174, + 1, + 132, + 109, + 168, + 242, + 172, + 161, + 80, + 3, + 26, + 148, + 15, + 173, + 14, + 185, + 106, + 4, + 180, + 10, + 13, + 81, + 243, + 20, + 204, + 16, + 12, + 111, + 133, + 109, + 27, + 186, + 165, + 96, + 198, + 51, + 149, + 161, + 238, + 211, + 110, + 106, + 180, + 164, + 222, + 212, + 74, + 226, + 89, + 241, + 192, + 28, + 234, + 26, + 217, + 96, + 224, + 90, + 157, + 64, + 153, + 16, + 12, + 243, + 53, + 95, + 65, + 6, + 183, + 191, + 114, + 2, + 78, + 12, + 196, + 185, + 15, + 30, + 26, + 64, + 204, + 43, + 37, + 86, + 149, + 128, + 201, + 135, + 243, + 100, + 209, + 16, + 84, + 87, + 218, + 254, + 29, + 94, + 136, + 128, + 134, + 201, + 49, + 45, + 118, + 75, + 30, + 89, + 185, + 59, + 183, + 178, + 4, + 9, + 23, + 8, + 142, + 198, + 61, + 152, + 40, + 134, + 160, + 148, + 19, + 61, + 246, + 245, + 154, + 71, + 171, + 153, + 68, + 1, + 49, + 157, + 176, + 159, + 34, + 88, + 14, + 104, + 146, + 98, + 127, + 111, + 220, + 172, + 174, + 9, + 58, + 180, + 248, + 27, + 213, + 44, + 88, + 42, + 225, + 150, + 228, + 84, + 144, + 175, + 191, + 127, + 128, + 189, + 200, + 228, + 198, + 153, + 71, + 128, + 47, + 202, + 226, + 125, + 59, + 27, + 227, + 130, + 152, + 130, + 246, + 109, + 108, + 76, + 8, + 115, + 89, + 174, + 63, + 42, + 168, + 54, + 117, + 15, + 255, + 99, + 14, + 90, + 150, + 77, + 209, + 17, + 177, + 131, + 149, + 96, + 114, + 252, + 162, + 237, + 34, + 232, + 132, + 53, + 2, + 99, + 105, + 187, + 81, + 115, + 196, + 44, + 183, + 147, + 77, + 56, + 5, + 76, + 249, + 41, + 155, + 240, + 26, + 211, + 166, + 252, + 96, + 157, + 243, + 181, + 86, + 163, + 118, + 87, + 6, + 130, + 146, + 231, + 84, + 155, + 163, + 199, + 91, + 66, + 104, + 103, + 195, + 26, + 197, + 166, + 24, + 42, + 20, + 74, + 39, + 1, + 21, + 44, + 92, + 178, + 212, + 238, + 241, + 129, + 6, + 116, + 83, + 36, + 202, + 105, + 107, + 20, + 251, + 221, + 168, + 99, + 154, + 238, + 142, + 252, + 75, + 253, + 227, + 74, + 147, + 239, + 5, + 180, + 219, + 27, + 197, + 209, + 56, + 80, + 150, + 192, + 96, + 107, + 28, + 102, + 202, + 50, + 64, + 28, + 35, + 91, + 44, + 207, + 184, + 76, + 219, + 164, + 50, + 131, + 233, + 210, + 184, + 83, + 136, + 19, + 172, + 153, + 234, + 110, + 175, + 192, + 92, + 143, + 224, + 235, + 21, + 52, + 190, + 65, + 193, + 72, + 14, + 34, + 212, + 200, + 59, + 86, + 102, + 80, + 148, + 117, + 190, + 94, + 239, + 136, + 91, + 205, + 183, + 92, + 39, + 222, + 186, + 231, + 70, + 105, + 170, + 70, + 243, + 60, + 183, + 248, + 200, + 135, + 199, + 190, + 20, + 76, + 205, + 181, + 29, + 187, + 99, + 180, + 157, + 49, + 211, + 181, + 6, + 99, + 95, + 130, + 122, + 168, + 30, + 80, + 24, + 196, + 20, + 111, + 151, + 223, + 156, + 204, + 235, + 96, + 154, + 25, + 240, + 26, + 72, + 59, + 88, + 154, + 116, + 97, + 105, + 251, + 42, + 167, + 210, + 73, + 170, + 234, + 128, + 15, + 103, + 115, + 19, + 230, + 154, + 210, + 40, + 239, + 148, + 1, + 75, + 140, + 211, + 113, + 117, + 237, + 5, + 242, + 79, + 201, + 179, + 49, + 83, + 240, + 126, + 159, + 118, + 67, + 117, + 83, + 120, + 84, + 88, + 45, + 7, + 227, + 41, + 141, + 115, + 123, + 99, + 240, + 97, + 146, + 191, + 29, + 122, + 229, + 94, + 46, + 32, + 78, + 193, + 9, + 237, + 58, + 120, + 55, + 208, + 41, + 43, + 55, + 28, + 104, + 87, + 183, + 189, + 104, + 68, + 207, + 102, + 53, + 72, + 14, + 74, + 140, + 141, + 227, + 14, + 140, + 151, + 155, + 43, + 166, + 195, + 220, + 214, + 229, + 188, + 189, + 225, + 158, + 226, + 84, + 35, + 36, + 58, + 141, + 75, + 5, + 77, + 66, + 162, + 147, + 150, + 85, + 245, + 251, + 69, + 222, + 199, + 7, + 145, + 198, + 132, + 97, + 148, + 150, + 151, + 135, + 152, + 14, + 14, + 64, + 13, + 148, + 101, + 103, + 65, + 232, + 190, + 192, + 191, + 124, + 202, + 118, + 31, + 166, + 43, + 100, + 235, + 139, + 60, + 128, + 162, + 153, + 56, + 4, + 17, + 109, + 4, + 79, + 66, + 26, + 61, + 238, + 76, + 130, + 39, + 145, + 234, + 250, + 203, + 171, + 83, + 169, + 156, + 138, + 217, + 123, + 73, + 23, + 171, + 174, + 230, + 225, + 139, + 25, + 13, + 100, + 81, + 227, + 251, + 136, + 137, + 64, + 69, + 82, + 234, + 66, + 189, + 112, + 177, + 178, + 36, + 59, + 180, + 30, + 139, + 121, + 193, + 176, + 78, + 64, + 41, + 198, + 5, + 183, + 114, + 240, + 229, + 91, + 182, + 18, + 254, + 148, + 74, + 161, + 138, + 248, + 84, + 127, + 240, + 68, + 216, + 251, + 42, + 59, + 161, + 3, + 125, + 24, + 81, + 110, + 121, + 163, + 90, + 67, + 134, + 128, + 17, + 206, + 189, + 101, + 114, + 207, + 91, + 64, + 188, + 64, + 66, + 58, + 164, + 86, + 49, + 3, + 83, + 163, + 172, + 61, + 156, + 194, + 216, + 87, + 58, + 160, + 108, + 215, + 94, + 237, + 30, + 219, + 28, + 64, + 67, + 26, + 25, + 181, + 50, + 5, + 104, + 205, + 149, + 142, + 214, + 154, + 15, + 62, + 152, + 39, + 19, + 71, + 35, + 249, + 43, + 140, + 252, + 152, + 83, + 18, + 106, + 133, + 145, + 212, + 232, + 235, + 182, + 136, + 112, + 219, + 161, + 178, + 146, + 166, + 85, + 83, + 156, + 214, + 241, + 177, + 202, + 128, + 193, + 130, + 125, + 151, + 95, + 69, + 0, + 199, + 76, + 199, + 145, + 15, + 251, + 194, + 125, + 193, + 240, + 104, + 101, + 197, + 171, + 16, + 38, + 221, + 223, + 177, + 39, + 78, + 128, + 47, + 63, + 56, + 148, + 185, + 25, + 2, + 249, + 104, + 180, + 86, + 206, + 100, + 110, + 251, + 157, + 146, + 245, + 78, + 52, + 23, + 172, + 65, + 28, + 83, + 233, + 38, + 195, + 46, + 132, + 181, + 194, + 176, + 243, + 229, + 23, + 202, + 54, + 50, + 244, + 68, + 236, + 177, + 79, + 148, + 9, + 159, + 170, + 240, + 151, + 221, + 210, + 244, + 221, + 102, + 217, + 51, + 200, + 138, + 27, + 200, + 144, + 126, + 115, + 100, + 168, + 15, + 153, + 59, + 54, + 254, + 146, + 161, + 222, + 232, + 32, + 207, + 11, + 36, + 8, + 45, + 233, + 20, + 231, + 137, + 224, + 101, + 27, + 234, + 7, + 51, + 237, + 4, + 2, + 52, + 172, + 156, + 23, + 166, + 150, + 162, + 151, + 90, + 139, + 75, + 220, + 177, + 87, + 140, + 224, + 90, + 95, + 15, + 239, + 11, + 24, + 61, + 54, + 17, + 215, + 186, + 223, + 94, + 255, + 91, + 100, + 4, + 148, + 53, + 26, + 193, + 116, + 100, + 5, + 66, + 31, + 141, + 100, + 42, + 246, + 112, + 104, + 31, + 141, + 108, + 57, + 20, + 6, + 158, + 156, + 123, + 11, + 124, + 199, + 100, + 170, + 37, + 48, + 173, + 147, + 54, + 136, + 203, + 96, + 169, + 165, + 94, + 34, + 79, + 37, + 132, + 59, + 123, + 237, + 25, + 74, + 133, + 10, + 66, + 163, + 209, + 175, + 56, + 12, + 192, + 196, + 73, + 183, + 104, + 146, + 135, + 78, + 241, + 81, + 19, + 160, + 166, + 98, + 174, + 83, + 87, + 127, + 133, + 101, + 113, + 100, + 201, + 162, + 45, + 233, + 151, + 219, + 80, + 99, + 217, + 138, + 159, + 237, + 49, + 225, + 255, + 21, + 178, + 159, + 62, + 34, + 0, + 45, + 174, + 100, + 63, + 37, + 179, + 171, + 89, + 248, + 231, + 12, + 147, + 189, + 209, + 19, + 41, + 44, + 248, + 23, + 98, + 35, + 7, + 149, + 71, + 152, + 57, + 112, + 163, + 251, + 53, + 143, + 152, + 188, + 230, + 43, + 250, + 195, + 205, + 190, + 89, + 48, + 88, + 12, + 141, + 184, + 160, + 104, + 144, + 24, + 82, + 8, + 233, + 140, + 0, + 196, + 202, + 224, + 193, + 93, + 110, + 68, + 249, + 22, + 184, + 121, + 90, + 207, + 93, + 220, + 190, + 11, + 79, + 232, + 199, + 135, + 228, + 12, + 170, + 117, + 129, + 169, + 216, + 234, + 202, + 101, + 176, + 136, + 83, + 80, + 179, + 12, + 137, + 120, + 162, + 143, + 221, + 184, + 10, + 235, + 20, + 73, + 51, + 14, + 177, + 74, + 31, + 15, + 42, + 76, + 232, + 211, + 201, + 219, + 165, + 205, + 190, + 227, + 164, + 212, + 97, + 12, + 199, + 190, + 17, + 133, + 76, + 134, + 97, + 152, + 126, + 227, + 165, + 62, + 226, + 138, + 233, + 121, + 89, + 61, + 31, + 130, + 204, + 62, + 227, + 215, + 105, + 202, + 206, + 169, + 64, + 112, + 128, + 42, + 82, + 223, + 91, + 64, + 135, + 192, + 36, + 238, + 180, + 229, + 10, + 83, + 73, + 87, + 210, + 29, + 118, + 151, + 21, + 180, + 166, + 77, + 208, + 239, + 144, + 49, + 36, + 11, + 108, + 72, + 99, + 62, + 90, + 168, + 31, + 109, + 205, + 231, + 94, + 50, + 31, + 145, + 242, + 113, + 227, + 98, + 169, + 55, + 122, + 250, + 70, + 240, + 0, + 51, + 166, + 168, + 105, + 85, + 113, + 29, + 186, + 200, + 133, + 184, + 131, + 59, + 103, + 159, + 47, + 201, + 93, + 141, + 238, + 34, + 199, + 118, + 189, + 219, + 47, + 62, + 136, + 218, + 144, + 95, + 225, + 118, + 237, + 189, + 147, + 0, + 205, + 86, + 76, + 255, + 127, + 123, + 109, + 142, + 10, + 27, + 69, + 96, + 118, + 251, + 167, + 144, + 243, + 34, + 247, + 140, + 100, + 130, + 170, + 204, + 45, + 132, + 113, + 118, + 33, + 140, + 37, + 47, + 175, + 188, + 167, + 101, + 127, + 88, + 226, + 89, + 229, + 207, + 56, + 244, + 102, + 134, + 49, + 89, + 91, + 99, + 186, + 0, + 89, + 243, + 81, + 218, + 254, + 99, + 242, + 85, + 19, + 202, + 96, + 99, + 141, + 49, + 239, + 254, + 198, + 182, + 88, + 116, + 31, + 230, + 109, + 206, + 168, + 51, + 2, + 163, + 21, + 127, + 168, + 141, + 247, + 54, + 193, + 220, + 103, + 42, + 9, + 172, + 23, + 202, + 54, + 31, + 232, + 208, + 222, + 41, + 234, + 102, + 114, + 111, + 140, + 3, + 195, + 248, + 83, + 3, + 195, + 65, + 105, + 31, + 107, + 217, + 81, + 158, + 214, + 127, + 165, + 244, + 170, + 43, + 63, + 120, + 130, + 187, + 110, + 163, + 107, + 10, + 211, + 114, + 63, + 159, + 83, + 188, + 206, + 97, + 41, + 167, + 16, + 208, + 254, + 91, + 234, + 195, + 227, + 120, + 3, + 224, + 11, + 53, + 89, + 35, + 70, + 134, + 126, + 83, + 147, + 165, + 46, + 18, + 7, + 142, + 12, + 21, + 219, + 169, + 130, + 219, + 78, + 119, + 118, + 134, + 57, + 243, + 208, + 132, + 243, + 68, + 204, + 21, + 81, + 199, + 31, + 102, + 159, + 66, + 142, + 192, + 43, + 55, + 174, + 61, + 197, + 200, + 20, + 68, + 114, + 123, + 255, + 75, + 182, + 12, + 247, + 231, + 116, + 200, + 62, + 115, + 24, + 139, + 211, + 172, + 206, + 83, + 246, + 89, + 152, + 204, + 104, + 46, + 225, + 250, + 224, + 4, + 51, + 86, + 139, + 116, + 181, + 70, + 169, + 61, + 71, + 151, + 175, + 51, + 23, + 254, + 86, + 74, + 236, + 93, + 231, + 230, + 82, + 218, + 117, + 54, + 239, + 53, + 3, + 242, + 213, + 216, + 145, + 176, + 19, + 240, + 188, + 217, + 168, + 236, + 131, + 118, + 219, + 10, + 65, + 130, + 69, + 1, + 248, + 244, + 105, + 14, + 39, + 216, + 192, + 52, + 214, + 238, + 137, + 250, + 118, + 247, + 39, + 81, + 88, + 124, + 116, + 202, + 37, + 153, + 128, + 44, + 159, + 35, + 190, + 147, + 189, + 158, + 132, + 114, + 88, + 115, + 157, + 212, + 169, + 247, + 215, + 12, + 23, + 157, + 185, + 5, + 156, + 213, + 230, + 104, + 37, + 78, + 88, + 151, + 95, + 135, + 40, + 18, + 3, + 106, + 103, + 144, + 247, + 205, + 92, + 139, + 114, + 143, + 240, + 246, + 44, + 200, + 151, + 127, + 163, + 92, + 63, + 229, + 246, + 117, + 255, + 51, + 108, + 96, + 193, + 206, + 187, + 67, + 203, + 78, + 221, + 216, + 111, + 196, + 213, + 206, + 212, + 205, + 101, + 96, + 206, + 227, + 251, + 68, + 191, + 60, + 116, + 199, + 218, + 56, + 110, + 76, + 16, + 164, + 109, + 55, + 222, + 82, + 182, + 118, + 230, + 63, + 48, + 32, + 108, + 142, + 99, + 23, + 217, + 194, + 91, + 162, + 29, + 145, + 32, + 245, + 110, + 224, + 45, + 171, + 11, + 111, + 57, + 21, + 72, + 110, + 83, + 59, + 96, + 78, + 150, + 145, + 166, + 203, + 156, + 42, + 121, + 96, + 177, + 230, + 85, + 223, + 37, + 46, + 253, + 142, + 143, + 118, + 105, + 160, + 116, + 64, + 204, + 18, + 247, + 180, + 17, + 58, + 125, + 236, + 97, + 16, + 122, + 26, + 103, + 82, + 47, + 240, + 163, + 204, + 161, + 233, + 64, + 17, + 191, + 211, + 247, + 154, + 140, + 72, + 10, + 92, + 35, + 53, + 182, + 221, + 230, + 169, + 149, + 246, + 88, + 207, + 16, + 176, + 221, + 133, + 119, + 83, + 49, + 44, + 234, + 12, + 89, + 12, + 25, + 3, + 58, + 166, + 45, + 119, + 137, + 211, + 61, + 131, + 88, + 182, + 5, + 137, + 8, + 145, + 109, + 159, + 102, + 197, + 159, + 134, + 98, + 42, + 184, + 139, + 167, + 52, + 248, + 75, + 13, + 239, + 37, + 255, + 179, + 67, + 211, + 50, + 101, + 152, + 222, + 154, + 178, + 168, + 11, + 86, + 0, + 6, + 217, + 19, + 194, + 179, + 74, + 53, + 171, + 115, + 7, + 75, + 0, + 164, + 185, + 238, + 11, + 225, + 225, + 148, + 49, + 26, + 243, + 5, + 113, + 132, + 15, + 120, + 126, + 227, + 183, + 97, + 198, + 250, + 66, + 236, + 110, + 18, + 135, + 108, + 169, + 219, + 76, + 164, + 211, + 45, + 94, + 35, + 212, + 119, + 208, + 105, + 89, + 252, + 216, + 5, + 180, + 230, + 193, + 147, + 17, + 8, + 98, + 163, + 133, + 35, + 217, + 4, + 177, + 148, + 190, + 123, + 224, + 53, + 94, + 225, + 11, + 69, + 71, + 120, + 104, + 210, + 138, + 95, + 168, + 168, + 141, + 62, + 77, + 65, + 220, + 79, + 157, + 164, + 202, + 230, + 229, + 199, + 110, + 38, + 214, + 152, + 202, + 189, + 84, + 44, + 228, + 149, + 59, + 79, + 149, + 141, + 215, + 21, + 227, + 235, + 7, + 240, + 191, + 50, + 27, + 43, + 123, + 226, + 251, + 164, + 8, + 27, + 243, + 173, + 210, + 86, + 35, + 152, + 99, + 53, + 118, + 46, + 108, + 97, + 99, + 145, + 146, + 187, + 249, + 203, + 45, + 55, + 8, + 209, + 202, + 28, + 87, + 140, + 120, + 14, + 1, + 40, + 12, + 71, + 196, + 70, + 130, + 185, + 4, + 41, + 216, + 200, + 83, + 10, + 111, + 165, + 46, + 221, + 135, + 53, + 206, + 241, + 29, + 20, + 109, + 132, + 53, + 2, + 223, + 33, + 156, + 41, + 172, + 81, + 111, + 93, + 213, + 67, + 113, + 72, + 116, + 154, + 11, + 38, + 166, + 78, + 70, + 167, + 154, + 69, + 132, + 105, + 158, + 250, + 101, + 29, + 32, + 8, + 103, + 28, + 54, + 155, + 176, + 112, + 52, + 170, + 72, + 61, + 28, + 247, + 40, + 245, + 201, + 172, + 65, + 142, + 202, + 58, + 160, + 55, + 156, + 49, + 96, + 224, + 149, + 34, + 206, + 167, + 217, + 140, + 19, + 76, + 116, + 245, + 64, + 169, + 213, + 78, + 221, + 187, + 138, + 53, + 242, + 229, + 39, + 55, + 138, + 236, + 85, + 60, + 222, + 180, + 233, + 86, + 244, + 160, + 253, + 188, + 207, + 87, + 120, + 200, + 28, + 142, + 97, + 214, + 179, + 203, + 243, + 245, + 108, + 203, + 203, + 208, + 118, + 125, + 76, + 64, + 212, + 27, + 35, + 173, + 212, + 12, + 148, + 49, + 21, + 63, + 157, + 166, + 48, + 198, + 59, + 146, + 211, + 177, + 230, + 235, + 216, + 151, + 135, + 169, + 70, + 152, + 220, + 109, + 96, + 95, + 214, + 132, + 125, + 125, + 45, + 143, + 119, + 104, + 46, + 251, + 240, + 209, + 110, + 116, + 228, + 174, + 45, + 202, + 153, + 247, + 208, + 140, + 249, + 147, + 206, + 70, + 79, + 219, + 57, + 97, + 69, + 163, + 181, + 182, + 140, + 24, + 238, + 203, + 29, + 121, + 195, + 213, + 57, + 91, + 182, + 238, + 48, + 213, + 102, + 163, + 61, + 105, + 4, + 6, + 46, + 142, + 200, + 192, + 29, + 0, + 160, + 230, + 117, + 236, + 203, + 106, + 127, + 106, + 181, + 168, + 138, + 76, + 156, + 105, + 105, + 215, + 114, + 30, + 167, + 71, + 50, + 114, + 230, + 243, + 126, + 26, + 218, + 215, + 66, + 113, + 155, + 174, + 19, + 176, + 99, + 46, + 237, + 61, + 37, + 0, + 133, + 49, + 7, + 230, + 46, + 240, + 21, + 118, + 241, + 240, + 162, + 72, + 88, + 59, + 251, + 31, + 108, + 163, + 62, + 8, + 198, + 141, + 85, + 49, + 13, + 5, + 31, + 148, + 50, + 146, + 207, + 136, + 242, + 52, + 28, + 124, + 197, + 45, + 239, + 3, + 166, + 4, + 134, + 204, + 220, + 43, + 238, + 0, + 137, + 59, + 26, + 3, + 144, + 12, + 192, + 225, + 141, + 42, + 48, + 10, + 195, + 11, + 195, + 52, + 249, + 231, + 21, + 157, + 246, + 37, + 237, + 236, + 125, + 81, + 88, + 90, + 11, + 181, + 217, + 115, + 221, + 255, + 232, + 210, + 10, + 249, + 237, + 214, + 178, + 140, + 145, + 205, + 209, + 233, + 159, + 31, + 52, + 36, + 87, + 78, + 49, + 189, + 135, + 242, + 242, + 1, + 252, + 125, + 178, + 197, + 111, + 99, + 50, + 225, + 241, + 27, + 227, + 233, + 62, + 148, + 103, + 130, + 49, + 229, + 11, + 235, + 199, + 38, + 164, + 242, + 90, + 49, + 125, + 135, + 254, + 188, + 1, + 203, + 89, + 214, + 105, + 232, + 21, + 237, + 170, + 230, + 116, + 152, + 170, + 129, + 122, + 175, + 206, + 65, + 34, + 106, + 24, + 87, + 227, + 217, + 6, + 108, + 132, + 230, + 246, + 145, + 43, + 60, + 76, + 181, + 188, + 117, + 106, + 35, + 17, + 94, + 51, + 243, + 114, + 224, + 125, + 72, + 153, + 50, + 67, + 37, + 235, + 141, + 164, + 76, + 153, + 10, + 107, + 97, + 138, + 90, + 150, + 74, + 242, + 242, + 164, + 138, + 151, + 65, + 189, + 83, + 159, + 233, + 85, + 198, + 4, + 165, + 206, + 220, + 86, + 141, + 87, + 158, + 123, + 138, + 38, + 213, + 102, + 91, + 175, + 227, + 30, + 187, + 135, + 16, + 172, + 144, + 197, + 141, + 181, + 166, + 134, + 167, + 180, + 104, + 10, + 8, + 124, + 123, + 144, + 231, + 48, + 151, + 48, + 160, + 74, + 161, + 70, + 139, + 140, + 196, + 191, + 138, + 191, + 187, + 104, + 191, + 183, + 27, + 88, + 253, + 38, + 219, + 239, + 222, + 192, + 106, + 219, + 88, + 245, + 157, + 236, + 80, + 34, + 176, + 109, + 142, + 155, + 103, + 239, + 150, + 179, + 85, + 148, + 79, + 100, + 81, + 152, + 111, + 96, + 65, + 222, + 133, + 5, + 181, + 187, + 68, + 239, + 214, + 239, + 20, + 236, + 20, + 238, + 204, + 168, + 154, + 96, + 203, + 139, + 96, + 152, + 125, + 169, + 77, + 227, + 195, + 181, + 111, + 22, + 92, + 193, + 104, + 103, + 133, + 145, + 173, + 32, + 185, + 82, + 163, + 190, + 197, + 35, + 118, + 149, + 242, + 156, + 10, + 250, + 107, + 241, + 60, + 110, + 67, + 128, + 103, + 238, + 68, + 104, + 128, + 35, + 108, + 108, + 27, + 89, + 61, + 4, + 24, + 107, + 53, + 101, + 155, + 151, + 254, + 121, + 239, + 68, + 195, + 68, + 113, + 24, + 115, + 140, + 70, + 2, + 3, + 42, + 3, + 114, + 238, + 203, + 221, + 237, + 120, + 62, + 21, + 88, + 21, + 211, + 199, + 246, + 240, + 232, + 167, + 131, + 208, + 74, + 169, + 198, + 7, + 251, + 94, + 243, + 249, + 58, + 131, + 173, + 188, + 105, + 62, + 60, + 93, + 95, + 224, + 146, + 59, + 33, + 148, + 143, + 214, + 190, + 126, + 117, + 27, + 216, + 111, + 214, + 232, + 5, + 249, + 194, + 173, + 209, + 51, + 48, + 226, + 255, + 104, + 141, + 116, + 15, + 171, + 185, + 107, + 37, + 236, + 83, + 245, + 12, + 87, + 174, + 219, + 70, + 33, + 250, + 146, + 239, + 115, + 24, + 242, + 183, + 0, + 137, + 58, + 93, + 113, + 162, + 87, + 118, + 73, + 233, + 201, + 79, + 131, + 179, + 187, + 88, + 76, + 28, + 180, + 82, + 107, + 68, + 120, + 153, + 67, + 100, + 48, + 210, + 193, + 81, + 121, + 203, + 43, + 52, + 232, + 16, + 196, + 137, + 160, + 233, + 41, + 141, + 170, + 204, + 208, + 191, + 49, + 207, + 215, + 96, + 235, + 151, + 235, + 175, + 226, + 37, + 61, + 84, + 211, + 116, + 111, + 165, + 124, + 84, + 23, + 178, + 97, + 104, + 113, + 27, + 73, + 2, + 28, + 102, + 30, + 203, + 210, + 4, + 140, + 154, + 16, + 241, + 196, + 169, + 232, + 37, + 61, + 171, + 55, + 96, + 32, + 50, + 245, + 130, + 204, + 213, + 104, + 208, + 29, + 124, + 60, + 165, + 84, + 144, + 240, + 209, + 55, + 93, + 194, + 82, + 144, + 58, + 227, + 20, + 132, + 29, + 150, + 231, + 113, + 10, + 79, + 194, + 118, + 95, + 167, + 234, + 221, + 115, + 40, + 206, + 92, + 159, + 131, + 198, + 36, + 150, + 103, + 34, + 156, + 243, + 152, + 84, + 115, + 103, + 161, + 239, + 119, + 133, + 187, + 3, + 233, + 74, + 29, + 203, + 79, + 165, + 119, + 17, + 63, + 240, + 156, + 6, + 83, + 103, + 1, + 89, + 193, + 175, + 125, + 48, + 139, + 122, + 142, + 32, + 209, + 160, + 59, + 84, + 225, + 16, + 65, + 210, + 17, + 174, + 236, + 220, + 232, + 152, + 165, + 18, + 156, + 247, + 84, + 123, + 114, + 193, + 34, + 158, + 204, + 92, + 46, + 16, + 91, + 159, + 177, + 1, + 15, + 200, + 59, + 100, + 222, + 105, + 149, + 127, + 19, + 62, + 231, + 158, + 4, + 103, + 64, + 238, + 12, + 191, + 52, + 164, + 39, + 65, + 134, + 25, + 4, + 196, + 183, + 117, + 55, + 112, + 7, + 2, + 194, + 209, + 133, + 1, + 213, + 16, + 199, + 54, + 239, + 167, + 110, + 40, + 182, + 93, + 182, + 15, + 183, + 147, + 152, + 105, + 16, + 54, + 50, + 124, + 131, + 67, + 203, + 146, + 243, + 77, + 15, + 93, + 240, + 38, + 80, + 100, + 52, + 244, + 61, + 211, + 145, + 65, + 178, + 12, + 211, + 225, + 208, + 118, + 199, + 38, + 214, + 29, + 164, + 119, + 104, + 81, + 20, + 110, + 162, + 35, + 190, + 101, + 139, + 177, + 112, + 218, + 192, + 239, + 208, + 111, + 230, + 105, + 240, + 221, + 152, + 249, + 0, + 227, + 60, + 247, + 14, + 121, + 229, + 43, + 105, + 63, + 206, + 242, + 189, + 252, + 227, + 112, + 90, + 140, + 50, + 83, + 233, + 230, + 41, + 15, + 137, + 99, + 148, + 153, + 142, + 134, + 158, + 80, + 61, + 182, + 213, + 183, + 30, + 62, + 50, + 141, + 46, + 36, + 129, + 4, + 137, + 228, + 68, + 224, + 131, + 4, + 146, + 109, + 234, + 220, + 33, + 14, + 19, + 48, + 187, + 116, + 58, + 116, + 81, + 76, + 12, + 9, + 211, + 234, + 181, + 34, + 76, + 238, + 75, + 38, + 235, + 103, + 186, + 119, + 92, + 79, + 11, + 67, + 251, + 213, + 73, + 224, + 90, + 10, + 170, + 250, + 90, + 189, + 146, + 12, + 117, + 189, + 200, + 205, + 187, + 228, + 195, + 94, + 149, + 115, + 247, + 202, + 128, + 51, + 27, + 155, + 40, + 54, + 176, + 147, + 204, + 192, + 56, + 163, + 62, + 204, + 223, + 128, + 101, + 104, + 247, + 145, + 14, + 154, + 201, + 162, + 204, + 107, + 116, + 50, + 191, + 205, + 79, + 37, + 165, + 100, + 189, + 147, + 19, + 12, + 223, + 146, + 83, + 172, + 211, + 176, + 60, + 4, + 250, + 156, + 219, + 219, + 148, + 65, + 96, + 79, + 181, + 109, + 47, + 150, + 107, + 193, + 251, + 61, + 229, + 73, + 57, + 220, + 86, + 119, + 219, + 69, + 8, + 103, + 126, + 211, + 180, + 123, + 59, + 38, + 14, + 93, + 231, + 163, + 212, + 240, + 204, + 161, + 121, + 56, + 130, + 34, + 167, + 226, + 175, + 83, + 120, + 70, + 65, + 77, + 253, + 88, + 38, + 127, + 37, + 84, + 225, + 172, + 241, + 14, + 120, + 134, + 103, + 103, + 248, + 78, + 192, + 51, + 194, + 158, + 46, + 134, + 135, + 23, + 28, + 121, + 209, + 30, + 93, + 152, + 39, + 28, + 38, + 54, + 186, + 131, + 228, + 102, + 69, + 231, + 24, + 140, + 56, + 166, + 225, + 2, + 79, + 244, + 189, + 201, + 211, + 223, + 27, + 186, + 199, + 35, + 42, + 184, + 84, + 237, + 119, + 202, + 76, + 146, + 168, + 224, + 82, + 183, + 120, + 254, + 101, + 171, + 115, + 165, + 201, + 247, + 50, + 193, + 11, + 204, + 164, + 135, + 68, + 194, + 181, + 43, + 68, + 60, + 116, + 106, + 89, + 12, + 230, + 249, + 80, + 224, + 212, + 169, + 101, + 129, + 79, + 75, + 17, + 190, + 247, + 210, + 140, + 106, + 148, + 237, + 211, + 26, + 89, + 207, + 25, + 17, + 235, + 254, + 94, + 223, + 67, + 127, + 239, + 216, + 147, + 118, + 109, + 8, + 12, + 74, + 58, + 34, + 213, + 102, + 143, + 204, + 52, + 9, + 156, + 116, + 217, + 22, + 146, + 133, + 77, + 72, + 214, + 187, + 9, + 105, + 194, + 119, + 211, + 44, + 229, + 3, + 159, + 54, + 63, + 65, + 205, + 177, + 116, + 42, + 115, + 16, + 80, + 183, + 109, + 53, + 252, + 204, + 69, + 123, + 135, + 179, + 100, + 187, + 150, + 82, + 103, + 143, + 244, + 154, + 48, + 156, + 59, + 105, + 179, + 145, + 116, + 62, + 53, + 157, + 181, + 157, + 54, + 160, + 219, + 58, + 58, + 1, + 243, + 133, + 105, + 54, + 250, + 169, + 52, + 207, + 192, + 167, + 71, + 220, + 115, + 178, + 253, + 22, + 229, + 115, + 141, + 239, + 54, + 91, + 82, + 223, + 188, + 255, + 121, + 53, + 134, + 150, + 160, + 44, + 32, + 213, + 245, + 220, + 15, + 240, + 210, + 6, + 209, + 237, + 7, + 55, + 195, + 255, + 198, + 58, + 187, + 71, + 156, + 18, + 206, + 1, + 35, + 247, + 100, + 120, + 226, + 12, + 189, + 241, + 230, + 57, + 222, + 134, + 182, + 165, + 111, + 20, + 121, + 16, + 173, + 242, + 188, + 25, + 17, + 36, + 185, + 201, + 216, + 19, + 148, + 116, + 27, + 22, + 35, + 208, + 73, + 141, + 180, + 247, + 0, + 218, + 38, + 231, + 180, + 143, + 131, + 249, + 204, + 21, + 151, + 226, + 135, + 101, + 94, + 230, + 46, + 244, + 142, + 129, + 233, + 134, + 9, + 7, + 68, + 213, + 135, + 151, + 241, + 109, + 169, + 102, + 219, + 128, + 110, + 211, + 186, + 14, + 131, + 249, + 20, + 198, + 234, + 52, + 14, + 36, + 119, + 64, + 161, + 60, + 109, + 112, + 53, + 233, + 91, + 154, + 97, + 3, + 230, + 1, + 157, + 30, + 195, + 193, + 238, + 82, + 94, + 169, + 217, + 92, + 237, + 171, + 85, + 229, + 171, + 189, + 158, + 112, + 190, + 13, + 122, + 217, + 77, + 56, + 222, + 72, + 209, + 162, + 155, + 110, + 252, + 217, + 214, + 126, + 5, + 68, + 43, + 215, + 199, + 33, + 201, + 46, + 12, + 102, + 166, + 54, + 46, + 238, + 136, + 232, + 51, + 94, + 233, + 226, + 190, + 55, + 173, + 248, + 86, + 58, + 219, + 93, + 138, + 230, + 166, + 101, + 197, + 225, + 64, + 91, + 25, + 196, + 164, + 209, + 178, + 66, + 116, + 65, + 126, + 219, + 206, + 198, + 217, + 55, + 21, + 31, + 173, + 70, + 89, + 65, + 168, + 248, + 166, + 123, + 58, + 196, + 47, + 77, + 255, + 46, + 220, + 189, + 236, + 113, + 216, + 70, + 202, + 130, + 181, + 133, + 157, + 230, + 69, + 35, + 88, + 91, + 156, + 143, + 185, + 11, + 14, + 214, + 89, + 113, + 162, + 200, + 176, + 214, + 148, + 70, + 228, + 11, + 23, + 152, + 88, + 26, + 63, + 223, + 28, + 197, + 198, + 18, + 29, + 114, + 35, + 189, + 64, + 217, + 66, + 188, + 146, + 190, + 152, + 202, + 41, + 88, + 245, + 122, + 169, + 119, + 161, + 2, + 206, + 43, + 129, + 175, + 179, + 101, + 169, + 97, + 171, + 222, + 57, + 190, + 9, + 87, + 117, + 215, + 248, + 67, + 79, + 70, + 234, + 47, + 175, + 206, + 54, + 15, + 11, + 1, + 227, + 215, + 237, + 208, + 220, + 208, + 245, + 180, + 119, + 121, + 50, + 96, + 223, + 238, + 52, + 128, + 151, + 96, + 84, + 177, + 191, + 57, + 130, + 215, + 81, + 51, + 39, + 24, + 184, + 116, + 15, + 53, + 163, + 46, + 47, + 244, + 181, + 141, + 78, + 62, + 25, + 199, + 237, + 94, + 181, + 152, + 167, + 14, + 239, + 20, + 33, + 252, + 42, + 72, + 189, + 14, + 167, + 237, + 11, + 181, + 78, + 35, + 16, + 96, + 144, + 119, + 58, + 112, + 76, + 12, + 169, + 27, + 166, + 58, + 45, + 182, + 210, + 4, + 165, + 81, + 167, + 88, + 161, + 36, + 239, + 101, + 233, + 131, + 131, + 96, + 242, + 204, + 179, + 124, + 78, + 129, + 179, + 9, + 107, + 216, + 204, + 153, + 242, + 159, + 75, + 254, + 89, + 137, + 134, + 124, + 185, + 120, + 19, + 136, + 93, + 151, + 209, + 27, + 203, + 111, + 12, + 174, + 124, + 103, + 245, + 141, + 236, + 17, + 50, + 88, + 184, + 40, + 110, + 3, + 130, + 135, + 103, + 21, + 76, + 198, + 129, + 171, + 49, + 233, + 48, + 240, + 49, + 90, + 28, + 247, + 104, + 139, + 71, + 88, + 38, + 68, + 108, + 39, + 114, + 30, + 46, + 105, + 23, + 144, + 225, + 157, + 72, + 161, + 91, + 212, + 174, + 244, + 129, + 147, + 19, + 194, + 5, + 58, + 71, + 227, + 240, + 149, + 8, + 97, + 50, + 165, + 22, + 238, + 219, + 46, + 233, + 251, + 27, + 220, + 25, + 78, + 64, + 18, + 178, + 247, + 145, + 154, + 11, + 157, + 170, + 24, + 67, + 246, + 30, + 73, + 243, + 27, + 82, + 221, + 58, + 97, + 225, + 99, + 233, + 97, + 100, + 12, + 202, + 210, + 184, + 9, + 144, + 173, + 144, + 147, + 165, + 197, + 126, + 51, + 61, + 44, + 32, + 58, + 139, + 140, + 182, + 190, + 106, + 102, + 4, + 183, + 26, + 243, + 168, + 147, + 119, + 226, + 135, + 81, + 108, + 162, + 185, + 183, + 236, + 105, + 137, + 102, + 192, + 146, + 18, + 68, + 190, + 91, + 122, + 216, + 28, + 224, + 220, + 153, + 1, + 199, + 83, + 97, + 12, + 178, + 45, + 173, + 18, + 253, + 229, + 78, + 69, + 27, + 115, + 189, + 236, + 93, + 92, + 2, + 192, + 163, + 1, + 3, + 25, + 10, + 139, + 59, + 107, + 45, + 25, + 14, + 54, + 44, + 21, + 254, + 213, + 120, + 93, + 217, + 66, + 23, + 134, + 121, + 15, + 82, + 174, + 43, + 82, + 183, + 67, + 196, + 78, + 20, + 230, + 204, + 157, + 183, + 15, + 47, + 143, + 56, + 44, + 150, + 84, + 218, + 255, + 29, + 47, + 19, + 15, + 220, + 223, + 82, + 161, + 217, + 169, + 167, + 185, + 128, + 202, + 72, + 167, + 197, + 223, + 104, + 153, + 228, + 12, + 172, + 71, + 101, + 223, + 27, + 120, + 104, + 206, + 141, + 239, + 137, + 27, + 15, + 109, + 166, + 105, + 204, + 151, + 108, + 190, + 31, + 240, + 169, + 215, + 237, + 191, + 183, + 21, + 79, + 2, + 19, + 53, + 205, + 202, + 61, + 60, + 215, + 105, + 48, + 131, + 148, + 148, + 116, + 188, + 88, + 229, + 73, + 62, + 44, + 240, + 251, + 59, + 123, + 68, + 94, + 80, + 55, + 24, + 163, + 83, + 185, + 250, + 50, + 219, + 239, + 16, + 145, + 255, + 103, + 65, + 183, + 149, + 200, + 39, + 132, + 128, + 56, + 88, + 183, + 96, + 40, + 238, + 146, + 33, + 238, + 155, + 62, + 159, + 134, + 248, + 37, + 189, + 219, + 209, + 117, + 14, + 71, + 58, + 226, + 78, + 9, + 55, + 59, + 140, + 96, + 15, + 226, + 199, + 9, + 249, + 222, + 215, + 35, + 253, + 119, + 41, + 228, + 27, + 11, + 204, + 136, + 27, + 187, + 88, + 68, + 4, + 87, + 201, + 151, + 210, + 119, + 172, + 228, + 147, + 5, + 134, + 98, + 179, + 211, + 41, + 29, + 193, + 108, + 90, + 74, + 129, + 235, + 22, + 243, + 77, + 11, + 95, + 215, + 198, + 248, + 55, + 92, + 225, + 2, + 152, + 231, + 184, + 124, + 199, + 98, + 190, + 17, + 21, + 107, + 158, + 234, + 115, + 74, + 185, + 138, + 138, + 213, + 242, + 176, + 167, + 123, + 23, + 32, + 28, + 227, + 194, + 52, + 230, + 48, + 189, + 142, + 35, + 204, + 140, + 26, + 95, + 208, + 196, + 17, + 102, + 38, + 185, + 165, + 216, + 27, + 119, + 178, + 55, + 91, + 174, + 6, + 133, + 138, + 157, + 58, + 173, + 20, + 23, + 129, + 76, + 209, + 148, + 185, + 47, + 155, + 46, + 41, + 135, + 19, + 181, + 80, + 80, + 73, + 103, + 40, + 159, + 47, + 88, + 232, + 188, + 163, + 76, + 105, + 78, + 33, + 99, + 66, + 96, + 201, + 163, + 107, + 79, + 193, + 20, + 5, + 137, + 92, + 174, + 45, + 132, + 168, + 194, + 242, + 74, + 171, + 152, + 43, + 233, + 194, + 27, + 142, + 246, + 219, + 96, + 201, + 130, + 101, + 171, + 145, + 27, + 205, + 11, + 33, + 212, + 103, + 169, + 97, + 78, + 73, + 163, + 42, + 120, + 13, + 219, + 186, + 180, + 102, + 212, + 1, + 111, + 121, + 125, + 41, + 160, + 118, + 234, + 20, + 117, + 203, + 235, + 203, + 205, + 61, + 63, + 87, + 61, + 86, + 173, + 226, + 58, + 107, + 101, + 194, + 216, + 95, + 184, + 21, + 76, + 153, + 96, + 152, + 251, + 36, + 30, + 182, + 91, + 58, + 192, + 108, + 53, + 146, + 126, + 69, + 5, + 92, + 83, + 147, + 129, + 239, + 149, + 229, + 25, + 1, + 118, + 100, + 212, + 88, + 9, + 6, + 126, + 196, + 42, + 23, + 162, + 61, + 30, + 214, + 95, + 9, + 18, + 87, + 187, + 209, + 147, + 152, + 198, + 109, + 16, + 134, + 65, + 37, + 183, + 31, + 62, + 133, + 117, + 34, + 239, + 80, + 159, + 153, + 185, + 63, + 220, + 243, + 11, + 214, + 102, + 15, + 0, + 200, + 33, + 170, + 227, + 192, + 62, + 27, + 223, + 99, + 137, + 168, + 110, + 191, + 106, + 126, + 78, + 91, + 137, + 132, + 84, + 87, + 127, + 235, + 56, + 128, + 64, + 125, + 206, + 168, + 113, + 251, + 92, + 207, + 167, + 205, + 112, + 26, + 250, + 237, + 23, + 210, + 223, + 182, + 5, + 57, + 79, + 220, + 133, + 155, + 132, + 130, + 139, + 64, + 137, + 110, + 137, + 170, + 91, + 66, + 193, + 216, + 51, + 105, + 240, + 158, + 235, + 57, + 202, + 255, + 23, + 10, + 190, + 34, + 20, + 124, + 230, + 72, + 190, + 143, + 69, + 137, + 242, + 232, + 172, + 40, + 126, + 85, + 149, + 110, + 31, + 252, + 14, + 200, + 177, + 239, + 217, + 126, + 54, + 198, + 143, + 64, + 99, + 119, + 105, + 132, + 181, + 131, + 83, + 191, + 80, + 82, + 210, + 199, + 193, + 21, + 58, + 116, + 78, + 87, + 32, + 146, + 213, + 200, + 38, + 197, + 200, + 56, + 240, + 153, + 27, + 190, + 156, + 21, + 93, + 72, + 209, + 220, + 91, + 39, + 104, + 129, + 180, + 64, + 100, + 204, + 180, + 219, + 220, + 7, + 225, + 14, + 141, + 193, + 223, + 25, + 82, + 235, + 211, + 144, + 237, + 179, + 106, + 182, + 227, + 67, + 107, + 238, + 102, + 171, + 230, + 130, + 66, + 51, + 59, + 176, + 81, + 179, + 68, + 72, + 17, + 135, + 147, + 210, + 215, + 107, + 35, + 152, + 222, + 231, + 154, + 98, + 184, + 160, + 152, + 146, + 245, + 79, + 73, + 71, + 12, + 72, + 156, + 50, + 235, + 14, + 115, + 15, + 101, + 1, + 122, + 10, + 56, + 29, + 30, + 162, + 34, + 208, + 204, + 195, + 166, + 31, + 42, + 161, + 16, + 89, + 61, + 111, + 21, + 74, + 32, + 232, + 8, + 209, + 32, + 139, + 240, + 120, + 108, + 84, + 206, + 144, + 121, + 136, + 73, + 82, + 109, + 92, + 119, + 72, + 210, + 110, + 57, + 17, + 1, + 148, + 99, + 96, + 167, + 231, + 151, + 197, + 44, + 62, + 71, + 99, + 223, + 9, + 202, + 19, + 132, + 53, + 194, + 17, + 160, + 237, + 164, + 36, + 18, + 204, + 36, + 31, + 127, + 84, + 119, + 176, + 110, + 135, + 207, + 148, + 66, + 60, + 13, + 212, + 114, + 251, + 158, + 83, + 168, + 141, + 96, + 42, + 167, + 96, + 210, + 59, + 65, + 201, + 97, + 198, + 101, + 60, + 27, + 73, + 151, + 28, + 145, + 27, + 35, + 213, + 45, + 212, + 129, + 161, + 219, + 116, + 148, + 42, + 182, + 238, + 10, + 236, + 154, + 124, + 209, + 1, + 155, + 9, + 215, + 108, + 92, + 225, + 193, + 102, + 34, + 185, + 48, + 224, + 123, + 9, + 98, + 29, + 232, + 8, + 181, + 85, + 52, + 38, + 211, + 97, + 82, + 160, + 101, + 215, + 193, + 152, + 26, + 73, + 174, + 6, + 250, + 159, + 79, + 117, + 132, + 50, + 36, + 21, + 129, + 156, + 42, + 19, + 21, + 100, + 229, + 76, + 128, + 242, + 70, + 29, + 242, + 81, + 235, + 135, + 63, + 192, + 26, + 29, + 111, + 133, + 199, + 85, + 8, + 80, + 36, + 117, + 113, + 62, + 188, + 58, + 50, + 129, + 48, + 87, + 200, + 29, + 250, + 66, + 7, + 38, + 98, + 121, + 111, + 127, + 238, + 245, + 206, + 51, + 157, + 111, + 151, + 139, + 175, + 218, + 140, + 15, + 181, + 78, + 11, + 220, + 71, + 234, + 204, + 219, + 197, + 145, + 170, + 45, + 138, + 158, + 16, + 99, + 186, + 96, + 0, + 98, + 152, + 60, + 56, + 54, + 180, + 146, + 110, + 181, + 55, + 118, + 141, + 154, + 130, + 195, + 177, + 231, + 183, + 167, + 250, + 78, + 218, + 19, + 118, + 192, + 65, + 130, + 187, + 4, + 178, + 21, + 109, + 190, + 56, + 109, + 129, + 122, + 218, + 4, + 234, + 189, + 35, + 175, + 0, + 38, + 49, + 118, + 122, + 31, + 47, + 152, + 174, + 169, + 69, + 211, + 37, + 27, + 204, + 239, + 202, + 250, + 120, + 70, + 204, + 96, + 209, + 131, + 156, + 93, + 158, + 21, + 49, + 131, + 139, + 211, + 205, + 187, + 132, + 10, + 46, + 73, + 88, + 30, + 46, + 92, + 21, + 88, + 88, + 9, + 247, + 78, + 165, + 138, + 14, + 68, + 211, + 27, + 71, + 154, + 24, + 223, + 227, + 230, + 169, + 23, + 218, + 187, + 153, + 226, + 49, + 1, + 175, + 181, + 58, + 173, + 209, + 121, + 130, + 136, + 175, + 212, + 146, + 77, + 254, + 90, + 237, + 133, + 239, + 20, + 48, + 25, + 121, + 92, + 186, + 144, + 26, + 217, + 99, + 17, + 200, + 69, + 142, + 169, + 247, + 85, + 105, + 229, + 181, + 111, + 234, + 247, + 140, + 5, + 248, + 113, + 132, + 66, + 194, + 40, + 57, + 67, + 9, + 223, + 135, + 188, + 57, + 168, + 120, + 42, + 148, + 61, + 102, + 228, + 109, + 163, + 90, + 3, + 22, + 147, + 52, + 90, + 154, + 137, + 128, + 13, + 145, + 45, + 203, + 183, + 138, + 239, + 83, + 85, + 130, + 103, + 98, + 254, + 165, + 176, + 38, + 117, + 122, + 99, + 46, + 7, + 99, + 73, + 95, + 183, + 53, + 34, + 114, + 102, + 223, + 22, + 70, + 12, + 218, + 185, + 133, + 145, + 79, + 64, + 242, + 244, + 114, + 144, + 87, + 222, + 192, + 219, + 66, + 55, + 173, + 170, + 246, + 43, + 105, + 239, + 151, + 98, + 224, + 43, + 81, + 222, + 169, + 148, + 142, + 192, + 5, + 83, + 74, + 248, + 233, + 240, + 124, + 193, + 64, + 78, + 213, + 235, + 143, + 149, + 225, + 157, + 20, + 170, + 84, + 132, + 157, + 91, + 98, + 77, + 158, + 222, + 107, + 137, + 181, + 134, + 229, + 76, + 160, + 234, + 117, + 86, + 181, + 230, + 15, + 99, + 81, + 25, + 111, + 197, + 211, + 132, + 7, + 168, + 88, + 202, + 117, + 62, + 157, + 15, + 11, + 228, + 158, + 29, + 23, + 184, + 77, + 13, + 247, + 239, + 70, + 187, + 242, + 198, + 109, + 90, + 52, + 34, + 127, + 102, + 90, + 216, + 151, + 217, + 178, + 181, + 76, + 177, + 52, + 25, + 42, + 159, + 242, + 86, + 253, + 235, + 13, + 97, + 138, + 193, + 112, + 47, + 194, + 228, + 41, + 132, + 114, + 159, + 56, + 23, + 193, + 171, + 23, + 118, + 168, + 138, + 158, + 122, + 102, + 56, + 37, + 4, + 210, + 26, + 31, + 30, + 128, + 145, + 152, + 165, + 69, + 122, + 233, + 106, + 118, + 40, + 142, + 139, + 162, + 126, + 52, + 134, + 75, + 235, + 156, + 96, + 147, + 104, + 139, + 9, + 142, + 133, + 180, + 240, + 204, + 225, + 202, + 17, + 24, + 53, + 229, + 142, + 116, + 33, + 73, + 101, + 131, + 80, + 19, + 74, + 158, + 32, + 73, + 93, + 134, + 17, + 44, + 64, + 99, + 112, + 52, + 6, + 59, + 128, + 140, + 14, + 3, + 182, + 181, + 182, + 240, + 152, + 217, + 37, + 232, + 123, + 127, + 211, + 173, + 182, + 234, + 26, + 68, + 38, + 166, + 251, + 82, + 141, + 54, + 238, + 27, + 198, + 108, + 203, + 123, + 234, + 133, + 248, + 76, + 25, + 101, + 27, + 61, + 78, + 43, + 151, + 2, + 7, + 194, + 64, + 15, + 205, + 113, + 91, + 155, + 60, + 20, + 134, + 35, + 167, + 187, + 17, + 85, + 40, + 206, + 59, + 161, + 2, + 140, + 224, + 107, + 228, + 42, + 236, + 115, + 20, + 100, + 8, + 205, + 148, + 82, + 220, + 236, + 95, + 141, + 74, + 192, + 34, + 214, + 232, + 17, + 137, + 58, + 227, + 69, + 106, + 249, + 187, + 227, + 9, + 174, + 176, + 13, + 160, + 44, + 48, + 146, + 198, + 151, + 54, + 134, + 68, + 196, + 243, + 17, + 202, + 241, + 6, + 183, + 175, + 244, + 59, + 16, + 244, + 221, + 94, + 22, + 141, + 114, + 62, + 94, + 121, + 242, + 211, + 123, + 209, + 18, + 67, + 205, + 103, + 212, + 72, + 54, + 15, + 49, + 159, + 185, + 167, + 85, + 210, + 190, + 217, + 125, + 183, + 67, + 148, + 222, + 108, + 223, + 27, + 103, + 129, + 52, + 7, + 172, + 49, + 211, + 97, + 120, + 217, + 114, + 60, + 153, + 206, + 110, + 179, + 147, + 130, + 136, + 216, + 152, + 205, + 27, + 4, + 42, + 143, + 203, + 253, + 12, + 220, + 43, + 116, + 90, + 13, + 28, + 174, + 136, + 50, + 52, + 201, + 221, + 200, + 207, + 163, + 12, + 29, + 61, + 237, + 249, + 15, + 67, + 209, + 182, + 171, + 205, + 17, + 188, + 137, + 198, + 9, + 5, + 75, + 116, + 246, + 148, + 138, + 174, + 186, + 61, + 219, + 95, + 16, + 98, + 14, + 33, + 170, + 69, + 192, + 20, + 123, + 113, + 31, + 7, + 106, + 134, + 94, + 38, + 109, + 97, + 46, + 229, + 132, + 149, + 143, + 230, + 27, + 97, + 130, + 90, + 10, + 118, + 228, + 143, + 32, + 20, + 224, + 116, + 46, + 177, + 61, + 196, + 81, + 200, + 192, + 10, + 215, + 237, + 75, + 100, + 205, + 183, + 81, + 84, + 202, + 144, + 178, + 94, + 129, + 171, + 172, + 9, + 62, + 181, + 19, + 80, + 51, + 132, + 193, + 43, + 173, + 4, + 122, + 189, + 197, + 197, + 25, + 168, + 211, + 52, + 36, + 140, + 214, + 153, + 41, + 245, + 216, + 168, + 239, + 224, + 149, + 157, + 225, + 129, + 116, + 87, + 125, + 112, + 136, + 144, + 209, + 0, + 228, + 52, + 206, + 242, + 16, + 119, + 9, + 223, + 61, + 196, + 156, + 97, + 173, + 149, + 167, + 83, + 165, + 242, + 187, + 18, + 254, + 146, + 120, + 145, + 95, + 231, + 108, + 181, + 102, + 208, + 169, + 141, + 128, + 27, + 211, + 225, + 111, + 27, + 119, + 168, + 44, + 200, + 47, + 40, + 40, + 59, + 52, + 86, + 8, + 203, + 240, + 166, + 32, + 106, + 161, + 14, + 177, + 130, + 41, + 75, + 244, + 90, + 87, + 169, + 67, + 114, + 228, + 114, + 121, + 11, + 238, + 66, + 141, + 202, + 171, + 229, + 192, + 111, + 169, + 93, + 124, + 83, + 101, + 183, + 88, + 96, + 41, + 2, + 223, + 98, + 114, + 182, + 224, + 178, + 176, + 247, + 176, + 33, + 123, + 120, + 217, + 250, + 230, + 62, + 236, + 79, + 194, + 153, + 118, + 91, + 218, + 144, + 8, + 24, + 55, + 10, + 140, + 238, + 8, + 112, + 223, + 95, + 39, + 37, + 4, + 60, + 117, + 53, + 250, + 40, + 7, + 142, + 207, + 43, + 87, + 158, + 189, + 23, + 165, + 96, + 46, + 152, + 212, + 153, + 44, + 181, + 16, + 166, + 199, + 35, + 216, + 3, + 116, + 108, + 123, + 116, + 189, + 159, + 83, + 188, + 221, + 92, + 5, + 26, + 109, + 181, + 145, + 64, + 104, + 206, + 148, + 121, + 253, + 138, + 43, + 208, + 59, + 173, + 127, + 12, + 251, + 128, + 37, + 212, + 24, + 175, + 128, + 161, + 122, + 145, + 153, + 211, + 224, + 79, + 9, + 139, + 219, + 80, + 159, + 2, + 175, + 57, + 27, + 81, + 46, + 156, + 14, + 34, + 150, + 118, + 124, + 237, + 73, + 153, + 183, + 178, + 109, + 144, + 188, + 181, + 77, + 141, + 112, + 67, + 167, + 220, + 43, + 228, + 148, + 49, + 53, + 192, + 125, + 153, + 127, + 164, + 79, + 60, + 15, + 24, + 107, + 174, + 206, + 132, + 93, + 1, + 20, + 107, + 74, + 55, + 56, + 116, + 232, + 82, + 9, + 183, + 132, + 78, + 0, + 76, + 13, + 212, + 37, + 157, + 125, + 149, + 229, + 126, + 53, + 175, + 253, + 241, + 99, + 237, + 157, + 198, + 128, + 0, + 218, + 27, + 93, + 177, + 98, + 78, + 196, + 197, + 46, + 85, + 116, + 191, + 53, + 220, + 82, + 114, + 178, + 206, + 212, + 144, + 228, + 32, + 203, + 58, + 21, + 118, + 97, + 60, + 163, + 177, + 72, + 187, + 244, + 40, + 28, + 111, + 14, + 162, + 78, + 39, + 123, + 137, + 42, + 35, + 53, + 22, + 168, + 122, + 205, + 18, + 174, + 61, + 164, + 104, + 77, + 130, + 49, + 173, + 211, + 200, + 126, + 78, + 64, + 25, + 169, + 119, + 249, + 195, + 174, + 168, + 247, + 168, + 222, + 133, + 103, + 51, + 147, + 167, + 38, + 31, + 188, + 238, + 10, + 187, + 91, + 218, + 14, + 131, + 81, + 188, + 2, + 79, + 93, + 196, + 8, + 144, + 34, + 8, + 171, + 107, + 89, + 134, + 47, + 25, + 70, + 200, + 124, + 35, + 188, + 56, + 128, + 166, + 228, + 22, + 75, + 187, + 235, + 178, + 230, + 164, + 85, + 139, + 161, + 132, + 179, + 78, + 19, + 35, + 21, + 166, + 122, + 35, + 10, + 37, + 26, + 110, + 158, + 232, + 220, + 66, + 99, + 171, + 208, + 163, + 250, + 250, + 156, + 161, + 208, + 174, + 224, + 220, + 87, + 244, + 234, + 24, + 48, + 210, + 201, + 242, + 161, + 81, + 216, + 136, + 43, + 224, + 141, + 38, + 194, + 26, + 188, + 16, + 198, + 244, + 24, + 239, + 243, + 83, + 175, + 105, + 172, + 175, + 128, + 222, + 151, + 104, + 228, + 155, + 104, + 228, + 217, + 221, + 190, + 17, + 212, + 134, + 54, + 58, + 71, + 232, + 26, + 96, + 177, + 168, + 15, + 41, + 111, + 9, + 121, + 122, + 155, + 242, + 166, + 192, + 92, + 188, + 89, + 94, + 197, + 177, + 148, + 96, + 208, + 228, + 61, + 28, + 203, + 62, + 218, + 92, + 43, + 161, + 53, + 189, + 23, + 42, + 192, + 24, + 194, + 69, + 195, + 70, + 31, + 7, + 5, + 158, + 115, + 165, + 133, + 198, + 241, + 89, + 109, + 176, + 206, + 206, + 240, + 232, + 201, + 17, + 35, + 234, + 141, + 238, + 133, + 115, + 69, + 142, + 104, + 190, + 205, + 189, + 162, + 216, + 252, + 203, + 7, + 91, + 98, + 227, + 136, + 196, + 10, + 236, + 140, + 84, + 13, + 228, + 105, + 26, + 91, + 138, + 68, + 242, + 151, + 135, + 198, + 64, + 200, + 195, + 78, + 228, + 57, + 74, + 84, + 210, + 13, + 123, + 197, + 174, + 24, + 105, + 54, + 108, + 49, + 146, + 238, + 131, + 143, + 28, + 22, + 14, + 78, + 137, + 246, + 205, + 11, + 26, + 231, + 132, + 129, + 164, + 141, + 21, + 45, + 174, + 1, + 195, + 242, + 106, + 241, + 59, + 94, + 209, + 1, + 20, + 45, + 206, + 155, + 175, + 115, + 160, + 200, + 48, + 55, + 148, + 170, + 99, + 137, + 62, + 60, + 57, + 51, + 180, + 115, + 139, + 189, + 113, + 204, + 78, + 98, + 113, + 33, + 158, + 194, + 191, + 119, + 150, + 163, + 199, + 118, + 24, + 77, + 182, + 234, + 102, + 176, + 40, + 170, + 242, + 62, + 161, + 91, + 68, + 26, + 98, + 106, + 130, + 252, + 94, + 6, + 63, + 200, + 224, + 38, + 99, + 245, + 58, + 76, + 105, + 193, + 254, + 124, + 63, + 135, + 169, + 217, + 233, + 9, + 114, + 51, + 152, + 138, + 249, + 223, + 51, + 54, + 241, + 149, + 102, + 247, + 208, + 131, + 232, + 197, + 239, + 211, + 153, + 77, + 149, + 69, + 219, + 153, + 55, + 101, + 167, + 122, + 59, + 6, + 19, + 74, + 53, + 58, + 229, + 150, + 246, + 149, + 187, + 21, + 43, + 97, + 250, + 212, + 23, + 151, + 109, + 27, + 223, + 184, + 137, + 61, + 26, + 97, + 55, + 65, + 3, + 90, + 57, + 144, + 87, + 219, + 75, + 85, + 59, + 209, + 153, + 61, + 56, + 27, + 76, + 153, + 141, + 184, + 219, + 205, + 25, + 30, + 211, + 41, + 197, + 69, + 153, + 196, + 183, + 219, + 137, + 130, + 201, + 21, + 121, + 220, + 157, + 76, + 174, + 1, + 104, + 155, + 252, + 201, + 178, + 133, + 191, + 82, + 114, + 100, + 220, + 216, + 39, + 153, + 106, + 229, + 150, + 241, + 82, + 253, + 213, + 164, + 35, + 86, + 118, + 152, + 138, + 254, + 45, + 57, + 66, + 204, + 149, + 63, + 103, + 163, + 241, + 194, + 110, + 182, + 215, + 19, + 244, + 164, + 73, + 188, + 19, + 105, + 220, + 107, + 120, + 24, + 161, + 110, + 241, + 104, + 44, + 130, + 228, + 28, + 101, + 11, + 127, + 240, + 46, + 31, + 160, + 223, + 225, + 253, + 218, + 70, + 187, + 0, + 221, + 26, + 125, + 67, + 239, + 110, + 244, + 235, + 54, + 5, + 247, + 185, + 151, + 245, + 101, + 219, + 23, + 163, + 85, + 93, + 223, + 89, + 97, + 112, + 83, + 136, + 153, + 228, + 10, + 190, + 211, + 238, + 221, + 1, + 227, + 60, + 249, + 191, + 200, + 146, + 107, + 98, + 105, + 222, + 72, + 19, + 180, + 210, + 238, + 231, + 180, + 191, + 102, + 16, + 247, + 28, + 198, + 62, + 8, + 217, + 122, + 47, + 205, + 21, + 50, + 8, + 174, + 70, + 232, + 140, + 48, + 232, + 136, + 233, + 212, + 229, + 121, + 198, + 69, + 211, + 73, + 69, + 217, + 182, + 40, + 53, + 48, + 56, + 237, + 149, + 35, + 208, + 71, + 210, + 80, + 182, + 67, + 117, + 203, + 203, + 114, + 229, + 108, + 215, + 160, + 21, + 244, + 12, + 109, + 28, + 44, + 210, + 10, + 122, + 70, + 62, + 67, + 120, + 227, + 158, + 113, + 165, + 217, + 186, + 178, + 99, + 92, + 160, + 111, + 87, + 191, + 127, + 216, + 180, + 73, + 88, + 191, + 172, + 70, + 115, + 117, + 150, + 176, + 126, + 241, + 148, + 208, + 250, + 48, + 140, + 120, + 48, + 8, + 42, + 8, + 32, + 205, + 90, + 152, + 72, + 120, + 39, + 243, + 70, + 242, + 29, + 71, + 234, + 206, + 68, + 75, + 89, + 45, + 87, + 88, + 235, + 87, + 218, + 158, + 195, + 60, + 92, + 95, + 48, + 196, + 27, + 141, + 17, + 101, + 32, + 32, + 161, + 101, + 123, + 96, + 185, + 92, + 171, + 81, + 231, + 126, + 238, + 121, + 69, + 250, + 59, + 140, + 50, + 91, + 160, + 234, + 218, + 25, + 19, + 134, + 48, + 25, + 115, + 62, + 205, + 147, + 249, + 237, + 79, + 187, + 156, + 103, + 134, + 193, + 57, + 125, + 238, + 148, + 69, + 189, + 162, + 71, + 94, + 233, + 16, + 224, + 2, + 58, + 122, + 205, + 24, + 235, + 176, + 127, + 247, + 48, + 30, + 108, + 132, + 202, + 131, + 60, + 160, + 56, + 211, + 77, + 239, + 157, + 252, + 83, + 72, + 192, + 167, + 55, + 58, + 241, + 42, + 57, + 12, + 201, + 211, + 11, + 222, + 9, + 241, + 189, + 57, + 38, + 147, + 52, + 6, + 112, + 135, + 99, + 50, + 249, + 180, + 205, + 208, + 185, + 179, + 163, + 95, + 241, + 76, + 81, + 184, + 236, + 126, + 51, + 240, + 226, + 97, + 51, + 188, + 198, + 50, + 47, + 75, + 203, + 43, + 252, + 208, + 111, + 232, + 13, + 25, + 178, + 139, + 160, + 103, + 191, + 38, + 234, + 217, + 123, + 38, + 227, + 145, + 140, + 87, + 203, + 111, + 165, + 82, + 229, + 165, + 217, + 182, + 95, + 174, + 149, + 19, + 229, + 207, + 56, + 90, + 74, + 107, + 130, + 218, + 224, + 16, + 200, + 238, + 0, + 53, + 19, + 7, + 16, + 14, + 223, + 2, + 106, + 104, + 116, + 9, + 158, + 74, + 183, + 209, + 114, + 9, + 238, + 27, + 49, + 245, + 2, + 98, + 98, + 48, + 38, + 97, + 35, + 131, + 91, + 9, + 144, + 5, + 83, + 111, + 227, + 122, + 226, + 128, + 85, + 27, + 92, + 66, + 47, + 135, + 241, + 126, + 14, + 70, + 132, + 141, + 179, + 8, + 99, + 48, + 15, + 242, + 79, + 7, + 13, + 255, + 156, + 219, + 65, + 211, + 114, + 189, + 218, + 57, + 183, + 131, + 101, + 112, + 186, + 151, + 119, + 206, + 194, + 203, + 125, + 163, + 220, + 232, + 135, + 156, + 198, + 144, + 9, + 171, + 54, + 58, + 116, + 70, + 12, + 153, + 142, + 165, + 122, + 76, + 35, + 125, + 35, + 111, + 162, + 76, + 190, + 60, + 187, + 66, + 49, + 42, + 156, + 179, + 49, + 207, + 8, + 35, + 78, + 134, + 211, + 210, + 227, + 247, + 119, + 121, + 194, + 243, + 152, + 60, + 175, + 120, + 207, + 61, + 143, + 35, + 241, + 79, + 190, + 193, + 78, + 249, + 230, + 65, + 20, + 173, + 112, + 14, + 158, + 157, + 126, + 61, + 49, + 67, + 204, + 85, + 123, + 245, + 217, + 94, + 90, + 38, + 27, + 245, + 248, + 203, + 14, + 172, + 117, + 145, + 240, + 45, + 196, + 113, + 165, + 237, + 253, + 33, + 58, + 18, + 25, + 142, + 236, + 41, + 58, + 82, + 239, + 195, + 63, + 22, + 86, + 24, + 21, + 49, + 191, + 153, + 170, + 206, + 81, + 138, + 250, + 104, + 156, + 86, + 176, + 198, + 159, + 162, + 244, + 233, + 171, + 22, + 126, + 175, + 89, + 44, + 175, + 112, + 174, + 224, + 39, + 228, + 229, + 189, + 111, + 52, + 32, + 211, + 116, + 177, + 124, + 56, + 204, + 231, + 19, + 84, + 103, + 167, + 117, + 203, + 24, + 48, + 201, + 114, + 235, + 150, + 93, + 192, + 234, + 176, + 216, + 13, + 55, + 147, + 229, + 157, + 202, + 249, + 176, + 51, + 81, + 76, + 99, + 96, + 235, + 77, + 237, + 159, + 78, + 192, + 198, + 76, + 193, + 129, + 120, + 111, + 177, + 94, + 128, + 95, + 204, + 157, + 137, + 29, + 1, + 126, + 9, + 98, + 250, + 141, + 7, + 209, + 113, + 103, + 103, + 101, + 97, + 55, + 148, + 187, + 47, + 159, + 122, + 246, + 96, + 32, + 66, + 169, + 132, + 243, + 125, + 156, + 203, + 52, + 254, + 84, + 10, + 41, + 158, + 74, + 106, + 12, + 150, + 228, + 89, + 54, + 79, + 148, + 97, + 219, + 76, + 22, + 133, + 33, + 51, + 157, + 139, + 29, + 30, + 123, + 164, + 56, + 161, + 229, + 169, + 66, + 53, + 148, + 85, + 226, + 198, + 79, + 108, + 179, + 182, + 41, + 12, + 26, + 14, + 50, + 157, + 97, + 103, + 51, + 2, + 89, + 82, + 94, + 227, + 105, + 42, + 221, + 238, + 17, + 88, + 164, + 3, + 174, + 180, + 130, + 127, + 29, + 135, + 33, + 129, + 165, + 241, + 23, + 119, + 112, + 24, + 236, + 50, + 106, + 174, + 90, + 199, + 223, + 19, + 123, + 225, + 108, + 24, + 25, + 70, + 233, + 164, + 157, + 190, + 101, + 115, + 194, + 10, + 164, + 111, + 15, + 8, + 88, + 219, + 120, + 78, + 125, + 165, + 95, + 183, + 193, + 255, + 230, + 244, + 122, + 36, + 1, + 86, + 149, + 70, + 118, + 18, + 82, + 232, + 98, + 150, + 164, + 233, + 177, + 165, + 0, + 186, + 36, + 132, + 108, + 127, + 112, + 8, + 51, + 77, + 1, + 178, + 209, + 73, + 211, + 194, + 25, + 230, + 53, + 148, + 22, + 213, + 239, + 150, + 243, + 101, + 209, + 97, + 97, + 227, + 36, + 16, + 61, + 128, + 33, + 78, + 65, + 198, + 119, + 51, + 145, + 71, + 12, + 181, + 167, + 119, + 178, + 119, + 20, + 92, + 162, + 231, + 248, + 61, + 238, + 184, + 15, + 113, + 232, + 173, + 16, + 250, + 141, + 101, + 227, + 33, + 78, + 237, + 100, + 217, + 204, + 105, + 41, + 243, + 234, + 251, + 237, + 249, + 7, + 130, + 161, + 167, + 122, + 153, + 115, + 187, + 19, + 115, + 76, + 33, + 104, + 189, + 52, + 56, + 233, + 240, + 215, + 224, + 1, + 76, + 156, + 42, + 102, + 78, + 125, + 77, + 4, + 216, + 53, + 207, + 196, + 235, + 37, + 57, + 132, + 52, + 198, + 6, + 53, + 230, + 166, + 176, + 56, + 216, + 18, + 74, + 239, + 73, + 159, + 15, + 237, + 60, + 142, + 100, + 55, + 236, + 204, + 67, + 95, + 19, + 86, + 94, + 129, + 63, + 164, + 210, + 93, + 82, + 22, + 85, + 93, + 240, + 67, + 185, + 226, + 252, + 102, + 144, + 3, + 17, + 20, + 77, + 26, + 137, + 45, + 168, + 129, + 230, + 237, + 201, + 34, + 159, + 69, + 148, + 109, + 115, + 141, + 6, + 12, + 234, + 92, + 201, + 34, + 2, + 195, + 139, + 149, + 92, + 235, + 109, + 206, + 152, + 82, + 51, + 12, + 37, + 227, + 42, + 116, + 226, + 45, + 107, + 48, + 62, + 141, + 208, + 120, + 211, + 210, + 60, + 92, + 129, + 62, + 129, + 200, + 210, + 245, + 114, + 206, + 54, + 226, + 17, + 248, + 255, + 19, + 161, + 121, + 0, + 150, + 233, + 233, + 222, + 3, + 162, + 103, + 173, + 48, + 133, + 247, + 22, + 54, + 242, + 30, + 131, + 110, + 132, + 131, + 211, + 36, + 197, + 146, + 110, + 244, + 196, + 40, + 122, + 247, + 16, + 228, + 102, + 218, + 213, + 136, + 242, + 170, + 222, + 76, + 187, + 114, + 235, + 200, + 119, + 2, + 45, + 22, + 131, + 147, + 160, + 127, + 4, + 11, + 233, + 191, + 190, + 132, + 74, + 111, + 186, + 71, + 153, + 175, + 25, + 37, + 103, + 136, + 144, + 50, + 152, + 14, + 245, + 45, + 68, + 136, + 154, + 16, + 161, + 186, + 106, + 158, + 37, + 99, + 65, + 218, + 141, + 177, + 231, + 194, + 70, + 255, + 166, + 176, + 198, + 102, + 199, + 92, + 166, + 255, + 62, + 158, + 165, + 234, + 32, + 211, + 69, + 251, + 240, + 233, + 201, + 160, + 130, + 146, + 190, + 231, + 247, + 21, + 49, + 207, + 84, + 37, + 155, + 7, + 23, + 142, + 0, + 75, + 185, + 145, + 114, + 234, + 51, + 164, + 3, + 156, + 2, + 252, + 7, + 220, + 176, + 67, + 113, + 25, + 41, + 136, + 26, + 107, + 39, + 192, + 229, + 160, + 60, + 152, + 229, + 247, + 134, + 26, + 118, + 145, + 105, + 204, + 0, + 243, + 156, + 247, + 83, + 76, + 137, + 128, + 196, + 114, + 55, + 204, + 191, + 85, + 23, + 161, + 124, + 233, + 188, + 158, + 17, + 183, + 97, + 110, + 94, + 222, + 128, + 67, + 47, + 19, + 86, + 144, + 88, + 56, + 125, + 96, + 10, + 59, + 232, + 72, + 103, + 190, + 219, + 107, + 164, + 166, + 235, + 31, + 226, + 60, + 8, + 100, + 156, + 162, + 192, + 167, + 200, + 145, + 6, + 86, + 157, + 146, + 47, + 203, + 142, + 117, + 155, + 50, + 179, + 93, + 156, + 94, + 233, + 255, + 55, + 140, + 120, + 155, + 40, + 78, + 183, + 84, + 40, + 225, + 70, + 194, + 219, + 45, + 21, + 42, + 142, + 109, + 135, + 209, + 81, + 123, + 170, + 62, + 9, + 121, + 217, + 174, + 23, + 86, + 216, + 96, + 55, + 58, + 194, + 221, + 172, + 103, + 61, + 15, + 43, + 123, + 31, + 23, + 14, + 54, + 2, + 17, + 238, + 212, + 222, + 217, + 4, + 69, + 157, + 31, + 232, + 144, + 35, + 56, + 0, + 91, + 241, + 155, + 96, + 46, + 229, + 137, + 110, + 219, + 74, + 212, + 83, + 183, + 148, + 192, + 200, + 59, + 101, + 183, + 55, + 255, + 149, + 41, + 233, + 195, + 91, + 18, + 194, + 206, + 146, + 97, + 116, + 128, + 217, + 106, + 4, + 182, + 111, + 177, + 236, + 185, + 195, + 253, + 190, + 141, + 119, + 99, + 106, + 218, + 81, + 165, + 35, + 78, + 145, + 30, + 146, + 34, + 81, + 167, + 172, + 155, + 9, + 58, + 10, + 135, + 197, + 111, + 20, + 50, + 127, + 47, + 71, + 107, + 101, + 132, + 42, + 27, + 216, + 236, + 172, + 4, + 35, + 200, + 221, + 217, + 83, + 162, + 201, + 253, + 229, + 209, + 197, + 197, + 116, + 177, + 122, + 249, + 127, + 192, + 213, + 49, + 5, + 114, + 75, + 249, + 115, + 111, + 195, + 106, + 208, + 150, + 254, + 110, + 185, + 230, + 17, + 241, + 163, + 118, + 123, + 9, + 253, + 246, + 100, + 94, + 7, + 89, + 44, + 164, + 232, + 204, + 115, + 11, + 100, + 225, + 46, + 159, + 154, + 85, + 249, + 170, + 124, + 62, + 236, + 79, + 182, + 171, + 95, + 152, + 102, + 35, + 53, + 59, + 59, + 245, + 203, + 131, + 165, + 238, + 105, + 170, + 65, + 243, + 193, + 199, + 61, + 23, + 161, + 70, + 195, + 231, + 208, + 23, + 226, + 164, + 148, + 147, + 121, + 0, + 46, + 156, + 21, + 217, + 97, + 58, + 45, + 54, + 26, + 25, + 241, + 75, + 192, + 41, + 172, + 1, + 250, + 61, + 40, + 190, + 15, + 92, + 246, + 16, + 197, + 97, + 15, + 203, + 35, + 236, + 12, + 106, + 23, + 6, + 22, + 194, + 180, + 27, + 127, + 100, + 49, + 7, + 71, + 245, + 205, + 33, + 90, + 187, + 135, + 183, + 22, + 168, + 120, + 39, + 108, + 101, + 8, + 177, + 115, + 165, + 254, + 3, + 251, + 103, + 85, + 14, + 9, + 74, + 13, + 243, + 54, + 202, + 82, + 191, + 144, + 206, + 2, + 125, + 100, + 130, + 241, + 72, + 61, + 161, + 78, + 3, + 125, + 6, + 248, + 160, + 45, + 42, + 212, + 25, + 225, + 152, + 38, + 3, + 210, + 45, + 193, + 177, + 235, + 216, + 195, + 209, + 193, + 87, + 58, + 200, + 252, + 104, + 107, + 31, + 55, + 136, + 72, + 171, + 78, + 182, + 13, + 195, + 208, + 188, + 232, + 190, + 52, + 98, + 189, + 148, + 238, + 82, + 147, + 142, + 122, + 13, + 47, + 88, + 24, + 38, + 82, + 186, + 238, + 206, + 77, + 121, + 166, + 61, + 183, + 248, + 126, + 9, + 75, + 149, + 57, + 40, + 93, + 1, + 41, + 60, + 195, + 213, + 23, + 83, + 42, + 195, + 41, + 241, + 37, + 66, + 110, + 56, + 71, + 77, + 215, + 30, + 154, + 247, + 181, + 235, + 102, + 176, + 177, + 198, + 152, + 119, + 119, + 214, + 139, + 94, + 247, + 212, + 20, + 229, + 117, + 199, + 145, + 4, + 197, + 120, + 241, + 163, + 79, + 117, + 69, + 145, + 230, + 29, + 191, + 232, + 67, + 55, + 40, + 16, + 130, + 52, + 188, + 114, + 155, + 1, + 88, + 75, + 195, + 142, + 248, + 178, + 162, + 19, + 28, + 45, + 229, + 45, + 156, + 22, + 170, + 17, + 208, + 55, + 210, + 111, + 44, + 119, + 146, + 10, + 11, + 46, + 81, + 211, + 7, + 158, + 213, + 93, + 167, + 123, + 54, + 168, + 16, + 31, + 96, + 51, + 79, + 39, + 59, + 133, + 61, + 4, + 156, + 41, + 37, + 218, + 111, + 11, + 228, + 206, + 222, + 42, + 161, + 14, + 210, + 32, + 42, + 53, + 146, + 92, + 8, + 38, + 107, + 106, + 97, + 254, + 176, + 144, + 239, + 177, + 135, + 251, + 247, + 13, + 186, + 159, + 79, + 36, + 42, + 212, + 227, + 144, + 249, + 48, + 5, + 100, + 141, + 70, + 14, + 154, + 78, + 3, + 149, + 252, + 45, + 245, + 107, + 125, + 77, + 230, + 99, + 220, + 183, + 211, + 213, + 252, + 229, + 204, + 122, + 53, + 114, + 233, + 113, + 52, + 150, + 77, + 73, + 42, + 249, + 19, + 159, + 153, + 221, + 14, + 240, + 151, + 213, + 190, + 197, + 64, + 89, + 72, + 48, + 88, + 113, + 15, + 28, + 145, + 46, + 77, + 82, + 213, + 4, + 82, + 163, + 53, + 204, + 190, + 182, + 224, + 157, + 172, + 142, + 126, + 231, + 233, + 206, + 251, + 172, + 142, + 16, + 138, + 119, + 38, + 249, + 142, + 155, + 175, + 81, + 158, + 31, + 251, + 94, + 1, + 197, + 20, + 81, + 2, + 56, + 26, + 137, + 117, + 72, + 11, + 28, + 41, + 143, + 246, + 219, + 143, + 220, + 150, + 102, + 94, + 140, + 70, + 46, + 186, + 81, + 163, + 134, + 6, + 103, + 120, + 116, + 13, + 10, + 246, + 220, + 203, + 175, + 172, + 116, + 77, + 39, + 36, + 181, + 93, + 48, + 234, + 80, + 101, + 52, + 52, + 178, + 184, + 27, + 135, + 63, + 52, + 60, + 162, + 184, + 95, + 27, + 161, + 111, + 235, + 150, + 24, + 12, + 173, + 49, + 84, + 35, + 124, + 140, + 227, + 157, + 60, + 15, + 64, + 141, + 29, + 227, + 186, + 67, + 8, + 7, + 65, + 243, + 192, + 143, + 83, + 155, + 154, + 160, + 255, + 83, + 88, + 177, + 157, + 141, + 227, + 58, + 252, + 89, + 118, + 143, + 57, + 92, + 185, + 150, + 53, + 50, + 245, + 200, + 34, + 247, + 109, + 164, + 123, + 193, + 54, + 241, + 165, + 4, + 137, + 90, + 31, + 206, + 48, + 163, + 177, + 17, + 135, + 217, + 6, + 11, + 208, + 2, + 91, + 51, + 101, + 245, + 213, + 205, + 249, + 19, + 239, + 138, + 151, + 138, + 181, + 67, + 207, + 25, + 2, + 30, + 169, + 79, + 206, + 41, + 191, + 118, + 2, + 91, + 254, + 186, + 123, + 234, + 156, + 185, + 15, + 94, + 108, + 243, + 84, + 12, + 80, + 22, + 55, + 2, + 128, + 193, + 48, + 204, + 51, + 113, + 207, + 2, + 97, + 37, + 84, + 27, + 107, + 116, + 194, + 34, + 67, + 64, + 36, + 223, + 138, + 42, + 122, + 91, + 185, + 252, + 14, + 77, + 70, + 2, + 235, + 137, + 0, + 200, + 94, + 172, + 103, + 174, + 212, + 237, + 251, + 153, + 67, + 202, + 6, + 31, + 228, + 9, + 72, + 185, + 13, + 217, + 8, + 44, + 241, + 70, + 164, + 64, + 166, + 129, + 81, + 78, + 103, + 175, + 85, + 102, + 247, + 200, + 52, + 249, + 250, + 70, + 46, + 44, + 226, + 6, + 194, + 220, + 104, + 195, + 50, + 8, + 116, + 40, + 126, + 164, + 213, + 48, + 241, + 109, + 90, + 222, + 233, + 252, + 185, + 96, + 205, + 145, + 122, + 79, + 188, + 178, + 97, + 126, + 46, + 136, + 38, + 175, + 179, + 76, + 183, + 117, + 73, + 22, + 225, + 90, + 141, + 94, + 229, + 26, + 86, + 27, + 62, + 82, + 79, + 237, + 119, + 242, + 6, + 178, + 9, + 66, + 157, + 16, + 100, + 130, + 220, + 236, + 75, + 43, + 170, + 2, + 248, + 52, + 220, + 18, + 68, + 230, + 45, + 248, + 166, + 197, + 36, + 153, + 44, + 212, + 177, + 183, + 212, + 155, + 223, + 124, + 223, + 89, + 119, + 193, + 20, + 218, + 88, + 196, + 77, + 163, + 226, + 37, + 145, + 3, + 16, + 246, + 12, + 59, + 96, + 148, + 126, + 99, + 48, + 234, + 153, + 85, + 246, + 75, + 75, + 149, + 67, + 203, + 4, + 141, + 71, + 103, + 53, + 122, + 233, + 145, + 131, + 77, + 90, + 147, + 190, + 177, + 235, + 240, + 33, + 114, + 28, + 65, + 9, + 163, + 51, + 34, + 100, + 6, + 81, + 129, + 86, + 58, + 142, + 60, + 48, + 78, + 121, + 61, + 102, + 99, + 243, + 216, + 140, + 193, + 23, + 141, + 148, + 223, + 122, + 232, + 177, + 108, + 48, + 68, + 114, + 63, + 201, + 135, + 186, + 239, + 26, + 53, + 226, + 9, + 203, + 98, + 27, + 196, + 26, + 48, + 197, + 122, + 253, + 129, + 4, + 22, + 13, + 233, + 114, + 144, + 233, + 101, + 170, + 133, + 149, + 178, + 210, + 178, + 198, + 122, + 232, + 102, + 165, + 236, + 110, + 187, + 25, + 89, + 79, + 246, + 171, + 3, + 66, + 209, + 156, + 220, + 216, + 83, + 5, + 161, + 104, + 177, + 230, + 182, + 136, + 229, + 193, + 159, + 221, + 21, + 95, + 64, + 216, + 169, + 197, + 164, + 17, + 242, + 164, + 188, + 47, + 41, + 93, + 187, + 247, + 133, + 122, + 71, + 3, + 5, + 34, + 3, + 119, + 237, + 4, + 120, + 152, + 97, + 204, + 149, + 58, + 225, + 55, + 223, + 170, + 136, + 215, + 86, + 89, + 81, + 51, + 180, + 177, + 172, + 8, + 38, + 122, + 170, + 175, + 56, + 68, + 77, + 117, + 194, + 116, + 236, + 68, + 118, + 231, + 128, + 53, + 115, + 185, + 85, + 201, + 169, + 124, + 61, + 74, + 102, + 187, + 246, + 11, + 231, + 29, + 238, + 100, + 183, + 153, + 129, + 76, + 77, + 95, + 195, + 251, + 108, + 149, + 135, + 137, + 159, + 140, + 231, + 224, + 232, + 43, + 51, + 66, + 221, + 213, + 95, + 253, + 114, + 180, + 99, + 161, + 68, + 23, + 254, + 70, + 74, + 146, + 70, + 157, + 141, + 141, + 137, + 4, + 161, + 54, + 83, + 227, + 212, + 102, + 235, + 145, + 139, + 122, + 223, + 26, + 87, + 202, + 195, + 214, + 230, + 50, + 204, + 146, + 151, + 119, + 114, + 156, + 3, + 58, + 179, + 73, + 41, + 154, + 89, + 27, + 9, + 29, + 166, + 115, + 47, + 192, + 169, + 141, + 3, + 3, + 33, + 4, + 226, + 143, + 235, + 139, + 195, + 217, + 199, + 102, + 168, + 95, + 218, + 206, + 72, + 44, + 36, + 55, + 41, + 15, + 250, + 192, + 137, + 236, + 74, + 64, + 214, + 219, + 195, + 228, + 197, + 25, + 150, + 82, + 103, + 102, + 183, + 47, + 48, + 202, + 75, + 140, + 7, + 13, + 250, + 133, + 216, + 236, + 93, + 211, + 246, + 51, + 244, + 64, + 153, + 97, + 174, + 213, + 216, + 138, + 40, + 175, + 0, + 62, + 83, + 174, + 218, + 190, + 196, + 183, + 183, + 241, + 210, + 57, + 96, + 184, + 55, + 146, + 94, + 131, + 242, + 132, + 11, + 41, + 157, + 116, + 86, + 41, + 157, + 213, + 27, + 230, + 66, + 150, + 227, + 195, + 10, + 57, + 242, + 232, + 152, + 177, + 115, + 114, + 103, + 13, + 63, + 94, + 186, + 255, + 236, + 42, + 64, + 154, + 59, + 206, + 80, + 37, + 25, + 138, + 188, + 142, + 57, + 5, + 120, + 244, + 255, + 0, + 84, + 64, + 120, + 96, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 56, + 48, + 56, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 221, + 142, + 100, + 183, + 145, + 230, + 125, + 63, + 69, + 191, + 128, + 195, + 140, + 63, + 6, + 3, + 48, + 12, + 72, + 109, + 105, + 176, + 23, + 3, + 236, + 46, + 252, + 6, + 158, + 157, + 1, + 22, + 240, + 197, + 206, + 190, + 63, + 176, + 136, + 148, + 60, + 202, + 84, + 69, + 84, + 30, + 178, + 162, + 170, + 122, + 7, + 99, + 25, + 144, + 212, + 169, + 202, + 58, + 135, + 135, + 135, + 100, + 124, + 241, + 253, + 224, + 215, + 241, + 117, + 124, + 253, + 3, + 126, + 29, + 95, + 151, + 208, + 215, + 191, + 253, + 253, + 203, + 255, + 249, + 2, + 166, + 183, + 63, + 253, + 199, + 223, + 255, + 246, + 247, + 47, + 248, + 53, + 254, + 250, + 159, + 255, + 116, + 251, + 27, + 126, + 253, + 247, + 127, + 251, + 242, + 199, + 127, + 226, + 175, + 255, + 246, + 127, + 191, + 196, + 231, + 230, + 242, + 21, + 145, + 248, + 235, + 191, + 255, + 175, + 47, + 255, + 250, + 229, + 127, + 252, + 238, + 27, + 140, + 226, + 255, + 127, + 251, + 251, + 237, + 63, + 29, + 241, + 29, + 191, + 252, + 195, + 111, + 223, + 241, + 199, + 255, + 254, + 245, + 79, + 127, + 250, + 227, + 63, + 127, + 251, + 111, + 127, + 249, + 58, + 190, + 254, + 249, + 207, + 63, + 254, + 229, + 219, + 151, + 31, + 255, + 250, + 229, + 143, + 63, + 203, + 87, + 20, + 152, + 241, + 63, + 251, + 250, + 215, + 127, + 253, + 130, + 191, + 93, + 42, + 136, + 249, + 66, + 99, + 255, + 250, + 215, + 248, + 222, + 63, + 32, + 3, + 153, + 177, + 240, + 250, + 250, + 215, + 127, + 249, + 250, + 167, + 49, + 244, + 219, + 159, + 191, + 254, + 245, + 127, + 127, + 49, + 96, + 90, + 72, + 113, + 49, + 191, + 254, + 57, + 221, + 254, + 124, + 1, + 42, + 226, + 176, + 245, + 219, + 7, + 235, + 246, + 193, + 79, + 127, + 221, + 250, + 213, + 196, + 48, + 121, + 176, + 96, + 114, + 9, + 131, + 143, + 190, + 209, + 192, + 6, + 49, + 206, + 228, + 27, + 229, + 231, + 219, + 55, + 50, + 144, + 78, + 20, + 231, + 255, + 184, + 120, + 249, + 86, + 125, + 240, + 83, + 62, + 12, + 114, + 116, + 183, + 226, + 48, + 157, + 151, + 172, + 182, + 187, + 85, + 6, + 155, + 186, + 136, + 179, + 71, + 104, + 183, + 111, + 20, + 24, + 134, + 110, + 106, + 191, + 93, + 252, + 143, + 197, + 51, + 44, + 135, + 65, + 231, + 201, + 197, + 217, + 4, + 53, + 198, + 213, + 247, + 112, + 215, + 128, + 41, + 138, + 106, + 217, + 195, + 213, + 234, + 174, + 86, + 245, + 129, + 23, + 3, + 84, + 79, + 242, + 95, + 126, + 135, + 192, + 90, + 99, + 138, + 94, + 248, + 29, + 136, + 39, + 247, + 137, + 52, + 129, + 76, + 112, + 105, + 219, + 208, + 33, + 15, + 96, + 153, + 56, + 179, + 167, + 65, + 223, + 170, + 145, + 176, + 179, + 223, + 181, + 64, + 124, + 32, + 82, + 223, + 229, + 11, + 129, + 78, + 26, + 43, + 123, + 119, + 234, + 231, + 133, + 213, + 163, + 175, + 86, + 130, + 95, + 215, + 189, + 221, + 171, + 155, + 14, + 34, + 75, + 251, + 94, + 108, + 52, + 6, + 165, + 161, + 217, + 4, + 168, + 223, + 95, + 169, + 198, + 129, + 119, + 63, + 40, + 39, + 116, + 57, + 164, + 103, + 107, + 4, + 145, + 131, + 169, + 50, + 247, + 109, + 0, + 204, + 176, + 200, + 210, + 21, + 241, + 135, + 219, + 23, + 226, + 0, + 93, + 66, + 38, + 119, + 235, + 252, + 143, + 87, + 198, + 129, + 238, + 230, + 201, + 209, + 123, + 77, + 115, + 193, + 154, + 226, + 141, + 187, + 29, + 129, + 243, + 92, + 254, + 108, + 253, + 159, + 67, + 242, + 155, + 189, + 187, + 167, + 179, + 77, + 141, + 156, + 129, + 99, + 208, + 250, + 110, + 202, + 13, + 120, + 241, + 200, + 182, + 240, + 95, + 103, + 217, + 203, + 115, + 73, + 235, + 115, + 98, + 66, + 24, + 200, + 220, + 119, + 79, + 76, + 10, + 99, + 41, + 167, + 199, + 146, + 31, + 126, + 187, + 246, + 225, + 213, + 97, + 235, + 229, + 131, + 122, + 121, + 179, + 71, + 175, + 32, + 235, + 132, + 53, + 231, + 234, + 91, + 172, + 121, + 14, + 112, + 94, + 150, + 45, + 135, + 98, + 197, + 181, + 83, + 53, + 8, + 15, + 47, + 173, + 122, + 190, + 18, + 221, + 125, + 211, + 217, + 150, + 43, + 99, + 192, + 144, + 197, + 210, + 54, + 10, + 50, + 4, + 144, + 70, + 186, + 180, + 209, + 47, + 7, + 9, + 7, + 51, + 157, + 67, + 232, + 141, + 251, + 143, + 16, + 2, + 145, + 164, + 111, + 204, + 225, + 197, + 147, + 2, + 249, + 28, + 217, + 164, + 168, + 6, + 254, + 225, + 248, + 200, + 119, + 235, + 77, + 53, + 191, + 171, + 133, + 232, + 236, + 212, + 33, + 106, + 48, + 204, + 26, + 79, + 215, + 50, + 17, + 80, + 60, + 253, + 198, + 234, + 221, + 188, + 31, + 156, + 199, + 155, + 61, + 43, + 25, + 150, + 194, + 28, + 100, + 141, + 55, + 181, + 28, + 166, + 137, + 101, + 19, + 253, + 241, + 93, + 91, + 62, + 211, + 163, + 197, + 227, + 235, + 249, + 237, + 246, + 193, + 4, + 98, + 87, + 231, + 223, + 62, + 24, + 63, + 31, + 21, + 52, + 184, + 192, + 8, + 103, + 99, + 137, + 68, + 4, + 230, + 252, + 180, + 100, + 184, + 127, + 134, + 71, + 47, + 161, + 242, + 2, + 50, + 74, + 247, + 226, + 195, + 75, + 23, + 2, + 142, + 115, + 229, + 198, + 58, + 250, + 112, + 6, + 124, + 251, + 61, + 77, + 5, + 55, + 165, + 190, + 189, + 97, + 124, + 253, + 3, + 19, + 76, + 195, + 101, + 250, + 244, + 216, + 90, + 158, + 53, + 203, + 3, + 255, + 126, + 205, + 187, + 158, + 213, + 122, + 195, + 48, + 166, + 246, + 27, + 247, + 23, + 37, + 112, + 27, + 107, + 205, + 151, + 247, + 255, + 219, + 64, + 38, + 208, + 15, + 14, + 132, + 225, + 49, + 242, + 175, + 66, + 64, + 63, + 253, + 243, + 183, + 123, + 24, + 8, + 155, + 96, + 32, + 254, + 199, + 44, + 115, + 165, + 73, + 168, + 31, + 142, + 33, + 144, + 193, + 92, + 107, + 140, + 190, + 109, + 153, + 17, + 76, + 221, + 205, + 55, + 78, + 151, + 251, + 21, + 87, + 13, + 53, + 29, + 45, + 139, + 19, + 193, + 7, + 77, + 236, + 91, + 22, + 111, + 47, + 182, + 168, + 203, + 1, + 148, + 178, + 139, + 218, + 16, + 144, + 205, + 78, + 24, + 104, + 2, + 203, + 178, + 116, + 93, + 60, + 94, + 1, + 118, + 11, + 244, + 49, + 193, + 136, + 220, + 250, + 106, + 4, + 196, + 1, + 230, + 226, + 250, + 244, + 208, + 117, + 109, + 45, + 172, + 192, + 42, + 29, + 103, + 8, + 140, + 0, + 174, + 169, + 171, + 239, + 85, + 68, + 89, + 64, + 186, + 52, + 45, + 244, + 246, + 1, + 136, + 242, + 201, + 127, + 107, + 125, + 23, + 209, + 20, + 80, + 116, + 52, + 98, + 115, + 230, + 64, + 104, + 131, + 63, + 17, + 136, + 31, + 4, + 75, + 172, + 177, + 226, + 165, + 49, + 193, + 209, + 211, + 130, + 170, + 68, + 94, + 235, + 221, + 163, + 68, + 242, + 142, + 106, + 5, + 226, + 1, + 42, + 222, + 120, + 204, + 36, + 22, + 152, + 132, + 51, + 157, + 203, + 213, + 204, + 172, + 95, + 209, + 18, + 179, + 62, + 123, + 186, + 234, + 176, + 108, + 246, + 205, + 88, + 154, + 12, + 46, + 43, + 69, + 178, + 30, + 182, + 190, + 41, + 243, + 66, + 137, + 239, + 175, + 118, + 89, + 94, + 254, + 192, + 248, + 165, + 78, + 137, + 131, + 253, + 66, + 157, + 246, + 86, + 4, + 100, + 12, + 240, + 137, + 212, + 120, + 200, + 24, + 10, + 131, + 153, + 158, + 205, + 253, + 7, + 88, + 238, + 91, + 53, + 110, + 229, + 44, + 169, + 192, + 176, + 163, + 119, + 130, + 105, + 193, + 20, + 26, + 125, + 245, + 11, + 51, + 129, + 161, + 164, + 43, + 101, + 217, + 89, + 43, + 71, + 161, + 186, + 217, + 226, + 207, + 207, + 142, + 233, + 60, + 9, + 6, + 205, + 20, + 119, + 63, + 5, + 195, + 38, + 12, + 95, + 138, + 207, + 142, + 215, + 60, + 243, + 195, + 74, + 134, + 34, + 36, + 239, + 80, + 1, + 202, + 156, + 149, + 225, + 50, + 24, + 212, + 166, + 244, + 13, + 131, + 12, + 131, + 41, + 75, + 100, + 11, + 169, + 46, + 138, + 217, + 230, + 182, + 44, + 43, + 176, + 142, + 20, + 17, + 57, + 188, + 89, + 118, + 16, + 202, + 155, + 16, + 255, + 255, + 45, + 143, + 98, + 19, + 132, + 181, + 177, + 109, + 33, + 107, + 64, + 12, + 184, + 238, + 76, + 134, + 135, + 101, + 208, + 230, + 221, + 217, + 160, + 26, + 135, + 179, + 233, + 160, + 67, + 193, + 38, + 81, + 223, + 81, + 72, + 135, + 195, + 98, + 161, + 249, + 108, + 59, + 240, + 248, + 209, + 39, + 248, + 226, + 253, + 40, + 160, + 210, + 239, + 79, + 245, + 72, + 64, + 99, + 153, + 12, + 250, + 253, + 74, + 24, + 191, + 130, + 198, + 125, + 17, + 127, + 247, + 193, + 227, + 80, + 31, + 66, + 28, + 138, + 192, + 147, + 102, + 227, + 192, + 169, + 130, + 176, + 204, + 108, + 230, + 225, + 40, + 6, + 130, + 127, + 25, + 57, + 68, + 144, + 49, + 80, + 230, + 115, + 188, + 249, + 16, + 170, + 92, + 28, + 93, + 142, + 70, + 188, + 57, + 193, + 198, + 14, + 202, + 217, + 18, + 77, + 171, + 190, + 234, + 97, + 185, + 144, + 187, + 249, + 113, + 120, + 154, + 18, + 80, + 35, + 137, + 190, + 199, + 30, + 210, + 197, + 3, + 112, + 169, + 138, + 237, + 32, + 93, + 212, + 132, + 116, + 29, + 208, + 71, + 202, + 129, + 94, + 125, + 21, + 106, + 73, + 81, + 89, + 187, + 192, + 211, + 225, + 59, + 237, + 32, + 139, + 59, + 75, + 135, + 201, + 160, + 170, + 233, + 102, + 251, + 43, + 13, + 101, + 247, + 11, + 13, + 38, + 153, + 165, + 140, + 175, + 179, + 75, + 52, + 132, + 233, + 62, + 157, + 158, + 225, + 238, + 151, + 128, + 207, + 242, + 39, + 202, + 154, + 182, + 126, + 33, + 207, + 232, + 56, + 35, + 216, + 68, + 78, + 141, + 29, + 222, + 128, + 170, + 88, + 145, + 114, + 38, + 86, + 113, + 58, + 59, + 128, + 176, + 126, + 56, + 69, + 170, + 116, + 234, + 178, + 78, + 250, + 209, + 130, + 201, + 150, + 47, + 246, + 31, + 4, + 209, + 160, + 17, + 208, + 92, + 216, + 119, + 12, + 67, + 11, + 32, + 117, + 164, + 111, + 78, + 205, + 149, + 169, + 203, + 209, + 253, + 174, + 204, + 25, + 154, + 129, + 4, + 24, + 243, + 185, + 15, + 206, + 192, + 9, + 20, + 211, + 57, + 27, + 136, + 146, + 59, + 69, + 219, + 45, + 165, + 125, + 28, + 232, + 190, + 187, + 106, + 235, + 197, + 153, + 238, + 0, + 7, + 242, + 25, + 251, + 113, + 31, + 16, + 36, + 48, + 100, + 24, + 62, + 59, + 161, + 221, + 223, + 213, + 3, + 221, + 240, + 254, + 204, + 91, + 29, + 253, + 155, + 11, + 26, + 90, + 6, + 232, + 168, + 141, + 60, + 44, + 71, + 160, + 201, + 41, + 108, + 240, + 65, + 60, + 44, + 70, + 140, + 37, + 202, + 250, + 182, + 65, + 70, + 5, + 27, + 158, + 46, + 163, + 37, + 26, + 195, + 175, + 222, + 83, + 82, + 163, + 253, + 92, + 144, + 70, + 170, + 50, + 249, + 16, + 215, + 17, + 7, + 39, + 225, + 70, + 92, + 71, + 25, + 220, + 103, + 138, + 111, + 243, + 175, + 139, + 39, + 195, + 98, + 166, + 187, + 218, + 228, + 201, + 35, + 239, + 162, + 175, + 57, + 1, + 45, + 106, + 4, + 242, + 124, + 2, + 171, + 164, + 212, + 134, + 179, + 67, + 91, + 208, + 173, + 132, + 102, + 74, + 231, + 61, + 167, + 91, + 137, + 175, + 213, + 197, + 107, + 57, + 131, + 74, + 162, + 175, + 48, + 169, + 113, + 154, + 73, + 244, + 21, + 88, + 242, + 54, + 138, + 28, + 125, + 163, + 16, + 216, + 82, + 233, + 163, + 220, + 138, + 76, + 88, + 106, + 146, + 158, + 151, + 171, + 247, + 184, + 98, + 139, + 61, + 44, + 151, + 87, + 54, + 135, + 250, + 55, + 156, + 161, + 129, + 65, + 169, + 237, + 68, + 193, + 3, + 62, + 115, + 207, + 121, + 65, + 53, + 53, + 110, + 187, + 25, + 80, + 45, + 164, + 135, + 224, + 198, + 24, + 48, + 199, + 74, + 75, + 160, + 83, + 16, + 76, + 96, + 174, + 225, + 216, + 54, + 145, + 21, + 9, + 22, + 83, + 218, + 54, + 61, + 188, + 70, + 156, + 224, + 131, + 221, + 247, + 214, + 144, + 251, + 103, + 53, + 238, + 40, + 112, + 119, + 83, + 246, + 17, + 120, + 147, + 215, + 121, + 38, + 219, + 40, + 217, + 0, + 114, + 109, + 60, + 206, + 168, + 10, + 240, + 180, + 92, + 125, + 80, + 93, + 123, + 69, + 60, + 107, + 109, + 82, + 233, + 66, + 32, + 153, + 222, + 183, + 192, + 234, + 82, + 96, + 92, + 157, + 243, + 210, + 25, + 100, + 186, + 91, + 59, + 48, + 56, + 212, + 118, + 206, + 95, + 215, + 96, + 172, + 94, + 166, + 82, + 128, + 120, + 66, + 147, + 253, + 197, + 37, + 191, + 14, + 254, + 169, + 255, + 50, + 82, + 178, + 3, + 254, + 113, + 151, + 218, + 241, + 137, + 128, + 104, + 91, + 14, + 4, + 60, + 136, + 48, + 37, + 182, + 156, + 178, + 41, + 128, + 77, + 48, + 157, + 165, + 143, + 200, + 191, + 141, + 119, + 147, + 165, + 137, + 192, + 26, + 115, + 72, + 35, + 205, + 124, + 193, + 178, + 53, + 40, + 21, + 165, + 173, + 138, + 35, + 127, + 161, + 31, + 118, + 145, + 9, + 245, + 237, + 152, + 126, + 134, + 179, + 241, + 124, + 237, + 3, + 4, + 121, + 166, + 141, + 242, + 154, + 249, + 82, + 2, + 142, + 63, + 84, + 63, + 81, + 245, + 12, + 14, + 113, + 69, + 34, + 64, + 215, + 161, + 125, + 27, + 240, + 77, + 248, + 56, + 109, + 80, + 95, + 165, + 113, + 19, + 62, + 178, + 143, + 78, + 190, + 22, + 11, + 8, + 14, + 95, + 61, + 125, + 132, + 106, + 41, + 47, + 23, + 165, + 103, + 239, + 251, + 238, + 237, + 172, + 9, + 170, + 196, + 125, + 4, + 77, + 244, + 1, + 147, + 36, + 69, + 232, + 250, + 101, + 201, + 77, + 212, + 15, + 66, + 3, + 29, + 60, + 251, + 142, + 188, + 68, + 8, + 106, + 249, + 193, + 236, + 243, + 153, + 213, + 226, + 1, + 89, + 53, + 110, + 81, + 202, + 192, + 172, + 121, + 75, + 160, + 82, + 250, + 148, + 156, + 135, + 114, + 201, + 46, + 235, + 159, + 74, + 125, + 84, + 136, + 60, + 154, + 203, + 70, + 30, + 4, + 132, + 220, + 120, + 8, + 231, + 104, + 219, + 44, + 77, + 69, + 197, + 149, + 220, + 177, + 174, + 39, + 139, + 234, + 240, + 108, + 7, + 100, + 102, + 64, + 163, + 70, + 189, + 25, + 179, + 1, + 73, + 176, + 22, + 174, + 203, + 116, + 106, + 76, + 241, + 9, + 168, + 83, + 213, + 34, + 47, + 48, + 135, + 67, + 172, + 209, + 12, + 112, + 122, + 35, + 192, + 194, + 183, + 170, + 7, + 185, + 111, + 87, + 228, + 91, + 213, + 195, + 233, + 55, + 158, + 94, + 163, + 3, + 47, + 229, + 245, + 169, + 248, + 27, + 106, + 8, + 241, + 27, + 125, + 19, + 4, + 61, + 132, + 248, + 57, + 172, + 200, + 87, + 222, + 182, + 135, + 181, + 165, + 34, + 180, + 85, + 69, + 117, + 57, + 197, + 207, + 36, + 146, + 147, + 2, + 209, + 111, + 60, + 176, + 201, + 156, + 96, + 43, + 232, + 55, + 201, + 123, + 91, + 33, + 124, + 103, + 197, + 135, + 45, + 192, + 149, + 139, + 138, + 79, + 139, + 143, + 104, + 168, + 230, + 188, + 191, + 67, + 104, + 245, + 118, + 144, + 199, + 213, + 87, + 249, + 139, + 75, + 16, + 48, + 22, + 111, + 49, + 229, + 42, + 238, + 88, + 253, + 26, + 222, + 207, + 179, + 121, + 87, + 106, + 233, + 153, + 18, + 114, + 0, + 19, + 165, + 218, + 162, + 83, + 159, + 27, + 1, + 246, + 148, + 129, + 248, + 108, + 20, + 182, + 53, + 151, + 19, + 38, + 174, + 70, + 193, + 89, + 192, + 115, + 41, + 131, + 173, + 68, + 204, + 174, + 173, + 150, + 119, + 143, + 169, + 70, + 139, + 15, + 65, + 54, + 1, + 239, + 44, + 243, + 255, + 129, + 95, + 49, + 126, + 180, + 76, + 235, + 14, + 55, + 249, + 221, + 21, + 28, + 30, + 114, + 5, + 36, + 92, + 116, + 236, + 197, + 247, + 213, + 196, + 160, + 146, + 39, + 118, + 214, + 57, + 91, + 48, + 108, + 234, + 88, + 175, + 220, + 81, + 6, + 176, + 173, + 5, + 108, + 3, + 105, + 7, + 95, + 147, + 46, + 124, + 237, + 141, + 198, + 43, + 111, + 135, + 228, + 56, + 244, + 24, + 166, + 105, + 201, + 126, + 218, + 19, + 5, + 28, + 174, + 185, + 209, + 76, + 89, + 161, + 31, + 202, + 176, + 67, + 153, + 49, + 115, + 30, + 236, + 33, + 11, + 47, + 148, + 25, + 75, + 158, + 51, + 176, + 63, + 67, + 174, + 180, + 12, + 220, + 184, + 147, + 175, + 230, + 4, + 67, + 148, + 210, + 90, + 170, + 246, + 130, + 42, + 1, + 152, + 215, + 1, + 200, + 109, + 46, + 221, + 2, + 103, + 52, + 105, + 84, + 146, + 18, + 67, + 64, + 12, + 185, + 47, + 92, + 205, + 236, + 122, + 66, + 88, + 219, + 105, + 30, + 156, + 33, + 138, + 19, + 129, + 188, + 117, + 36, + 166, + 2, + 79, + 151, + 116, + 51, + 219, + 183, + 115, + 43, + 5, + 226, + 87, + 108, + 137, + 58, + 118, + 51, + 7, + 86, + 79, + 69, + 134, + 167, + 204, + 55, + 6, + 97, + 156, + 242, + 153, + 125, + 5, + 98, + 131, + 53, + 185, + 211, + 23, + 75, + 16, + 156, + 131, + 74, + 126, + 136, + 188, + 149, + 120, + 66, + 226, + 83, + 243, + 1, + 124, + 53, + 4, + 94, + 171, + 81, + 148, + 70, + 75, + 65, + 230, + 72, + 69, + 105, + 175, + 28, + 63, + 171, + 1, + 58, + 68, + 145, + 16, + 65, + 41, + 151, + 7, + 158, + 51, + 214, + 212, + 231, + 120, + 197, + 227, + 112, + 251, + 27, + 29, + 230, + 180, + 198, + 94, + 46, + 19, + 131, + 177, + 123, + 42, + 6, + 218, + 158, + 129, + 173, + 59, + 17, + 171, + 130, + 18, + 166, + 60, + 158, + 83, + 146, + 156, + 131, + 58, + 231, + 160, + 80, + 111, + 225, + 198, + 134, + 176, + 112, + 54, + 238, + 29, + 108, + 10, + 107, + 173, + 20, + 199, + 123, + 101, + 109, + 44, + 17, + 173, + 82, + 191, + 86, + 74, + 186, + 206, + 10, + 4, + 12, + 28, + 222, + 58, + 229, + 140, + 104, + 32, + 195, + 187, + 228, + 140, + 229, + 174, + 123, + 134, + 105, + 9, + 194, + 146, + 78, + 178, + 191, + 136, + 6, + 3, + 44, + 253, + 70, + 242, + 74, + 177, + 123, + 233, + 177, + 63, + 28, + 154, + 171, + 119, + 122, + 27, + 214, + 46, + 81, + 197, + 179, + 234, + 127, + 44, + 152, + 115, + 164, + 70, + 177, + 167, + 180, + 42, + 2, + 227, + 84, + 254, + 184, + 143, + 97, + 149, + 50, + 199, + 75, + 138, + 201, + 107, + 239, + 221, + 235, + 248, + 217, + 141, + 145, + 48, + 72, + 222, + 204, + 177, + 179, + 48, + 172, + 147, + 70, + 46, + 83, + 102, + 174, + 245, + 29, + 216, + 34, + 111, + 47, + 55, + 160, + 106, + 55, + 90, + 65, + 45, + 32, + 220, + 250, + 66, + 133, + 73, + 62, + 162, + 29, + 221, + 160, + 175, + 60, + 186, + 167, + 48, + 1, + 24, + 28, + 62, + 106, + 91, + 154, + 200, + 232, + 73, + 203, + 12, + 238, + 232, + 6, + 106, + 163, + 93, + 168, + 205, + 110, + 81, + 163, + 248, + 253, + 123, + 192, + 151, + 21, + 220, + 190, + 104, + 231, + 232, + 44, + 175, + 2, + 186, + 176, + 81, + 79, + 25, + 216, + 144, + 242, + 76, + 181, + 75, + 251, + 206, + 122, + 103, + 91, + 198, + 98, + 192, + 49, + 115, + 124, + 254, + 208, + 226, + 203, + 0, + 109, + 197, + 38, + 247, + 132, + 76, + 208, + 225, + 228, + 197, + 32, + 11, + 177, + 209, + 215, + 106, + 24, + 168, + 50, + 246, + 76, + 192, + 103, + 96, + 196, + 54, + 121, + 105, + 129, + 34, + 106, + 163, + 31, + 219, + 205, + 156, + 125, + 21, + 212, + 143, + 3, + 20, + 225, + 108, + 59, + 197, + 105, + 48, + 80, + 5, + 27, + 111, + 204, + 16, + 198, + 138, + 127, + 249, + 254, + 194, + 36, + 208, + 25, + 70, + 188, + 34, + 141, + 172, + 45, + 3, + 212, + 241, + 220, + 76, + 252, + 125, + 88, + 91, + 116, + 84, + 246, + 17, + 173, + 192, + 225, + 59, + 121, + 76, + 76, + 128, + 43, + 26, + 214, + 201, + 241, + 95, + 10, + 78, + 106, + 51, + 139, + 154, + 100, + 5, + 133, + 188, + 209, + 145, + 138, + 148, + 64, + 5, + 83, + 166, + 237, + 195, + 249, + 109, + 226, + 187, + 25, + 58, + 39, + 64, + 217, + 217, + 232, + 44, + 5, + 36, + 105, + 116, + 195, + 164, + 229, + 128, + 62, + 49, + 229, + 174, + 85, + 213, + 213, + 235, + 202, + 197, + 109, + 182, + 23, + 195, + 82, + 111, + 164, + 140, + 243, + 176, + 232, + 43, + 228, + 110, + 146, + 219, + 44, + 186, + 31, + 138, + 65, + 216, + 125, + 226, + 167, + 242, + 205, + 1, + 138, + 141, + 118, + 84, + 28, + 30, + 1, + 69, + 20, + 3, + 205, + 109, + 182, + 82, + 73, + 175, + 59, + 178, + 218, + 100, + 91, + 96, + 107, + 54, + 90, + 139, + 242, + 34, + 88, + 186, + 82, + 113, + 240, + 119, + 235, + 200, + 79, + 24, + 98, + 245, + 212, + 68, + 239, + 212, + 212, + 126, + 134, + 88, + 61, + 165, + 37, + 211, + 207, + 187, + 163, + 80, + 125, + 80, + 109, + 243, + 135, + 78, + 108, + 19, + 97, + 57, + 119, + 162, + 121, + 97, + 253, + 59, + 115, + 154, + 238, + 19, + 30, + 201, + 187, + 119, + 58, + 100, + 49, + 8, + 165, + 248, + 253, + 41, + 199, + 203, + 64, + 2, + 204, + 123, + 166, + 172, + 184, + 244, + 200, + 15, + 241, + 180, + 232, + 110, + 205, + 78, + 63, + 49, + 140, + 238, + 214, + 133, + 212, + 175, + 75, + 110, + 3, + 175, + 55, + 183, + 182, + 137, + 90, + 19, + 56, + 119, + 249, + 59, + 245, + 192, + 31, + 32, + 154, + 243, + 212, + 75, + 98, + 112, + 69, + 147, + 42, + 86, + 186, + 67, + 107, + 164, + 185, + 192, + 23, + 54, + 146, + 50, + 94, + 210, + 164, + 248, + 151, + 23, + 114, + 129, + 144, + 147, + 92, + 183, + 150, + 217, + 241, + 20, + 106, + 6, + 239, + 66, + 0, + 143, + 28, + 231, + 152, + 22, + 194, + 149, + 132, + 252, + 157, + 57, + 196, + 41, + 191, + 167, + 144, + 157, + 166, + 3, + 236, + 66, + 119, + 10, + 99, + 152, + 198, + 219, + 182, + 67, + 184, + 34, + 9, + 85, + 77, + 112, + 118, + 54, + 160, + 187, + 217, + 5, + 221, + 181, + 219, + 198, + 157, + 243, + 228, + 218, + 142, + 232, + 160, + 184, + 48, + 239, + 198, + 149, + 216, + 201, + 15, + 135, + 1, + 112, + 93, + 142, + 59, + 186, + 162, + 115, + 31, + 139, + 80, + 35, + 115, + 75, + 102, + 176, + 24, + 94, + 245, + 29, + 161, + 229, + 99, + 220, + 115, + 27, + 100, + 187, + 76, + 47, + 237, + 2, + 143, + 206, + 49, + 174, + 192, + 81, + 63, + 247, + 77, + 8, + 119, + 96, + 35, + 218, + 228, + 56, + 125, + 250, + 64, + 32, + 121, + 120, + 159, + 90, + 163, + 120, + 6, + 57, + 220, + 122, + 61, + 143, + 88, + 40, + 179, + 29, + 203, + 29, + 161, + 25, + 203, + 64, + 153, + 224, + 147, + 70, + 35, + 135, + 2, + 21, + 97, + 176, + 140, + 156, + 124, + 249, + 65, + 251, + 66, + 128, + 131, + 50, + 86, + 218, + 214, + 60, + 133, + 27, + 21, + 100, + 141, + 20, + 245, + 57, + 128, + 27, + 155, + 225, + 85, + 23, + 8, + 73, + 123, + 39, + 222, + 184, + 128, + 242, + 154, + 244, + 163, + 82, + 15, + 162, + 196, + 196, + 136, + 95, + 238, + 147, + 124, + 42, + 248, + 10, + 13, + 217, + 78, + 55, + 166, + 247, + 8, + 70, + 18, + 205, + 147, + 206, + 204, + 48, + 210, + 208, + 159, + 73, + 234, + 27, + 215, + 45, + 69, + 124, + 153, + 36, + 118, + 72, + 42, + 92, + 8, + 136, + 157, + 156, + 233, + 27, + 236, + 184, + 102, + 218, + 187, + 171, + 3, + 253, + 74, + 195, + 246, + 51, + 147, + 254, + 97, + 97, + 146, + 219, + 152, + 151, + 26, + 44, + 60, + 82, + 75, + 97, + 150, + 75, + 175, + 225, + 75, + 234, + 202, + 182, + 246, + 51, + 102, + 126, + 48, + 51, + 250, + 212, + 164, + 65, + 208, + 241, + 244, + 27, + 235, + 234, + 190, + 138, + 53, + 44, + 25, + 78, + 103, + 140, + 194, + 169, + 176, + 100, + 98, + 227, + 221, + 78, + 7, + 199, + 149, + 90, + 86, + 29, + 208, + 179, + 158, + 224, + 90, + 219, + 50, + 137, + 9, + 107, + 72, + 10, + 55, + 157, + 26, + 189, + 141, + 91, + 152, + 201, + 211, + 132, + 247, + 123, + 248, + 186, + 2, + 182, + 154, + 147, + 4, + 136, + 96, + 117, + 38, + 93, + 5, + 98, + 233, + 50, + 242, + 40, + 220, + 109, + 164, + 231, + 73, + 180, + 198, + 118, + 101, + 238, + 16, + 57, + 146, + 141, + 200, + 164, + 50, + 44, + 204, + 35, + 201, + 90, + 81, + 170, + 80, + 173, + 14, + 161, + 206, + 168, + 80, + 27, + 177, + 219, + 228, + 241, + 22, + 31, + 148, + 151, + 218, + 230, + 227, + 63, + 2, + 32, + 78, + 3, + 242, + 78, + 241, + 202, + 1, + 131, + 61, + 178, + 15, + 95, + 150, + 172, + 243, + 183, + 141, + 83, + 35, + 127, + 234, + 233, + 205, + 86, + 116, + 190, + 74, + 195, + 90, + 226, + 241, + 189, + 208, + 181, + 234, + 2, + 209, + 78, + 148, + 119, + 82, + 208, + 227, + 243, + 68, + 169, + 11, + 135, + 174, + 114, + 15, + 123, + 176, + 168, + 59, + 212, + 163, + 121, + 232, + 156, + 241, + 61, + 161, + 79, + 172, + 136, + 139, + 88, + 9, + 45, + 145, + 138, + 74, + 23, + 43, + 20, + 232, + 176, + 25, + 73, + 160, + 110, + 20, + 167, + 225, + 45, + 64, + 208, + 20, + 166, + 152, + 204, + 29, + 64, + 208, + 154, + 0, + 193, + 75, + 231, + 211, + 14, + 220, + 15, + 193, + 125, + 117, + 250, + 186, + 70, + 207, + 206, + 198, + 76, + 207, + 114, + 100, + 251, + 82, + 182, + 146, + 249, + 246, + 250, + 73, + 160, + 148, + 239, + 190, + 68, + 10, + 207, + 234, + 235, + 232, + 249, + 74, + 103, + 41, + 26, + 45, + 223, + 112, + 51, + 153, + 45, + 160, + 208, + 97, + 104, + 228, + 136, + 238, + 229, + 234, + 148, + 211, + 99, + 236, + 78, + 54, + 44, + 221, + 159, + 206, + 108, + 27, + 16, + 35, + 169, + 61, + 204, + 37, + 250, + 174, + 18, + 23, + 160, + 243, + 202, + 75, + 144, + 210, + 82, + 254, + 18, + 45, + 227, + 90, + 46, + 226, + 54, + 207, + 245, + 67, + 242, + 213, + 34, + 114, + 96, + 201, + 104, + 172, + 95, + 113, + 13, + 112, + 204, + 221, + 203, + 74, + 186, + 86, + 119, + 156, + 100, + 100, + 93, + 250, + 104, + 172, + 233, + 8, + 17, + 198, + 204, + 217, + 90, + 237, + 84, + 188, + 109, + 130, + 28, + 195, + 154, + 222, + 232, + 15, + 17, + 2, + 80, + 23, + 76, + 79, + 207, + 237, + 182, + 103, + 11, + 148, + 52, + 13, + 44, + 120, + 3, + 179, + 206, + 45, + 5, + 154, + 238, + 231, + 89, + 89, + 101, + 191, + 189, + 158, + 161, + 240, + 172, + 54, + 76, + 15, + 216, + 167, + 20, + 122, + 131, + 33, + 156, + 71, + 207, + 151, + 50, + 80, + 42, + 110, + 234, + 135, + 83, + 70, + 156, + 243, + 104, + 100, + 118, + 242, + 88, + 48, + 6, + 229, + 177, + 156, + 71, + 59, + 7, + 227, + 4, + 212, + 112, + 173, + 237, + 147, + 135, + 14, + 32, + 210, + 103, + 118, + 83, + 151, + 34, + 225, + 234, + 130, + 31, + 155, + 108, + 168, + 158, + 108, + 26, + 219, + 188, + 55, + 1, + 243, + 212, + 125, + 251, + 84, + 193, + 25, + 254, + 178, + 152, + 91, + 175, + 247, + 162, + 33, + 97, + 127, + 38, + 58, + 177, + 145, + 162, + 232, + 12, + 74, + 43, + 213, + 37, + 92, + 35, + 213, + 95, + 147, + 16, + 99, + 43, + 178, + 194, + 2, + 52, + 41, + 221, + 184, + 78, + 3, + 16, + 22, + 48, + 75, + 74, + 205, + 109, + 150, + 16, + 139, + 142, + 80, + 158, + 165, + 162, + 147, + 83, + 68, + 43, + 82, + 161, + 61, + 29, + 142, + 126, + 104, + 182, + 233, + 140, + 38, + 75, + 65, + 151, + 53, + 110, + 145, + 178, + 28, + 166, + 122, + 202, + 6, + 97, + 174, + 206, + 104, + 151, + 14, + 195, + 213, + 178, + 246, + 128, + 0, + 93, + 57, + 11, + 95, + 177, + 172, + 111, + 61, + 10, + 107, + 68, + 210, + 240, + 104, + 52, + 243, + 8, + 219, + 254, + 160, + 47, + 167, + 194, + 229, + 31, + 43, + 82, + 115, + 239, + 174, + 29, + 169, + 152, + 76, + 157, + 233, + 169, + 47, + 161, + 161, + 154, + 195, + 81, + 97, + 70, + 251, + 124, + 185, + 195, + 246, + 220, + 132, + 105, + 83, + 130, + 110, + 218, + 195, + 126, + 27, + 96, + 191, + 218, + 255, + 253, + 126, + 12, + 158, + 68, + 70, + 126, + 140, + 171, + 24, + 15, + 129, + 16, + 97, + 243, + 14, + 166, + 181, + 186, + 72, + 110, + 31, + 68, + 18, + 248, + 80, + 125, + 106, + 157, + 22, + 73, + 159, + 28, + 35, + 169, + 14, + 131, + 52, + 10, + 206, + 54, + 42, + 27, + 195, + 112, + 51, + 62, + 55, + 216, + 184, + 104, + 243, + 223, + 235, + 255, + 143, + 99, + 128, + 138, + 229, + 58, + 130, + 83, + 80, + 75, + 96, + 162, + 143, + 52, + 203, + 230, + 193, + 115, + 226, + 193, + 176, + 104, + 127, + 36, + 182, + 51, + 107, + 235, + 181, + 182, + 252, + 160, + 154, + 193, + 103, + 2, + 191, + 32, + 69, + 41, + 230, + 35, + 115, + 74, + 179, + 114, + 208, + 212, + 92, + 238, + 48, + 97, + 96, + 113, + 72, + 176, + 27, + 189, + 5, + 113, + 25, + 24, + 105, + 234, + 12, + 113, + 192, + 224, + 109, + 53, + 9, + 162, + 48, + 68, + 206, + 77, + 115, + 199, + 33, + 101, + 234, + 198, + 94, + 124, + 238, + 17, + 116, + 201, + 139, + 226, + 212, + 129, + 204, + 97, + 89, + 222, + 190, + 61, + 117, + 32, + 99, + 112, + 153, + 233, + 174, + 241, + 152, + 80, + 62, + 134, + 93, + 192, + 37, + 123, + 73, + 40, + 100, + 2, + 99, + 229, + 113, + 50, + 167, + 123, + 90, + 92, + 52, + 167, + 16, + 122, + 183, + 29, + 38, + 185, + 193, + 244, + 209, + 169, + 143, + 27, + 8, + 54, + 41, + 231, + 34, + 150, + 69, + 102, + 105, + 44, + 83, + 214, + 224, + 103, + 252, + 40, + 10, + 97, + 187, + 165, + 230, + 149, + 167, + 252, + 168, + 208, + 181, + 123, + 138, + 50, + 29, + 148, + 165, + 23, + 242, + 120, + 30, + 126, + 160, + 185, + 243, + 206, + 51, + 36, + 224, + 212, + 153, + 119, + 105, + 145, + 48, + 44, + 233, + 55, + 150, + 125, + 194, + 202, + 237, + 188, + 23, + 34, + 115, + 3, + 65, + 105, + 36, + 103, + 200, + 64, + 144, + 149, + 211, + 61, + 174, + 100, + 189, + 101, + 28, + 186, + 109, + 150, + 147, + 2, + 162, + 53, + 182, + 79, + 132, + 28, + 112, + 121, + 78, + 137, + 211, + 93, + 24, + 181, + 18, + 128, + 247, + 114, + 199, + 130, + 23, + 168, + 216, + 168, + 118, + 13, + 90, + 96, + 229, + 130, + 243, + 49, + 153, + 196, + 225, + 135, + 79, + 110, + 141, + 16, + 126, + 248, + 225, + 243, + 116, + 110, + 207, + 36, + 190, + 135, + 139, + 202, + 244, + 134, + 222, + 76, + 98, + 13, + 73, + 211, + 234, + 60, + 55, + 106, + 212, + 238, + 170, + 41, + 137, + 224, + 158, + 1, + 242, + 64, + 180, + 170, + 184, + 68, + 135, + 85, + 98, + 32, + 158, + 218, + 216, + 27, + 12, + 94, + 149, + 81, + 78, + 247, + 252, + 24, + 126, + 178, + 46, + 2, + 214, + 233, + 252, + 174, + 62, + 109, + 197, + 98, + 114, + 160, + 102, + 233, + 117, + 169, + 99, + 3, + 137, + 91, + 198, + 77, + 235, + 178, + 200, + 8, + 90, + 204, + 3, + 119, + 160, + 33, + 255, + 100, + 104, + 232, + 243, + 116, + 179, + 236, + 33, + 235, + 163, + 206, + 165, + 146, + 65, + 153, + 40, + 181, + 67, + 186, + 116, + 136, + 185, + 198, + 51, + 57, + 90, + 37, + 44, + 114, + 82, + 150, + 53, + 10, + 253, + 45, + 210, + 191, + 71, + 238, + 153, + 81, + 62, + 245, + 51, + 172, + 116, + 77, + 48, + 228, + 180, + 86, + 56, + 142, + 127, + 180, + 165, + 249, + 54, + 249, + 204, + 194, + 109, + 27, + 104, + 178, + 112, + 180, + 242, + 212, + 21, + 230, + 148, + 234, + 132, + 128, + 234, + 158, + 66, + 254, + 117, + 169, + 91, + 74, + 115, + 247, + 93, + 217, + 15, + 169, + 72, + 98, + 176, + 80, + 86, + 163, + 23, + 95, + 232, + 18, + 215, + 154, + 75, + 62, + 147, + 140, + 132, + 102, + 224, + 51, + 231, + 13, + 159, + 194, + 81, + 4, + 131, + 103, + 106, + 18, + 127, + 207, + 223, + 126, + 116, + 196, + 250, + 177, + 237, + 249, + 62, + 105, + 111, + 38, + 132, + 223, + 39, + 31, + 108, + 163, + 67, + 4, + 202, + 222, + 216, + 219, + 167, + 104, + 20, + 33, + 166, + 21, + 207, + 111, + 34, + 110, + 157, + 139, + 124, + 93, + 80, + 116, + 246, + 90, + 81, + 209, + 20, + 136, + 30, + 97, + 35, + 155, + 45, + 172, + 50, + 138, + 170, + 245, + 240, + 12, + 247, + 4, + 85, + 136, + 38, + 232, + 251, + 224, + 159, + 140, + 3, + 22, + 81, + 106, + 157, + 127, + 170, + 192, + 19, + 88, + 158, + 154, + 91, + 149, + 82, + 144, + 94, + 254, + 24, + 179, + 2, + 205, + 53, + 59, + 17, + 38, + 7, + 150, + 145, + 118, + 252, + 15, + 169, + 86, + 18, + 78, + 62, + 216, + 184, + 237, + 178, + 34, + 232, + 228, + 84, + 213, + 90, + 138, + 84, + 123, + 199, + 61, + 44, + 43, + 133, + 58, + 211, + 5, + 236, + 166, + 122, + 205, + 211, + 5, + 90, + 243, + 248, + 194, + 82, + 76, + 137, + 194, + 210, + 184, + 235, + 218, + 35, + 135, + 216, + 115, + 91, + 191, + 75, + 33, + 201, + 215, + 108, + 194, + 239, + 63, + 89, + 193, + 217, + 125, + 14, + 112, + 86, + 44, + 206, + 211, + 24, + 245, + 9, + 107, + 106, + 202, + 104, + 58, + 165, + 25, + 13, + 112, + 206, + 1, + 180, + 75, + 27, + 244, + 181, + 160, + 130, + 154, + 91, + 86, + 108, + 208, + 103, + 29, + 63, + 113, + 139, + 208, + 182, + 198, + 248, + 39, + 13, + 140, + 83, + 114, + 97, + 230, + 53, + 254, + 209, + 187, + 211, + 42, + 223, + 194, + 63, + 58, + 180, + 159, + 159, + 8, + 134, + 214, + 216, + 69, + 209, + 169, + 96, + 43, + 207, + 137, + 120, + 80, + 156, + 36, + 26, + 197, + 248, + 128, + 198, + 125, + 119, + 251, + 225, + 16, + 215, + 160, + 106, + 140, + 67, + 172, + 89, + 122, + 136, + 109, + 67, + 113, + 30, + 89, + 86, + 215, + 4, + 73, + 71, + 52, + 43, + 114, + 96, + 244, + 27, + 42, + 214, + 227, + 145, + 207, + 12, + 236, + 56, + 3, + 88, + 125, + 1, + 77, + 245, + 50, + 240, + 163, + 49, + 106, + 234, + 161, + 105, + 110, + 178, + 247, + 95, + 48, + 196, + 214, + 218, + 186, + 244, + 67, + 112, + 19, + 216, + 102, + 84, + 177, + 155, + 88, + 216, + 36, + 112, + 82, + 91, + 59, + 88, + 24, + 142, + 38, + 48, + 172, + 174, + 180, + 75, + 92, + 100, + 31, + 6, + 250, + 225, + 236, + 4, + 6, + 107, + 142, + 206, + 198, + 102, + 80, + 42, + 73, + 115, + 111, + 128, + 42, + 215, + 162, + 190, + 219, + 146, + 70, + 243, + 122, + 142, + 248, + 62, + 13, + 74, + 5, + 165, + 145, + 78, + 52, + 13, + 226, + 132, + 151, + 114, + 102, + 154, + 193, + 48, + 115, + 88, + 60, + 165, + 81, + 58, + 183, + 24, + 124, + 44, + 73, + 149, + 115, + 53, + 233, + 232, + 137, + 103, + 213, + 203, + 15, + 14, + 217, + 72, + 99, + 130, + 17, + 121, + 227, + 174, + 137, + 56, + 192, + 92, + 114, + 72, + 142, + 126, + 40, + 169, + 34, + 229, + 134, + 66, + 31, + 68, + 204, + 210, + 155, + 90, + 67, + 210, + 104, + 244, + 83, + 252, + 236, + 166, + 215, + 72, + 187, + 71, + 239, + 48, + 18, + 187, + 87, + 231, + 2, + 70, + 210, + 168, + 109, + 14, + 7, + 172, + 240, + 109, + 219, + 90, + 174, + 158, + 197, + 240, + 108, + 243, + 185, + 20, + 60, + 64, + 146, + 70, + 237, + 162, + 131, + 27, + 229, + 29, + 187, + 103, + 194, + 149, + 109, + 154, + 213, + 0, + 102, + 106, + 37, + 110, + 9, + 200, + 144, + 52, + 4, + 239, + 195, + 232, + 104, + 51, + 34, + 195, + 91, + 21, + 150, + 83, + 192, + 44, + 119, + 80, + 127, + 56, + 154, + 59, + 94, + 0, + 212, + 142, + 180, + 224, + 180, + 194, + 225, + 126, + 164, + 185, + 10, + 167, + 134, + 92, + 6, + 94, + 24, + 64, + 22, + 184, + 64, + 175, + 82, + 38, + 220, + 184, + 196, + 184, + 21, + 11, + 68, + 80, + 73, + 147, + 62, + 79, + 3, + 44, + 21, + 38, + 90, + 99, + 52, + 207, + 45, + 18, + 179, + 192, + 43, + 203, + 112, + 155, + 215, + 163, + 238, + 183, + 161, + 64, + 5, + 83, + 74, + 65, + 174, + 211, + 56, + 0, + 135, + 69, + 121, + 20, + 219, + 103, + 251, + 44, + 5, + 25, + 109, + 114, + 47, + 189, + 109, + 130, + 141, + 252, + 192, + 249, + 176, + 237, + 60, + 220, + 237, + 21, + 94, + 96, + 242, + 108, + 95, + 198, + 4, + 212, + 106, + 210, + 163, + 13, + 76, + 80, + 227, + 28, + 18, + 113, + 113, + 93, + 112, + 26, + 6, + 27, + 56, + 79, + 206, + 184, + 34, + 163, + 124, + 196, + 198, + 14, + 83, + 45, + 5, + 152, + 164, + 177, + 7, + 35, + 178, + 128, + 11, + 91, + 167, + 237, + 41, + 190, + 221, + 156, + 57, + 245, + 180, + 58, + 128, + 14, + 41, + 247, + 253, + 59, + 71, + 14, + 57, + 218, + 112, + 59, + 123, + 204, + 81, + 33, + 165, + 209, + 240, + 115, + 76, + 125, + 157, + 79, + 109, + 183, + 12, + 102, + 152, + 167, + 127, + 30, + 115, + 74, + 34, + 207, + 189, + 243, + 150, + 36, + 226, + 220, + 117, + 110, + 165, + 1, + 84, + 52, + 191, + 221, + 189, + 106, + 19, + 173, + 61, + 12, + 138, + 28, + 3, + 204, + 172, + 209, + 39, + 251, + 31, + 48, + 229, + 80, + 187, + 136, + 138, + 237, + 216, + 2, + 157, + 101, + 208, + 25, + 136, + 10, + 135, + 252, + 224, + 119, + 151, + 246, + 58, + 140, + 230, + 244, + 43, + 17, + 126, + 7, + 70, + 195, + 46, + 78, + 217, + 190, + 107, + 207, + 126, + 166, + 100, + 249, + 65, + 175, + 45, + 61, + 59, + 76, + 94, + 145, + 95, + 220, + 200, + 54, + 51, + 28, + 156, + 150, + 77, + 199, + 204, + 151, + 132, + 142, + 119, + 230, + 173, + 21, + 134, + 53, + 3, + 83, + 137, + 209, + 33, + 221, + 44, + 178, + 181, + 40, + 15, + 141, + 124, + 197, + 124, + 126, + 181, + 193, + 87, + 135, + 38, + 222, + 195, + 128, + 20, + 91, + 209, + 43, + 4, + 38, + 14, + 91, + 187, + 54, + 61, + 29, + 42, + 196, + 44, + 111, + 52, + 145, + 64, + 12, + 122, + 165, + 205, + 180, + 211, + 254, + 253, + 74, + 110, + 81, + 3, + 26, + 196, + 206, + 137, + 27, + 168, + 221, + 154, + 156, + 83, + 143, + 14, + 168, + 89, + 125, + 128, + 236, + 161, + 24, + 119, + 121, + 80, + 238, + 26, + 49, + 72, + 103, + 112, + 93, + 233, + 161, + 229, + 179, + 51, + 63, + 111, + 88, + 157, + 228, + 238, + 242, + 167, + 226, + 203, + 1, + 35, + 172, + 239, + 158, + 241, + 69, + 222, + 49, + 17, + 131, + 24, + 65, + 8, + 27, + 117, + 16, + 196, + 10, + 226, + 156, + 179, + 96, + 74, + 143, + 136, + 102, + 39, + 76, + 141, + 230, + 214, + 234, + 36, + 13, + 170, + 135, + 25, + 116, + 42, + 17, + 58, + 91, + 105, + 3, + 21, + 28, + 72, + 225, + 250, + 208, + 200, + 244, + 27, + 75, + 210, + 111, + 124, + 152, + 54, + 119, + 56, + 227, + 37, + 63, + 177, + 199, + 15, + 118, + 237, + 111, + 203, + 223, + 112, + 70, + 219, + 194, + 9, + 190, + 184, + 179, + 111, + 73, + 8, + 67, + 53, + 183, + 253, + 250, + 24, + 19, + 254, + 8, + 218, + 90, + 218, + 216, + 220, + 96, + 89, + 96, + 106, + 155, + 138, + 224, + 90, + 90, + 120, + 6, + 127, + 218, + 4, + 17, + 109, + 116, + 198, + 227, + 21, + 81, + 164, + 113, + 4, + 223, + 208, + 206, + 150, + 86, + 223, + 189, + 18, + 194, + 65, + 160, + 163, + 179, + 222, + 150, + 49, + 35, + 174, + 62, + 87, + 38, + 124, + 171, + 0, + 193, + 222, + 180, + 95, + 65, + 139, + 156, + 189, + 198, + 240, + 215, + 176, + 233, + 31, + 154, + 59, + 186, + 92, + 66, + 17, + 30, + 0, + 172, + 109, + 141, + 236, + 135, + 224, + 8, + 98, + 6, + 50, + 181, + 211, + 136, + 109, + 33, + 40, + 91, + 110, + 196, + 246, + 254, + 36, + 238, + 39, + 164, + 196, + 109, + 237, + 229, + 0, + 247, + 206, + 240, + 2, + 37, + 133, + 49, + 189, + 199, + 184, + 241, + 117, + 73, + 102, + 98, + 69, + 96, + 5, + 137, + 238, + 1, + 55, + 152, + 111, + 143, + 188, + 20, + 8, + 235, + 229, + 70, + 117, + 231, + 92, + 96, + 230, + 70, + 159, + 168, + 88, + 13, + 249, + 149, + 181, + 102, + 150, + 186, + 68, + 167, + 51, + 85, + 225, + 158, + 249, + 237, + 251, + 186, + 53, + 58, + 231, + 123, + 154, + 170, + 125, + 122, + 109, + 3, + 238, + 168, + 73, + 208, + 231, + 171, + 152, + 96, + 164, + 68, + 227, + 45, + 210, + 96, + 7, + 19, + 164, + 255, + 178, + 32, + 123, + 197, + 130, + 236, + 137, + 228, + 48, + 249, + 160, + 90, + 254, + 247, + 99, + 24, + 155, + 129, + 206, + 53, + 128, + 45, + 226, + 196, + 250, + 232, + 105, + 2, + 162, + 168, + 169, + 221, + 115, + 9, + 116, + 30, + 43, + 213, + 186, + 36, + 108, + 65, + 50, + 83, + 212, + 209, + 184, + 116, + 135, + 107, + 190, + 46, + 27, + 41, + 251, + 225, + 195, + 2, + 6, + 152, + 97, + 78, + 117, + 238, + 235, + 142, + 35, + 27, + 24, + 91, + 46, + 247, + 123, + 198, + 140, + 221, + 214, + 160, + 58, + 160, + 40, + 166, + 251, + 223, + 41, + 192, + 199, + 64, + 104, + 152, + 134, + 27, + 213, + 253, + 133, + 146, + 234, + 186, + 173, + 152, + 47, + 1, + 150, + 122, + 135, + 233, + 21, + 246, + 210, + 160, + 240, + 3, + 106, + 204, + 24, + 8, + 127, + 127, + 140, + 229, + 107, + 75, + 224, + 92, + 229, + 14, + 157, + 129, + 100, + 180, + 192, + 173, + 177, + 8, + 10, + 23, + 255, + 33, + 51, + 157, + 38, + 181, + 199, + 220, + 250, + 160, + 8, + 203, + 73, + 192, + 107, + 164, + 35, + 126, + 10, + 76, + 205, + 136, + 103, + 202, + 105, + 125, + 79, + 152, + 42, + 71, + 57, + 145, + 214, + 24, + 3, + 71, + 203, + 129, + 52, + 39, + 29, + 87, + 152, + 87, + 9, + 158, + 157, + 82, + 221, + 162, + 101, + 200, + 157, + 82, + 69, + 100, + 176, + 145, + 111, + 205, + 191, + 105, + 160, + 23, + 51, + 221, + 87, + 70, + 175, + 19, + 82, + 182, + 33, + 42, + 134, + 37, + 121, + 166, + 248, + 41, + 232, + 101, + 224, + 200, + 233, + 118, + 180, + 173, + 97, + 44, + 33, + 135, + 74, + 238, + 125, + 134, + 102, + 46, + 2, + 215, + 209, + 105, + 187, + 191, + 12, + 194, + 143, + 45, + 93, + 90, + 214, + 27, + 92, + 228, + 146, + 226, + 249, + 128, + 44, + 166, + 173, + 211, + 56, + 200, + 98, + 115, + 104, + 222, + 107, + 232, + 246, + 210, + 59, + 80, + 154, + 138, + 83, + 227, + 252, + 190, + 89, + 228, + 79, + 201, + 231, + 247, + 145, + 174, + 91, + 194, + 223, + 9, + 181, + 209, + 144, + 68, + 38, + 129, + 45, + 203, + 15, + 64, + 149, + 23, + 88, + 5, + 208, + 110, + 195, + 126, + 135, + 70, + 105, + 6, + 139, + 52, + 132, + 101, + 141, + 196, + 181, + 229, + 121, + 202, + 124, + 41, + 95, + 162, + 83, + 154, + 25, + 219, + 108, + 148, + 47, + 41, + 133, + 92, + 119, + 229, + 57, + 232, + 87, + 72, + 183, + 247, + 9, + 135, + 15, + 221, + 253, + 2, + 208, + 221, + 165, + 54, + 38, + 176, + 237, + 238, + 45, + 90, + 204, + 209, + 60, + 179, + 247, + 112, + 208, + 34, + 89, + 107, + 142, + 161, + 167, + 164, + 213, + 123, + 106, + 220, + 153, + 142, + 45, + 184, + 146, + 200, + 172, + 239, + 169, + 176, + 173, + 203, + 142, + 74, + 229, + 248, + 140, + 112, + 208, + 164, + 90, + 103, + 133, + 193, + 166, + 177, + 233, + 109, + 105, + 67, + 99, + 69, + 165, + 193, + 184, + 101, + 161, + 143, + 220, + 4, + 96, + 189, + 49, + 125, + 227, + 83, + 162, + 232, + 182, + 33, + 102, + 64, + 95, + 141, + 199, + 155, + 57, + 128, + 108, + 248, + 236, + 193, + 206, + 206, + 222, + 181, + 117, + 147, + 162, + 81, + 154, + 108, + 116, + 136, + 107, + 221, + 164, + 104, + 148, + 186, + 97, + 245, + 191, + 116, + 7, + 148, + 176, + 185, + 200, + 82, + 97, + 204, + 57, + 37, + 204, + 84, + 82, + 179, + 130, + 239, + 153, + 17, + 134, + 48, + 108, + 97, + 99, + 56, + 15, + 170, + 2, + 234, + 200, + 85, + 151, + 207, + 180, + 227, + 219, + 196, + 95, + 140, + 42, + 188, + 177, + 145, + 113, + 139, + 7, + 32, + 73, + 85, + 101, + 251, + 114, + 189, + 122, + 62, + 111, + 83, + 121, + 223, + 128, + 161, + 12, + 67, + 246, + 59, + 24, + 226, + 13, + 174, + 101, + 179, + 17, + 89, + 188, + 153, + 150, + 177, + 167, + 254, + 60, + 108, + 85, + 70, + 197, + 126, + 92, + 65, + 65, + 19, + 170, + 91, + 195, + 103, + 65, + 144, + 54, + 97, + 56, + 53, + 134, + 125, + 209, + 26, + 128, + 83, + 210, + 111, + 124, + 132, + 152, + 238, + 227, + 151, + 106, + 110, + 210, + 25, + 225, + 101, + 76, + 32, + 178, + 198, + 199, + 30, + 134, + 103, + 228, + 158, + 174, + 56, + 167, + 154, + 68, + 129, + 130, + 72, + 112, + 122, + 137, + 11, + 68, + 56, + 223, + 145, + 119, + 101, + 30, + 149, + 144, + 171, + 158, + 127, + 103, + 176, + 139, + 44, + 112, + 145, + 70, + 195, + 111, + 86, + 134, + 129, + 51, + 53, + 124, + 125, + 226, + 88, + 145, + 40, + 191, + 170, + 225, + 57, + 164, + 97, + 57, + 68, + 222, + 64, + 99, + 58, + 98, + 216, + 68, + 76, + 203, + 57, + 60, + 175, + 155, + 152, + 63, + 113, + 188, + 122, + 59, + 122, + 45, + 200, + 192, + 3, + 27, + 123, + 82, + 193, + 129, + 98, + 203, + 75, + 171, + 87, + 150, + 150, + 202, + 240, + 237, + 117, + 34, + 230, + 54, + 200, + 196, + 32, + 156, + 155, + 24, + 156, + 74, + 21, + 13, + 116, + 172, + 52, + 124, + 246, + 51, + 237, + 204, + 14, + 249, + 107, + 193, + 80, + 159, + 141, + 129, + 57, + 18, + 12, + 117, + 206, + 91, + 158, + 101, + 184, + 65, + 57, + 245, + 207, + 56, + 51, + 177, + 130, + 231, + 180, + 192, + 83, + 173, + 226, + 2, + 94, + 185, + 113, + 79, + 137, + 200, + 84, + 232, + 69, + 111, + 86, + 78, + 104, + 14, + 201, + 168, + 49, + 128, + 42, + 146, + 31, + 89, + 56, + 45, + 73, + 203, + 237, + 170, + 90, + 211, + 118, + 161, + 157, + 86, + 220, + 82, + 125, + 194, + 28, + 210, + 104, + 28, + 250, + 146, + 152, + 244, + 236, + 20, + 191, + 91, + 48, + 16, + 16, + 241, + 88, + 177, + 150, + 182, + 100, + 52, + 226, + 4, + 114, + 29, + 234, + 212, + 192, + 169, + 106, + 246, + 170, + 93, + 64, + 107, + 170, + 239, + 114, + 170, + 204, + 129, + 92, + 156, + 182, + 32, + 41, + 233, + 178, + 43, + 219, + 175, + 24, + 120, + 247, + 131, + 154, + 211, + 214, + 139, + 91, + 68, + 255, + 69, + 100, + 53, + 194, + 22, + 209, + 127, + 193, + 153, + 250, + 2, + 212, + 133, + 229, + 149, + 214, + 218, + 219, + 157, + 132, + 44, + 2, + 34, + 3, + 155, + 232, + 195, + 164, + 34, + 32, + 210, + 45, + 222, + 172, + 235, + 72, + 91, + 109, + 156, + 84, + 150, + 234, + 189, + 227, + 128, + 72, + 32, + 52, + 231, + 232, + 4, + 171, + 162, + 145, + 183, + 52, + 229, + 20, + 52, + 251, + 51, + 98, + 196, + 141, + 45, + 234, + 156, + 180, + 200, + 17, + 17, + 32, + 43, + 200, + 157, + 219, + 40, + 205, + 54, + 165, + 138, + 129, + 205, + 60, + 149, + 230, + 30, + 94, + 126, + 88, + 79, + 139, + 167, + 96, + 235, + 247, + 156, + 83, + 186, + 194, + 87, + 220, + 177, + 145, + 26, + 183, + 130, + 132, + 132, + 121, + 164, + 84, + 119, + 200, + 223, + 88, + 81, + 4, + 164, + 13, + 204, + 83, + 95, + 50, + 2, + 93, + 121, + 146, + 232, + 1, + 49, + 174, + 196, + 196, + 15, + 83, + 134, + 13, + 22, + 119, + 250, + 40, + 146, + 32, + 248, + 152, + 105, + 21, + 85, + 111, + 115, + 116, + 101, + 15, + 25, + 94, + 44, + 158, + 119, + 7, + 208, + 67, + 208, + 210, + 40, + 188, + 177, + 27, + 121, + 95, + 54, + 195, + 26, + 59, + 53, + 112, + 33, + 43, + 120, + 95, + 87, + 42, + 142, + 251, + 63, + 239, + 134, + 134, + 48, + 236, + 223, + 110, + 246, + 24, + 109, + 0, + 153, + 128, + 77, + 205, + 181, + 120, + 31, + 163, + 47, + 228, + 155, + 253, + 80, + 163, + 30, + 137, + 133, + 64, + 102, + 170, + 195, + 123, + 34, + 165, + 186, + 14, + 12, + 157, + 70, + 102, + 13, + 64, + 107, + 220, + 254, + 217, + 4, + 72, + 72, + 158, + 79, + 226, + 123, + 248, + 103, + 223, + 207, + 254, + 137, + 162, + 163, + 2, + 3, + 187, + 124, + 223, + 153, + 34, + 155, + 168, + 147, + 173, + 196, + 51, + 162, + 137, + 82, + 210, + 231, + 67, + 199, + 34, + 156, + 80, + 158, + 2, + 73, + 181, + 162, + 239, + 99, + 58, + 22, + 98, + 97, + 229, + 151, + 207, + 130, + 195, + 241, + 177, + 176, + 242, + 147, + 60, + 122, + 228, + 47, + 21, + 138, + 82, + 66, + 73, + 173, + 174, + 200, + 58, + 40, + 242, + 62, + 90, + 83, + 0, + 230, + 45, + 239, + 227, + 41, + 227, + 185, + 98, + 209, + 222, + 63, + 193, + 35, + 227, + 66, + 101, + 6, + 209, + 145, + 166, + 87, + 158, + 38, + 62, + 218, + 45, + 133, + 99, + 29, + 8, + 116, + 183, + 81, + 171, + 82, + 213, + 118, + 10, + 131, + 213, + 170, + 182, + 109, + 184, + 235, + 152, + 133, + 165, + 74, + 41, + 7, + 224, + 156, + 133, + 53, + 73, + 82, + 117, + 80, + 173, + 222, + 60, + 227, + 221, + 173, + 5, + 75, + 44, + 157, + 206, + 109, + 162, + 192, + 82, + 203, + 209, + 45, + 217, + 136, + 196, + 143, + 91, + 30, + 121, + 11, + 38, + 71, + 18, + 121, + 31, + 24, + 254, + 86, + 191, + 251, + 190, + 82, + 152, + 244, + 81, + 222, + 103, + 66, + 96, + 56, + 57, + 142, + 229, + 59, + 152, + 156, + 142, + 0, + 200, + 205, + 182, + 32, + 57, + 237, + 146, + 57, + 158, + 146, + 28, + 126, + 58, + 158, + 6, + 109, + 69, + 208, + 127, + 76, + 132, + 215, + 251, + 10, + 215, + 184, + 90, + 189, + 232, + 160, + 98, + 120, + 87, + 79, + 109, + 100, + 253, + 106, + 120, + 87, + 207, + 220, + 242, + 241, + 88, + 140, + 185, + 139, + 218, + 97, + 156, + 203, + 27, + 241, + 151, + 165, + 160, + 50, + 48, + 21, + 228, + 53, + 163, + 71, + 110, + 96, + 147, + 177, + 145, + 45, + 136, + 65, + 196, + 102, + 197, + 60, + 102, + 172, + 52, + 35, + 106, + 116, + 226, + 250, + 233, + 12, + 178, + 91, + 32, + 110, + 148, + 238, + 100, + 167, + 48, + 90, + 16, + 146, + 60, + 55, + 107, + 255, + 168, + 37, + 6, + 35, + 138, + 69, + 88, + 58, + 41, + 104, + 145, + 226, + 134, + 42, + 123, + 196, + 139, + 178, + 53, + 209, + 231, + 17, + 120, + 186, + 23, + 35, + 16, + 231, + 48, + 217, + 169, + 124, + 82, + 129, + 7, + 189, + 67, + 214, + 229, + 59, + 90, + 37, + 6, + 32, + 55, + 135, + 54, + 182, + 54, + 3, + 144, + 155, + 102, + 155, + 188, + 225, + 67, + 243, + 177, + 8, + 81, + 25, + 141, + 164, + 3, + 82, + 139, + 80, + 7, + 219, + 179, + 61, + 90, + 219, + 165, + 116, + 107, + 13, + 73, + 129, + 87, + 51, + 166, + 140, + 197, + 195, + 97, + 112, + 134, + 49, + 248, + 179, + 76, + 112, + 122, + 187, + 195, + 44, + 224, + 56, + 26, + 57, + 228, + 1, + 242, + 121, + 180, + 142, + 58, + 116, + 170, + 135, + 216, + 169, + 58, + 176, + 230, + 186, + 167, + 195, + 155, + 154, + 12, + 66, + 158, + 174, + 95, + 53, + 125, + 174, + 66, + 26, + 203, + 87, + 229, + 12, + 105, + 92, + 20, + 148, + 83, + 105, + 205, + 224, + 36, + 158, + 41, + 183, + 232, + 3, + 169, + 87, + 219, + 53, + 149, + 4, + 10, + 226, + 157, + 22, + 97, + 43, + 178, + 72, + 115, + 59, + 167, + 93, + 31, + 195, + 83, + 241, + 230, + 2, + 159, + 222, + 72, + 16, + 149, + 32, + 136, + 10, + 230, + 231, + 148, + 226, + 166, + 74, + 143, + 170, + 39, + 38, + 76, + 215, + 179, + 4, + 14, + 67, + 84, + 215, + 4, + 97, + 111, + 244, + 43, + 20, + 15, + 106, + 5, + 166, + 61, + 18, + 198, + 205, + 78, + 209, + 97, + 36, + 103, + 16, + 71, + 209, + 27, + 155, + 36, + 55, + 113, + 166, + 99, + 42, + 165, + 172, + 186, + 89, + 213, + 61, + 29, + 122, + 134, + 113, + 148, + 84, + 218, + 104, + 97, + 28, + 169, + 2, + 139, + 211, + 179, + 13, + 255, + 178, + 5, + 175, + 88, + 176, + 105, + 142, + 11, + 56, + 238, + 25, + 237, + 109, + 6, + 146, + 156, + 19, + 84, + 79, + 113, + 195, + 1, + 83, + 70, + 206, + 239, + 120, + 11, + 131, + 253, + 238, + 94, + 31, + 142, + 21, + 122, + 215, + 241, + 56, + 140, + 45, + 28, + 8, + 40, + 249, + 212, + 122, + 29, + 202, + 34, + 2, + 103, + 209, + 61, + 44, + 107, + 118, + 209, + 203, + 62, + 160, + 228, + 254, + 168, + 98, + 86, + 28, + 108, + 172, + 148, + 142, + 113, + 218, + 78, + 0, + 139, + 76, + 236, + 148, + 224, + 241, + 65, + 55, + 101, + 18, + 92, + 33, + 166, + 62, + 84, + 204, + 22, + 16, + 77, + 30, + 123, + 168, + 216, + 179, + 156, + 189, + 100, + 162, + 84, + 178, + 193, + 83, + 207, + 46, + 129, + 49, + 35, + 26, + 180, + 145, + 71, + 182, + 0, + 57, + 254, + 229, + 217, + 30, + 151, + 140, + 196, + 54, + 130, + 52, + 97, + 89, + 171, + 20, + 9, + 101, + 132, + 102, + 166, + 176, + 118, + 216, + 135, + 115, + 15, + 17, + 164, + 136, + 39, + 88, + 163, + 83, + 130, + 57, + 29, + 196, + 114, + 237, + 254, + 43, + 188, + 170, + 109, + 253, + 180, + 125, + 239, + 120, + 208, + 103, + 83, + 88, + 195, + 20, + 107, + 33, + 53, + 194, + 191, + 55, + 94, + 215, + 146, + 220, + 30, + 166, + 160, + 91, + 212, + 62, + 139, + 175, + 71, + 173, + 221, + 42, + 179, + 17, + 248, + 234, + 91, + 73, + 88, + 145, + 178, + 68, + 157, + 36, + 44, + 7, + 97, + 73, + 151, + 244, + 109, + 171, + 167, + 242, + 216, + 83, + 218, + 78, + 151, + 231, + 158, + 179, + 60, + 62, + 98, + 176, + 185, + 70, + 35, + 147, + 137, + 130, + 251, + 231, + 169, + 41, + 209, + 126, + 250, + 224, + 161, + 253, + 251, + 2, + 66, + 233, + 212, + 100, + 42, + 133, + 248, + 32, + 207, + 25, + 225, + 77, + 44, + 168, + 84, + 178, + 85, + 37, + 204, + 161, + 19, + 86, + 108, + 184, + 141, + 22, + 153, + 188, + 98, + 187, + 13, + 41, + 247, + 123, + 167, + 199, + 201, + 24, + 241, + 202, + 118, + 6, + 58, + 13, + 137, + 119, + 54, + 143, + 225, + 222, + 54, + 73, + 223, + 124, + 126, + 103, + 113, + 242, + 34, + 161, + 84, + 214, + 198, + 133, + 235, + 22, + 195, + 56, + 45, + 165, + 80, + 151, + 0, + 8, + 238, + 130, + 222, + 229, + 112, + 62, + 193, + 213, + 183, + 33, + 147, + 5, + 108, + 171, + 21, + 50, + 161, + 224, + 51, + 229, + 180, + 210, + 102, + 182, + 203, + 144, + 32, + 75, + 52, + 66, + 124, + 193, + 168, + 48, + 185, + 137, + 163, + 54, + 86, + 93, + 217, + 125, + 84, + 63, + 117, + 82, + 36, + 149, + 163, + 226, + 147, + 70, + 139, + 37, + 141, + 224, + 54, + 155, + 105, + 102, + 196, + 135, + 161, + 41, + 193, + 244, + 239, + 244, + 203, + 188, + 241, + 186, + 236, + 13, + 126, + 153, + 111, + 166, + 112, + 171, + 135, + 169, + 34, + 55, + 102, + 26, + 101, + 94, + 88, + 239, + 172, + 140, + 188, + 106, + 97, + 165, + 74, + 48, + 40, + 230, + 208, + 14, + 160, + 99, + 93, + 128, + 206, + 21, + 210, + 242, + 53, + 3, + 150, + 67, + 110, + 61, + 216, + 66, + 73, + 107, + 210, + 211, + 163, + 19, + 44, + 101, + 201, + 65, + 219, + 93, + 51, + 173, + 210, + 117, + 180, + 49, + 181, + 178, + 248, + 21, + 135, + 150, + 237, + 22, + 45, + 173, + 217, + 216, + 247, + 240, + 40, + 96, + 103, + 158, + 109, + 180, + 111, + 128, + 86, + 227, + 12, + 181, + 20, + 236, + 137, + 66, + 175, + 169, + 161, + 139, + 34, + 224, + 97, + 42, + 216, + 24, + 23, + 40, + 14, + 99, + 22, + 76, + 130, + 75, + 13, + 239, + 196, + 51, + 124, + 247, + 26, + 34, + 0, + 221, + 71, + 106, + 245, + 113, + 106, + 26, + 53, + 193, + 38, + 165, + 48, + 216, + 9, + 32, + 248, + 65, + 230, + 95, + 116, + 51, + 241, + 111, + 196, + 38, + 194, + 193, + 223, + 67, + 204, + 181, + 131, + 246, + 126, + 58, + 63, + 137, + 163, + 165, + 181, + 58, + 237, + 221, + 5, + 3, + 126, + 75, + 213, + 169, + 111, + 91, + 31, + 30, + 187, + 225, + 247, + 235, + 67, + 160, + 236, + 207, + 203, + 163, + 11, + 139, + 253, + 35, + 115, + 228, + 200, + 130, + 151, + 60, + 244, + 254, + 156, + 70, + 195, + 31, + 238, + 96, + 131, + 35, + 167, + 59, + 229, + 166, + 95, + 59, + 85, + 38, + 137, + 89, + 219, + 168, + 202, + 130, + 225, + 214, + 88, + 13, + 50, + 7, + 219, + 34, + 23, + 212, + 94, + 194, + 242, + 46, + 209, + 94, + 42, + 44, + 239, + 80, + 139, + 54, + 29, + 166, + 204, + 70, + 49, + 55, + 91, + 68, + 61, + 175, + 52, + 246, + 99, + 31, + 24, + 240, + 130, + 118, + 64, + 31, + 101, + 213, + 20, + 230, + 46, + 170, + 189, + 126, + 224, + 44, + 150, + 74, + 88, + 247, + 193, + 188, + 82, + 194, + 115, + 166, + 61, + 16, + 138, + 222, + 90, + 35, + 191, + 94, + 36, + 236, + 230, + 102, + 138, + 0, + 116, + 95, + 188, + 78, + 88, + 152, + 139, + 207, + 79, + 141, + 194, + 7, + 172, + 197, + 233, + 73, + 179, + 132, + 218, + 47, + 52, + 34, + 242, + 9, + 27, + 174, + 142, + 33, + 103, + 127, + 219, + 251, + 28, + 144, + 203, + 212, + 86, + 183, + 45, + 159, + 96, + 180, + 82, + 161, + 221, + 131, + 90, + 230, + 26, + 166, + 126, + 20, + 227, + 163, + 168, + 176, + 134, + 53, + 242, + 85, + 21, + 29, + 150, + 121, + 7, + 2, + 80, + 207, + 227, + 86, + 244, + 82, + 85, + 193, + 100, + 52, + 238, + 87, + 170, + 30, + 221, + 44, + 154, + 31, + 0, + 207, + 25, + 193, + 96, + 77, + 109, + 88, + 219, + 140, + 160, + 158, + 244, + 113, + 119, + 62, + 56, + 235, + 15, + 80, + 152, + 93, + 201, + 110, + 68, + 157, + 174, + 136, + 168, + 11, + 67, + 146, + 29, + 120, + 100, + 117, + 105, + 183, + 106, + 217, + 79, + 197, + 219, + 168, + 237, + 113, + 159, + 36, + 56, + 109, + 183, + 71, + 110, + 199, + 78, + 105, + 220, + 124, + 233, + 118, + 236, + 76, + 223, + 161, + 3, + 207, + 139, + 51, + 232, + 207, + 96, + 137, + 120, + 227, + 137, + 107, + 34, + 56, + 78, + 207, + 221, + 115, + 202, + 103, + 229, + 167, + 228, + 155, + 8, + 178, + 210, + 86, + 242, + 13, + 230, + 130, + 170, + 109, + 44, + 235, + 192, + 148, + 126, + 59, + 190, + 236, + 212, + 52, + 73, + 65, + 116, + 113, + 218, + 234, + 59, + 4, + 41, + 200, + 65, + 121, + 240, + 158, + 181, + 117, + 103, + 116, + 151, + 244, + 217, + 170, + 237, + 82, + 85, + 14, + 25, + 83, + 206, + 176, + 92, + 26, + 143, + 17, + 232, + 6, + 62, + 115, + 23, + 237, + 50, + 237, + 241, + 25, + 18, + 114, + 0, + 211, + 144, + 202, + 108, + 116, + 242, + 14, + 183, + 77, + 74, + 133, + 72, + 251, + 175, + 88, + 237, + 153, + 94, + 238, + 47, + 165, + 212, + 250, + 108, + 124, + 116, + 128, + 15, + 79, + 189, + 67, + 79, + 197, + 78, + 1, + 164, + 162, + 166, + 1, + 52, + 101, + 23, + 183, + 87, + 218, + 65, + 183, + 194, + 61, + 39, + 14, + 157, + 178, + 112, + 162, + 112, + 159, + 169, + 155, + 222, + 181, + 199, + 126, + 31, + 140, + 84, + 28, + 162, + 75, + 35, + 141, + 234, + 188, + 121, + 26, + 71, + 23, + 174, + 155, + 222, + 104, + 151, + 21, + 166, + 75, + 108, + 152, + 22, + 86, + 231, + 54, + 231, + 34, + 55, + 165, + 127, + 219, + 53, + 174, + 72, + 113, + 77, + 59, + 165, + 181, + 13, + 244, + 190, + 15, + 80, + 51, + 83, + 156, + 131, + 10, + 100, + 79, + 136, + 226, + 123, + 95, + 56, + 129, + 37, + 79, + 33, + 43, + 213, + 57, + 219, + 105, + 122, + 135, + 222, + 79, + 10, + 163, + 104, + 61, + 159, + 226, + 109, + 30, + 215, + 156, + 7, + 149, + 92, + 193, + 141, + 238, + 1, + 229, + 178, + 69, + 117, + 168, + 194, + 25, + 51, + 152, + 107, + 169, + 182, + 253, + 20, + 62, + 27, + 224, + 136, + 233, + 22, + 126, + 31, + 8, + 255, + 136, + 197, + 247, + 186, + 91, + 135, + 17, + 149, + 99, + 163, + 211, + 77, + 248, + 80, + 249, + 42, + 250, + 77, + 23, + 154, + 104, + 13, + 104, + 120, + 96, + 93, + 19, + 59, + 173, + 110, + 100, + 74, + 152, + 71, + 229, + 86, + 55, + 155, + 46, + 214, + 207, + 110, + 118, + 103, + 183, + 181, + 86, + 245, + 18, + 34, + 184, + 104, + 74, + 143, + 57, + 5, + 166, + 38, + 12, + 180, + 180, + 125, + 69, + 63, + 239, + 41, + 178, + 74, + 196, + 234, + 72, + 69, + 169, + 98, + 177, + 224, + 175, + 78, + 0, + 10, + 97, + 217, + 72, + 27, + 75, + 79, + 104, + 188, + 219, + 28, + 34, + 129, + 225, + 220, + 120, + 30, + 8, + 86, + 18, + 78, + 77, + 71, + 163, + 238, + 228, + 29, + 26, + 193, + 44, + 3, + 27, + 212, + 200, + 60, + 77, + 172, + 156, + 202, + 18, + 172, + 88, + 128, + 78, + 125, + 76, + 33, + 148, + 54, + 178, + 137, + 145, + 205, + 8, + 153, + 193, + 225, + 123, + 24, + 153, + 191, + 183, + 191, + 209, + 43, + 224, + 89, + 137, + 56, + 148, + 149, + 249, + 149, + 53, + 241, + 82, + 53, + 93, + 3, + 161, + 85, + 41, + 118, + 182, + 248, + 77, + 140, + 119, + 202, + 27, + 153, + 77, + 83, + 227, + 157, + 242, + 244, + 40, + 120, + 118, + 200, + 158, + 14, + 212, + 217, + 185, + 54, + 6, + 30, + 30, + 196, + 183, + 143, + 224, + 68, + 236, + 18, + 153, + 8, + 134, + 40, + 105, + 223, + 3, + 241, + 9, + 136, + 70, + 233, + 110, + 116, + 48, + 49, + 203, + 227, + 229, + 89, + 101, + 143, + 196, + 176, + 134, + 82, + 227, + 246, + 27, + 238, + 230, + 203, + 140, + 82, + 93, + 194, + 217, + 20, + 12, + 119, + 115, + 15, + 171, + 202, + 70, + 218, + 21, + 79, + 24, + 132, + 56, + 229, + 123, + 156, + 134, + 168, + 2, + 166, + 83, + 211, + 196, + 192, + 211, + 16, + 194, + 5, + 97, + 28, + 66, + 212, + 57, + 17, + 119, + 47, + 98, + 81, + 196, + 53, + 116, + 26, + 223, + 175, + 25, + 113, + 13, + 57, + 25, + 224, + 146, + 202, + 235, + 18, + 110, + 118, + 72, + 164, + 138, + 82, + 107, + 118, + 58, + 124, + 17, + 70, + 8, + 174, + 164, + 42, + 148, + 179, + 119, + 139, + 208, + 1, + 199, + 76, + 223, + 131, + 195, + 107, + 36, + 6, + 180, + 149, + 162, + 169, + 159, + 254, + 102, + 221, + 60, + 219, + 27, + 245, + 190, + 36, + 10, + 190, + 110, + 161, + 196, + 135, + 111, + 213, + 67, + 191, + 251, + 97, + 121, + 151, + 65, + 111, + 214, + 25, + 242, + 77, + 211, + 209, + 104, + 207, + 100, + 118, + 211, + 116, + 52, + 78, + 192, + 133, + 176, + 208, + 188, + 145, + 109, + 184, + 20, + 214, + 42, + 210, + 36, + 62, + 219, + 79, + 40, + 84, + 54, + 164, + 105, + 167, + 241, + 148, + 9, + 184, + 96, + 134, + 113, + 88, + 31, + 122, + 117, + 192, + 218, + 99, + 228, + 52, + 1, + 224, + 148, + 7, + 56, + 35, + 172, + 44, + 15, + 250, + 220, + 230, + 251, + 21, + 120, + 229, + 33, + 46, + 30, + 148, + 38, + 198, + 212, + 241, + 252, + 212, + 254, + 74, + 192, + 127, + 41, + 232, + 186, + 112, + 241, + 25, + 41, + 34, + 105, + 115, + 229, + 156, + 145, + 56, + 196, + 158, + 187, + 86, + 124, + 198, + 27, + 229, + 33, + 15, + 161, + 70, + 132, + 148, + 61, + 228, + 33, + 121, + 147, + 179, + 15, + 15, + 62, + 99, + 18, + 11, + 49, + 168, + 228, + 46, + 129, + 167, + 140, + 14, + 131, + 137, + 57, + 202, + 248, + 169, + 89, + 144, + 103, + 227, + 51, + 29, + 220, + 58, + 189, + 77, + 196, + 228, + 86, + 19, + 242, + 119, + 48, + 62, + 195, + 229, + 173, + 3, + 20, + 232, + 168, + 12, + 238, + 212, + 2, + 210, + 0, + 49, + 77, + 27, + 50, + 215, + 50, + 32, + 238, + 129, + 213, + 74, + 243, + 123, + 105, + 220, + 46, + 121, + 49, + 157, + 25, + 217, + 207, + 5, + 107, + 173, + 70, + 249, + 119, + 66, + 191, + 171, + 132, + 100, + 7, + 122, + 168, + 198, + 52, + 245, + 83, + 144, + 108, + 23, + 103, + 50, + 152, + 52, + 130, + 99, + 208, + 98, + 80, + 111, + 8, + 211, + 73, + 147, + 16, + 202, + 179, + 61, + 213, + 20, + 108, + 138, + 226, + 46, + 236, + 202, + 14, + 60, + 98, + 117, + 221, + 128, + 93, + 105, + 188, + 63, + 53, + 177, + 164, + 30, + 149, + 69, + 243, + 89, + 103, + 122, + 128, + 235, + 146, + 148, + 9, + 115, + 172, + 221, + 28, + 60, + 36, + 61, + 46, + 253, + 122, + 164, + 43, + 235, + 247, + 174, + 194, + 94, + 12, + 72, + 38, + 55, + 90, + 23, + 135, + 83, + 61, + 46, + 78, + 141, + 70, + 47, + 237, + 50, + 111, + 117, + 90, + 43, + 118, + 225, + 179, + 241, + 241, + 40, + 59, + 103, + 163, + 10, + 34, + 92, + 227, + 37, + 214, + 223, + 29, + 150, + 88, + 179, + 146, + 5, + 105, + 128, + 234, + 204, + 221, + 213, + 79, + 177, + 210, + 168, + 6, + 87, + 138, + 201, + 125, + 148, + 246, + 51, + 124, + 105, + 116, + 53, + 114, + 187, + 80, + 9, + 152, + 135, + 230, + 177, + 51, + 242, + 65, + 8, + 234, + 156, + 224, + 209, + 90, + 105, + 244, + 70, + 51, + 12, + 183, + 184, + 55, + 176, + 187, + 222, + 137, + 212, + 119, + 230, + 116, + 65, + 195, + 66, + 149, + 210, + 232, + 178, + 68, + 136, + 96, + 238, + 41, + 19, + 185, + 84, + 121, + 30, + 176, + 102, + 171, + 248, + 217, + 125, + 133, + 126, + 51, + 220, + 59, + 41, + 92, + 215, + 26, + 227, + 195, + 104, + 206, + 200, + 107, + 73, + 251, + 131, + 165, + 99, + 110, + 121, + 132, + 190, + 226, + 240, + 246, + 242, + 200, + 189, + 189, + 225, + 43, + 200, + 244, + 70, + 26, + 12, + 15, + 7, + 21, + 204, + 141, + 241, + 245, + 117, + 71, + 232, + 87, + 117, + 146, + 137, + 167, + 208, + 238, + 165, + 133, + 220, + 79, + 102, + 35, + 153, + 159, + 67, + 238, + 135, + 121, + 182, + 203, + 182, + 246, + 179, + 180, + 156, + 222, + 133, + 108, + 74, + 137, + 221, + 33, + 134, + 182, + 102, + 156, + 10, + 59, + 41, + 124, + 142, + 113, + 42, + 76, + 249, + 29, + 165, + 196, + 238, + 225, + 80, + 248, + 18, + 24, + 108, + 2, + 12, + 101, + 88, + 28, + 237, + 26, + 79, + 192, + 130, + 8, + 236, + 35, + 53, + 14, + 59, + 8, + 93, + 92, + 109, + 80, + 69, + 119, + 28, + 99, + 168, + 235, + 6, + 119, + 170, + 151, + 38, + 195, + 178, + 188, + 173, + 122, + 165, + 250, + 190, + 234, + 54, + 176, + 251, + 66, + 214, + 15, + 231, + 67, + 108, + 221, + 148, + 17, + 196, + 195, + 41, + 160, + 173, + 156, + 97, + 5, + 157, + 150, + 30, + 5, + 206, + 234, + 239, + 48, + 230, + 154, + 236, + 222, + 108, + 204, + 21, + 178, + 193, + 29, + 152, + 183, + 226, + 212, + 181, + 230, + 134, + 168, + 41, + 136, + 231, + 29, + 129, + 83, + 191, + 46, + 7, + 157, + 57, + 203, + 178, + 91, + 168, + 122, + 195, + 227, + 87, + 26, + 121, + 250, + 254, + 198, + 92, + 31, + 198, + 208, + 88, + 96, + 172, + 28, + 154, + 238, + 218, + 201, + 107, + 175, + 107, + 30, + 250, + 108, + 14, + 230, + 209, + 139, + 155, + 253, + 118, + 86, + 9, + 118, + 177, + 212, + 116, + 128, + 14, + 159, + 209, + 15, + 217, + 114, + 45, + 155, + 243, + 150, + 72, + 45, + 107, + 11, + 251, + 194, + 38, + 236, + 235, + 193, + 5, + 69, + 222, + 173, + 126, + 38, + 1, + 227, + 56, + 3, + 54, + 182, + 175, + 111, + 187, + 94, + 94, + 62, + 87, + 6, + 232, + 159, + 110, + 157, + 52, + 7, + 96, + 216, + 84, + 244, + 109, + 214, + 83, + 0, + 125, + 173, + 148, + 218, + 83, + 163, + 213, + 37, + 174, + 217, + 186, + 66, + 123, + 176, + 62, + 6, + 55, + 22, + 207, + 56, + 6, + 12, + 37, + 74, + 7, + 176, + 219, + 135, + 48, + 206, + 44, + 150, + 3, + 52, + 167, + 182, + 247, + 161, + 23, + 50, + 222, + 204, + 53, + 248, + 168, + 197, + 58, + 48, + 227, + 69, + 214, + 24, + 83, + 134, + 28, + 154, + 33, + 153, + 121, + 126, + 209, + 179, + 190, + 204, + 54, + 162, + 230, + 160, + 40, + 218, + 105, + 244, + 63, + 25, + 116, + 77, + 77, + 161, + 133, + 131, + 230, + 64, + 181, + 69, + 125, + 92, + 187, + 41, + 89, + 225, + 206, + 24, + 98, + 196, + 48, + 10, + 175, + 178, + 211, + 173, + 221, + 0, + 133, + 82, + 126, + 76, + 169, + 244, + 62, + 80, + 226, + 151, + 3, + 116, + 197, + 5, + 224, + 101, + 212, + 247, + 203, + 135, + 217, + 42, + 37, + 15, + 150, + 150, + 173, + 213, + 40, + 201, + 160, + 229, + 176, + 230, + 200, + 165, + 228, + 103, + 220, + 52, + 103, + 112, + 166, + 198, + 32, + 10, + 242, + 5, + 177, + 141, + 239, + 212, + 28, + 251, + 25, + 143, + 101, + 229, + 126, + 214, + 195, + 99, + 5, + 89, + 157, + 26, + 68, + 230, + 40, + 71, + 114, + 13, + 98, + 93, + 60, + 111, + 166, + 105, + 213, + 202, + 182, + 31, + 170, + 15, + 126, + 60, + 67, + 179, + 86, + 196, + 49, + 55, + 230, + 111, + 177, + 83, + 228, + 49, + 167, + 190, + 20, + 53, + 123, + 234, + 99, + 18, + 63, + 195, + 207, + 141, + 165, + 51, + 115, + 38, + 252, + 220, + 4, + 61, + 109, + 166, + 150, + 56, + 199, + 5, + 209, + 124, + 246, + 104, + 223, + 91, + 53, + 47, + 26, + 110, + 119, + 156, + 106, + 31, + 78, + 35, + 5, + 195, + 237, + 78, + 71, + 182, + 121, + 224, + 40, + 246, + 136, + 135, + 218, + 135, + 220, + 182, + 222, + 149, + 135, + 148, + 189, + 143, + 9, + 74, + 213, + 97, + 64, + 44, + 141, + 77, + 200, + 144, + 149, + 242, + 200, + 93, + 25, + 47, + 65, + 161, + 151, + 80, + 159, + 42, + 186, + 241, + 108, + 157, + 85, + 89, + 96, + 142, + 179, + 83, + 30, + 74, + 176, + 102, + 238, + 153, + 83, + 219, + 25, + 92, + 1, + 191, + 26, + 12, + 220, + 23, + 195, + 34, + 26, + 141, + 28, + 138, + 101, + 97, + 78, + 147, + 202, + 202, + 15, + 65, + 71, + 199, + 48, + 167, + 249, + 4, + 206, + 87, + 221, + 39, + 47, + 27, + 202, + 21, + 52, + 112, + 214, + 30, + 190, + 209, + 108, + 236, + 38, + 108, + 216, + 226, + 59, + 185, + 129, + 120, + 120, + 236, + 237, + 96, + 62, + 212, + 132, + 249, + 148, + 11, + 34, + 173, + 138, + 35, + 114, + 24, + 123, + 149, + 184, + 18, + 127, + 59, + 245, + 83, + 19, + 161, + 70, + 174, + 182, + 76, + 16, + 156, + 69, + 181, + 241, + 253, + 102, + 241, + 45, + 2, + 82, + 237, + 196, + 188, + 215, + 4, + 142, + 189, + 184, + 207, + 111, + 198, + 7, + 176, + 59, + 165, + 12, + 144, + 67, + 94, + 147, + 128, + 88, + 224, + 102, + 91, + 176, + 201, + 182, + 173, + 96, + 9, + 8, + 31, + 179, + 80, + 182, + 89, + 70, + 12, + 108, + 195, + 26, + 133, + 181, + 40, + 6, + 34, + 100, + 185, + 123, + 91, + 27, + 100, + 94, + 194, + 164, + 103, + 123, + 124, + 40, + 32, + 7, + 17, + 55, + 34, + 57, + 107, + 194, + 112, + 73, + 5, + 144, + 229, + 34, + 86, + 66, + 5, + 213, + 75, + 125, + 176, + 30, + 238, + 146, + 110, + 246, + 81, + 167, + 230, + 45, + 143, + 166, + 129, + 46, + 110, + 124, + 189, + 41, + 88, + 200, + 90, + 228, + 98, + 252, + 114, + 141, + 136, + 32, + 99, + 140, + 165, + 207, + 189, + 170, + 15, + 241, + 44, + 143, + 146, + 196, + 211, + 232, + 203, + 83, + 12, + 195, + 129, + 53, + 183, + 239, + 57, + 20, + 44, + 13, + 6, + 161, + 60, + 63, + 246, + 148, + 52, + 20, + 231, + 16, + 109, + 73, + 21, + 179, + 205, + 114, + 225, + 109, + 175, + 196, + 61, + 45, + 160, + 44, + 233, + 175, + 92, + 235, + 195, + 212, + 145, + 211, + 184, + 62, + 31, + 157, + 42, + 244, + 192, + 74, + 220, + 44, + 109, + 14, + 223, + 123, + 243, + 212, + 36, + 136, + 43, + 209, + 95, + 231, + 78, + 245, + 107, + 118, + 6, + 160, + 5, + 178, + 225, + 92, + 4, + 160, + 93, + 217, + 161, + 94, + 86, + 232, + 187, + 87, + 32, + 12, + 58, + 103, + 42, + 164, + 60, + 245, + 163, + 55, + 152, + 188, + 246, + 162, + 147, + 100, + 19, + 197, + 169, + 222, + 184, + 67, + 71, + 119, + 91, + 160, + 62, + 27, + 217, + 250, + 178, + 8, + 230, + 204, + 213, + 64, + 143, + 103, + 236, + 123, + 94, + 230, + 235, + 214, + 92, + 219, + 144, + 137, + 131, + 170, + 54, + 182, + 180, + 20, + 25, + 38, + 89, + 78, + 61, + 188, + 34, + 77, + 170, + 176, + 215, + 123, + 121, + 215, + 19, + 83, + 177, + 3, + 196, + 100, + 78, + 177, + 94, + 196, + 196, + 120, + 166, + 106, + 200, + 242, + 226, + 203, + 100, + 187, + 102, + 86, + 144, + 195, + 36, + 110, + 76, + 144, + 13, + 8, + 102, + 122, + 30, + 120, + 244, + 235, + 59, + 123, + 0, + 152, + 44, + 153, + 79, + 154, + 103, + 9, + 110, + 96, + 120, + 179, + 183, + 199, + 185, + 133, + 27, + 112, + 87, + 194, + 221, + 118, + 55, + 242, + 224, + 160, + 124, + 106, + 148, + 253, + 82, + 25, + 123, + 180, + 10, + 170, + 130, + 32, + 90, + 234, + 138, + 112, + 56, + 125, + 28, + 100, + 177, + 205, + 167, + 167, + 172, + 107, + 21, + 103, + 233, + 30, + 255, + 237, + 180, + 250, + 183, + 65, + 141, + 86, + 51, + 62, + 162, + 222, + 204, + 157, + 239, + 117, + 59, + 31, + 161, + 44, + 118, + 118, + 203, + 166, + 179, + 163, + 29, + 114, + 196, + 25, + 71, + 111, + 176, + 143, + 17, + 17, + 113, + 198, + 62, + 199, + 220, + 2, + 230, + 190, + 29, + 195, + 9, + 78, + 212, + 40, + 243, + 190, + 193, + 9, + 83, + 40, + 173, + 65, + 254, + 83, + 65, + 49, + 62, + 129, + 39, + 119, + 154, + 18, + 141, + 1, + 194, + 161, + 177, + 238, + 24, + 185, + 250, + 205, + 56, + 139, + 244, + 163, + 152, + 116, + 184, + 58, + 253, + 141, + 130, + 93, + 159, + 43, + 232, + 79, + 0, + 214, + 75, + 36, + 168, + 226, + 116, + 92, + 21, + 176, + 215, + 122, + 120, + 103, + 3, + 26, + 72, + 237, + 108, + 180, + 98, + 163, + 88, + 170, + 37, + 215, + 110, + 188, + 194, + 164, + 146, + 183, + 136, + 94, + 174, + 216, + 86, + 31, + 234, + 159, + 110, + 246, + 119, + 179, + 49, + 167, + 135, + 111, + 238, + 119, + 185, + 77, + 106, + 47, + 117, + 155, + 69, + 0, + 13, + 83, + 23, + 229, + 83, + 57, + 211, + 2, + 18, + 78, + 185, + 17, + 167, + 190, + 204, + 47, + 38, + 248, + 161, + 8, + 201, + 52, + 140, + 135, + 27, + 171, + 66, + 94, + 35, + 140, + 135, + 211, + 117, + 240, + 90, + 171, + 254, + 62, + 172, + 113, + 159, + 246, + 211, + 139, + 27, + 10, + 33, + 44, + 165, + 198, + 133, + 83, + 72, + 193, + 73, + 210, + 111, + 172, + 171, + 230, + 67, + 23, + 161, + 23, + 203, + 230, + 225, + 40, + 4, + 161, + 67, + 36, + 205, + 98, + 124, + 3, + 161, + 3, + 103, + 78, + 1, + 43, + 141, + 225, + 236, + 232, + 87, + 205, + 25, + 9, + 23, + 141, + 145, + 57, + 98, + 35, + 18, + 46, + 114, + 90, + 69, + 181, + 47, + 85, + 239, + 115, + 189, + 242, + 182, + 18, + 13, + 117, + 76, + 80, + 27, + 141, + 92, + 109, + 197, + 1, + 83, + 48, + 55, + 193, + 187, + 119, + 35, + 96, + 201, + 143, + 113, + 15, + 70, + 53, + 103, + 213, + 92, + 52, + 229, + 37, + 215, + 0, + 158, + 74, + 182, + 38, + 68, + 43, + 50, + 173, + 230, + 74, + 162, + 75, + 9, + 205, + 158, + 165, + 151, + 236, + 94, + 243, + 84, + 32, + 226, + 206, + 81, + 8, + 187, + 99, + 215, + 156, + 49, + 83, + 129, + 93, + 103, + 211, + 114, + 41, + 168, + 91, + 154, + 224, + 219, + 198, + 46, + 41, + 79, + 223, + 251, + 6, + 195, + 101, + 41, + 123, + 184, + 253, + 34, + 152, + 186, + 135, + 177, + 244, + 14, + 191, + 196, + 4, + 1, + 41, + 220, + 34, + 119, + 112, + 34, + 233, + 210, + 20, + 85, + 46, + 6, + 31, + 205, + 214, + 190, + 132, + 24, + 180, + 174, + 162, + 115, + 0, + 217, + 232, + 36, + 67, + 77, + 1, + 22, + 242, + 70, + 223, + 195, + 185, + 64, + 80, + 188, + 17, + 33, + 53, + 2, + 89, + 115, + 249, + 22, + 232, + 115, + 41, + 184, + 252, + 59, + 3, + 5, + 136, + 0, + 93, + 71, + 42, + 182, + 58, + 245, + 182, + 153, + 64, + 211, + 70, + 78, + 68, + 250, + 40, + 115, + 27, + 135, + 229, + 214, + 9, + 118, + 160, + 50, + 248, + 116, + 78, + 91, + 152, + 103, + 160, + 57, + 78, + 2, + 164, + 33, + 157, + 131, + 63, + 39, + 160, + 147, + 164, + 131, + 95, + 171, + 171, + 182, + 35, + 23, + 234, + 13, + 166, + 55, + 200, + 20, + 253, + 70, + 15, + 243, + 206, + 220, + 193, + 27, + 61, + 44, + 239, + 205, + 254, + 231, + 50, + 226, + 107, + 42, + 152, + 105, + 46, + 24, + 49, + 77, + 27, + 233, + 49, + 4, + 195, + 41, + 221, + 1, + 248, + 215, + 130, + 144, + 97, + 49, + 211, + 253, + 145, + 115, + 87, + 154, + 127, + 232, + 91, + 247, + 95, + 241, + 119, + 151, + 161, + 184, + 202, + 164, + 98, + 243, + 96, + 82, + 150, + 250, + 69, + 97, + 121, + 72, + 108, + 14, + 47, + 99, + 239, + 164, + 26, + 153, + 65, + 69, + 184, + 253, + 228, + 89, + 44, + 161, + 130, + 152, + 189, + 233, + 113, + 10, + 34, + 104, + 125, + 135, + 182, + 32, + 201, + 40, + 134, + 85, + 77, + 31, + 206, + 20, + 218, + 86, + 205, + 211, + 87, + 175, + 205, + 226, + 7, + 236, + 229, + 13, + 211, + 248, + 26, + 145, + 236, + 108, + 34, + 7, + 173, + 5, + 231, + 72, + 249, + 205, + 231, + 180, + 22, + 98, + 66, + 218, + 2, + 48, + 223, + 86, + 19, + 93, + 49, + 181, + 233, + 213, + 175, + 110, + 115, + 76, + 24, + 24, + 177, + 209, + 216, + 32, + 98, + 224, + 120, + 113, + 202, + 90, + 33, + 175, + 252, + 155, + 190, + 237, + 146, + 79, + 112, + 111, + 133, + 57, + 4, + 215, + 214, + 138, + 124, + 163, + 247, + 4, + 49, + 234, + 222, + 113, + 105, + 252, + 121, + 244, + 160, + 9, + 193, + 151, + 112, + 44, + 150, + 175, + 32, + 18, + 1, + 45, + 252, + 63, + 7, + 9, + 27, + 247, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 57, + 57, + 54, + 55, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 221, + 125, + 219, + 206, + 28, + 201, + 113, + 230, + 253, + 60, + 5, + 95, + 64, + 161, + 140, + 83, + 102, + 36, + 32, + 8, + 152, + 25, + 205, + 24, + 123, + 97, + 96, + 119, + 161, + 55, + 208, + 174, + 13, + 44, + 160, + 139, + 245, + 190, + 63, + 176, + 136, + 38, + 53, + 236, + 38, + 35, + 254, + 174, + 140, + 63, + 216, + 28, + 201, + 54, + 32, + 155, + 109, + 22, + 235, + 144, + 149, + 21, + 241, + 197, + 119, + 192, + 15, + 227, + 195, + 248, + 240, + 7, + 252, + 48, + 62, + 152, + 208, + 135, + 191, + 253, + 253, + 135, + 255, + 251, + 3, + 44, + 189, + 253, + 233, + 63, + 254, + 243, + 111, + 127, + 255, + 1, + 63, + 248, + 127, + 255, + 207, + 127, + 187, + 253, + 7, + 126, + 248, + 175, + 255, + 252, + 225, + 143, + 255, + 198, + 31, + 254, + 243, + 255, + 253, + 224, + 191, + 175, + 45, + 31, + 16, + 137, + 63, + 252, + 215, + 255, + 254, + 225, + 63, + 126, + 248, + 31, + 95, + 28, + 97, + 145, + 255, + 207, + 223, + 254, + 126, + 251, + 127, + 29, + 126, + 140, + 143, + 255, + 203, + 231, + 99, + 252, + 241, + 191, + 127, + 248, + 211, + 159, + 254, + 248, + 239, + 63, + 255, + 183, + 191, + 124, + 24, + 31, + 254, + 252, + 231, + 159, + 254, + 242, + 243, + 15, + 63, + 253, + 245, + 135, + 63, + 254, + 42, + 31, + 80, + 96, + 250, + 127, + 173, + 15, + 127, + 253, + 143, + 31, + 240, + 243, + 169, + 130, + 172, + 109, + 184, + 120, + 127, + 248, + 171, + 31, + 247, + 15, + 200, + 64, + 107, + 177, + 176, + 125, + 248, + 235, + 255, + 250, + 240, + 167, + 49, + 148, + 255, + 252, + 225, + 175, + 255, + 231, + 7, + 3, + 84, + 196, + 177, + 236, + 195, + 248, + 199, + 15, + 122, + 251, + 65, + 192, + 108, + 76, + 209, + 187, + 31, + 40, + 251, + 27, + 227, + 246, + 3, + 18, + 208, + 176, + 181, + 198, + 231, + 95, + 228, + 231, + 219, + 47, + 12, + 164, + 19, + 101, + 243, + 231, + 191, + 50, + 111, + 63, + 44, + 96, + 50, + 36, + 253, + 252, + 23, + 44, + 249, + 55, + 100, + 37, + 63, + 32, + 222, + 126, + 248, + 229, + 175, + 71, + 119, + 100, + 10, + 176, + 142, + 177, + 45, + 184, + 51, + 131, + 75, + 71, + 52, + 16, + 162, + 177, + 56, + 56, + 34, + 127, + 60, + 71, + 28, + 160, + 38, + 180, + 132, + 47, + 220, + 211, + 31, + 43, + 39, + 177, + 23, + 44, + 193, + 240, + 28, + 106, + 87, + 133, + 3, + 193, + 144, + 215, + 208, + 224, + 144, + 242, + 83, + 246, + 176, + 36, + 187, + 42, + 124, + 251, + 241, + 158, + 158, + 29, + 11, + 8, + 250, + 249, + 245, + 93, + 48, + 27, + 200, + 30, + 136, + 20, + 93, + 112, + 186, + 156, + 107, + 167, + 47, + 10, + 134, + 70, + 157, + 167, + 47, + 27, + 108, + 15, + 194, + 104, + 9, + 228, + 139, + 109, + 31, + 190, + 141, + 191, + 237, + 17, + 99, + 33, + 111, + 221, + 239, + 124, + 27, + 209, + 16, + 230, + 228, + 221, + 184, + 110, + 77, + 97, + 177, + 238, + 232, + 101, + 252, + 120, + 177, + 6, + 123, + 78, + 86, + 145, + 131, + 171, + 253, + 106, + 71, + 252, + 185, + 114, + 110, + 132, + 10, + 99, + 198, + 143, + 168, + 118, + 181, + 132, + 27, + 144, + 5, + 49, + 122, + 232, + 63, + 102, + 123, + 79, + 190, + 215, + 254, + 154, + 44, + 243, + 244, + 135, + 241, + 107, + 233, + 180, + 197, + 64, + 148, + 87, + 223, + 242, + 39, + 37, + 80, + 210, + 37, + 209, + 115, + 255, + 184, + 250, + 17, + 65, + 198, + 192, + 49, + 214, + 231, + 203, + 250, + 241, + 238, + 70, + 16, + 199, + 207, + 29, + 149, + 226, + 59, + 119, + 247, + 23, + 106, + 171, + 159, + 108, + 3, + 218, + 152, + 179, + 239, + 54, + 108, + 127, + 68, + 20, + 30, + 145, + 255, + 241, + 33, + 221, + 74, + 115, + 204, + 187, + 139, + 250, + 41, + 190, + 168, + 79, + 23, + 123, + 120, + 10, + 140, + 6, + 58, + 150, + 98, + 219, + 69, + 49, + 17, + 232, + 218, + 18, + 173, + 150, + 135, + 234, + 224, + 235, + 115, + 191, + 253, + 249, + 216, + 201, + 206, + 246, + 248, + 67, + 105, + 39, + 103, + 85, + 64, + 227, + 221, + 119, + 177, + 186, + 129, + 84, + 45, + 122, + 130, + 159, + 62, + 54, + 183, + 205, + 119, + 207, + 241, + 121, + 3, + 251, + 180, + 191, + 159, + 254, + 83, + 11, + 65, + 150, + 109, + 233, + 59, + 249, + 165, + 160, + 58, + 194, + 237, + 252, + 211, + 150, + 249, + 213, + 167, + 230, + 254, + 219, + 244, + 240, + 64, + 212, + 222, + 124, + 57, + 15, + 79, + 77, + 134, + 192, + 152, + 184, + 169, + 237, + 98, + 101, + 24, + 32, + 243, + 14, + 247, + 222, + 164, + 202, + 125, + 220, + 147, + 109, + 207, + 176, + 114, + 122, + 188, + 13, + 105, + 141, + 253, + 80, + 200, + 191, + 123, + 51, + 18, + 53, + 152, + 180, + 169, + 111, + 79, + 150, + 73, + 176, + 134, + 159, + 217, + 215, + 71, + 164, + 153, + 222, + 136, + 251, + 79, + 13, + 203, + 133, + 23, + 87, + 46, + 108, + 226, + 247, + 31, + 239, + 230, + 45, + 64, + 81, + 96, + 208, + 108, + 172, + 189, + 21, + 13, + 198, + 182, + 185, + 159, + 149, + 114, + 247, + 87, + 123, + 127, + 81, + 119, + 155, + 123, + 173, + 64, + 85, + 47, + 134, + 23, + 245, + 109, + 107, + 42, + 4, + 42, + 18, + 110, + 107, + 233, + 3, + 156, + 165, + 127, + 73, + 13, + 6, + 197, + 37, + 81, + 237, + 220, + 199, + 135, + 63, + 48, + 193, + 92, + 104, + 75, + 159, + 245, + 57, + 15, + 21, + 197, + 165, + 82, + 50, + 47, + 198, + 94, + 212, + 17, + 203, + 134, + 53, + 12, + 231, + 215, + 87, + 89, + 124, + 212, + 12, + 203, + 6, + 114, + 112, + 192, + 79, + 37, + 136, + 111, + 139, + 115, + 79, + 189, + 251, + 92, + 167, + 247, + 243, + 151, + 55, + 27, + 148, + 195, + 83, + 51, + 129, + 197, + 75, + 132, + 222, + 186, + 214, + 0, + 164, + 241, + 102, + 120, + 108, + 95, + 75, + 111, + 130, + 53, + 191, + 252, + 251, + 207, + 247, + 128, + 13, + 54, + 1, + 54, + 205, + 205, + 231, + 111, + 247, + 178, + 173, + 229, + 250, + 92, + 88, + 63, + 121, + 185, + 191, + 33, + 34, + 192, + 10, + 166, + 44, + 212, + 88, + 204, + 108, + 216, + 164, + 209, + 241, + 242, + 151, + 156, + 122, + 177, + 170, + 1, + 180, + 183, + 134, + 21, + 70, + 17, + 171, + 18, + 224, + 133, + 58, + 163, + 39, + 69, + 31, + 119, + 168, + 13, + 107, + 233, + 28, + 146, + 52, + 61, + 15, + 79, + 106, + 223, + 213, + 163, + 75, + 63, + 247, + 85, + 57, + 222, + 240, + 100, + 23, + 60, + 6, + 169, + 22, + 168, + 50, + 250, + 230, + 213, + 182, + 152, + 17, + 38, + 233, + 8, + 11, + 69, + 42, + 181, + 253, + 136, + 10, + 115, + 175, + 17, + 222, + 245, + 234, + 89, + 110, + 88, + 115, + 15, + 137, + 138, + 14, + 201, + 32, + 214, + 70, + 212, + 46, + 123, + 3, + 138, + 207, + 113, + 46, + 48, + 165, + 213, + 183, + 208, + 113, + 33, + 108, + 146, + 25, + 193, + 188, + 111, + 84, + 212, + 181, + 231, + 187, + 17, + 100, + 162, + 246, + 65, + 202, + 184, + 21, + 148, + 89, + 163, + 61, + 186, + 130, + 185, + 63, + 217, + 106, + 187, + 246, + 43, + 98, + 4, + 94, + 212, + 184, + 206, + 137, + 21, + 68, + 100, + 70, + 187, + 48, + 253, + 6, + 231, + 41, + 77, + 66, + 125, + 207, + 238, + 147, + 224, + 64, + 15, + 119, + 244, + 174, + 23, + 121, + 2, + 155, + 30, + 195, + 64, + 2, + 140, + 42, + 125, + 213, + 54, + 153, + 1, + 219, + 146, + 179, + 213, + 95, + 196, + 123, + 134, + 193, + 146, + 197, + 125, + 171, + 159, + 145, + 192, + 112, + 115, + 244, + 208, + 179, + 158, + 55, + 71, + 236, + 238, + 31, + 225, + 148, + 25, + 191, + 20, + 247, + 207, + 252, + 194, + 128, + 234, + 177, + 65, + 207, + 122, + 253, + 82, + 251, + 194, + 115, + 1, + 111, + 182, + 190, + 110, + 242, + 6, + 243, + 76, + 181, + 112, + 174, + 177, + 223, + 70, + 148, + 154, + 192, + 23, + 54, + 3, + 157, + 91, + 251, + 192, + 23, + 222, + 4, + 83, + 48, + 68, + 25, + 211, + 7, + 114, + 15, + 159, + 109, + 188, + 0, + 189, + 164, + 240, + 127, + 6, + 196, + 61, + 128, + 23, + 247, + 171, + 237, + 210, + 50, + 124, + 4, + 35, + 74, + 115, + 64, + 17, + 134, + 173, + 219, + 250, + 202, + 96, + 17, + 131, + 193, + 104, + 223, + 20, + 211, + 171, + 141, + 17, + 100, + 249, + 172, + 71, + 26, + 231, + 41, + 178, + 54, + 248, + 6, + 18, + 190, + 43, + 122, + 10, + 84, + 214, + 160, + 151, + 49, + 124, + 40, + 208, + 136, + 38, + 13, + 241, + 153, + 64, + 8, + 230, + 84, + 31, + 224, + 233, + 41, + 208, + 2, + 51, + 154, + 141, + 23, + 197, + 8, + 91, + 37, + 156, + 243, + 93, + 122, + 255, + 31, + 222, + 218, + 43, + 8, + 226, + 154, + 252, + 158, + 247, + 63, + 129, + 231, + 138, + 144, + 163, + 13, + 24, + 56, + 151, + 125, + 75, + 140, + 235, + 105, + 161, + 208, + 86, + 54, + 10, + 8, + 163, + 121, + 171, + 221, + 131, + 64, + 145, + 79, + 160, + 110, + 159, + 208, + 47, + 143, + 87, + 174, + 25, + 143, + 223, + 57, + 16, + 51, + 114, + 242, + 196, + 25, + 208, + 196, + 254, + 242, + 171, + 202, + 58, + 1, + 154, + 168, + 9, + 104, + 250, + 212, + 222, + 126, + 221, + 207, + 143, + 143, + 223, + 34, + 2, + 63, + 128, + 220, + 223, + 182, + 222, + 66, + 152, + 128, + 101, + 115, + 31, + 50, + 69, + 19, + 132, + 144, + 41, + 28, + 166, + 165, + 77, + 145, + 53, + 147, + 37, + 78, + 49, + 26, + 134, + 97, + 236, + 24, + 101, + 23, + 232, + 179, + 0, + 85, + 121, + 135, + 119, + 225, + 152, + 142, + 149, + 94, + 108, + 233, + 221, + 223, + 6, + 155, + 167, + 73, + 95, + 189, + 130, + 131, + 97, + 12, + 11, + 203, + 221, + 244, + 203, + 144, + 94, + 237, + 219, + 80, + 202, + 49, + 197, + 136, + 97, + 207, + 69, + 214, + 136, + 189, + 178, + 87, + 103, + 155, + 102, + 84, + 8, + 127, + 250, + 174, + 29, + 51, + 137, + 38, + 224, + 30, + 28, + 142, + 159, + 138, + 103, + 169, + 3, + 104, + 18, + 135, + 143, + 57, + 239, + 202, + 229, + 20, + 182, + 72, + 17, + 144, + 115, + 132, + 171, + 72, + 236, + 218, + 10, + 99, + 105, + 8, + 220, + 84, + 161, + 160, + 13, + 40, + 75, + 159, + 85, + 164, + 23, + 71, + 71, + 233, + 125, + 72, + 95, + 235, + 149, + 97, + 188, + 53, + 10, + 148, + 48, + 160, + 222, + 62, + 140, + 93, + 123, + 188, + 44, + 32, + 146, + 176, + 96, + 46, + 220, + 160, + 98, + 67, + 124, + 48, + 101, + 46, + 22, + 73, + 155, + 124, + 192, + 49, + 58, + 185, + 66, + 211, + 7, + 28, + 225, + 163, + 192, + 145, + 92, + 85, + 13, + 1, + 231, + 161, + 96, + 107, + 53, + 18, + 157, + 120, + 108, + 216, + 178, + 103, + 200, + 78, + 205, + 202, + 249, + 81, + 250, + 151, + 120, + 0, + 143, + 221, + 201, + 103, + 98, + 1, + 54, + 140, + 249, + 76, + 89, + 3, + 145, + 119, + 100, + 233, + 2, + 44, + 206, + 209, + 12, + 62, + 22, + 174, + 216, + 116, + 181, + 147, + 192, + 28, + 138, + 127, + 6, + 225, + 242, + 92, + 239, + 129, + 100, + 178, + 135, + 126, + 133, + 54, + 114, + 137, + 79, + 146, + 81, + 205, + 138, + 83, + 119, + 242, + 177, + 187, + 52, + 22, + 187, + 194, + 12, + 107, + 205, + 16, + 54, + 205, + 223, + 231, + 95, + 147, + 219, + 246, + 162, + 229, + 38, + 115, + 193, + 222, + 99, + 55, + 178, + 142, + 22, + 57, + 201, + 54, + 228, + 160, + 253, + 75, + 172, + 55, + 162, + 42, + 1, + 103, + 43, + 55, + 234, + 30, + 84, + 22, + 12, + 210, + 253, + 148, + 114, + 59, + 188, + 181, + 15, + 135, + 144, + 239, + 70, + 0, + 117, + 13, + 152, + 178, + 27, + 201, + 62, + 186, + 4, + 22, + 97, + 200, + 101, + 200, + 70, + 6, + 89, + 109, + 80, + 188, + 38, + 175, + 33, + 183, + 82, + 63, + 184, + 51, + 116, + 61, + 45, + 123, + 159, + 48, + 24, + 190, + 174, + 3, + 159, + 253, + 80, + 192, + 110, + 208, + 208, + 7, + 219, + 95, + 156, + 243, + 219, + 192, + 137, + 211, + 102, + 253, + 86, + 201, + 9, + 112, + 194, + 93, + 12, + 157, + 70, + 34, + 68, + 58, + 89, + 79, + 167, + 187, + 173, + 24, + 140, + 207, + 15, + 92, + 70, + 210, + 215, + 252, + 249, + 252, + 96, + 18, + 238, + 195, + 97, + 182, + 117, + 107, + 177, + 106, + 103, + 191, + 8, + 100, + 203, + 8, + 135, + 179, + 221, + 68, + 130, + 77, + 48, + 120, + 108, + 233, + 171, + 9, + 246, + 4, + 28, + 180, + 41, + 68, + 7, + 50, + 77, + 71, + 97, + 209, + 214, + 154, + 101, + 26, + 160, + 130, + 155, + 27, + 105, + 31, + 36, + 48, + 145, + 119, + 76, + 69, + 171, + 190, + 165, + 199, + 0, + 10, + 194, + 194, + 53, + 157, + 1, + 217, + 166, + 238, + 82, + 88, + 182, + 227, + 193, + 84, + 145, + 149, + 228, + 130, + 49, + 103, + 173, + 52, + 210, + 86, + 148, + 97, + 51, + 107, + 56, + 231, + 121, + 67, + 142, + 148, + 130, + 18, + 165, + 9, + 58, + 174, + 13, + 123, + 175, + 112, + 9, + 84, + 53, + 101, + 174, + 29, + 216, + 177, + 20, + 242, + 47, + 217, + 91, + 148, + 34, + 42, + 111, + 143, + 167, + 78, + 191, + 151, + 99, + 130, + 173, + 144, + 32, + 83, + 149, + 148, + 13, + 216, + 98, + 33, + 159, + 35, + 69, + 139, + 211, + 39, + 152, + 204, + 23, + 11, + 84, + 165, + 210, + 56, + 156, + 148, + 129, + 81, + 250, + 54, + 24, + 210, + 5, + 108, + 115, + 28, + 221, + 157, + 159, + 178, + 230, + 226, + 20, + 83, + 202, + 24, + 12, + 15, + 53, + 216, + 61, + 106, + 245, + 236, + 135, + 99, + 212, + 133, + 0, + 77, + 26, + 187, + 53, + 30, + 211, + 215, + 64, + 56, + 155, + 72, + 177, + 184, + 62, + 197, + 199, + 27, + 122, + 156, + 100, + 168, + 159, + 202, + 83, + 146, + 63, + 47, + 222, + 232, + 57, + 192, + 24, + 27, + 135, + 64, + 60, + 5, + 246, + 224, + 240, + 85, + 120, + 20, + 72, + 226, + 124, + 190, + 114, + 139, + 87, + 229, + 52, + 32, + 154, + 225, + 172, + 162, + 78, + 3, + 210, + 109, + 186, + 158, + 233, + 29, + 31, + 154, + 253, + 236, + 170, + 114, + 20, + 160, + 134, + 109, + 144, + 115, + 80, + 181, + 145, + 25, + 39, + 164, + 254, + 105, + 11, + 143, + 152, + 51, + 140, + 74, + 95, + 81, + 225, + 9, + 106, + 216, + 72, + 217, + 16, + 25, + 48, + 149, + 227, + 226, + 32, + 251, + 38, + 150, + 176, + 14, + 209, + 9, + 200, + 212, + 73, + 130, + 114, + 42, + 254, + 144, + 152, + 4, + 117, + 174, + 245, + 59, + 22, + 167, + 62, + 217, + 248, + 143, + 217, + 9, + 4, + 58, + 185, + 81, + 181, + 170, + 99, + 194, + 228, + 120, + 169, + 243, + 199, + 133, + 233, + 157, + 217, + 166, + 57, + 18, + 140, + 241, + 94, + 178, + 86, + 227, + 24, + 57, + 249, + 120, + 206, + 112, + 238, + 91, + 229, + 24, + 41, + 8, + 91, + 200, + 178, + 201, + 192, + 185, + 244, + 154, + 18, + 232, + 232, + 129, + 89, + 225, + 186, + 140, + 247, + 109, + 57, + 58, + 39, + 172, + 73, + 97, + 191, + 247, + 62, + 236, + 136, + 209, + 234, + 50, + 130, + 86, + 132, + 130, + 17, + 150, + 161, + 56, + 185, + 249, + 139, + 51, + 171, + 42, + 174, + 127, + 83, + 14, + 125, + 113, + 188, + 124, + 246, + 89, + 219, + 150, + 12, + 198, + 154, + 58, + 222, + 58, + 241, + 8, + 218, + 114, + 50, + 183, + 235, + 104, + 79, + 144, + 45, + 233, + 50, + 11, + 58, + 31, + 206, + 23, + 157, + 127, + 10, + 171, + 96, + 174, + 155, + 202, + 176, + 77, + 121, + 15, + 198, + 27, + 67, + 44, + 249, + 92, + 241, + 149, + 254, + 80, + 195, + 74, + 28, + 216, + 18, + 214, + 198, + 130, + 112, + 17, + 40, + 170, + 226, + 161, + 70, + 224, + 156, + 72, + 113, + 206, + 179, + 74, + 219, + 159, + 26, + 30, + 64, + 27, + 148, + 151, + 52, + 202, + 232, + 156, + 200, + 51, + 199, + 150, + 80, + 233, + 146, + 47, + 137, + 154, + 69, + 142, + 108, + 216, + 136, + 157, + 31, + 182, + 27, + 78, + 99, + 60, + 67, + 197, + 82, + 186, + 233, + 229, + 251, + 126, + 77, + 243, + 181, + 220, + 137, + 107, + 117, + 114, + 161, + 214, + 173, + 198, + 8, + 111, + 212, + 69, + 15, + 152, + 247, + 41, + 182, + 139, + 19, + 15, + 119, + 5, + 50, + 89, + 179, + 215, + 21, + 72, + 103, + 104, + 134, + 243, + 140, + 217, + 17, + 124, + 236, + 214, + 49, + 43, + 180, + 244, + 158, + 146, + 16, + 240, + 232, + 188, + 13, + 50, + 129, + 215, + 142, + 87, + 249, + 241, + 0, + 172, + 8, + 207, + 121, + 65, + 166, + 220, + 200, + 212, + 166, + 53, + 192, + 18, + 167, + 163, + 107, + 242, + 147, + 123, + 212, + 162, + 85, + 94, + 127, + 227, + 40, + 225, + 162, + 94, + 142, + 146, + 153, + 119, + 66, + 79, + 26, + 222, + 123, + 113, + 94, + 141, + 247, + 226, + 42, + 9, + 108, + 149, + 177, + 13, + 3, + 178, + 29, + 122, + 188, + 165, + 150, + 75, + 41, + 2, + 81, + 19, + 147, + 185, + 74, + 2, + 119, + 168, + 130, + 173, + 114, + 151, + 28, + 129, + 192, + 240, + 195, + 247, + 128, + 215, + 221, + 235, + 171, + 206, + 189, + 152, + 218, + 101, + 84, + 215, + 101, + 123, + 69, + 104, + 107, + 123, + 155, + 63, + 66, + 78, + 87, + 21, + 218, + 18, + 152, + 74, + 225, + 17, + 211, + 77, + 252, + 209, + 111, + 242, + 206, + 158, + 47, + 131, + 154, + 171, + 228, + 37, + 103, + 234, + 143, + 198, + 65, + 165, + 56, + 85, + 31, + 41, + 134, + 39, + 47, + 1, + 8, + 153, + 34, + 235, + 225, + 135, + 188, + 221, + 238, + 53, + 38, + 144, + 57, + 97, + 47, + 94, + 141, + 83, + 244, + 133, + 48, + 68, + 195, + 15, + 73, + 126, + 242, + 217, + 182, + 159, + 233, + 157, + 147, + 109, + 41, + 213, + 59, + 85, + 241, + 39, + 134, + 73, + 182, + 26, + 161, + 154, + 177, + 96, + 141, + 17, + 110, + 116, + 15, + 133, + 205, + 3, + 165, + 183, + 104, + 247, + 164, + 96, + 18, + 151, + 254, + 85, + 187, + 39, + 175, + 240, + 103, + 8, + 140, + 94, + 193, + 153, + 82, + 223, + 187, + 123, + 252, + 41, + 3, + 41, + 139, + 184, + 84, + 219, + 82, + 88, + 3, + 214, + 198, + 198, + 146, + 33, + 80, + 178, + 49, + 39, + 206, + 38, + 215, + 94, + 156, + 107, + 243, + 201, + 83, + 33, + 77, + 175, + 108, + 220, + 17, + 239, + 109, + 123, + 31, + 234, + 205, + 8, + 23, + 200, + 36, + 219, + 39, + 216, + 146, + 118, + 201, + 205, + 50, + 49, + 94, + 126, + 247, + 159, + 180, + 214, + 7, + 152, + 100, + 81, + 113, + 60, + 92, + 112, + 220, + 72, + 45, + 16, + 113, + 189, + 241, + 8, + 217, + 209, + 223, + 85, + 222, + 145, + 75, + 105, + 82, + 22, + 205, + 19, + 87, + 217, + 99, + 29, + 215, + 240, + 130, + 220, + 184, + 83, + 26, + 38, + 94, + 145, + 91, + 136, + 240, + 101, + 151, + 85, + 0, + 58, + 181, + 76, + 93, + 146, + 61, + 173, + 81, + 118, + 69, + 230, + 92, + 214, + 25, + 178, + 67, + 242, + 11, + 78, + 77, + 128, + 37, + 91, + 68, + 57, + 181, + 39, + 61, + 214, + 107, + 182, + 69, + 180, + 1, + 38, + 214, + 216, + 0, + 57, + 23, + 104, + 211, + 8, + 133, + 39, + 255, + 132, + 27, + 26, + 145, + 194, + 84, + 105, + 44, + 197, + 200, + 133, + 13, + 177, + 7, + 80, + 141, + 168, + 70, + 174, + 107, + 216, + 157, + 207, + 144, + 120, + 129, + 173, + 248, + 25, + 62, + 35, + 163, + 125, + 253, + 129, + 255, + 165, + 134, + 11, + 13, + 152, + 110, + 147, + 216, + 168, + 117, + 22, + 255, + 168, + 215, + 60, + 30, + 46, + 41, + 24, + 106, + 251, + 218, + 205, + 146, + 122, + 14, + 47, + 77, + 218, + 64, + 161, + 5, + 204, + 20, + 18, + 138, + 207, + 129, + 149, + 20, + 56, + 168, + 193, + 72, + 180, + 97, + 115, + 43, + 140, + 196, + 2, + 99, + 196, + 110, + 72, + 207, + 224, + 144, + 211, + 127, + 74, + 20, + 36, + 105, + 68, + 138, + 39, + 47, + 219, + 141, + 16, + 98, + 155, + 142, + 75, + 67, + 166, + 92, + 141, + 243, + 96, + 200, + 113, + 108, + 255, + 148, + 170, + 110, + 50, + 188, + 168, + 89, + 207, + 41, + 136, + 192, + 59, + 228, + 243, + 22, + 43, + 73, + 84, + 144, + 201, + 225, + 240, + 227, + 211, + 247, + 153, + 193, + 152, + 233, + 210, + 221, + 73, + 1, + 184, + 90, + 217, + 204, + 27, + 198, + 148, + 70, + 170, + 177, + 251, + 28, + 33, + 79, + 91, + 223, + 207, + 212, + 198, + 49, + 158, + 53, + 87, + 35, + 215, + 66, + 28, + 218, + 231, + 141, + 235, + 89, + 51, + 240, + 110, + 147, + 126, + 177, + 5, + 40, + 157, + 252, + 66, + 217, + 8, + 132, + 28, + 211, + 134, + 83, + 187, + 156, + 214, + 228, + 1, + 69, + 4, + 181, + 21, + 110, + 54, + 85, + 100, + 198, + 171, + 163, + 29, + 251, + 48, + 38, + 78, + 116, + 25, + 113, + 52, + 223, + 162, + 82, + 154, + 107, + 70, + 65, + 109, + 37, + 144, + 235, + 28, + 110, + 15, + 215, + 232, + 94, + 169, + 83, + 124, + 224, + 254, + 180, + 165, + 125, + 151, + 125, + 223, + 147, + 224, + 135, + 99, + 205, + 221, + 2, + 164, + 213, + 104, + 121, + 17, + 240, + 166, + 94, + 37, + 63, + 89, + 128, + 131, + 111, + 230, + 237, + 45, + 252, + 40, + 66, + 192, + 165, + 183, + 32, + 168, + 171, + 252, + 168, + 102, + 170, + 128, + 32, + 168, + 108, + 103, + 80, + 30, + 17, + 167, + 124, + 254, + 171, + 42, + 243, + 8, + 220, + 154, + 223, + 58, + 101, + 237, + 156, + 246, + 146, + 119, + 234, + 167, + 182, + 53, + 69, + 30, + 179, + 228, + 24, + 85, + 89, + 18, + 104, + 203, + 70, + 44, + 75, + 59, + 230, + 99, + 156, + 115, + 176, + 242, + 210, + 179, + 38, + 174, + 222, + 6, + 186, + 48, + 14, + 108, + 168, + 66, + 85, + 238, + 111, + 201, + 22, + 142, + 216, + 30, + 68, + 251, + 215, + 46, + 184, + 89, + 185, + 231, + 115, + 229, + 229, + 44, + 204, + 70, + 74, + 213, + 132, + 33, + 123, + 133, + 240, + 87, + 14, + 172, + 164, + 221, + 250, + 37, + 221, + 254, + 37, + 136, + 52, + 7, + 0, + 143, + 253, + 137, + 138, + 24, + 205, + 32, + 87, + 234, + 117, + 2, + 32, + 99, + 186, + 80, + 47, + 6, + 177, + 138, + 209, + 102, + 8, + 142, + 145, + 116, + 70, + 155, + 185, + 149, + 210, + 122, + 203, + 216, + 234, + 96, + 10, + 115, + 60, + 157, + 73, + 67, + 50, + 179, + 111, + 94, + 145, + 252, + 53, + 9, + 152, + 227, + 208, + 193, + 42, + 14, + 52, + 65, + 6, + 135, + 52, + 214, + 99, + 122, + 192, + 121, + 229, + 254, + 34, + 159, + 91, + 198, + 233, + 204, + 150, + 198, + 56, + 39, + 166, + 225, + 204, + 150, + 56, + 206, + 233, + 199, + 211, + 251, + 118, + 170, + 30, + 43, + 122, + 245, + 108, + 32, + 211, + 70, + 241, + 39, + 79, + 118, + 82, + 102, + 120, + 196, + 139, + 164, + 224, + 251, + 171, + 125, + 155, + 93, + 150, + 66, + 41, + 199, + 250, + 198, + 2, + 246, + 34, + 24, + 167, + 228, + 189, + 3, + 124, + 49, + 137, + 55, + 84, + 203, + 166, + 207, + 63, + 189, + 99, + 179, + 122, + 135, + 36, + 49, + 237, + 80, + 241, + 112, + 19, + 24, + 82, + 245, + 88, + 30, + 158, + 64, + 216, + 88, + 78, + 178, + 231, + 101, + 133, + 250, + 236, + 7, + 246, + 199, + 221, + 146, + 122, + 32, + 56, + 208, + 189, + 35, + 239, + 219, + 119, + 243, + 24, + 22, + 153, + 32, + 173, + 188, + 48, + 247, + 135, + 86, + 165, + 48, + 249, + 227, + 219, + 56, + 31, + 223, + 247, + 227, + 69, + 140, + 129, + 54, + 12, + 157, + 141, + 217, + 114, + 202, + 12, + 72, + 22, + 102, + 203, + 189, + 10, + 110, + 82, + 6, + 29, + 212, + 104, + 93, + 170, + 186, + 64, + 87, + 108, + 146, + 153, + 161, + 77, + 41, + 80, + 43, + 103, + 66, + 180, + 34, + 237, + 196, + 109, + 248, + 27, + 139, + 151, + 223, + 55, + 106, + 18, + 97, + 12, + 75, + 97, + 202, + 146, + 121, + 130, + 49, + 172, + 46, + 140, + 225, + 137, + 62, + 237, + 164, + 241, + 61, + 111, + 29, + 245, + 188, + 31, + 47, + 149, + 122, + 19, + 97, + 172, + 221, + 233, + 166, + 50, + 213, + 79, + 109, + 214, + 82, + 147, + 15, + 255, + 45, + 99, + 48, + 155, + 187, + 49, + 225, + 218, + 22, + 108, + 181, + 29, + 167, + 67, + 22, + 50, + 159, + 87, + 49, + 28, + 232, + 155, + 91, + 129, + 33, + 43, + 16, + 146, + 52, + 6, + 212, + 34, + 123, + 197, + 44, + 225, + 231, + 248, + 177, + 57, + 186, + 191, + 119, + 233, + 130, + 174, + 21, + 64, + 56, + 9, + 198, + 70, + 107, + 252, + 28, + 226, + 156, + 128, + 147, + 227, + 216, + 136, + 162, + 63, + 208, + 26, + 64, + 46, + 208, + 106, + 212, + 103, + 137, + 11, + 124, + 98, + 146, + 194, + 121, + 216, + 192, + 51, + 41, + 226, + 49, + 222, + 48, + 96, + 207, + 221, + 168, + 71, + 187, + 33, + 24, + 130, + 161, + 30, + 45, + 85, + 91, + 189, + 204, + 103, + 207, + 229, + 242, + 180, + 27, + 157, + 210, + 110, + 89, + 93, + 35, + 28, + 94, + 62, + 14, + 160, + 231, + 74, + 178, + 199, + 3, + 231, + 160, + 10, + 9, + 166, + 115, + 172, + 73, + 211, + 96, + 217, + 12, + 237, + 240, + 10, + 97, + 206, + 79, + 52, + 75, + 95, + 117, + 41, + 53, + 56, + 154, + 111, + 22, + 248, + 163, + 81, + 125, + 192, + 99, + 193, + 88, + 20, + 190, + 186, + 153, + 133, + 236, + 177, + 153, + 69, + 218, + 146, + 85, + 197, + 79, + 94, + 77, + 115, + 103, + 34, + 168, + 32, + 76, + 137, + 173, + 216, + 127, + 172, + 221, + 132, + 99, + 124, + 134, + 96, + 224, + 110, + 52, + 180, + 226, + 57, + 253, + 99, + 20, + 170, + 212, + 190, + 51, + 67, + 39, + 131, + 59, + 106, + 67, + 44, + 84, + 88, + 107, + 52, + 10, + 114, + 112, + 131, + 73, + 156, + 170, + 148, + 53, + 160, + 169, + 106, + 35, + 27, + 102, + 167, + 183, + 249, + 227, + 77, + 155, + 64, + 188, + 213, + 19, + 83, + 26, + 178, + 223, + 215, + 14, + 95, + 239, + 119, + 100, + 191, + 43, + 134, + 137, + 158, + 151, + 130, + 102, + 31, + 183, + 205, + 68, + 89, + 120, + 205, + 165, + 250, + 126, + 25, + 22, + 91, + 253, + 161, + 62, + 47, + 105, + 84, + 169, + 40, + 14, + 159, + 151, + 132, + 194, + 214, + 75, + 41, + 37, + 87, + 112, + 187, + 43, + 73, + 134, + 95, + 71, + 197, + 183, + 73, + 123, + 116, + 1, + 169, + 53, + 126, + 133, + 116, + 34, + 48, + 143, + 112, + 153, + 190, + 204, + 113, + 218, + 249, + 223, + 202, + 251, + 155, + 98, + 30, + 231, + 38, + 27, + 25, + 148, + 124, + 78, + 60, + 127, + 66, + 204, + 255, + 229, + 244, + 205, + 1, + 197, + 249, + 91, + 20, + 215, + 69, + 84, + 197, + 197, + 216, + 75, + 6, + 29, + 197, + 173, + 91, + 151, + 153, + 243, + 241, + 76, + 185, + 168, + 150, + 71, + 64, + 35, + 107, + 116, + 195, + 35, + 5, + 82, + 177, + 248, + 91, + 126, + 142, + 12, + 20, + 141, + 230, + 201, + 153, + 133, + 220, + 137, + 245, + 206, + 27, + 179, + 48, + 236, + 109, + 31, + 180, + 193, + 114, + 37, + 207, + 45, + 187, + 218, + 220, + 205, + 162, + 247, + 177, + 239, + 9, + 107, + 121, + 30, + 107, + 35, + 87, + 196, + 69, + 46, + 51, + 78, + 126, + 56, + 151, + 56, + 230, + 14, + 228, + 63, + 189, + 102, + 38, + 238, + 238, + 58, + 66, + 91, + 67, + 83, + 208, + 42, + 238, + 179, + 64, + 7, + 106, + 168, + 115, + 121, + 48, + 138, + 124, + 96, + 151, + 52, + 59, + 222, + 220, + 106, + 162, + 41, + 141, + 69, + 168, + 227, + 62, + 70, + 198, + 161, + 213, + 225, + 19, + 83, + 197, + 19, + 250, + 80, + 221, + 195, + 105, + 44, + 244, + 18, + 245, + 157, + 95, + 93, + 66, + 119, + 47, + 149, + 70, + 167, + 112, + 66, + 131, + 189, + 230, + 243, + 250, + 253, + 27, + 242, + 26, + 137, + 55, + 176, + 142, + 48, + 166, + 187, + 106, + 121, + 227, + 175, + 142, + 111, + 132, + 29, + 114, + 210, + 188, + 143, + 201, + 146, + 148, + 159, + 72, + 135, + 110, + 127, + 65, + 220, + 98, + 237, + 157, + 224, + 149, + 137, + 195, + 157, + 163, + 55, + 49, + 157, + 248, + 230, + 205, + 247, + 246, + 254, + 240, + 16, + 222, + 250, + 246, + 60, + 241, + 128, + 229, + 108, + 167, + 42, + 252, + 34, + 34, + 50, + 125, + 88, + 21, + 10, + 167, + 170, + 136, + 200, + 128, + 143, + 75, + 224, + 120, + 251, + 57, + 230, + 186, + 184, + 194, + 125, + 99, + 163, + 223, + 159, + 123, + 186, + 174, + 152, + 122, + 245, + 198, + 156, + 44, + 237, + 81, + 91, + 163, + 34, + 217, + 147, + 27, + 208, + 43, + 224, + 182, + 142, + 252, + 150, + 43, + 29, + 7, + 123, + 60, + 3, + 44, + 142, + 161, + 17, + 2, + 25, + 218, + 88, + 2, + 10, + 78, + 144, + 21, + 59, + 75, + 221, + 131, + 39, + 151, + 236, + 213, + 139, + 24, + 9, + 79, + 48, + 197, + 198, + 113, + 191, + 27, + 34, + 111, + 226, + 144, + 201, + 241, + 178, + 61, + 167, + 64, + 222, + 33, + 28, + 163, + 81, + 56, + 100, + 12, + 100, + 184, + 95, + 225, + 105, + 189, + 25, + 108, + 118, + 210, + 80, + 100, + 47, + 216, + 252, + 125, + 105, + 40, + 104, + 192, + 216, + 74, + 67, + 113, + 119, + 39, + 11, + 15, + 152, + 110, + 114, + 111, + 71, + 46, + 126, + 218, + 71, + 101, + 208, + 59, + 214, + 171, + 244, + 6, + 135, + 41, + 48, + 173, + 206, + 46, + 117, + 109, + 224, + 189, + 191, + 235, + 82, + 216, + 142, + 169, + 198, + 41, + 187, + 109, + 102, + 58, + 151, + 150, + 192, + 67, + 121, + 121, + 129, + 5, + 218, + 192, + 146, + 103, + 245, + 240, + 36, + 241, + 209, + 200, + 145, + 5, + 14, + 243, + 109, + 42, + 57, + 240, + 4, + 107, + 218, + 223, + 154, + 193, + 211, + 221, + 105, + 12, + 224, + 37, + 49, + 185, + 185, + 218, + 105, + 128, + 200, + 76, + 140, + 0, + 211, + 78, + 227, + 24, + 216, + 108, + 150, + 82, + 76, + 4, + 164, + 196, + 60, + 179, + 206, + 37, + 218, + 18, + 43, + 68, + 95, + 244, + 112, + 77, + 65, + 167, + 173, + 198, + 161, + 160, + 109, + 152, + 50, + 86, + 44, + 68, + 78, + 245, + 89, + 231, + 145, + 241, + 87, + 232, + 170, + 15, + 188, + 182, + 183, + 61, + 27, + 191, + 61, + 35, + 73, + 124, + 147, + 49, + 108, + 100, + 115, + 185, + 189, + 51, + 226, + 136, + 213, + 61, + 52, + 207, + 51, + 179, + 142, + 133, + 43, + 5, + 131, + 35, + 108, + 229, + 67, + 145, + 219, + 1, + 110, + 107, + 76, + 21, + 34, + 183, + 3, + 92, + 35, + 108, + 116, + 89, + 143, + 105, + 94, + 249, + 76, + 228, + 201, + 182, + 117, + 140, + 223, + 15, + 112, + 216, + 179, + 209, + 63, + 87, + 125, + 193, + 198, + 41, + 46, + 249, + 85, + 21, + 125, + 137, + 125, + 56, + 199, + 214, + 120, + 242, + 203, + 9, + 69, + 26, + 242, + 167, + 46, + 97, + 155, + 39, + 133, + 232, + 177, + 254, + 8, + 129, + 196, + 95, + 138, + 54, + 56, + 2, + 21, + 24, + 99, + 251, + 175, + 140, + 93, + 146, + 131, + 17, + 41, + 16, + 119, + 101, + 203, + 189, + 159, + 176, + 247, + 186, + 228, + 78, + 2, + 245, + 212, + 235, + 86, + 250, + 202, + 188, + 101, + 119, + 124, + 203, + 176, + 231, + 180, + 89, + 201, + 116, + 97, + 5, + 103, + 227, + 154, + 188, + 132, + 200, + 51, + 152, + 195, + 252, + 171, + 186, + 17, + 239, + 216, + 75, + 249, + 108, + 198, + 254, + 99, + 87, + 34, + 91, + 17, + 156, + 185, + 141, + 86, + 168, + 147, + 191, + 226, + 131, + 21, + 9, + 53, + 239, + 60, + 51, + 254, + 202, + 79, + 69, + 58, + 74, + 176, + 78, + 146, + 166, + 169, + 216, + 237, + 142, + 13, + 104, + 60, + 26, + 49, + 2, + 244, + 37, + 172, + 103, + 172, + 200, + 251, + 219, + 115, + 15, + 105, + 101, + 224, + 65, + 77, + 107, + 36, + 110, + 228, + 206, + 125, + 75, + 65, + 197, + 125, + 220, + 53, + 182, + 232, + 60, + 213, + 79, + 21, + 27, + 251, + 185, + 65, + 166, + 133, + 230, + 78, + 85, + 180, + 130, + 65, + 101, + 132, + 33, + 227, + 69, + 195, + 184, + 99, + 176, + 98, + 1, + 38, + 38, + 124, + 125, + 96, + 197, + 58, + 142, + 231, + 169, + 38, + 147, + 118, + 241, + 39, + 68, + 192, + 51, + 24, + 221, + 43, + 235, + 12, + 199, + 152, + 228, + 105, + 131, + 203, + 78, + 112, + 12, + 28, + 77, + 64, + 70, + 149, + 135, + 113, + 142, + 58, + 44, + 70, + 233, + 228, + 204, + 24, + 216, + 96, + 9, + 213, + 69, + 5, + 247, + 210, + 170, + 193, + 10, + 25, + 205, + 70, + 251, + 16, + 49, + 96, + 149, + 25, + 207, + 129, + 159, + 160, + 15, + 93, + 138, + 186, + 121, + 139, + 93, + 210, + 70, + 157, + 239, + 250, + 152, + 186, + 20, + 54, + 4, + 57, + 107, + 165, + 247, + 89, + 237, + 143, + 209, + 73, + 141, + 186, + 137, + 109, + 48, + 84, + 103, + 152, + 48, + 95, + 177, + 220, + 125, + 146, + 197, + 252, + 145, + 51, + 188, + 140, + 58, + 212, + 89, + 202, + 179, + 19, + 11, + 113, + 62, + 4, + 233, + 12, + 177, + 144, + 60, + 243, + 34, + 217, + 122, + 206, + 133, + 67, + 233, + 155, + 81, + 171, + 186, + 208, + 16, + 112, + 142, + 198, + 142, + 24, + 77, + 129, + 152, + 206, + 98, + 72, + 75, + 95, + 33, + 26, + 62, + 216, + 167, + 70, + 167, + 115, + 114, + 78, + 167, + 73, + 88, + 131, + 190, + 177, + 154, + 207, + 195, + 38, + 155, + 13, + 90, + 120, + 195, + 167, + 180, + 201, + 70, + 142, + 142, + 153, + 247, + 126, + 39, + 139, + 252, + 190, + 231, + 192, + 125, + 37, + 92, + 252, + 180, + 153, + 205, + 90, + 142, + 226, + 125, + 219, + 14, + 181, + 59, + 103, + 165, + 237, + 190, + 109, + 135, + 218, + 189, + 123, + 106, + 201, + 122, + 182, + 182, + 94, + 173, + 91, + 183, + 36, + 12, + 19, + 71, + 39, + 73, + 103, + 193, + 180, + 51, + 169, + 65, + 21, + 70, + 251, + 231, + 113, + 16, + 114, + 65, + 16, + 251, + 196, + 176, + 85, + 17, + 196, + 161, + 56, + 33, + 53, + 200, + 209, + 11, + 212, + 149, + 52, + 217, + 232, + 253, + 189, + 178, + 7, + 101, + 15, + 109, + 181, + 129, + 157, + 3, + 144, + 226, + 152, + 249, + 43, + 212, + 149, + 6, + 195, + 113, + 49, + 4, + 30, + 173, + 44, + 15, + 83, + 224, + 213, + 197, + 242, + 232, + 69, + 59, + 198, + 190, + 225, + 84, + 173, + 192, + 142, + 37, + 110, + 11, + 47, + 2, + 6, + 156, + 171, + 77, + 157, + 21, + 182, + 186, + 129, + 232, + 142, + 237, + 25, + 127, + 175, + 65, + 222, + 203, + 187, + 121, + 250, + 6, + 214, + 42, + 67, + 215, + 147, + 15, + 126, + 33, + 27, + 243, + 199, + 207, + 213, + 201, + 205, + 17, + 231, + 157, + 99, + 130, + 229, + 100, + 191, + 219, + 38, + 242, + 197, + 41, + 87, + 55, + 102, + 247, + 143, + 101, + 231, + 142, + 126, + 113, + 188, + 103, + 105, + 168, + 5, + 181, + 211, + 192, + 237, + 38, + 216, + 233, + 137, + 71, + 208, + 205, + 118, + 85, + 239, + 210, + 51, + 232, + 6, + 191, + 57, + 7, + 37, + 237, + 147, + 82, + 92, + 228, + 148, + 234, + 83, + 244, + 189, + 219, + 128, + 99, + 107, + 227, + 14, + 225, + 110, + 242, + 134, + 26, + 246, + 224, + 205, + 41, + 240, + 234, + 67, + 77, + 153, + 220, + 184, + 189, + 109, + 144, + 53, + 103, + 200, + 93, + 127, + 21, + 216, + 99, + 195, + 141, + 210, + 27, + 109, + 206, + 236, + 35, + 210, + 23, + 35, + 88, + 231, + 9, + 69, + 173, + 134, + 200, + 56, + 22, + 40, + 91, + 236, + 182, + 82, + 236, + 236, + 17, + 189, + 232, + 95, + 161, + 90, + 54, + 135, + 158, + 127, + 191, + 26, + 46, + 241, + 96, + 57, + 161, + 206, + 91, + 164, + 8, + 202, + 19, + 195, + 91, + 116, + 105, + 38, + 119, + 237, + 5, + 120, + 22, + 107, + 253, + 253, + 216, + 71, + 123, + 195, + 246, + 238, + 191, + 21, + 147, + 25, + 100, + 33, + 207, + 235, + 117, + 120, + 219, + 49, + 126, + 130, + 30, + 25, + 217, + 24, + 177, + 67, + 162, + 96, + 147, + 195, + 154, + 183, + 104, + 135, + 44, + 30, + 3, + 164, + 141, + 155, + 60, + 169, + 199, + 0, + 173, + 80, + 1, + 247, + 240, + 217, + 149, + 251, + 128, + 92, + 60, + 238, + 47, + 127, + 44, + 171, + 167, + 8, + 27, + 69, + 241, + 30, + 37, + 78, + 155, + 195, + 196, + 152, + 215, + 180, + 33, + 206, + 199, + 217, + 36, + 141, + 158, + 15, + 236, + 57, + 175, + 123, + 82, + 200, + 103, + 58, + 117, + 232, + 204, + 137, + 36, + 167, + 166, + 187, + 117, + 239, + 97, + 28, + 186, + 26, + 3, + 175, + 39, + 3, + 174, + 21, + 230, + 134, + 164, + 244, + 164, + 154, + 150, + 236, + 70, + 44, + 27, + 141, + 86, + 95, + 188, + 188, + 6, + 163, + 80, + 134, + 251, + 42, + 216, + 99, + 120, + 9, + 214, + 201, + 4, + 114, + 192, + 158, + 86, + 200, + 70, + 188, + 102, + 59, + 122, + 64, + 60, + 59, + 102, + 41, + 121, + 5, + 166, + 141, + 213, + 133, + 48, + 194, + 28, + 51, + 140, + 169, + 203, + 122, + 254, + 43, + 241, + 218, + 143, + 175, + 218, + 107, + 242, + 181, + 101, + 122, + 241, + 229, + 85, + 80, + 219, + 221, + 89, + 94, + 123, + 253, + 203, + 196, + 179, + 43, + 186, + 3, + 99, + 140, + 213, + 86, + 97, + 51, + 55, + 96, + 212, + 208, + 239, + 232, + 18, + 57, + 238, + 138, + 28, + 184, + 155, + 40, + 181, + 61, + 181, + 164, + 145, + 109, + 236, + 142, + 200, + 83, + 56, + 28, + 223, + 166, + 6, + 198, + 87, + 190, + 111, + 227, + 206, + 225, + 170, + 170, + 247, + 90, + 64, + 139, + 27, + 83, + 40, + 79, + 108, + 123, + 46, + 141, + 226, + 46, + 17, + 203, + 243, + 230, + 164, + 232, + 39, + 7, + 52, + 228, + 54, + 162, + 62, + 241, + 231, + 17, + 247, + 174, + 185, + 61, + 149, + 19, + 192, + 138, + 186, + 0, + 171, + 43, + 245, + 223, + 37, + 254, + 126, + 209, + 94, + 17, + 97, + 245, + 142, + 132, + 89, + 193, + 148, + 99, + 26, + 115, + 193, + 150, + 54, + 133, + 99, + 139, + 162, + 41, + 3, + 97, + 181, + 78, + 34, + 15, + 129, + 142, + 229, + 28, + 148, + 39, + 154, + 223, + 32, + 120, + 252, + 244, + 159, + 218, + 96, + 172, + 187, + 145, + 200, + 96, + 12, + 123, + 44, + 139, + 73, + 24, + 197, + 165, + 89, + 3, + 160, + 136, + 218, + 1, + 40, + 220, + 103, + 16, + 104, + 74, + 220, + 168, + 85, + 230, + 200, + 2, + 130, + 171, + 179, + 140, + 69, + 54, + 16, + 219, + 26, + 146, + 103, + 95, + 229, + 245, + 133, + 186, + 97, + 46, + 226, + 78, + 43, + 235, + 201, + 176, + 68, + 98, + 179, + 175, + 43, + 14, + 130, + 151, + 114, + 147, + 74, + 8, + 13, + 110, + 129, + 53, + 226, + 110, + 168, + 120, + 177, + 219, + 220, + 53, + 203, + 206, + 2, + 227, + 142, + 125, + 142, + 138, + 178, + 45, + 183, + 82, + 94, + 187, + 209, + 104, + 246, + 102, + 165, + 172, + 24, + 34, + 5, + 121, + 32, + 194, + 185, + 211, + 215, + 165, + 242, + 131, + 98, + 159, + 210, + 199, + 194, + 189, + 230, + 234, + 180, + 38, + 160, + 133, + 82, + 147, + 42, + 153, + 119, + 0, + 105, + 108, + 19, + 114, + 81, + 151, + 16, + 184, + 172, + 158, + 126, + 204, + 199, + 4, + 166, + 209, + 137, + 140, + 224, + 0, + 222, + 20, + 39, + 170, + 174, + 195, + 222, + 52, + 117, + 75, + 121, + 205, + 96, + 155, + 69, + 96, + 47, + 106, + 212, + 103, + 120, + 198, + 248, + 144, + 216, + 27, + 236, + 69, + 80, + 225, + 242, + 218, + 57, + 78, + 127, + 170, + 226, + 73, + 19, + 150, + 204, + 48, + 135, + 43, + 205, + 11, + 78, + 221, + 133, + 159, + 104, + 206, + 190, + 118, + 35, + 239, + 69, + 135, + 5, + 93, + 145, + 211, + 169, + 79, + 23, + 116, + 73, + 206, + 14, + 191, + 125, + 175, + 130, + 219, + 248, + 134, + 248, + 117, + 26, + 52, + 137, + 75, + 114, + 36, + 28, + 239, + 164, + 192, + 81, + 250, + 164, + 174, + 229, + 41, + 220, + 29, + 170, + 168, + 86, + 49, + 87, + 26, + 172, + 214, + 32, + 113, + 114, + 36, + 41, + 28, + 239, + 92, + 163, + 199, + 166, + 227, + 191, + 119, + 97, + 47, + 173, + 236, + 88, + 229, + 13, + 115, + 90, + 103, + 232, + 182, + 120, + 57, + 24, + 246, + 104, + 69, + 46, + 139, + 44, + 240, + 43, + 237, + 132, + 135, + 16, + 204, + 98, + 255, + 252, + 139, + 89, + 10, + 87, + 130, + 172, + 106, + 96, + 152, + 17, + 152, + 112, + 163, + 175, + 149, + 154, + 39, + 84, + 74, + 232, + 107, + 213, + 236, + 183, + 230, + 190, + 63, + 200, + 157, + 13, + 122, + 36, + 165, + 123, + 82, + 102, + 31, + 183, + 47, + 192, + 131, + 8, + 125, + 125, + 29, + 233, + 220, + 68, + 7, + 208, + 96, + 60, + 242, + 134, + 70, + 238, + 194, + 158, + 114, + 165, + 66, + 42, + 28, + 124, + 98, + 3, + 115, + 90, + 227, + 78, + 24, + 147, + 181, + 17, + 208, + 224, + 1, + 200, + 238, + 27, + 253, + 77, + 177, + 182, + 226, + 70, + 185, + 192, + 120, + 173, + 70, + 220, + 118, + 34, + 236, + 177, + 227, + 20, + 162, + 102, + 58, + 224, + 26, + 96, + 147, + 184, + 209, + 199, + 120, + 9, + 108, + 22, + 14, + 109, + 140, + 207, + 211, + 224, + 114, + 30, + 85, + 77, + 26, + 103, + 160, + 83, + 22, + 114, + 111, + 10, + 58, + 207, + 155, + 24, + 246, + 27, + 46, + 205, + 162, + 188, + 139, + 7, + 48, + 239, + 209, + 168, + 212, + 248, + 8, + 127, + 141, + 216, + 11, + 49, + 205, + 105, + 75, + 219, + 251, + 245, + 157, + 167, + 11, + 56, + 13, + 246, + 118, + 18, + 108, + 219, + 13, + 90, + 12, + 99, + 198, + 198, + 3, + 105, + 164, + 86, + 173, + 178, + 189, + 105, + 237, + 172, + 51, + 209, + 28, + 205, + 237, + 158, + 195, + 46, + 254, + 159, + 207, + 198, + 158, + 104, + 195, + 70, + 47, + 212, + 250, + 64, + 47, + 246, + 213, + 18, + 66, + 164, + 5, + 74, + 122, + 209, + 129, + 73, + 128, + 167, + 54, + 110, + 97, + 164, + 62, + 61, + 137, + 231, + 194, + 23, + 196, + 87, + 121, + 83, + 103, + 3, + 159, + 163, + 61, + 221, + 169, + 235, + 67, + 97, + 26, + 55, + 210, + 124, + 121, + 108, + 88, + 170, + 161, + 35, + 80, + 127, + 211, + 123, + 140, + 44, + 205, + 219, + 52, + 162, + 49, + 65, + 76, + 199, + 109, + 24, + 113, + 214, + 1, + 29, + 134, + 198, + 21, + 29, + 167, + 215, + 4, + 213, + 78, + 61, + 28, + 59, + 41, + 60, + 150, + 29, + 94, + 66, + 39, + 58, + 124, + 129, + 134, + 122, + 240, + 116, + 35, + 211, + 75, + 220, + 74, + 135, + 44, + 60, + 98, + 173, + 74, + 20, + 63, + 206, + 24, + 214, + 9, + 143, + 57, + 217, + 129, + 66, + 4, + 58, + 7, + 3, + 179, + 85, + 182, + 223, + 228, + 19, + 22, + 96, + 51, + 154, + 157, + 65, + 14, + 14, + 155, + 49, + 135, + 159, + 233, + 75, + 220, + 146, + 75, + 184, + 103, + 54, + 15, + 73, + 192, + 162, + 226, + 98, + 117, + 39, + 236, + 105, + 141, + 126, + 1, + 98, + 11, + 88, + 70, + 56, + 103, + 231, + 220, + 226, + 190, + 168, + 125, + 154, + 96, + 107, + 133, + 173, + 73, + 61, + 35, + 109, + 203, + 14, + 191, + 157, + 233, + 132, + 243, + 28, + 71, + 74, + 63, + 170, + 25, + 101, + 169, + 200, + 64, + 154, + 8, + 34, + 157, + 125, + 187, + 78, + 5, + 197, + 21, + 146, + 32, + 223, + 40, + 21, + 106, + 140, + 57, + 83, + 176, + 21, + 187, + 19, + 126, + 191, + 216, + 179, + 226, + 188, + 86, + 64, + 148, + 217, + 161, + 251, + 35, + 210, + 147, + 91, + 223, + 111, + 217, + 116, + 4, + 60, + 73, + 23, + 240, + 116, + 92, + 1, + 167, + 46, + 204, + 207, + 198, + 223, + 169, + 117, + 204, + 241, + 238, + 3, + 195, + 56, + 30, + 98, + 85, + 157, + 233, + 1, + 221, + 42, + 39, + 218, + 235, + 237, + 20, + 228, + 184, + 18, + 143, + 216, + 224, + 110, + 107, + 12, + 136, + 210, + 233, + 231, + 96, + 11, + 208, + 102, + 92, + 48, + 176, + 165, + 132, + 156, + 99, + 139, + 237, + 231, + 225, + 78, + 95, + 182, + 146, + 199, + 134, + 206, + 141, + 134, + 224, + 197, + 46, + 127, + 33, + 224, + 232, + 252, + 230, + 226, + 82, + 64, + 27, + 33, + 154, + 90, + 224, + 242, + 245, + 191, + 197, + 95, + 123, + 74, + 214, + 92, + 155, + 105, + 195, + 154, + 187, + 241, + 237, + 118, + 0, + 192, + 4, + 67, + 115, + 55, + 178, + 100, + 192, + 151, + 46, + 57, + 190, + 96, + 252, + 242, + 80, + 203, + 101, + 219, + 65, + 154, + 79, + 156, + 134, + 124, + 39, + 229, + 101, + 90, + 122, + 23, + 179, + 206, + 183, + 91, + 63, + 196, + 170, + 181, + 106, + 51, + 238, + 222, + 15, + 49, + 83, + 46, + 53, + 30, + 185, + 18, + 50, + 123, + 233, + 238, + 28, + 254, + 3, + 217, + 159, + 87, + 211, + 35, + 22, + 204, + 137, + 173, + 241, + 82, + 8, + 139, + 25, + 181, + 72, + 134, + 191, + 20, + 153, + 94, + 176, + 55, + 202, + 142, + 148, + 241, + 133, + 90, + 111, + 179, + 119, + 166, + 200, + 177, + 198, + 171, + 234, + 87, + 140, + 64, + 110, + 88, + 252, + 164, + 255, + 187, + 212, + 207, + 165, + 127, + 158, + 54, + 134, + 201, + 150, + 122, + 5, + 143, + 123, + 120, + 240, + 137, + 68, + 164, + 120, + 151, + 93, + 60, + 191, + 168, + 113, + 107, + 118, + 154, + 135, + 197, + 110, + 200, + 47, + 80, + 46, + 254, + 156, + 72, + 65, + 158, + 220, + 205, + 99, + 78, + 6, + 122, + 180, + 85, + 167, + 49, + 131, + 91, + 36, + 90, + 204, + 117, + 187, + 226, + 59, + 147, + 45, + 205, + 7, + 243, + 228, + 43, + 150, + 27, + 247, + 199, + 201, + 166, + 102, + 179, + 179, + 56, + 80, + 183, + 201, + 20, + 254, + 6, + 246, + 53, + 159, + 155, + 181, + 124, + 88, + 155, + 229, + 203, + 231, + 137, + 7, + 189, + 230, + 7, + 236, + 49, + 14, + 120, + 139, + 167, + 76, + 27, + 204, + 67, + 121, + 200, + 112, + 219, + 71, + 253, + 234, + 120, + 53, + 196, + 145, + 55, + 12, + 55, + 202, + 195, + 179, + 6, + 88, + 135, + 1, + 219, + 90, + 71, + 253, + 175, + 126, + 183, + 164, + 164, + 243, + 217, + 89, + 191, + 107, + 198, + 55, + 247, + 132, + 240, + 64, + 35, + 84, + 9, + 29, + 28, + 234, + 129, + 70, + 182, + 56, + 180, + 117, + 253, + 158, + 30, + 172, + 69, + 207, + 140, + 177, + 96, + 16, + 169, + 245, + 42, + 101, + 134, + 71, + 62, + 237, + 239, + 231, + 131, + 237, + 230, + 187, + 70, + 115, + 52, + 122, + 129, + 184, + 249, + 174, + 237, + 181, + 195, + 225, + 148, + 116, + 91, + 133, + 29, + 55, + 213, + 2, + 136, + 183, + 29, + 171, + 173, + 77, + 55, + 64, + 147, + 240, + 33, + 190, + 196, + 142, + 182, + 134, + 87, + 144, + 143, + 118, + 182, + 52, + 246, + 41, + 68, + 8, + 60, + 103, + 56, + 242, + 126, + 153, + 171, + 251, + 45, + 115, + 164, + 51, + 246, + 104, + 0, + 206, + 29, + 18, + 79, + 46, + 125, + 72, + 46, + 229, + 200, + 102, + 45, + 241, + 37, + 249, + 127, + 212, + 148, + 21, + 0, + 128, + 49, + 247, + 232, + 5, + 0, + 50, + 172, + 50, + 159, + 172, + 164, + 92, + 234, + 43, + 181, + 236, + 165, + 27, + 87, + 44, + 195, + 196, + 155, + 77, + 236, + 116, + 112, + 81, + 111, + 54, + 57, + 156, + 105, + 127, + 207, + 84, + 152, + 226, + 253, + 217, + 12, + 58, + 177, + 81, + 198, + 188, + 23, + 76, + 230, + 208, + 160, + 139, + 86, + 186, + 124, + 174, + 76, + 93, + 47, + 221, + 134, + 211, + 158, + 167, + 40, + 121, + 112, + 7, + 191, + 101, + 157, + 238, + 131, + 186, + 65, + 117, + 132, + 163, + 83, + 254, + 244, + 218, + 221, + 66, + 74, + 233, + 94, + 168, + 240, + 18, + 127, + 89, + 143, + 76, + 94, + 106, + 141, + 139, + 196, + 35, + 147, + 141, + 7, + 202, + 119, + 140, + 211, + 193, + 13, + 62, + 18, + 237, + 27, + 75, + 49, + 12, + 147, + 253, + 29, + 61, + 115, + 101, + 194, + 194, + 78, + 191, + 49, + 213, + 1, + 203, + 22, + 117, + 120, + 230, + 94, + 178, + 244, + 190, + 2, + 135, + 213, + 94, + 88, + 117, + 57, + 242, + 142, + 89, + 87, + 93, + 96, + 68, + 145, + 250, + 243, + 91, + 17, + 210, + 3, + 20, + 24, + 160, + 240, + 86, + 127, + 183, + 190, + 56, + 94, + 37, + 47, + 164, + 232, + 94, + 15, + 52, + 150, + 247, + 134, + 103, + 216, + 130, + 123, + 254, + 218, + 144, + 51, + 112, + 97, + 126, + 191, + 24, + 230, + 243, + 152, + 168, + 43, + 232, + 230, + 73, + 224, + 212, + 49, + 63, + 7, + 20, + 103, + 99, + 31, + 172, + 2, + 106, + 190, + 33, + 71, + 55, + 52, + 29, + 78, + 150, + 76, + 60, + 60, + 140, + 15, + 177, + 145, + 124, + 226, + 202, + 12, + 99, + 11, + 21, + 187, + 5, + 219, + 227, + 95, + 171, + 177, + 205, + 178, + 168, + 145, + 48, + 229, + 177, + 205, + 184, + 41, + 164, + 231, + 190, + 42, + 140, + 26, + 135, + 155, + 28, + 178, + 112, + 35, + 50, + 129, + 2, + 99, + 170, + 132, + 37, + 67, + 154, + 119, + 156, + 179, + 23, + 210, + 230, + 53, + 61, + 212, + 113, + 14, + 88, + 81, + 81, + 50, + 9, + 80, + 220, + 92, + 166, + 209, + 37, + 100, + 186, + 51, + 231, + 8, + 57, + 204, + 175, + 114, + 171, + 177, + 13, + 166, + 216, + 185, + 34, + 124, + 188, + 64, + 28, + 123, + 159, + 60, + 179, + 164, + 57, + 1, + 132, + 123, + 5, + 82, + 196, + 228, + 66, + 248, + 198, + 169, + 8, + 185, + 129, + 151, + 109, + 159, + 52, + 124, + 125, + 35, + 142, + 93, + 199, + 30, + 102, + 189, + 15, + 62, + 178, + 89, + 139, + 150, + 118, + 236, + 151, + 44, + 19, + 31, + 74, + 193, + 191, + 188, + 217, + 211, + 85, + 184, + 17, + 188, + 66, + 39, + 186, + 58, + 52, + 178, + 199, + 14, + 243, + 140, + 62, + 125, + 49, + 78, + 143, + 232, + 38, + 132, + 115, + 52, + 194, + 94, + 236, + 38, + 132, + 76, + 225, + 44, + 252, + 34, + 49, + 246, + 128, + 199, + 114, + 92, + 24, + 34, + 176, + 181, + 102, + 63, + 139, + 187, + 228, + 80, + 184, + 175, + 20, + 220, + 94, + 114, + 202, + 68, + 13, + 93, + 177, + 155, + 212, + 163, + 81, + 185, + 202, + 38, + 142, + 215, + 196, + 234, + 145, + 151, + 180, + 153, + 50, + 12, + 112, + 83, + 99, + 14, + 173, + 56, + 67, + 121, + 74, + 156, + 67, + 123, + 133, + 160, + 249, + 53, + 27, + 255, + 88, + 145, + 160, + 96, + 91, + 102, + 227, + 53, + 241, + 134, + 61, + 103, + 56, + 172, + 184, + 52, + 222, + 191, + 180, + 42, + 171, + 214, + 176, + 6, + 178, + 49, + 20, + 212, + 86, + 173, + 97, + 9, + 116, + 178, + 173, + 55, + 193, + 43, + 157, + 70, + 219, + 174, + 64, + 156, + 151, + 204, + 106, + 238, + 127, + 168, + 70, + 98, + 11, + 216, + 92, + 161, + 146, + 180, + 216, + 15, + 13, + 131, + 237, + 221, + 247, + 193, + 235, + 121, + 197, + 233, + 245, + 1, + 73, + 73, + 64, + 191, + 162, + 184, + 94, + 28, + 24, + 161, + 221, + 40, + 73, + 16, + 3, + 155, + 94, + 41, + 5, + 8, + 240, + 29, + 45, + 67, + 23, + 175, + 111, + 148, + 105, + 166, + 55, + 213, + 61, + 55, + 154, + 49, + 233, + 77, + 117, + 175, + 241, + 251, + 124, + 28, + 255, + 85, + 12, + 203, + 246, + 176, + 186, + 221, + 168, + 17, + 11, + 28, + 62, + 10, + 24, + 81, + 115, + 75, + 76, + 10, + 36, + 107, + 250, + 101, + 30, + 121, + 130, + 232, + 156, + 160, + 139, + 73, + 142, + 208, + 163, + 213, + 133, + 30, + 157, + 186, + 45, + 166, + 141, + 102, + 254, + 67, + 218, + 186, + 156, + 138, + 24, + 106, + 157, + 203, + 244, + 29, + 156, + 172, + 113, + 167, + 152, + 62, + 42, + 18, + 43, + 57, + 89, + 156, + 130, + 61, + 222, + 126, + 174, + 221, + 232, + 100, + 228, + 22, + 176, + 180, + 119, + 108, + 41, + 218, + 236, + 147, + 51, + 134, + 71, + 254, + 98, + 163, + 230, + 26, + 135, + 0, + 15, + 241, + 93, + 233, + 0, + 253, + 202, + 69, + 31, + 199, + 109, + 117, + 179, + 158, + 11, + 61, + 108, + 69, + 6, + 135, + 1, + 88, + 213, + 172, + 33, + 129, + 129, + 148, + 36, + 45, + 55, + 43, + 39, + 221, + 212, + 66, + 189, + 40, + 107, + 36, + 183, + 44, + 152, + 132, + 49, + 247, + 252, + 146, + 114, + 242, + 218, + 132, + 32, + 191, + 17, + 217, + 70, + 86, + 12, + 19, + 38, + 3, + 196, + 169, + 157, + 192, + 9, + 1, + 154, + 133, + 129, + 111, + 21, + 199, + 237, + 178, + 219, + 196, + 222, + 218, + 168, + 78, + 39, + 117, + 74, + 200, + 178, + 150, + 82, + 229, + 210, + 27, + 127, + 41, + 157, + 54, + 155, + 231, + 21, + 157, + 10, + 134, + 155, + 1, + 119, + 194, + 38, + 238, + 253, + 182, + 194, + 241, + 109, + 142, + 87, + 245, + 70, + 118, + 48, + 9, + 144, + 88, + 103, + 234, + 51, + 153, + 219, + 208, + 134, + 126, + 14, + 15, + 86, + 57, + 247, + 113, + 58, + 53, + 75, + 87, + 158, + 32, + 179, + 51, + 91, + 129, + 101, + 120, + 188, + 75, + 76, + 69, + 76, + 159, + 72, + 109, + 94, + 169, + 158, + 83, + 62, + 26, + 205, + 155, + 89, + 61, + 167, + 60, + 246, + 110, + 62, + 229, + 55, + 156, + 82, + 207, + 114, + 24, + 161, + 198, + 254, + 24, + 3, + 172, + 211, + 199, + 219, + 51, + 133, + 246, + 24, + 49, + 100, + 87, + 131, + 176, + 82, + 94, + 213, + 49, + 106, + 195, + 32, + 216, + 25, + 43, + 39, + 183, + 153, + 54, + 243, + 81, + 40, + 212, + 49, + 24, + 187, + 227, + 87, + 185, + 10, + 15, + 57, + 251, + 219, + 93, + 158, + 219, + 110, + 194, + 220, + 110, + 201, + 29, + 250, + 115, + 228, + 148, + 185, + 20, + 29, + 106, + 53, + 175, + 213, + 193, + 32, + 54, + 27, + 253, + 201, + 212, + 131, + 25, + 52, + 182, + 52, + 231, + 127, + 176, + 102, + 92, + 122, + 193, + 119, + 70, + 218, + 15, + 136, + 244, + 61, + 216, + 243, + 54, + 147, + 203, + 31, + 57, + 13, + 186, + 179, + 248, + 186, + 247, + 254, + 242, + 124, + 220, + 119, + 110, + 141, + 238, + 0, + 59, + 58, + 37, + 145, + 110, + 0, + 235, + 142, + 0, + 212, + 252, + 246, + 7, + 91, + 233, + 49, + 196, + 179, + 65, + 183, + 124, + 91, + 3, + 213, + 99, + 238, + 120, + 142, + 174, + 148, + 88, + 20, + 196, + 48, + 121, + 124, + 142, + 213, + 14, + 209, + 149, + 163, + 3, + 46, + 143, + 121, + 248, + 156, + 171, + 125, + 127, + 177, + 47, + 242, + 242, + 248, + 236, + 8, + 113, + 6, + 24, + 109, + 245, + 131, + 143, + 51, + 47, + 15, + 251, + 29, + 210, + 141, + 74, + 111, + 54, + 17, + 216, + 88, + 220, + 104, + 63, + 77, + 110, + 254, + 179, + 57, + 36, + 32, + 54, + 159, + 188, + 127, + 85, + 39, + 199, + 113, + 215, + 245, + 124, + 120, + 86, + 125, + 73, + 179, + 63, + 209, + 183, + 109, + 9, + 57, + 210, + 117, + 193, + 150, + 136, + 132, + 147, + 140, + 254, + 61, + 167, + 75, + 184, + 182, + 189, + 231, + 154, + 43, + 52, + 119, + 170, + 221, + 135, + 237, + 126, + 219, + 182, + 66, + 160, + 140, + 63, + 126, + 69, + 16, + 61, + 247, + 19, + 199, + 184, + 240, + 202, + 21, + 41, + 60, + 52, + 64, + 5, + 119, + 163, + 193, + 25, + 146, + 192, + 68, + 142, + 35, + 172, + 250, + 76, + 112, + 107, + 31, + 78, + 84, + 6, + 36, + 177, + 112, + 226, + 83, + 197, + 222, + 22, + 224, + 158, + 54, + 247, + 119, + 90, + 208, + 85, + 191, + 88, + 131, + 189, + 172, + 113, + 54, + 238, + 44, + 167, + 161, + 35, + 164, + 96, + 31, + 11, + 46, + 123, + 237, + 50, + 92, + 52, + 54, + 120, + 52, + 6, + 104, + 18, + 41, + 224, + 136, + 217, + 144, + 221, + 123, + 48, + 137, + 192, + 228, + 221, + 56, + 242, + 39, + 49, + 88, + 136, + 90, + 94, + 178, + 23, + 103, + 224, + 89, + 244, + 75, + 17, + 86, + 93, + 238, + 111, + 202, + 27, + 91, + 3, + 152, + 196, + 194, + 219, + 80, + 12, + 82, + 119, + 206, + 139, + 174, + 70, + 127, + 38, + 207, + 42, + 159, + 180, + 227, + 236, + 193, + 211, + 236, + 152, + 212, + 73, + 50, + 51, + 120, + 201, + 0, + 210, + 34, + 240, + 70, + 48, + 5, + 59, + 253, + 105, + 217, + 117, + 36, + 161, + 97, + 197, + 37, + 58, + 225, + 165, + 200, + 231, + 212, + 247, + 184, + 149, + 215, + 227, + 252, + 171, + 53, + 120, + 117, + 250, + 217, + 186, + 173, + 202, + 115, + 81, + 233, + 183, + 163, + 1, + 184, + 157, + 45, + 74, + 35, + 208, + 234, + 110, + 182, + 68, + 24, + 190, + 94, + 217, + 26, + 206, + 197, + 88, + 199, + 50, + 159, + 83, + 239, + 168, + 83, + 47, + 168, + 122, + 124, + 182, + 77, + 107, + 140, + 40, + 243, + 248, + 108, + 159, + 80, + 134, + 206, + 102, + 53, + 229, + 208, + 154, + 183, + 1, + 101, + 35, + 80, + 103, + 195, + 69, + 108, + 161, + 90, + 86, + 178, + 208, + 184, + 220, + 28, + 173, + 168, + 54, + 220, + 48, + 165, + 211, + 184, + 200, + 33, + 190, + 133, + 33, + 176, + 115, + 42, + 160, + 76, + 19, + 169, + 107, + 104, + 140, + 146, + 123, + 243, + 74, + 39, + 249, + 138, + 17, + 4, + 103, + 88, + 138, + 191, + 138, + 167, + 164, + 8, + 107, + 99, + 168, + 212, + 168, + 98, + 134, + 234, + 116, + 46, + 60, + 83, + 164, + 211, + 233, + 214, + 213, + 155, + 238, + 181, + 135, + 163, + 33, + 212, + 87, + 87, + 185, + 132, + 113, + 43, + 134, + 54, + 47, + 197, + 120, + 47, + 55, + 15, + 32, + 110, + 52, + 16, + 249, + 7, + 228, + 233, + 121, + 31, + 207, + 252, + 116, + 158, + 24, + 49, + 157, + 150, + 116, + 3, + 120, + 9, + 122, + 29, + 251, + 197, + 25, + 188, + 9, + 2, + 78, + 18, + 88, + 234, + 195, + 242, + 19, + 16, + 112, + 55, + 129, + 128, + 191, + 39, + 56, + 184, + 171, + 180, + 254, + 140, + 7, + 127, + 55, + 253, + 153, + 155, + 14, + 175, + 169, + 141, + 232, + 160, + 67, + 204, + 98, + 113, + 60, + 214, + 185, + 59, + 235, + 51, + 10, + 73, + 64, + 122, + 251, + 248, + 126, + 79, + 32, + 222, + 234, + 153, + 233, + 239, + 4, + 222, + 6, + 108, + 211, + 78, + 219, + 208, + 237, + 25, + 11, + 43, + 54, + 123, + 171, + 167, + 215, + 23, + 80, + 50, + 118, + 63, + 218, + 70, + 22, + 21, + 25, + 136, + 216, + 150, + 167, + 3, + 220, + 107, + 78, + 64, + 205, + 172, + 55, + 71, + 146, + 149, + 185, + 17, + 131, + 65, + 135, + 146, + 73, + 57, + 166, + 176, + 55, + 135, + 171, + 120, + 190, + 146, + 152, + 118, + 70, + 216, + 155, + 219, + 104, + 172, + 240, + 179, + 91, + 216, + 126, + 158, + 56, + 58, + 157, + 238, + 141, + 46, + 98, + 29, + 177, + 100, + 177, + 184, + 219, + 162, + 111, + 117, + 26, + 187, + 75, + 234, + 113, + 88, + 88, + 233, + 173, + 35, + 254, + 232, + 248, + 210, + 248, + 13, + 17, + 132, + 53, + 52, + 4, + 127, + 95, + 21, + 100, + 71, + 19, + 93, + 148, + 212, + 24, + 133, + 67, + 83, + 61, + 164, + 36, + 142, + 106, + 184, + 68, + 172, + 189, + 210, + 54, + 255, + 210, + 10, + 241, + 238, + 5, + 99, + 207, + 209, + 247, + 104, + 121, + 32, + 224, + 92, + 97, + 199, + 243, + 162, + 254, + 132, + 9, + 65, + 133, + 58, + 61, + 143, + 72, + 97, + 98, + 162, + 77, + 47, + 138, + 189, + 142, + 9, + 103, + 195, + 73, + 159, + 157, + 169, + 92, + 42, + 128, + 188, + 165, + 231, + 73, + 181, + 26, + 18, + 241, + 50, + 208, + 214, + 88, + 62, + 54, + 130, + 169, + 43, + 198, + 238, + 83, + 203, + 246, + 148, + 2, + 155, + 74, + 165, + 51, + 11, + 197, + 210, + 16, + 92, + 208, + 7, + 238, + 212, + 216, + 190, + 9, + 121, + 218, + 142, + 132, + 175, + 70, + 74, + 62, + 75, + 225, + 159, + 183, + 29, + 186, + 78, + 79, + 77, + 200, + 5, + 88, + 157, + 142, + 91, + 78, + 109, + 26, + 107, + 254, + 30, + 121, + 136, + 203, + 83, + 125, + 172, + 177, + 142, + 245, + 224, + 26, + 221, + 35, + 142, + 77, + 57, + 158, + 120, + 164, + 67, + 171, + 26, + 127, + 7, + 9, + 112, + 183, + 166, + 34, + 225, + 4, + 154, + 43, + 180, + 68, + 120, + 240, + 175, + 189, + 199, + 127, + 30, + 44, + 163, + 89, + 146, + 42, + 240, + 250, + 55, + 248, + 24, + 228, + 98, + 88, + 60, + 58, + 53, + 139, + 30, + 156, + 60, + 98, + 195, + 212, + 180, + 174, + 248, + 8, + 35, + 176, + 115, + 131, + 198, + 152, + 95, + 153, + 246, + 124, + 189, + 229, + 23, + 205, + 193, + 215, + 130, + 61, + 100, + 125, + 23, + 115, + 240, + 66, + 67, + 90, + 29, + 174, + 194, + 52, + 187, + 241, + 239, + 123, + 76, + 192, + 17, + 150, + 238, + 237, + 196, + 161, + 47, + 142, + 247, + 34, + 151, + 86, + 157, + 174, + 28, + 247, + 102, + 248, + 196, + 216, + 107, + 42, + 131, + 233, + 208, + 125, + 2, + 178, + 209, + 232, + 2, + 217, + 244, + 24, + 100, + 107, + 125, + 177, + 111, + 78, + 240, + 38, + 179, + 211, + 130, + 212, + 137, + 23, + 18, + 162, + 118, + 207, + 92, + 183, + 158, + 188, + 217, + 247, + 109, + 113, + 241, + 205, + 86, + 247, + 31, + 105, + 221, + 205, + 55, + 208, + 144, + 24, + 124, + 203, + 223, + 241, + 123, + 166, + 245, + 61, + 65, + 250, + 85, + 252, + 202, + 141, + 176, + 22, + 99, + 35, + 23, + 104, + 43, + 152, + 40, + 134, + 176, + 102, + 243, + 201, + 227, + 152, + 190, + 147, + 112, + 200, + 144, + 168, + 58, + 120, + 13, + 208, + 129, + 49, + 225, + 180, + 93, + 78, + 201, + 3, + 6, + 27, + 53, + 210, + 34, + 60, + 151, + 29, + 113, + 80, + 72, + 197, + 250, + 103, + 20, + 84, + 162, + 9, + 204, + 17, + 91, + 216, + 87, + 193, + 55, + 131, + 153, + 176, + 35, + 242, + 23, + 53, + 165, + 101, + 54, + 211, + 20, + 221, + 54, + 125, + 111, + 255, + 7, + 250, + 248, + 106, + 238, + 222, + 68, + 33, + 70, + 244, + 242, + 21, + 209, + 96, + 12, + 67, + 110, + 227, + 162, + 141, + 108, + 25, + 90, + 211, + 121, + 86, + 161, + 212, + 43, + 143, + 110, + 249, + 245, + 80, + 248, + 83, + 4, + 17, + 6, + 130, + 153, + 132, + 26, + 189, + 42, + 182, + 165, + 176, + 19, + 51, + 237, + 76, + 253, + 154, + 66, + 5, + 197, + 8, + 51, + 154, + 192, + 60, + 26, + 5, + 108, + 204, + 3, + 100, + 80, + 40, + 96, + 251, + 61, + 250, + 121, + 215, + 138, + 22, + 167, + 117, + 225, + 236, + 180, + 184, + 102, + 51, + 32, + 25, + 225, + 180, + 254, + 90, + 132, + 138, + 123, + 242, + 92, + 196, + 29, + 142, + 129, + 163, + 5, + 166, + 68, + 189, + 9, + 108, + 155, + 18, + 226, + 80, + 202, + 100, + 125, + 146, + 79, + 87, + 145, + 90, + 14, + 110, + 132, + 64, + 69, + 16, + 100, + 105, + 204, + 28, + 58, + 126, + 161, + 75, + 11, + 83, + 38, + 130, + 187, + 138, + 55, + 202, + 111, + 167, + 194, + 38, + 12, + 193, + 211, + 124, + 97, + 102, + 42, + 205, + 20, + 9, + 78, + 137, + 156, + 250, + 252, + 207, + 175, + 129, + 169, + 105, + 116, + 66, + 205, + 171, + 79, + 121, + 0, + 89, + 231, + 172, + 67, + 89, + 128, + 213, + 194, + 129, + 143, + 252, + 229, + 74, + 162, + 232, + 189, + 16, + 244, + 112, + 224, + 147, + 34, + 238, + 47, + 161, + 79, + 170, + 135, + 206, + 143, + 209, + 168, + 26, + 15, + 196, + 148, + 133, + 213, + 250, + 108, + 126, + 125, + 238, + 110, + 21, + 116, + 92, + 213, + 160, + 108, + 211, + 169, + 110, + 111, + 114, + 164, + 98, + 156, + 70, + 158, + 178, + 199, + 243, + 8, + 91, + 193, + 38, + 108, + 229, + 13, + 77, + 85, + 106, + 129, + 116, + 108, + 73, + 91, + 116, + 211, + 152, + 48, + 85, + 118, + 167, + 150, + 127, + 192, + 162, + 185, + 195, + 208, + 8, + 218, + 25, + 220, + 112, + 110, + 237, + 222, + 155, + 61, + 190, + 248, + 230, + 26, + 215, + 72, + 17, + 89, + 11, + 216, + 208, + 66, + 134, + 8, + 253, + 148, + 182, + 55, + 105, + 55, + 151, + 113, + 155, + 138, + 234, + 187, + 27, + 116, + 97, + 43, + 52, + 163, + 124, + 15, + 116, + 49, + 98, + 3, + 131, + 103, + 220, + 181, + 111, + 127, + 193, + 188, + 60, + 93, + 62, + 142, + 108, + 46, + 94, + 176, + 160, + 199, + 203, + 199, + 12, + 186, + 84, + 186, + 145, + 66, + 205, + 221, + 172, + 161, + 229, + 121, + 126, + 218, + 40, + 221, + 66, + 243, + 56, + 191, + 208, + 78, + 232, + 123, + 163, + 199, + 228, + 14, + 209, + 58, + 27, + 3, + 190, + 200, + 29, + 162, + 201, + 66, + 212, + 162, + 176, + 152, + 95, + 180, + 157, + 147, + 108, + 80, + 230, + 221, + 40, + 87, + 87, + 118, + 252, + 43, + 180, + 124, + 122, + 48, + 71, + 122, + 152, + 118, + 221, + 217, + 107, + 160, + 123, + 164, + 124, + 177, + 200, + 11, + 136, + 203, + 52, + 177, + 94, + 200, + 101, + 233, + 12, + 143, + 120, + 30, + 109, + 93, + 204, + 164, + 187, + 101, + 174, + 53, + 179, + 134, + 40, + 38, + 78, + 253, + 203, + 24, + 154, + 233, + 128, + 141, + 216, + 152, + 72, + 229, + 4, + 158, + 109, + 49, + 37, + 247, + 17, + 133, + 212, + 253, + 156, + 205, + 241, + 236, + 70, + 31, + 195, + 35, + 8, + 67, + 102, + 43, + 133, + 71, + 1, + 49, + 214, + 157, + 182, + 209, + 57, + 170, + 137, + 247, + 4, + 70, + 99, + 119, + 90, + 166, + 79, + 176, + 77, + 161, + 133, + 247, + 169, + 207, + 116, + 179, + 139, + 157, + 184, + 111, + 27, + 182, + 90, + 115, + 200, + 45, + 101, + 40, + 4, + 238, + 243, + 30, + 240, + 247, + 107, + 59, + 46, + 230, + 163, + 193, + 70, + 183, + 57, + 49, + 159, + 12, + 10, + 127, + 207, + 47, + 153, + 123, + 169, + 123, + 42, + 64, + 179, + 151, + 250, + 214, + 240, + 62, + 189, + 111, + 219, + 127, + 0, + 139, + 146, + 188, + 186, + 215, + 236, + 250, + 170, + 230, + 2, + 229, + 70, + 70, + 184, + 78, + 114, + 216, + 227, + 52, + 16, + 227, + 69, + 219, + 190, + 154, + 129, + 177, + 53, + 246, + 102, + 95, + 211, + 126, + 250, + 236, + 80, + 106, + 13, + 247, + 151, + 142, + 88, + 23, + 73, + 50, + 203, + 11, + 125, + 86, + 60, + 3, + 114, + 168, + 9, + 200, + 121, + 231, + 62, + 250, + 78, + 200, + 172, + 56, + 236, + 90, + 158, + 222, + 205, + 157, + 99, + 12, + 244, + 83, + 227, + 81, + 54, + 167, + 123, + 63, + 195, + 106, + 250, + 35, + 152, + 83, + 250, + 106, + 133, + 233, + 160, + 148, + 37, + 99, + 201, + 238, + 76, + 247, + 27, + 230, + 58, + 72, + 222, + 91, + 69, + 220, + 80, + 28, + 119, + 127, + 221, + 205, + 40, + 206, + 218, + 161, + 88, + 230, + 69, + 252, + 57, + 100, + 117, + 212, + 135, + 27, + 115, + 72, + 145, + 55, + 48, + 98, + 172, + 191, + 121, + 131, + 109, + 80, + 109, + 232, + 127, + 57, + 5, + 107, + 220, + 236, + 44, + 6, + 11, + 171, + 198, + 230, + 10, + 168, + 67, + 194, + 245, + 124, + 172, + 155, + 173, + 240, + 49, + 178, + 157, + 160, + 230, + 195, + 135, + 238, + 92, + 191, + 59, + 69, + 97, + 36, + 48, + 40, + 113, + 112, + 57, + 159, + 128, + 20, + 165, + 67, + 98, + 208, + 138, + 73, + 146, + 18, + 40, + 105, + 184, + 141, + 93, + 188, + 170, + 187, + 114, + 173, + 120, + 81, + 107, + 194, + 214, + 21, + 34, + 17, + 85, + 39, + 34, + 132, + 65, + 22, + 218, + 185, + 92, + 187, + 170, + 6, + 222, + 143, + 19, + 87, + 100, + 142, + 198, + 64, + 40, + 30, + 142, + 214, + 197, + 174, + 209, + 23, + 43, + 138, + 204, + 117, + 227, + 235, + 16, + 186, + 175, + 254, + 188, + 88, + 78, + 8, + 130, + 113, + 103, + 192, + 128, + 135, + 211, + 237, + 17, + 239, + 125, + 41, + 127, + 224, + 138, + 237, + 241, + 137, + 33, + 78, + 1, + 70, + 25, + 24, + 55, + 219, + 85, + 96, + 102, + 195, + 112, + 195, + 239, + 166, + 136, + 190, + 76, + 124, + 242, + 208, + 170, + 220, + 185, + 96, + 215, + 172, + 252, + 196, + 227, + 38, + 118, + 167, + 63, + 156, + 120, + 242, + 231, + 194, + 80, + 142, + 241, + 168, + 72, + 184, + 198, + 164, + 250, + 177, + 202, + 39, + 209, + 237, + 203, + 164, + 147, + 79, + 50, + 39, + 135, + 138, + 235, + 243, + 182, + 50, + 71, + 37, + 106, + 18, + 57, + 99, + 64, + 92, + 225, + 61, + 175, + 98, + 45, + 222, + 117, + 236, + 151, + 176, + 152, + 117, + 76, + 159, + 56, + 55, + 66, + 42, + 56, + 252, + 198, + 134, + 132, + 166, + 99, + 38, + 207, + 51, + 254, + 205, + 87, + 144, + 74, + 81, + 79, + 32, + 195, + 13, + 9, + 26, + 225, + 50, + 143, + 188, + 195, + 189, + 66, + 223, + 172, + 7, + 234, + 200, + 189, + 8, + 172, + 150, + 220, + 228, + 104, + 12, + 18, + 135, + 51, + 166, + 42, + 190, + 51, + 93, + 44, + 23, + 98, + 201, + 175, + 9, + 0, + 85, + 143, + 114, + 166, + 25, + 242, + 224, + 187, + 48, + 156, + 7, + 122, + 212, + 67, + 185, + 126, + 234, + 109, + 90, + 28, + 97, + 125, + 54, + 199, + 62, + 194, + 112, + 124, + 110, + 78, + 107, + 243, + 17, + 134, + 195, + 223, + 56, + 131, + 46, + 29, + 234, + 230, + 55, + 115, + 117, + 91, + 255, + 212, + 245, + 110, + 203, + 59, + 242, + 232, + 106, + 159, + 36, + 235, + 253, + 190, + 61, + 131, + 94, + 100, + 16, + 227, + 252, + 251, + 222, + 106, + 206, + 134, + 191, + 14, + 206, + 90, + 9, + 30, + 73, + 38, + 80, + 121, + 214, + 74, + 119, + 134, + 215, + 85, + 243, + 240, + 204, + 173, + 131, + 70, + 216, + 136, + 61, + 179, + 129, + 9, + 252, + 154, + 82, + 171, + 153, + 227, + 60, + 188, + 252, + 80, + 41, + 179, + 140, + 78, + 255, + 141, + 218, + 151, + 25, + 167, + 203, + 125, + 98, + 155, + 150, + 42, + 180, + 67, + 176, + 100, + 133, + 209, + 51, + 175, + 66, + 232, + 246, + 242, + 255, + 187, + 113, + 14, + 79, + 3, + 65, + 21, + 177, + 37, + 104, + 177, + 6, + 194, + 185, + 80, + 105, + 113, + 103, + 25, + 66, + 30, + 246, + 48, + 116, + 135, + 195, + 185, + 2, + 203, + 246, + 201, + 126, + 120, + 122, + 118, + 147, + 65, + 166, + 133, + 56, + 126, + 213, + 188, + 103, + 129, + 58, + 199, + 245, + 89, + 229, + 124, + 159, + 164, + 86, + 42, + 25, + 105, + 109, + 88, + 147, + 67, + 239, + 130, + 42, + 198, + 196, + 96, + 28, + 127, + 218, + 10, + 24, + 83, + 17, + 93, + 25, + 6, + 52, + 103, + 163, + 207, + 184, + 71, + 246, + 49, + 91, + 149, + 239, + 17, + 113, + 124, + 142, + 181, + 81, + 10, + 123, + 238, + 206, + 220, + 56, + 25, + 224, + 31, + 182, + 163, + 94, + 58, + 147, + 84, + 93, + 201, + 36, + 190, + 70, + 128, + 168, + 218, + 244, + 8, + 80, + 18, + 169, + 82, + 188, + 61, + 203, + 243, + 12, + 147, + 226, + 227, + 85, + 43, + 89, + 6, + 185, + 11, + 67, + 167, + 36, + 103, + 76, + 48, + 142, + 37, + 57, + 47, + 90, + 202, + 226, + 50, + 191, + 137, + 141, + 244, + 74, + 97, + 185, + 17, + 54, + 229, + 137, + 151, + 244, + 53, + 34, + 98, + 182, + 198, + 115, + 188, + 168, + 166, + 33, + 155, + 234, + 57, + 209, + 33, + 123, + 162, + 158, + 125, + 183, + 93, + 73, + 255, + 236, + 243, + 127, + 127, + 27, + 50, + 89, + 111, + 254, + 67, + 134, + 197, + 228, + 100, + 167, + 187, + 205, + 97, + 236, + 251, + 244, + 144, + 212, + 207, + 233, + 121, + 20, + 221, + 23, + 20, + 145, + 26, + 188, + 192, + 94, + 137, + 199, + 61, + 95, + 21, + 239, + 33, + 16, + 55, + 241, + 60, + 121, + 4, + 9, + 134, + 149, + 190, + 142, + 89, + 30, + 95, + 106, + 174, + 244, + 115, + 226, + 36, + 158, + 26, + 229, + 151, + 240, + 94, + 221, + 46, + 245, + 156, + 141, + 53, + 122, + 64, + 184, + 249, + 238, + 190, + 154, + 2, + 34, + 19, + 189, + 109, + 104, + 177, + 217, + 33, + 115, + 247, + 45, + 20, + 254, + 234, + 120, + 53, + 159, + 109, + 38, + 247, + 222, + 66, + 31, + 93, + 190, + 129, + 38, + 57, + 44, + 244, + 255, + 1, + 41, + 78, + 79, + 106, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 49, + 48, + 53, + 48, + 54, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 237, + 125, + 219, + 138, + 101, + 73, + 146, + 221, + 123, + 126, + 69, + 254, + 64, + 91, + 187, + 221, + 221, + 161, + 105, + 168, + 235, + 160, + 135, + 1, + 73, + 212, + 31, + 180, + 52, + 3, + 130, + 126, + 208, + 232, + 255, + 65, + 216, + 201, + 44, + 213, + 57, + 21, + 102, + 113, + 182, + 123, + 88, + 70, + 84, + 137, + 233, + 105, + 232, + 201, + 138, + 202, + 29, + 251, + 226, + 23, + 179, + 229, + 235, + 130, + 159, + 199, + 231, + 241, + 249, + 47, + 248, + 121, + 124, + 158, + 66, + 159, + 255, + 241, + 207, + 79, + 255, + 251, + 19, + 184, + 222, + 254, + 233, + 175, + 255, + 251, + 143, + 127, + 126, + 194, + 207, + 241, + 127, + 255, + 253, + 95, + 110, + 255, + 131, + 159, + 255, + 227, + 223, + 63, + 253, + 245, + 95, + 248, + 243, + 191, + 255, + 159, + 79, + 241, + 115, + 95, + 242, + 25, + 145, + 248, + 243, + 127, + 252, + 207, + 79, + 255, + 246, + 233, + 191, + 253, + 238, + 10, + 78, + 241, + 223, + 127, + 252, + 243, + 246, + 175, + 142, + 184, + 198, + 151, + 255, + 231, + 183, + 107, + 252, + 245, + 191, + 126, + 254, + 219, + 223, + 254, + 250, + 175, + 63, + 252, + 151, + 31, + 63, + 143, + 207, + 127, + 255, + 251, + 247, + 63, + 254, + 240, + 233, + 251, + 95, + 62, + 253, + 245, + 103, + 249, + 140, + 2, + 22, + 255, + 241, + 207, + 191, + 252, + 219, + 39, + 252, + 237, + 86, + 65, + 124, + 77, + 116, + 94, + 159, + 127, + 137, + 235, + 254, + 5, + 25, + 200, + 157, + 133, + 231, + 231, + 95, + 254, + 199, + 231, + 191, + 141, + 33, + 254, + 247, + 207, + 191, + 252, + 175, + 79, + 19, + 80, + 17, + 135, + 207, + 207, + 227, + 235, + 15, + 148, + 138, + 31, + 12, + 185, + 253, + 224, + 167, + 95, + 182, + 126, + 55, + 13, + 96, + 23, + 92, + 152, + 220, + 195, + 224, + 163, + 43, + 10, + 136, + 24, + 154, + 39, + 87, + 228, + 31, + 190, + 222, + 188, + 208, + 34, + 209, + 231, + 15, + 165, + 179, + 122, + 218, + 239, + 110, + 63, + 32, + 136, + 223, + 44, + 120, + 119, + 41, + 189, + 253, + 64, + 96, + 206, + 97, + 162, + 191, + 253, + 13, + 153, + 39, + 79, + 99, + 10, + 99, + 184, + 18, + 183, + 189, + 31, + 91, + 48, + 124, + 201, + 154, + 217, + 87, + 151, + 226, + 113, + 229, + 231, + 219, + 15, + 24, + 72, + 13, + 101, + 241, + 111, + 143, + 251, + 229, + 61, + 224, + 0, + 157, + 66, + 46, + 191, + 253, + 164, + 188, + 150, + 126, + 249, + 8, + 14, + 76, + 19, + 233, + 238, + 205, + 217, + 201, + 227, + 32, + 50, + 76, + 159, + 60, + 189, + 237, + 13, + 33, + 58, + 44, + 29, + 108, + 217, + 75, + 87, + 222, + 29, + 42, + 95, + 159, + 235, + 197, + 243, + 202, + 247, + 213, + 203, + 254, + 161, + 122, + 217, + 88, + 253, + 141, + 239, + 142, + 158, + 211, + 22, + 208, + 26, + 56, + 251, + 222, + 156, + 51, + 176, + 17, + 106, + 246, + 226, + 198, + 151, + 145, + 66, + 64, + 99, + 186, + 143, + 183, + 206, + 12, + 92, + 12, + 78, + 52, + 250, + 102, + 6, + 46, + 7, + 95, + 50, + 178, + 181, + 168, + 30, + 205, + 213, + 124, + 223, + 95, + 83, + 234, + 207, + 235, + 103, + 11, + 33, + 131, + 240, + 192, + 213, + 184, + 180, + 58, + 232, + 32, + 204, + 166, + 90, + 253, + 184, + 122, + 244, + 171, + 108, + 128, + 50, + 47, + 233, + 187, + 121, + 19, + 176, + 161, + 235, + 217, + 156, + 38, + 78, + 191, + 212, + 88, + 47, + 151, + 170, + 87, + 167, + 244, + 195, + 95, + 120, + 152, + 210, + 38, + 150, + 127, + 243, + 187, + 95, + 125, + 54, + 163, + 25, + 21, + 150, + 168, + 247, + 237, + 166, + 76, + 3, + 6, + 186, + 191, + 195, + 132, + 102, + 137, + 90, + 192, + 213, + 250, + 110, + 94, + 162, + 22, + 88, + 74, + 207, + 38, + 52, + 85, + 27, + 154, + 174, + 116, + 63, + 123, + 28, + 12, + 95, + 190, + 173, + 1, + 241, + 210, + 197, + 191, + 253, + 0, + 241, + 232, + 166, + 39, + 130, + 137, + 107, + 223, + 170, + 204, + 83, + 193, + 113, + 105, + 54, + 151, + 248, + 203, + 180, + 69, + 4, + 25, + 99, + 76, + 149, + 124, + 123, + 186, + 123, + 65, + 227, + 231, + 147, + 123, + 144, + 177, + 128, + 163, + 64, + 104, + 123, + 42, + 65, + 6, + 65, + 241, + 116, + 147, + 46, + 74, + 140, + 175, + 3, + 243, + 229, + 108, + 171, + 190, + 109, + 57, + 161, + 137, + 142, + 238, + 89, + 25, + 88, + 156, + 250, + 150, + 100, + 81, + 7, + 193, + 184, + 179, + 228, + 219, + 126, + 29, + 202, + 12, + 106, + 147, + 214, + 228, + 231, + 239, + 225, + 190, + 204, + 99, + 121, + 250, + 207, + 15, + 199, + 194, + 92, + 177, + 115, + 175, + 190, + 157, + 91, + 162, + 22, + 88, + 178, + 210, + 137, + 94, + 45, + 189, + 178, + 78, + 126, + 149, + 14, + 4, + 36, + 30, + 218, + 118, + 243, + 58, + 20, + 112, + 105, + 90, + 118, + 208, + 15, + 103, + 87, + 92, + 64, + 102, + 171, + 175, + 36, + 86, + 100, + 96, + 158, + 43, + 221, + 61, + 253, + 107, + 5, + 52, + 28, + 151, + 13, + 201, + 75, + 35, + 55, + 222, + 155, + 134, + 70, + 191, + 93, + 168, + 250, + 13, + 229, + 133, + 142, + 10, + 38, + 213, + 9, + 203, + 230, + 160, + 190, + 215, + 102, + 12, + 131, + 87, + 218, + 107, + 149, + 109, + 16, + 189, + 90, + 140, + 236, + 222, + 193, + 52, + 48, + 31, + 141, + 43, + 206, + 248, + 252, + 23, + 38, + 48, + 199, + 233, + 250, + 164, + 28, + 250, + 250, + 40, + 187, + 101, + 184, + 198, + 31, + 137, + 105, + 190, + 252, + 77, + 167, + 133, + 61, + 168, + 34, + 141, + 228, + 130, + 162, + 85, + 205, + 93, + 182, + 194, + 21, + 50, + 114, + 186, + 24, + 194, + 112, + 211, + 241, + 234, + 195, + 38, + 144, + 16, + 14, + 132, + 177, + 226, + 131, + 190, + 10, + 13, + 253, + 244, + 175, + 63, + 220, + 195, + 67, + 216, + 5, + 15, + 85, + 189, + 107, + 221, + 6, + 28, + 21, + 180, + 100, + 48, + 167, + 73, + 223, + 232, + 229, + 1, + 75, + 167, + 88, + 86, + 100, + 202, + 235, + 195, + 56, + 121, + 166, + 230, + 10, + 216, + 12, + 124, + 185, + 166, + 213, + 246, + 217, + 227, + 250, + 128, + 105, + 75, + 117, + 167, + 72, + 122, + 214, + 184, + 110, + 222, + 194, + 18, + 144, + 181, + 102, + 227, + 110, + 191, + 38, + 168, + 227, + 180, + 181, + 241, + 13, + 235, + 254, + 189, + 27, + 150, + 96, + 1, + 193, + 145, + 46, + 249, + 135, + 171, + 23, + 79, + 144, + 73, + 43, + 109, + 140, + 14, + 214, + 175, + 234, + 13, + 253, + 148, + 255, + 243, + 179, + 74, + 23, + 221, + 65, + 23, + 165, + 3, + 239, + 240, + 53, + 68, + 95, + 100, + 162, + 105, + 153, + 244, + 229, + 45, + 44, + 136, + 246, + 113, + 8, + 229, + 5, + 194, + 165, + 183, + 32, + 109, + 240, + 222, + 209, + 240, + 33, + 158, + 224, + 99, + 120, + 39, + 104, + 67, + 224, + 78, + 121, + 11, + 127, + 95, + 88, + 185, + 250, + 5, + 108, + 178, + 106, + 155, + 171, + 18, + 237, + 1, + 40, + 87, + 243, + 55, + 194, + 189, + 228, + 14, + 44, + 74, + 141, + 231, + 5, + 19, + 65, + 208, + 83, + 20, + 244, + 17, + 12, + 152, + 203, + 46, + 32, + 61, + 37, + 76, + 112, + 84, + 147, + 50, + 18, + 176, + 171, + 245, + 245, + 205, + 140, + 6, + 34, + 81, + 142, + 39, + 171, + 201, + 218, + 46, + 229, + 127, + 40, + 58, + 198, + 18, + 58, + 171, + 0, + 175, + 179, + 215, + 163, + 12, + 56, + 86, + 39, + 224, + 165, + 14, + 56, + 83, + 136, + 243, + 161, + 242, + 187, + 31, + 251, + 84, + 60, + 235, + 33, + 0, + 20, + 75, + 167, + 234, + 236, + 4, + 128, + 16, + 140, + 60, + 61, + 34, + 225, + 95, + 31, + 106, + 41, + 25, + 223, + 205, + 207, + 122, + 132, + 151, + 159, + 246, + 168, + 89, + 21, + 20, + 32, + 28, + 179, + 175, + 235, + 18, + 156, + 64, + 147, + 124, + 110, + 141, + 240, + 170, + 237, + 42, + 207, + 243, + 190, + 219, + 198, + 122, + 87, + 231, + 78, + 33, + 70, + 64, + 206, + 41, + 108, + 112, + 248, + 222, + 204, + 128, + 69, + 82, + 216, + 96, + 31, + 57, + 179, + 87, + 33, + 242, + 109, + 128, + 103, + 2, + 146, + 73, + 95, + 57, + 161, + 131, + 0, + 215, + 76, + 175, + 88, + 142, + 133, + 18, + 135, + 40, + 176, + 210, + 234, + 173, + 61, + 12, + 42, + 84, + 122, + 227, + 33, + 186, + 242, + 130, + 88, + 149, + 27, + 223, + 142, + 48, + 120, + 20, + 157, + 31, + 8, + 25, + 171, + 57, + 176, + 163, + 216, + 55, + 133, + 46, + 174, + 32, + 197, + 215, + 234, + 234, + 170, + 100, + 58, + 220, + 5, + 20, + 166, + 178, + 144, + 236, + 226, + 2, + 60, + 0, + 167, + 170, + 248, + 14, + 46, + 64, + 77, + 184, + 192, + 159, + 143, + 96, + 33, + 3, + 162, + 114, + 105, + 60, + 117, + 18, + 1, + 99, + 102, + 206, + 22, + 230, + 250, + 230, + 171, + 51, + 255, + 251, + 109, + 230, + 218, + 120, + 59, + 43, + 52, + 157, + 1, + 69, + 184, + 145, + 12, + 224, + 14, + 132, + 150, + 195, + 252, + 228, + 21, + 109, + 164, + 30, + 41, + 229, + 233, + 248, + 79, + 155, + 83, + 248, + 225, + 192, + 206, + 39, + 189, + 113, + 166, + 34, + 45, + 152, + 139, + 181, + 145, + 128, + 194, + 12, + 203, + 84, + 211, + 165, + 239, + 236, + 72, + 32, + 64, + 132, + 193, + 222, + 217, + 56, + 161, + 80, + 212, + 222, + 69, + 189, + 176, + 138, + 206, + 242, + 25, + 79, + 224, + 245, + 66, + 235, + 34, + 79, + 166, + 181, + 208, + 194, + 105, + 48, + 214, + 242, + 190, + 2, + 21, + 215, + 0, + 116, + 76, + 1, + 172, + 119, + 66, + 229, + 40, + 104, + 83, + 163, + 147, + 61, + 67, + 232, + 48, + 189, + 96, + 207, + 156, + 142, + 134, + 109, + 244, + 68, + 96, + 185, + 55, + 158, + 50, + 19, + 47, + 24, + 146, + 55, + 152, + 229, + 177, + 71, + 137, + 170, + 148, + 181, + 131, + 86, + 85, + 180, + 22, + 133, + 229, + 21, + 62, + 201, + 227, + 149, + 206, + 240, + 247, + 64, + 111, + 99, + 114, + 245, + 189, + 208, + 64, + 111, + 153, + 101, + 190, + 7, + 163, + 4, + 103, + 172, + 204, + 220, + 183, + 50, + 51, + 81, + 172, + 204, + 105, + 165, + 253, + 236, + 155, + 236, + 254, + 42, + 22, + 96, + 15, + 6, + 74, + 219, + 205, + 7, + 144, + 44, + 177, + 180, + 110, + 28, + 226, + 62, + 105, + 109, + 182, + 171, + 218, + 9, + 19, + 167, + 55, + 114, + 124, + 140, + 96, + 174, + 225, + 217, + 121, + 124, + 57, + 123, + 182, + 155, + 214, + 162, + 196, + 56, + 107, + 215, + 120, + 57, + 44, + 194, + 20, + 99, + 58, + 44, + 57, + 7, + 194, + 90, + 140, + 246, + 172, + 36, + 183, + 113, + 1, + 182, + 42, + 105, + 111, + 53, + 150, + 171, + 189, + 53, + 185, + 16, + 168, + 74, + 31, + 197, + 66, + 196, + 192, + 40, + 230, + 228, + 198, + 42, + 126, + 198, + 240, + 177, + 40, + 138, + 58, + 25, + 120, + 129, + 202, + 160, + 123, + 202, + 103, + 175, + 241, + 233, + 18, + 97, + 40, + 1, + 124, + 126, + 254, + 207, + 175, + 193, + 128, + 135, + 228, + 11, + 34, + 224, + 53, + 177, + 17, + 195, + 32, + 3, + 241, + 49, + 210, + 42, + 171, + 2, + 102, + 14, + 209, + 146, + 219, + 17, + 11, + 247, + 149, + 29, + 42, + 6, + 83, + 228, + 29, + 182, + 153, + 32, + 189, + 144, + 98, + 227, + 54, + 243, + 43, + 202, + 50, + 212, + 159, + 169, + 7, + 182, + 53, + 2, + 117, + 79, + 87, + 210, + 176, + 139, + 233, + 125, + 200, + 214, + 96, + 64, + 115, + 98, + 123, + 241, + 140, + 175, + 131, + 50, + 186, + 190, + 188, + 90, + 217, + 1, + 101, + 184, + 9, + 148, + 57, + 104, + 169, + 203, + 206, + 234, + 201, + 165, + 14, + 64, + 46, + 27, + 157, + 84, + 215, + 5, + 139, + 73, + 247, + 142, + 202, + 235, + 135, + 234, + 5, + 10, + 204, + 64, + 197, + 152, + 250, + 138, + 31, + 31, + 96, + 56, + 243, + 51, + 128, + 63, + 31, + 20, + 135, + 136, + 128, + 190, + 172, + 19, + 73, + 65, + 141, + 213, + 45, + 135, + 198, + 235, + 118, + 172, + 108, + 87, + 203, + 7, + 46, + 47, + 85, + 226, + 122, + 71, + 187, + 36, + 42, + 194, + 66, + 118, + 106, + 124, + 69, + 170, + 176, + 166, + 122, + 10, + 5, + 148, + 131, + 229, + 140, + 60, + 139, + 54, + 111, + 173, + 93, + 223, + 102, + 131, + 78, + 64, + 115, + 164, + 13, + 197, + 41, + 148, + 210, + 134, + 70, + 140, + 1, + 190, + 48, + 109, + 77, + 14, + 155, + 231, + 33, + 48, + 141, + 83, + 40, + 234, + 25, + 243, + 46, + 195, + 90, + 143, + 150, + 49, + 98, + 4, + 15, + 25, + 80, + 35, + 200, + 162, + 48, + 137, + 82, + 165, + 82, + 57, + 23, + 235, + 19, + 154, + 242, + 7, + 21, + 187, + 253, + 80, + 156, + 115, + 93, + 23, + 116, + 182, + 95, + 208, + 26, + 32, + 136, + 141, + 39, + 188, + 55, + 56, + 103, + 82, + 138, + 216, + 226, + 40, + 214, + 54, + 250, + 238, + 238, + 188, + 15, + 209, + 222, + 216, + 33, + 5, + 40, + 179, + 80, + 38, + 247, + 130, + 50, + 211, + 230, + 159, + 75, + 230, + 99, + 113, + 78, + 39, + 179, + 145, + 216, + 99, + 18, + 35, + 56, + 189, + 98, + 249, + 113, + 217, + 174, + 48, + 231, + 138, + 35, + 237, + 209, + 160, + 136, + 25, + 161, + 24, + 53, + 110, + 84, + 196, + 12, + 7, + 225, + 201, + 250, + 141, + 201, + 46, + 79, + 196, + 13, + 219, + 8, + 133, + 130, + 83, + 174, + 202, + 62, + 197, + 60, + 22, + 248, + 178, + 84, + 65, + 249, + 62, + 218, + 3, + 113, + 6, + 33, + 167, + 198, + 103, + 114, + 15, + 50, + 113, + 90, + 253, + 148, + 51, + 189, + 68, + 66, + 102, + 43, + 91, + 97, + 16, + 184, + 74, + 138, + 54, + 156, + 50, + 84, + 12, + 38, + 89, + 170, + 52, + 186, + 66, + 69, + 43, + 207, + 11, + 198, + 221, + 226, + 213, + 171, + 63, + 13, + 32, + 196, + 166, + 89, + 163, + 56, + 74, + 12, + 92, + 167, + 165, + 167, + 74, + 229, + 190, + 125, + 40, + 255, + 17, + 24, + 211, + 82, + 65, + 225, + 225, + 205, + 107, + 188, + 215, + 130, + 168, + 94, + 12, + 215, + 135, + 211, + 206, + 11, + 218, + 168, + 237, + 226, + 229, + 108, + 187, + 210, + 53, + 97, + 44, + 76, + 73, + 13, + 111, + 131, + 137, + 130, + 114, + 240, + 117, + 7, + 249, + 177, + 88, + 149, + 118, + 169, + 215, + 103, + 223, + 63, + 180, + 38, + 190, + 56, + 90, + 197, + 223, + 221, + 216, + 235, + 216, + 206, + 156, + 192, + 62, + 144, + 118, + 160, + 29, + 233, + 210, + 225, + 148, + 200, + 90, + 217, + 119, + 190, + 206, + 150, + 216, + 62, + 244, + 133, + 181, + 80, + 27, + 135, + 5, + 25, + 12, + 99, + 29, + 254, + 113, + 103, + 227, + 178, + 192, + 22, + 207, + 244, + 136, + 242, + 112, + 33, + 96, + 112, + 211, + 153, + 186, + 184, + 148, + 122, + 178, + 102, + 232, + 32, + 172, + 57, + 72, + 176, + 145, + 86, + 28, + 84, + 252, + 21, + 139, + 206, + 179, + 181, + 249, + 1, + 65, + 60, + 186, + 249, + 41, + 81, + 29, + 209, + 236, + 219, + 93, + 231, + 140, + 234, + 136, + 210, + 173, + 170, + 60, + 192, + 63, + 20, + 52, + 134, + 84, + 15, + 87, + 126, + 230, + 125, + 8, + 123, + 12, + 189, + 45, + 199, + 65, + 15, + 124, + 201, + 16, + 90, + 119, + 85, + 110, + 152, + 177, + 188, + 25, + 214, + 221, + 160, + 65, + 30, + 114, + 168, + 36, + 16, + 0, + 237, + 244, + 251, + 64, + 9, + 90, + 150, + 115, + 186, + 251, + 146, + 20, + 109, + 79, + 179, + 7, + 11, + 186, + 194, + 114, + 109, + 244, + 96, + 193, + 57, + 96, + 136, + 167, + 71, + 189, + 251, + 246, + 77, + 95, + 127, + 176, + 205, + 95, + 18, + 240, + 56, + 229, + 108, + 100, + 68, + 77, + 240, + 73, + 154, + 206, + 198, + 109, + 255, + 164, + 179, + 173, + 140, + 8, + 4, + 59, + 151, + 24, + 138, + 3, + 200, + 41, + 51, + 253, + 84, + 101, + 77, + 243, + 58, + 119, + 173, + 13, + 155, + 84, + 129, + 181, + 116, + 54, + 98, + 147, + 186, + 96, + 152, + 79, + 236, + 80, + 206, + 156, + 245, + 96, + 228, + 11, + 68, + 168, + 81, + 192, + 79, + 147, + 65, + 145, + 215, + 166, + 56, + 172, + 196, + 144, + 142, + 52, + 111, + 60, + 22, + 168, + 123, + 170, + 124, + 60, + 213, + 128, + 49, + 152, + 172, + 116, + 67, + 122, + 88, + 43, + 30, + 252, + 50, + 42, + 169, + 87, + 107, + 69, + 201, + 172, + 96, + 50, + 86, + 39, + 237, + 105, + 129, + 35, + 29, + 155, + 48, + 148, + 220, + 152, + 183, + 119, + 85, + 108, + 225, + 222, + 162, + 141, + 8, + 9, + 59, + 130, + 204, + 252, + 124, + 136, + 107, + 122, + 93, + 133, + 157, + 84, + 199, + 240, + 37, + 95, + 241, + 172, + 224, + 190, + 89, + 62, + 120, + 99, + 125, + 36, + 97, + 249, + 32, + 75, + 158, + 73, + 153, + 30, + 191, + 237, + 149, + 165, + 247, + 254, + 237, + 28, + 125, + 115, + 81, + 4, + 230, + 209, + 233, + 126, + 163, + 10, + 50, + 242, + 157, + 171, + 156, + 205, + 245, + 8, + 239, + 85, + 169, + 205, + 56, + 159, + 91, + 141, + 20, + 76, + 153, + 6, + 108, + 24, + 20, + 140, + 63, + 218, + 116, + 86, + 148, + 104, + 94, + 83, + 115, + 137, + 83, + 223, + 157, + 9, + 33, + 78, + 201, + 118, + 52, + 250, + 121, + 15, + 3, + 236, + 253, + 176, + 42, + 11, + 22, + 58, + 246, + 109, + 74, + 170, + 12, + 43, + 168, + 156, + 207, + 152, + 193, + 115, + 96, + 113, + 30, + 113, + 135, + 139, + 157, + 29, + 71, + 232, + 36, + 208, + 49, + 198, + 55, + 213, + 156, + 213, + 103, + 46, + 205, + 21, + 173, + 193, + 240, + 160, + 173, + 52, + 217, + 232, + 132, + 178, + 76, + 150, + 47, + 187, + 238, + 0, + 244, + 94, + 188, + 8, + 117, + 24, + 108, + 20, + 229, + 108, + 207, + 179, + 26, + 66, + 104, + 146, + 3, + 119, + 254, + 253, + 5, + 207, + 4, + 56, + 166, + 128, + 115, + 80, + 44, + 132, + 91, + 122, + 190, + 144, + 85, + 136, + 197, + 226, + 190, + 1, + 47, + 106, + 23, + 115, + 236, + 192, + 221, + 215, + 186, + 81, + 191, + 243, + 193, + 202, + 154, + 31, + 51, + 151, + 128, + 114, + 45, + 53, + 42, + 253, + 143, + 127, + 232, + 100, + 134, + 91, + 120, + 58, + 113, + 94, + 151, + 31, + 142, + 99, + 5, + 52, + 93, + 57, + 78, + 116, + 116, + 143, + 46, + 176, + 122, + 107, + 86, + 95, + 48, + 144, + 117, + 164, + 56, + 226, + 182, + 73, + 114, + 141, + 167, + 150, + 29, + 244, + 62, + 31, + 232, + 204, + 170, + 154, + 7, + 176, + 50, + 55, + 18, + 255, + 111, + 110, + 67, + 164, + 185, + 200, + 178, + 244, + 179, + 122, + 66, + 219, + 219, + 64, + 251, + 180, + 68, + 74, + 183, + 137, + 186, + 229, + 47, + 63, + 68, + 20, + 23, + 1, + 25, + 55, + 158, + 199, + 226, + 50, + 224, + 98, + 141, + 170, + 201, + 51, + 71, + 155, + 5, + 13, + 5, + 154, + 158, + 66, + 151, + 167, + 204, + 177, + 5, + 172, + 43, + 247, + 61, + 123, + 82, + 118, + 236, + 140, + 135, + 242, + 235, + 30, + 90, + 88, + 223, + 104, + 240, + 157, + 122, + 62, + 29, + 176, + 130, + 194, + 221, + 238, + 134, + 212, + 96, + 246, + 67, + 174, + 97, + 159, + 222, + 120, + 68, + 115, + 67, + 196, + 88, + 210, + 43, + 190, + 15, + 9, + 132, + 7, + 195, + 176, + 78, + 4, + 156, + 135, + 3, + 114, + 97, + 216, + 116, + 255, + 9, + 87, + 252, + 213, + 39, + 116, + 175, + 67, + 14, + 27, + 45, + 88, + 34, + 169, + 177, + 244, + 41, + 72, + 37, + 48, + 208, + 82, + 140, + 175, + 230, + 170, + 93, + 177, + 23, + 121, + 59, + 47, + 155, + 77, + 193, + 103, + 30, + 135, + 112, + 74, + 85, + 91, + 48, + 53, + 111, + 107, + 171, + 79, + 88, + 139, + 246, + 126, + 222, + 196, + 37, + 219, + 232, + 158, + 103, + 59, + 147, + 160, + 1, + 125, + 225, + 25, + 116, + 65, + 34, + 145, + 162, + 98, + 169, + 215, + 222, + 1, + 241, + 175, + 85, + 240, + 121, + 67, + 187, + 136, + 27, + 5, + 159, + 129, + 118, + 133, + 28, + 67, + 91, + 33, + 249, + 151, + 171, + 32, + 110, + 139, + 32, + 143, + 214, + 124, + 89, + 113, + 72, + 52, + 82, + 164, + 242, + 148, + 55, + 54, + 64, + 149, + 114, + 103, + 163, + 82, + 230, + 91, + 209, + 145, + 202, + 211, + 128, + 183, + 204, + 174, + 7, + 2, + 211, + 49, + 211, + 108, + 225, + 196, + 94, + 166, + 217, + 90, + 35, + 5, + 180, + 202, + 183, + 83, + 8, + 140, + 31, + 240, + 198, + 123, + 35, + 235, + 106, + 193, + 62, + 3, + 61, + 38, + 199, + 191, + 213, + 104, + 93, + 243, + 146, + 147, + 213, + 167, + 161, + 56, + 228, + 192, + 59, + 248, + 160, + 155, + 178, + 185, + 36, + 101, + 237, + 157, + 124, + 129, + 123, + 40, + 162, + 94, + 92, + 239, + 189, + 80, + 57, + 117, + 152, + 74, + 136, + 47, + 239, + 224, + 117, + 28, + 72, + 44, + 52, + 209, + 182, + 133, + 3, + 217, + 127, + 226, + 64, + 175, + 226, + 64, + 251, + 70, + 29, + 37, + 145, + 226, + 202, + 114, + 248, + 13, + 179, + 156, + 60, + 112, + 107, + 164, + 198, + 88, + 2, + 55, + 208, + 24, + 156, + 91, + 105, + 72, + 178, + 175, + 177, + 44, + 129, + 130, + 234, + 227, + 124, + 93, + 72, + 246, + 127, + 176, + 219, + 239, + 147, + 130, + 152, + 106, + 227, + 30, + 19, + 86, + 81, + 202, + 46, + 105, + 220, + 221, + 241, + 115, + 37, + 232, + 75, + 187, + 147, + 121, + 199, + 167, + 174, + 51, + 5, + 15, + 65, + 146, + 5, + 236, + 57, + 55, + 227, + 212, + 194, + 136, + 65, + 68, + 87, + 202, + 184, + 191, + 164, + 42, + 123, + 152, + 225, + 175, + 27, + 67, + 183, + 237, + 144, + 17, + 114, + 52, + 68, + 26, + 73, + 47, + 50, + 33, + 12, + 130, + 83, + 243, + 199, + 251, + 93, + 18, + 215, + 149, + 232, + 171, + 179, + 179, + 43, + 151, + 216, + 238, + 26, + 31, + 202, + 103, + 88, + 128, + 164, + 56, + 196, + 37, + 49, + 216, + 67, + 189, + 118, + 161, + 105, + 120, + 144, + 148, + 220, + 247, + 12, + 244, + 50, + 217, + 100, + 187, + 136, + 9, + 70, + 203, + 104, + 36, + 75, + 50, + 113, + 240, + 239, + 214, + 199, + 183, + 12, + 119, + 13, + 124, + 179, + 151, + 21, + 135, + 145, + 138, + 204, + 20, + 116, + 56, + 37, + 219, + 12, + 32, + 202, + 253, + 11, + 174, + 180, + 12, + 143, + 141, + 232, + 46, + 71, + 225, + 176, + 223, + 12, + 85, + 81, + 99, + 50, + 144, + 224, + 136, + 208, + 156, + 60, + 25, + 232, + 210, + 174, + 210, + 161, + 34, + 228, + 21, + 127, + 110, + 85, + 207, + 113, + 100, + 198, + 164, + 83, + 172, + 61, + 87, + 107, + 91, + 5, + 135, + 205, + 120, + 156, + 184, + 238, + 227, + 113, + 251, + 146, + 73, + 236, + 21, + 220, + 77, + 16, + 237, + 4, + 203, + 21, + 9, + 148, + 82, + 175, + 187, + 139, + 65, + 0, + 247, + 43, + 251, + 25, + 255, + 36, + 6, + 50, + 34, + 55, + 62, + 84, + 164, + 128, + 78, + 78, + 189, + 137, + 174, + 193, + 101, + 201, + 198, + 183, + 123, + 15, + 22, + 108, + 60, + 235, + 252, + 84, + 206, + 225, + 124, + 146, + 106, + 157, + 47, + 241, + 197, + 223, + 12, + 108, + 234, + 114, + 32, + 89, + 141, + 205, + 65, + 2, + 190, + 252, + 255, + 211, + 159, + 10, + 5, + 66, + 237, + 161, + 128, + 218, + 66, + 61, + 60, + 216, + 192, + 46, + 182, + 131, + 122, + 120, + 151, + 184, + 238, + 35, + 187, + 220, + 195, + 141, + 80, + 96, + 146, + 119, + 182, + 172, + 18, + 22, + 154, + 43, + 93, + 20, + 25, + 159, + 152, + 56, + 239, + 114, + 85, + 28, + 140, + 131, + 188, + 220, + 135, + 97, + 32, + 248, + 176, + 92, + 201, + 119, + 158, + 92, + 254, + 210, + 15, + 234, + 108, + 7, + 195, + 240, + 135, + 81, + 246, + 70, + 15, + 8, + 12, + 131, + 24, + 210, + 244, + 184, + 229, + 43, + 21, + 225, + 229, + 80, + 171, + 253, + 157, + 198, + 25, + 200, + 193, + 176, + 134, + 88, + 167, + 220, + 141, + 28, + 150, + 155, + 165, + 52, + 166, + 114, + 165, + 170, + 103, + 227, + 153, + 150, + 75, + 38, + 176, + 142, + 206, + 51, + 7, + 84, + 2, + 33, + 242, + 20, + 15, + 218, + 230, + 84, + 150, + 108, + 253, + 247, + 202, + 147, + 15, + 89, + 216, + 156, + 141, + 58, + 149, + 144, + 133, + 77, + 27, + 233, + 234, + 83, + 191, + 134, + 114, + 60, + 84, + 103, + 25, + 251, + 188, + 143, + 211, + 55, + 218, + 6, + 250, + 232, + 140, + 168, + 150, + 116, + 62, + 156, + 234, + 174, + 67, + 254, + 102, + 169, + 68, + 249, + 193, + 74, + 46, + 220, + 131, + 190, + 13, + 85, + 132, + 166, + 3, + 138, + 55, + 122, + 167, + 210, + 66, + 32, + 92, + 187, + 222, + 169, + 101, + 39, + 254, + 78, + 103, + 194, + 76, + 97, + 99, + 110, + 141, + 70, + 129, + 65, + 88, + 25, + 50, + 211, + 152, + 232, + 125, + 91, + 172, + 43, + 190, + 231, + 87, + 98, + 122, + 15, + 77, + 35, + 141, + 129, + 90, + 89, + 82, + 33, + 195, + 10, + 75, + 114, + 217, + 74, + 55, + 62, + 99, + 14, + 121, + 100, + 209, + 122, + 154, + 84, + 125, + 26, + 238, + 197, + 96, + 180, + 114, + 138, + 215, + 62, + 0, + 115, + 26, + 239, + 62, + 97, + 24, + 54, + 38, + 151, + 10, + 18, + 32, + 115, + 30, + 239, + 126, + 41, + 69, + 229, + 126, + 40, + 87, + 166, + 42, + 69, + 75, + 88, + 126, + 244, + 211, + 170, + 60, + 204, + 6, + 180, + 177, + 206, + 19, + 37, + 152, + 150, + 38, + 156, + 177, + 150, + 77, + 253, + 133, + 183, + 243, + 136, + 228, + 188, + 211, + 235, + 89, + 10, + 196, + 220, + 200, + 166, + 147, + 181, + 128, + 135, + 166, + 21, + 104, + 77, + 213, + 245, + 215, + 57, + 130, + 213, + 242, + 245, + 114, + 84, + 93, + 9, + 164, + 121, + 169, + 178, + 252, + 210, + 86, + 216, + 155, + 69, + 104, + 106, + 225, + 17, + 217, + 232, + 69, + 109, + 3, + 22, + 231, + 103, + 49, + 15, + 47, + 243, + 222, + 92, + 235, + 177, + 55, + 172, + 118, + 215, + 7, + 20, + 240, + 44, + 250, + 108, + 198, + 177, + 14, + 203, + 183, + 244, + 37, + 122, + 8, + 60, + 195, + 49, + 252, + 121, + 46, + 192, + 153, + 124, + 157, + 96, + 142, + 65, + 225, + 247, + 184, + 131, + 145, + 240, + 16, + 112, + 25, + 180, + 21, + 4, + 62, + 191, + 181, + 1, + 145, + 210, + 246, + 241, + 112, + 241, + 50, + 15, + 165, + 213, + 175, + 4, + 125, + 159, + 38, + 131, + 194, + 224, + 33, + 233, + 80, + 123, + 175, + 222, + 90, + 37, + 34, + 151, + 56, + 61, + 168, + 59, + 156, + 221, + 51, + 226, + 78, + 57, + 37, + 142, + 236, + 211, + 8, + 74, + 23, + 246, + 242, + 7, + 189, + 144, + 202, + 98, + 112, + 102, + 110, + 52, + 23, + 93, + 14, + 115, + 40, + 167, + 254, + 248, + 239, + 230, + 183, + 130, + 4, + 98, + 211, + 27, + 125, + 245, + 16, + 195, + 140, + 124, + 184, + 124, + 112, + 74, + 93, + 23, + 240, + 137, + 202, + 64, + 131, + 114, + 219, + 207, + 83, + 112, + 198, + 129, + 92, + 102, + 202, + 8, + 125, + 55, + 48, + 205, + 45, + 52, + 99, + 141, + 138, + 177, + 57, + 66, + 49, + 150, + 183, + 196, + 31, + 56, + 223, + 15, + 113, + 16, + 12, + 127, + 37, + 239, + 180, + 216, + 166, + 240, + 87, + 90, + 105, + 223, + 113, + 40, + 230, + 34, + 1, + 164, + 70, + 209, + 31, + 209, + 4, + 92, + 108, + 41, + 237, + 160, + 154, + 136, + 181, + 230, + 117, + 219, + 93, + 241, + 80, + 225, + 235, + 192, + 131, + 83, + 4, + 226, + 148, + 209, + 131, + 17, + 141, + 158, + 75, + 91, + 207, + 190, + 148, + 107, + 68, + 163, + 119, + 146, + 142, + 22, + 40, + 174, + 60, + 77, + 188, + 58, + 98, + 61, + 90, + 39, + 104, + 173, + 112, + 175, + 108, + 52, + 46, + 8, + 225, + 214, + 82, + 204, + 237, + 103, + 127, + 172, + 160, + 161, + 242, + 236, + 191, + 213, + 170, + 147, + 233, + 230, + 10, + 219, + 232, + 26, + 205, + 60, + 96, + 242, + 72, + 15, + 222, + 191, + 126, + 169, + 237, + 43, + 78, + 136, + 45, + 160, + 17, + 166, + 18, + 134, + 161, + 156, + 155, + 218, + 92, + 9, + 10, + 124, + 217, + 243, + 111, + 3, + 101, + 4, + 134, + 216, + 152, + 213, + 30, + 164, + 44, + 155, + 156, + 34, + 25, + 219, + 56, + 227, + 147, + 84, + 167, + 235, + 47, + 199, + 155, + 193, + 177, + 5, + 211, + 52, + 117, + 172, + 57, + 5, + 199, + 24, + 22, + 59, + 167, + 124, + 157, + 138, + 131, + 84, + 162, + 60, + 5, + 254, + 123, + 198, + 202, + 21, + 25, + 48, + 137, + 27, + 35, + 62, + 36, + 14, + 181, + 163, + 88, + 200, + 192, + 46, + 42, + 178, + 9, + 234, + 136, + 134, + 75, + 250, + 243, + 55, + 91, + 1, + 201, + 68, + 80, + 29, + 141, + 123, + 137, + 76, + 5, + 35, + 74, + 119, + 125, + 178, + 125, + 221, + 219, + 161, + 195, + 81, + 232, + 12, + 86, + 234, + 62, + 57, + 14, + 73, + 87, + 6, + 58, + 17, + 63, + 78, + 161, + 172, + 50, + 128, + 176, + 51, + 227, + 84, + 69, + 128, + 38, + 167, + 1, + 134, + 15, + 121, + 38, + 201, + 121, + 194, + 235, + 98, + 222, + 135, + 160, + 129, + 239, + 118, + 29, + 193, + 123, + 13, + 160, + 230, + 4, + 242, + 188, + 10, + 109, + 179, + 74, + 58, + 208, + 37, + 156, + 245, + 143, + 52, + 33, + 38, + 72, + 120, + 117, + 110, + 217, + 243, + 48, + 51, + 76, + 142, + 4, + 174, + 13, + 240, + 109, + 53, + 129, + 111, + 53, + 148, + 253, + 125, + 201, + 109, + 217, + 14, + 69, + 63, + 219, + 243, + 34, + 193, + 156, + 92, + 59, + 43, + 5, + 135, + 181, + 150, + 166, + 166, + 179, + 111, + 115, + 110, + 184, + 134, + 75, + 212, + 141, + 189, + 157, + 10, + 182, + 190, + 16, + 106, + 27, + 5, + 91, + 38, + 92, + 28, + 118, + 239, + 191, + 160, + 163, + 69, + 97, + 57, + 140, + 80, + 229, + 118, + 58, + 93, + 135, + 39, + 210, + 136, + 194, + 228, + 201, + 98, + 122, + 45, + 168, + 173, + 68, + 176, + 202, + 137, + 241, + 196, + 17, + 186, + 205, + 29, + 72, + 20, + 198, + 28, + 156, + 202, + 248, + 207, + 45, + 176, + 81, + 137, + 83, + 175, + 166, + 3, + 15, + 151, + 179, + 84, + 63, + 31, + 97, + 155, + 211, + 105, + 129, + 237, + 161, + 120, + 242, + 188, + 171, + 62, + 77, + 154, + 191, + 253, + 141, + 72, + 118, + 122, + 227, + 194, + 119, + 35, + 65, + 57, + 55, + 170, + 76, + 110, + 36, + 40, + 73, + 85, + 222, + 127, + 66, + 160, + 54, + 178, + 222, + 116, + 180, + 90, + 27, + 113, + 216, + 35, + 231, + 235, + 94, + 109, + 127, + 161, + 229, + 14, + 249, + 173, + 57, + 4, + 135, + 72, + 231, + 36, + 112, + 177, + 78, + 123, + 242, + 105, + 145, + 197, + 158, + 18, + 71, + 234, + 202, + 98, + 21, + 9, + 90, + 117, + 204, + 82, + 85, + 142, + 62, + 97, + 5, + 37, + 141, + 106, + 213, + 150, + 87, + 64, + 193, + 217, + 8, + 229, + 96, + 107, + 68, + 108, + 66, + 223, + 193, + 97, + 20, + 13, + 156, + 166, + 143, + 95, + 123, + 209, + 15, + 194, + 146, + 178, + 31, + 168, + 6, + 238, + 174, + 30, + 167, + 116, + 107, + 111, + 77, + 55, + 12, + 225, + 152, + 97, + 158, + 79, + 118, + 138, + 138, + 8, + 216, + 156, + 169, + 23, + 94, + 233, + 238, + 80, + 181, + 93, + 167, + 76, + 159, + 1, + 110, + 214, + 120, + 30, + 113, + 67, + 63, + 56, + 186, + 145, + 215, + 132, + 104, + 147, + 153, + 238, + 231, + 92, + 37, + 117, + 145, + 86, + 41, + 161, + 7, + 169, + 176, + 113, + 167, + 147, + 201, + 128, + 56, + 243, + 108, + 11, + 63, + 194, + 240, + 182, + 69, + 101, + 209, + 252, + 229, + 54, + 92, + 231, + 41, + 110, + 46, + 105, + 206, + 66, + 57, + 197, + 235, + 14, + 126, + 151, + 137, + 36, + 199, + 146, + 49, + 236, + 140, + 229, + 86, + 241, + 200, + 29, + 213, + 45, + 185, + 150, + 108, + 70, + 217, + 157, + 58, + 7, + 11, + 176, + 173, + 241, + 77, + 97, + 140, + 119, + 84, + 18, + 109, + 227, + 239, + 49, + 222, + 37, + 76, + 45, + 247, + 112, + 15, + 35, + 88, + 20, + 160, + 236, + 6, + 238, + 129, + 163, + 203, + 143, + 230, + 3, + 96, + 161, + 54, + 38, + 54, + 232, + 164, + 149, + 174, + 154, + 143, + 235, + 121, + 152, + 84, + 62, + 175, + 206, + 207, + 204, + 168, + 49, + 16, + 245, + 206, + 165, + 219, + 20, + 150, + 121, + 92, + 229, + 227, + 58, + 205, + 144, + 15, + 232, + 160, + 198, + 232, + 144, + 144, + 15, + 16, + 81, + 238, + 53, + 247, + 62, + 97, + 116, + 136, + 18, + 126, + 81, + 214, + 169, + 58, + 138, + 4, + 102, + 18, + 77, + 177, + 167, + 103, + 198, + 222, + 47, + 215, + 233, + 15, + 86, + 150, + 162, + 33, + 208, + 26, + 140, + 141, + 42, + 58, + 187, + 249, + 176, + 230, + 137, + 26, + 79, + 215, + 158, + 109, + 66, + 78, + 36, + 255, + 118, + 242, + 67, + 112, + 70, + 242, + 175, + 164, + 47, + 228, + 13, + 248, + 200, + 139, + 14, + 229, + 108, + 69, + 69, + 13, + 37, + 74, + 171, + 107, + 207, + 2, + 164, + 17, + 177, + 4, + 31, + 183, + 162, + 222, + 60, + 115, + 56, + 239, + 241, + 78, + 157, + 138, + 227, + 168, + 77, + 83, + 27, + 199, + 237, + 60, + 173, + 247, + 82, + 46, + 69, + 94, + 214, + 164, + 217, + 184, + 95, + 134, + 40, + 108, + 141, + 145, + 22, + 208, + 167, + 113, + 47, + 187, + 91, + 54, + 34, + 40, + 99, + 167, + 133, + 49, + 42, + 216, + 96, + 252, + 67, + 114, + 107, + 120, + 222, + 170, + 255, + 198, + 147, + 27, + 161, + 168, + 254, + 243, + 180, + 177, + 2, + 85, + 59, + 84, + 87, + 105, + 196, + 8, + 74, + 99, + 132, + 115, + 212, + 185, + 83, + 109, + 43, + 194, + 249, + 201, + 78, + 185, + 173, + 239, + 82, + 48, + 147, + 78, + 102, + 87, + 236, + 15, + 108, + 105, + 76, + 222, + 19, + 147, + 140, + 87, + 248, + 20, + 195, + 145, + 231, + 176, + 55, + 163, + 66, + 18, + 124, + 244, + 52, + 239, + 251, + 20, + 21, + 154, + 64, + 57, + 249, + 134, + 189, + 0, + 51, + 155, + 205, + 204, + 110, + 102, + 66, + 99, + 54, + 186, + 153, + 137, + 56, + 232, + 204, + 233, + 106, + 175, + 184, + 186, + 204, + 93, + 100, + 245, + 18, + 234, + 82, + 186, + 252, + 38, + 158, + 93, + 201, + 14, + 116, + 134, + 81, + 12, + 3, + 146, + 78, + 186, + 183, + 226, + 0, + 166, + 145, + 70, + 89, + 239, + 59, + 62, + 149, + 251, + 234, + 3, + 219, + 234, + 1, + 190, + 56, + 115, + 65, + 18, + 12, + 83, + 130, + 78, + 66, + 142, + 104, + 120, + 18, + 132, + 63, + 237, + 235, + 86, + 11, + 197, + 234, + 176, + 17, + 57, + 246, + 210, + 52, + 73, + 79, + 67, + 187, + 98, + 118, + 113, + 59, + 132, + 19, + 17, + 183, + 79, + 171, + 254, + 18, + 219, + 233, + 205, + 197, + 84, + 152, + 188, + 48, + 196, + 8, + 191, + 187, + 181, + 195, + 77, + 32, + 226, + 219, + 112, + 76, + 127, + 113, + 189, + 230, + 232, + 110, + 241, + 160, + 148, + 220, + 198, + 83, + 203, + 141, + 135, + 161, + 60, + 226, + 45, + 199, + 252, + 242, + 141, + 31, + 109, + 69, + 70, + 224, + 56, + 37, + 88, + 92, + 229, + 141, + 103, + 200, + 216, + 162, + 224, + 64, + 168, + 110, + 33, + 99, + 216, + 133, + 140, + 149, + 68, + 143, + 242, + 229, + 236, + 99, + 105, + 103, + 75, + 118, + 88, + 111, + 235, + 90, + 141, + 204, + 208, + 219, + 156, + 192, + 149, + 166, + 70, + 215, + 230, + 68, + 31, + 29, + 189, + 28, + 1, + 90, + 228, + 212, + 184, + 100, + 251, + 12, + 106, + 20, + 230, + 120, + 78, + 213, + 240, + 55, + 134, + 251, + 156, + 141, + 7, + 28, + 19, + 152, + 108, + 164, + 185, + 95, + 167, + 200, + 22, + 1, + 47, + 79, + 193, + 133, + 135, + 211, + 150, + 56, + 222, + 189, + 138, + 124, + 236, + 222, + 3, + 11, + 240, + 36, + 78, + 71, + 229, + 105, + 202, + 87, + 88, + 29, + 74, + 154, + 24, + 242, + 138, + 141, + 213, + 118, + 172, + 83, + 59, + 243, + 103, + 2, + 59, + 117, + 198, + 196, + 79, + 2, + 17, + 201, + 99, + 226, + 79, + 41, + 110, + 223, + 252, + 61, + 4, + 228, + 53, + 53, + 119, + 49, + 58, + 135, + 188, + 22, + 81, + 174, + 4, + 41, + 23, + 250, + 51, + 221, + 22, + 15, + 208, + 97, + 157, + 17, + 92, + 44, + 160, + 158, + 219, + 188, + 157, + 29, + 88, + 146, + 16, + 248, + 173, + 44, + 111, + 187, + 199, + 8, + 30, + 27, + 57, + 41, + 189, + 158, + 112, + 213, + 81, + 116, + 105, + 136, + 92, + 253, + 224, + 208, + 63, + 192, + 227, + 184, + 162, + 81, + 36, + 28, + 122, + 56, + 90, + 51, + 5, + 53, + 107, + 179, + 159, + 239, + 55, + 123, + 132, + 146, + 56, + 116, + 152, + 55, + 54, + 193, + 11, + 149, + 254, + 41, + 88, + 71, + 224, + 110, + 41, + 154, + 94, + 57, + 87, + 219, + 169, + 9, + 55, + 219, + 232, + 180, + 44, + 32, + 7, + 225, + 124, + 72, + 156, + 170, + 218, + 20, + 116, + 114, + 227, + 114, + 192, + 188, + 192, + 84, + 115, + 163, + 159, + 109, + 99, + 246, + 86, + 43, + 21, + 182, + 24, + 75, + 148, + 50, + 11, + 79, + 73, + 236, + 49, + 150, + 114, + 87, + 138, + 175, + 113, + 172, + 9, + 69, + 233, + 9, + 33, + 110, + 187, + 243, + 155, + 113, + 162, + 216, + 40, + 76, + 148, + 17, + 100, + 0, + 145, + 62, + 37, + 110, + 184, + 148, + 175, + 149, + 206, + 185, + 83, + 20, + 16, + 97, + 88, + 174, + 24, + 173, + 209, + 190, + 106, + 148, + 181, + 10, + 105, + 68, + 8, + 166, + 172, + 244, + 132, + 227, + 20, + 29, + 52, + 88, + 148, + 71, + 183, + 28, + 126, + 143, + 136, + 205, + 92, + 220, + 233, + 239, + 165, + 26, + 185, + 144, + 233, + 21, + 63, + 120, + 218, + 203, + 20, + 64, + 164, + 198, + 103, + 157, + 97, + 178, + 18, + 217, + 77, + 201, + 247, + 240, + 62, + 27, + 194, + 67, + 227, + 169, + 38, + 222, + 108, + 4, + 168, + 13, + 202, + 35, + 102, + 15, + 161, + 30, + 29, + 128, + 3, + 83, + 154, + 202, + 3, + 113, + 246, + 158, + 6, + 123, + 54, + 192, + 85, + 23, + 140, + 206, + 188, + 145, + 140, + 5, + 246, + 71, + 245, + 102, + 224, + 21, + 174, + 66, + 183, + 45, + 184, + 38, + 129, + 109, + 13, + 120, + 142, + 67, + 28, + 141, + 142, + 231, + 133, + 162, + 175, + 209, + 108, + 213, + 78, + 153, + 74, + 115, + 174, + 215, + 25, + 111, + 91, + 232, + 203, + 128, + 97, + 99, + 70, + 247, + 241, + 226, + 139, + 247, + 222, + 250, + 28, + 96, + 162, + 168, + 187, + 100, + 61, + 33, + 4, + 188, + 29, + 54, + 236, + 64, + 146, + 212, + 101, + 17, + 246, + 99, + 245, + 18, + 182, + 71, + 183, + 31, + 219, + 170, + 57, + 55, + 210, + 89, + 201, + 194, + 107, + 35, + 79, + 112, + 173, + 225, + 212, + 67, + 61, + 189, + 221, + 108, + 121, + 59, + 29, + 191, + 6, + 200, + 156, + 121, + 84, + 92, + 125, + 152, + 209, + 250, + 73, + 98, + 202, + 240, + 18, + 236, + 107, + 216, + 61, + 182, + 108, + 228, + 156, + 177, + 85, + 58, + 206, + 173, + 163, + 89, + 24, + 49, + 240, + 210, + 73, + 50, + 88, + 3, + 100, + 152, + 228, + 54, + 245, + 7, + 7, + 79, + 229, + 62, + 83, + 50, + 239, + 182, + 227, + 9, + 158, + 173, + 108, + 254, + 98, + 160, + 148, + 207, + 113, + 152, + 206, + 23, + 105, + 78, + 106, + 214, + 24, + 156, + 27, + 74, + 69, + 162, + 60, + 32, + 170, + 22, + 146, + 213, + 230, + 144, + 213, + 134, + 118, + 42, + 44, + 156, + 224, + 76, + 169, + 169, + 192, + 225, + 50, + 54, + 98, + 101, + 148, + 156, + 97, + 214, + 158, + 32, + 184, + 141, + 18, + 206, + 144, + 51, + 167, + 146, + 129, + 83, + 76, + 47, + 14, + 244, + 52, + 37, + 54, + 245, + 99, + 196, + 47, + 25, + 1, + 135, + 152, + 158, + 133, + 121, + 88, + 39, + 175, + 112, + 142, + 112, + 15, + 75, + 75, + 221, + 67, + 195, + 141, + 151, + 157, + 200, + 169, + 103, + 167, + 223, + 156, + 94, + 26, + 165, + 119, + 136, + 193, + 75, + 79, + 45, + 229, + 75, + 188, + 165, + 55, + 173, + 139, + 41, + 248, + 71, + 121, + 182, + 214, + 41, + 98, + 70, + 192, + 228, + 41, + 71, + 234, + 154, + 34, + 248, + 1, + 132, + 190, + 226, + 254, + 252, + 216, + 127, + 22, + 137, + 96, + 167, + 32, + 155, + 192, + 106, + 85, + 27, + 5, + 108, + 183, + 10, + 181, + 209, + 123, + 125, + 244, + 169, + 64, + 62, + 26, + 23, + 235, + 32, + 237, + 177, + 208, + 27, + 252, + 58, + 255, + 56, + 90, + 230, + 232, + 71, + 22, + 105, + 99, + 202, + 153, + 144, + 194, + 90, + 158, + 94, + 177, + 19, + 97, + 105, + 166, + 75, + 139, + 174, + 72, + 0, + 234, + 140, + 99, + 180, + 32, + 96, + 107, + 170, + 129, + 45, + 191, + 122, + 201, + 237, + 60, + 123, + 168, + 41, + 64, + 99, + 52, + 22, + 247, + 129, + 159, + 145, + 211, + 216, + 33, + 225, + 246, + 206, + 231, + 208, + 133, + 46, + 206, + 107, + 135, + 211, + 46, + 204, + 97, + 12, + 79, + 149, + 166, + 251, + 1, + 27, + 178, + 121, + 182, + 118, + 119, + 37, + 26, + 247, + 100, + 136, + 50, + 193, + 210, + 115, + 198, + 222, + 169, + 71, + 189, + 194, + 12, + 138, + 84, + 31, + 82, + 184, + 32, + 10, + 135, + 84, + 85, + 247, + 204, + 138, + 126, + 91, + 49, + 58, + 193, + 22, + 5, + 115, + 238, + 219, + 97, + 133, + 117, + 157, + 253, + 164, + 135, + 219, + 46, + 138, + 65, + 148, + 249, + 255, + 229, + 242, + 189, + 25, + 13, + 11, + 197, + 36, + 233, + 77, + 132, + 247, + 2, + 13, + 43, + 93, + 177, + 75, + 183, + 146, + 43, + 128, + 246, + 219, + 173, + 119, + 212, + 97, + 138, + 220, + 120, + 100, + 123, + 184, + 154, + 142, + 48, + 157, + 198, + 61, + 92, + 141, + 187, + 112, + 181, + 109, + 225, + 221, + 235, + 160, + 241, + 70, + 208, + 216, + 230, + 133, + 240, + 108, + 145, + 32, + 64, + 92, + 179, + 83, + 134, + 110, + 128, + 11, + 103, + 138, + 219, + 93, + 43, + 12, + 223, + 238, + 229, + 238, + 20, + 127, + 244, + 70, + 51, + 80, + 183, + 72, + 42, + 246, + 156, + 176, + 253, + 145, + 6, + 65, + 167, + 169, + 136, + 11, + 144, + 165, + 147, + 113, + 132, + 113, + 157, + 97, + 57, + 13, + 162, + 124, + 172, + 114, + 5, + 62, + 228, + 240, + 57, + 88, + 208, + 95, + 59, + 237, + 189, + 16, + 156, + 49, + 15, + 231, + 220, + 223, + 64, + 78, + 113, + 56, + 2, + 28, + 214, + 170, + 190, + 53, + 64, + 159, + 225, + 230, + 154, + 76, + 211, + 210, + 217, + 176, + 70, + 121, + 203, + 9, + 124, + 22, + 3, + 185, + 44, + 116, + 34, + 105, + 196, + 230, + 41, + 14, + 55, + 128, + 23, + 229, + 12, + 152, + 39, + 159, + 113, + 155, + 56, + 104, + 96, + 75, + 86, + 175, + 95, + 190, + 155, + 165, + 129, + 102, + 251, + 232, + 113, + 227, + 234, + 115, + 26, + 172, + 72, + 160, + 130, + 212, + 152, + 65, + 168, + 6, + 134, + 156, + 170, + 71, + 15, + 109, + 234, + 109, + 128, + 77, + 197, + 206, + 3, + 45, + 1, + 87, + 207, + 21, + 227, + 23, + 188, + 132, + 46, + 218, + 116, + 85, + 249, + 239, + 205, + 233, + 137, + 67, + 128, + 24, + 27, + 29, + 230, + 130, + 83, + 200, + 131, + 159, + 239, + 31, + 87, + 94, + 79, + 47, + 121, + 136, + 101, + 192, + 152, + 154, + 102, + 148, + 156, + 170, + 117, + 5, + 80, + 83, + 196, + 244, + 144, + 50, + 168, + 4, + 60, + 58, + 157, + 96, + 213, + 128, + 231, + 72, + 103, + 84, + 117, + 110, + 177, + 255, + 153, + 74, + 146, + 141, + 181, + 146, + 191, + 6, + 131, + 201, + 77, + 134, + 213, + 70, + 198, + 115, + 112, + 164, + 148, + 12, + 221, + 28, + 102, + 41, + 65, + 67, + 231, + 220, + 71, + 228, + 20, + 199, + 147, + 64, + 69, + 210, + 215, + 177, + 175, + 57, + 189, + 132, + 163, + 220, + 1, + 216, + 245, + 146, + 214, + 10, + 38, + 137, + 33, + 136, + 207, + 78, + 118, + 163, + 105, + 184, + 205, + 91, + 250, + 205, + 95, + 31, + 175, + 27, + 172, + 199, + 51, + 52, + 112, + 197, + 91, + 163, + 20, + 144, + 60, + 13, + 119, + 140, + 103, + 145, + 180, + 226, + 184, + 247, + 211, + 202, + 132, + 219, + 175, + 195, + 132, + 15, + 131, + 170, + 156, + 42, + 197, + 251, + 60, + 235, + 118, + 52, + 206, + 114, + 84, + 59, + 117, + 204, + 108, + 32, + 228, + 105, + 100, + 84, + 153, + 16, + 62, + 223, + 5, + 247, + 143, + 36, + 201, + 17, + 158, + 38, + 237, + 200, + 153, + 136, + 255, + 42, + 206, + 100, + 174, + 26, + 249, + 121, + 216, + 233, + 237, + 180, + 20, + 103, + 155, + 128, + 130, + 177, + 97, + 48, + 128, + 127, + 255, + 52, + 167, + 83, + 4, + 124, + 220, + 124, + 20, + 127, + 127, + 189, + 102, + 46, + 140, + 33, + 44, + 70, + 10, + 230, + 119, + 125, + 231, + 25, + 114, + 230, + 11, + 104, + 197, + 28, + 222, + 65, + 206, + 164, + 9, + 57, + 123, + 60, + 17, + 122, + 104, + 34, + 75, + 38, + 230, + 118, + 206, + 101, + 85, + 39, + 156, + 250, + 98, + 128, + 198, + 173, + 54, + 242, + 175, + 193, + 80, + 60, + 109, + 178, + 159, + 218, + 29, + 236, + 142, + 146, + 91, + 188, + 54, + 82, + 95, + 9, + 232, + 65, + 183, + 177, + 145, + 30, + 156, + 213, + 61, + 228, + 182, + 231, + 255, + 49, + 45, + 228, + 64, + 183, + 186, + 44, + 247, + 3, + 58, + 133, + 188, + 28, + 6, + 43, + 166, + 25, + 242, + 31, + 174, + 136, + 68, + 177, + 155, + 233, + 102, + 35, + 14, + 129, + 65, + 107, + 20, + 28, + 105, + 227, + 82, + 126, + 224, + 122, + 246, + 250, + 246, + 32, + 58, + 234, + 229, + 113, + 90, + 44, + 132, + 141, + 218, + 80, + 92, + 3, + 184, + 224, + 197, + 61, + 123, + 15, + 7, + 4, + 50, + 157, + 185, + 254, + 254, + 20, + 10, + 51, + 48, + 195, + 52, + 3, + 161, + 244, + 74, + 61, + 86, + 178, + 111, + 83, + 210, + 130, + 100, + 208, + 249, + 180, + 209, + 188, + 155, + 231, + 159, + 234, + 154, + 204, + 52, + 241, + 231, + 72, + 74, + 214, + 93, + 219, + 150, + 222, + 228, + 199, + 57, + 97, + 113, + 167, + 85, + 15, + 45, + 134, + 129, + 185, + 85, + 79, + 115, + 139, + 203, + 227, + 150, + 77, + 223, + 40, + 119, + 28, + 183, + 104, + 250, + 244, + 252, + 231, + 18, + 167, + 48, + 51, + 180, + 123, + 249, + 5, + 171, + 47, + 94, + 9, + 86, + 159, + 48, + 97, + 182, + 17, + 154, + 72, + 40, + 237, + 12, + 121, + 8, + 31, + 54, + 178, + 149, + 166, + 77, + 149, + 55, + 127, + 86, + 211, + 114, + 196, + 139, + 44, + 106, + 212, + 186, + 177, + 79, + 80, + 147, + 244, + 200, + 96, + 155, + 90, + 121, + 182, + 118, + 241, + 90, + 224, + 226, + 157, + 102, + 237, + 131, + 97, + 226, + 74, + 143, + 103, + 175, + 44, + 56, + 143, + 15, + 117, + 100, + 253, + 42, + 60, + 192, + 135, + 165, + 74, + 134, + 83, + 225, + 82, + 164, + 183, + 204, + 92, + 27, + 113, + 229, + 188, + 253, + 126, + 78, + 85, + 47, + 161, + 160, + 97, + 125, + 109, + 12, + 202, + 102, + 187, + 141, + 125, + 231, + 28, + 11, + 76, + 35, + 165, + 88, + 220, + 195, + 85, + 37, + 101, + 59, + 210, + 172, + 84, + 205, + 223, + 23, + 175, + 179, + 218, + 124, + 118, + 237, + 47, + 15, + 99, + 237, + 200, + 96, + 160, + 52, + 186, + 40, + 40, + 7, + 68, + 111, + 57, + 93, + 247, + 158, + 53, + 63, + 131, + 51, + 151, + 78, + 149, + 6, + 194, + 149, + 128, + 226, + 76, + 169, + 254, + 167, + 140, + 171, + 9, + 186, + 114, + 134, + 107, + 29, + 71, + 249, + 176, + 84, + 223, + 27, + 191, + 237, + 194, + 115, + 135, + 102, + 255, + 203, + 96, + 78, + 105, + 180, + 94, + 250, + 21, + 128, + 98, + 124, + 103, + 95, + 112, + 98, + 48, + 30, + 28, + 124, + 224, + 223, + 221, + 192, + 171, + 192, + 139, + 198, + 81, + 214, + 156, + 230, + 91, + 192, + 139, + 254, + 167, + 20, + 240, + 68, + 10, + 216, + 230, + 152, + 126, + 54, + 67, + 9, + 150, + 208, + 108, + 116, + 66, + 209, + 72, + 247, + 147, + 34, + 159, + 165, + 84, + 163, + 109, + 131, + 13, + 245, + 165, + 142, + 38, + 253, + 114, + 112, + 31, + 173, + 126, + 92, + 3, + 33, + 252, + 38, + 159, + 55, + 32, + 111, + 239, + 177, + 195, + 255, + 127, + 152, + 230, + 110, + 238, + 231, + 254, + 255, + 200, + 241, + 135, + 228, + 138, + 95, + 170, + 75, + 13, + 94, + 163, + 205, + 123, + 79, + 128, + 51, + 120, + 35, + 12, + 104, + 144, + 70, + 163, + 217, + 8, + 50, + 130, + 76, + 25, + 148, + 146, + 21, + 202, + 76, + 198, + 106, + 245, + 125, + 22, + 235, + 249, + 242, + 156, + 167, + 124, + 67, + 103, + 223, + 55, + 76, + 155, + 44, + 61, + 185, + 59, + 85, + 49, + 42, + 48, + 207, + 212, + 190, + 130, + 190, + 171, + 196, + 138, + 135, + 131, + 115, + 69, + 175, + 186, + 58, + 191, + 238, + 154, + 176, + 44, + 215, + 187, + 189, + 23, + 165, + 45, + 220, + 213, + 152, + 181, + 211, + 72, + 139, + 56, + 18, + 43, + 211, + 238, + 171, + 251, + 155, + 132, + 204, + 113, + 233, + 205, + 142, + 160, + 13, + 166, + 10, + 44, + 121, + 164, + 118, + 50, + 151, + 150, + 253, + 107, + 39, + 177, + 149, + 144, + 227, + 48, + 136, + 192, + 193, + 167, + 181, + 130, + 78, + 8, + 83, + 103, + 158, + 67, + 91, + 29, + 153, + 55, + 59, + 55, + 161, + 133, + 247, + 109, + 227, + 192, + 100, + 26, + 192, + 147, + 211, + 222, + 228, + 163, + 153, + 77, + 193, + 255, + 54, + 13, + 159, + 142, + 70, + 222, + 16, + 177, + 167, + 78, + 250, + 37, + 228, + 89, + 193, + 51, + 15, + 114, + 103, + 25, + 111, + 182, + 173, + 11, + 215, + 96, + 183, + 198, + 20, + 24, + 94, + 6, + 81, + 172, + 241, + 86, + 8, + 253, + 38, + 158, + 56, + 206, + 8, + 48, + 52, + 64, + 87, + 99, + 51, + 26, + 180, + 33, + 51, + 203, + 15, + 187, + 74, + 225, + 235, + 17, + 58, + 40, + 140, + 176, + 86, + 92, + 190, + 15, + 115, + 50, + 24, + 102, + 23, + 188, + 252, + 239, + 157, + 176, + 14, + 137, + 6, + 18, + 182, + 150, + 141, + 220, + 101, + 209, + 9, + 211, + 57, + 53, + 243, + 220, + 70, + 1, + 159, + 229, + 19, + 108, + 179, + 32, + 110, + 60, + 171, + 198, + 83, + 85, + 89, + 55, + 158, + 85, + 90, + 139, + 159, + 134, + 209, + 52, + 205, + 41, + 165, + 27, + 207, + 42, + 245, + 224, + 59, + 236, + 246, + 232, + 198, + 179, + 74, + 75, + 177, + 175, + 221, + 192, + 203, + 5, + 228, + 90, + 238, + 65, + 98, + 130, + 186, + 123, + 115, + 17, + 180, + 58, + 172, + 209, + 52, + 79, + 229, + 6, + 253, + 166, + 85, + 206, + 43, + 145, + 26, + 247, + 101, + 206, + 165, + 8, + 207, + 109, + 109, + 103, + 249, + 226, + 138, + 241, + 115, + 136, + 16, + 174, + 32, + 162, + 118, + 186, + 183, + 37, + 170, + 198, + 3, + 245, + 198, + 217, + 201, + 0, + 45, + 96, + 92, + 22, + 161, + 233, + 91, + 138, + 62, + 229, + 8, + 42, + 29, + 178, + 7, + 143, + 89, + 23, + 60, + 246, + 103, + 136, + 9, + 109, + 59, + 62, + 138, + 88, + 92, + 126, + 78, + 83, + 190, + 198, + 199, + 217, + 166, + 246, + 156, + 117, + 235, + 206, + 192, + 162, + 214, + 104, + 105, + 238, + 1, + 144, + 184, + 241, + 86, + 104, + 117, + 173, + 134, + 185, + 228, + 74, + 115, + 37, + 165, + 228, + 80, + 188, + 135, + 113, + 179, + 134, + 141, + 25, + 156, + 72, + 12, + 83, + 38, + 230, + 33, + 156, + 53, + 75, + 162, + 156, + 75, + 151, + 232, + 19, + 13, + 58, + 70, + 101, + 88, + 147, + 173, + 81, + 191, + 138, + 58, + 97, + 168, + 90, + 218, + 131, + 126, + 131, + 87, + 177, + 205, + 101, + 10, + 19, + 182, + 213, + 137, + 84, + 134, + 113, + 234, + 194, + 84, + 218, + 122, + 38, + 70, + 185, + 169, + 247, + 132, + 26, + 169, + 136, + 161, + 222, + 19, + 204, + 237, + 148, + 106, + 79, + 172, + 237, + 112, + 212, + 103, + 11, + 250, + 70, + 192, + 199, + 33, + 42, + 22, + 9, + 151, + 110, + 57, + 106, + 124, + 158, + 112, + 41, + 51, + 101, + 170, + 243, + 151, + 23, + 52, + 65, + 104, + 17, + 173, + 130, + 177, + 247, + 146, + 47, + 177, + 123, + 11, + 238, + 64, + 222, + 233, + 189, + 76, + 51, + 2, + 185, + 112, + 183, + 140, + 220, + 150, + 33, + 29, + 238, + 227, + 17, + 144, + 130, + 163, + 209, + 219, + 152, + 3, + 147, + 154, + 148, + 182, + 222, + 221, + 92, + 44, + 154, + 96, + 163, + 83, + 43, + 17, + 78, + 90, + 230, + 158, + 158, + 227, + 60, + 201, + 88, + 221, + 86, + 213, + 77, + 88, + 190, + 58, + 83, + 53, + 149, + 97, + 40, + 230, + 6, + 50, + 219, + 225, + 12, + 79, + 218, + 149, + 109, + 194, + 83, + 36, + 158, + 116, + 198, + 192, + 178, + 135, + 212, + 172, + 136, + 129, + 253, + 48, + 251, + 171, + 67, + 248, + 11, + 9, + 20, + 185, + 49, + 8, + 75, + 208, + 64, + 103, + 110, + 156, + 247, + 135, + 205, + 10, + 142, + 12, + 203, + 53, + 86, + 163, + 212, + 90, + 20, + 97, + 77, + 252, + 166, + 206, + 134, + 103, + 125, + 131, + 76, + 6, + 55, + 106, + 60, + 230, + 147, + 233, + 48, + 89, + 116, + 109, + 153, + 149, + 62, + 196, + 97, + 223, + 31, + 94, + 150, + 56, + 70, + 171, + 24, + 48, + 200, + 85, + 139, + 114, + 167, + 131, + 115, + 114, + 213, + 90, + 185, + 181, + 254, + 182, + 43, + 214, + 33, + 99, + 44, + 14, + 42, + 220, + 91, + 221, + 172, + 34, + 220, + 116, + 229, + 75, + 251, + 217, + 64, + 222, + 102, + 122, + 172, + 224, + 181, + 68, + 200, + 226, + 183, + 67, + 131, + 234, + 202, + 85, + 182, + 117, + 119, + 219, + 148, + 154, + 210, + 70, + 235, + 140, + 137, + 74, + 192, + 166, + 254, + 186, + 141, + 86, + 134, + 55, + 153, + 129, + 58, + 209, + 30, + 222, + 228, + 127, + 62, + 188, + 169, + 11, + 128, + 17, + 129, + 73, + 174, + 157, + 152, + 254, + 132, + 185, + 114, + 15, + 157, + 114, + 29, + 125, + 128, + 191, + 31, + 56, + 62, + 37, + 134, + 240, + 132, + 102, + 178, + 139, + 26, + 81, + 8, + 105, + 59, + 221, + 145, + 111, + 62, + 195, + 148, + 243, + 216, + 78, + 229, + 113, + 187, + 68, + 45, + 3, + 89, + 166, + 141, + 5, + 1, + 142, + 17, + 18, + 70, + 201, + 117, + 130, + 219, + 118, + 116, + 251, + 254, + 233, + 135, + 208, + 81, + 176, + 166, + 84, + 86, + 163, + 43, + 68, + 176, + 166, + 52, + 4, + 20, + 41, + 148, + 178, + 15, + 137, + 245, + 14, + 103, + 140, + 238, + 104, + 98, + 231, + 120, + 14, + 248, + 109, + 132, + 179, + 225, + 250, + 192, + 17, + 141, + 206, + 161, + 197, + 111, + 236, + 250, + 48, + 240, + 226, + 149, + 234, + 38, + 251, + 199, + 243, + 1, + 18, + 198, + 40, + 163, + 209, + 59, + 105, + 68, + 150, + 170, + 166, + 104, + 242, + 123, + 241, + 172, + 105, + 194, + 192, + 28, + 159, + 63, + 205, + 191, + 140, + 184, + 242, + 244, + 224, + 163, + 78, + 110, + 40, + 31, + 234, + 140, + 29, + 165, + 4, + 98, + 212, + 153, + 72, + 170, + 6, + 202, + 69, + 132, + 69, + 47, + 12, + 68, + 145, + 202, + 167, + 49, + 107, + 219, + 110, + 222, + 9, + 38, + 173, + 84, + 117, + 122, + 128, + 217, + 149, + 130, + 160, + 179, + 111, + 21, + 113, + 125, + 139, + 27, + 83, + 146, + 57, + 204, + 140, + 77, + 199, + 30, + 51, + 136, + 158, + 52, + 83, + 195, + 81, + 34, + 158, + 254, + 109, + 40, + 243, + 45, + 3, + 147, + 177, + 145, + 81, + 122, + 203, + 192, + 28, + 156, + 18, + 35, + 216, + 239, + 50, + 161, + 249, + 158, + 173, + 240, + 132, + 189, + 120, + 192, + 101, + 51, + 157, + 41, + 72, + 122, + 206, + 101, + 115, + 30, + 57, + 236, + 202, + 175, + 75, + 7, + 95, + 102, + 166, + 149, + 64, + 217, + 174, + 230, + 234, + 16, + 149, + 94, + 4, + 106, + 139, + 123, + 201, + 111, + 38, + 152, + 170, + 108, + 155, + 177, + 206, + 240, + 219, + 34, + 234, + 204, + 119, + 136, + 172, + 74, + 90, + 121, + 190, + 67, + 5, + 93, + 214, + 26, + 216, + 51, + 117, + 226, + 1, + 150, + 135, + 58, + 27, + 233, + 139, + 129, + 229, + 17, + 143, + 84, + 107, + 210, + 109, + 99, + 102, + 28, + 38, + 216, + 212, + 216, + 83, + 154, + 223, + 92, + 176, + 119, + 204, + 221, + 159, + 100, + 91, + 190, + 244, + 145, + 249, + 241, + 140, + 193, + 38, + 32, + 67, + 26, + 11, + 109, + 89, + 183, + 115, + 193, + 244, + 229, + 221, + 75, + 37, + 214, + 93, + 213, + 114, + 79, + 108, + 208, + 176, + 170, + 74, + 29, + 151, + 46, + 56, + 21, + 60, + 236, + 193, + 247, + 176, + 229, + 79, + 103, + 20, + 176, + 16, + 251, + 91, + 227, + 233, + 152, + 74, + 168, + 253, + 103, + 224, + 66, + 151, + 233, + 145, + 229, + 78, + 123, + 52, + 51, + 53, + 26, + 251, + 213, + 152, + 146, + 165, + 115, + 132, + 96, + 37, + 103, + 124, + 190, + 94, + 36, + 28, + 80, + 210, + 170, + 248, + 241, + 46, + 181, + 230, + 67, + 189, + 115, + 201, + 25, + 102, + 159, + 98, + 243, + 132, + 23, + 223, + 101, + 79, + 114, + 231, + 232, + 180, + 165, + 8, + 93, + 26, + 23, + 31, + 123, + 86, + 92, + 179, + 11, + 130, + 220, + 182, + 223, + 110, + 182, + 115, + 38, + 7, + 31, + 171, + 51, + 205, + 143, + 17, + 124, + 98, + 209, + 10, + 29, + 54, + 173, + 93, + 99, + 196, + 6, + 208, + 34, + 105, + 60, + 66, + 55, + 1, + 54, + 201, + 99, + 137, + 184, + 79, + 249, + 121, + 193, + 196, + 242, + 17, + 120, + 171, + 84, + 122, + 135, + 46, + 231, + 225, + 133, + 230, + 104, + 212, + 235, + 208, + 101, + 194, + 199, + 73, + 240, + 13, + 202, + 88, + 20, + 6, + 167, + 156, + 187, + 116, + 106, + 73, + 239, + 16, + 114, + 232, + 101, + 31, + 68, + 235, + 236, + 6, + 38, + 231, + 237, + 96, + 167, + 81, + 76, + 23, + 134, + 95, + 194, + 126, + 129, + 31, + 244, + 64, + 225, + 251, + 104, + 199, + 54, + 34, + 3, + 214, + 78, + 171, + 21, + 226, + 1, + 66, + 115, + 208, + 7, + 98, + 123, + 42, + 48, + 116, + 54, + 102, + 113, + 80, + 24, + 31, + 133, + 45, + 195, + 97, + 225, + 255, + 216, + 100, + 183, + 86, + 254, + 52, + 21, + 198, + 88, + 214, + 8, + 155, + 205, + 5, + 225, + 50, + 234, + 59, + 165, + 255, + 161, + 229, + 253, + 154, + 49, + 252, + 184, + 145, + 62, + 53, + 40, + 134, + 31, + 61, + 51, + 148, + 122, + 232, + 54, + 74, + 119, + 225, + 31, + 159, + 227, + 39, + 15, + 23, + 218, + 21, + 129, + 148, + 175, + 243, + 16, + 101, + 211, + 1, + 183, + 95, + 220, + 7, + 71, + 197, + 66, + 35, + 71, + 167, + 168, + 219, + 82, + 132, + 96, + 175, + 164, + 54, + 143, + 167, + 214, + 98, + 55, + 30, + 82, + 158, + 46, + 87, + 102, + 25, + 84, + 157, + 206, + 149, + 140, + 3, + 186, + 119, + 190, + 57, + 68, + 204, + 22, + 16, + 231, + 17, + 151, + 231, + 118, + 94, + 156, + 219, + 249, + 124, + 176, + 16, + 88, + 88, + 35, + 226, + 96, + 53, + 62, + 43, + 175, + 136, + 56, + 72, + 61, + 201, + 75, + 111, + 248, + 10, + 71, + 107, + 206, + 61, + 22, + 51, + 152, + 162, + 141, + 206, + 168, + 226, + 3, + 22, + 122, + 234, + 210, + 127, + 10, + 247, + 111, + 115, + 44, + 38, + 12, + 194, + 78, + 199, + 251, + 208, + 75, + 47, + 206, + 29, + 239, + 187, + 217, + 175, + 93, + 129, + 102, + 24, + 28, + 96, + 74, + 107, + 227, + 83, + 137, + 38, + 195, + 144, + 220, + 10, + 255, + 97, + 217, + 189, + 103, + 185, + 253, + 70, + 2, + 164, + 185, + 70, + 180, + 52, + 79, + 209, + 180, + 242, + 253, + 244, + 18, + 99, + 195, + 31, + 222, + 173, + 51, + 255, + 89, + 77, + 98, + 179, + 72, + 189, + 28, + 47, + 158, + 236, + 189, + 233, + 61, + 156, + 106, + 49, + 5, + 150, + 115, + 35, + 14, + 249, + 43, + 240, + 53, + 212, + 83, + 42, + 104, + 192, + 121, + 111, + 238, + 198, + 126, + 218, + 165, + 196, + 3, + 13, + 143, + 130, + 224, + 247, + 247, + 246, + 42, + 94, + 101, + 20, + 89, + 69, + 211, + 215, + 22, + 94, + 181, + 190, + 53, + 101, + 174, + 187, + 223, + 66, + 192, + 73, + 51, + 61, + 3, + 58, + 109, + 77, + 128, + 42, + 181, + 205, + 59, + 245, + 91, + 65, + 181, + 155, + 138, + 222, + 152, + 232, + 24, + 94, + 55, + 94, + 248, + 69, + 111, + 123, + 65, + 29, + 179, + 69, + 95, + 254, + 224, + 140, + 221, + 184, + 12, + 150, + 205, + 217, + 9, + 200, + 12, + 132, + 33, + 35, + 63, + 153, + 163, + 159, + 183, + 95, + 196, + 149, + 198, + 229, + 146, + 8, + 237, + 204, + 88, + 24, + 101, + 0, + 234, + 224, + 198, + 200, + 33, + 20, + 1, + 34, + 226, + 84, + 249, + 222, + 109, + 230, + 166, + 6, + 34, + 218, + 24, + 11, + 143, + 54, + 64, + 209, + 37, + 39, + 2, + 60, + 171, + 77, + 19, + 220, + 244, + 76, + 85, + 57, + 5, + 34, + 205, + 163, + 81, + 234, + 26, + 216, + 2, + 229, + 241, + 5, + 229, + 176, + 173, + 151, + 43, + 122, + 23, + 245, + 51, + 145, + 192, + 116, + 73, + 77, + 170, + 79, + 141, + 195, + 38, + 44, + 177, + 124, + 108, + 190, + 23, + 72, + 70, + 160, + 141, + 102, + 216, + 183, + 60, + 68, + 153, + 41, + 167, + 175, + 78, + 99, + 162, + 119, + 105, + 53, + 105, + 50, + 40, + 107, + 227, + 137, + 99, + 248, + 144, + 217, + 240, + 92, + 30, + 252, + 209, + 42, + 61, + 188, + 41, + 151, + 27, + 117, + 104, + 140, + 2, + 50, + 45, + 55, + 58, + 47, + 203, + 237, + 250, + 227, + 214, + 235, + 215, + 174, + 225, + 218, + 217, + 132, + 102, + 83, + 152, + 163, + 53, + 93, + 209, + 66, + 88, + 19, + 143, + 242, + 103, + 82, + 234, + 13, + 4, + 138, + 243, + 188, + 70, + 180, + 73, + 129, + 156, + 244, + 143, + 40, + 213, + 99, + 15, + 226, + 120, + 99, + 151, + 46, + 130, + 128, + 164, + 207, + 187, + 244, + 7, + 169, + 94, + 37, + 128, + 223, + 13, + 237, + 56, + 55, + 137, + 95, + 211, + 83, + 142, + 232, + 41, + 12, + 21, + 230, + 21, + 107, + 244, + 188, + 133, + 102, + 185, + 219, + 240, + 16, + 109, + 53, + 206, + 115, + 69, + 4, + 151, + 220, + 32, + 248, + 18, + 238, + 80, + 174, + 106, + 111, + 198, + 142, + 85, + 8, + 124, + 96, + 35, + 118, + 172, + 98, + 224, + 206, + 250, + 14, + 92, + 189, + 176, + 157, + 95, + 171, + 211, + 84, + 69, + 141, + 97, + 88, + 42, + 85, + 47, + 245, + 224, + 213, + 249, + 208, + 125, + 249, + 50, + 248, + 173, + 254, + 117, + 186, + 198, + 45, + 140, + 226, + 155, + 138, + 48, + 27, + 79, + 150, + 207, + 122, + 135, + 59, + 92, + 98, + 75, + 58, + 105, + 202, + 48, + 117, + 232, + 22, + 14, + 68, + 163, + 9, + 7, + 186, + 182, + 98, + 201, + 21, + 178, + 87, + 235, + 186, + 205, + 4, + 211, + 112, + 52, + 250, + 47, + 177, + 193, + 98, + 30, + 41, + 40, + 91, + 191, + 133, + 50, + 132, + 243, + 73, + 114, + 230, + 14, + 234, + 216, + 154, + 251, + 49, + 13, + 140, + 108, + 165, + 76, + 205, + 179, + 23, + 183, + 6, + 216, + 154, + 115, + 165, + 165, + 222, + 71, + 207, + 58, + 68, + 133, + 165, + 236, + 141, + 76, + 48, + 164, + 1, + 131, + 212, + 211, + 93, + 244, + 219, + 207, + 151, + 195, + 247, + 160, + 4, + 115, + 90, + 74, + 199, + 57, + 21, + 30, + 90, + 248, + 111, + 123, + 186, + 163, + 60, + 8, + 78, + 232, + 142, + 158, + 116, + 48, + 32, + 240, + 60, + 29, + 176, + 147, + 238, + 24, + 30, + 240, + 194, + 150, + 231, + 46, + 190, + 19, + 68, + 129, + 51, + 114, + 244, + 58, + 201, + 73, + 68, + 128, + 156, + 23, + 171, + 239, + 38, + 210, + 147, + 155, + 77, + 76, + 163, + 28, + 154, + 228, + 102, + 19, + 131, + 91, + 146, + 216, + 170, + 216, + 57, + 132, + 200, + 44, + 230, + 219, + 104, + 164, + 158, + 144, + 197, + 124, + 35, + 106, + 81, + 203, + 28, + 126, + 169, + 25, + 35, + 220, + 26, + 97, + 251, + 48, + 155, + 231, + 53, + 115, + 79, + 232, + 238, + 132, + 67, + 6, + 163, + 60, + 113, + 225, + 148, + 90, + 229, + 96, + 139, + 83, + 148, + 187, + 162, + 87, + 148, + 158, + 44, + 103, + 177, + 170, + 33, + 35, + 92, + 46, + 216, + 41, + 35, + 156, + 48, + 36, + 55, + 104, + 63, + 179, + 34, + 100, + 14, + 101, + 134, + 119, + 122, + 177, + 73, + 72, + 51, + 86, + 110, + 131, + 254, + 115, + 65, + 81, + 219, + 62, + 211, + 46, + 25, + 50, + 213, + 111, + 56, + 147, + 76, + 154, + 1, + 51, + 53, + 90, + 149, + 179, + 143, + 144, + 62, + 249, + 30, + 20, + 187, + 27, + 176, + 89, + 17, + 198, + 106, + 41, + 229, + 25, + 163, + 6, + 49, + 114, + 82, + 154, + 61, + 196, + 6, + 115, + 238, + 33, + 214, + 141, + 203, + 191, + 252, + 11, + 135, + 48, + 149, + 24, + 172, + 69, + 157, + 210, + 61, + 69, + 24, + 38, + 180, + 87, + 196, + 222, + 151, + 117, + 15, + 140, + 145, + 10, + 201, + 63, + 60, + 63, + 71, + 192, + 181, + 26, + 185, + 143, + 50, + 3, + 135, + 205, + 41, + 188, + 165, + 230, + 226, + 202, + 233, + 196, + 253, + 252, + 191, + 18, + 131, + 166, + 250, + 86, + 170, + 190, + 82, + 164, + 51, + 119, + 238, + 99, + 183, + 224, + 70, + 227, + 116, + 91, + 191, + 52, + 35, + 30, + 22, + 140, + 214, + 131, + 170, + 112, + 8, + 91, + 178, + 102, + 223, + 244, + 87, + 195, + 56, + 112, + 205, + 13, + 22, + 183, + 15, + 170, + 122, + 93, + 227, + 166, + 130, + 88, + 174, + 20, + 232, + 51, + 35, + 171, + 250, + 235, + 186, + 170, + 191, + 118, + 58, + 117, + 41, + 168, + 170, + 230, + 79, + 84, + 76, + 140, + 175, + 179, + 106, + 251, + 43, + 3, + 174, + 219, + 217, + 235, + 30, + 214, + 54, + 111, + 89, + 130, + 60, + 183, + 176, + 54, + 236, + 226, + 92, + 85, + 164, + 147, + 146, + 114, + 85, + 190, + 255, + 74, + 145, + 118, + 12, + 182, + 233, + 164, + 220, + 83, + 233, + 24, + 108, + 51, + 149, + 149, + 214, + 253, + 53, + 143, + 94, + 182, + 193, + 182, + 51, + 122, + 166, + 195, + 36, + 150, + 70, + 87, + 87, + 67, + 152, + 75, + 37, + 125, + 129, + 215, + 92, + 93, + 31, + 158, + 170, + 106, + 204, + 107, + 145, + 105, + 53, + 237, + 206, + 198, + 67, + 32, + 33, + 62, + 37, + 77, + 38, + 60, + 196, + 16, + 103, + 228, + 205, + 200, + 211, + 140, + 221, + 135, + 40, + 141, + 222, + 232, + 7, + 164, + 48, + 180, + 118, + 239, + 244, + 177, + 39, + 13, + 184, + 207, + 83, + 83, + 165, + 110, + 83, + 122, + 166, + 112, + 11, + 154, + 157, + 183, + 207, + 22, + 118, + 65, + 121, + 20, + 92, + 163, + 67, + 226, + 161, + 84, + 213, + 16, + 200, + 109, + 52, + 218, + 112, + 161, + 41, + 176, + 248, + 74, + 89, + 64, + 39, + 68, + 226, + 94, + 76, + 147, + 2, + 193, + 96, + 233, + 52, + 132, + 26, + 161, + 10, + 183, + 244, + 136, + 244, + 128, + 86, + 250, + 4, + 202, + 222, + 22, + 78, + 46, + 144, + 233, + 141, + 71, + 60, + 36, + 12, + 170, + 43, + 117, + 73, + 60, + 16, + 237, + 86, + 74, + 153, + 179, + 167, + 13, + 28, + 32, + 204, + 12, + 250, + 158, + 54, + 112, + 0, + 78, + 197, + 63, + 247, + 59, + 200, + 165, + 172, + 174, + 51, + 116, + 138, + 86, + 100, + 250, + 174, + 70, + 57, + 76, + 232, + 35, + 49, + 207, + 53, + 63, + 244, + 155, + 217, + 46, + 133, + 6, + 44, + 153, + 233, + 16, + 58, + 5, + 220, + 20, + 6, + 141, + 84, + 246, + 181, + 223, + 144, + 156, + 97, + 80, + 162, + 192, + 75, + 27, + 3, + 77, + 88, + 22, + 72, + 126, + 86, + 82, + 231, + 124, + 93, + 112, + 112, + 186, + 148, + 176, + 122, + 198, + 135, + 226, + 25, + 211, + 133, + 188, + 241, + 37, + 76, + 1, + 141, + 140, + 173, + 215, + 54, + 19, + 181, + 219, + 22, + 251, + 86, + 196, + 100, + 24, + 16, + 73, + 106, + 9, + 127, + 10, + 147, + 133, + 133, + 134, + 229, + 4, + 190, + 247, + 57, + 110, + 16, + 30, + 33, + 151, + 73, + 157, + 77, + 79, + 5, + 145, + 2, + 46, + 57, + 140, + 214, + 109, + 182, + 21, + 136, + 157, + 105, + 163, + 159, + 230, + 13, + 177, + 99, + 79, + 181, + 225, + 87, + 48, + 172, + 107, + 233, + 196, + 175, + 131, + 88, + 219, + 176, + 219, + 2, + 166, + 78, + 21, + 131, + 44, + 142, + 165, + 42, + 117, + 12, + 126, + 6, + 241, + 111, + 147, + 229, + 6, + 120, + 99, + 143, + 163, + 67, + 192, + 87, + 97, + 242, + 186, + 27, + 158, + 217, + 173, + 196, + 163, + 5, + 36, + 148, + 158, + 152, + 158, + 130, + 138, + 28, + 38, + 185, + 169, + 129, + 249, + 125, + 35, + 255, + 104, + 139, + 246, + 250, + 105, + 195, + 54, + 120, + 184, + 128, + 23, + 54, + 238, + 213, + 193, + 161, + 19, + 43, + 106, + 170, + 170, + 206, + 56, + 3, + 176, + 60, + 4, + 17, + 97, + 109, + 213, + 118, + 239, + 147, + 97, + 96, + 190, + 201, + 63, + 73, + 133, + 222, + 230, + 243, + 77, + 144, + 214, + 232, + 224, + 95, + 113, + 76, + 17, + 247, + 167, + 214, + 253, + 71, + 117, + 29, + 106, + 252, + 145, + 56, + 164, + 61, + 191, + 255, + 85, + 167, + 124, + 17, + 80, + 69, + 26, + 201, + 5, + 223, + 203, + 150, + 155, + 23, + 172, + 155, + 119, + 66, + 253, + 68, + 9, + 8, + 234, + 72, + 48, + 88, + 209, + 182, + 64, + 80, + 106, + 2, + 65, + 75, + 232, + 242, + 89, + 114, + 106, + 230, + 38, + 212, + 107, + 42, + 22, + 175, + 19, + 39, + 117, + 230, + 121, + 51, + 172, + 53, + 242, + 101, + 183, + 110, + 179, + 143, + 242, + 188, + 35, + 106, + 5, + 153, + 27, + 137, + 238, + 225, + 177, + 54, + 149, + 82, + 149, + 235, + 241, + 8, + 255, + 214, + 244, + 199, + 8, + 139, + 231, + 233, + 141, + 103, + 44, + 145, + 189, + 64, + 56, + 108, + 239, + 61, + 212, + 131, + 182, + 252, + 238, + 95, + 119, + 246, + 18, + 63, + 107, + 3, + 214, + 56, + 220, + 65, + 121, + 53, + 134, + 56, + 33, + 135, + 61, + 168, + 174, + 52, + 84, + 241, + 227, + 21, + 250, + 17, + 95, + 160, + 209, + 114, + 182, + 61, + 175, + 123, + 16, + 208, + 82, + 13, + 250, + 51, + 92, + 109, + 123, + 155, + 97, + 152, + 211, + 211, + 124, + 172, + 211, + 141, + 203, + 97, + 233, + 202, + 85, + 14, + 239, + 21, + 70, + 128, + 160, + 185, + 116, + 242, + 148, + 231, + 24, + 230, + 159, + 152, + 230, + 60, + 61, + 89, + 96, + 54, + 150, + 170, + 51, + 224, + 129, + 212, + 65, + 132, + 59, + 147, + 23, + 12, + 65, + 81, + 211, + 78, + 177, + 217, + 165, + 234, + 6, + 50, + 90, + 110, + 49, + 116, + 10, + 91, + 10, + 40, + 175, + 84, + 69, + 118, + 197, + 74, + 248, + 177, + 125, + 58, + 242, + 18, + 230, + 129, + 32, + 212, + 25, + 1, + 203, + 67, + 65, + 214, + 76, + 89, + 232, + 149, + 23, + 116, + 77, + 21, + 220, + 244, + 228, + 186, + 212, + 92, + 150, + 130, + 203, + 75, + 232, + 192, + 89, + 121, + 234, + 2, + 30, + 18, + 233, + 70, + 234, + 219, + 132, + 201, + 150, + 147, + 59, + 186, + 228, + 150, + 15, + 219, + 237, + 29, + 47, + 240, + 225, + 159, + 191, + 189, + 37, + 151, + 248, + 183, + 38, + 55, + 130, + 178, + 130, + 17, + 40, + 162, + 200, + 239, + 65, + 249, + 186, + 62, + 156, + 79, + 253, + 195, + 48, + 34, + 22, + 27, + 61, + 45, + 197, + 130, + 88, + 37, + 233, + 170, + 121, + 10, + 196, + 55, + 157, + 58, + 4, + 234, + 101, + 43, + 183, + 71, + 56, + 197, + 209, + 28, + 220, + 102, + 30, + 147, + 117, + 5, + 222, + 189, + 27, + 9, + 103, + 138, + 148, + 112, + 9, + 195, + 112, + 166, + 236, + 67, + 56, + 136, + 128, + 80, + 210, + 66, + 252, + 97, + 124, + 223, + 71, + 130, + 60, + 155, + 181, + 27, + 63, + 232, + 61, + 148, + 81, + 13, + 159, + 115, + 110, + 44, + 236, + 2, + 15, + 179, + 25, + 12, + 196, + 235, + 232, + 85, + 45, + 245, + 60, + 164, + 214, + 8, + 176, + 204, + 70, + 143, + 195, + 151, + 86, + 247, + 251, + 198, + 245, + 181, + 29, + 119, + 89, + 171, + 31, + 90, + 122, + 130, + 217, + 151, + 163, + 190, + 210, + 185, + 126, + 239, + 212, + 7, + 156, + 101, + 248, + 203, + 87, + 112, + 229, + 44, + 244, + 146, + 17, + 210, + 25, + 242, + 106, + 14, + 70, + 67, + 55, + 29, + 250, + 253, + 230, + 31, + 48, + 23, + 110, + 1, + 79, + 220, + 197, + 190, + 219, + 14, + 7, + 60, + 181, + 88, + 7, + 137, + 245, + 40, + 62, + 91, + 155, + 20, + 15, + 196, + 105, + 120, + 122, + 208, + 94, + 239, + 236, + 95, + 150, + 243, + 187, + 251, + 121, + 218, + 119, + 31, + 230, + 128, + 135, + 70, + 69, + 215, + 104, + 220, + 189, + 66, + 163, + 226, + 51, + 221, + 59, + 142, + 147, + 46, + 118, + 199, + 184, + 198, + 133, + 172, + 209, + 75, + 193, + 22, + 16, + 113, + 126, + 182, + 85, + 251, + 189, + 191, + 87, + 104, + 41, + 197, + 185, + 91, + 218, + 149, + 29, + 82, + 254, + 44, + 26, + 199, + 176, + 133, + 120, + 194, + 17, + 120, + 152, + 139, + 229, + 55, + 108, + 165, + 157, + 99, + 164, + 179, + 169, + 112, + 218, + 72, + 156, + 114, + 1, + 253, + 214, + 83, + 166, + 78, + 135, + 205, + 88, + 111, + 192, + 109, + 38, + 75, + 58, + 253, + 215, + 94, + 137, + 80, + 168, + 243, + 47, + 250, + 242, + 86, + 79, + 57, + 130, + 6, + 195, + 71, + 163, + 171, + 23, + 250, + 136, + 170, + 53, + 85, + 15, + 157, + 33, + 40, + 232, + 114, + 171, + 90, + 59, + 179, + 83, + 39, + 208, + 76, + 181, + 46, + 245, + 64, + 171, + 142, + 211, + 30, + 44, + 223, + 175, + 25, + 25, + 236, + 122, + 39, + 30, + 250, + 105, + 16, + 134, + 90, + 162, + 83, + 97, + 75, + 10, + 42, + 131, + 178, + 47, + 113, + 159, + 228, + 245, + 200, + 61, + 47, + 57, + 215, + 251, + 101, + 104, + 97, + 210, + 119, + 8, + 43, + 58, + 194, + 242, + 220, + 14, + 251, + 20, + 153, + 51, + 24, + 146, + 162, + 178, + 143, + 181, + 4, + 218, + 115, + 2, + 202, + 161, + 172, + 122, + 173, + 91, + 61, + 217, + 8, + 204, + 49, + 184, + 104, + 90, + 155, + 188, + 23, + 218, + 24, + 52, + 39, + 206, + 189, + 93, + 15, + 31, + 42, + 104, + 78, + 131, + 115, + 215, + 177, + 135, + 131, + 39, + 93, + 239, + 172, + 113, + 10, + 167, + 57, + 51, + 108, + 245, + 109, + 89, + 224, + 204, + 121, + 84, + 244, + 174, + 211, + 220, + 179, + 32, + 208, + 237, + 6, + 237, + 6, + 196, + 167, + 169, + 81, + 231, + 134, + 114, + 58, + 83, + 146, + 98, + 179, + 6, + 147, + 16, + 230, + 92, + 141, + 240, + 131, + 132, + 112, + 209, + 48, + 21, + 40, + 212, + 163, + 242, + 130, + 85, + 216, + 37, + 94, + 212, + 161, + 73, + 158, + 105, + 92, + 169, + 51, + 239, + 211, + 22, + 160, + 112, + 10, + 194, + 210, + 247, + 165, + 99, + 90, + 193, + 141, + 61, + 108, + 200, + 102, + 88, + 255, + 105, + 107, + 56, + 102, + 180, + 238, + 185, + 166, + 186, + 66, + 66, + 175, + 40, + 167, + 239, + 77, + 224, + 170, + 80, + 223, + 109, + 96, + 191, + 112, + 153, + 171, + 110, + 244, + 144, + 81, + 167, + 113, + 226, + 131, + 223, + 0, + 233, + 186, + 19, + 51, + 62, + 14, + 152, + 7, + 234, + 75, + 121, + 66, + 94, + 189, + 246, + 83, + 79, + 240, + 159, + 118, + 89, + 172, + 225, + 194, + 49, + 163, + 220, + 173, + 165, + 153, + 123, + 67, + 47, + 76, + 56, + 102, + 196, + 16, + 190, + 240, + 124, + 59, + 3, + 166, + 29, + 34, + 225, + 39, + 96, + 210, + 215, + 196, + 163, + 129, + 67, + 253, + 95, + 216, + 137, + 172, + 100, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 55, + 52, + 50, + 54, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 213, + 93, + 237, + 142, + 100, + 183, + 141, + 253, + 63, + 79, + 209, + 47, + 16, + 90, + 252, + 18, + 37, + 192, + 8, + 96, + 79, + 236, + 96, + 127, + 4, + 216, + 93, + 248, + 13, + 178, + 155, + 0, + 11, + 228, + 199, + 102, + 223, + 31, + 88, + 176, + 102, + 108, + 87, + 185, + 201, + 170, + 18, + 155, + 211, + 227, + 216, + 6, + 198, + 152, + 234, + 190, + 117, + 165, + 171, + 43, + 145, + 135, + 231, + 28, + 226, + 203, + 120, + 25, + 47, + 127, + 192, + 151, + 241, + 178, + 132, + 94, + 254, + 250, + 143, + 15, + 255, + 251, + 1, + 76, + 47, + 127, + 251, + 243, + 159, + 127, + 253, + 199, + 7, + 124, + 241, + 127, + 255, + 243, + 207, + 151, + 63, + 240, + 229, + 159, + 127, + 255, + 240, + 205, + 159, + 249, + 229, + 239, + 255, + 247, + 193, + 63, + 183, + 45, + 47, + 136, + 196, + 47, + 255, + 252, + 239, + 15, + 127, + 251, + 240, + 31, + 191, + 185, + 130, + 145, + 255, + 247, + 215, + 127, + 92, + 126, + 116, + 248, + 53, + 62, + 253, + 207, + 175, + 215, + 248, + 230, + 223, + 95, + 190, + 253, + 246, + 155, + 191, + 124, + 252, + 183, + 63, + 189, + 140, + 151, + 63, + 254, + 241, + 251, + 63, + 125, + 252, + 240, + 253, + 79, + 31, + 190, + 249, + 81, + 94, + 80, + 96, + 250, + 63, + 246, + 242, + 211, + 223, + 62, + 224, + 175, + 183, + 10, + 98, + 123, + 161, + 241, + 126, + 249, + 201, + 175, + 251, + 7, + 100, + 32, + 51, + 22, + 94, + 47, + 63, + 253, + 215, + 203, + 183, + 99, + 200, + 119, + 127, + 124, + 249, + 233, + 127, + 62, + 44, + 64, + 69, + 28, + 182, + 94, + 198, + 231, + 15, + 148, + 78, + 63, + 16, + 187, + 124, + 240, + 195, + 79, + 71, + 55, + 197, + 4, + 115, + 136, + 48, + 6, + 55, + 55, + 184, + 116, + 197, + 9, + 211, + 166, + 12, + 11, + 174, + 168, + 159, + 238, + 81, + 96, + 24, + 110, + 83, + 251, + 245, + 230, + 63, + 94, + 62, + 96, + 32, + 157, + 40, + 155, + 127, + 29, + 238, + 184, + 124, + 128, + 4, + 52, + 150, + 217, + 184, + 26, + 239, + 74, + 38, + 98, + 252, + 88, + 185, + 237, + 185, + 64, + 120, + 242, + 154, + 109, + 19, + 97, + 4, + 58, + 22, + 79, + 138, + 158, + 187, + 100, + 143, + 87, + 63, + 207, + 208, + 90, + 99, + 138, + 62, + 49, + 92, + 197, + 108, + 30, + 62, + 173, + 45, + 2, + 191, + 39, + 65, + 95, + 233, + 55, + 79, + 225, + 112, + 56, + 56, + 22, + 24, + 146, + 200, + 106, + 155, + 33, + 68, + 2, + 91, + 34, + 36, + 209, + 90, + 249, + 180, + 36, + 12, + 152, + 22, + 146, + 62, + 241, + 102, + 100, + 51, + 68, + 84, + 186, + 57, + 17, + 208, + 169, + 203, + 168, + 111, + 188, + 178, + 96, + 178, + 173, + 112, + 10, + 233, + 99, + 233, + 146, + 74, + 96, + 99, + 175, + 112, + 10, + 139, + 119, + 169, + 19, + 108, + 161, + 237, + 29, + 45, + 220, + 31, + 179, + 23, + 53, + 125, + 44, + 59, + 126, + 142, + 159, + 23, + 244, + 233, + 205, + 45, + 134, + 57, + 23, + 237, + 190, + 225, + 46, + 3, + 147, + 65, + 209, + 139, + 79, + 159, + 222, + 20, + 28, + 160, + 75, + 200, + 132, + 31, + 47, + 182, + 243, + 9, + 146, + 25, + 79, + 80, + 109, + 31, + 35, + 218, + 64, + 139, + 219, + 166, + 135, + 152, + 129, + 85, + 118, + 180, + 100, + 101, + 31, + 111, + 231, + 217, + 246, + 166, + 201, + 36, + 212, + 246, + 42, + 210, + 9, + 123, + 242, + 178, + 190, + 105, + 152, + 8, + 131, + 53, + 156, + 216, + 155, + 39, + 75, + 191, + 14, + 246, + 243, + 244, + 156, + 126, + 147, + 249, + 180, + 173, + 221, + 119, + 34, + 147, + 25, + 48, + 143, + 112, + 54, + 110, + 14, + 162, + 235, + 123, + 191, + 94, + 198, + 44, + 15, + 255, + 30, + 177, + 116, + 103, + 123, + 194, + 152, + 147, + 250, + 142, + 20, + 30, + 3, + 144, + 227, + 237, + 144, + 63, + 61, + 143, + 5, + 123, + 78, + 158, + 123, + 134, + 103, + 235, + 216, + 215, + 171, + 47, + 93, + 174, + 165, + 205, + 154, + 105, + 131, + 204, + 206, + 19, + 148, + 153, + 65, + 121, + 74, + 52, + 220, + 108, + 95, + 185, + 121, + 132, + 83, + 158, + 152, + 134, + 235, + 69, + 114, + 59, + 63, + 24, + 175, + 158, + 218, + 106, + 96, + 35, + 152, + 50, + 71, + 223, + 230, + 197, + 54, + 193, + 112, + 141, + 232, + 8, + 199, + 145, + 60, + 91, + 254, + 20, + 55, + 33, + 195, + 98, + 166, + 117, + 61, + 15, + 223, + 31, + 79, + 80, + 105, + 251, + 18, + 84, + 88, + 99, + 142, + 190, + 67, + 78, + 112, + 195, + 178, + 53, + 194, + 93, + 92, + 158, + 89, + 253, + 54, + 249, + 141, + 71, + 183, + 8, + 130, + 15, + 170, + 47, + 82, + 17, + 81, + 64, + 166, + 205, + 213, + 240, + 145, + 94, + 29, + 232, + 167, + 119, + 48, + 23, + 216, + 228, + 198, + 232, + 75, + 140, + 96, + 177, + 134, + 87, + 20, + 203, + 158, + 84, + 118, + 2, + 125, + 76, + 94, + 245, + 235, + 23, + 247, + 118, + 37, + 127, + 87, + 185, + 105, + 29, + 11, + 230, + 214, + 190, + 125, + 77, + 61, + 51, + 152, + 182, + 194, + 220, + 233, + 251, + 100, + 176, + 43, + 121, + 178, + 215, + 203, + 24, + 149, + 30, + 254, + 66, + 45, + 95, + 80, + 29, + 64, + 74, + 141, + 49, + 199, + 120, + 249, + 131, + 167, + 231, + 134, + 203, + 244, + 225, + 166, + 165, + 89, + 164, + 154, + 38, + 142, + 105, + 14, + 154, + 134, + 176, + 121, + 108, + 251, + 105, + 157, + 77, + 32, + 222, + 234, + 79, + 237, + 109, + 49, + 172, + 44, + 208, + 61, + 246, + 90, + 175, + 39, + 160, + 184, + 156, + 8, + 230, + 164, + 61, + 229, + 245, + 5, + 243, + 80, + 53, + 195, + 42, + 242, + 188, + 122, + 150, + 96, + 130, + 1, + 136, + 198, + 170, + 247, + 6, + 27, + 128, + 85, + 56, + 16, + 198, + 70, + 219, + 118, + 23, + 180, + 250, + 225, + 47, + 31, + 175, + 129, + 43, + 108, + 2, + 174, + 242, + 200, + 40, + 93, + 110, + 150, + 125, + 80, + 218, + 121, + 105, + 3, + 51, + 239, + 217, + 119, + 70, + 50, + 131, + 12, + 221, + 162, + 209, + 158, + 115, + 140, + 190, + 156, + 195, + 20, + 41, + 22, + 248, + 121, + 195, + 59, + 28, + 206, + 34, + 96, + 36, + 221, + 125, + 240, + 197, + 154, + 192, + 75, + 116, + 134, + 121, + 132, + 222, + 127, + 186, + 193, + 7, + 233, + 139, + 151, + 77, + 105, + 237, + 108, + 66, + 34, + 32, + 81, + 236, + 196, + 173, + 104, + 2, + 163, + 249, + 153, + 113, + 0, + 237, + 229, + 219, + 106, + 58, + 19, + 247, + 161, + 147, + 46, + 232, + 19, + 231, + 0, + 101, + 52, + 110, + 156, + 161, + 41, + 48, + 7, + 27, + 134, + 200, + 222, + 119, + 233, + 89, + 245, + 253, + 233, + 42, + 250, + 188, + 88, + 78, + 111, + 111, + 111, + 152, + 130, + 141, + 168, + 55, + 13, + 6, + 243, + 88, + 52, + 26, + 239, + 131, + 61, + 226, + 24, + 225, + 25, + 48, + 208, + 207, + 139, + 174, + 123, + 39, + 129, + 177, + 44, + 124, + 65, + 242, + 109, + 12, + 123, + 183, + 115, + 63, + 243, + 37, + 204, + 79, + 138, + 131, + 242, + 51, + 31, + 201, + 214, + 217, + 2, + 60, + 205, + 116, + 111, + 162, + 132, + 57, + 228, + 141, + 193, + 0, + 237, + 1, + 107, + 111, + 110, + 124, + 184, + 91, + 96, + 155, + 67, + 53, + 181, + 28, + 233, + 118, + 22, + 86, + 107, + 190, + 79, + 30, + 239, + 240, + 236, + 27, + 44, + 211, + 4, + 19, + 245, + 56, + 239, + 53, + 150, + 251, + 233, + 132, + 218, + 96, + 166, + 115, + 8, + 61, + 28, + 84, + 45, + 119, + 103, + 89, + 96, + 34, + 220, + 119, + 236, + 178, + 18, + 44, + 140, + 65, + 178, + 12, + 54, + 205, + 114, + 164, + 252, + 201, + 222, + 188, + 18, + 186, + 207, + 82, + 200, + 155, + 52, + 172, + 116, + 74, + 203, + 152, + 160, + 107, + 55, + 226, + 250, + 130, + 3, + 230, + 244, + 73, + 9, + 166, + 45, + 123, + 228, + 181, + 111, + 162, + 11, + 218, + 44, + 125, + 153, + 159, + 240, + 5, + 109, + 150, + 121, + 114, + 239, + 152, + 165, + 244, + 31, + 99, + 200, + 54, + 221, + 210, + 178, + 168, + 35, + 93, + 9, + 217, + 30, + 152, + 37, + 216, + 181, + 82, + 181, + 172, + 13, + 54, + 152, + 27, + 167, + 121, + 179, + 239, + 6, + 28, + 78, + 243, + 245, + 160, + 54, + 190, + 241, + 204, + 214, + 161, + 176, + 247, + 10, + 113, + 218, + 42, + 66, + 50, + 96, + 216, + 144, + 59, + 33, + 232, + 241, + 21, + 23, + 16, + 161, + 246, + 85, + 192, + 213, + 67, + 239, + 205, + 26, + 237, + 133, + 183, + 27, + 206, + 74, + 208, + 248, + 96, + 213, + 124, + 90, + 224, + 147, + 226, + 196, + 242, + 20, + 252, + 10, + 118, + 174, + 87, + 95, + 240, + 249, + 116, + 123, + 189, + 190, + 175, + 62, + 160, + 65, + 87, + 72, + 64, + 237, + 60, + 212, + 181, + 1, + 135, + 10, + 182, + 35, + 72, + 140, + 15, + 81, + 111, + 250, + 165, + 56, + 162, + 52, + 175, + 199, + 146, + 103, + 39, + 231, + 161, + 97, + 150, + 26, + 141, + 210, + 130, + 21, + 133, + 137, + 98, + 56, + 95, + 141, + 178, + 186, + 29, + 192, + 92, + 115, + 122, + 229, + 237, + 55, + 215, + 171, + 213, + 230, + 149, + 193, + 116, + 249, + 15, + 229, + 247, + 23, + 1, + 59, + 60, + 0, + 151, + 170, + 28, + 1, + 59, + 212, + 5, + 236, + 60, + 136, + 235, + 79, + 62, + 248, + 87, + 102, + 36, + 213, + 246, + 121, + 89, + 30, + 190, + 75, + 95, + 20, + 163, + 228, + 209, + 187, + 204, + 135, + 71, + 212, + 77, + 249, + 253, + 28, + 130, + 248, + 161, + 4, + 93, + 42, + 152, + 173, + 78, + 238, + 137, + 109, + 88, + 26, + 102, + 129, + 205, + 15, + 106, + 19, + 12, + 227, + 213, + 72, + 148, + 216, + 19, + 80, + 116, + 233, + 254, + 162, + 92, + 166, + 218, + 201, + 130, + 196, + 176, + 100, + 161, + 245, + 165, + 90, + 72, + 6, + 155, + 6, + 106, + 244, + 158, + 230, + 101, + 138, + 79, + 3, + 70, + 4, + 241, + 159, + 26, + 246, + 24, + 250, + 41, + 98, + 90, + 58, + 65, + 136, + 247, + 234, + 219, + 70, + 28, + 38, + 147, + 173, + 59, + 12, + 144, + 10, + 56, + 112, + 13, + 205, + 92, + 6, + 78, + 111, + 104, + 124, + 144, + 27, + 65, + 84, + 132, + 26, + 215, + 237, + 41, + 70, + 129, + 10, + 99, + 137, + 245, + 69, + 158, + 132, + 27, + 80, + 167, + 29, + 194, + 143, + 41, + 43, + 19, + 139, + 161, + 206, + 49, + 203, + 136, + 128, + 37, + 206, + 251, + 170, + 188, + 165, + 9, + 130, + 22, + 63, + 221, + 52, + 111, + 123, + 134, + 20, + 116, + 195, + 28, + 249, + 33, + 94, + 39, + 181, + 74, + 42, + 109, + 3, + 54, + 93, + 141, + 165, + 157, + 129, + 32, + 98, + 94, + 80, + 124, + 205, + 10, + 250, + 133, + 238, + 161, + 206, + 43, + 92, + 143, + 11, + 202, + 15, + 184, + 81, + 5, + 82, + 208, + 180, + 173, + 214, + 74, + 10, + 50, + 69, + 13, + 83, + 195, + 227, + 36, + 254, + 166, + 220, + 233, + 197, + 159, + 183, + 33, + 156, + 172, + 8, + 52, + 52, + 228, + 108, + 84, + 241, + 49, + 245, + 235, + 132, + 203, + 165, + 246, + 26, + 242, + 100, + 16, + 218, + 33, + 109, + 168, + 26, + 130, + 26, + 232, + 24, + 49, + 139, + 50, + 125, + 171, + 50, + 224, + 38, + 131, + 38, + 210, + 247, + 249, + 1, + 227, + 235, + 116, + 48, + 219, + 223, + 21, + 9, + 79, + 254, + 226, + 244, + 108, + 131, + 201, + 51, + 68, + 208, + 242, + 155, + 127, + 64, + 186, + 122, + 53, + 63, + 69, + 218, + 18, + 33, + 144, + 83, + 142, + 251, + 96, + 39, + 82, + 96, + 94, + 97, + 104, + 114, + 67, + 169, + 189, + 169, + 39, + 100, + 188, + 37, + 173, + 49, + 167, + 8, + 68, + 66, + 108, + 180, + 74, + 197, + 154, + 160, + 24, + 134, + 37, + 233, + 227, + 168, + 178, + 233, + 94, + 93, + 169, + 22, + 20, + 139, + 41, + 12, + 166, + 198, + 242, + 131, + 152, + 3, + 56, + 50, + 163, + 7, + 203, + 51, + 43, + 63, + 212, + 18, + 205, + 109, + 48, + 184, + 179, + 130, + 169, + 3, + 1, + 7, + 63, + 60, + 52, + 174, + 15, + 188, + 93, + 37, + 139, + 9, + 99, + 136, + 92, + 214, + 217, + 98, + 58, + 184, + 30, + 194, + 190, + 230, + 1, + 190, + 250, + 251, + 235, + 99, + 112, + 248, + 105, + 253, + 120, + 115, + 45, + 133, + 3, + 42, + 10, + 34, + 66, + 141, + 15, + 86, + 54, + 40, + 78, + 12, + 55, + 215, + 172, + 152, + 240, + 125, + 82, + 3, + 200, + 104, + 250, + 43, + 134, + 78, + 211, + 250, + 84, + 105, + 43, + 214, + 173, + 176, + 181, + 83, + 163, + 245, + 51, + 64, + 58, + 212, + 234, + 130, + 179, + 34, + 247, + 93, + 252, + 45, + 88, + 42, + 175, + 110, + 225, + 62, + 58, + 168, + 27, + 200, + 22, + 211, + 9, + 56, + 200, + 77, + 224, + 96, + 142, + 30, + 63, + 85, + 92, + 189, + 201, + 156, + 106, + 194, + 142, + 9, + 203, + 54, + 135, + 187, + 84, + 53, + 53, + 128, + 173, + 200, + 33, + 215, + 250, + 157, + 210, + 95, + 21, + 208, + 133, + 141, + 231, + 144, + 46, + 152, + 202, + 51, + 60, + 222, + 83, + 85, + 128, + 124, + 101, + 125, + 161, + 23, + 63, + 156, + 1, + 210, + 136, + 200, + 49, + 16, + 205, + 17, + 35, + 114, + 249, + 107, + 126, + 44, + 205, + 108, + 86, + 137, + 56, + 254, + 63, + 77, + 217, + 119, + 134, + 46, + 140, + 135, + 5, + 76, + 44, + 62, + 220, + 83, + 206, + 213, + 185, + 38, + 183, + 86, + 199, + 193, + 73, + 32, + 172, + 157, + 111, + 53, + 206, + 9, + 58, + 44, + 126, + 173, + 243, + 93, + 76, + 178, + 93, + 44, + 133, + 121, + 106, + 82, + 218, + 109, + 32, + 83, + 173, + 81, + 158, + 54, + 16, + 148, + 45, + 196, + 119, + 11, + 116, + 187, + 218, + 194, + 37, + 50, + 152, + 3, + 67, + 37, + 101, + 85, + 124, + 136, + 94, + 55, + 11, + 121, + 150, + 5, + 196, + 53, + 43, + 33, + 20, + 97, + 170, + 57, + 0, + 247, + 234, + 36, + 226, + 77, + 1, + 178, + 17, + 38, + 214, + 233, + 9, + 155, + 171, + 182, + 158, + 217, + 233, + 159, + 136, + 124, + 31, + 196, + 112, + 175, + 191, + 184, + 134, + 216, + 179, + 103, + 197, + 182, + 66, + 194, + 94, + 149, + 13, + 182, + 65, + 116, + 132, + 32, + 240, + 13, + 95, + 57, + 17, + 145, + 28, + 207, + 230, + 83, + 92, + 185, + 222, + 144, + 152, + 151, + 192, + 154, + 212, + 184, + 8, + 121, + 45, + 216, + 28, + 163, + 59, + 207, + 72, + 111, + 110, + 151, + 194, + 117, + 140, + 64, + 175, + 19, + 131, + 130, + 48, + 142, + 39, + 133, + 48, + 90, + 93, + 24, + 39, + 44, + 59, + 76, + 142, + 254, + 148, + 224, + 111, + 135, + 79, + 182, + 40, + 2, + 20, + 231, + 173, + 83, + 99, + 134, + 239, + 24, + 77, + 146, + 119, + 63, + 25, + 14, + 61, + 163, + 170, + 74, + 85, + 131, + 89, + 52, + 253, + 12, + 63, + 173, + 69, + 163, + 198, + 192, + 132, + 187, + 145, + 222, + 52, + 12, + 120, + 115, + 168, + 176, + 120, + 31, + 249, + 161, + 58, + 79, + 144, + 164, + 145, + 53, + 169, + 172, + 48, + 118, + 156, + 58, + 164, + 235, + 187, + 172, + 151, + 83, + 107, + 220, + 184, + 84, + 5, + 166, + 88, + 88, + 60, + 123, + 176, + 113, + 157, + 126, + 147, + 13, + 216, + 178, + 173, + 17, + 163, + 113, + 44, + 146, + 48, + 150, + 214, + 156, + 158, + 227, + 53, + 242, + 217, + 246, + 164, + 17, + 27, + 183, + 214, + 64, + 190, + 248, + 72, + 37, + 116, + 28, + 229, + 3, + 143, + 207, + 148, + 197, + 51, + 237, + 220, + 90, + 192, + 54, + 240, + 8, + 68, + 145, + 46, + 207, + 167, + 164, + 88, + 90, + 22, + 68, + 117, + 33, + 82, + 23, + 40, + 100, + 197, + 92, + 163, + 106, + 105, + 14, + 6, + 15, + 145, + 38, + 142, + 200, + 35, + 48, + 41, + 32, + 7, + 165, + 118, + 74, + 114, + 172, + 194, + 75, + 191, + 252, + 152, + 196, + 147, + 109, + 164, + 197, + 244, + 153, + 124, + 35, + 29, + 218, + 88, + 65, + 70, + 242, + 173, + 148, + 52, + 84, + 49, + 124, + 93, + 166, + 104, + 81, + 225, + 230, + 185, + 197, + 156, + 141, + 21, + 93, + 156, + 27, + 68, + 86, + 168, + 121, + 79, + 165, + 174, + 231, + 19, + 209, + 12, + 178, + 209, + 24, + 96, + 78, + 86, + 110, + 68, + 30, + 4, + 150, + 240, + 153, + 89, + 84, + 190, + 82, + 238, + 135, + 208, + 1, + 213, + 177, + 87, + 24, + 72, + 188, + 97, + 232, + 10, + 43, + 120, + 197, + 249, + 17, + 6, + 228, + 161, + 239, + 192, + 105, + 36, + 85, + 96, + 229, + 48, + 136, + 168, + 138, + 232, + 54, + 8, + 233, + 60, + 10, + 169, + 178, + 112, + 62, + 77, + 49, + 138, + 245, + 147, + 101, + 128, + 216, + 169, + 30, + 163, + 141, + 78, + 188, + 14, + 31, + 126, + 142, + 25, + 126, + 159, + 9, + 167, + 158, + 40, + 36, + 118, + 240, + 105, + 72, + 96, + 147, + 53, + 202, + 188, + 153, + 22, + 236, + 125, + 113, + 95, + 184, + 15, + 186, + 61, + 165, + 43, + 43, + 138, + 232, + 54, + 176, + 117, + 202, + 65, + 89, + 25, + 68, + 156, + 80, + 209, + 91, + 34, + 142, + 12, + 115, + 142, + 1, + 23, + 132, + 173, + 214, + 105, + 123, + 180, + 38, + 140, + 132, + 191, + 148, + 146, + 135, + 210, + 124, + 62, + 99, + 193, + 213, + 216, + 52, + 136, + 110, + 79, + 215, + 232, + 146, + 114, + 193, + 132, + 52, + 118, + 102, + 75, + 107, + 243, + 249, + 122, + 125, + 66, + 114, + 127, + 243, + 11, + 69, + 238, + 73, + 14, + 197, + 20, + 103, + 65, + 7, + 240, + 154, + 33, + 18, + 240, + 123, + 118, + 186, + 90, + 27, + 196, + 164, + 89, + 211, + 167, + 50, + 67, + 77, + 223, + 35, + 255, + 164, + 99, + 252, + 103, + 59, + 171, + 190, + 49, + 238, + 86, + 100, + 39, + 213, + 135, + 204, + 205, + 247, + 66, + 148, + 12, + 84, + 27, + 157, + 199, + 84, + 16, + 38, + 81, + 200, + 217, + 200, + 50, + 225, + 167, + 78, + 153, + 107, + 48, + 185, + 6, + 8, + 154, + 194, + 226, + 24, + 47, + 234, + 67, + 60, + 210, + 60, + 83, + 251, + 210, + 73, + 123, + 163, + 42, + 234, + 8, + 59, + 33, + 244, + 226, + 37, + 110, + 60, + 193, + 78, + 180, + 75, + 157, + 118, + 156, + 232, + 231, + 118, + 59, + 53, + 169, + 130, + 2, + 169, + 172, + 198, + 13, + 203, + 141, + 140, + 104, + 46, + 228, + 247, + 112, + 219, + 125, + 253, + 11, + 181, + 218, + 231, + 20, + 112, + 215, + 201, + 190, + 52, + 233, + 158, + 253, + 246, + 19, + 231, + 215, + 93, + 234, + 254, + 219, + 188, + 205, + 138, + 136, + 195, + 80, + 152, + 52, + 12, + 27, + 17, + 135, + 177, + 97, + 110, + 154, + 171, + 209, + 61, + 26, + 25, + 108, + 202, + 12, + 13, + 51, + 170, + 158, + 222, + 6, + 139, + 231, + 228, + 48, + 18, + 193, + 228, + 245, + 61, + 255, + 224, + 243, + 128, + 79, + 236, + 217, + 70, + 105, + 60, + 178, + 1, + 25, + 165, + 147, + 141, + 163, + 12, + 52, + 56, + 150, + 238, + 31, + 131, + 192, + 229, + 57, + 61, + 189, + 107, + 155, + 176, + 104, + 54, + 66, + 35, + 184, + 220, + 236, + 38, + 86, + 76, + 190, + 155, + 80, + 208, + 241, + 43, + 37, + 108, + 229, + 226, + 184, + 125, + 33, + 199, + 92, + 156, + 20, + 199, + 58, + 103, + 97, + 213, + 12, + 134, + 216, + 103, + 20, + 177, + 17, + 224, + 98, + 5, + 49, + 142, + 173, + 101, + 155, + 111, + 94, + 38, + 12, + 181, + 48, + 182, + 175, + 2, + 92, + 3, + 144, + 118, + 200, + 60, + 251, + 108, + 6, + 243, + 124, + 229, + 59, + 213, + 139, + 101, + 5, + 188, + 84, + 139, + 245, + 140, + 255, + 210, + 237, + 7, + 201, + 87, + 84, + 11, + 65, + 27, + 116, + 47, + 107, + 20, + 224, + 33, + 59, + 197, + 57, + 36, + 247, + 176, + 93, + 213, + 19, + 28, + 189, + 124, + 156, + 132, + 214, + 168, + 50, + 188, + 96, + 83, + 163, + 189, + 9, + 11, + 193, + 222, + 22, + 94, + 241, + 102, + 255, + 26, + 206, + 242, + 14, + 11, + 76, + 217, + 178, + 10, + 58, + 127, + 156, + 222, + 156, + 41, + 232, + 26, + 141, + 199, + 22, + 219, + 134, + 169, + 20, + 203, + 10, + 51, + 48, + 56, + 133, + 11, + 106, + 252, + 159, + 193, + 64, + 139, + 86, + 163, + 221, + 178, + 115, + 56, + 60, + 160, + 127, + 164, + 197, + 186, + 22, + 46, + 101, + 131, + 122, + 202, + 52, + 63, + 115, + 92, + 127, + 123, + 9, + 223, + 25, + 67, + 188, + 169, + 19, + 85, + 146, + 121, + 49, + 172, + 15, + 109, + 152, + 31, + 216, + 235, + 28, + 3, + 88, + 6, + 203, + 176, + 49, + 18, + 149, + 137, + 176, + 61, + 169, + 120, + 148, + 88, + 93, + 23, + 41, + 50, + 48, + 165, + 181, + 137, + 137, + 172, + 5, + 139, + 71, + 104, + 142, + 89, + 69, + 189, + 8, + 246, + 8, + 69, + 67, + 119, + 140, + 150, + 14, + 245, + 165, + 53, + 31, + 90, + 183, + 149, + 218, + 83, + 59, + 205, + 193, + 137, + 97, + 112, + 232, + 22, + 144, + 75, + 96, + 123, + 9, + 64, + 194, + 32, + 136, + 33, + 179, + 244, + 109, + 208, + 145, + 136, + 89, + 20, + 127, + 60, + 215, + 35, + 234, + 156, + 65, + 242, + 4, + 183, + 247, + 41, + 234, + 66, + 111, + 0, + 226, + 2, + 22, + 153, + 226, + 230, + 206, + 191, + 157, + 149, + 251, + 216, + 148, + 171, + 80, + 213, + 127, + 239, + 0, + 155, + 154, + 77, + 216, + 20, + 253, + 120, + 74, + 102, + 40, + 91, + 65, + 175, + 38, + 198, + 143, + 8, + 44, + 114, + 171, + 128, + 190, + 141, + 40, + 55, + 64, + 74, + 21, + 176, + 185, + 12, + 225, + 184, + 25, + 90, + 134, + 40, + 215, + 166, + 103, + 163, + 119, + 226, + 113, + 97, + 94, + 155, + 36, + 201, + 149, + 223, + 30, + 29, + 230, + 16, + 78, + 128, + 109, + 150, + 98, + 37, + 28, + 19, + 140, + 7, + 118, + 170, + 106, + 112, + 192, + 26, + 132, + 177, + 88, + 238, + 107, + 167, + 182, + 200, + 12, + 222, + 94, + 164, + 145, + 255, + 128, + 108, + 48, + 23, + 38, + 230, + 56, + 237, + 88, + 116, + 23, + 58, + 139, + 134, + 110, + 232, + 28, + 66, + 112, + 197, + 137, + 48, + 5, + 212, + 29, + 102, + 222, + 183, + 85, + 196, + 105, + 207, + 188, + 216, + 53, + 126, + 203, + 80, + 160, + 45, + 171, + 145, + 241, + 49, + 54, + 112, + 226, + 237, + 112, + 46, + 148, + 60, + 111, + 221, + 216, + 122, + 104, + 146, + 184, + 50, + 216, + 58, + 27, + 135, + 41, + 3, + 75, + 204, + 4, + 185, + 217, + 173, + 158, + 49, + 33, + 105, + 230, + 189, + 144, + 121, + 93, + 209, + 41, + 188, + 109, + 163, + 53, + 117, + 124, + 61, + 118, + 159, + 235, + 194, + 130, + 210, + 11, + 165, + 144, + 207, + 51, + 140, + 184, + 215, + 38, + 39, + 41, + 57, + 229, + 65, + 212, + 248, + 187, + 130, + 161, + 230, + 2, + 247, + 240, + 106, + 116, + 70, + 242, + 14, + 99, + 188, + 195, + 43, + 222, + 208, + 90, + 111, + 96, + 168, + 44, + 77, + 74, + 167, + 39, + 243, + 151, + 77, + 8, + 251, + 197, + 38, + 57, + 200, + 192, + 214, + 169, + 18, + 22, + 175, + 236, + 74, + 168, + 200, + 200, + 201, + 123, + 53, + 169, + 168, + 240, + 132, + 189, + 168, + 241, + 132, + 186, + 116, + 23, + 83, + 191, + 202, + 87, + 161, + 1, + 21, + 159, + 161, + 17, + 12, + 164, + 78, + 111, + 33, + 155, + 110, + 165, + 23, + 122, + 11, + 229, + 30, + 239, + 53, + 20, + 99, + 123, + 246, + 48, + 176, + 241, + 25, + 110, + 207, + 30, + 156, + 82, + 30, + 60, + 195, + 239, + 14, + 57, + 33, + 25, + 135, + 228, + 254, + 203, + 121, + 76, + 151, + 241, + 70, + 34, + 214, + 169, + 4, + 18, + 111, + 36, + 178, + 99, + 37, + 208, + 51, + 202, + 145, + 155, + 245, + 125, + 63, + 91, + 63, + 189, + 181, + 233, + 72, + 78, + 140, + 50, + 117, + 249, + 83, + 231, + 209, + 85, + 193, + 181, + 177, + 214, + 164, + 83, + 128, + 80, + 166, + 47, + 194, + 22, + 87, + 105, + 94, + 64, + 107, + 106, + 224, + 42, + 157, + 182, + 207, + 205, + 217, + 29, + 90, + 122, + 110, + 10, + 188, + 47, + 57, + 231, + 137, + 13, + 245, + 37, + 28, + 18, + 183, + 172, + 63, + 192, + 82, + 172, + 139, + 231, + 115, + 78, + 130, + 42, + 77, + 13, + 57, + 227, + 155, + 90, + 249, + 254, + 119, + 8, + 66, + 121, + 38, + 156, + 46, + 97, + 62, + 253, + 32, + 77, + 170, + 31, + 53, + 239, + 59, + 28, + 167, + 135, + 223, + 123, + 207, + 70, + 222, + 249, + 197, + 77, + 26, + 253, + 135, + 130, + 153, + 91, + 93, + 124, + 167, + 218, + 58, + 193, + 33, + 94, + 120, + 154, + 157, + 44, + 144, + 177, + 188, + 242, + 20, + 151, + 39, + 82, + 214, + 96, + 186, + 101, + 156, + 11, + 100, + 126, + 206, + 7, + 134, + 33, + 239, + 171, + 104, + 160, + 72, + 15, + 17, + 215, + 196, + 10, + 206, + 198, + 38, + 98, + 162, + 48, + 112, + 98, + 216, + 53, + 131, + 49, + 109, + 205, + 222, + 236, + 184, + 108, + 2, + 204, + 141, + 229, + 11, + 180, + 5, + 50, + 44, + 172, + 133, + 159, + 107, + 67, + 91, + 79, + 120, + 239, + 98, + 54, + 227, + 98, + 104, + 21, + 96, + 49, + 112, + 185, + 89, + 152, + 83, + 159, + 59, + 173, + 213, + 4, + 146, + 196, + 4, + 168, + 20, + 50, + 44, + 171, + 156, + 151, + 9, + 68, + 18, + 178, + 104, + 114, + 43, + 180, + 143, + 101, + 12, + 134, + 172, + 177, + 228, + 77, + 234, + 182, + 5, + 177, + 51, + 250, + 115, + 77, + 132, + 110, + 74, + 216, + 73, + 92, + 158, + 146, + 55, + 138, + 194, + 69, + 183, + 7, + 91, + 72, + 157, + 188, + 91, + 31, + 76, + 226, + 45, + 148, + 149, + 129, + 211, + 233, + 169, + 113, + 52, + 208, + 192, + 70, + 231, + 161, + 194, + 132, + 222, + 146, + 33, + 22, + 16, + 164, + 233, + 95, + 102, + 36, + 112, + 221, + 213, + 247, + 202, + 200, + 163, + 232, + 239, + 163, + 3, + 22, + 121, + 87, + 147, + 62, + 77, + 151, + 192, + 218, + 137, + 225, + 67, + 226, + 239, + 83, + 204, + 9, + 108, + 92, + 244, + 195, + 141, + 122, + 52, + 19, + 151, + 15, + 199, + 193, + 142, + 157, + 146, + 105, + 106, + 131, + 218, + 11, + 134, + 173, + 78, + 51, + 157, + 225, + 27, + 237, + 136, + 205, + 116, + 142, + 59, + 43, + 102, + 239, + 96, + 177, + 196, + 127, + 7, + 17, + 245, + 8, + 104, + 141, + 249, + 214, + 98, + 170, + 42, + 32, + 97, + 163, + 59, + 169, + 232, + 6, + 220, + 28, + 22, + 60, + 106, + 132, + 111, + 153, + 12, + 52, + 181, + 177, + 43, + 134, + 76, + 3, + 102, + 11, + 249, + 179, + 119, + 168, + 39, + 207, + 172, + 134, + 19, + 83, + 239, + 96, + 75, + 46, + 157, + 51, + 138, + 226, + 212, + 199, + 198, + 254, + 26, + 206, + 127, + 153, + 54, + 66, + 173, + 68, + 222, + 61, + 180, + 38, + 72, + 99, + 39, + 84, + 95, + 90, + 137, + 119, + 221, + 60, + 203, + 133, + 188, + 67, + 221, + 189, + 39, + 223, + 174, + 222, + 154, + 30, + 16, + 140, + 70, + 34, + 179, + 154, + 7, + 4, + 73, + 253, + 231, + 125, + 196, + 119, + 123, + 130, + 183, + 83, + 210, + 175, + 233, + 193, + 115, + 146, + 116, + 82, + 91, + 41, + 180, + 186, + 229, + 194, + 116, + 157, + 243, + 58, + 212, + 176, + 241, + 112, + 63, + 212, + 65, + 124, + 130, + 109, + 173, + 38, + 108, + 235, + 93, + 84, + 75, + 213, + 142, + 188, + 192, + 131, + 59, + 195, + 156, + 233, + 157, + 92, + 102, + 76, + 145, + 182, + 204, + 71, + 230, + 28, + 38, + 43, + 237, + 245, + 83, + 193, + 6, + 93, + 88, + 102, + 93, + 42, + 54, + 207, + 250, + 68, + 194, + 23, + 56, + 7, + 98, + 18, + 175, + 245, + 28, + 226, + 75, + 87, + 67, + 10, + 27, + 29, + 19, + 3, + 139, + 20, + 28, + 114, + 241, + 181, + 73, + 99, + 71, + 56, + 239, + 51, + 54, + 113, + 135, + 30, + 158, + 53, + 187, + 36, + 118, + 156, + 113, + 196, + 93, + 230, + 170, + 52, + 33, + 23, + 130, + 147, + 132, + 73, + 122, + 65, + 195, + 153, + 97, + 121, + 69, + 100, + 78, + 183, + 219, + 20, + 118, + 66, + 181, + 232, + 13, + 114, + 166, + 198, + 9, + 81, + 65, + 186, + 85, + 28, + 216, + 50, + 24, + 107, + 173, + 222, + 94, + 104, + 56, + 99, + 15, + 242, + 156, + 158, + 103, + 199, + 74, + 196, + 34, + 56, + 231, + 86, + 165, + 56, + 26, + 233, + 79, + 126, + 6, + 13, + 14, + 125, + 66, + 82, + 15, + 171, + 99, + 40, + 50, + 37, + 179, + 30, + 251, + 163, + 165, + 57, + 64, + 209, + 65, + 244, + 85, + 216, + 86, + 117, + 34, + 98, + 80, + 195, + 208, + 91, + 166, + 248, + 96, + 150, + 193, + 20, + 14, + 175, + 72, + 223, + 93, + 191, + 94, + 120, + 85, + 236, + 77, + 51, + 161, + 52, + 217, + 202, + 172, + 90, + 115, + 163, + 140, + 204, + 185, + 174, + 6, + 9, + 177, + 159, + 151, + 70, + 141, + 222, + 69, + 226, + 141, + 46, + 55, + 174, + 19, + 6, + 193, + 87, + 156, + 183, + 98, + 152, + 182, + 9, + 62, + 141, + 172, + 109, + 222, + 60, + 243, + 24, + 147, + 165, + 15, + 105, + 24, + 3, + 150, + 53, + 150, + 18, + 100, + 8, + 108, + 29, + 161, + 195, + 77, + 206, + 227, + 57, + 126, + 82, + 143, + 208, + 162, + 99, + 162, + 211, + 6, + 156, + 210, + 120, + 246, + 138, + 48, + 16, + 199, + 46, + 0, + 239, + 147, + 166, + 202, + 156, + 176, + 102, + 231, + 107, + 43, + 110, + 168, + 203, + 155, + 222, + 1, + 35, + 145, + 197, + 128, + 147, + 26, + 45, + 147, + 101, + 25, + 16, + 199, + 205, + 212, + 210, + 234, + 72, + 186, + 202, + 106, + 168, + 213, + 240, + 206, + 11, + 171, + 209, + 202, + 70, + 17, + 97, + 46, + 47, + 95, + 245, + 137, + 172, + 94, + 47, + 191, + 146, + 35, + 131, + 138, + 0, + 77, + 110, + 180, + 96, + 81, + 89, + 94, + 226, + 141, + 85, + 224, + 135, + 125, + 194, + 138, + 15, + 112, + 46, + 176, + 177, + 195, + 186, + 77, + 21, + 205, + 34, + 176, + 133, + 161, + 18, + 39, + 27, + 83, + 177, + 159, + 219, + 82, + 112, + 186, + 124, + 191, + 24, + 238, + 10, + 206, + 233, + 38, + 160, + 226, + 6, + 229, + 233, + 144, + 244, + 29, + 228, + 232, + 172, + 36, + 236, + 111, + 224, + 114, + 38, + 224, + 171, + 123, + 127, + 70, + 255, + 127, + 147, + 199, + 31, + 203, + 191, + 154, + 83, + 70, + 215, + 223, + 241, + 102, + 175, + 152, + 159, + 225, + 106, + 236, + 34, + 16, + 26, + 71, + 184, + 218, + 254, + 210, + 205, + 201, + 234, + 84, + 145, + 224, + 87, + 106, + 20, + 4, + 39, + 1, + 26, + 81, + 99, + 115, + 19, + 215, + 122, + 123, + 7, + 207, + 199, + 41, + 194, + 77, + 6, + 222, + 235, + 33, + 54, + 21, + 246, + 180, + 206, + 64, + 212, + 6, + 12, + 222, + 18, + 114, + 53, + 10, + 10, + 179, + 116, + 184, + 221, + 45, + 172, + 198, + 132, + 185, + 133, + 27, + 123, + 226, + 186, + 216, + 206, + 230, + 228, + 144, + 242, + 240, + 110, + 79, + 216, + 59, + 135, + 241, + 218, + 218, + 88, + 103, + 65, + 94, + 110, + 32, + 39, + 161, + 7, + 232, + 251, + 60, + 227, + 31, + 203, + 26, + 56, + 156, + 97, + 72, + 84, + 101, + 130, + 121, + 13, + 43, + 70, + 13, + 207, + 237, + 1, + 143, + 103, + 174, + 200, + 166, + 66, + 4, + 91, + 218, + 88, + 36, + 32, + 84, + 88, + 106, + 161, + 147, + 115, + 231, + 166, + 94, + 28, + 175, + 56, + 166, + 173, + 157, + 62, + 211, + 226, + 144, + 182, + 103, + 163, + 213, + 162, + 200, + 51, + 118, + 219, + 69, + 85, + 157, + 2, + 15, + 39, + 251, + 244, + 169, + 234, + 220, + 202, + 217, + 38, + 149, + 187, + 14, + 61, + 151, + 208, + 231, + 74, + 188, + 148, + 185, + 150, + 208, + 158, + 174, + 163, + 175, + 22, + 219, + 33, + 243, + 225, + 53, + 246, + 218, + 102, + 113, + 15, + 229, + 88, + 135, + 241, + 72, + 10, + 114, + 76, + 177, + 66, + 88, + 179, + 177, + 32, + 205, + 170, + 176, + 217, + 111, + 236, + 104, + 57, + 60, + 1, + 240, + 222, + 60, + 194, + 140, + 65, + 213, + 5, + 20, + 87, + 37, + 123, + 8, + 204, + 188, + 27, + 237, + 22, + 80, + 65, + 134, + 222, + 43, + 143, + 29, + 144, + 24, + 107, + 22, + 206, + 94, + 252, + 82, + 191, + 78, + 39, + 194, + 181, + 25, + 207, + 208, + 160, + 103, + 28, + 168, + 222, + 158, + 167, + 203, + 244, + 198, + 65, + 214, + 24, + 240, + 186, + 4, + 80, + 100, + 135, + 104, + 198, + 121, + 87, + 182, + 148, + 63, + 254, + 64, + 177, + 123, + 140, + 14, + 41, + 76, + 156, + 157, + 158, + 62, + 184, + 97, + 174, + 144, + 59, + 119, + 59, + 11, + 50, + 94, + 137, + 172, + 143, + 209, + 158, + 1, + 67, + 90, + 193, + 50, + 17, + 64, + 138, + 193, + 178, + 115, + 205, + 30, + 62, + 113, + 44, + 93, + 209, + 167, + 138, + 25, + 190, + 55, + 28, + 179, + 213, + 136, + 75, + 191, + 214, + 242, + 229, + 134, + 47, + 239, + 228, + 131, + 225, + 82, + 62, + 90, + 251, + 23, + 122, + 80, + 131, + 148, + 143, + 199, + 216, + 222, + 169, + 225, + 247, + 54, + 84, + 35, + 80, + 231, + 18, + 189, + 86, + 25, + 222, + 7, + 108, + 38, + 185, + 39, + 162, + 173, + 19, + 192, + 6, + 199, + 23, + 71, + 108, + 190, + 162, + 85, + 80, + 45, + 75, + 16, + 175, + 1, + 108, + 106, + 180, + 163, + 80, + 4, + 70, + 196, + 176, + 206, + 211, + 153, + 21, + 213, + 246, + 15, + 187, + 244, + 136, + 113, + 23, + 248, + 174, + 241, + 46, + 246, + 51, + 61, + 110, + 129, + 152, + 119, + 223, + 177, + 115, + 104, + 239, + 157, + 90, + 109, + 161, + 75, + 49, + 198, + 234, + 132, + 11, + 72, + 193, + 214, + 224, + 176, + 133, + 233, + 77, + 179, + 218, + 27, + 90, + 70, + 145, + 101, + 113, + 44, + 214, + 91, + 160, + 203, + 172, + 177, + 132, + 129, + 74, + 48, + 117, + 91, + 92, + 242, + 61, + 238, + 20, + 150, + 146, + 7, + 155, + 155, + 187, + 175, + 5, + 138, + 220, + 232, + 169, + 134, + 155, + 64, + 151, + 126, + 113, + 76, + 244, + 120, + 11, + 45, + 58, + 110, + 243, + 128, + 49, + 185, + 147, + 199, + 196, + 2, + 200, + 26, + 118, + 80, + 122, + 170, + 36, + 30, + 176, + 146, + 10, + 162, + 58, + 155, + 218, + 152, + 24, + 208, + 68, + 111, + 79, + 18, + 82, + 50, + 36, + 201, + 111, + 83, + 30, + 68, + 138, + 105, + 52, + 91, + 80, + 109, + 131, + 185, + 71, + 163, + 153, + 58, + 15, + 4, + 155, + 20, + 154, + 125, + 230, + 167, + 66, + 70, + 145, + 106, + 46, + 187, + 51, + 15, + 160, + 57, + 27, + 253, + 1, + 217, + 225, + 118, + 94, + 33, + 95, + 250, + 188, + 29, + 89, + 109, + 80, + 42, + 96, + 72, + 141, + 222, + 166, + 172, + 11, + 108, + 137, + 241, + 23, + 47, + 69, + 179, + 27, + 223, + 13, + 107, + 148, + 55, + 185, + 141, + 246, + 176, + 29, + 203, + 155, + 154, + 107, + 210, + 188, + 197, + 179, + 234, + 70, + 255, + 66, + 151, + 248, + 121, + 86, + 61, + 155, + 196, + 89, + 215, + 130, + 208, + 205, + 111, + 110, + 130, + 70, + 6, + 198, + 141, + 134, + 236, + 194, + 8, + 107, + 36, + 134, + 236, + 152, + 13, + 55, + 221, + 52, + 139, + 153, + 128, + 183, + 33, + 191, + 68, + 96, + 125, + 50, + 64, + 127, + 138, + 115, + 149, + 77, + 85, + 159, + 164, + 196, + 165, + 60, + 200, + 214, + 76, + 73, + 7, + 194, + 144, + 78, + 29, + 176, + 14, + 47, + 204, + 121, + 240, + 127, + 114, + 70, + 72, + 38, + 211, + 191, + 143, + 41, + 31, + 11, + 232, + 38, + 12, + 211, + 198, + 213, + 224, + 240, + 21, + 138, + 133, + 171, + 33, + 5, + 59, + 107, + 40, + 159, + 186, + 188, + 202, + 247, + 181, + 182, + 123, + 87, + 111, + 97, + 20, + 38, + 141, + 55, + 34, + 179, + 128, + 230, + 247, + 122, + 76, + 53, + 47, + 36, + 239, + 98, + 19, + 251, + 81, + 188, + 13, + 246, + 114, + 151, + 224, + 247, + 141, + 56, + 25, + 38, + 15, + 118, + 93, + 233, + 111, + 110, + 160, + 90, + 168, + 115, + 53, + 20, + 227, + 124, + 61, + 160, + 110, + 243, + 191, + 95, + 177, + 146, + 244, + 206, + 35, + 172, + 106, + 187, + 89, + 222, + 82, + 61, + 194, + 170, + 176, + 203, + 145, + 42, + 247, + 31, + 75, + 105, + 92, + 153, + 110, + 178, + 89, + 5, + 201, + 195, + 179, + 159, + 78, + 219, + 22, + 7, + 78, + 135, + 249, + 118, + 121, + 178, + 163, + 126, + 213, + 190, + 240, + 165, + 179, + 200, + 54, + 44, + 162, + 78, + 31, + 255, + 197, + 176, + 182, + 131, + 71, + 7, + 2, + 162, + 20, + 120, + 122, + 36, + 251, + 60, + 188, + 183, + 109, + 64, + 230, + 170, + 173, + 62, + 100, + 98, + 32, + 176, + 44, + 13, + 197, + 237, + 5, + 25, + 103, + 107, + 151, + 13, + 247, + 3, + 71, + 218, + 97, + 103, + 250, + 186, + 29, + 184, + 27, + 94, + 134, + 92, + 144, + 119, + 218, + 246, + 113, + 14, + 167, + 88, + 242, + 104, + 124, + 138, + 83, + 96, + 15, + 137, + 109, + 72, + 207, + 229, + 139, + 169, + 113, + 246, + 19, + 181, + 201, + 6, + 252, + 205, + 45, + 167, + 58, + 109, + 130, + 188, + 102, + 47, + 24, + 186, + 164, + 228, + 82, + 122, + 169, + 205, + 205, + 49, + 145, + 200, + 245, + 218, + 163, + 145, + 158, + 225, + 13, + 52, + 216, + 232, + 113, + 195, + 159, + 64, + 68, + 92, + 65, + 204, + 108, + 55, + 238, + 70, + 23, + 196, + 76, + 49, + 126, + 59, + 239, + 247, + 180, + 57, + 17, + 127, + 21, + 253, + 171, + 38, + 208, + 182, + 70, + 167, + 95, + 218, + 3, + 120, + 38, + 54, + 94, + 118, + 26, + 76, + 231, + 96, + 64, + 115, + 179, + 123, + 154, + 30, + 69, + 54, + 214, + 157, + 47, + 32, + 220, + 26, + 97, + 157, + 236, + 157, + 146, + 10, + 22, + 3, + 94, + 210, + 232, + 34, + 234, + 188, + 43, + 137, + 79, + 234, + 119, + 106, + 113, + 228, + 80, + 218, + 226, + 184, + 99, + 95, + 29, + 74, + 219, + 131, + 98, + 40, + 237, + 153, + 218, + 195, + 137, + 47, + 126, + 65, + 173, + 200, + 44, + 97, + 43, + 210, + 186, + 92, + 81, + 198, + 12, + 175, + 152, + 195, + 244, + 37, + 212, + 83, + 112, + 186, + 13, + 74, + 35, + 110, + 40, + 52, + 192, + 6, + 198, + 235, + 175, + 166, + 49, + 108, + 19, + 84, + 122, + 151, + 11, + 164, + 70, + 58, + 174, + 120, + 59, + 222, + 228, + 237, + 173, + 90, + 177, + 61, + 221, + 31, + 171, + 136, + 49, + 174, + 5, + 140, + 218, + 24, + 3, + 122, + 3, + 57, + 94, + 22, + 90, + 1, + 20, + 5, + 192, + 123, + 130, + 104, + 167, + 189, + 156, + 142, + 1, + 202, + 35, + 188, + 98, + 110, + 110, + 152, + 210, + 127, + 211, + 166, + 140, + 165, + 228, + 74, + 105, + 192, + 90, + 222, + 55, + 162, + 109, + 184, + 228, + 130, + 103, + 13, + 237, + 105, + 142, + 217, + 142, + 173, + 153, + 149, + 170, + 183, + 150, + 234, + 236, + 109, + 174, + 158, + 213, + 140, + 29, + 123, + 111, + 221, + 63, + 171, + 3, + 198, + 119, + 246, + 210, + 102, + 146, + 205, + 43, + 31, + 64, + 241, + 214, + 200, + 111, + 164, + 214, + 237, + 139, + 227, + 187, + 124, + 81, + 61, + 100, + 241, + 157, + 252, + 5, + 123, + 104, + 82, + 61, + 46, + 64, + 225, + 173, + 222, + 201, + 242, + 149, + 234, + 177, + 0, + 152, + 245, + 226, + 29, + 180, + 64, + 246, + 156, + 142, + 238, + 28, + 169, + 24, + 197, + 93, + 225, + 113, + 240, + 25, + 208, + 72, + 77, + 64, + 227, + 215, + 134, + 77, + 216, + 229, + 61, + 40, + 210, + 24, + 248, + 185, + 188, + 135, + 99, + 83, + 168, + 220, + 224, + 254, + 92, + 231, + 148, + 18, + 91, + 240, + 248, + 82, + 233, + 10, + 77, + 19, + 251, + 94, + 35, + 182, + 75, + 159, + 64, + 195, + 176, + 200, + 83, + 236, + 60, + 184, + 65, + 198, + 142, + 251, + 235, + 214, + 54, + 19, + 28, + 12, + 178, + 176, + 177, + 139, + 45, + 14, + 3, + 85, + 118, + 198, + 70, + 15, + 0, + 223, + 187, + 159, + 184, + 21, + 217, + 30, + 186, + 26, + 73, + 62, + 200, + 8, + 219, + 252, + 125, + 123, + 143, + 157, + 32, + 45, + 56, + 164, + 186, + 241, + 54, + 15, + 50, + 207, + 253, + 76, + 27, + 123, + 5, + 225, + 114, + 22, + 191, + 133, + 75, + 37, + 173, + 237, + 118, + 47, + 136, + 61, + 221, + 55, + 98, + 52, + 162, + 141, + 99, + 120, + 111, + 128, + 208, + 248, + 233, + 188, + 237, + 111, + 163, + 143, + 64, + 149, + 234, + 71, + 176, + 247, + 24, + 141, + 237, + 85, + 216, + 96, + 204, + 24, + 142, + 205, + 247, + 249, + 20, + 170, + 206, + 92, + 194, + 211, + 4, + 61, + 53, + 120, + 170, + 153, + 251, + 47, + 5, + 148, + 86, + 185, + 229, + 242, + 244, + 248, + 84, + 110, + 89, + 108, + 123, + 222, + 69, + 153, + 97, + 218, + 128, + 180, + 172, + 19, + 20, + 100, + 160, + 49, + 66, + 145, + 114, + 237, + 180, + 187, + 200, + 56, + 141, + 26, + 93, + 78, + 92, + 198, + 201, + 18, + 251, + 166, + 228, + 124, + 205, + 251, + 174, + 232, + 167, + 183, + 48, + 17, + 12, + 87, + 39, + 95, + 206, + 77, + 85, + 227, + 60, + 174, + 102, + 215, + 201, + 198, + 176, + 165, + 51, + 18, + 98, + 91, + 48, + 144, + 99, + 2, + 141, + 29, + 179, + 166, + 50, + 36, + 232, + 252, + 17, + 22, + 73, + 116, + 12, + 83, + 71, + 216, + 146, + 185, + 10, + 254, + 121, + 207, + 22, + 10, + 249, + 217, + 117, + 143, + 253, + 4, + 216, + 61, + 198, + 234, + 12, + 134, + 206, + 144, + 233, + 93, + 245, + 175, + 71, + 64, + 178, + 176, + 74, + 252, + 94, + 10, + 218, + 165, + 160, + 171, + 177, + 61, + 141, + 172, + 13, + 83, + 57, + 212, + 77, + 100, + 125, + 123, + 111, + 72, + 8, + 116, + 109, + 207, + 94, + 51, + 233, + 26, + 11, + 140, + 41, + 52, + 98, + 172, + 234, + 161, + 8, + 214, + 144, + 48, + 82, + 126, + 166, + 135, + 196, + 141, + 229, + 124, + 145, + 203, + 199, + 128, + 182, + 66, + 70, + 126, + 213, + 94, + 223, + 128, + 116, + 184, + 106, + 239, + 233, + 197, + 39, + 105, + 77, + 43, + 197, + 195, + 178, + 43, + 165, + 208, + 104, + 109, + 122, + 124, + 167, + 70, + 10, + 185, + 32, + 85, + 15, + 51, + 131, + 189, + 252, + 42, + 231, + 37, + 206, + 99, + 208, + 110, + 92, + 40, + 79, + 243, + 139, + 154, + 152, + 157, + 74, + 177, + 164, + 133, + 25, + 248, + 118, + 111, + 179, + 223, + 80, + 3, + 175, + 187, + 9, + 164, + 164, + 128, + 94, + 71, + 50, + 183, + 209, + 28, + 36, + 104, + 167, + 88, + 158, + 250, + 115, + 117, + 54, + 218, + 9, + 150, + 199, + 77, + 88, + 222, + 57, + 229, + 171, + 182, + 219, + 226, + 118, + 49, + 247, + 10, + 107, + 224, + 101, + 59, + 59, + 212, + 177, + 226, + 224, + 180, + 22, + 200, + 33, + 240, + 192, + 221, + 216, + 42, + 151, + 213, + 27, + 96, + 199, + 221, + 188, + 83, + 251, + 234, + 2, + 231, + 240, + 148, + 183, + 84, + 203, + 5, + 151, + 183, + 38, + 151, + 217, + 72, + 77, + 94, + 211, + 187, + 139, + 249, + 222, + 248, + 160, + 168, + 18, + 76, + 67, + 1, + 11, + 28, + 99, + 53, + 210, + 91, + 28, + 11, + 28, + 107, + 88, + 104, + 150, + 82, + 86, + 61, + 22, + 16, + 63, + 81, + 217, + 161, + 85, + 89, + 29, + 241, + 83, + 154, + 59, + 204, + 208, + 31, + 81, + 225, + 130, + 15, + 82, + 136, + 167, + 183, + 135, + 34, + 206, + 5, + 52, + 58, + 77, + 87, + 209, + 8, + 200, + 52, + 182, + 156, + 158, + 41, + 214, + 123, + 222, + 34, + 37, + 253, + 141, + 212, + 98, + 237, + 24, + 104, + 75, + 215, + 99, + 17, + 22, + 114, + 70, + 247, + 208, + 70, + 230, + 234, + 69, + 33, + 235, + 108, + 187, + 35, + 88, + 40, + 199, + 153, + 179, + 25, + 122, + 110, + 234, + 50, + 23, + 174, + 231, + 242, + 231, + 180, + 140, + 219, + 235, + 177, + 238, + 213, + 141, + 177, + 26, + 155, + 195, + 240, + 48, + 144, + 21, + 99, + 82, + 55, + 182, + 111, + 215, + 153, + 202, + 177, + 165, + 114, + 177, + 231, + 249, + 69, + 146, + 221, + 200, + 197, + 100, + 183, + 196, + 97, + 141, + 113, + 72, + 60, + 5, + 17, + 78, + 97, + 200, + 34, + 141, + 111, + 13, + 112, + 169, + 103, + 163, + 142, + 98, + 9, + 172, + 185, + 99, + 10, + 71, + 202, + 63, + 73, + 185, + 69, + 135, + 109, + 49, + 234, + 38, + 101, + 38, + 59, + 100, + 2, + 213, + 77, + 202, + 22, + 197, + 188, + 157, + 7, + 74, + 246, + 99, + 1, + 40, + 1, + 82, + 220, + 211, + 181, + 42, + 41, + 157, + 128, + 59, + 46, + 92, + 245, + 249, + 160, + 39, + 164, + 177, + 154, + 21, + 144, + 59, + 138, + 13, + 233, + 236, + 105, + 47, + 54, + 221, + 223, + 42, + 188, + 226, + 141, + 214, + 126, + 44, + 125, + 179, + 63, + 255, + 214, + 75, + 122, + 215, + 120, + 247, + 123, + 131, + 9, + 135, + 188, + 211, + 20, + 26, + 121, + 6, + 231, + 188, + 222, + 166, + 179, + 235, + 212, + 144, + 20, + 25, + 32, + 123, + 135, + 126, + 244, + 117, + 135, + 50, + 53, + 164, + 135, + 18, + 98, + 150, + 184, + 74, + 120, + 131, + 158, + 61, + 163, + 32, + 126, + 198, + 149, + 174, + 106, + 78, + 62, + 97, + 83, + 103, + 76, + 254, + 51, + 84, + 35, + 98, + 246, + 187, + 86, + 185, + 21, + 55, + 4, + 23, + 221, + 242, + 114, + 70, + 207, + 111, + 135, + 121, + 31, + 59, + 177, + 13, + 180, + 189, + 119, + 201, + 9, + 118, + 34, + 95, + 220, + 28, + 236, + 211, + 68, + 47, + 16, + 218, + 222, + 43, + 243, + 113, + 62, + 222, + 219, + 180, + 136, + 96, + 77, + 28, + 141, + 193, + 57, + 79, + 216, + 204, + 195, + 162, + 76, + 247, + 107, + 58, + 161, + 213, + 86, + 219, + 98, + 96, + 27, + 157, + 81, + 212, + 50, + 16, + 207, + 2, + 239, + 148, + 51, + 78, + 201, + 80, + 8, + 138, + 98, + 141, + 158, + 165, + 219, + 75, + 56, + 113, + 55, + 239, + 243, + 254, + 127, + 189, + 50, + 72, + 34, + 16, + 227, + 78, + 234, + 13, + 77, + 119, + 196, + 126, + 131, + 60, + 224, + 169, + 46, + 112, + 213, + 110, + 135, + 2, + 36, + 38, + 157, + 80, + 148, + 58, + 219, + 126, + 199, + 114, + 104, + 214, + 115, + 168, + 226, + 152, + 68, + 152, + 175, + 161, + 214, + 200, + 209, + 165, + 147, + 184, + 173, + 145, + 250, + 233, + 234, + 73, + 154, + 59, + 84, + 40, + 254, + 46, + 102, + 238, + 147, + 151, + 141, + 235, + 242, + 222, + 200, + 116, + 82, + 129, + 109, + 141, + 98, + 7, + 210, + 13, + 67, + 49, + 52, + 190, + 58, + 87, + 75, + 165, + 241, + 233, + 3, + 17, + 196, + 107, + 167, + 236, + 94, + 11, + 32, + 55, + 12, + 27, + 186, + 164, + 215, + 48, + 12, + 121, + 132, + 133, + 188, + 34, + 243, + 103, + 168, + 151, + 144, + 58, + 77, + 208, + 199, + 6, + 50, + 137, + 85, + 243, + 217, + 19, + 201, + 123, + 220, + 245, + 210, + 191, + 61, + 225, + 157, + 163, + 147, + 111, + 35, + 3, + 136, + 169, + 220, + 176, + 238, + 118, + 176, + 181, + 65, + 77, + 134, + 53, + 185, + 179, + 209, + 228, + 52, + 216, + 172, + 33, + 191, + 225, + 92, + 125, + 155, + 252, + 125, + 189, + 59, + 36, + 47, + 228, + 198, + 245, + 122, + 145, + 114, + 113, + 12, + 213, + 215, + 4, + 108, + 99, + 94, + 172, + 153, + 251, + 168, + 20, + 130, + 227, + 98, + 206, + 124, + 132, + 211, + 164, + 30, + 220, + 57, + 36, + 94, + 163, + 45, + 177, + 19, + 25, + 58, + 85, + 207, + 34, + 4, + 99, + 142, + 175, + 105, + 165, + 36, + 122, + 105, + 109, + 217, + 137, + 51, + 205, + 75, + 107, + 203, + 135, + 170, + 231, + 43, + 140, + 51, + 37, + 189, + 100, + 253, + 249, + 138, + 15, + 112, + 185, + 150, + 8, + 165, + 87, + 112, + 233, + 112, + 11, + 189, + 199, + 25, + 16, + 16, + 117, + 175, + 9, + 8, + 58, + 237, + 173, + 86, + 97, + 180, + 65, + 109, + 58, + 61, + 163, + 141, + 26, + 197, + 48, + 37, + 102, + 197, + 165, + 11, + 60, + 127, + 161, + 211, + 182, + 49, + 173, + 50, + 114, + 85, + 231, + 115, + 197, + 42, + 218, + 170, + 48, + 18, + 253, + 214, + 98, + 236, + 252, + 184, + 181, + 64, + 54, + 216, + 251, + 149, + 179, + 215, + 243, + 252, + 232, + 131, + 130, + 98, + 210, + 150, + 126, + 1, + 242, + 213, + 175, + 54, + 248, + 255, + 138, + 184, + 157, + 192, + 66, + 38, + 95, + 77, + 39, + 158, + 254, + 78, + 189, + 228, + 229, + 96, + 196, + 9, + 108, + 167, + 93, + 148, + 167, + 127, + 233, + 121, + 110, + 35, + 224, + 194, + 90, + 138, + 161, + 121, + 70, + 110, + 60, + 217, + 75, + 149, + 54, + 132, + 185, + 73, + 27, + 195, + 64, + 83, + 176, + 41, + 113, + 43, + 192, + 119, + 114, + 191, + 218, + 27, + 120, + 203, + 210, + 78, + 158, + 17, + 131, + 204, + 185, + 66, + 203, + 168, + 50, + 222, + 112, + 122, + 19, + 184, + 60, + 105, + 165, + 70, + 106, + 177, + 195, + 126, + 52, + 136, + 226, + 136, + 248, + 107, + 74, + 201, + 106, + 47, + 169, + 131, + 112, + 107, + 10, + 135, + 108, + 182, + 170, + 239, + 25, + 121, + 47, + 50, + 178, + 176, + 42, + 214, + 85, + 101, + 40, + 194, + 152, + 123, + 192, + 198, + 217, + 136, + 162, + 227, + 22, + 207, + 65, + 66, + 254, + 37, + 105, + 182, + 39, + 245, + 118, + 19, + 37, + 156, + 176, + 87, + 163, + 221, + 34, + 17, + 194, + 208, + 184, + 123, + 86, + 13, + 237, + 33, + 82, + 64, + 238, + 204, + 158, + 137, + 246, + 133, + 58, + 71, + 95, + 150, + 166, + 58, + 82, + 1, + 71, + 237, + 81, + 205, + 225, + 60, + 69, + 235, + 180, + 103, + 19, + 208, + 237, + 188, + 237, + 96, + 67, + 90, + 53, + 165, + 205, + 1, + 59, + 44, + 165, + 172, + 29, + 178, + 106, + 114, + 122, + 206, + 51, + 247, + 218, + 0, + 239, + 120, + 230, + 63, + 118, + 39, + 150, + 37, + 19, + 198, + 194, + 16, + 203, + 186, + 97, + 176, + 95, + 71, + 250, + 121, + 2, + 57, + 170, + 186, + 65, + 156, + 141, + 66, + 97, + 158, + 219, + 81, + 199, + 208, + 34, + 41, + 125, + 228, + 217, + 218, + 225, + 236, + 145, + 167, + 31, + 100, + 72, + 203, + 125, + 161, + 71, + 19, + 127, + 196, + 105, + 80, + 182, + 165, + 179, + 207, + 36, + 79, + 88, + 115, + 134, + 120, + 93, + 179, + 18, + 199, + 13, + 190, + 198, + 30, + 157, + 18, + 63, + 101, + 192, + 137, + 177, + 196, + 79, + 91, + 97, + 162, + 185, + 65, + 58, + 59, + 68, + 139, + 49, + 40, + 79, + 44, + 220, + 250, + 253, + 34, + 80, + 4, + 170, + 103, + 162, + 226, + 3, + 156, + 37, + 135, + 30, + 179, + 5, + 158, + 65, + 93, + 69, + 36, + 129, + 25, + 6, + 238, + 144, + 231, + 92, + 151, + 232, + 141, + 141, + 33, + 116, + 123, + 19, + 54, + 93, + 51, + 167, + 110, + 60, + 239, + 222, + 174, + 59, + 244, + 82, + 160, + 27, + 143, + 52, + 162, + 74, + 254, + 70, + 80, + 163, + 189, + 95, + 129, + 195, + 101, + 155, + 26, + 219, + 199, + 5, + 114, + 187, + 115, + 250, + 122, + 81, + 111, + 135, + 128, + 139, + 46, + 132, + 203, + 35, + 109, + 154, + 47, + 45, + 89, + 67, + 206, + 128, + 154, + 217, + 229, + 51, + 149, + 154, + 23, + 31, + 87, + 223, + 31, + 101, + 9, + 39, + 6, + 75, + 153, + 103, + 126, + 250, + 29, + 205, + 206, + 75, + 186, + 65, + 22, + 199, + 205, + 232, + 107, + 43, + 115, + 50, + 168, + 106, + 152, + 244, + 212, + 82, + 148, + 105, + 222, + 150, + 35, + 182, + 190, + 41, + 34, + 59, + 142, + 21, + 237, + 25, + 110, + 114, + 119, + 124, + 151, + 210, + 245, + 80, + 170, + 33, + 108, + 239, + 160, + 198, + 241, + 49, + 93, + 183, + 167, + 95, + 172, + 24, + 166, + 28, + 57, + 112, + 145, + 166, + 94, + 153, + 87, + 217, + 35, + 103, + 236, + 84, + 182, + 117, + 58, + 30, + 81, + 88, + 50, + 87, + 163, + 95, + 12, + 202, + 134, + 141, + 107, + 241, + 238, + 145, + 217, + 165, + 51, + 49, + 171, + 26, + 49, + 243, + 92, + 182, + 79, + 116, + 230, + 231, + 206, + 10, + 235, + 84, + 249, + 66, + 63, + 231, + 174, + 229, + 248, + 96, + 17, + 55, + 209, + 52, + 8, + 169, + 18, + 179, + 188, + 120, + 155, + 152, + 160, + 60, + 56, + 25, + 142, + 181, + 103, + 234, + 8, + 107, + 8, + 27, + 87, + 213, + 108, + 27, + 148, + 87, + 8, + 109, + 214, + 196, + 201, + 36, + 6, + 115, + 237, + 70, + 146, + 36, + 169, + 55, + 46, + 196, + 112, + 165, + 61, + 227, + 222, + 250, + 100, + 158, + 201, + 157, + 50, + 48, + 218, + 126, + 14, + 112, + 35, + 232, + 72, + 219, + 107, + 6, + 137, + 135, + 109, + 31, + 230, + 243, + 166, + 94, + 234, + 215, + 87, + 170, + 66, + 50, + 12, + 75, + 98, + 20, + 178, + 10, + 201, + 24, + 108, + 194, + 80, + 1, + 242, + 80, + 113, + 211, + 132, + 34, + 184, + 95, + 251, + 76, + 232, + 24, + 85, + 231, + 37, + 87, + 34, + 196, + 162, + 192, + 52, + 155, + 77, + 136, + 136, + 231, + 198, + 240, + 165, + 19, + 72, + 208, + 77, + 77, + 70, + 35, + 83, + 92, + 208, + 185, + 64, + 20, + 187, + 161, + 30, + 74, + 91, + 139, + 10, + 63, + 54, + 112, + 54, + 87, + 227, + 152, + 4, + 97, + 142, + 164, + 13, + 80, + 54, + 166, + 162, + 168, + 51, + 64, + 112, + 79, + 83, + 214, + 116, + 131, + 201, + 190, + 26, + 107, + 169, + 196, + 80, + 216, + 115, + 63, + 96, + 162, + 71, + 137, + 161, + 18, + 12, + 154, + 124, + 150, + 24, + 90, + 83, + 98, + 120, + 125, + 107, + 254, + 29, + 255, + 15, + 78, + 244, + 225, + 219, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 53, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 48, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 55, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 57, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 50, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 49, + 49, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 51, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 49, + 51, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 52, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 49, + 53, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 53, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 49, + 55, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 54, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 49, + 57, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 55, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 54, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 50, + 49, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 56, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 50, + 51, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 57, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 50, + 53, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 48, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 50, + 55, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 49, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 50, + 57, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 50, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 51, + 49, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 51, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 51, + 51, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 52, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 10, + 47, + 82, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 80, + 114, + 111, + 99, + 83, + 101, + 116, + 32, + 91, + 47, + 80, + 68, + 70, + 32, + 47, + 84, + 101, + 120, + 116, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 66, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 67, + 32, + 47, + 73, + 109, + 97, + 103, + 101, + 73, + 93, + 10, + 47, + 69, + 120, + 116, + 71, + 83, + 116, + 97, + 116, + 101, + 32, + 60, + 60, + 47, + 71, + 51, + 32, + 51, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 47, + 70, + 111, + 110, + 116, + 32, + 60, + 60, + 47, + 70, + 52, + 32, + 52, + 32, + 48, + 32, + 82, + 62, + 62, + 62, + 62, + 10, + 47, + 77, + 101, + 100, + 105, + 97, + 66, + 111, + 120, + 32, + 91, + 48, + 32, + 48, + 32, + 53, + 57, + 54, + 32, + 56, + 52, + 50, + 93, + 10, + 47, + 67, + 111, + 110, + 116, + 101, + 110, + 116, + 115, + 32, + 51, + 53, + 32, + 48, + 32, + 82, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 80, + 97, + 114, + 101, + 110, + 116, + 115, + 32, + 49, + 53, + 10, + 47, + 84, + 97, + 98, + 115, + 32, + 47, + 83, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 115, + 10, + 47, + 67, + 111, + 117, + 110, + 116, + 32, + 56, + 10, + 47, + 75, + 105, + 100, + 115, + 32, + 91, + 50, + 32, + 48, + 32, + 82, + 32, + 54, + 32, + 48, + 32, + 82, + 32, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 93, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 56, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 115, + 10, + 47, + 67, + 111, + 117, + 110, + 116, + 32, + 56, + 10, + 47, + 75, + 105, + 100, + 115, + 32, + 91, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 93, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 32, + 51, + 56, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 103, + 101, + 115, + 10, + 47, + 67, + 111, + 117, + 110, + 116, + 32, + 49, + 54, + 10, + 47, + 75, + 105, + 100, + 115, + 32, + 91, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 32, + 48, + 32, + 82, + 93, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 53, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 54, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 55, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 56, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 57, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 48, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 49, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 50, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 51, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 52, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 53, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 54, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 55, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 56, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 49, + 57, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 48, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 49, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 50, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 49, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 51, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 52, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 53, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 54, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 55, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 56, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 50, + 57, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 48, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 49, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 50, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 51, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 52, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 53, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 50, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 54, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 55, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 56, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 50, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 49, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 56, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 57, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 49, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 50, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 51, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 52, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 53, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 54, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 80, + 10, + 47, + 80, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 103, + 32, + 51, + 52, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 49, + 55, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 69, + 108, + 101, + 109, + 10, + 47, + 83, + 32, + 47, + 68, + 111, + 99, + 117, + 109, + 101, + 110, + 116, + 10, + 47, + 80, + 32, + 51, + 57, + 32, + 48, + 32, + 82, + 10, + 47, + 75, + 32, + 91, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 56, + 54, + 32, + 48, + 32, + 82, + 32, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 56, + 32, + 48, + 32, + 82, + 93, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 50, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 54, + 53, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 56, + 54, + 32, + 48, + 32, + 82, + 32, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 57, + 48, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 53, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 49, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 48, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 49, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 52, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 49, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 56, + 57, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 49, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 51, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 50, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 55, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 50, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 49, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 50, + 54, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 54, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 51, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 50, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 50, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 49, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 51, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 55, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 51, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 52, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 53, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 50, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 50, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 51, + 54, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 54, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 55, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 54, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 51, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 51, + 56, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 56, + 57, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 48, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 50, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 51, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 52, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 53, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 54, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 55, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 56, + 32, + 48, + 32, + 82, + 32, + 51, + 57, + 57, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 48, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 56, + 32, + 48, + 32, + 82, + 32, + 52, + 48, + 57, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 48, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 91, + 52, + 49, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 56, + 32, + 48, + 32, + 82, + 32, + 52, + 49, + 57, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 48, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 49, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 51, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 52, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 53, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 54, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 55, + 32, + 48, + 32, + 82, + 32, + 52, + 50, + 56, + 32, + 48, + 32, + 82, + 93, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 53, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 84, + 114, + 101, + 101, + 10, + 47, + 78, + 117, + 109, + 115, + 32, + 91, + 48, + 32, + 52, + 50, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 32, + 52, + 51, + 48, + 32, + 48, + 32, + 82, + 32, + 50, + 32, + 52, + 51, + 49, + 32, + 48, + 32, + 82, + 32, + 51, + 32, + 52, + 51, + 50, + 32, + 48, + 32, + 82, + 32, + 52, + 32, + 52, + 51, + 51, + 32, + 48, + 32, + 82, + 32, + 53, + 32, + 52, + 51, + 52, + 32, + 48, + 32, + 82, + 32, + 54, + 32, + 52, + 51, + 53, + 32, + 48, + 32, + 82, + 32, + 55, + 32, + 52, + 51, + 54, + 32, + 48, + 32, + 82, + 32, + 56, + 32, + 52, + 51, + 55, + 32, + 48, + 32, + 82, + 32, + 57, + 32, + 52, + 51, + 56, + 32, + 48, + 32, + 82, + 32, + 49, + 48, + 32, + 52, + 51, + 57, + 32, + 48, + 32, + 82, + 32, + 49, + 49, + 32, + 52, + 52, + 48, + 32, + 48, + 32, + 82, + 32, + 49, + 50, + 32, + 52, + 52, + 49, + 32, + 48, + 32, + 82, + 32, + 49, + 51, + 32, + 52, + 52, + 50, + 32, + 48, + 32, + 82, + 32, + 49, + 52, + 32, + 52, + 52, + 51, + 32, + 48, + 32, + 82, + 32, + 49, + 53, + 32, + 52, + 52, + 52, + 32, + 48, + 32, + 82, + 93, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 51, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 84, + 114, + 101, + 101, + 82, + 111, + 111, + 116, + 10, + 47, + 75, + 32, + 52, + 48, + 32, + 48, + 32, + 82, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 84, + 114, + 101, + 101, + 78, + 101, + 120, + 116, + 75, + 101, + 121, + 32, + 49, + 54, + 10, + 47, + 80, + 97, + 114, + 101, + 110, + 116, + 84, + 114, + 101, + 101, + 32, + 52, + 52, + 53, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 54, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 67, + 97, + 116, + 97, + 108, + 111, + 103, + 10, + 47, + 80, + 97, + 103, + 101, + 115, + 32, + 51, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 77, + 97, + 114, + 107, + 73, + 110, + 102, + 111, + 32, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 77, + 97, + 114, + 107, + 73, + 110, + 102, + 111, + 10, + 47, + 77, + 97, + 114, + 107, + 101, + 100, + 32, + 116, + 114, + 117, + 101, + 62, + 62, + 10, + 47, + 83, + 116, + 114, + 117, + 99, + 116, + 84, + 114, + 101, + 101, + 82, + 111, + 111, + 116, + 32, + 51, + 57, + 32, + 48, + 32, + 82, + 10, + 47, + 86, + 105, + 101, + 119, + 101, + 114, + 80, + 114, + 101, + 102, + 101, + 114, + 101, + 110, + 99, + 101, + 115, + 32, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 86, + 105, + 101, + 119, + 101, + 114, + 80, + 114, + 101, + 102, + 101, + 114, + 101, + 110, + 99, + 101, + 115, + 10, + 47, + 68, + 105, + 115, + 112, + 108, + 97, + 121, + 68, + 111, + 99, + 84, + 105, + 116, + 108, + 101, + 32, + 116, + 114, + 117, + 101, + 62, + 62, + 10, + 47, + 76, + 97, + 110, + 103, + 32, + 40, + 101, + 110, + 95, + 71, + 66, + 41, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 55, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 49, + 32, + 52, + 52, + 56, + 50, + 48, + 10, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 50, + 55, + 55, + 57, + 53, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 236, + 188, + 121, + 120, + 84, + 69, + 246, + 63, + 252, + 169, + 186, + 91, + 239, + 125, + 187, + 59, + 157, + 238, + 116, + 58, + 221, + 183, + 211, + 73, + 7, + 210, + 4, + 66, + 18, + 72, + 26, + 130, + 105, + 32, + 65, + 52, + 34, + 107, + 48, + 65, + 34, + 137, + 128, + 224, + 130, + 44, + 193, + 125, + 139, + 43, + 138, + 11, + 232, + 56, + 140, + 58, + 142, + 187, + 35, + 234, + 56, + 54, + 33, + 96, + 19, + 157, + 129, + 81, + 70, + 199, + 5, + 209, + 17, + 113, + 65, + 17, + 17, + 215, + 17, + 101, + 20, + 113, + 129, + 164, + 126, + 79, + 85, + 119, + 88, + 70, + 231, + 251, + 204, + 247, + 253, + 227, + 125, + 159, + 223, + 251, + 204, + 237, + 244, + 169, + 83, + 203, + 61, + 85, + 117, + 234, + 212, + 169, + 83, + 167, + 170, + 3, + 2, + 192, + 67, + 0, + 25, + 229, + 199, + 215, + 55, + 140, + 35, + 43, + 200, + 41, + 0, + 245, + 3, + 104, + 62, + 126, + 210, + 196, + 169, + 191, + 221, + 179, + 105, + 30, + 160, + 190, + 7, + 80, + 249, + 248, + 169, + 77, + 99, + 44, + 127, + 214, + 110, + 2, + 72, + 10, + 64, + 249, + 196, + 169, + 67, + 42, + 46, + 204, + 125, + 42, + 6, + 208, + 69, + 0, + 218, + 166, + 215, + 79, + 104, + 158, + 116, + 219, + 89, + 223, + 1, + 165, + 231, + 0, + 174, + 219, + 103, + 47, + 104, + 95, + 68, + 159, + 148, + 30, + 6, + 232, + 107, + 0, + 110, + 159, + 125, + 254, + 82, + 227, + 254, + 224, + 91, + 255, + 0, + 76, + 187, + 0, + 117, + 218, + 25, + 139, + 230, + 45, + 120, + 229, + 162, + 150, + 187, + 0, + 103, + 21, + 160, + 158, + 59, + 175, + 189, + 99, + 17, + 252, + 48, + 3, + 164, + 22, + 128, + 62, + 239, + 156, + 139, + 206, + 152, + 50, + 116, + 241, + 175, + 1, + 30, + 237, + 200, + 153, + 63, + 103, + 193, + 133, + 193, + 7, + 99, + 95, + 0, + 222, + 135, + 0, + 179, + 105, + 254, + 220, + 246, + 57, + 187, + 114, + 158, + 255, + 7, + 64, + 118, + 1, + 24, + 62, + 127, + 254, + 220, + 118, + 119, + 165, + 185, + 24, + 32, + 55, + 1, + 40, + 154, + 191, + 96, + 233, + 133, + 174, + 209, + 254, + 249, + 128, + 50, + 31, + 32, + 75, + 207, + 89, + 56, + 187, + 253, + 182, + 215, + 47, + 121, + 25, + 144, + 230, + 0, + 248, + 243, + 130, + 246, + 11, + 23, + 41, + 27, + 236, + 157, + 0, + 57, + 9, + 128, + 113, + 110, + 251, + 130, + 185, + 190, + 182, + 161, + 239, + 3, + 114, + 17, + 64, + 234, + 23, + 45, + 236, + 88, + 202, + 74, + 177, + 10, + 32, + 231, + 240, + 252, + 69, + 75, + 230, + 46, + 42, + 222, + 62, + 97, + 35, + 16, + 250, + 3, + 96, + 253, + 51, + 0, + 9, + 38, + 80, + 184, + 64, + 24, + 131, + 4, + 206, + 203, + 211, + 240, + 13, + 106, + 241, + 59, + 104, + 160, + 208, + 49, + 4, + 211, + 1, + 249, + 15, + 214, + 63, + 67, + 1, + 133, + 4, + 241, + 176, + 18, + 78, + 243, + 23, + 30, + 2, + 104, + 199, + 245, + 157, + 140, + 177, + 58, + 126, + 122, + 242, + 167, + 139, + 117, + 145, + 114, + 204, + 51, + 83, + 164, + 88, + 48, + 24, + 131, + 161, + 180, + 47, + 105, + 63, + 29, + 198, + 236, + 139, + 150, + 156, + 3, + 99, + 222, + 146, + 185, + 103, + 195, + 152, + 63, + 247, + 244, + 37, + 48, + 206, + 105, + 95, + 122, + 46, + 140, + 35, + 52, + 161, + 228, + 221, + 21, + 74, + 94, + 248, + 155, + 89, + 206, + 218, + 239, + 76, + 249, + 38, + 145, + 252, + 192, + 71, + 37, + 165, + 60, + 124, + 121, + 210, + 200, + 245, + 63, + 61, + 217, + 59, + 79, + 135, + 201, + 6, + 192, + 124, + 184, + 70, + 30, + 242, + 20, + 254, + 208, + 44, + 70, + 32, + 65, + 1, + 129, + 5, + 22, + 16, + 56, + 225, + 6, + 129, + 23, + 94, + 16, + 248, + 224, + 7, + 65, + 0, + 1, + 16, + 20, + 160, + 0, + 4, + 133, + 40, + 4, + 65, + 17, + 70, + 128, + 160, + 22, + 181, + 32, + 168, + 71, + 43, + 167, + 32, + 93, + 79, + 86, + 66, + 129, + 73, + 185, + 75, + 169, + 4, + 72, + 126, + 38, + 148, + 94, + 199, + 25, + 212, + 109, + 82, + 168, + 85, + 149, + 41, + 127, + 100, + 193, + 221, + 163, + 158, + 9, + 19, + 79, + 158, + 136, + 36, + 12, + 60, + 161, + 188, + 209, + 55, + 153, + 84, + 106, + 199, + 145, + 174, + 36, + 103, + 60, + 3, + 228, + 152, + 242, + 52, + 31, + 33, + 240, + 183, + 104, + 246, + 205, + 156, + 236, + 136, + 228, + 64, + 70, + 39, + 128, + 32, + 116, + 72, + 176, + 161, + 16, + 37, + 24, + 130, + 10, + 12, + 67, + 53, + 70, + 160, + 14, + 167, + 160, + 5, + 23, + 227, + 62, + 60, + 193, + 41, + 193, + 64, + 9, + 6, + 161, + 2, + 85, + 217, + 220, + 209, + 104, + 65, + 123, + 38, + 151, + 125, + 244, + 139, + 159, + 217, + 108, + 246, + 207, + 198, + 233, + 95, + 31, + 111, + 246, + 115, + 54, + 54, + 30, + 254, + 236, + 238, + 255, + 144, + 16, + 25, + 77, + 102, + 145, + 223, + 240, + 15, + 125, + 147, + 190, + 41, + 189, + 42, + 247, + 201, + 125, + 202, + 52, + 241, + 185, + 234, + 240, + 231, + 160, + 114, + 80, + 139, + 155, + 202, + 77, + 59, + 204, + 119, + 90, + 44, + 150, + 69, + 214, + 233, + 214, + 111, + 109, + 43, + 237, + 133, + 142, + 241, + 142, + 59, + 244, + 227, + 93, + 35, + 93, + 7, + 221, + 191, + 243, + 172, + 243, + 90, + 114, + 159, + 242, + 213, + 248, + 62, + 242, + 239, + 15, + 204, + 9, + 204, + 201, + 191, + 250, + 216, + 79, + 65, + 105, + 232, + 184, + 240, + 28, + 163, + 35, + 114, + 97, + 97, + 121, + 116, + 106, + 81, + 93, + 113, + 172, + 248, + 227, + 146, + 217, + 3, + 114, + 7, + 62, + 93, + 154, + 142, + 63, + 55, + 104, + 99, + 217, + 227, + 131, + 107, + 202, + 91, + 134, + 58, + 134, + 126, + 95, + 57, + 104, + 56, + 173, + 46, + 169, + 185, + 57, + 177, + 92, + 180, + 95, + 195, + 12, + 206, + 77, + 217, + 12, + 224, + 44, + 116, + 102, + 113, + 46, + 9, + 231, + 103, + 113, + 10, + 7, + 230, + 103, + 113, + 9, + 73, + 12, + 200, + 226, + 242, + 81, + 101, + 20, + 4, + 224, + 200, + 226, + 42, + 28, + 0, + 70, + 99, + 9, + 206, + 68, + 59, + 206, + 193, + 4, + 76, + 195, + 116, + 204, + 197, + 18, + 116, + 224, + 76, + 44, + 4, + 151, + 224, + 97, + 24, + 140, + 161, + 40, + 71, + 59, + 38, + 136, + 148, + 133, + 88, + 138, + 139, + 176, + 8, + 115, + 97, + 224, + 4, + 44, + 64, + 59, + 230, + 225, + 76, + 156, + 139, + 121, + 48, + 80, + 6, + 227, + 40, + 106, + 6, + 166, + 96, + 46, + 230, + 225, + 60, + 156, + 131, + 118, + 44, + 249, + 151, + 216, + 145, + 114, + 143, + 194, + 64, + 5, + 202, + 49, + 20, + 67, + 97, + 96, + 26, + 230, + 11, + 218, + 63, + 175, + 109, + 44, + 22, + 98, + 9, + 22, + 9, + 216, + 142, + 165, + 217, + 22, + 14, + 22, + 117, + 158, + 147, + 173, + 239, + 76, + 204, + 195, + 124, + 44, + 69, + 71, + 182, + 246, + 14, + 209, + 155, + 243, + 49, + 23, + 115, + 48, + 88, + 61, + 74, + 68, + 104, + 66, + 124, + 83, + 244, + 45, + 156, + 246, + 51, + 21, + 176, + 12, + 51, + 254, + 53, + 141, + 38, + 240, + 24, + 125, + 12, + 163, + 105, + 2, + 61, + 252, + 221, + 254, + 71, + 238, + 16, + 138, + 145, + 135, + 1, + 185, + 3, + 77, + 89, + 188, + 253, + 168, + 247, + 54, + 252, + 43, + 45, + 185, + 35, + 67, + 95, + 153, + 206, + 122, + 149, + 233, + 88, + 165, + 188, + 128, + 51, + 148, + 23, + 112, + 143, + 50, + 29, + 15, + 200, + 31, + 97, + 181, + 154, + 192, + 2, + 229, + 5, + 60, + 68, + 19, + 216, + 40, + 3, + 213, + 188, + 140, + 220, + 129, + 85, + 234, + 99, + 184, + 67, + 121, + 1, + 119, + 171, + 9, + 204, + 86, + 166, + 227, + 30, + 53, + 129, + 102, + 229, + 5, + 220, + 175, + 76, + 199, + 76, + 249, + 35, + 148, + 103, + 113, + 179, + 118, + 51, + 242, + 50, + 244, + 161, + 254, + 79, + 19, + 66, + 238, + 192, + 137, + 114, + 7, + 174, + 147, + 129, + 73, + 114, + 7, + 198, + 201, + 29, + 104, + 164, + 9, + 120, + 228, + 14, + 140, + 145, + 59, + 176, + 140, + 188, + 128, + 235, + 201, + 11, + 236, + 1, + 25, + 60, + 196, + 213, + 234, + 99, + 88, + 198, + 211, + 229, + 14, + 212, + 103, + 195, + 241, + 244, + 49, + 92, + 43, + 3, + 117, + 52, + 129, + 34, + 185, + 3, + 87, + 203, + 64, + 64, + 121, + 1, + 170, + 12, + 56, + 17, + 193, + 128, + 172, + 174, + 44, + 69, + 13, + 36, + 161, + 37, + 115, + 132, + 150, + 204, + 17, + 250, + 145, + 107, + 5, + 174, + 139, + 153, + 40, + 69, + 206, + 158, + 187, + 228, + 92, + 112, + 213, + 40, + 98, + 144, + 65, + 97, + 2, + 17, + 223, + 1, + 162, + 164, + 147, + 116, + 145, + 149, + 228, + 42, + 50, + 159, + 76, + 39, + 245, + 232, + 195, + 43, + 184, + 7, + 115, + 112, + 26, + 166, + 225, + 68, + 241, + 229, + 250, + 80, + 66, + 17, + 6, + 98, + 8, + 42, + 133, + 110, + 73, + 96, + 4, + 106, + 113, + 2, + 154, + 208, + 130, + 25, + 152, + 9, + 10, + 39, + 155, + 15, + 23, + 155, + 47, + 176, + 21, + 112, + 177, + 21, + 32, + 56, + 129, + 237, + 224, + 115, + 130, + 237, + 128, + 179, + 239, + 7, + 232, + 172, + 30, + 174, + 190, + 31, + 80, + 192, + 86, + 160, + 136, + 205, + 71, + 61, + 155, + 143, + 241, + 172, + 30, + 39, + 177, + 110, + 76, + 97, + 245, + 152, + 202, + 230, + 99, + 26, + 171, + 71, + 51, + 91, + 129, + 22, + 182, + 2, + 86, + 65, + 73, + 103, + 59, + 4, + 181, + 2, + 182, + 3, + 69, + 172, + 27, + 245, + 172, + 27, + 227, + 217, + 14, + 76, + 97, + 59, + 208, + 196, + 118, + 160, + 153, + 237, + 192, + 76, + 246, + 21, + 108, + 112, + 178, + 122, + 232, + 162, + 238, + 122, + 20, + 176, + 238, + 163, + 234, + 88, + 129, + 147, + 196, + 27, + 43, + 208, + 196, + 186, + 209, + 204, + 186, + 49, + 147, + 117, + 195, + 149, + 105, + 25, + 43, + 200, + 190, + 85, + 128, + 2, + 86, + 32, + 222, + 170, + 96, + 59, + 80, + 207, + 10, + 48, + 142, + 21, + 96, + 60, + 43, + 200, + 182, + 176, + 64, + 188, + 61, + 157, + 21, + 8, + 10, + 51, + 216, + 10, + 204, + 100, + 43, + 32, + 163, + 154, + 237, + 64, + 130, + 237, + 192, + 8, + 182, + 3, + 181, + 108, + 7, + 228, + 195, + 61, + 230, + 189, + 229, + 244, + 84, + 72, + 172, + 27, + 213, + 108, + 62, + 18, + 108, + 62, + 70, + 176, + 249, + 168, + 101, + 243, + 69, + 27, + 36, + 81, + 63, + 175, + 187, + 136, + 173, + 128, + 9, + 18, + 91, + 113, + 84, + 185, + 110, + 81, + 174, + 133, + 237, + 192, + 12, + 209, + 203, + 29, + 124, + 20, + 68, + 9, + 81, + 147, + 210, + 131, + 60, + 165, + 7, + 1, + 229, + 17, + 228, + 201, + 49, + 248, + 1, + 246, + 41, + 192, + 62, + 227, + 97, + 223, + 153, + 236, + 51, + 158, + 207, + 67, + 250, + 5, + 128, + 116, + 246, + 11, + 172, + 198, + 19, + 228, + 76, + 60, + 129, + 141, + 120, + 150, + 236, + 131, + 31, + 79, + 98, + 3, + 186, + 241, + 55, + 248, + 80, + 143, + 187, + 113, + 41, + 110, + 199, + 50, + 168, + 152, + 129, + 191, + 225, + 6, + 76, + 193, + 20, + 40, + 168, + 199, + 237, + 36, + 143, + 117, + 99, + 8, + 238, + 135, + 132, + 251, + 177, + 5, + 62, + 156, + 130, + 203, + 209, + 131, + 92, + 226, + 103, + 159, + 227, + 10, + 92, + 43, + 189, + 129, + 101, + 184, + 22, + 118, + 20, + 98, + 52, + 38, + 97, + 33, + 110, + 38, + 39, + 177, + 243, + 48, + 19, + 31, + 200, + 87, + 163, + 26, + 39, + 225, + 92, + 44, + 34, + 157, + 172, + 153, + 221, + 194, + 110, + 99, + 15, + 225, + 97, + 108, + 144, + 254, + 198, + 122, + 97, + 69, + 0, + 179, + 49, + 27, + 91, + 216, + 87, + 202, + 219, + 236, + 61, + 148, + 97, + 38, + 126, + 141, + 59, + 241, + 1, + 185, + 205, + 188, + 14, + 73, + 156, + 130, + 78, + 108, + 144, + 126, + 135, + 37, + 184, + 75, + 106, + 149, + 9, + 155, + 199, + 126, + 130, + 132, + 8, + 46, + 192, + 22, + 200, + 152, + 128, + 45, + 100, + 19, + 141, + 227, + 36, + 204, + 197, + 167, + 196, + 79, + 46, + 149, + 198, + 42, + 111, + 179, + 7, + 89, + 138, + 109, + 134, + 132, + 32, + 90, + 49, + 31, + 119, + 161, + 135, + 12, + 35, + 199, + 211, + 136, + 50, + 147, + 77, + 96, + 91, + 144, + 139, + 50, + 92, + 136, + 78, + 220, + 137, + 46, + 172, + 199, + 122, + 164, + 241, + 39, + 188, + 75, + 108, + 202, + 62, + 246, + 16, + 219, + 135, + 60, + 12, + 194, + 9, + 184, + 2, + 221, + 120, + 149, + 108, + 146, + 250, + 122, + 175, + 236, + 171, + 227, + 19, + 30, + 126, + 12, + 68, + 2, + 39, + 96, + 33, + 254, + 140, + 23, + 240, + 26, + 137, + 146, + 191, + 208, + 133, + 138, + 77, + 169, + 80, + 146, + 202, + 197, + 108, + 27, + 114, + 48, + 20, + 77, + 56, + 5, + 143, + 160, + 27, + 159, + 144, + 239, + 233, + 229, + 244, + 114, + 122, + 133, + 244, + 188, + 60, + 142, + 141, + 129, + 3, + 215, + 226, + 86, + 206, + 109, + 252, + 21, + 31, + 146, + 0, + 25, + 66, + 38, + 146, + 233, + 116, + 32, + 93, + 72, + 239, + 145, + 150, + 192, + 132, + 65, + 66, + 67, + 207, + 193, + 153, + 184, + 1, + 119, + 224, + 5, + 236, + 36, + 113, + 178, + 158, + 218, + 232, + 86, + 233, + 65, + 249, + 113, + 249, + 160, + 90, + 208, + 183, + 139, + 57, + 160, + 34, + 134, + 223, + 226, + 119, + 248, + 11, + 177, + 19, + 63, + 49, + 72, + 7, + 185, + 138, + 108, + 39, + 31, + 209, + 177, + 116, + 22, + 253, + 45, + 221, + 45, + 221, + 46, + 63, + 42, + 255, + 93, + 107, + 71, + 16, + 167, + 97, + 1, + 110, + 198, + 227, + 248, + 158, + 184, + 73, + 13, + 153, + 76, + 78, + 37, + 243, + 201, + 165, + 100, + 25, + 185, + 149, + 220, + 73, + 182, + 144, + 215, + 200, + 103, + 116, + 52, + 157, + 70, + 207, + 166, + 95, + 75, + 243, + 165, + 197, + 210, + 159, + 228, + 49, + 242, + 24, + 121, + 170, + 220, + 33, + 95, + 173, + 92, + 167, + 220, + 168, + 126, + 214, + 215, + 220, + 183, + 185, + 239, + 245, + 190, + 239, + 89, + 5, + 187, + 14, + 147, + 113, + 41, + 174, + 196, + 173, + 248, + 53, + 238, + 65, + 55, + 54, + 96, + 43, + 222, + 193, + 59, + 248, + 0, + 187, + 137, + 66, + 172, + 196, + 65, + 28, + 196, + 32, + 17, + 210, + 68, + 46, + 33, + 151, + 144, + 203, + 201, + 205, + 228, + 1, + 178, + 154, + 60, + 74, + 186, + 201, + 107, + 228, + 53, + 178, + 155, + 124, + 78, + 190, + 33, + 223, + 145, + 131, + 20, + 20, + 84, + 165, + 249, + 52, + 66, + 11, + 105, + 33, + 141, + 210, + 37, + 244, + 2, + 122, + 59, + 189, + 155, + 110, + 165, + 91, + 233, + 107, + 244, + 75, + 250, + 163, + 228, + 147, + 10, + 165, + 184, + 52, + 76, + 170, + 149, + 90, + 164, + 133, + 210, + 98, + 105, + 153, + 180, + 82, + 90, + 41, + 173, + 147, + 62, + 148, + 3, + 242, + 86, + 153, + 41, + 21, + 74, + 133, + 178, + 74, + 185, + 87, + 89, + 173, + 60, + 174, + 60, + 171, + 236, + 83, + 109, + 218, + 85, + 38, + 152, + 94, + 57, + 244, + 96, + 111, + 105, + 239, + 206, + 62, + 244, + 93, + 223, + 183, + 170, + 175, + 171, + 175, + 155, + 125, + 8, + 47, + 242, + 16, + 64, + 16, + 97, + 212, + 98, + 50, + 218, + 209, + 142, + 179, + 112, + 33, + 86, + 225, + 97, + 60, + 137, + 55, + 136, + 141, + 248, + 73, + 128, + 148, + 146, + 227, + 200, + 73, + 100, + 50, + 153, + 69, + 206, + 34, + 139, + 201, + 133, + 228, + 42, + 114, + 13, + 185, + 139, + 60, + 44, + 218, + 254, + 71, + 242, + 12, + 217, + 66, + 222, + 34, + 95, + 83, + 80, + 59, + 13, + 138, + 54, + 15, + 166, + 195, + 232, + 24, + 58, + 145, + 78, + 164, + 167, + 209, + 185, + 116, + 49, + 93, + 73, + 111, + 163, + 221, + 116, + 59, + 253, + 73, + 210, + 36, + 171, + 228, + 148, + 188, + 82, + 169, + 116, + 188, + 212, + 42, + 205, + 149, + 150, + 74, + 23, + 73, + 171, + 164, + 148, + 244, + 138, + 244, + 190, + 180, + 91, + 58, + 32, + 29, + 146, + 14, + 73, + 76, + 182, + 200, + 97, + 185, + 80, + 142, + 201, + 113, + 249, + 120, + 121, + 150, + 124, + 158, + 124, + 143, + 252, + 169, + 252, + 169, + 50, + 83, + 121, + 89, + 249, + 88, + 181, + 168, + 11, + 212, + 235, + 212, + 180, + 250, + 79, + 109, + 184, + 118, + 156, + 54, + 73, + 155, + 172, + 181, + 106, + 43, + 180, + 245, + 218, + 54, + 83, + 27, + 214, + 227, + 57, + 172, + 195, + 83, + 199, + 172, + 161, + 187, + 164, + 43, + 165, + 6, + 105, + 29, + 110, + 161, + 149, + 114, + 30, + 125, + 149, + 190, + 138, + 50, + 204, + 194, + 28, + 105, + 2, + 173, + 3, + 232, + 106, + 114, + 61, + 189, + 140, + 116, + 211, + 34, + 229, + 66, + 117, + 36, + 29, + 73, + 78, + 198, + 62, + 57, + 70, + 111, + 167, + 207, + 211, + 123, + 233, + 1, + 58, + 82, + 154, + 64, + 26, + 201, + 84, + 156, + 69, + 135, + 102, + 168, + 169, + 57, + 242, + 99, + 0, + 106, + 229, + 231, + 176, + 87, + 126, + 134, + 206, + 165, + 175, + 74, + 235, + 112, + 161, + 106, + 35, + 151, + 211, + 175, + 85, + 27, + 186, + 136, + 88, + 207, + 201, + 95, + 165, + 114, + 57, + 46, + 189, + 140, + 119, + 165, + 15, + 136, + 38, + 223, + 143, + 29, + 178, + 133, + 248, + 200, + 94, + 250, + 136, + 52, + 137, + 88, + 201, + 159, + 228, + 227, + 148, + 102, + 68, + 164, + 187, + 241, + 71, + 105, + 49, + 185, + 12, + 235, + 104, + 3, + 96, + 57, + 104, + 186, + 137, + 196, + 201, + 201, + 228, + 49, + 44, + 195, + 52, + 82, + 65, + 126, + 144, + 24, + 36, + 122, + 50, + 186, + 81, + 45, + 125, + 132, + 171, + 113, + 54, + 125, + 27, + 123, + 113, + 1, + 174, + 199, + 111, + 200, + 28, + 121, + 30, + 110, + 65, + 37, + 185, + 20, + 159, + 226, + 247, + 244, + 30, + 105, + 160, + 114, + 174, + 90, + 170, + 122, + 201, + 139, + 244, + 76, + 121, + 57, + 245, + 144, + 110, + 80, + 249, + 81, + 190, + 230, + 147, + 34, + 34, + 41, + 57, + 184, + 134, + 180, + 74, + 119, + 169, + 95, + 211, + 119, + 112, + 30, + 182, + 202, + 22, + 236, + 148, + 254, + 32, + 63, + 67, + 183, + 210, + 63, + 74, + 19, + 228, + 125, + 202, + 20, + 50, + 31, + 11, + 112, + 25, + 174, + 195, + 98, + 118, + 37, + 46, + 82, + 154, + 229, + 191, + 147, + 121, + 144, + 200, + 116, + 20, + 203, + 187, + 112, + 59, + 46, + 149, + 42, + 228, + 8, + 110, + 199, + 21, + 88, + 130, + 153, + 24, + 130, + 245, + 240, + 163, + 7, + 105, + 140, + 150, + 38, + 96, + 9, + 252, + 8, + 227, + 36, + 114, + 22, + 105, + 194, + 157, + 184, + 11, + 119, + 225, + 14, + 116, + 65, + 198, + 133, + 56, + 19, + 57, + 56, + 5, + 231, + 226, + 85, + 116, + 171, + 211, + 104, + 26, + 243, + 20, + 7, + 153, + 139, + 79, + 1, + 249, + 229, + 190, + 41, + 152, + 193, + 126, + 143, + 59, + 217, + 60, + 156, + 203, + 110, + 67, + 25, + 219, + 134, + 101, + 236, + 82, + 164, + 177, + 26, + 31, + 99, + 5, + 86, + 147, + 107, + 251, + 46, + 193, + 34, + 132, + 240, + 14, + 118, + 146, + 147, + 148, + 113, + 116, + 171, + 50, + 142, + 149, + 209, + 229, + 244, + 29, + 58, + 149, + 174, + 58, + 118, + 124, + 1, + 82, + 76, + 252, + 248, + 2, + 95, + 224, + 143, + 0, + 142, + 83, + 158, + 198, + 114, + 249, + 45, + 76, + 69, + 29, + 187, + 137, + 189, + 9, + 47, + 6, + 160, + 16, + 119, + 226, + 116, + 156, + 136, + 61, + 88, + 128, + 175, + 240, + 49, + 198, + 75, + 155, + 80, + 217, + 119, + 50, + 93, + 195, + 198, + 73, + 139, + 112, + 145, + 242, + 1, + 38, + 179, + 71, + 88, + 152, + 88, + 48, + 159, + 157, + 131, + 137, + 120, + 6, + 15, + 107, + 10, + 218, + 181, + 56, + 246, + 202, + 41, + 242, + 119, + 172, + 199, + 37, + 152, + 75, + 167, + 176, + 165, + 210, + 220, + 190, + 51, + 113, + 59, + 86, + 96, + 38, + 146, + 184, + 14, + 231, + 225, + 6, + 220, + 144, + 28, + 219, + 52, + 109, + 116, + 178, + 238, + 184, + 81, + 181, + 35, + 71, + 36, + 106, + 170, + 135, + 85, + 85, + 86, + 12, + 45, + 31, + 50, + 184, + 108, + 80, + 188, + 116, + 224, + 128, + 146, + 88, + 113, + 81, + 180, + 48, + 98, + 132, + 67, + 5, + 193, + 252, + 64, + 158, + 223, + 151, + 235, + 205, + 241, + 184, + 93, + 186, + 211, + 97, + 183, + 89, + 45, + 102, + 147, + 166, + 42, + 178, + 68, + 9, + 6, + 53, + 68, + 199, + 181, + 25, + 169, + 88, + 91, + 74, + 142, + 69, + 199, + 143, + 47, + 227, + 241, + 104, + 187, + 145, + 138, + 181, + 31, + 149, + 208, + 150, + 50, + 218, + 141, + 212, + 184, + 99, + 203, + 164, + 12, + 254, + 94, + 123, + 202, + 56, + 182, + 100, + 178, + 221, + 72, + 157, + 241, + 47, + 37, + 147, + 153, + 146, + 201, + 195, + 37, + 137, + 110, + 212, + 162, + 182, + 108, + 144, + 209, + 16, + 53, + 82, + 91, + 234, + 163, + 70, + 154, + 204, + 152, + 220, + 28, + 53, + 82, + 55, + 215, + 71, + 91, + 140, + 212, + 94, + 129, + 79, + 16, + 248, + 74, + 129, + 219, + 235, + 163, + 45, + 145, + 72, + 217, + 32, + 195, + 104, + 240, + 207, + 175, + 55, + 82, + 164, + 205, + 104, + 72, + 141, + 59, + 127, + 254, + 242, + 134, + 182, + 250, + 178, + 65, + 100, + 141, + 213, + 50, + 54, + 58, + 118, + 174, + 165, + 108, + 16, + 214, + 88, + 172, + 99, + 163, + 99, + 173, + 101, + 131, + 144, + 242, + 69, + 23, + 173, + 33, + 190, + 227, + 136, + 64, + 168, + 175, + 97, + 196, + 26, + 10, + 147, + 189, + 108, + 80, + 67, + 42, + 16, + 173, + 111, + 72, + 229, + 69, + 235, + 121, + 11, + 82, + 82, + 113, + 67, + 251, + 156, + 212, + 164, + 201, + 205, + 13, + 245, + 249, + 145, + 72, + 75, + 217, + 160, + 20, + 25, + 59, + 59, + 122, + 122, + 10, + 209, + 49, + 41, + 103, + 92, + 20, + 193, + 88, + 81, + 77, + 74, + 29, + 155, + 210, + 68, + 53, + 198, + 153, + 188, + 55, + 184, + 209, + 88, + 51, + 104, + 211, + 242, + 155, + 210, + 58, + 78, + 111, + 139, + 219, + 230, + 68, + 231, + 180, + 207, + 108, + 78, + 73, + 237, + 45, + 188, + 14, + 87, + 60, + 229, + 139, + 214, + 167, + 124, + 23, + 239, + 241, + 31, + 137, + 150, + 13, + 74, + 185, + 199, + 54, + 47, + 59, + 58, + 55, + 95, + 90, + 222, + 224, + 63, + 211, + 224, + 209, + 229, + 203, + 151, + 25, + 169, + 251, + 38, + 55, + 31, + 157, + 27, + 225, + 176, + 165, + 197, + 95, + 54, + 168, + 108, + 80, + 138, + 22, + 143, + 107, + 91, + 62, + 46, + 149, + 108, + 191, + 105, + 124, + 217, + 160, + 198, + 169, + 198, + 204, + 230, + 20, + 189, + 182, + 165, + 57, + 69, + 174, + 109, + 41, + 27, + 100, + 240, + 158, + 240, + 94, + 101, + 250, + 55, + 55, + 218, + 192, + 83, + 218, + 206, + 50, + 82, + 230, + 232, + 152, + 232, + 252, + 229, + 103, + 181, + 181, + 27, + 169, + 192, + 242, + 20, + 166, + 92, + 20, + 233, + 10, + 4, + 146, + 27, + 216, + 46, + 4, + 26, + 140, + 229, + 211, + 154, + 163, + 145, + 84, + 93, + 126, + 180, + 165, + 189, + 62, + 184, + 38, + 7, + 203, + 167, + 92, + 180, + 54, + 47, + 105, + 228, + 29, + 155, + 83, + 54, + 104, + 141, + 238, + 202, + 48, + 118, + 141, + 195, + 153, + 69, + 108, + 246, + 163, + 145, + 185, + 135, + 243, + 4, + 38, + 138, + 115, + 172, + 113, + 202, + 97, + 206, + 18, + 222, + 162, + 232, + 9, + 169, + 100, + 91, + 202, + 152, + 109, + 164, + 48, + 165, + 57, + 154, + 162, + 197, + 53, + 28, + 204, + 173, + 193, + 242, + 217, + 53, + 249, + 17, + 254, + 180, + 144, + 178, + 65, + 141, + 169, + 57, + 147, + 155, + 27, + 206, + 76, + 153, + 199, + 182, + 45, + 215, + 71, + 240, + 116, + 254, + 126, + 74, + 41, + 214, + 163, + 198, + 242, + 239, + 144, + 34, + 109, + 209, + 189, + 95, + 30, + 155, + 210, + 158, + 77, + 81, + 139, + 245, + 239, + 192, + 81, + 46, + 39, + 135, + 69, + 45, + 69, + 218, + 251, + 241, + 84, + 60, + 158, + 42, + 45, + 229, + 34, + 162, + 141, + 77, + 169, + 188, + 7, + 199, + 137, + 248, + 176, + 178, + 65, + 231, + 167, + 105, + 52, + 186, + 72, + 55, + 210, + 148, + 179, + 15, + 147, + 154, + 83, + 164, + 189, + 101, + 196, + 16, + 127, + 217, + 160, + 72, + 132, + 15, + 240, + 141, + 233, + 36, + 78, + 47, + 27, + 20, + 73, + 117, + 78, + 110, + 206, + 196, + 13, + 156, + 158, + 223, + 133, + 228, + 144, + 120, + 75, + 138, + 182, + 241, + 156, + 77, + 253, + 57, + 222, + 38, + 158, + 211, + 217, + 159, + 115, + 248, + 245, + 182, + 104, + 164, + 108, + 80, + 183, + 48, + 241, + 189, + 41, + 83, + 236, + 240, + 159, + 83, + 207, + 245, + 52, + 204, + 31, + 145, + 34, + 185, + 255, + 67, + 246, + 220, + 76, + 126, + 227, + 212, + 104, + 227, + 228, + 25, + 205, + 70, + 195, + 242, + 182, + 44, + 111, + 27, + 167, + 29, + 19, + 203, + 228, + 215, + 28, + 206, + 203, + 98, + 41, + 207, + 216, + 102, + 41, + 159, + 102, + 49, + 154, + 47, + 137, + 220, + 148, + 123, + 236, + 204, + 195, + 133, + 121, + 164, + 217, + 150, + 146, + 139, + 83, + 114, + 177, + 42, + 132, + 122, + 78, + 90, + 51, + 77, + 110, + 206, + 164, + 16, + 99, + 92, + 74, + 111, + 27, + 159, + 129, + 45, + 150, + 72, + 228, + 63, + 124, + 41, + 205, + 246, + 241, + 183, + 68, + 112, + 228, + 181, + 108, + 51, + 83, + 35, + 226, + 199, + 198, + 71, + 30, + 19, + 63, + 166, + 121, + 182, + 229, + 82, + 227, + 180, + 148, + 28, + 163, + 141, + 211, + 102, + 44, + 95, + 110, + 57, + 38, + 175, + 113, + 74, + 182, + 194, + 19, + 178, + 65, + 187, + 145, + 194, + 180, + 230, + 136, + 49, + 54, + 133, + 166, + 230, + 148, + 84, + 156, + 146, + 138, + 211, + 108, + 83, + 13, + 255, + 182, + 228, + 167, + 146, + 211, + 154, + 121, + 206, + 180, + 230, + 20, + 21, + 201, + 45, + 249, + 217, + 232, + 49, + 5, + 243, + 179, + 120, + 75, + 75, + 75, + 11, + 151, + 206, + 178, + 65, + 227, + 162, + 227, + 218, + 150, + 47, + 31, + 23, + 53, + 198, + 45, + 111, + 91, + 222, + 158, + 102, + 157, + 167, + 71, + 13, + 61, + 186, + 124, + 3, + 125, + 150, + 62, + 187, + 124, + 81, + 67, + 91, + 191, + 224, + 164, + 89, + 207, + 141, + 249, + 169, + 113, + 55, + 181, + 164, + 244, + 182, + 249, + 100, + 68, + 217, + 160, + 53, + 20, + 99, + 214, + 68, + 201, + 245, + 147, + 215, + 36, + 201, + 245, + 83, + 103, + 52, + 111, + 208, + 1, + 227, + 250, + 105, + 205, + 93, + 148, + 208, + 177, + 109, + 99, + 90, + 214, + 20, + 145, + 235, + 39, + 55, + 111, + 48, + 128, + 164, + 72, + 165, + 60, + 149, + 39, + 242, + 136, + 193, + 35, + 104, + 36, + 141, + 83, + 154, + 187, + 168, + 73, + 148, + 207, + 223, + 144, + 4, + 58, + 69, + 174, + 44, + 18, + 68, + 124, + 118, + 154, + 64, + 164, + 101, + 10, + 109, + 72, + 130, + 96, + 118, + 154, + 102, + 210, + 244, + 254, + 52, + 138, + 217, + 105, + 57, + 147, + 150, + 20, + 105, + 252, + 225, + 58, + 102, + 236, + 180, + 230, + 163, + 165, + 71, + 76, + 201, + 150, + 50, + 177, + 224, + 113, + 127, + 108, + 155, + 213, + 98, + 2, + 36, + 225, + 25, + 19, + 78, + 46, + 72, + 178, + 36, + 1, + 42, + 84, + 149, + 111, + 182, + 133, + 183, + 76, + 133, + 73, + 211, + 52, + 85, + 53, + 105, + 84, + 209, + 84, + 147, + 102, + 82, + 77, + 154, + 166, + 106, + 38, + 139, + 216, + 220, + 138, + 18, + 252, + 145, + 85, + 149, + 82, + 133, + 154, + 50, + 184, + 164, + 170, + 22, + 85, + 85, + 109, + 86, + 51, + 32, + 73, + 255, + 74, + 95, + 131, + 166, + 65, + 203, + 210, + 215, + 160, + 153, + 204, + 102, + 147, + 102, + 54, + 75, + 42, + 135, + 230, + 76, + 76, + 179, + 242, + 18, + 25, + 87, + 145, + 166, + 106, + 154, + 164, + 105, + 146, + 164, + 74, + 86, + 77, + 211, + 52, + 89, + 147, + 52, + 197, + 172, + 40, + 138, + 221, + 110, + 1, + 100, + 73, + 57, + 76, + 95, + 150, + 101, + 249, + 8, + 125, + 81, + 175, + 6, + 51, + 127, + 76, + 22, + 179, + 164, + 154, + 53, + 171, + 217, + 98, + 182, + 152, + 205, + 154, + 217, + 108, + 231, + 110, + 225, + 44, + 125, + 45, + 75, + 95, + 235, + 167, + 47, + 107, + 138, + 89, + 211, + 52, + 167, + 211, + 10, + 200, + 138, + 160, + 47, + 26, + 43, + 43, + 156, + 190, + 9, + 38, + 19, + 239, + 189, + 160, + 111, + 130, + 217, + 98, + 181, + 90, + 204, + 86, + 139, + 164, + 89, + 76, + 86, + 139, + 205, + 194, + 87, + 101, + 139, + 217, + 121, + 152, + 190, + 137, + 63, + 178, + 201, + 196, + 233, + 219, + 57, + 174, + 152, + 100, + 147, + 102, + 213, + 52, + 147, + 238, + 180, + 113, + 154, + 234, + 191, + 208, + 55, + 195, + 108, + 230, + 111, + 11, + 250, + 102, + 88, + 173, + 54, + 155, + 213, + 98, + 179, + 74, + 38, + 171, + 217, + 110, + 181, + 89, + 109, + 86, + 171, + 217, + 106, + 61, + 66, + 95, + 176, + 76, + 54, + 155, + 100, + 201, + 36, + 217, + 77, + 102, + 179, + 185, + 159, + 190, + 230, + 114, + 217, + 1, + 229, + 40, + 250, + 138, + 202, + 59, + 211, + 79, + 95, + 57, + 150, + 190, + 98, + 62, + 154, + 190, + 11, + 214, + 195, + 244, + 57, + 77, + 179, + 89, + 208, + 231, + 184, + 106, + 146, + 205, + 154, + 85, + 51, + 155, + 60, + 30, + 7, + 167, + 41, + 6, + 74, + 62, + 66, + 223, + 10, + 171, + 149, + 191, + 45, + 232, + 91, + 97, + 183, + 59, + 28, + 118, + 155, + 211, + 174, + 90, + 236, + 86, + 167, + 221, + 105, + 231, + 134, + 139, + 221, + 238, + 57, + 236, + 12, + 182, + 88, + 45, + 86, + 171, + 106, + 181, + 200, + 178, + 89, + 214, + 45, + 86, + 171, + 85, + 181, + 40, + 22, + 51, + 175, + 201, + 235, + 213, + 185, + 120, + 29, + 161, + 175, + 106, + 170, + 202, + 189, + 200, + 54, + 27, + 127, + 91, + 244, + 203, + 6, + 187, + 195, + 233, + 116, + 216, + 117, + 135, + 106, + 117, + 216, + 92, + 14, + 221, + 161, + 59, + 29, + 54, + 135, + 221, + 43, + 220, + 129, + 162, + 132, + 213, + 106, + 181, + 169, + 86, + 171, + 34, + 91, + 100, + 157, + 247, + 78, + 179, + 170, + 86, + 171, + 211, + 98, + 53, + 251, + 125, + 110, + 112, + 241, + 19, + 77, + 23, + 162, + 96, + 210, + 52, + 192, + 14, + 187, + 29, + 118, + 46, + 58, + 224, + 17, + 167, + 238, + 114, + 233, + 78, + 143, + 75, + 181, + 233, + 118, + 143, + 203, + 163, + 123, + 92, + 186, + 195, + 229, + 244, + 65, + 207, + 210, + 183, + 243, + 234, + 52, + 135, + 67, + 81, + 109, + 106, + 142, + 195, + 238, + 112, + 152, + 108, + 154, + 195, + 234, + 178, + 218, + 108, + 249, + 193, + 28, + 62, + 252, + 150, + 195, + 244, + 77, + 102, + 147, + 137, + 251, + 146, + 156, + 78, + 56, + 185, + 232, + 112, + 55, + 16, + 220, + 238, + 156, + 28, + 183, + 203, + 235, + 49, + 217, + 221, + 78, + 159, + 199, + 235, + 242, + 230, + 184, + 117, + 143, + 43, + 8, + 119, + 150, + 190, + 211, + 233, + 112, + 58, + 53, + 167, + 83, + 85, + 29, + 106, + 174, + 211, + 233, + 116, + 154, + 29, + 38, + 167, + 221, + 99, + 115, + 216, + 11, + 66, + 185, + 156, + 166, + 160, + 47, + 152, + 97, + 178, + 112, + 250, + 58, + 116, + 157, + 183, + 78, + 208, + 215, + 225, + 241, + 120, + 189, + 30, + 183, + 207, + 171, + 57, + 61, + 186, + 207, + 235, + 243, + 248, + 188, + 30, + 143, + 215, + 19, + 130, + 39, + 75, + 95, + 215, + 157, + 186, + 110, + 210, + 117, + 77, + 115, + 104, + 121, + 186, + 174, + 235, + 22, + 167, + 73, + 183, + 123, + 237, + 118, + 135, + 97, + 248, + 1, + 179, + 213, + 122, + 152, + 190, + 217, + 106, + 54, + 3, + 110, + 184, + 221, + 188, + 117, + 130, + 111, + 110, + 120, + 189, + 62, + 159, + 55, + 39, + 207, + 103, + 214, + 189, + 238, + 124, + 95, + 158, + 55, + 207, + 231, + 245, + 248, + 188, + 6, + 188, + 89, + 250, + 46, + 151, + 238, + 114, + 89, + 92, + 110, + 77, + 211, + 181, + 124, + 183, + 203, + 229, + 178, + 234, + 102, + 183, + 211, + 231, + 112, + 58, + 35, + 133, + 121, + 156, + 166, + 237, + 127, + 166, + 159, + 155, + 235, + 247, + 231, + 230, + 4, + 252, + 102, + 87, + 174, + 59, + 223, + 31, + 200, + 13, + 248, + 115, + 189, + 254, + 220, + 194, + 35, + 244, + 221, + 46, + 183, + 203, + 226, + 238, + 167, + 239, + 118, + 91, + 93, + 156, + 190, + 211, + 169, + 23, + 199, + 130, + 92, + 188, + 236, + 25, + 61, + 192, + 69, + 205, + 102, + 177, + 8, + 223, + 57, + 119, + 157, + 67, + 240, + 205, + 139, + 188, + 188, + 252, + 252, + 60, + 95, + 65, + 190, + 217, + 147, + 231, + 13, + 231, + 23, + 228, + 21, + 228, + 231, + 249, + 242, + 243, + 98, + 240, + 101, + 233, + 231, + 120, + 61, + 222, + 28, + 139, + 215, + 171, + 153, + 61, + 90, + 216, + 235, + 245, + 122, + 109, + 110, + 139, + 215, + 149, + 239, + 114, + 185, + 75, + 75, + 13, + 192, + 230, + 112, + 102, + 244, + 0, + 23, + 53, + 135, + 205, + 6, + 248, + 224, + 243, + 241, + 183, + 69, + 191, + 124, + 8, + 6, + 67, + 161, + 96, + 32, + 18, + 178, + 121, + 131, + 190, + 104, + 40, + 18, + 140, + 132, + 130, + 129, + 80, + 176, + 20, + 193, + 44, + 125, + 159, + 207, + 235, + 243, + 217, + 125, + 62, + 139, + 197, + 107, + 41, + 242, + 249, + 124, + 62, + 71, + 142, + 205, + 231, + 43, + 200, + 245, + 122, + 7, + 15, + 142, + 114, + 241, + 18, + 130, + 38, + 152, + 97, + 119, + 218, + 237, + 224, + 167, + 34, + 252, + 96, + 132, + 139, + 40, + 143, + 132, + 195, + 145, + 72, + 56, + 88, + 20, + 177, + 249, + 194, + 129, + 226, + 72, + 81, + 184, + 40, + 18, + 14, + 70, + 194, + 131, + 17, + 202, + 210, + 15, + 4, + 124, + 129, + 128, + 35, + 16, + 176, + 88, + 124, + 150, + 88, + 32, + 16, + 8, + 56, + 125, + 246, + 128, + 47, + 226, + 243, + 249, + 42, + 42, + 98, + 128, + 67, + 23, + 130, + 38, + 152, + 225, + 112, + 57, + 28, + 252, + 92, + 35, + 24, + 228, + 173, + 19, + 19, + 40, + 136, + 72, + 164, + 168, + 40, + 18, + 46, + 41, + 114, + 228, + 69, + 130, + 3, + 139, + 74, + 34, + 37, + 69, + 145, + 112, + 81, + 164, + 2, + 145, + 44, + 253, + 96, + 48, + 47, + 24, + 116, + 4, + 131, + 54, + 75, + 158, + 109, + 64, + 48, + 24, + 12, + 186, + 242, + 28, + 193, + 188, + 168, + 63, + 47, + 111, + 248, + 240, + 129, + 128, + 211, + 229, + 57, + 76, + 223, + 233, + 118, + 58, + 129, + 16, + 66, + 33, + 222, + 58, + 193, + 183, + 16, + 138, + 138, + 74, + 74, + 138, + 34, + 165, + 37, + 206, + 252, + 162, + 80, + 89, + 73, + 105, + 81, + 105, + 73, + 81, + 164, + 164, + 104, + 56, + 162, + 89, + 250, + 161, + 80, + 126, + 40, + 228, + 12, + 21, + 216, + 237, + 249, + 246, + 178, + 130, + 80, + 40, + 228, + 206, + 119, + 22, + 228, + 151, + 4, + 242, + 3, + 35, + 70, + 12, + 2, + 116, + 143, + 16, + 4, + 33, + 164, + 186, + 71, + 231, + 235, + 48, + 12, + 131, + 31, + 87, + 9, + 190, + 25, + 40, + 41, + 41, + 45, + 45, + 137, + 150, + 149, + 58, + 11, + 74, + 140, + 33, + 165, + 101, + 37, + 101, + 165, + 37, + 69, + 165, + 37, + 35, + 16, + 203, + 210, + 55, + 140, + 2, + 195, + 208, + 13, + 195, + 110, + 15, + 217, + 135, + 26, + 134, + 97, + 120, + 10, + 116, + 163, + 96, + 96, + 48, + 63, + 56, + 118, + 76, + 5, + 224, + 201, + 229, + 107, + 101, + 134, + 217, + 158, + 92, + 143, + 7, + 40, + 70, + 113, + 49, + 138, + 145, + 153, + 64, + 197, + 40, + 43, + 43, + 47, + 47, + 27, + 88, + 85, + 238, + 41, + 44, + 43, + 174, + 46, + 175, + 42, + 171, + 42, + 47, + 27, + 88, + 94, + 54, + 6, + 153, + 133, + 22, + 40, + 46, + 46, + 44, + 46, + 246, + 20, + 23, + 59, + 157, + 133, + 206, + 68, + 113, + 113, + 113, + 113, + 110, + 161, + 167, + 56, + 50, + 196, + 136, + 68, + 26, + 27, + 107, + 0, + 175, + 47, + 95, + 176, + 94, + 8, + 99, + 158, + 215, + 11, + 148, + 162, + 180, + 20, + 165, + 92, + 52, + 193, + 35, + 21, + 21, + 195, + 135, + 87, + 12, + 30, + 49, + 220, + 27, + 171, + 40, + 29, + 53, + 124, + 68, + 197, + 136, + 225, + 21, + 101, + 195, + 43, + 26, + 145, + 117, + 39, + 160, + 180, + 52, + 86, + 90, + 234, + 45, + 45, + 117, + 185, + 98, + 174, + 186, + 210, + 210, + 210, + 210, + 188, + 152, + 183, + 180, + 120, + 88, + 81, + 113, + 241, + 212, + 169, + 199, + 1, + 190, + 188, + 130, + 140, + 30, + 224, + 162, + 22, + 244, + 249, + 192, + 207, + 250, + 248, + 113, + 95, + 70, + 192, + 7, + 163, + 186, + 186, + 182, + 182, + 186, + 114, + 116, + 173, + 175, + 180, + 122, + 112, + 67, + 237, + 232, + 234, + 209, + 181, + 213, + 85, + 181, + 213, + 83, + 49, + 60, + 75, + 127, + 240, + 224, + 210, + 193, + 131, + 253, + 131, + 7, + 187, + 61, + 113, + 247, + 241, + 131, + 7, + 15, + 30, + 28, + 44, + 245, + 13, + 30, + 56, + 178, + 180, + 100, + 192, + 204, + 83, + 27, + 184, + 120, + 9, + 65, + 16, + 66, + 20, + 8, + 7, + 2, + 64, + 37, + 42, + 43, + 81, + 201, + 69, + 19, + 60, + 50, + 106, + 212, + 152, + 49, + 163, + 106, + 198, + 143, + 9, + 12, + 30, + 85, + 217, + 56, + 102, + 252, + 168, + 241, + 99, + 70, + 37, + 198, + 140, + 58, + 21, + 163, + 178, + 244, + 43, + 43, + 7, + 87, + 86, + 230, + 87, + 85, + 230, + 120, + 135, + 228, + 76, + 168, + 172, + 172, + 172, + 10, + 15, + 14, + 84, + 150, + 141, + 46, + 43, + 43, + 155, + 51, + 187, + 145, + 139, + 87, + 145, + 96, + 189, + 16, + 181, + 72, + 48, + 8, + 212, + 160, + 166, + 6, + 53, + 92, + 52, + 193, + 35, + 99, + 199, + 142, + 31, + 63, + 118, + 212, + 201, + 227, + 131, + 21, + 99, + 107, + 166, + 142, + 63, + 121, + 236, + 201, + 227, + 199, + 30, + 55, + 126, + 236, + 108, + 140, + 201, + 210, + 175, + 169, + 169, + 168, + 169, + 41, + 168, + 174, + 201, + 205, + 173, + 200, + 157, + 86, + 83, + 83, + 83, + 29, + 169, + 8, + 214, + 12, + 61, + 126, + 232, + 208, + 161, + 27, + 48, + 77, + 26, + 176, + 54, + 230, + 15, + 191, + 246, + 140, + 52, + 16, + 187, + 164, + 129, + 160, + 210, + 192, + 174, + 120, + 65, + 120, + 131, + 84, + 34, + 21, + 116, + 141, + 12, + 39, + 211, + 82, + 116, + 173, + 219, + 91, + 225, + 28, + 93, + 38, + 25, + 32, + 24, + 34, + 160, + 33, + 25, + 88, + 40, + 25, + 120, + 82, + 50, + 176, + 81, + 226, + 103, + 132, + 179, + 164, + 16, + 8, + 116, + 41, + 132, + 43, + 164, + 16, + 58, + 165, + 16, + 158, + 148, + 66, + 216, + 40, + 133, + 240, + 154, + 20, + 18, + 166, + 84, + 72, + 228, + 26, + 82, + 8, + 11, + 165, + 16, + 238, + 149, + 66, + 216, + 197, + 115, + 164, + 2, + 41, + 216, + 101, + 132, + 245, + 209, + 37, + 82, + 30, + 174, + 144, + 242, + 184, + 39, + 95, + 242, + 225, + 107, + 201, + 7, + 38, + 249, + 32, + 33, + 44, + 249, + 48, + 68, + 242, + 97, + 162, + 228, + 195, + 44, + 201, + 135, + 21, + 146, + 15, + 247, + 74, + 62, + 168, + 162, + 28, + 79, + 89, + 40, + 249, + 112, + 133, + 228, + 195, + 70, + 201, + 135, + 125, + 34, + 39, + 41, + 249, + 186, + 110, + 171, + 76, + 166, + 37, + 95, + 215, + 141, + 34, + 88, + 123, + 214, + 57, + 21, + 34, + 218, + 158, + 137, + 206, + 108, + 21, + 209, + 181, + 167, + 180, + 100, + 194, + 9, + 147, + 51, + 97, + 253, + 9, + 153, + 98, + 35, + 50, + 197, + 134, + 86, + 101, + 146, + 7, + 143, + 201, + 132, + 37, + 131, + 50, + 161, + 187, + 184, + 162, + 147, + 135, + 22, + 123, + 197, + 166, + 209, + 185, + 82, + 46, + 94, + 147, + 114, + 65, + 177, + 72, + 202, + 5, + 161, + 155, + 225, + 36, + 4, + 97, + 220, + 39, + 121, + 145, + 146, + 188, + 160, + 146, + 154, + 77, + 73, + 74, + 238, + 181, + 69, + 177, + 138, + 123, + 55, + 74, + 50, + 136, + 68, + 37, + 130, + 57, + 8, + 179, + 77, + 18, + 233, + 178, + 187, + 42, + 70, + 91, + 40, + 163, + 95, + 195, + 141, + 48, + 253, + 138, + 238, + 205, + 228, + 208, + 189, + 107, + 29, + 174, + 138, + 123, + 71, + 159, + 72, + 119, + 227, + 73, + 186, + 27, + 27, + 233, + 110, + 72, + 116, + 55, + 221, + 77, + 63, + 164, + 31, + 226, + 10, + 186, + 139, + 243, + 156, + 238, + 66, + 29, + 221, + 133, + 123, + 233, + 46, + 108, + 164, + 187, + 176, + 149, + 238, + 194, + 215, + 116, + 23, + 84, + 186, + 139, + 238, + 162, + 31, + 208, + 15, + 232, + 78, + 186, + 19, + 78, + 250, + 62, + 134, + 208, + 247, + 81, + 71, + 223, + 199, + 44, + 250, + 62, + 238, + 165, + 239, + 99, + 35, + 125, + 31, + 95, + 211, + 247, + 161, + 209, + 247, + 233, + 251, + 208, + 233, + 123, + 124, + 159, + 38, + 32, + 199, + 235, + 232, + 123, + 160, + 244, + 61, + 250, + 30, + 116, + 186, + 3, + 132, + 238, + 160, + 59, + 224, + 164, + 239, + 130, + 208, + 119, + 233, + 187, + 108, + 19, + 125, + 163, + 171, + 58, + 81, + 177, + 65, + 32, + 241, + 33, + 89, + 36, + 92, + 156, + 69, + 124, + 249, + 89, + 196, + 157, + 91, + 145, + 166, + 127, + 239, + 250, + 113, + 96, + 120, + 131, + 20, + 147, + 130, + 92, + 162, + 158, + 150, + 10, + 113, + 28, + 42, + 165, + 194, + 174, + 226, + 161, + 225, + 180, + 228, + 239, + 170, + 61, + 51, + 156, + 166, + 31, + 173, + 53, + 226, + 225, + 251, + 70, + 151, + 211, + 109, + 72, + 209, + 109, + 220, + 152, + 165, + 219, + 160, + 211, + 109, + 48, + 232, + 54, + 76, + 162, + 219, + 208, + 70, + 183, + 97, + 17, + 221, + 6, + 21, + 109, + 116, + 59, + 22, + 209, + 237, + 232, + 164, + 219, + 177, + 146, + 110, + 199, + 125, + 116, + 59, + 82, + 116, + 59, + 151, + 50, + 186, + 29, + 58, + 221, + 14, + 131, + 190, + 4, + 131, + 190, + 2, + 131, + 110, + 71, + 57, + 221, + 142, + 36, + 221, + 142, + 73, + 116, + 59, + 76, + 244, + 181, + 46, + 35, + 30, + 78, + 211, + 173, + 93, + 177, + 49, + 225, + 209, + 185, + 244, + 85, + 250, + 2, + 124, + 8, + 211, + 45, + 148, + 31, + 68, + 132, + 233, + 43, + 244, + 121, + 17, + 190, + 76, + 255, + 42, + 194, + 23, + 233, + 95, + 17, + 66, + 152, + 190, + 68, + 159, + 239, + 10, + 133, + 49, + 218, + 74, + 159, + 7, + 232, + 11, + 208, + 233, + 243, + 208, + 233, + 11, + 24, + 66, + 255, + 10, + 133, + 254, + 101, + 109, + 145, + 59, + 204, + 70, + 187, + 232, + 70, + 16, + 132, + 233, + 70, + 12, + 161, + 27, + 81, + 71, + 55, + 98, + 34, + 221, + 136, + 89, + 116, + 35, + 86, + 208, + 141, + 80, + 233, + 70, + 90, + 216, + 53, + 39, + 236, + 30, + 109, + 165, + 79, + 227, + 37, + 19, + 16, + 166, + 93, + 248, + 92, + 132, + 191, + 199, + 3, + 38, + 36, + 207, + 10, + 39, + 99, + 99, + 79, + 168, + 72, + 26, + 28, + 196, + 70, + 140, + 170, + 72, + 26, + 35, + 70, + 85, + 220, + 107, + 220, + 27, + 163, + 201, + 216, + 170, + 59, + 43, + 146, + 6, + 7, + 177, + 91, + 110, + 171, + 72, + 26, + 28, + 196, + 174, + 185, + 169, + 34, + 105, + 112, + 16, + 187, + 248, + 202, + 138, + 164, + 193, + 65, + 236, + 156, + 243, + 43, + 146, + 6, + 7, + 177, + 57, + 103, + 85, + 36, + 13, + 14, + 98, + 51, + 102, + 85, + 36, + 13, + 14, + 98, + 19, + 167, + 85, + 36, + 141, + 137, + 211, + 42, + 210, + 244, + 158, + 167, + 138, + 74, + 194, + 213, + 19, + 207, + 38, + 198, + 104, + 39, + 189, + 0, + 229, + 244, + 2, + 36, + 233, + 5, + 152, + 68, + 47, + 128, + 76, + 47, + 224, + 31, + 252, + 40, + 243, + 182, + 253, + 182, + 171, + 180, + 52, + 156, + 166, + 119, + 37, + 227, + 3, + 75, + 195, + 157, + 61, + 164, + 243, + 25, + 210, + 57, + 133, + 116, + 62, + 64, + 58, + 231, + 146, + 206, + 203, + 73, + 231, + 149, + 164, + 179, + 150, + 116, + 158, + 70, + 58, + 227, + 164, + 51, + 72, + 58, + 67, + 164, + 51, + 73, + 58, + 159, + 38, + 53, + 32, + 232, + 36, + 201, + 238, + 99, + 162, + 137, + 164, + 159, + 116, + 190, + 68, + 58, + 159, + 32, + 157, + 29, + 164, + 51, + 70, + 58, + 139, + 73, + 103, + 17, + 233, + 52, + 72, + 117, + 50, + 77, + 35, + 93, + 39, + 84, + 138, + 160, + 65, + 4, + 107, + 71, + 243, + 73, + 71, + 35, + 107, + 71, + 29, + 87, + 225, + 28, + 237, + 164, + 17, + 212, + 209, + 8, + 174, + 160, + 17, + 72, + 216, + 72, + 35, + 216, + 74, + 35, + 96, + 34, + 150, + 164, + 145, + 181, + 70, + 97, + 166, + 112, + 94, + 136, + 135, + 133, + 107, + 75, + 235, + 50, + 241, + 193, + 35, + 42, + 22, + 142, + 30, + 79, + 159, + 195, + 21, + 244, + 57, + 172, + 160, + 207, + 225, + 3, + 250, + 28, + 100, + 12, + 161, + 207, + 161, + 141, + 62, + 135, + 173, + 244, + 57, + 126, + 24, + 70, + 159, + 67, + 29, + 125, + 14, + 179, + 232, + 115, + 216, + 68, + 159, + 195, + 215, + 244, + 57, + 48, + 250, + 28, + 84, + 124, + 64, + 249, + 149, + 139, + 21, + 2, + 58, + 105, + 33, + 134, + 208, + 66, + 212, + 209, + 66, + 204, + 162, + 133, + 184, + 130, + 22, + 226, + 107, + 90, + 8, + 85, + 52, + 231, + 107, + 26, + 1, + 197, + 194, + 108, + 19, + 159, + 20, + 13, + 27, + 146, + 109, + 244, + 68, + 30, + 163, + 207, + 209, + 231, + 196, + 65, + 68, + 132, + 70, + 146, + 5, + 122, + 80, + 143, + 235, + 227, + 165, + 21, + 65, + 226, + 12, + 145, + 137, + 33, + 22, + 162, + 213, + 200, + 205, + 229, + 171, + 136, + 203, + 228, + 74, + 19, + 251, + 250, + 239, + 237, + 63, + 124, + 111, + 135, + 121, + 180, + 153, + 222, + 66, + 87, + 160, + 0, + 97, + 186, + 50, + 27, + 174, + 232, + 250, + 177, + 32, + 156, + 38, + 119, + 116, + 197, + 158, + 14, + 143, + 246, + 146, + 223, + 32, + 36, + 19, + 132, + 73, + 2, + 49, + 82, + 140, + 48, + 169, + 65, + 135, + 136, + 15, + 67, + 208, + 196, + 195, + 42, + 4, + 233, + 227, + 8, + 147, + 138, + 174, + 224, + 244, + 112, + 154, + 56, + 187, + 98, + 131, + 194, + 61, + 196, + 193, + 223, + 90, + 31, + 254, + 49, + 184, + 39, + 252, + 121, + 48, + 77, + 201, + 250, + 240, + 103, + 193, + 167, + 195, + 111, + 25, + 105, + 153, + 116, + 133, + 223, + 12, + 166, + 233, + 227, + 235, + 195, + 219, + 130, + 55, + 132, + 95, + 28, + 146, + 54, + 145, + 174, + 240, + 51, + 177, + 52, + 33, + 93, + 225, + 30, + 67, + 20, + 221, + 16, + 172, + 9, + 63, + 241, + 146, + 40, + 122, + 101, + 44, + 77, + 238, + 234, + 10, + 95, + 206, + 131, + 245, + 225, + 203, + 130, + 199, + 135, + 207, + 14, + 138, + 140, + 185, + 153, + 140, + 211, + 58, + 210, + 50, + 73, + 58, + 195, + 83, + 98, + 51, + 194, + 227, + 131, + 55, + 132, + 235, + 131, + 167, + 135, + 147, + 29, + 105, + 19, + 89, + 31, + 174, + 11, + 158, + 22, + 174, + 205, + 148, + 26, + 198, + 223, + 89, + 31, + 46, + 15, + 62, + 29, + 142, + 103, + 208, + 210, + 224, + 244, + 240, + 192, + 160, + 168, + 52, + 26, + 18, + 4, + 155, + 170, + 211, + 100, + 126, + 114, + 144, + 182, + 74, + 107, + 214, + 38, + 106, + 195, + 181, + 10, + 109, + 144, + 22, + 209, + 194, + 90, + 129, + 150, + 175, + 229, + 152, + 220, + 38, + 221, + 228, + 48, + 217, + 184, + 249, + 111, + 82, + 77, + 178, + 137, + 154, + 96, + 202, + 73, + 179, + 93, + 201, + 56, + 63, + 123, + 206, + 81, + 197, + 197, + 31, + 126, + 140, + 77, + 32, + 11, + 92, + 167, + 28, + 242, + 61, + 51, + 87, + 122, + 196, + 68, + 113, + 34, + 82, + 30, + 169, + 145, + 54, + 78, + 29, + 67, + 26, + 83, + 155, + 102, + 163, + 241, + 116, + 35, + 117, + 96, + 106, + 52, + 77, + 44, + 147, + 103, + 164, + 148, + 232, + 24, + 146, + 114, + 55, + 162, + 113, + 218, + 152, + 84, + 77, + 188, + 49, + 173, + 177, + 41, + 169, + 234, + 120, + 99, + 74, + 155, + 116, + 106, + 243, + 26, + 66, + 110, + 105, + 73, + 213, + 196, + 83, + 244, + 250, + 52, + 193, + 180, + 230, + 52, + 97, + 60, + 233, + 218, + 124, + 238, + 31, + 221, + 0, + 66, + 92, + 215, + 222, + 156, + 207, + 195, + 1, + 215, + 222, + 220, + 210, + 2, + 127, + 238, + 249, + 117, + 254, + 58, + 247, + 113, + 174, + 196, + 184, + 250, + 95, + 0, + 109, + 89, + 24, + 63, + 242, + 248, + 143, + 193, + 11, + 82, + 171, + 26, + 167, + 54, + 167, + 30, + 43, + 104, + 73, + 85, + 112, + 132, + 21, + 180, + 52, + 166, + 126, + 197, + 29, + 168, + 27, + 200, + 55, + 100, + 95, + 67, + 253, + 6, + 242, + 79, + 30, + 180, + 52, + 111, + 144, + 142, + 35, + 223, + 52, + 76, + 225, + 233, + 210, + 113, + 245, + 45, + 45, + 141, + 105, + 50, + 93, + 148, + 131, + 65, + 254, + 217, + 80, + 191, + 1, + 49, + 30, + 180, + 52, + 111, + 48, + 133, + 96, + 240, + 114, + 48, + 76, + 161, + 76, + 185, + 187, + 50, + 229, + 138, + 201, + 55, + 188, + 92, + 17, + 15, + 90, + 154, + 55, + 152, + 205, + 40, + 22, + 229, + 138, + 205, + 102, + 81, + 78, + 38, + 188, + 220, + 154, + 142, + 162, + 134, + 250, + 53, + 69, + 69, + 162, + 140, + 207, + 64, + 135, + 40, + 211, + 225, + 51, + 142, + 46, + 243, + 82, + 113, + 67, + 253, + 154, + 226, + 98, + 81, + 38, + 183, + 19, + 47, + 137, + 50, + 47, + 229, + 118, + 242, + 50, + 169, + 227, + 68, + 145, + 96, + 176, + 161, + 126, + 77, + 40, + 40, + 138, + 144, + 0, + 130, + 162, + 72, + 144, + 4, + 68, + 145, + 233, + 71, + 138, + 12, + 201, + 22, + 185, + 225, + 112, + 145, + 27, + 68, + 77, + 18, + 57, + 82, + 134, + 131, + 150, + 230, + 13, + 246, + 93, + 253, + 101, + 236, + 187, + 234, + 91, + 90, + 226, + 255, + 233, + 51, + 119, + 76, + 60, + 78, + 214, + 142, + 108, + 153, + 61, + 147, + 59, + 159, + 219, + 162, + 13, + 115, + 219, + 162, + 13, + 109, + 169, + 27, + 207, + 159, + 239, + 79, + 117, + 158, + 110, + 24, + 107, + 102, + 183, + 100, + 189, + 210, + 177, + 182, + 211, + 103, + 207, + 231, + 97, + 251, + 220, + 84, + 75, + 116, + 110, + 125, + 106, + 118, + 180, + 222, + 88, + 51, + 114, + 230, + 47, + 100, + 207, + 228, + 217, + 35, + 163, + 245, + 107, + 48, + 179, + 97, + 90, + 243, + 154, + 153, + 201, + 185, + 245, + 93, + 35, + 147, + 35, + 27, + 162, + 237, + 245, + 45, + 107, + 143, + 159, + 84, + 85, + 125, + 76, + 93, + 55, + 28, + 174, + 171, + 106, + 210, + 47, + 16, + 155, + 196, + 137, + 85, + 241, + 186, + 142, + 175, + 254, + 133, + 236, + 106, + 158, + 125, + 60, + 175, + 171, + 154, + 215, + 85, + 205, + 235, + 58, + 62, + 121, + 188, + 168, + 11, + 66, + 198, + 39, + 53, + 175, + 49, + 97, + 76, + 203, + 216, + 153, + 153, + 112, + 45, + 181, + 90, + 220, + 99, + 155, + 219, + 242, + 35, + 45, + 99, + 114, + 245, + 69, + 199, + 9, + 225, + 29, + 25, + 241, + 95, + 158, + 223, + 35, + 131, + 172, + 134, + 53, + 222, + 146, + 178, + 69, + 199, + 164, + 236, + 209, + 49, + 34, + 171, + 108, + 116, + 217, + 104, + 158, + 37, + 67, + 100, + 57, + 248, + 9, + 67, + 54, + 203, + 127, + 249, + 200, + 72, + 126, + 15, + 89, + 157, + 205, + 210, + 163, + 99, + 82, + 174, + 232, + 24, + 196, + 151, + 158, + 215, + 113, + 30, + 252, + 13, + 103, + 214, + 103, + 254, + 58, + 58, + 58, + 58, + 150, + 158, + 215, + 177, + 244, + 60, + 206, + 240, + 12, + 140, + 119, + 252, + 187, + 39, + 30, + 143, + 55, + 164, + 146, + 237, + 245, + 29, + 75, + 129, + 198, + 84, + 233, + 212, + 198, + 84, + 221, + 228, + 25, + 205, + 107, + 52, + 173, + 33, + 149, + 108, + 227, + 93, + 74, + 141, + 232, + 79, + 179, + 90, + 27, + 210, + 108, + 83, + 38, + 113, + 240, + 212, + 198, + 212, + 8, + 158, + 40, + 73, + 135, + 11, + 242, + 180, + 90, + 158, + 102, + 54, + 103, + 11, + 254, + 124, + 252, + 51, + 173, + 137, + 199, + 199, + 242, + 89, + 208, + 73, + 159, + 94, + 75, + 146, + 33, + 178, + 20, + 29, + 45, + 82, + 42, + 212, + 56, + 141, + 166, + 220, + 141, + 211, + 178, + 174, + 220, + 30, + 220, + 43, + 150, + 135, + 142, + 22, + 196, + 151, + 118, + 144, + 56, + 225, + 77, + 61, + 220, + 23, + 129, + 32, + 19, + 7, + 239, + 115, + 255, + 119, + 233, + 121, + 89, + 44, + 203, + 139, + 165, + 217, + 48, + 243, + 102, + 28, + 241, + 142, + 126, + 150, + 28, + 126, + 56, + 179, + 4, + 16, + 25, + 75, + 227, + 113, + 97, + 220, + 75, + 144, + 8, + 127, + 20, + 73, + 34, + 148, + 16, + 248, + 149, + 47, + 173, + 155, + 240, + 131, + 137, + 113, + 47, + 29, + 235, + 227, + 190, + 46, + 214, + 203, + 239, + 23, + 138, + 123, + 15, + 86, + 214, + 203, + 189, + 71, + 172, + 151, + 251, + 120, + 88, + 47, + 28, + 2, + 58, + 225, + 96, + 189, + 208, + 225, + 100, + 189, + 112, + 193, + 201, + 14, + 193, + 13, + 23, + 59, + 4, + 15, + 220, + 236, + 16, + 114, + 224, + 97, + 135, + 224, + 133, + 135, + 29, + 68, + 46, + 114, + 216, + 65, + 248, + 224, + 101, + 7, + 225, + 135, + 151, + 253, + 132, + 60, + 248, + 216, + 65, + 4, + 144, + 199, + 126, + 66, + 62, + 2, + 236, + 39, + 4, + 5, + 44, + 64, + 62, + 251, + 9, + 33, + 4, + 217, + 143, + 8, + 11, + 104, + 160, + 128, + 253, + 136, + 8, + 194, + 236, + 71, + 20, + 194, + 96, + 63, + 34, + 10, + 131, + 253, + 128, + 34, + 68, + 216, + 15, + 40, + 70, + 33, + 251, + 1, + 49, + 20, + 178, + 239, + 81, + 130, + 40, + 251, + 30, + 3, + 80, + 196, + 190, + 199, + 64, + 196, + 216, + 247, + 40, + 21, + 48, + 142, + 18, + 118, + 0, + 131, + 48, + 128, + 29, + 64, + 153, + 128, + 131, + 81, + 202, + 14, + 96, + 8, + 226, + 236, + 0, + 202, + 81, + 198, + 14, + 96, + 40, + 202, + 216, + 119, + 168, + 192, + 96, + 246, + 29, + 42, + 49, + 132, + 125, + 135, + 42, + 148, + 179, + 253, + 24, + 38, + 224, + 112, + 12, + 101, + 251, + 81, + 141, + 74, + 182, + 31, + 53, + 168, + 98, + 223, + 34, + 33, + 224, + 8, + 12, + 99, + 223, + 98, + 164, + 128, + 181, + 24, + 206, + 190, + 197, + 40, + 84, + 179, + 111, + 113, + 28, + 106, + 216, + 183, + 168, + 67, + 130, + 125, + 131, + 36, + 70, + 176, + 111, + 48, + 26, + 35, + 217, + 55, + 24, + 131, + 90, + 246, + 13, + 198, + 162, + 150, + 253, + 19, + 245, + 24, + 197, + 254, + 137, + 6, + 28, + 199, + 254, + 137, + 113, + 168, + 99, + 251, + 112, + 60, + 146, + 108, + 31, + 198, + 99, + 52, + 219, + 135, + 19, + 48, + 134, + 237, + 195, + 137, + 2, + 54, + 98, + 44, + 219, + 135, + 147, + 80, + 207, + 246, + 97, + 2, + 198, + 177, + 175, + 113, + 178, + 128, + 19, + 113, + 60, + 251, + 26, + 147, + 48, + 158, + 125, + 141, + 201, + 56, + 129, + 125, + 133, + 41, + 2, + 78, + 197, + 137, + 236, + 43, + 76, + 67, + 35, + 219, + 139, + 38, + 76, + 96, + 123, + 49, + 93, + 192, + 83, + 112, + 50, + 219, + 139, + 102, + 76, + 100, + 95, + 162, + 5, + 147, + 216, + 151, + 152, + 129, + 73, + 108, + 47, + 78, + 197, + 100, + 246, + 37, + 102, + 98, + 42, + 251, + 18, + 173, + 152, + 198, + 190, + 228, + 183, + 169, + 216, + 151, + 152, + 133, + 38, + 246, + 15, + 180, + 97, + 58, + 251, + 7, + 218, + 113, + 10, + 251, + 7, + 78, + 199, + 41, + 236, + 11, + 204, + 70, + 11, + 251, + 2, + 115, + 48, + 131, + 125, + 129, + 185, + 56, + 149, + 125, + 129, + 51, + 48, + 147, + 125, + 142, + 121, + 2, + 206, + 71, + 43, + 251, + 28, + 103, + 226, + 52, + 246, + 25, + 206, + 66, + 27, + 251, + 28, + 103, + 11, + 120, + 14, + 218, + 217, + 231, + 88, + 128, + 211, + 217, + 103, + 56, + 23, + 179, + 217, + 103, + 88, + 40, + 224, + 34, + 204, + 97, + 159, + 98, + 49, + 230, + 178, + 79, + 177, + 4, + 243, + 216, + 167, + 232, + 16, + 112, + 41, + 230, + 179, + 79, + 112, + 30, + 206, + 100, + 159, + 224, + 124, + 156, + 197, + 62, + 193, + 5, + 56, + 139, + 125, + 140, + 11, + 113, + 54, + 251, + 24, + 23, + 97, + 1, + 251, + 24, + 23, + 227, + 92, + 246, + 49, + 46, + 17, + 240, + 82, + 44, + 100, + 31, + 227, + 50, + 44, + 98, + 31, + 227, + 114, + 44, + 102, + 123, + 112, + 133, + 128, + 157, + 232, + 96, + 123, + 112, + 37, + 150, + 178, + 61, + 184, + 10, + 231, + 49, + 126, + 158, + 127, + 62, + 251, + 8, + 215, + 8, + 120, + 45, + 46, + 96, + 187, + 113, + 29, + 46, + 100, + 187, + 177, + 12, + 23, + 177, + 221, + 184, + 30, + 23, + 179, + 221, + 184, + 1, + 151, + 176, + 15, + 177, + 28, + 151, + 178, + 15, + 113, + 35, + 46, + 99, + 187, + 113, + 19, + 46, + 99, + 31, + 226, + 102, + 92, + 206, + 62, + 196, + 45, + 184, + 130, + 125, + 136, + 21, + 184, + 146, + 125, + 136, + 149, + 184, + 146, + 237, + 194, + 173, + 184, + 138, + 237, + 194, + 109, + 184, + 154, + 237, + 194, + 175, + 112, + 13, + 251, + 0, + 183, + 11, + 248, + 107, + 92, + 203, + 62, + 192, + 42, + 44, + 99, + 31, + 224, + 55, + 184, + 158, + 237, + 194, + 29, + 184, + 158, + 125, + 128, + 59, + 113, + 3, + 251, + 0, + 119, + 97, + 57, + 219, + 137, + 223, + 226, + 70, + 182, + 19, + 119, + 227, + 38, + 182, + 19, + 191, + 19, + 240, + 30, + 220, + 194, + 118, + 226, + 94, + 172, + 96, + 59, + 113, + 31, + 86, + 178, + 157, + 184, + 31, + 43, + 217, + 251, + 120, + 0, + 183, + 178, + 247, + 241, + 32, + 110, + 99, + 239, + 227, + 33, + 252, + 138, + 189, + 143, + 135, + 113, + 59, + 123, + 15, + 191, + 199, + 175, + 217, + 14, + 60, + 130, + 85, + 108, + 7, + 86, + 227, + 55, + 108, + 7, + 30, + 21, + 240, + 49, + 220, + 193, + 118, + 224, + 113, + 220, + 201, + 118, + 224, + 15, + 248, + 45, + 219, + 129, + 39, + 4, + 252, + 35, + 238, + 102, + 59, + 240, + 36, + 126, + 199, + 118, + 32, + 133, + 123, + 216, + 14, + 172, + 193, + 61, + 236, + 93, + 116, + 225, + 94, + 246, + 46, + 214, + 226, + 62, + 246, + 46, + 186, + 241, + 0, + 123, + 7, + 235, + 240, + 32, + 123, + 27, + 235, + 5, + 124, + 10, + 15, + 177, + 183, + 145, + 198, + 195, + 236, + 109, + 108, + 192, + 239, + 217, + 219, + 232, + 17, + 240, + 105, + 172, + 102, + 111, + 227, + 25, + 60, + 202, + 222, + 194, + 159, + 240, + 24, + 123, + 11, + 127, + 22, + 112, + 35, + 30, + 103, + 111, + 97, + 19, + 254, + 192, + 222, + 194, + 95, + 240, + 4, + 123, + 11, + 207, + 226, + 143, + 236, + 45, + 60, + 135, + 39, + 217, + 118, + 108, + 70, + 138, + 109, + 199, + 95, + 177, + 134, + 189, + 137, + 231, + 5, + 124, + 1, + 93, + 236, + 77, + 252, + 13, + 107, + 217, + 54, + 188, + 136, + 110, + 182, + 13, + 47, + 97, + 29, + 219, + 134, + 151, + 177, + 158, + 109, + 195, + 43, + 120, + 138, + 109, + 195, + 22, + 164, + 217, + 54, + 188, + 138, + 13, + 108, + 27, + 182, + 10, + 248, + 26, + 122, + 216, + 54, + 188, + 142, + 103, + 216, + 54, + 252, + 29, + 127, + 98, + 111, + 224, + 13, + 252, + 137, + 253, + 29, + 219, + 240, + 103, + 246, + 119, + 188, + 137, + 141, + 236, + 239, + 216, + 142, + 77, + 236, + 117, + 188, + 37, + 224, + 219, + 120, + 150, + 189, + 142, + 119, + 240, + 28, + 123, + 29, + 239, + 98, + 51, + 123, + 29, + 59, + 4, + 124, + 15, + 127, + 101, + 175, + 227, + 125, + 60, + 207, + 94, + 199, + 78, + 188, + 192, + 94, + 195, + 7, + 2, + 238, + 194, + 139, + 108, + 43, + 62, + 196, + 75, + 108, + 43, + 118, + 227, + 101, + 182, + 21, + 31, + 9, + 184, + 7, + 175, + 176, + 173, + 248, + 24, + 91, + 216, + 86, + 124, + 130, + 87, + 217, + 86, + 124, + 138, + 215, + 216, + 171, + 248, + 76, + 192, + 207, + 241, + 58, + 123, + 21, + 95, + 224, + 239, + 108, + 11, + 254, + 129, + 55, + 216, + 22, + 124, + 41, + 224, + 94, + 108, + 99, + 91, + 240, + 21, + 182, + 179, + 87, + 240, + 53, + 222, + 98, + 175, + 96, + 159, + 128, + 255, + 196, + 219, + 236, + 21, + 124, + 131, + 119, + 216, + 43, + 248, + 22, + 239, + 178, + 87, + 176, + 95, + 192, + 239, + 240, + 30, + 123, + 25, + 7, + 240, + 62, + 123, + 25, + 223, + 99, + 39, + 123, + 25, + 63, + 96, + 39, + 123, + 9, + 63, + 226, + 3, + 246, + 18, + 126, + 194, + 46, + 246, + 18, + 14, + 226, + 67, + 246, + 18, + 14, + 9, + 216, + 139, + 143, + 216, + 139, + 232, + 195, + 30, + 246, + 34, + 24, + 62, + 102, + 47, + 254, + 87, + 167, + 255, + 191, + 160, + 211, + 255, + 249, + 127, + 185, + 78, + 255, + 199, + 127, + 172, + 211, + 63, + 255, + 55, + 58, + 253, + 243, + 159, + 233, + 244, + 207, + 254, + 141, + 78, + 255, + 244, + 103, + 58, + 253, + 147, + 255, + 64, + 167, + 239, + 57, + 172, + 211, + 151, + 28, + 163, + 211, + 63, + 250, + 55, + 58, + 253, + 35, + 161, + 211, + 63, + 250, + 153, + 78, + 223, + 45, + 116, + 250, + 238, + 163, + 116, + 250, + 110, + 161, + 211, + 119, + 11, + 157, + 190, + 251, + 40, + 157, + 254, + 225, + 207, + 116, + 58, + 191, + 143, + 197, + 33, + 215, + 233, + 187, + 254, + 47, + 212, + 233, + 239, + 252, + 127, + 164, + 211, + 183, + 253, + 87, + 167, + 255, + 87, + 167, + 255, + 215, + 78, + 255, + 175, + 78, + 255, + 15, + 117, + 250, + 191, + 179, + 211, + 255, + 171, + 211, + 255, + 171, + 211, + 127, + 217, + 78, + 255, + 219, + 255, + 15, + 236, + 116, + 42, + 126, + 32, + 202, + 239, + 187, + 72, + 252, + 210, + 69, + 196, + 21, + 113, + 21, + 71, + 92, + 17, + 254, + 19, + 168, + 67, + 134, + 180, + 233, + 80, + 82, + 193, + 65, + 24, + 242, + 38, + 126, + 101, + 43, + 5, + 144, + 21, + 74, + 15, + 20, + 152, + 113, + 217, + 26, + 149, + 95, + 88, + 235, + 162, + 80, + 210, + 244, + 201, + 164, + 213, + 84, + 171, + 90, + 204, + 35, + 228, + 90, + 117, + 4, + 33, + 67, + 246, + 244, + 238, + 65, + 93, + 239, + 39, + 117, + 249, + 107, + 130, + 34, + 55, + 102, + 170, + 85, + 41, + 84, + 139, + 245, + 101, + 201, + 60, + 66, + 169, + 145, + 107, + 81, + 163, + 142, + 32, + 82, + 45, + 165, + 6, + 33, + 228, + 101, + 139, + 197, + 122, + 101, + 228, + 254, + 59, + 252, + 241, + 248, + 201, + 250, + 254, + 214, + 218, + 9, + 250, + 94, + 125, + 207, + 158, + 222, + 61, + 123, + 244, + 175, + 80, + 87, + 55, + 65, + 239, + 253, + 164, + 113, + 106, + 243, + 90, + 69, + 6, + 33, + 122, + 173, + 94, + 219, + 210, + 50, + 180, + 220, + 35, + 185, + 42, + 93, + 146, + 52, + 172, + 210, + 251, + 105, + 245, + 7, + 85, + 15, + 110, + 37, + 231, + 72, + 102, + 210, + 208, + 247, + 244, + 161, + 239, + 251, + 110, + 223, + 178, + 133, + 183, + 245, + 52, + 105, + 45, + 189, + 64, + 180, + 213, + 138, + 243, + 54, + 0, + 236, + 135, + 181, + 133, + 197, + 85, + 74, + 154, + 253, + 144, + 44, + 140, + 13, + 172, + 178, + 170, + 22, + 77, + 129, + 76, + 248, + 125, + 43, + 235, + 87, + 102, + 126, + 221, + 139, + 66, + 51, + 213, + 90, + 156, + 230, + 78, + 51, + 53, + 167, + 217, + 166, + 164, + 215, + 238, + 172, + 50, + 239, + 36, + 146, + 92, + 75, + 73, + 210, + 238, + 170, + 34, + 121, + 182, + 197, + 143, + 248, + 121, + 19, + 227, + 181, + 19, + 122, + 107, + 245, + 222, + 120, + 107, + 109, + 111, + 45, + 234, + 106, + 121, + 163, + 122, + 107, + 107, + 245, + 90, + 226, + 114, + 39, + 18, + 252, + 59, + 180, + 156, + 196, + 227, + 30, + 222, + 60, + 169, + 82, + 192, + 149, + 21, + 91, + 202, + 222, + 31, + 186, + 165, + 92, + 90, + 75, + 124, + 251, + 246, + 245, + 125, + 158, + 129, + 220, + 157, + 63, + 67, + 90, + 75, + 74, + 68, + 59, + 99, + 73, + 47, + 20, + 137, + 40, + 95, + 81, + 72, + 87, + 26, + 100, + 37, + 161, + 228, + 44, + 149, + 215, + 168, + 31, + 104, + 221, + 139, + 186, + 189, + 130, + 58, + 239, + 58, + 39, + 120, + 253, + 96, + 65, + 204, + 253, + 221, + 119, + 125, + 95, + 129, + 224, + 177, + 190, + 157, + 228, + 106, + 108, + 129, + 5, + 39, + 175, + 179, + 72, + 208, + 30, + 87, + 211, + 100, + 82, + 50, + 38, + 88, + 76, + 44, + 164, + 22, + 22, + 42, + 17, + 169, + 22, + 106, + 141, + 54, + 98, + 34, + 102, + 97, + 33, + 174, + 192, + 125, + 80, + 112, + 159, + 149, + 179, + 93, + 223, + 223, + 186, + 127, + 143, + 190, + 183, + 86, + 175, + 69, + 29, + 135, + 250, + 94, + 189, + 87, + 84, + 55, + 180, + 188, + 114, + 88, + 165, + 55, + 71, + 213, + 74, + 134, + 15, + 175, + 94, + 191, + 101, + 210, + 41, + 21, + 137, + 225, + 210, + 150, + 45, + 139, + 111, + 140, + 77, + 200, + 107, + 63, + 21, + 4, + 163, + 73, + 154, + 158, + 69, + 23, + 64, + 194, + 160, + 100, + 222, + 34, + 186, + 72, + 162, + 19, + 200, + 4, + 74, + 73, + 20, + 52, + 160, + 44, + 2, + 65, + 158, + 188, + 232, + 102, + 206, + 179, + 61, + 173, + 250, + 39, + 24, + 50, + 97, + 239, + 208, + 114, + 44, + 38, + 173, + 158, + 97, + 17, + 239, + 104, + 58, + 144, + 164, + 215, + 173, + 227, + 60, + 232, + 17, + 191, + 123, + 220, + 2, + 9, + 197, + 73, + 63, + 229, + 141, + 173, + 205, + 52, + 241, + 73, + 200, + 247, + 129, + 224, + 62, + 89, + 180, + 242, + 64, + 171, + 224, + 67, + 166, + 81, + 61, + 91, + 248, + 56, + 19, + 254, + 59, + 46, + 154, + 80, + 222, + 128, + 132, + 169, + 27, + 32, + 177, + 157, + 93, + 57, + 9, + 154, + 102, + 59, + 147, + 70, + 78, + 226, + 55, + 18, + 161, + 210, + 189, + 210, + 147, + 18, + 149, + 206, + 7, + 201, + 1, + 8, + 229, + 191, + 96, + 182, + 72, + 159, + 129, + 126, + 70, + 210, + 228, + 209, + 117, + 128, + 188, + 246, + 98, + 127, + 92, + 175, + 213, + 247, + 239, + 213, + 247, + 162, + 174, + 182, + 174, + 118, + 153, + 50, + 56, + 222, + 122, + 153, + 190, + 121, + 104, + 57, + 105, + 141, + 199, + 189, + 164, + 146, + 144, + 71, + 87, + 246, + 53, + 231, + 41, + 95, + 254, + 196, + 41, + 240, + 95, + 92, + 202, + 154, + 178, + 9, + 33, + 234, + 223, + 0, + 141, + 125, + 214, + 109, + 179, + 141, + 105, + 50, + 165, + 217, + 15, + 221, + 86, + 235, + 152, + 38, + 45, + 205, + 62, + 19, + 136, + 72, + 177, + 219, + 69, + 202, + 254, + 181, + 28, + 201, + 204, + 151, + 164, + 217, + 165, + 219, + 253, + 30, + 143, + 218, + 100, + 79, + 179, + 253, + 221, + 46, + 151, + 64, + 190, + 74, + 154, + 117, + 93, + 109, + 178, + 135, + 114, + 148, + 80, + 154, + 125, + 150, + 244, + 241, + 2, + 161, + 16, + 207, + 13, + 5, + 29, + 186, + 218, + 20, + 178, + 217, + 237, + 106, + 83, + 40, + 77, + 159, + 78, + 218, + 168, + 197, + 231, + 51, + 194, + 186, + 139, + 82, + 35, + 236, + 114, + 39, + 134, + 108, + 219, + 194, + 225, + 22, + 12, + 217, + 203, + 253, + 174, + 117, + 28, + 110, + 174, + 24, + 90, + 158, + 191, + 134, + 30, + 174, + 208, + 230, + 118, + 83, + 81, + 97, + 210, + 236, + 116, + 209, + 254, + 122, + 118, + 37, + 173, + 110, + 15, + 109, + 10, + 229, + 240, + 52, + 78, + 187, + 139, + 90, + 124, + 153, + 14, + 208, + 38, + 95, + 154, + 125, + 153, + 116, + 216, + 237, + 180, + 233, + 151, + 106, + 139, + 199, + 51, + 245, + 241, + 218, + 68, + 101, + 201, + 225, + 35, + 149, + 145, + 234, + 211, + 202, + 70, + 245, + 105, + 237, + 5, + 211, + 139, + 65, + 237, + 4, + 91, + 139, + 109, + 154, + 227, + 108, + 219, + 28, + 199, + 197, + 238, + 139, + 61, + 55, + 184, + 159, + 113, + 127, + 28, + 248, + 56, + 127, + 95, + 192, + 182, + 209, + 250, + 148, + 135, + 230, + 235, + 65, + 189, + 64, + 15, + 233, + 234, + 159, + 217, + 62, + 104, + 108, + 23, + 76, + 108, + 31, + 204, + 108, + 95, + 50, + 16, + 178, + 232, + 38, + 85, + 125, + 41, + 24, + 200, + 9, + 6, + 3, + 166, + 96, + 64, + 34, + 212, + 20, + 8, + 74, + 246, + 144, + 158, + 166, + 15, + 173, + 157, + 232, + 34, + 174, + 52, + 241, + 175, + 227, + 61, + 0, + 111, + 242, + 90, + 66, + 109, + 22, + 206, + 73, + 62, + 12, + 150, + 52, + 251, + 70, + 112, + 223, + 194, + 167, + 185, + 206, + 185, + 110, + 233, + 240, + 189, + 1, + 144, + 100, + 36, + 90, + 69, + 158, + 166, + 87, + 194, + 128, + 78, + 106, + 146, + 54, + 215, + 186, + 58, + 58, + 139, + 46, + 164, + 87, + 80, + 153, + 246, + 208, + 34, + 132, + 201, + 138, + 53, + 55, + 10, + 17, + 219, + 191, + 87, + 63, + 16, + 231, + 242, + 192, + 125, + 224, + 117, + 181, + 189, + 181, + 117, + 123, + 123, + 91, + 247, + 184, + 220, + 190, + 4, + 225, + 96, + 153, + 99, + 112, + 220, + 113, + 153, + 190, + 57, + 51, + 59, + 80, + 83, + 83, + 83, + 67, + 56, + 64, + 43, + 105, + 93, + 146, + 61, + 178, + 41, + 246, + 70, + 98, + 213, + 195, + 135, + 87, + 15, + 31, + 62, + 172, + 42, + 22, + 45, + 20, + 179, + 167, + 178, + 34, + 215, + 155, + 163, + 242, + 11, + 145, + 154, + 172, + 29, + 170, + 166, + 190, + 226, + 7, + 239, + 250, + 122, + 245, + 157, + 151, + 92, + 117, + 55, + 217, + 224, + 249, + 225, + 245, + 55, + 14, + 140, + 127, + 228, + 217, + 7, + 102, + 134, + 158, + 120, + 98, + 116, + 237, + 236, + 77, + 151, + 111, + 254, + 248, + 140, + 179, + 127, + 117, + 247, + 114, + 207, + 214, + 119, + 190, + 120, + 162, + 249, + 177, + 103, + 30, + 186, + 190, + 125, + 40, + 215, + 105, + 1, + 64, + 214, + 149, + 30, + 88, + 96, + 39, + 79, + 109, + 128, + 141, + 253, + 148, + 252, + 3, + 239, + 183, + 93, + 229, + 80, + 177, + 113, + 168, + 10, + 104, + 22, + 208, + 34, + 160, + 226, + 224, + 44, + 81, + 5, + 52, + 11, + 104, + 17, + 80, + 51, + 9, + 209, + 21, + 80, + 51, + 9, + 161, + 21, + 80, + 51, + 113, + 198, + 153, + 4, + 84, + 4, + 84, + 5, + 52, + 11, + 104, + 17, + 208, + 221, + 108, + 155, + 111, + 187, + 203, + 246, + 168, + 237, + 69, + 155, + 114, + 146, + 116, + 146, + 253, + 118, + 89, + 114, + 19, + 106, + 130, + 77, + 149, + 52, + 197, + 98, + 149, + 52, + 216, + 108, + 118, + 251, + 75, + 146, + 156, + 35, + 73, + 178, + 100, + 7, + 181, + 217, + 101, + 77, + 122, + 154, + 62, + 205, + 255, + 95, + 2, + 185, + 47, + 105, + 129, + 44, + 243, + 107, + 161, + 47, + 89, + 228, + 52, + 61, + 227, + 41, + 69, + 177, + 36, + 11, + 194, + 85, + 150, + 52, + 219, + 213, + 173, + 235, + 148, + 143, + 223, + 39, + 221, + 92, + 246, + 44, + 105, + 246, + 85, + 55, + 23, + 125, + 75, + 154, + 84, + 39, + 237, + 90, + 178, + 48, + 90, + 165, + 117, + 70, + 134, + 105, + 43, + 157, + 148, + 235, + 104, + 171, + 61, + 167, + 10, + 84, + 167, + 6, + 149, + 40, + 127, + 153, + 191, + 67, + 211, + 108, + 207, + 122, + 254, + 14, + 93, + 231, + 72, + 147, + 155, + 196, + 184, + 126, + 25, + 143, + 183, + 198, + 245, + 3, + 241, + 248, + 126, + 62, + 64, + 181, + 250, + 39, + 58, + 215, + 220, + 117, + 250, + 254, + 218, + 3, + 181, + 174, + 4, + 31, + 218, + 68, + 98, + 217, + 224, + 184, + 124, + 153, + 190, + 217, + 233, + 116, + 14, + 45, + 39, + 226, + 40, + 197, + 206, + 118, + 118, + 185, + 19, + 246, + 52, + 219, + 150, + 180, + 86, + 38, + 164, + 194, + 178, + 132, + 36, + 23, + 20, + 212, + 114, + 18, + 45, + 173, + 104, + 29, + 59, + 179, + 57, + 153, + 99, + 75, + 90, + 19, + 182, + 206, + 73, + 9, + 91, + 50, + 150, + 176, + 21, + 6, + 19, + 182, + 100, + 89, + 66, + 72, + 65, + 11, + 249, + 133, + 147, + 58, + 196, + 35, + 174, + 200, + 48, + 82, + 233, + 170, + 244, + 70, + 93, + 146, + 139, + 208, + 85, + 189, + 215, + 208, + 223, + 253, + 234, + 249, + 231, + 187, + 251, + 134, + 145, + 89, + 15, + 75, + 235, + 15, + 157, + 248, + 112, + 223, + 253, + 84, + 166, + 191, + 238, + 61, + 155, + 107, + 155, + 38, + 246, + 169, + 28, + 81, + 126, + 143, + 16, + 57, + 148, + 244, + 120, + 196, + 112, + 186, + 5, + 180, + 250, + 197, + 48, + 115, + 101, + 97, + 229, + 152, + 36, + 226, + 138, + 80, + 30, + 28, + 243, + 216, + 248, + 80, + 186, + 5, + 148, + 252, + 98, + 232, + 251, + 85, + 83, + 166, + 16, + 199, + 60, + 54, + 49, + 150, + 2, + 90, + 253, + 98, + 188, + 121, + 33, + 49, + 216, + 105, + 246, + 89, + 70, + 109, + 9, + 45, + 178, + 1, + 132, + 109, + 74, + 218, + 57, + 123, + 73, + 208, + 97, + 9, + 121, + 189, + 65, + 55, + 87, + 70, + 86, + 167, + 44, + 135, + 130, + 118, + 7, + 129, + 230, + 79, + 179, + 47, + 186, + 157, + 78, + 218, + 36, + 16, + 94, + 210, + 207, + 213, + 196, + 144, + 45, + 67, + 80, + 183, + 183, + 110, + 175, + 59, + 49, + 164, + 119, + 179, + 190, + 57, + 206, + 117, + 197, + 64, + 94, + 165, + 218, + 228, + 20, + 176, + 49, + 112, + 81, + 193, + 242, + 130, + 85, + 158, + 71, + 60, + 207, + 217, + 182, + 219, + 118, + 228, + 155, + 204, + 30, + 191, + 163, + 52, + 32, + 153, + 203, + 149, + 114, + 107, + 15, + 219, + 5, + 137, + 237, + 74, + 234, + 30, + 139, + 215, + 237, + 241, + 188, + 228, + 112, + 230, + 56, + 60, + 57, + 14, + 167, + 61, + 77, + 31, + 74, + 122, + 120, + 67, + 146, + 142, + 251, + 28, + 212, + 225, + 112, + 38, + 189, + 36, + 219, + 168, + 167, + 156, + 50, + 121, + 131, + 95, + 189, + 79, + 19, + 127, + 210, + 197, + 155, + 231, + 154, + 165, + 47, + 212, + 175, + 208, + 87, + 232, + 178, + 222, + 169, + 245, + 43, + 11, + 173, + 95, + 89, + 104, + 92, + 89, + 228, + 8, + 93, + 221, + 225, + 231, + 138, + 162, + 220, + 79, + 224, + 215, + 253, + 212, + 159, + 102, + 251, + 159, + 226, + 77, + 244, + 175, + 52, + 220, + 207, + 144, + 97, + 112, + 146, + 95, + 195, + 78, + 106, + 186, + 28, + 235, + 72, + 15, + 169, + 1, + 184, + 0, + 70, + 162, + 85, + 6, + 248, + 165, + 254, + 149, + 225, + 52, + 185, + 45, + 171, + 68, + 226, + 123, + 247, + 239, + 21, + 138, + 164, + 117, + 113, + 156, + 43, + 146, + 253, + 173, + 124, + 101, + 237, + 109, + 221, + 35, + 248, + 208, + 234, + 74, + 12, + 105, + 229, + 54, + 206, + 50, + 211, + 224, + 184, + 114, + 153, + 190, + 25, + 66, + 153, + 8, + 61, + 66, + 22, + 183, + 198, + 227, + 63, + 59, + 226, + 243, + 84, + 231, + 230, + 86, + 86, + 28, + 86, + 39, + 158, + 136, + 55, + 34, + 13, + 175, + 172, + 128, + 55, + 71, + 83, + 163, + 133, + 177, + 166, + 63, + 121, + 239, + 60, + 231, + 170, + 238, + 39, + 110, + 58, + 229, + 166, + 1, + 143, + 222, + 66, + 223, + 233, + 125, + 106, + 226, + 53, + 183, + 110, + 34, + 166, + 165, + 55, + 239, + 255, + 91, + 47, + 233, + 212, + 151, + 223, + 184, + 249, + 129, + 187, + 186, + 38, + 214, + 229, + 210, + 127, + 254, + 161, + 239, + 252, + 153, + 125, + 7, + 94, + 127, + 225, + 214, + 174, + 93, + 92, + 190, + 218, + 1, + 57, + 87, + 121, + 4, + 118, + 44, + 74, + 58, + 54, + 219, + 137, + 108, + 39, + 50, + 53, + 201, + 102, + 201, + 14, + 62, + 188, + 229, + 148, + 200, + 102, + 155, + 189, + 67, + 146, + 40, + 103, + 204, + 68, + 161, + 51, + 37, + 26, + 112, + 154, + 58, + 204, + 255, + 192, + 68, + 50, + 139, + 204, + 162, + 82, + 29, + 153, + 69, + 22, + 146, + 43, + 136, + 76, + 242, + 28, + 89, + 22, + 112, + 51, + 110, + 113, + 237, + 132, + 253, + 123, + 79, + 214, + 15, + 44, + 142, + 115, + 131, + 14, + 117, + 92, + 151, + 38, + 92, + 98, + 170, + 13, + 45, + 39, + 139, + 133, + 13, + 160, + 66, + 82, + 181, + 232, + 112, + 183, + 187, + 186, + 93, + 90, + 119, + 83, + 223, + 222, + 198, + 225, + 206, + 13, + 210, + 85, + 223, + 222, + 32, + 255, + 244, + 196, + 77, + 191, + 238, + 115, + 247, + 29, + 76, + 239, + 120, + 130, + 124, + 65, + 94, + 184, + 155, + 107, + 191, + 13, + 0, + 185, + 78, + 142, + 9, + 59, + 181, + 38, + 105, + 200, + 10, + 84, + 205, + 76, + 213, + 90, + 89, + 170, + 37, + 170, + 108, + 161, + 181, + 67, + 80, + 7, + 202, + 111, + 252, + 221, + 111, + 202, + 90, + 53, + 139, + 121, + 189, + 123, + 245, + 140, + 233, + 148, + 177, + 158, + 184, + 241, + 52, + 172, + 210, + 187, + 97, + 203, + 150, + 45, + 82, + 203, + 150, + 45, + 135, + 30, + 217, + 178, + 5, + 148, + 255, + 79, + 4, + 217, + 166, + 188, + 129, + 16, + 10, + 113, + 77, + 114, + 200, + 77, + 129, + 27, + 243, + 233, + 165, + 129, + 75, + 243, + 233, + 233, + 129, + 185, + 249, + 244, + 108, + 91, + 187, + 131, + 206, + 176, + 77, + 115, + 208, + 225, + 142, + 122, + 7, + 205, + 207, + 51, + 105, + 50, + 244, + 18, + 151, + 11, + 246, + 129, + 57, + 36, + 4, + 110, + 226, + 70, + 35, + 133, + 145, + 218, + 176, + 37, + 92, + 91, + 88, + 104, + 212, + 70, + 34, + 33, + 156, + 22, + 58, + 215, + 114, + 154, + 239, + 172, + 34, + 253, + 52, + 195, + 69, + 92, + 103, + 69, + 79, + 153, + 145, + 177, + 228, + 244, + 3, + 92, + 52, + 106, + 185, + 185, + 213, + 43, + 204, + 173, + 3, + 181, + 66, + 42, + 246, + 184, + 124, + 156, + 49, + 173, + 173, + 173, + 173, + 104, + 109, + 37, + 177, + 97, + 85, + 213, + 195, + 171, + 143, + 163, + 71, + 47, + 33, + 50, + 55, + 197, + 28, + 84, + 227, + 29, + 32, + 111, + 147, + 80, + 238, + 208, + 162, + 167, + 107, + 30, + 186, + 160, + 227, + 46, + 255, + 134, + 188, + 239, + 95, + 126, + 139, + 96, + 198, + 213, + 205, + 195, + 3, + 52, + 189, + 133, + 156, + 89, + 228, + 62, + 107, + 194, + 136, + 145, + 241, + 135, + 79, + 31, + 113, + 230, + 189, + 43, + 239, + 204, + 221, + 242, + 238, + 23, + 191, + 111, + 123, + 96, + 233, + 201, + 39, + 182, + 157, + 211, + 247, + 27, + 222, + 99, + 214, + 11, + 40, + 45, + 74, + 15, + 52, + 56, + 104, + 1, + 159, + 222, + 63, + 244, + 47, + 161, + 135, + 4, + 98, + 230, + 6, + 76, + 86, + 167, + 100, + 16, + 153, + 207, + 19, + 223, + 145, + 53, + 67, + 149, + 51, + 43, + 71, + 182, + 208, + 79, + 73, + 171, + 88, + 67, + 84, + 14, + 101, + 110, + 107, + 136, + 56, + 21, + 42, + 136, + 240, + 248, + 104, + 177, + 14, + 89, + 196, + 156, + 203, + 229, + 144, + 223, + 245, + 31, + 211, + 100, + 21, + 171, + 151, + 197, + 34, + 232, + 8, + 104, + 118, + 8, + 250, + 2, + 215, + 4, + 78, + 28, + 78, + 93, + 104, + 246, + 111, + 186, + 179, + 8, + 183, + 174, + 84, + 142, + 236, + 79, + 182, + 216, + 108, + 170, + 88, + 241, + 84, + 177, + 6, + 170, + 77, + 67, + 244, + 114, + 125, + 158, + 105, + 190, + 185, + 77, + 191, + 94, + 90, + 169, + 191, + 168, + 60, + 175, + 110, + 210, + 247, + 233, + 86, + 147, + 210, + 66, + 166, + 211, + 73, + 250, + 124, + 107, + 74, + 255, + 214, + 246, + 173, + 253, + 91, + 135, + 89, + 182, + 201, + 118, + 217, + 33, + 89, + 45, + 102, + 69, + 150, + 109, + 118, + 135, + 73, + 213, + 52, + 155, + 89, + 145, + 77, + 170, + 77, + 35, + 0, + 239, + 177, + 211, + 102, + 163, + 77, + 48, + 52, + 91, + 142, + 166, + 217, + 168, + 36, + 241, + 52, + 47, + 79, + 147, + 12, + 217, + 150, + 35, + 203, + 54, + 115, + 72, + 81, + 76, + 33, + 85, + 82, + 211, + 116, + 81, + 210, + 12, + 147, + 237, + 243, + 36, + 37, + 148, + 246, + 16, + 43, + 8, + 177, + 38, + 221, + 54, + 3, + 115, + 53, + 105, + 202, + 36, + 121, + 171, + 252, + 129, + 44, + 173, + 148, + 137, + 156, + 38, + 36, + 105, + 157, + 100, + 219, + 164, + 125, + 96, + 147, + 86, + 218, + 136, + 141, + 199, + 117, + 167, + 182, + 85, + 163, + 87, + 104, + 157, + 26, + 213, + 126, + 229, + 220, + 254, + 86, + 70, + 126, + 243, + 246, + 183, + 46, + 222, + 223, + 186, + 216, + 191, + 87, + 223, + 27, + 200, + 211, + 247, + 238, + 133, + 191, + 174, + 54, + 176, + 183, + 110, + 143, + 16, + 159, + 189, + 220, + 86, + 141, + 95, + 166, + 111, + 94, + 54, + 216, + 47, + 194, + 204, + 254, + 35, + 145, + 88, + 166, + 111, + 222, + 236, + 216, + 188, + 121, + 153, + 146, + 9, + 135, + 150, + 147, + 198, + 148, + 117, + 106, + 99, + 42, + 52, + 121, + 70, + 115, + 183, + 236, + 148, + 76, + 90, + 15, + 219, + 199, + 183, + 68, + 92, + 227, + 180, + 144, + 37, + 92, + 231, + 252, + 251, + 39, + 74, + 42, + 73, + 84, + 138, + 72, + 158, + 136, + 20, + 43, + 81, + 53, + 137, + 86, + 190, + 78, + 155, + 223, + 127, + 188, + 247, + 183, + 247, + 191, + 67, + 254, + 121, + 231, + 184, + 194, + 96, + 165, + 210, + 243, + 211, + 56, + 242, + 76, + 95, + 61, + 157, + 65, + 86, + 109, + 184, + 224, + 230, + 27, + 249, + 94, + 114, + 21, + 32, + 127, + 174, + 244, + 192, + 133, + 2, + 148, + 146, + 107, + 55, + 64, + 102, + 251, + 147, + 3, + 173, + 86, + 181, + 73, + 150, + 199, + 69, + 167, + 71, + 207, + 136, + 118, + 152, + 175, + 49, + 171, + 103, + 6, + 206, + 83, + 22, + 153, + 59, + 172, + 87, + 43, + 87, + 91, + 213, + 146, + 92, + 179, + 228, + 47, + 41, + 13, + 229, + 22, + 136, + 197, + 170, + 127, + 133, + 19, + 90, + 90, + 44, + 117, + 249, + 98, + 105, + 50, + 123, + 220, + 161, + 210, + 210, + 129, + 3, + 17, + 44, + 8, + 81, + 66, + 195, + 161, + 144, + 11, + 38, + 127, + 154, + 245, + 137, + 55, + 252, + 253, + 122, + 221, + 159, + 102, + 7, + 146, + 118, + 155, + 125, + 76, + 147, + 63, + 166, + 218, + 184, + 89, + 161, + 166, + 217, + 39, + 201, + 98, + 190, + 70, + 169, + 110, + 190, + 64, + 169, + 42, + 31, + 71, + 213, + 196, + 91, + 197, + 237, + 38, + 181, + 73, + 205, + 225, + 82, + 165, + 78, + 43, + 238, + 167, + 86, + 220, + 79, + 173, + 152, + 83, + 243, + 112, + 106, + 197, + 49, + 91, + 144, + 83, + 179, + 89, + 56, + 13, + 27, + 151, + 192, + 18, + 78, + 193, + 22, + 24, + 84, + 16, + 162, + 252, + 165, + 144, + 176, + 175, + 66, + 22, + 94, + 58, + 100, + 16, + 113, + 9, + 153, + 191, + 129, + 52, + 59, + 32, + 150, + 72, + 129, + 240, + 183, + 145, + 102, + 63, + 117, + 11, + 1, + 203, + 32, + 42, + 71, + 246, + 37, + 45, + 188, + 21, + 104, + 141, + 143, + 156, + 201, + 117, + 70, + 102, + 24, + 90, + 107, + 123, + 185, + 233, + 114, + 178, + 136, + 79, + 16, + 171, + 74, + 118, + 128, + 142, + 152, + 170, + 181, + 189, + 181, + 238, + 196, + 144, + 90, + 189, + 183, + 150, + 155, + 232, + 113, + 23, + 223, + 140, + 18, + 119, + 70, + 175, + 160, + 53, + 94, + 233, + 138, + 84, + 228, + 114, + 59, + 84, + 227, + 208, + 65, + 163, + 36, + 82, + 145, + 177, + 82, + 99, + 209, + 136, + 43, + 82, + 145, + 81, + 55, + 177, + 104, + 100, + 21, + 141, + 173, + 126, + 185, + 227, + 140, + 121, + 215, + 174, + 56, + 165, + 243, + 47, + 55, + 245, + 253, + 138, + 140, + 186, + 178, + 230, + 196, + 198, + 113, + 87, + 221, + 211, + 183, + 131, + 44, + 56, + 45, + 54, + 118, + 198, + 136, + 105, + 191, + 190, + 169, + 239, + 9, + 165, + 167, + 101, + 195, + 220, + 211, + 126, + 95, + 89, + 242, + 76, + 231, + 188, + 53, + 109, + 67, + 165, + 41, + 174, + 220, + 51, + 38, + 156, + 176, + 112, + 224, + 193, + 251, + 52, + 91, + 205, + 217, + 227, + 166, + 92, + 52, + 148, + 175, + 49, + 103, + 176, + 79, + 149, + 243, + 149, + 55, + 80, + 128, + 175, + 215, + 205, + 166, + 103, + 21, + 80, + 146, + 25, + 83, + 209, + 215, + 207, + 146, + 179, + 56, + 102, + 160, + 194, + 62, + 27, + 139, + 176, + 180, + 160, + 19, + 215, + 20, + 172, + 196, + 93, + 202, + 227, + 210, + 195, + 246, + 13, + 82, + 183, + 253, + 5, + 251, + 107, + 216, + 83, + 240, + 109, + 129, + 203, + 225, + 46, + 112, + 21, + 20, + 72, + 165, + 234, + 0, + 87, + 105, + 208, + 8, + 31, + 111, + 159, + 158, + 115, + 138, + 119, + 122, + 222, + 124, + 229, + 236, + 130, + 75, + 220, + 55, + 186, + 239, + 146, + 238, + 116, + 220, + 21, + 92, + 77, + 30, + 162, + 171, + 93, + 111, + 58, + 60, + 200, + 65, + 64, + 207, + 209, + 3, + 50, + 223, + 12, + 118, + 13, + 72, + 16, + 110, + 45, + 54, + 12, + 72, + 232, + 78, + 16, + 57, + 223, + 19, + 178, + 73, + 249, + 33, + 217, + 172, + 199, + 156, + 39, + 34, + 198, + 125, + 16, + 129, + 176, + 79, + 12, + 157, + 79, + 12, + 157, + 79, + 12, + 157, + 47, + 102, + 152, + 136, + 201, + 198, + 81, + 147, + 141, + 183, + 210, + 148, + 23, + 154, + 61, + 51, + 227, + 1, + 136, + 183, + 138, + 33, + 56, + 89, + 63, + 208, + 58, + 97, + 239, + 126, + 190, + 45, + 173, + 219, + 155, + 81, + 224, + 241, + 120, + 107, + 235, + 98, + 180, + 198, + 227, + 100, + 9, + 241, + 169, + 114, + 180, + 176, + 136, + 14, + 171, + 114, + 23, + 85, + 86, + 200, + 62, + 45, + 198, + 117, + 57, + 245, + 230, + 184, + 249, + 106, + 46, + 119, + 63, + 59, + 170, + 239, + 185, + 143, + 247, + 246, + 189, + 245, + 219, + 39, + 201, + 216, + 103, + 223, + 35, + 131, + 70, + 110, + 172, + 124, + 246, + 87, + 143, + 126, + 52, + 115, + 193, + 39, + 215, + 61, + 184, + 155, + 210, + 161, + 95, + 31, + 252, + 11, + 57, + 247, + 239, + 31, + 147, + 166, + 53, + 187, + 94, + 46, + 187, + 239, + 182, + 7, + 250, + 190, + 190, + 245, + 233, + 190, + 207, + 151, + 63, + 195, + 87, + 195, + 123, + 0, + 101, + 134, + 210, + 3, + 39, + 10, + 72, + 94, + 210, + 109, + 132, + 201, + 88, + 83, + 102, + 62, + 184, + 244, + 144, + 19, + 38, + 95, + 191, + 4, + 251, + 250, + 37, + 216, + 199, + 37, + 184, + 48, + 219, + 49, + 51, + 9, + 39, + 185, + 0, + 154, + 133, + 96, + 154, + 45, + 92, + 42, + 205, + 126, + 145, + 34, + 4, + 90, + 168, + 212, + 64, + 184, + 64, + 23, + 252, + 208, + 45, + 124, + 226, + 233, + 194, + 242, + 212, + 255, + 99, + 129, + 254, + 190, + 95, + 160, + 127, + 232, + 23, + 232, + 208, + 47, + 8, + 116, + 54, + 218, + 122, + 140, + 20, + 15, + 45, + 31, + 123, + 81, + 114, + 184, + 148, + 207, + 127, + 191, + 200, + 127, + 31, + 39, + 171, + 121, + 254, + 128, + 159, + 170, + 252, + 7, + 123, + 118, + 139, + 164, + 122, + 115, + 115, + 114, + 61, + 185, + 146, + 154, + 47, + 249, + 34, + 196, + 237, + 240, + 69, + 136, + 223, + 20, + 140, + 144, + 92, + 139, + 43, + 130, + 120, + 156, + 196, + 227, + 252, + 135, + 21, + 87, + 146, + 86, + 46, + 241, + 190, + 92, + 95, + 174, + 219, + 155, + 67, + 29, + 52, + 90, + 28, + 169, + 200, + 110, + 203, + 74, + 98, + 209, + 200, + 61, + 228, + 199, + 199, + 103, + 92, + 222, + 178, + 180, + 227, + 228, + 139, + 111, + 221, + 114, + 109, + 223, + 26, + 146, + 184, + 245, + 225, + 161, + 13, + 19, + 126, + 115, + 206, + 201, + 79, + 244, + 189, + 162, + 244, + 120, + 11, + 78, + 58, + 189, + 111, + 235, + 230, + 71, + 250, + 250, + 30, + 109, + 175, + 120, + 98, + 248, + 208, + 134, + 207, + 127, + 255, + 201, + 247, + 165, + 252, + 151, + 3, + 15, + 0, + 50, + 255, + 207, + 49, + 86, + 116, + 39, + 189, + 170, + 18, + 50, + 241, + 223, + 161, + 73, + 50, + 103, + 190, + 197, + 28, + 178, + 194, + 164, + 113, + 105, + 27, + 162, + 187, + 171, + 180, + 105, + 210, + 137, + 134, + 197, + 176, + 83, + 75, + 192, + 46, + 155, + 133, + 132, + 101, + 182, + 96, + 102, + 33, + 97, + 230, + 255, + 133, + 114, + 48, + 155, + 255, + 141, + 150, + 176, + 141, + 60, + 53, + 43, + 147, + 89, + 182, + 78, + 232, + 87, + 20, + 173, + 19, + 246, + 239, + 249, + 153, + 102, + 24, + 90, + 94, + 233, + 138, + 120, + 35, + 217, + 239, + 3, + 114, + 209, + 161, + 123, + 164, + 248, + 161, + 55, + 165, + 107, + 148, + 158, + 39, + 250, + 234, + 254, + 208, + 103, + 127, + 2, + 4, + 171, + 1, + 249, + 90, + 165, + 7, + 102, + 60, + 144, + 28, + 37, + 122, + 184, + 66, + 35, + 135, + 59, + 9, + 147, + 118, + 183, + 65, + 13, + 43, + 165, + 1, + 235, + 255, + 163, + 94, + 241, + 61, + 11, + 21, + 203, + 191, + 232, + 74, + 223, + 207, + 250, + 100, + 225, + 130, + 242, + 111, + 250, + 180, + 39, + 99, + 75, + 114, + 67, + 250, + 95, + 251, + 179, + 90, + 122, + 255, + 208, + 199, + 52, + 213, + 59, + 137, + 247, + 101, + 196, + 19, + 189, + 103, + 112, + 253, + 179, + 128, + 125, + 170, + 108, + 80, + 222, + 64, + 49, + 57, + 57, + 25, + 200, + 207, + 201, + 247, + 210, + 182, + 18, + 114, + 154, + 201, + 67, + 220, + 82, + 81, + 17, + 34, + 110, + 31, + 45, + 70, + 136, + 43, + 165, + 77, + 124, + 93, + 87, + 155, + 8, + 81, + 125, + 33, + 135, + 20, + 9, + 169, + 102, + 66, + 98, + 37, + 197, + 69, + 253, + 51, + 169, + 168, + 127, + 38, + 21, + 241, + 153, + 164, + 243, + 174, + 22, + 25, + 146, + 100, + 80, + 163, + 164, + 77, + 236, + 63, + 247, + 136, + 158, + 10, + 43, + 37, + 187, + 17, + 125, + 87, + 140, + 159, + 176, + 82, + 42, + 57, + 109, + 186, + 164, + 179, + 132, + 148, + 20, + 8, + 150, + 21, + 8, + 150, + 21, + 8, + 150, + 21, + 196, + 12, + 11, + 177, + 8, + 85, + 99, + 209, + 121, + 65, + 75, + 94, + 108, + 246, + 169, + 199, + 168, + 154, + 9, + 122, + 171, + 152, + 41, + 220, + 63, + 42, + 152, + 193, + 253, + 48, + 253, + 91, + 171, + 120, + 109, + 47, + 143, + 115, + 117, + 239, + 114, + 39, + 184, + 133, + 61, + 246, + 162, + 100, + 189, + 28, + 205, + 15, + 6, + 130, + 121, + 65, + 73, + 181, + 197, + 244, + 98, + 111, + 44, + 28, + 51, + 21, + 203, + 177, + 104, + 177, + 223, + 94, + 16, + 65, + 174, + 211, + 19, + 33, + 46, + 119, + 142, + 199, + 208, + 10, + 34, + 40, + 84, + 138, + 35, + 36, + 104, + 245, + 69, + 72, + 142, + 203, + 23, + 33, + 33, + 115, + 36, + 130, + 34, + 41, + 18, + 129, + 184, + 14, + 72, + 226, + 220, + 71, + 38, + 54, + 190, + 226, + 225, + 83, + 11, + 173, + 100, + 88, + 177, + 235, + 24, + 5, + 151, + 235, + 211, + 6, + 211, + 104, + 33, + 119, + 115, + 120, + 115, + 220, + 114, + 101, + 197, + 240, + 106, + 151, + 116, + 18, + 93, + 176, + 162, + 239, + 181, + 251, + 222, + 238, + 187, + 183, + 123, + 45, + 153, + 180, + 227, + 94, + 66, + 110, + 139, + 61, + 25, + 57, + 125, + 253, + 194, + 107, + 159, + 189, + 32, + 82, + 179, + 140, + 208, + 91, + 47, + 223, + 119, + 28, + 173, + 251, + 3, + 233, + 221, + 181, + 164, + 99, + 3, + 57, + 237, + 237, + 237, + 164, + 163, + 123, + 94, + 250, + 246, + 242, + 69, + 157, + 19, + 38, + 95, + 51, + 241, + 250, + 123, + 55, + 247, + 253, + 208, + 217, + 94, + 77, + 92, + 124, + 44, + 31, + 2, + 148, + 66, + 62, + 243, + 136, + 141, + 111, + 207, + 55, + 37, + 115, + 61, + 222, + 42, + 89, + 10, + 153, + 45, + 247, + 89, + 94, + 179, + 80, + 139, + 66, + 169, + 149, + 255, + 98, + 183, + 127, + 200, + 76, + 253, + 67, + 102, + 226, + 67, + 102, + 22, + 170, + 220, + 208, + 52, + 149, + 187, + 21, + 132, + 29, + 144, + 102, + 223, + 36, + 173, + 194, + 22, + 208, + 133, + 45, + 192, + 189, + 98, + 165, + 194, + 30, + 32, + 194, + 30, + 104, + 237, + 180, + 19, + 59, + 181, + 138, + 1, + 179, + 138, + 1, + 179, + 138, + 1, + 179, + 102, + 100, + 156, + 11, + 141, + 197, + 227, + 173, + 250, + 15, + 132, + 93, + 88, + 25, + 199, + 106, + 197, + 220, + 236, + 4, + 54, + 236, + 196, + 176, + 79, + 178, + 183, + 217, + 23, + 217, + 229, + 145, + 45, + 254, + 120, + 235, + 226, + 126, + 29, + 121, + 68, + 75, + 102, + 6, + 63, + 206, + 221, + 206, + 241, + 56, + 247, + 58, + 215, + 213, + 38, + 90, + 135, + 8, + 85, + 73, + 226, + 149, + 174, + 74, + 87, + 196, + 85, + 233, + 138, + 186, + 34, + 174, + 135, + 158, + 165, + 63, + 61, + 251, + 108, + 175, + 170, + 244, + 244, + 254, + 158, + 206, + 248, + 105, + 28, + 93, + 219, + 59, + 1, + 4, + 27, + 1, + 114, + 165, + 210, + 3, + 137, + 20, + 38, + 243, + 168, + 232, + 143, + 36, + 32, + 213, + 132, + 143, + 64, + 64, + 146, + 102, + 63, + 10, + 118, + 33, + 205, + 126, + 76, + 186, + 132, + 253, + 174, + 240, + 238, + 74, + 2, + 146, + 52, + 59, + 216, + 205, + 17, + 164, + 217, + 193, + 164, + 224, + 3, + 87, + 6, + 84, + 73, + 179, + 77, + 107, + 107, + 70, + 113, + 239, + 250, + 166, + 181, + 149, + 85, + 153, + 176, + 172, + 60, + 19, + 14, + 24, + 152, + 9, + 163, + 194, + 251, + 190, + 105, + 109, + 65, + 40, + 19, + 250, + 3, + 34, + 76, + 150, + 218, + 245, + 42, + 67, + 89, + 169, + 60, + 169, + 72, + 146, + 65, + 128, + 21, + 184, + 15, + 41, + 200, + 67, + 144, + 196, + 36, + 124, + 128, + 125, + 80, + 220, + 6, + 86, + 96, + 37, + 36, + 81, + 92, + 12, + 22, + 252, + 89, + 118, + 127, + 217, + 207, + 110, + 238, + 37, + 202, + 240, + 61, + 41, + 6, + 18, + 134, + 96, + 247, + 3, + 242, + 246, + 150, + 163, + 86, + 156, + 177, + 51, + 155, + 187, + 58, + 65, + 72, + 107, + 203, + 226, + 37, + 181, + 189, + 135, + 173, + 94, + 238, + 10, + 18, + 43, + 119, + 255, + 195, + 249, + 185, + 241, + 89, + 110, + 214, + 130, + 160, + 154, + 125, + 42, + 181, + 11, + 75, + 246, + 227, + 164, + 62, + 151, + 206, + 83, + 151, + 210, + 243, + 212, + 235, + 237, + 215, + 187, + 84, + 179, + 208, + 26, + 221, + 86, + 174, + 52, + 210, + 36, + 208, + 45, + 135, + 156, + 102, + 115, + 191, + 232, + 153, + 251, + 69, + 207, + 124, + 88, + 244, + 204, + 49, + 139, + 229, + 151, + 69, + 115, + 189, + 144, + 204, + 152, + 149, + 187, + 78, + 120, + 215, + 4, + 194, + 123, + 100, + 205, + 20, + 23, + 72, + 198, + 104, + 226, + 41, + 201, + 92, + 46, + 67, + 214, + 86, + 195, + 67, + 12, + 79, + 210, + 51, + 201, + 211, + 230, + 145, + 61, + 36, + 198, + 237, + 169, + 254, + 5, + 227, + 139, + 126, + 49, + 123, + 47, + 171, + 83, + 27, + 221, + 235, + 251, + 89, + 177, + 87, + 111, + 93, + 156, + 97, + 9, + 87, + 44, + 181, + 122, + 102, + 233, + 221, + 187, + 55, + 94, + 55, + 180, + 28, + 173, + 89, + 103, + 195, + 240, + 97, + 174, + 74, + 87, + 142, + 202, + 253, + 11, + 35, + 159, + 212, + 22, + 205, + 62, + 225, + 172, + 1, + 207, + 182, + 252, + 229, + 170, + 191, + 108, + 33, + 247, + 249, + 87, + 95, + 58, + 182, + 227, + 114, + 233, + 155, + 67, + 121, + 233, + 151, + 206, + 218, + 201, + 231, + 229, + 42, + 64, + 153, + 194, + 231, + 37, + 245, + 36, + 67, + 82, + 97, + 117, + 194, + 100, + 30, + 81, + 98, + 25, + 166, + 14, + 183, + 28, + 111, + 57, + 69, + 186, + 78, + 122, + 75, + 210, + 206, + 183, + 188, + 35, + 189, + 99, + 145, + 84, + 174, + 11, + 133, + 161, + 49, + 64, + 185, + 73, + 94, + 174, + 60, + 38, + 127, + 97, + 82, + 44, + 50, + 25, + 38, + 111, + 151, + 249, + 185, + 203, + 174, + 164, + 217, + 29, + 169, + 146, + 12, + 14, + 210, + 108, + 231, + 90, + 91, + 194, + 205, + 83, + 215, + 186, + 35, + 85, + 166, + 108, + 40, + 243, + 176, + 64, + 132, + 155, + 214, + 186, + 115, + 121, + 250, + 206, + 228, + 168, + 188, + 132, + 201, + 92, + 92, + 60, + 202, + 100, + 206, + 203, + 27, + 165, + 170, + 154, + 217, + 98, + 54, + 89, + 20, + 73, + 150, + 13, + 197, + 146, + 163, + 40, + 22, + 179, + 201, + 100, + 104, + 106, + 142, + 166, + 169, + 22, + 11, + 20, + 42, + 19, + 170, + 89, + 77, + 48, + 89, + 36, + 106, + 37, + 144, + 211, + 116, + 68, + 210, + 89, + 174, + 144, + 251, + 148, + 148, + 178, + 73, + 217, + 165, + 200, + 202, + 137, + 38, + 158, + 102, + 45, + 215, + 136, + 161, + 117, + 106, + 41, + 77, + 210, + 210, + 244, + 186, + 100, + 232, + 151, + 52, + 193, + 255, + 214, + 190, + 255, + 230, + 200, + 202, + 189, + 154, + 111, + 243, + 178, + 194, + 201, + 71, + 161, + 183, + 117, + 241, + 94, + 238, + 182, + 224, + 218, + 182, + 150, + 207, + 242, + 218, + 90, + 254, + 117, + 39, + 134, + 240, + 189, + 30, + 119, + 60, + 47, + 83, + 6, + 251, + 133, + 159, + 82, + 51, + 233, + 181, + 166, + 90, + 210, + 152, + 242, + 79, + 109, + 76, + 229, + 79, + 158, + 209, + 204, + 183, + 88, + 111, + 215, + 180, + 100, + 206, + 25, + 120, + 100, + 223, + 90, + 155, + 139, + 51, + 113, + 95, + 210, + 103, + 115, + 85, + 169, + 186, + 195, + 85, + 101, + 210, + 29, + 122, + 149, + 153, + 99, + 22, + 221, + 174, + 87, + 101, + 239, + 122, + 183, + 28, + 17, + 126, + 238, + 211, + 116, + 153, + 11, + 243, + 18, + 166, + 65, + 121, + 9, + 153, + 127, + 11, + 243, + 19, + 74, + 154, + 237, + 92, + 159, + 155, + 144, + 11, + 115, + 19, + 42, + 231, + 181, + 213, + 157, + 48, + 21, + 230, + 36, + 228, + 100, + 78, + 130, + 243, + 126, + 93, + 113, + 66, + 78, + 122, + 51, + 94, + 207, + 44, + 65, + 78, + 152, + 44, + 94, + 210, + 26, + 7, + 223, + 91, + 242, + 233, + 68, + 34, + 132, + 68, + 136, + 230, + 90, + 245, + 44, + 125, + 155, + 104, + 189, + 119, + 210, + 171, + 24, + 122, + 15, + 236, + 83, + 122, + 122, + 7, + 210, + 183, + 122, + 255, + 120, + 232, + 14, + 250, + 201, + 23, + 125, + 226, + 39, + 47, + 124, + 231, + 88, + 42, + 78, + 196, + 174, + 74, + 218, + 8, + 149, + 165, + 144, + 2, + 147, + 193, + 183, + 205, + 244, + 145, + 100, + 68, + 163, + 25, + 181, + 37, + 137, + 33, + 144, + 196, + 16, + 72, + 255, + 177, + 25, + 117, + 224, + 103, + 38, + 169, + 250, + 75, + 38, + 233, + 39, + 173, + 25, + 171, + 137, + 219, + 22, + 220, + 186, + 88, + 245, + 44, + 253, + 187, + 210, + 243, + 211, + 183, + 79, + 240, + 246, + 221, + 1, + 168, + 78, + 165, + 7, + 186, + 228, + 75, + 218, + 76, + 165, + 86, + 251, + 152, + 38, + 42, + 96, + 191, + 171, + 212, + 196, + 14, + 100, + 116, + 190, + 201, + 97, + 119, + 137, + 213, + 255, + 171, + 110, + 142, + 40, + 252, + 160, + 103, + 0, + 199, + 108, + 110, + 158, + 173, + 56, + 109, + 146, + 25, + 132, + 154, + 204, + 86, + 7, + 76, + 102, + 106, + 177, + 170, + 98, + 238, + 235, + 217, + 137, + 255, + 211, + 122, + 49, + 241, + 117, + 112, + 111, + 120, + 182, + 111, + 63, + 244, + 247, + 237, + 80, + 166, + 111, + 124, + 155, + 183, + 69, + 0, + 212, + 213, + 109, + 218, + 164, + 191, + 246, + 218, + 38, + 126, + 76, + 17, + 143, + 103, + 134, + 20, + 249, + 217, + 99, + 167, + 176, + 38, + 20, + 162, + 42, + 160, + 36, + 160, + 44, + 160, + 34, + 32, + 87, + 70, + 201, + 40, + 199, + 184, + 191, + 70, + 109, + 146, + 84, + 97, + 173, + 56, + 142, + 120, + 86, + 248, + 89, + 130, + 42, + 124, + 165, + 194, + 241, + 194, + 207, + 183, + 146, + 97, + 142, + 197, + 20, + 98, + 51, + 44, + 238, + 42, + 167, + 0, + 138, + 77, + 2, + 113, + 88, + 97, + 50, + 17, + 42, + 156, + 247, + 156, + 154, + 64, + 4, + 145, + 167, + 233, + 116, + 184, + 161, + 211, + 233, + 73, + 123, + 214, + 250, + 19, + 21, + 137, + 142, + 137, + 241, + 32, + 188, + 47, + 251, + 135, + 236, + 23, + 123, + 129, + 186, + 218, + 218, + 76, + 103, + 90, + 143, + 210, + 206, + 25, + 153, + 205, + 79, + 94, + 1, + 234, + 52, + 229, + 208, + 124, + 147, + 124, + 190, + 237, + 58, + 219, + 223, + 108, + 146, + 217, + 118, + 130, + 237, + 4, + 167, + 52, + 80, + 46, + 182, + 15, + 114, + 52, + 75, + 167, + 202, + 231, + 219, + 47, + 116, + 44, + 179, + 155, + 172, + 84, + 49, + 37, + 236, + 195, + 29, + 19, + 105, + 163, + 84, + 175, + 37, + 77, + 19, + 236, + 99, + 28, + 150, + 59, + 232, + 157, + 210, + 42, + 109, + 149, + 105, + 181, + 244, + 136, + 166, + 186, + 169, + 211, + 225, + 40, + 87, + 104, + 142, + 162, + 80, + 147, + 205, + 110, + 47, + 87, + 76, + 57, + 138, + 98, + 178, + 77, + 113, + 78, + 33, + 73, + 66, + 169, + 201, + 196, + 255, + 105, + 8, + 255, + 199, + 24, + 58, + 31, + 167, + 54, + 119, + 167, + 155, + 186, + 123, + 232, + 106, + 216, + 201, + 208, + 46, + 197, + 48, + 165, + 201, + 208, + 100, + 174, + 205, + 108, + 17, + 174, + 173, + 140, + 35, + 203, + 98, + 36, + 109, + 87, + 88, + 137, + 181, + 135, + 78, + 135, + 131, + 88, + 187, + 20, + 131, + 166, + 137, + 181, + 203, + 201, + 77, + 134, + 3, + 253, + 75, + 172, + 16, + 147, + 49, + 77, + 48, + 156, + 139, + 116, + 162, + 167, + 233, + 244, + 167, + 12, + 165, + 77, + 233, + 84, + 36, + 37, + 77, + 87, + 175, + 117, + 113, + 83, + 32, + 143, + 159, + 205, + 182, + 214, + 250, + 123, + 133, + 158, + 230, + 62, + 160, + 253, + 173, + 181, + 129, + 163, + 162, + 123, + 90, + 225, + 175, + 171, + 227, + 167, + 207, + 71, + 62, + 1, + 125, + 175, + 240, + 13, + 45, + 187, + 76, + 184, + 134, + 150, + 93, + 182, + 121, + 104, + 57, + 142, + 184, + 128, + 254, + 4, + 27, + 59, + 8, + 19, + 219, + 14, + 202, + 182, + 11, + 15, + 80, + 99, + 202, + 54, + 181, + 49, + 53, + 64, + 40, + 17, + 59, + 251, + 97, + 141, + 195, + 194, + 83, + 179, + 103, + 32, + 219, + 214, + 71, + 18, + 142, + 65, + 17, + 113, + 14, + 178, + 190, + 58, + 225, + 168, + 168, + 22, + 232, + 186, + 178, + 132, + 99, + 80, + 246, + 172, + 35, + 222, + 178, + 100, + 113, + 43, + 22, + 183, + 146, + 214, + 22, + 62, + 245, + 43, + 93, + 17, + 146, + 235, + 27, + 94, + 77, + 34, + 174, + 168, + 139, + 68, + 137, + 235, + 14, + 82, + 68, + 78, + 45, + 207, + 205, + 27, + 70, + 102, + 17, + 229, + 233, + 190, + 233, + 79, + 246, + 53, + 43, + 61, + 7, + 191, + 185, + 117, + 252, + 164, + 223, + 74, + 135, + 126, + 26, + 39, + 191, + 124, + 112, + 152, + 188, + 235, + 160, + 193, + 103, + 215, + 221, + 128, + 18, + 230, + 59, + 15, + 242, + 204, + 250, + 204, + 161, + 134, + 41, + 205, + 62, + 91, + 39, + 78, + 62, + 172, + 253, + 230, + 150, + 201, + 111, + 203, + 165, + 77, + 18, + 119, + 31, + 20, + 112, + 204, + 68, + 37, + 201, + 208, + 76, + 57, + 154, + 102, + 162, + 154, + 36, + 153, + 204, + 50, + 165, + 102, + 205, + 36, + 75, + 194, + 96, + 225, + 218, + 162, + 127, + 177, + 229, + 41, + 73, + 179, + 72, + 50, + 84, + 85, + 233, + 183, + 32, + 148, + 195, + 118, + 160, + 146, + 153, + 154, + 105, + 246, + 125, + 50, + 38, + 230, + 71, + 171, + 97, + 37, + 134, + 117, + 146, + 181, + 205, + 186, + 200, + 218, + 105, + 85, + 172, + 166, + 195, + 91, + 29, + 190, + 200, + 27, + 25, + 27, + 208, + 238, + 241, + 86, + 253, + 103, + 123, + 30, + 249, + 231, + 102, + 224, + 225, + 61, + 207, + 81, + 166, + 74, + 188, + 53, + 206, + 117, + 81, + 173, + 222, + 186, + 120, + 255, + 191, + 218, + 125, + 110, + 126, + 96, + 149, + 72, + 44, + 147, + 197, + 8, + 247, + 235, + 123, + 137, + 237, + 122, + 202, + 230, + 170, + 50, + 25, + 54, + 23, + 215, + 235, + 45, + 67, + 203, + 185, + 221, + 62, + 118, + 102, + 115, + 183, + 41, + 57, + 46, + 33, + 165, + 217, + 166, + 245, + 227, + 18, + 166, + 100, + 69, + 6, + 173, + 72, + 104, + 133, + 121, + 226, + 164, + 124, + 125, + 94, + 66, + 43, + 172, + 200, + 160, + 60, + 53, + 154, + 57, + 63, + 183, + 70, + 19, + 154, + 35, + 39, + 161, + 57, + 60, + 60, + 190, + 127, + 189, + 39, + 161, + 57, + 10, + 50, + 104, + 65, + 66, + 115, + 120, + 57, + 250, + 195, + 154, + 195, + 90, + 159, + 28, + 53, + 57, + 51, + 34, + 80, + 73, + 184, + 65, + 74, + 92, + 119, + 191, + 32, + 209, + 158, + 23, + 14, + 245, + 41, + 61, + 7, + 175, + 148, + 175, + 248, + 105, + 156, + 220, + 121, + 176, + 147, + 255, + 15, + 36, + 246, + 169, + 242, + 190, + 178, + 13, + 14, + 228, + 147, + 220, + 100, + 99, + 192, + 73, + 114, + 244, + 156, + 156, + 124, + 95, + 126, + 190, + 44, + 235, + 114, + 142, + 213, + 103, + 205, + 151, + 31, + 245, + 173, + 119, + 60, + 239, + 144, + 124, + 62, + 127, + 62, + 53, + 10, + 146, + 174, + 137, + 158, + 137, + 190, + 100, + 160, + 89, + 105, + 54, + 159, + 162, + 55, + 185, + 102, + 121, + 102, + 248, + 102, + 249, + 167, + 7, + 78, + 201, + 191, + 209, + 119, + 39, + 213, + 243, + 66, + 146, + 228, + 14, + 89, + 205, + 222, + 126, + 3, + 203, + 219, + 63, + 230, + 94, + 62, + 211, + 196, + 66, + 225, + 141, + 25, + 26, + 17, + 39, + 64, + 135, + 15, + 235, + 117, + 157, + 114, + 36, + 99, + 63, + 106, + 105, + 182, + 79, + 44, + 21, + 26, + 55, + 160, + 248, + 72, + 137, + 194, + 124, + 124, + 52, + 62, + 132, + 117, + 66, + 7, + 6, + 58, + 11, + 72, + 129, + 83, + 172, + 66, + 78, + 33, + 11, + 78, + 65, + 220, + 25, + 227, + 18, + 32, + 142, + 80, + 249, + 233, + 231, + 152, + 38, + 168, + 71, + 105, + 184, + 188, + 224, + 97, + 215, + 209, + 17, + 231, + 81, + 214, + 168, + 239, + 79, + 16, + 187, + 57, + 238, + 171, + 91, + 140, + 214, + 214, + 214, + 197, + 30, + 29, + 145, + 10, + 153, + 187, + 46, + 196, + 38, + 171, + 90, + 71, + 101, + 5, + 92, + 85, + 52, + 22, + 45, + 196, + 108, + 114, + 61, + 25, + 254, + 50, + 25, + 247, + 120, + 119, + 223, + 250, + 141, + 91, + 251, + 122, + 86, + 255, + 141, + 20, + 188, + 181, + 131, + 228, + 95, + 244, + 249, + 173, + 175, + 246, + 189, + 69, + 95, + 34, + 11, + 200, + 239, + 158, + 237, + 123, + 248, + 189, + 15, + 250, + 238, + 91, + 247, + 55, + 50, + 227, + 207, + 125, + 223, + 247, + 109, + 37, + 85, + 36, + 127, + 45, + 177, + 254, + 170, + 239, + 227, + 140, + 255, + 72, + 238, + 85, + 122, + 96, + 135, + 31, + 251, + 146, + 161, + 185, + 174, + 179, + 115, + 104, + 163, + 222, + 152, + 115, + 170, + 126, + 106, + 142, + 108, + 181, + 133, + 156, + 14, + 7, + 124, + 254, + 204, + 110, + 223, + 221, + 207, + 82, + 119, + 63, + 75, + 221, + 105, + 246, + 195, + 122, + 113, + 120, + 24, + 19, + 59, + 43, + 151, + 56, + 50, + 22, + 14, + 81, + 147, + 158, + 93, + 80, + 246, + 39, + 203, + 120, + 207, + 77, + 1, + 35, + 64, + 140, + 0, + 9, + 248, + 237, + 130, + 101, + 118, + 193, + 50, + 187, + 96, + 153, + 253, + 127, + 235, + 41, + 248, + 185, + 247, + 35, + 239, + 232, + 245, + 251, + 136, + 147, + 116, + 113, + 134, + 181, + 89, + 182, + 246, + 187, + 63, + 196, + 110, + 169, + 21, + 25, + 183, + 80, + 136, + 122, + 115, + 104, + 36, + 226, + 114, + 69, + 42, + 14, + 123, + 132, + 232, + 192, + 219, + 38, + 156, + 115, + 91, + 203, + 87, + 125, + 47, + 246, + 93, + 79, + 46, + 121, + 230, + 158, + 214, + 147, + 134, + 94, + 211, + 119, + 131, + 210, + 227, + 112, + 207, + 93, + 191, + 224, + 233, + 190, + 222, + 222, + 63, + 72, + 228, + 166, + 43, + 102, + 94, + 237, + 181, + 115, + 31, + 92, + 51, + 187, + 69, + 249, + 74, + 217, + 198, + 255, + 227, + 36, + 121, + 48, + 249, + 235, + 89, + 177, + 123, + 99, + 52, + 207, + 95, + 237, + 165, + 214, + 160, + 28, + 230, + 155, + 239, + 156, + 112, + 78, + 84, + 45, + 85, + 202, + 124, + 241, + 216, + 72, + 165, + 214, + 55, + 34, + 118, + 146, + 114, + 146, + 239, + 132, + 88, + 171, + 210, + 20, + 109, + 142, + 45, + 84, + 46, + 145, + 46, + 86, + 110, + 146, + 110, + 82, + 126, + 141, + 187, + 164, + 135, + 240, + 184, + 244, + 38, + 222, + 204, + 253, + 24, + 31, + 251, + 62, + 246, + 7, + 130, + 74, + 28, + 165, + 202, + 72, + 69, + 110, + 85, + 110, + 243, + 175, + 138, + 189, + 25, + 147, + 139, + 115, + 75, + 99, + 85, + 185, + 137, + 216, + 9, + 254, + 19, + 130, + 13, + 225, + 134, + 104, + 99, + 108, + 186, + 169, + 217, + 213, + 228, + 157, + 17, + 156, + 81, + 48, + 61, + 124, + 138, + 113, + 74, + 225, + 153, + 202, + 25, + 222, + 179, + 99, + 151, + 196, + 110, + 9, + 222, + 18, + 219, + 225, + 127, + 47, + 150, + 103, + 245, + 19, + 111, + 154, + 109, + 235, + 202, + 79, + 240, + 159, + 175, + 36, + 203, + 243, + 19, + 178, + 63, + 199, + 95, + 170, + 140, + 80, + 100, + 42, + 229, + 14, + 144, + 180, + 1, + 49, + 127, + 174, + 2, + 53, + 34, + 121, + 2, + 10, + 229, + 17, + 40, + 69, + 161, + 144, + 83, + 162, + 166, + 162, + 144, + 102, + 14, + 244, + 15, + 123, + 160, + 127, + 216, + 3, + 135, + 93, + 234, + 129, + 152, + 199, + 207, + 7, + 203, + 211, + 63, + 117, + 60, + 253, + 123, + 15, + 15, + 159, + 67, + 124, + 184, + 60, + 253, + 83, + 135, + 35, + 201, + 81, + 124, + 224, + 60, + 39, + 210, + 128, + 81, + 218, + 89, + 74, + 75, + 35, + 66, + 22, + 34, + 66, + 22, + 34, + 66, + 22, + 34, + 49, + 195, + 74, + 172, + 98, + 226, + 88, + 253, + 98, + 163, + 35, + 38, + 142, + 53, + 111, + 224, + 145, + 137, + 115, + 100, + 222, + 76, + 200, + 90, + 205, + 253, + 211, + 70, + 120, + 95, + 179, + 222, + 15, + 95, + 2, + 174, + 74, + 253, + 69, + 253, + 197, + 140, + 217, + 208, + 218, + 138, + 37, + 124, + 105, + 90, + 188, + 164, + 56, + 215, + 167, + 197, + 74, + 212, + 163, + 60, + 22, + 124, + 114, + 21, + 231, + 250, + 134, + 103, + 103, + 149, + 139, + 79, + 177, + 234, + 88, + 137, + 252, + 221, + 178, + 37, + 137, + 123, + 126, + 247, + 224, + 95, + 95, + 232, + 123, + 230, + 201, + 20, + 105, + 120, + 145, + 207, + 180, + 115, + 123, + 63, + 89, + 189, + 224, + 241, + 139, + 62, + 191, + 245, + 157, + 190, + 221, + 36, + 255, + 189, + 249, + 51, + 79, + 157, + 251, + 187, + 214, + 248, + 178, + 196, + 37, + 167, + 110, + 34, + 51, + 223, + 125, + 135, + 204, + 233, + 249, + 75, + 223, + 195, + 239, + 174, + 235, + 251, + 224, + 230, + 33, + 173, + 119, + 147, + 68, + 23, + 177, + 252, + 170, + 239, + 173, + 190, + 119, + 250, + 118, + 247, + 189, + 90, + 50, + 50, + 143, + 203, + 203, + 253, + 128, + 242, + 132, + 210, + 3, + 63, + 10, + 233, + 136, + 100, + 196, + 109, + 117, + 16, + 247, + 240, + 224, + 140, + 240, + 25, + 166, + 5, + 97, + 217, + 172, + 11, + 187, + 74, + 64, + 77, + 192, + 34, + 190, + 185, + 228, + 44, + 21, + 87, + 133, + 56, + 194, + 15, + 27, + 250, + 119, + 131, + 25, + 196, + 157, + 102, + 187, + 215, + 186, + 3, + 85, + 238, + 52, + 219, + 183, + 182, + 176, + 164, + 202, + 197, + 227, + 5, + 37, + 85, + 122, + 54, + 116, + 102, + 67, + 119, + 154, + 189, + 189, + 182, + 32, + 150, + 201, + 119, + 7, + 50, + 249, + 238, + 128, + 200, + 79, + 158, + 224, + 14, + 84, + 21, + 59, + 78, + 12, + 158, + 104, + 76, + 181, + 206, + 12, + 46, + 8, + 46, + 49, + 95, + 232, + 184, + 200, + 121, + 173, + 229, + 122, + 231, + 111, + 236, + 143, + 58, + 211, + 206, + 207, + 28, + 159, + 58, + 117, + 135, + 205, + 102, + 184, + 156, + 57, + 46, + 151, + 211, + 229, + 180, + 153, + 221, + 249, + 52, + 18, + 200, + 181, + 168, + 110, + 126, + 187, + 72, + 241, + 155, + 205, + 185, + 190, + 64, + 94, + 200, + 39, + 182, + 195, + 25, + 95, + 243, + 166, + 164, + 151, + 143, + 162, + 207, + 135, + 72, + 161, + 80, + 35, + 126, + 191, + 211, + 233, + 48, + 133, + 250, + 133, + 42, + 212, + 47, + 84, + 161, + 195, + 251, + 227, + 80, + 204, + 113, + 183, + 202, + 229, + 40, + 235, + 154, + 201, + 168, + 1, + 225, + 147, + 169, + 18, + 222, + 25, + 85, + 156, + 206, + 180, + 26, + 69, + 139, + 138, + 58, + 139, + 164, + 162, + 66, + 191, + 144, + 34, + 191, + 144, + 34, + 191, + 144, + 34, + 255, + 127, + 170, + 81, + 212, + 127, + 187, + 14, + 71, + 249, + 174, + 236, + 231, + 190, + 199, + 172, + 178, + 206, + 219, + 227, + 207, + 122, + 170, + 185, + 165, + 149, + 85, + 44, + 241, + 120, + 111, + 173, + 94, + 155, + 24, + 34, + 110, + 9, + 101, + 46, + 9, + 41, + 135, + 239, + 144, + 29, + 245, + 240, + 229, + 81, + 92, + 27, + 177, + 152, + 146, + 206, + 132, + 83, + 31, + 225, + 114, + 143, + 16, + 87, + 69, + 22, + 11, + 91, + 203, + 193, + 118, + 38, + 3, + 121, + 9, + 87, + 97, + 94, + 194, + 93, + 152, + 151, + 112, + 36, + 131, + 9, + 189, + 48, + 39, + 161, + 23, + 134, + 19, + 122, + 225, + 225, + 165, + 182, + 229, + 168, + 99, + 28, + 95, + 174, + 207, + 19, + 149, + 6, + 211, + 146, + 88, + 52, + 42, + 20, + 153, + 184, + 35, + 16, + 185, + 159, + 46, + 223, + 252, + 202, + 197, + 47, + 189, + 49, + 97, + 64, + 211, + 73, + 108, + 255, + 179, + 77, + 231, + 158, + 82, + 22, + 105, + 252, + 144, + 220, + 127, + 237, + 170, + 147, + 127, + 243, + 96, + 95, + 185, + 210, + 51, + 241, + 111, + 23, + 221, + 189, + 189, + 160, + 184, + 232, + 228, + 243, + 250, + 22, + 147, + 161, + 215, + 220, + 84, + 99, + 213, + 122, + 207, + 147, + 42, + 171, + 47, + 58, + 126, + 254, + 117, + 220, + 10, + 155, + 201, + 62, + 149, + 255, + 161, + 188, + 129, + 114, + 250, + 215, + 13, + 40, + 201, + 94, + 101, + 139, + 245, + 223, + 105, + 43, + 22, + 39, + 193, + 28, + 243, + 235, + 124, + 0, + 242, + 4, + 12, + 8, + 104, + 239, + 63, + 176, + 179, + 245, + 35, + 89, + 207, + 197, + 152, + 166, + 96, + 63, + 146, + 207, + 13, + 183, + 81, + 71, + 174, + 166, + 80, + 1, + 137, + 128, + 179, + 165, + 217, + 114, + 135, + 180, + 84, + 150, + 139, + 75, + 134, + 73, + 137, + 224, + 88, + 233, + 4, + 237, + 164, + 130, + 134, + 112, + 125, + 209, + 184, + 146, + 169, + 82, + 139, + 54, + 179, + 224, + 148, + 1, + 55, + 120, + 28, + 81, + 46, + 60, + 124, + 140, + 139, + 250, + 145, + 226, + 126, + 36, + 214, + 143, + 148, + 244, + 35, + 81, + 49, + 252, + 153, + 194, + 25, + 164, + 184, + 31, + 137, + 245, + 35, + 37, + 92, + 8, + 199, + 113, + 108, + 128, + 61, + 86, + 68, + 139, + 164, + 146, + 226, + 225, + 206, + 170, + 104, + 125, + 113, + 195, + 144, + 25, + 198, + 244, + 104, + 83, + 241, + 57, + 214, + 179, + 236, + 103, + 59, + 206, + 200, + 153, + 235, + 191, + 200, + 122, + 177, + 253, + 98, + 231, + 101, + 250, + 121, + 69, + 29, + 197, + 215, + 73, + 203, + 173, + 55, + 216, + 151, + 59, + 111, + 214, + 175, + 45, + 186, + 186, + 248, + 54, + 251, + 42, + 231, + 42, + 111, + 40, + 187, + 229, + 42, + 139, + 196, + 220, + 249, + 177, + 128, + 57, + 54, + 144, + 196, + 128, + 129, + 1, + 183, + 92, + 49, + 52, + 134, + 185, + 160, + 176, + 151, + 93, + 148, + 127, + 67, + 62, + 205, + 47, + 206, + 181, + 151, + 133, + 74, + 138, + 73, + 177, + 146, + 171, + 112, + 29, + 153, + 57, + 194, + 14, + 149, + 153, + 67, + 161, + 92, + 73, + 24, + 3, + 113, + 151, + 59, + 209, + 154, + 113, + 236, + 242, + 160, + 85, + 220, + 65, + 27, + 178, + 55, + 243, + 201, + 79, + 150, + 21, + 23, + 57, + 236, + 86, + 37, + 18, + 44, + 8, + 229, + 155, + 52, + 85, + 150, + 168, + 74, + 138, + 139, + 10, + 29, + 118, + 171, + 170, + 132, + 242, + 203, + 2, + 73, + 46, + 234, + 43, + 2, + 36, + 176, + 55, + 23, + 101, + 194, + 195, + 45, + 172, + 91, + 157, + 24, + 100, + 18, + 105, + 35, + 139, + 200, + 74, + 162, + 146, + 52, + 73, + 37, + 29, + 101, + 188, + 74, + 94, + 117, + 126, + 44, + 112, + 34, + 63, + 2, + 250, + 153, + 15, + 75, + 204, + 15, + 238, + 195, + 194, + 64, + 50, + 144, + 155, + 71, + 14, + 7, + 109, + 26, + 200, + 155, + 29, + 230, + 52, + 7, + 6, + 42, + 34, + 182, + 163, + 116, + 186, + 184, + 38, + 22, + 137, + 185, + 73, + 204, + 205, + 141, + 108, + 94, + 216, + 221, + 63, + 13, + 221, + 135, + 207, + 213, + 221, + 211, + 248, + 108, + 205, + 27, + 154, + 245, + 117, + 183, + 78, + 216, + 35, + 220, + 83, + 217, + 163, + 181, + 126, + 133, + 159, + 61, + 95, + 211, + 123, + 91, + 227, + 123, + 56, + 216, + 207, + 185, + 224, + 242, + 137, + 171, + 182, + 252, + 120, + 179, + 133, + 187, + 173, + 22, + 31, + 153, + 102, + 228, + 232, + 136, + 152, + 116, + 158, + 234, + 16, + 21, + 62, + 45, + 190, + 206, + 23, + 149, + 196, + 98, + 195, + 170, + 196, + 157, + 188, + 220, + 236, + 153, + 156, + 55, + 199, + 151, + 43, + 251, + 196, + 164, + 226, + 203, + 67, + 108, + 230, + 83, + 246, + 89, + 127, + 187, + 108, + 225, + 99, + 83, + 39, + 205, + 28, + 217, + 119, + 206, + 228, + 51, + 231, + 93, + 254, + 205, + 237, + 15, + 254, + 120, + 157, + 210, + 227, + 124, + 226, + 209, + 212, + 253, + 137, + 26, + 242, + 78, + 115, + 231, + 197, + 215, + 29, + 252, + 221, + 11, + 125, + 223, + 222, + 73, + 222, + 210, + 207, + 189, + 249, + 148, + 49, + 29, + 245, + 13, + 243, + 162, + 190, + 246, + 120, + 245, + 131, + 115, + 23, + 254, + 101, + 206, + 153, + 175, + 92, + 233, + 184, + 241, + 150, + 43, + 79, + 157, + 88, + 89, + 121, + 246, + 128, + 145, + 235, + 206, + 63, + 111, + 107, + 199, + 82, + 113, + 223, + 183, + 28, + 144, + 123, + 196, + 189, + 139, + 157, + 201, + 60, + 85, + 232, + 47, + 77, + 64, + 85, + 120, + 96, + 181, + 127, + 231, + 135, + 85, + 133, + 7, + 86, + 251, + 5, + 63, + 172, + 139, + 99, + 10, + 13, + 201, + 18, + 63, + 152, + 81, + 21, + 217, + 156, + 166, + 29, + 107, + 133, + 195, + 228, + 255, + 52, + 246, + 37, + 208, + 81, + 85, + 217, + 218, + 231, + 156, + 59, + 79, + 117, + 135, + 154, + 135, + 164, + 42, + 67, + 37, + 33, + 21, + 9, + 146, + 10, + 16, + 140, + 228, + 138, + 12, + 34, + 50, + 137, + 81, + 64, + 74, + 163, + 2, + 10, + 56, + 16, + 68, + 196, + 22, + 21, + 158, + 3, + 78, + 173, + 180, + 253, + 219, + 106, + 79, + 224, + 240, + 156, + 90, + 155, + 0, + 1, + 34, + 218, + 207, + 60, + 155, + 246, + 181, + 3, + 15, + 186, + 91, + 237, + 191, + 233, + 70, + 233, + 22, + 21, + 7, + 158, + 60, + 155, + 230, + 181, + 98, + 82, + 255, + 218, + 251, + 222, + 10, + 133, + 250, + 214, + 250, + 195, + 226, + 212, + 73, + 221, + 26, + 110, + 238, + 217, + 103, + 15, + 223, + 254, + 246, + 190, + 148, + 238, + 16, + 51, + 148, + 53, + 115, + 148, + 235, + 163, + 116, + 27, + 245, + 49, + 235, + 67, + 174, + 134, + 250, + 81, + 246, + 149, + 227, + 23, + 37, + 120, + 228, + 111, + 37, + 45, + 9, + 28, + 16, + 63, + 53, + 131, + 74, + 17, + 62, + 81, + 222, + 254, + 72, + 57, + 82, + 2, + 76, + 109, + 107, + 224, + 96, + 225, + 67, + 208, + 131, + 158, + 139, + 117, + 18, + 134, + 10, + 68, + 55, + 200, + 201, + 176, + 224, + 96, + 5, + 127, + 247, + 96, + 82, + 48, + 158, + 127, + 254, + 171, + 191, + 3, + 59, + 167, + 248, + 17, + 98, + 248, + 33, + 170, + 187, + 106, + 157, + 57, + 135, + 159, + 35, + 191, + 38, + 243, + 145, + 62, + 31, + 205, + 207, + 243, + 167, + 201, + 147, + 248, + 179, + 229, + 149, + 230, + 147, + 194, + 33, + 83, + 210, + 9, + 179, + 129, + 154, + 42, + 42, + 161, + 146, + 229, + 8, + 149, + 164, + 50, + 84, + 66, + 78, + 67, + 117, + 172, + 20, + 201, + 177, + 161, + 72, + 142, + 33, + 16, + 12, + 180, + 64, + 119, + 56, + 34, + 27, + 133, + 76, + 132, + 102, + 34, + 51, + 35, + 172, + 43, + 178, + 44, + 178, + 38, + 194, + 69, + 190, + 195, + 33, + 197, + 60, + 76, + 41, + 204, + 84, + 209, + 140, + 168, + 37, + 51, + 130, + 19, + 159, + 149, + 232, + 155, + 17, + 21, + 195, + 57, + 181, + 100, + 70, + 212, + 33, + 51, + 162, + 22, + 194, + 16, + 206, + 157, + 48, + 35, + 30, + 190, + 55, + 205, + 42, + 248, + 208, + 235, + 144, + 195, + 143, + 46, + 105, + 142, + 20, + 104, + 139, + 237, + 59, + 250, + 8, + 188, + 34, + 6, + 107, + 243, + 93, + 175, + 44, + 24, + 60, + 254, + 214, + 127, + 14, + 126, + 181, + 236, + 149, + 201, + 207, + 223, + 244, + 206, + 118, + 97, + 231, + 215, + 155, + 247, + 15, + 126, + 253, + 248, + 125, + 212, + 248, + 152, + 155, + 241, + 245, + 150, + 151, + 183, + 93, + 250, + 10, + 13, + 17, + 138, + 13, + 66, + 39, + 1, + 55, + 148, + 30, + 118, + 131, + 66, + 19, + 138, + 12, + 42, + 84, + 30, + 199, + 114, + 216, + 25, + 156, + 104, + 148, + 157, + 161, + 48, + 104, + 8, + 136, + 254, + 194, + 19, + 54, + 15, + 92, + 99, + 94, + 160, + 235, + 65, + 209, + 120, + 248, + 19, + 184, + 178, + 227, + 59, + 85, + 100, + 203, + 1, + 44, + 229, + 89, + 1, + 90, + 11, + 35, + 195, + 81, + 77, + 248, + 31, + 254, + 33, + 0, + 241, + 112, + 12, + 147, + 12, + 56, + 250, + 140, + 100, + 71, + 160, + 68, + 198, + 192, + 66, + 37, + 130, + 34, + 11, + 148, + 9, + 205, + 251, + 119, + 91, + 251, + 119, + 219, + 45, + 45, + 164, + 163, + 163, + 3, + 25, + 98, + 73, + 183, + 182, + 89, + 160, + 141, + 164, + 129, + 203, + 170, + 205, + 250, + 8, + 189, + 75, + 191, + 75, + 190, + 75, + 89, + 175, + 247, + 235, + 71, + 116, + 45, + 163, + 207, + 212, + 25, + 207, + 52, + 153, + 121, + 186, + 118, + 135, + 66, + 117, + 141, + 200, + 148, + 145, + 142, + 14, + 36, + 193, + 36, + 221, + 90, + 85, + 81, + 50, + 178, + 16, + 146, + 101, + 129, + 80, + 154, + 97, + 66, + 136, + 49, + 65, + 161, + 76, + 248, + 56, + 163, + 18, + 89, + 89, + 40, + 211, + 133, + 76, + 198, + 132, + 66, + 67, + 219, + 76, + 153, + 174, + 145, + 215, + 203, + 76, + 6, + 34, + 142, + 193, + 220, + 134, + 182, + 139, + 25, + 189, + 159, + 109, + 96, + 140, + 193, + 51, + 118, + 70, + 152, + 41, + 176, + 17, + 66, + 151, + 176, + 94, + 232, + 23, + 142, + 8, + 130, + 208, + 199, + 238, + 220, + 170, + 117, + 61, + 237, + 193, + 51, + 221, + 7, + 11, + 221, + 57, + 248, + 31, + 179, + 60, + 18, + 121, + 34, + 126, + 56, + 230, + 17, + 201, + 125, + 110, + 14, + 80, + 115, + 60, + 248, + 37, + 52, + 107, + 222, + 156, + 45, + 196, + 84, + 251, + 138, + 255, + 189, + 69, + 113, + 40, + 60, + 200, + 33, + 0, + 8, + 129, + 137, + 227, + 33, + 49, + 13, + 179, + 167, + 246, + 140, + 66, + 36, + 134, + 96, + 239, + 99, + 140, + 7, + 11, + 164, + 240, + 29, + 124, + 82, + 208, + 108, + 85, + 180, + 197, + 195, + 90, + 90, + 40, + 59, + 99, + 224, + 183, + 191, + 167, + 55, + 13, + 79, + 87, + 159, + 66, + 239, + 125, + 117, + 224, + 21, + 97, + 231, + 241, + 63, + 174, + 89, + 182, + 106, + 21, + 63, + 12, + 243, + 24, + 113, + 66, + 164, + 149, + 224, + 125, + 178, + 213, + 47, + 16, + 179, + 56, + 232, + 129, + 79, + 94, + 42, + 40, + 80, + 146, + 10, + 179, + 175, + 56, + 224, + 31, + 224, + 134, + 14, + 96, + 140, + 11, + 154, + 126, + 24, + 10, + 20, + 50, + 188, + 56, + 245, + 132, + 136, + 240, + 168, + 248, + 57, + 28, + 25, + 142, + 1, + 207, + 247, + 199, + 183, + 121, + 210, + 3, + 239, + 199, + 111, + 208, + 251, + 138, + 111, + 245, + 2, + 92, + 42, + 64, + 76, + 130, + 192, + 233, + 48, + 82, + 103, + 15, + 115, + 234, + 98, + 109, + 100, + 148, + 221, + 230, + 140, + 138, + 77, + 33, + 147, + 237, + 41, + 206, + 228, + 216, + 28, + 114, + 129, + 61, + 199, + 185, + 32, + 102, + 61, + 44, + 63, + 108, + 250, + 75, + 237, + 182, + 88, + 52, + 17, + 207, + 133, + 243, + 66, + 94, + 159, + 32, + 76, + 208, + 167, + 134, + 207, + 19, + 206, + 211, + 47, + 12, + 47, + 16, + 22, + 232, + 75, + 195, + 43, + 132, + 21, + 250, + 141, + 97, + 83, + 8, + 3, + 12, + 233, + 200, + 68, + 54, + 25, + 74, + 90, + 7, + 252, + 128, + 213, + 40, + 248, + 226, + 81, + 201, + 241, + 130, + 192, + 68, + 73, + 150, + 5, + 85, + 211, + 117, + 5, + 186, + 210, + 234, + 161, + 160, + 227, + 132, + 35, + 209, + 88, + 44, + 220, + 87, + 108, + 223, + 42, + 144, + 88, + 6, + 30, + 117, + 199, + 134, + 71, + 119, + 94, + 88, + 86, + 50, + 68, + 128, + 154, + 21, + 18, + 194, + 222, + 37, + 178, + 92, + 25, + 142, + 133, + 194, + 225, + 152, + 163, + 43, + 74, + 101, + 216, + 9, + 133, + 195, + 142, + 173, + 155, + 102, + 198, + 178, + 67, + 150, + 101, + 59, + 138, + 46, + 199, + 194, + 130, + 105, + 91, + 58, + 97, + 66, + 88, + 23, + 184, + 152, + 101, + 154, + 138, + 34, + 203, + 140, + 81, + 22, + 115, + 28, + 219, + 38, + 114, + 34, + 26, + 77, + 88, + 103, + 40, + 116, + 22, + 201, + 16, + 157, + 206, + 34, + 97, + 58, + 139, + 184, + 68, + 160, + 179, + 182, + 103, + 128, + 151, + 18, + 143, + 247, + 209, + 123, + 54, + 123, + 14, + 105, + 33, + 17, + 159, + 54, + 144, + 136, + 13, + 12, + 36, + 226, + 3, + 177, + 233, + 19, + 23, + 78, + 248, + 112, + 200, + 11, + 45, + 33, + 127, + 224, + 128, + 250, + 53, + 40, + 37, + 46, + 216, + 180, + 114, + 28, + 240, + 228, + 135, + 92, + 46, + 183, + 46, + 96, + 237, + 218, + 181, + 46, + 96, + 181, + 239, + 42, + 205, + 202, + 7, + 58, + 181, + 199, + 156, + 61, + 181, + 199, + 6, + 169, + 117, + 84, + 32, + 84, + 121, + 50, + 154, + 157, + 61, + 181, + 167, + 241, + 132, + 140, + 250, + 216, + 98, + 96, + 214, + 188, + 57, + 91, + 117, + 87, + 112, + 199, + 120, + 98, + 187, + 188, + 224, + 113, + 49, + 78, + 254, + 169, + 162, + 45, + 65, + 79, + 96, + 131, + 78, + 116, + 212, + 232, + 96, + 11, + 173, + 161, + 192, + 43, + 163, + 244, + 231, + 131, + 55, + 254, + 199, + 123, + 181, + 137, + 49, + 42, + 141, + 126, + 242, + 251, + 25, + 53, + 169, + 83, + 62, + 252, + 245, + 224, + 213, + 47, + 14, + 190, + 81, + 47, + 69, + 67, + 131, + 175, + 9, + 59, + 191, + 238, + 120, + 232, + 193, + 79, + 107, + 185, + 119, + 7, + 18, + 131, + 159, + 253, + 253, + 158, + 94, + 238, + 151, + 95, + 77, + 226, + 11, + 247, + 102, + 22, + 78, + 62, + 254, + 56, + 54, + 204, + 242, + 53, + 160, + 206, + 152, + 107, + 104, + 2, + 8, + 157, + 142, + 35, + 154, + 75, + 95, + 99, + 29, + 247, + 160, + 10, + 143, + 115, + 168, + 227, + 72, + 203, + 52, + 34, + 170, + 245, + 241, + 157, + 60, + 239, + 43, + 198, + 175, + 75, + 138, + 209, + 219, + 4, + 224, + 15, + 121, + 212, + 105, + 206, + 68, + 215, + 22, + 173, + 181, + 254, + 29, + 54, + 219, + 227, + 66, + 42, + 99, + 57, + 254, + 52, + 165, + 175, + 248, + 209, + 86, + 39, + 10, + 105, + 170, + 143, + 220, + 128, + 19, + 205, + 243, + 113, + 39, + 154, + 231, + 96, + 80, + 32, + 42, + 139, + 97, + 102, + 235, + 255, + 186, + 167, + 197, + 170, + 242, + 124, + 67, + 172, + 42, + 239, + 212, + 241, + 195, + 228, + 70, + 181, + 57, + 192, + 95, + 65, + 175, + 16, + 175, + 208, + 222, + 21, + 121, + 129, + 231, + 176, + 223, + 182, + 40, + 42, + 34, + 167, + 168, + 58, + 112, + 118, + 50, + 170, + 22, + 82, + 85, + 77, + 228, + 68, + 133, + 3, + 239, + 53, + 2, + 207, + 114, + 25, + 70, + 67, + 140, + 81, + 81, + 215, + 68, + 202, + 49, + 66, + 181, + 62, + 22, + 119, + 21, + 85, + 85, + 56, + 198, + 136, + 28, + 232, + 99, + 49, + 87, + 209, + 149, + 115, + 93, + 117, + 141, + 202, + 212, + 62, + 186, + 205, + 53, + 52, + 77, + 207, + 16, + 238, + 220, + 25, + 236, + 126, + 212, + 119, + 219, + 92, + 133, + 82, + 18, + 42, + 5, + 80, + 174, + 134, + 78, + 130, + 238, + 59, + 6, + 127, + 243, + 93, + 5, + 22, + 219, + 110, + 4, + 94, + 169, + 2, + 29, + 152, + 67, + 123, + 6, + 254, + 192, + 97, + 107, + 192, + 123, + 248, + 16, + 252, + 129, + 246, + 118, + 235, + 40, + 226, + 247, + 212, + 1, + 110, + 125, + 78, + 190, + 201, + 218, + 37, + 32, + 85, + 17, + 102, + 235, + 128, + 160, + 104, + 5, + 118, + 237, + 154, + 218, + 19, + 157, + 61, + 181, + 39, + 5, + 212, + 68, + 89, + 87, + 116, + 126, + 103, + 241, + 40, + 225, + 138, + 71, + 145, + 13, + 141, + 142, + 29, + 197, + 136, + 73, + 193, + 164, + 84, + 117, + 188, + 141, + 239, + 43, + 190, + 187, + 57, + 14, + 193, + 208, + 9, + 154, + 244, + 183, + 85, + 99, + 149, + 125, + 66, + 47, + 218, + 236, + 180, + 129, + 55, + 62, + 163, + 85, + 51, + 39, + 142, + 191, + 136, + 166, + 254, + 54, + 176, + 131, + 93, + 197, + 77, + 27, + 156, + 180, + 122, + 245, + 181, + 235, + 233, + 166, + 175, + 183, + 14, + 252, + 16, + 98, + 243, + 179, + 139, + 135, + 248, + 20, + 63, + 142, + 52, + 144, + 209, + 236, + 105, + 183, + 73, + 49, + 148, + 198, + 184, + 145, + 104, + 28, + 102, + 52, + 54, + 182, + 25, + 163, + 194, + 163, + 147, + 99, + 27, + 167, + 52, + 22, + 140, + 66, + 227, + 18, + 99, + 113, + 99, + 215, + 136, + 187, + 141, + 59, + 134, + 253, + 56, + 242, + 147, + 196, + 51, + 70, + 184, + 161, + 148, + 153, + 173, + 7, + 207, + 42, + 14, + 179, + 39, + 227, + 207, + 54, + 108, + 143, + 191, + 216, + 176, + 43, + 190, + 167, + 225, + 247, + 225, + 253, + 13, + 242, + 132, + 8, + 173, + 4, + 5, + 106, + 131, + 151, + 224, + 56, + 39, + 168, + 170, + 173, + 224, + 158, + 204, + 128, + 89, + 58, + 154, + 142, + 229, + 154, + 26, + 243, + 109, + 124, + 91, + 211, + 20, + 254, + 172, + 166, + 243, + 229, + 185, + 185, + 69, + 242, + 226, + 220, + 74, + 125, + 157, + 254, + 154, + 254, + 165, + 241, + 101, + 206, + 30, + 157, + 15, + 80, + 222, + 106, + 174, + 205, + 71, + 71, + 86, + 133, + 98, + 23, + 15, + 187, + 102, + 24, + 27, + 150, + 106, + 14, + 116, + 4, + 238, + 15, + 108, + 8, + 20, + 3, + 194, + 134, + 192, + 166, + 192, + 231, + 1, + 14, + 116, + 182, + 39, + 128, + 1, + 29, + 22, + 47, + 80, + 202, + 42, + 131, + 86, + 118, + 171, + 160, + 210, + 40, + 128, + 212, + 251, + 128, + 104, + 154, + 98, + 103, + 160, + 14, + 118, + 68, + 0, + 177, + 246, + 64, + 32, + 197, + 69, + 251, + 216, + 179, + 174, + 17, + 67, + 23, + 34, + 246, + 96, + 40, + 149, + 146, + 200, + 208, + 169, + 147, + 137, + 245, + 234, + 200, + 20, + 167, + 13, + 187, + 196, + 186, + 164, + 60, + 147, + 225, + 49, + 132, + 193, + 113, + 132, + 154, + 33, + 128, + 62, + 81, + 94, + 178, + 85, + 181, + 224, + 151, + 249, + 129, + 218, + 103, + 158, + 95, + 86, + 203, + 131, + 8, + 213, + 2, + 93, + 6, + 10, + 141, + 106, + 61, + 63, + 4, + 225, + 142, + 191, + 128, + 99, + 42, + 118, + 214, + 226, + 121, + 213, + 150, + 220, + 208, + 218, + 62, + 118, + 161, + 27, + 168, + 119, + 73, + 157, + 85, + 151, + 169, + 27, + 81, + 183, + 169, + 78, + 104, + 3, + 160, + 1, + 98, + 138, + 186, + 190, + 226, + 59, + 165, + 201, + 81, + 68, + 36, + 235, + 78, + 133, + 131, + 174, + 81, + 89, + 147, + 31, + 209, + 214, + 223, + 198, + 54, + 182, + 209, + 182, + 40, + 252, + 1, + 75, + 225, + 163, + 163, + 72, + 87, + 142, + 102, + 99, + 213, + 205, + 24, + 161, + 52, + 163, + 185, + 106, + 70, + 51, + 214, + 92, + 251, + 178, + 184, + 71, + 100, + 105, + 177, + 67, + 100, + 98, + 8, + 61, + 40, + 116, + 116, + 68, + 143, + 238, + 28, + 64, + 84, + 2, + 55, + 130, + 24, + 67, + 56, + 66, + 135, + 243, + 135, + 81, + 236, + 20, + 3, + 8, + 77, + 32, + 119, + 71, + 60, + 117, + 204, + 9, + 254, + 70, + 46, + 87, + 232, + 246, + 98, + 152, + 92, + 206, + 42, + 116, + 227, + 102, + 41, + 28, + 30, + 242, + 10, + 17, + 175, + 204, + 125, + 240, + 1, + 120, + 130, + 7, + 115, + 29, + 135, + 7, + 114, + 7, + 189, + 250, + 170, + 161, + 247, + 118, + 123, + 225, + 159, + 87, + 126, + 4, + 251, + 1, + 5, + 30, + 210, + 170, + 164, + 59, + 139, + 233, + 121, + 136, + 101, + 70, + 227, + 191, + 214, + 124, + 189, + 199, + 22, + 31, + 199, + 48, + 184, + 137, + 132, + 195, + 161, + 72, + 180, + 166, + 142, + 3, + 218, + 120, + 56, + 4, + 46, + 229, + 232, + 81, + 173, + 92, + 251, + 130, + 23, + 150, + 108, + 122, + 105, + 242, + 181, + 103, + 181, + 46, + 221, + 119, + 57, + 109, + 153, + 120, + 231, + 45, + 55, + 84, + 244, + 196, + 174, + 222, + 123, + 215, + 157, + 207, + 206, + 180, + 148, + 104, + 245, + 75, + 169, + 232, + 165, + 187, + 174, + 153, + 63, + 242, + 170, + 197, + 87, + 60, + 86, + 87, + 113, + 107, + 231, + 164, + 95, + 220, + 62, + 125, + 237, + 244, + 80, + 192, + 72, + 212, + 102, + 213, + 171, + 79, + 57, + 125, + 110, + 119, + 172, + 251, + 158, + 169, + 238, + 37, + 103, + 15, + 95, + 117, + 228, + 248, + 237, + 167, + 143, + 161, + 251, + 27, + 82, + 86, + 195, + 180, + 230, + 179, + 186, + 46, + 156, + 113, + 250, + 245, + 176, + 155, + 238, + 40, + 30, + 226, + 33, + 139, + 99, + 145, + 10, + 250, + 154, + 123, + 35, + 21, + 116, + 179, + 86, + 104, + 21, + 38, + 10, + 66, + 71, + 186, + 39, + 205, + 210, + 233, + 234, + 84, + 75, + 106, + 124, + 106, + 89, + 122, + 125, + 90, + 28, + 27, + 108, + 143, + 180, + 39, + 206, + 137, + 156, + 147, + 40, + 200, + 5, + 99, + 142, + 89, + 136, + 92, + 148, + 88, + 34, + 95, + 105, + 92, + 97, + 94, + 29, + 185, + 58, + 209, + 159, + 254, + 147, + 190, + 47, + 186, + 47, + 254, + 183, + 224, + 103, + 209, + 207, + 226, + 239, + 87, + 28, + 72, + 23, + 211, + 241, + 140, + 208, + 108, + 54, + 135, + 70, + 8, + 29, + 166, + 43, + 156, + 99, + 206, + 20, + 22, + 9, + 251, + 42, + 254, + 193, + 127, + 101, + 233, + 86, + 56, + 192, + 139, + 140, + 36, + 83, + 162, + 68, + 213, + 112, + 42, + 160, + 197, + 74, + 152, + 5, + 20, + 115, + 12, + 241, + 131, + 221, + 44, + 10, + 119, + 237, + 94, + 141, + 90, + 154, + 171, + 117, + 105, + 107, + 52, + 222, + 227, + 67, + 106, + 184, + 99, + 160, + 24, + 6, + 65, + 54, + 200, + 23, + 227, + 196, + 131, + 52, + 17, + 118, + 3, + 217, + 212, + 160, + 216, + 8, + 225, + 73, + 144, + 172, + 217, + 176, + 246, + 218, + 10, + 106, + 51, + 248, + 38, + 27, + 197, + 197, + 110, + 33, + 14, + 110, + 14, + 30, + 247, + 3, + 202, + 60, + 204, + 197, + 78, + 210, + 226, + 121, + 74, + 28, + 10, + 32, + 151, + 101, + 172, + 159, + 210, + 245, + 116, + 35, + 237, + 161, + 71, + 40, + 159, + 166, + 29, + 116, + 6, + 229, + 40, + 248, + 235, + 176, + 111, + 40, + 236, + 169, + 10, + 144, + 112, + 138, + 162, + 71, + 49, + 170, + 161, + 14, + 136, + 30, + 69, + 209, + 163, + 240, + 39, + 130, + 108, + 227, + 75, + 35, + 112, + 122, + 52, + 134, + 68, + 54, + 36, + 51, + 211, + 120, + 229, + 228, + 209, + 39, + 69, + 34, + 32, + 86, + 203, + 61, + 22, + 25, + 62, + 119, + 48, + 151, + 195, + 236, + 82, + 153, + 180, + 122, + 144, + 106, + 7, + 18, + 136, + 61, + 29, + 220, + 189, + 156, + 116, + 87, + 213, + 216, + 45, + 246, + 168, + 150, + 145, + 149, + 44, + 108, + 145, + 154, + 234, + 122, + 46, + 20, + 61, + 81, + 150, + 66, + 79, + 121, + 170, + 119, + 249, + 230, + 75, + 55, + 117, + 187, + 131, + 95, + 252, + 234, + 165, + 165, + 44, + 223, + 249, + 131, + 149, + 207, + 253, + 235, + 117, + 43, + 159, + 19, + 118, + 14, + 252, + 227, + 254, + 25, + 247, + 191, + 126, + 237, + 224, + 231, + 131, + 239, + 252, + 140, + 254, + 232, + 229, + 206, + 123, + 118, + 191, + 177, + 247, + 85, + 172, + 222, + 156, + 89, + 60, + 196, + 29, + 230, + 199, + 145, + 4, + 253, + 251, + 11, + 36, + 90, + 60, + 226, + 86, + 99, + 242, + 20, + 175, + 160, + 130, + 163, + 137, + 163, + 229, + 93, + 83, + 185, + 44, + 138, + 200, + 7, + 110, + 49, + 169, + 169, + 81, + 160, + 9, + 45, + 35, + 28, + 225, + 157, + 148, + 38, + 197, + 82, + 188, + 70, + 3, + 97, + 73, + 134, + 11, + 38, + 225, + 5, + 147, + 116, + 76, + 232, + 88, + 112, + 193, + 36, + 220, + 88, + 187, + 223, + 122, + 213, + 195, + 19, + 118, + 21, + 70, + 194, + 127, + 8, + 54, + 38, + 43, + 58, + 77, + 167, + 206, + 12, + 158, + 25, + 157, + 29, + 156, + 29, + 237, + 10, + 118, + 69, + 127, + 194, + 126, + 194, + 253, + 216, + 120, + 194, + 122, + 34, + 161, + 203, + 70, + 92, + 93, + 194, + 22, + 115, + 75, + 132, + 235, + 244, + 101, + 198, + 26, + 227, + 73, + 125, + 155, + 178, + 93, + 221, + 166, + 235, + 17, + 253, + 14, + 253, + 125, + 198, + 5, + 170, + 47, + 54, + 175, + 49, + 111, + 49, + 57, + 147, + 130, + 238, + 172, + 27, + 129, + 220, + 165, + 46, + 178, + 140, + 172, + 39, + 27, + 201, + 1, + 114, + 132, + 40, + 196, + 187, + 57, + 69, + 233, + 28, + 83, + 38, + 29, + 114, + 136, + 77, + 16, + 72, + 148, + 21, + 179, + 54, + 32, + 163, + 94, + 174, + 78, + 98, + 156, + 238, + 29, + 7, + 118, + 147, + 187, + 22, + 101, + 169, + 86, + 203, + 165, + 41, + 37, + 148, + 82, + 55, + 144, + 27, + 223, + 73, + 93, + 116, + 111, + 92, + 244, + 98, + 70, + 161, + 19, + 226, + 162, + 68, + 184, + 40, + 14, + 103, + 161, + 16, + 36, + 80, + 8, + 166, + 164, + 194, + 40, + 110, + 97, + 20, + 189, + 48, + 234, + 187, + 112, + 237, + 30, + 137, + 166, + 165, + 14, + 137, + 73, + 1, + 204, + 117, + 169, + 240, + 54, + 9, + 173, + 19, + 92, + 187, + 241, + 120, + 237, + 198, + 119, + 74, + 167, + 38, + 243, + 187, + 134, + 66, + 127, + 79, + 64, + 202, + 8, + 106, + 203, + 253, + 155, + 150, + 96, + 141, + 216, + 152, + 185, + 135, + 115, + 185, + 229, + 71, + 1, + 151, + 95, + 94, + 34, + 39, + 218, + 109, + 205, + 86, + 225, + 160, + 85, + 56, + 136, + 48, + 13, + 45, + 116, + 151, + 66, + 25, + 26, + 5, + 253, + 69, + 236, + 188, + 3, + 88, + 204, + 16, + 20, + 3, + 50, + 197, + 181, + 111, + 174, + 248, + 252, + 151, + 251, + 6, + 255, + 103, + 249, + 199, + 119, + 61, + 255, + 151, + 244, + 166, + 248, + 45, + 243, + 238, + 124, + 246, + 137, + 219, + 150, + 220, + 71, + 111, + 143, + 238, + 216, + 67, + 43, + 168, + 250, + 28, + 101, + 107, + 55, + 61, + 154, + 92, + 122, + 229, + 175, + 255, + 240, + 206, + 43, + 255, + 66, + 24, + 153, + 84, + 60, + 196, + 189, + 231, + 85, + 28, + 208, + 151, + 221, + 213, + 42, + 227, + 141, + 172, + 145, + 55, + 38, + 24, + 66, + 107, + 168, + 53, + 117, + 1, + 59, + 79, + 61, + 55, + 52, + 59, + 117, + 57, + 91, + 32, + 44, + 84, + 46, + 11, + 117, + 165, + 250, + 211, + 111, + 9, + 111, + 7, + 247, + 199, + 63, + 8, + 126, + 16, + 250, + 60, + 250, + 105, + 252, + 3, + 212, + 45, + 145, + 116, + 58, + 151, + 0, + 133, + 52, + 53, + 1, + 218, + 73, + 26, + 206, + 106, + 141, + 225, + 145, + 177, + 172, + 213, + 152, + 202, + 38, + 26, + 147, + 66, + 83, + 82, + 23, + 168, + 231, + 27, + 151, + 27, + 31, + 136, + 31, + 69, + 190, + 162, + 71, + 3, + 22, + 13, + 115, + 1, + 205, + 50, + 73, + 50, + 165, + 73, + 54, + 81, + 195, + 41, + 238, + 36, + 165, + 243, + 207, + 29, + 168, + 116, + 90, + 96, + 61, + 191, + 216, + 129, + 171, + 152, + 181, + 205, + 210, + 11, + 78, + 22, + 130, + 122, + 20, + 130, + 172, + 101, + 237, + 181, + 169, + 101, + 187, + 118, + 151, + 189, + 198, + 230, + 211, + 46, + 72, + 174, + 167, + 157, + 108, + 7, + 84, + 130, + 141, + 230, + 24, + 244, + 148, + 45, + 130, + 156, + 219, + 168, + 173, + 108, + 4, + 62, + 96, + 29, + 237, + 0, + 172, + 163, + 93, + 34, + 93, + 216, + 37, + 114, + 5, + 76, + 220, + 46, + 220, + 72, + 43, + 28, + 175, + 140, + 211, + 171, + 40, + 68, + 105, + 112, + 106, + 37, + 12, + 216, + 33, + 247, + 48, + 190, + 243, + 101, + 105, + 143, + 244, + 158, + 84, + 148, + 120, + 144, + 143, + 25, + 18, + 39, + 85, + 226, + 254, + 65, + 187, + 39, + 85, + 122, + 251, + 10, + 101, + 6, + 29, + 9, + 41, + 129, + 50, + 19, + 175, + 204, + 207, + 44, + 211, + 52, + 128, + 194, + 33, + 204, + 49, + 164, + 92, + 240, + 73, + 143, + 111, + 102, + 13, + 228, + 218, + 15, + 250, + 8, + 8, + 252, + 63, + 161, + 106, + 128, + 73, + 80, + 213, + 10, + 134, + 173, + 174, + 213, + 151, + 12, + 224, + 15, + 133, + 78, + 168, + 26, + 110, + 204, + 194, + 93, + 183, + 188, + 125, + 221, + 146, + 183, + 110, + 237, + 250, + 81, + 243, + 214, + 129, + 204, + 115, + 215, + 173, + 252, + 215, + 167, + 111, + 92, + 245, + 232, + 29, + 63, + 191, + 247, + 248, + 227, + 27, + 40, + 119, + 247, + 172, + 51, + 88, + 224, + 171, + 73, + 204, + 121, + 243, + 245, + 127, + 127, + 117, + 223, + 155, + 187, + 192, + 34, + 77, + 45, + 30, + 226, + 43, + 249, + 113, + 36, + 76, + 42, + 232, + 207, + 221, + 104, + 154, + 164, + 194, + 172, + 147, + 43, + 8, + 5, + 165, + 83, + 91, + 200, + 45, + 21, + 174, + 81, + 22, + 106, + 114, + 24, + 156, + 18, + 255, + 82, + 29, + 116, + 207, + 133, + 89, + 69, + 10, + 198, + 122, + 231, + 79, + 194, + 87, + 161, + 99, + 9, + 254, + 84, + 103, + 108, + 252, + 212, + 212, + 25, + 206, + 180, + 196, + 25, + 169, + 89, + 206, + 252, + 248, + 185, + 169, + 75, + 156, + 171, + 18, + 151, + 164, + 86, + 137, + 171, + 194, + 199, + 216, + 177, + 152, + 69, + 34, + 212, + 52, + 162, + 209, + 153, + 17, + 0, + 153, + 184, + 72, + 202, + 92, + 111, + 109, + 180, + 152, + 101, + 241, + 201, + 148, + 42, + 145, + 157, + 236, + 89, + 216, + 37, + 37, + 205, + 222, + 239, + 226, + 82, + 89, + 148, + 210, + 7, + 131, + 41, + 94, + 139, + 122, + 249, + 231, + 147, + 73, + 251, + 94, + 162, + 53, + 234, + 26, + 125, + 197, + 191, + 32, + 252, + 4, + 5, + 227, + 120, + 150, + 70, + 137, + 230, + 103, + 192, + 71, + 41, + 245, + 141, + 249, + 30, + 131, + 26, + 137, + 52, + 240, + 226, + 178, + 117, + 121, + 120, + 220, + 1, + 110, + 80, + 154, + 166, + 35, + 96, + 27, + 230, + 195, + 7, + 69, + 90, + 60, + 101, + 234, + 51, + 251, + 81, + 14, + 172, + 90, + 201, + 173, + 109, + 204, + 151, + 214, + 218, + 219, + 245, + 158, + 6, + 200, + 148, + 173, + 123, + 10, + 215, + 221, + 211, + 21, + 41, + 92, + 113, + 100, + 176, + 194, + 186, + 159, + 108, + 97, + 10, + 57, + 204, + 153, + 28, + 204, + 77, + 183, + 186, + 115, + 185, + 99, + 221, + 229, + 128, + 23, + 208, + 46, + 253, + 58, + 200, + 246, + 129, + 110, + 175, + 103, + 130, + 83, + 170, + 80, + 65, + 214, + 88, + 73, + 45, + 120, + 249, + 238, + 144, + 84, + 133, + 88, + 24, + 173, + 130, + 20, + 109, + 181, + 200, + 93, + 180, + 179, + 233, + 191, + 94, + 248, + 120, + 240, + 115, + 26, + 250, + 203, + 219, + 52, + 64, + 191, + 62, + 164, + 110, + 185, + 253, + 178, + 123, + 7, + 246, + 177, + 89, + 250, + 152, + 243, + 239, + 90, + 253, + 12, + 61, + 63, + 250, + 120, + 47, + 77, + 83, + 142, + 234, + 180, + 97, + 240, + 221, + 193, + 47, + 173, + 204, + 166, + 157, + 87, + 208, + 7, + 239, + 56, + 243, + 138, + 39, + 193, + 230, + 4, + 9, + 97, + 107, + 132, + 63, + 144, + 40, + 29, + 230, + 86, + 134, + 20, + 106, + 198, + 155, + 227, + 35, + 226, + 110, + 124, + 89, + 252, + 39, + 250, + 79, + 141, + 103, + 12, + 57, + 97, + 52, + 24, + 61, + 241, + 254, + 56, + 31, + 135, + 203, + 234, + 38, + 210, + 249, + 10, + 217, + 224, + 116, + 51, + 165, + 210, + 48, + 203, + 133, + 130, + 60, + 39, + 18, + 117, + 67, + 136, + 134, + 138, + 65, + 188, + 134, + 65, + 151, + 247, + 203, + 70, + 240, + 98, + 70, + 241, + 242, + 69, + 179, + 60, + 225, + 216, + 3, + 20, + 249, + 33, + 91, + 79, + 29, + 147, + 71, + 158, + 72, + 46, + 149, + 206, + 175, + 39, + 52, + 238, + 194, + 238, + 141, + 187, + 70, + 128, + 117, + 250, + 161, + 86, + 3, + 134, + 89, + 213, + 176, + 159, + 73, + 147, + 31, + 108, + 125, + 225, + 231, + 170, + 66, + 126, + 174, + 10, + 188, + 120, + 156, + 124, + 136, + 78, + 8, + 196, + 171, + 59, + 208, + 43, + 127, + 60, + 22, + 127, + 137, + 238, + 36, + 85, + 228, + 24, + 85, + 73, + 41, + 34, + 27, + 90, + 11, + 136, + 205, + 218, + 173, + 118, + 220, + 117, + 135, + 115, + 135, + 11, + 94, + 112, + 6, + 149, + 237, + 109, + 182, + 199, + 20, + 15, + 89, + 182, + 168, + 72, + 162, + 44, + 50, + 209, + 82, + 156, + 36, + 177, + 69, + 51, + 73, + 115, + 52, + 215, + 184, + 118, + 45, + 205, + 117, + 23, + 200, + 242, + 22, + 187, + 166, + 181, + 5, + 42, + 18, + 71, + 181, + 140, + 140, + 74, + 168, + 166, + 195, + 80, + 194, + 188, + 101, + 195, + 134, + 96, + 226, + 214, + 149, + 231, + 204, + 79, + 142, + 25, + 121, + 238, + 132, + 61, + 123, + 184, + 31, + 223, + 219, + 189, + 52, + 63, + 233, + 2, + 231, + 103, + 234, + 164, + 174, + 75, + 239, + 253, + 122, + 17, + 97, + 100, + 252, + 224, + 44, + 238, + 19, + 126, + 28, + 169, + 36, + 141, + 244, + 55, + 110, + 151, + 166, + 9, + 161, + 38, + 45, + 27, + 58, + 71, + 155, + 24, + 18, + 149, + 138, + 120, + 69, + 147, + 86, + 23, + 106, + 170, + 105, + 211, + 70, + 133, + 206, + 214, + 38, + 133, + 206, + 151, + 230, + 104, + 87, + 104, + 95, + 169, + 255, + 8, + 7, + 134, + 215, + 52, + 213, + 143, + 171, + 25, + 87, + 127, + 78, + 253, + 250, + 166, + 141, + 77, + 210, + 168, + 170, + 81, + 195, + 58, + 154, + 38, + 105, + 147, + 170, + 38, + 14, + 59, + 175, + 234, + 188, + 97, + 139, + 165, + 203, + 170, + 46, + 27, + 214, + 213, + 180, + 166, + 105, + 95, + 253, + 161, + 170, + 255, + 170, + 249, + 188, + 222, + 142, + 70, + 196, + 112, + 31, + 219, + 220, + 219, + 144, + 10, + 74, + 104, + 138, + 173, + 12, + 25, + 129, + 134, + 120, + 13, + 233, + 39, + 123, + 137, + 68, + 250, + 216, + 77, + 174, + 37, + 164, + 82, + 166, + 58, + 177, + 58, + 165, + 171, + 145, + 112, + 75, + 182, + 165, + 188, + 109, + 0, + 64, + 225, + 126, + 255, + 128, + 122, + 132, + 51, + 179, + 177, + 216, + 222, + 40, + 181, + 162, + 110, + 180, + 43, + 186, + 38, + 202, + 55, + 185, + 154, + 206, + 58, + 155, + 80, + 27, + 71, + 81, + 27, + 71, + 135, + 180, + 113, + 20, + 181, + 113, + 52, + 130, + 199, + 16, + 44, + 197, + 4, + 168, + 131, + 113, + 71, + 73, + 27, + 71, + 61, + 234, + 30, + 78, + 60, + 216, + 1, + 38, + 238, + 21, + 40, + 57, + 43, + 76, + 154, + 37, + 213, + 105, + 20, + 166, + 52, + 10, + 83, + 26, + 133, + 41, + 93, + 251, + 178, + 185, + 199, + 124, + 207, + 44, + 154, + 124, + 218, + 236, + 48, + 103, + 152, + 156, + 137, + 207, + 155, + 168, + 171, + 77, + 220, + 163, + 102, + 2, + 100, + 197, + 172, + 134, + 111, + 55, + 83, + 240, + 205, + 94, + 125, + 53, + 60, + 47, + 118, + 154, + 241, + 92, + 211, + 138, + 42, + 80, + 207, + 185, + 233, + 39, + 182, + 105, + 183, + 159, + 94, + 57, + 225, + 254, + 149, + 84, + 52, + 110, + 223, + 99, + 80, + 181, + 124, + 208, + 47, + 92, + 62, + 232, + 33, + 213, + 221, + 164, + 208, + 29, + 133, + 146, + 26, + 140, + 37, + 32, + 153, + 14, + 185, + 116, + 16, + 139, + 214, + 18, + 93, + 56, + 88, + 166, + 170, + 23, + 109, + 210, + 70, + 158, + 185, + 226, + 166, + 59, + 99, + 1, + 186, + 178, + 231, + 207, + 71, + 174, + 254, + 221, + 247, + 95, + 250, + 222, + 147, + 11, + 255, + 188, + 241, + 223, + 62, + 121, + 228, + 201, + 155, + 86, + 63, + 253, + 252, + 247, + 86, + 61, + 61, + 39, + 49, + 43, + 59, + 114, + 193, + 188, + 209, + 61, + 247, + 208, + 246, + 253, + 15, + 83, + 122, + 239, + 195, + 107, + 190, + 94, + 242, + 207, + 61, + 171, + 126, + 193, + 53, + 254, + 174, + 255, + 229, + 55, + 127, + 253, + 234, + 175, + 97, + 215, + 174, + 35, + 132, + 131, + 154, + 155, + 16, + 125, + 240, + 5, + 18, + 41, + 246, + 111, + 13, + 71, + 129, + 219, + 122, + 0, + 226, + 77, + 177, + 51, + 203, + 183, + 114, + 19, + 185, + 157, + 6, + 48, + 190, + 14, + 184, + 225, + 104, + 60, + 31, + 149, + 109, + 221, + 14, + 113, + 2, + 37, + 102, + 74, + 144, + 66, + 154, + 170, + 151, + 108, + 174, + 94, + 90, + 110, + 44, + 221, + 107, + 68, + 32, + 40, + 171, + 184, + 45, + 163, + 242, + 69, + 133, + 246, + 43, + 52, + 130, + 6, + 55, + 226, + 98, + 97, + 84, + 3, + 142, + 33, + 88, + 88, + 5, + 34, + 88, + 27, + 75, + 164, + 208, + 155, + 87, + 18, + 240, + 58, + 100, + 119, + 227, + 66, + 43, + 33, + 88, + 104, + 204, + 148, + 105, + 112, + 78, + 80, + 84, + 133, + 191, + 31, + 219, + 142, + 52, + 202, + 233, + 152, + 226, + 24, + 150, + 31, + 149, + 239, + 137, + 28, + 137, + 176, + 101, + 145, + 141, + 145, + 158, + 72, + 49, + 194, + 71, + 88, + 8, + 151, + 58, + 132, + 75, + 26, + 194, + 197, + 15, + 101, + 61, + 94, + 153, + 213, + 50, + 42, + 127, + 4, + 186, + 156, + 100, + 8, + 180, + 26, + 226, + 145, + 2, + 227, + 67, + 51, + 95, + 185, + 81, + 212, + 22, + 94, + 104, + 33, + 195, + 201, + 12, + 177, + 203, + 190, + 242, + 226, + 0, + 194, + 80, + 61, + 48, + 12, + 59, + 166, + 135, + 39, + 207, + 44, + 163, + 202, + 128, + 121, + 46, + 213, + 22, + 116, + 15, + 213, + 18, + 150, + 142, + 248, + 57, + 110, + 47, + 6, + 0, + 4, + 7, + 245, + 68, + 64, + 12, + 72, + 217, + 128, + 168, + 39, + 169, + 33, + 155, + 73, + 74, + 0, + 120, + 89, + 75, + 114, + 133, + 156, + 87, + 130, + 128, + 25, + 181, + 176, + 93, + 99, + 227, + 210, + 139, + 97, + 123, + 93, + 239, + 205, + 253, + 43, + 127, + 57, + 181, + 247, + 186, + 165, + 51, + 191, + 223, + 46, + 236, + 28, + 248, + 226, + 129, + 194, + 19, + 63, + 29, + 184, + 152, + 61, + 186, + 238, + 198, + 217, + 247, + 221, + 52, + 240, + 34, + 97, + 228, + 78, + 66, + 104, + 59, + 212, + 37, + 16, + 137, + 62, + 229, + 198, + 153, + 122, + 2, + 92, + 246, + 75, + 133, + 113, + 132, + 216, + 166, + 4, + 54, + 120, + 19, + 161, + 52, + 225, + 49, + 66, + 66, + 52, + 218, + 107, + 133, + 128, + 163, + 136, + 163, + 132, + 35, + 237, + 43, + 14, + 148, + 92, + 105, + 111, + 34, + 148, + 38, + 60, + 224, + 221, + 21, + 8, + 92, + 99, + 160, + 198, + 225, + 40, + 226, + 40, + 225, + 136, + 223, + 236, + 163, + 135, + 222, + 68, + 40, + 77, + 240, + 155, + 199, + 98, + 86, + 116, + 20, + 92, + 254, + 25, + 202, + 122, + 101, + 163, + 210, + 163, + 244, + 43, + 239, + 41, + 71, + 20, + 137, + 40, + 105, + 101, + 153, + 178, + 70, + 217, + 224, + 63, + 117, + 64, + 41, + 42, + 106, + 90, + 161, + 132, + 74, + 60, + 227, + 20, + 17, + 136, + 120, + 238, + 41, + 248, + 173, + 55, + 83, + 34, + 10, + 34, + 175, + 138, + 82, + 86, + 32, + 252, + 6, + 126, + 35, + 223, + 195, + 247, + 243, + 7, + 120, + 177, + 159, + 63, + 194, + 51, + 194, + 103, + 248, + 189, + 252, + 1, + 158, + 135, + 18, + 108, + 92, + 126, + 126, + 104, + 249, + 121, + 92, + 126, + 94, + 133, + 239, + 231, + 209, + 80, + 240, + 37, + 67, + 193, + 151, + 210, + 119, + 120, + 158, + 42, + 136, + 2, + 63, + 93, + 254, + 166, + 16, + 44, + 199, + 38, + 70, + 176, + 212, + 185, + 242, + 254, + 69, + 133, + 229, + 229, + 57, + 212, + 147, + 127, + 176, + 136, + 222, + 110, + 177, + 239, + 236, + 237, + 237, + 229, + 63, + 221, + 179, + 231, + 120, + 152, + 175, + 59, + 190, + 143, + 16, + 86, + 124, + 108, + 112, + 22, + 29, + 139, + 171, + 233, + 208, + 211, + 220, + 229, + 94, + 122, + 192, + 203, + 38, + 233, + 94, + 154, + 13, + 199, + 64, + 89, + 170, + 192, + 11, + 134, + 117, + 28, + 13, + 239, + 121, + 47, + 48, + 198, + 81, + 199, + 209, + 192, + 145, + 23, + 178, + 194, + 105, + 124, + 139, + 112, + 135, + 32, + 68, + 101, + 65, + 144, + 120, + 158, + 241, + 66, + 144, + 80, + 67, + 99, + 92, + 72, + 231, + 109, + 65, + 147, + 240, + 146, + 214, + 149, + 46, + 169, + 38, + 74, + 41, + 219, + 92, + 31, + 162, + 161, + 104, + 52, + 161, + 235, + 70, + 86, + 85, + 215, + 107, + 52, + 173, + 117, + 104, + 51, + 52, + 14, + 8, + 214, + 238, + 104, + 184, + 132, + 62, + 225, + 26, + 3, + 107, + 184, + 225, + 28, + 235, + 212, + 42, + 49, + 218, + 215, + 225, + 42, + 106, + 50, + 198, + 249, + 168, + 75, + 181, + 120, + 48, + 244, + 124, + 213, + 228, + 111, + 106, + 81, + 136, + 165, + 219, + 167, + 91, + 128, + 200, + 119, + 147, + 142, + 105, + 16, + 58, + 67, + 226, + 222, + 163, + 35, + 121, + 64, + 124, + 75, + 203, + 58, + 75, + 246, + 202, + 26, + 3, + 178, + 101, + 214, + 201, + 150, + 154, + 164, + 74, + 64, + 74, + 18, + 111, + 19, + 125, + 131, + 40, + 2, + 87, + 152, + 142, + 70, + 53, + 10, + 201, + 64, + 232, + 242, + 112, + 71, + 239, + 224, + 21, + 213, + 163, + 210, + 163, + 71, + 245, + 182, + 156, + 241, + 208, + 20, + 254, + 227, + 223, + 253, + 238, + 203, + 27, + 31, + 9, + 76, + 121, + 128, + 159, + 127, + 124, + 227, + 174, + 105, + 11, + 64, + 71, + 222, + 73, + 8, + 247, + 79, + 172, + 194, + 120, + 117, + 187, + 119, + 209, + 135, + 18, + 248, + 67, + 213, + 38, + 60, + 184, + 21, + 167, + 226, + 198, + 42, + 235, + 23, + 83, + 234, + 29, + 131, + 238, + 156, + 120, + 190, + 56, + 79, + 225, + 76, + 227, + 239, + 194, + 49, + 145, + 83, + 74, + 149, + 211, + 30, + 223, + 200, + 239, + 181, + 227, + 149, + 137, + 226, + 4, + 89, + 184, + 200, + 87, + 234, + 228, + 174, + 87, + 153, + 35, + 102, + 130, + 8, + 104, + 31, + 217, + 234, + 212, + 3, + 192, + 125, + 164, + 215, + 169, + 207, + 59, + 2, + 62, + 81, + 133, + 79, + 184, + 183, + 57, + 245, + 121, + 145, + 231, + 5, + 94, + 28, + 173, + 76, + 230, + 133, + 172, + 120, + 138, + 58, + 71, + 189, + 158, + 187, + 78, + 221, + 199, + 189, + 47, + 74, + 79, + 138, + 180, + 70, + 172, + 147, + 178, + 114, + 155, + 56, + 70, + 233, + 48, + 102, + 24, + 115, + 249, + 185, + 226, + 28, + 105, + 174, + 114, + 19, + 127, + 131, + 240, + 136, + 242, + 170, + 248, + 123, + 254, + 29, + 241, + 160, + 248, + 177, + 244, + 63, + 226, + 151, + 114, + 216, + 81, + 85, + 129, + 227, + 120, + 6, + 37, + 31, + 138, + 172, + 170, + 130, + 34, + 203, + 89, + 175, + 208, + 131, + 227, + 249, + 172, + 87, + 252, + 161, + 42, + 34, + 199, + 67, + 122, + 144, + 23, + 32, + 229, + 163, + 105, + 68, + 229, + 251, + 168, + 233, + 42, + 2, + 143, + 80, + 108, + 181, + 12, + 191, + 77, + 204, + 96, + 44, + 140, + 24, + 158, + 148, + 88, + 111, + 80, + 195, + 175, + 243, + 64, + 233, + 211, + 188, + 190, + 43, + 89, + 226, + 9, + 181, + 39, + 164, + 158, + 8, + 179, + 44, + 165, + 235, + 9, + 237, + 32, + 51, + 8, + 131, + 156, + 185, + 123, + 42, + 42, + 102, + 20, + 43, + 226, + 149, + 35, + 225, + 254, + 4, + 68, + 72, + 236, + 36, + 24, + 96, + 19, + 140, + 244, + 73, + 92, + 55, + 254, + 90, + 53, + 121, + 81, + 185, + 64, + 161, + 60, + 249, + 206, + 26, + 208, + 32, + 186, + 143, + 1, + 13, + 226, + 104, + 238, + 240, + 80, + 182, + 167, + 163, + 29, + 72, + 70, + 130, + 215, + 175, + 6, + 11, + 66, + 160, + 50, + 68, + 178, + 228, + 118, + 185, + 157, + 195, + 209, + 207, + 149, + 25, + 83, + 21, + 154, + 86, + 110, + 227, + 152, + 18, + 51, + 128, + 21, + 92, + 232, + 134, + 188, + 12, + 18, + 144, + 148, + 166, + 138, + 54, + 69, + 174, + 168, + 104, + 135, + 138, + 142, + 45, + 21, + 80, + 216, + 241, + 214, + 150, + 12, + 62, + 108, + 174, + 242, + 59, + 216, + 32, + 165, + 187, + 155, + 248, + 55, + 22, + 16, + 139, + 253, + 91, + 170, + 144, + 61, + 188, + 37, + 2, + 15, + 239, + 110, + 177, + 176, + 28, + 100, + 139, + 229, + 253, + 166, + 227, + 195, + 102, + 173, + 68, + 9, + 135, + 32, + 31, + 190, + 202, + 217, + 207, + 83, + 57, + 20, + 105, + 83, + 228, + 80, + 168, + 29, + 7, + 160, + 118, + 109, + 137, + 193, + 155, + 63, + 219, + 156, + 244, + 94, + 78, + 11, + 115, + 61, + 100, + 243, + 4, + 121, + 195, + 99, + 17, + 3, + 142, + 79, + 107, + 168, + 100, + 223, + 217, + 75, + 159, + 253, + 120, + 112, + 9, + 125, + 249, + 221, + 193, + 71, + 111, + 17, + 118, + 126, + 253, + 18, + 237, + 25, + 92, + 57, + 176, + 128, + 165, + 191, + 55, + 8, + 157, + 200, + 110, + 37, + 132, + 142, + 198, + 250, + 182, + 105, + 174, + 81, + 110, + 69, + 78, + 178, + 28, + 126, + 77, + 91, + 153, + 157, + 56, + 201, + 54, + 0, + 200, + 125, + 178, + 37, + 56, + 73, + 251, + 123, + 217, + 111, + 1, + 117, + 61, + 214, + 176, + 141, + 30, + 227, + 213, + 178, + 229, + 91, + 189, + 199, + 17, + 167, + 122, + 143, + 94, + 167, + 185, + 126, + 55, + 27, + 142, + 230, + 77, + 33, + 45, + 108, + 16, + 222, + 19, + 248, + 25, + 194, + 123, + 194, + 17, + 129, + 75, + 11, + 203, + 132, + 53, + 66, + 81, + 224, + 41, + 129, + 174, + 108, + 158, + 161, + 135, + 79, + 66, + 131, + 31, + 110, + 105, + 205, + 111, + 32, + 180, + 159, + 28, + 129, + 219, + 189, + 156, + 176, + 250, + 158, + 218, + 71, + 203, + 94, + 81, + 102, + 245, + 61, + 177, + 242, + 226, + 3, + 217, + 15, + 14, + 74, + 148, + 141, + 98, + 177, + 68, + 226, + 240, + 149, + 63, + 153, + 206, + 159, + 172, + 252, + 65, + 251, + 3, + 4, + 237, + 215, + 191, + 225, + 111, + 223, + 252, + 129, + 37, + 184, + 181, + 23, + 75, + 225, + 60, + 47, + 76, + 172, + 227, + 199, + 145, + 26, + 246, + 183, + 23, + 72, + 208, + 87, + 41, + 86, + 25, + 43, + 216, + 155, + 216, + 165, + 73, + 69, + 233, + 242, + 165, + 74, + 147, + 100, + 105, + 146, + 40, + 77, + 240, + 53, + 112, + 221, + 83, + 165, + 9, + 190, + 198, + 39, + 158, + 122, + 19, + 189, + 68, + 95, + 48, + 74, + 147, + 64, + 105, + 98, + 150, + 38, + 193, + 146, + 247, + 142, + 231, + 51, + 68, + 87, + 70, + 188, + 163, + 52, + 9, + 150, + 156, + 64, + 171, + 52, + 113, + 74, + 19, + 31, + 38, + 193, + 175, + 240, + 120, + 171, + 114, + 105, + 2, + 105, + 58, + 119, + 154, + 102, + 228, + 179, + 252, + 65, + 254, + 160, + 242, + 215, + 232, + 7, + 25, + 225, + 109, + 225, + 88, + 134, + 69, + 229, + 76, + 141, + 18, + 75, + 102, + 20, + 142, + 171, + 169, + 76, + 137, + 97, + 112, + 187, + 37, + 42, + 214, + 36, + 226, + 150, + 186, + 55, + 75, + 215, + 103, + 55, + 102, + 89, + 54, + 26, + 77, + 4, + 178, + 235, + 109, + 106, + 243, + 8, + 222, + 32, + 109, + 214, + 198, + 108, + 8, + 130, + 55, + 33, + 88, + 72, + 219, + 239, + 201, + 196, + 58, + 109, + 134, + 16, + 14, + 154, + 30, + 27, + 243, + 32, + 118, + 137, + 246, + 92, + 6, + 228, + 208, + 130, + 91, + 25, + 147, + 203, + 200, + 143, + 40, + 172, + 177, + 236, + 250, + 36, + 77, + 226, + 23, + 36, + 135, + 190, + 32, + 137, + 95, + 144, + 4, + 16, + 209, + 134, + 47, + 72, + 162, + 143, + 152, + 68, + 172, + 47, + 9, + 202, + 10, + 157, + 213, + 164, + 14, + 95, + 229, + 95, + 120, + 152, + 208, + 130, + 219, + 64, + 88, + 75, + 13, + 126, + 124, + 13, + 42, + 187, + 26, + 84, + 118, + 53, + 89, + 186, + 151, + 80, + 0, + 54, + 89, + 154, + 128, + 202, + 227, + 80, + 229, + 85, + 124, + 75, + 229, + 161, + 37, + 37, + 17, + 223, + 35, + 253, + 186, + 20, + 187, + 30, + 117, + 67, + 232, + 154, + 122, + 34, + 137, + 222, + 59, + 137, + 215, + 102, + 251, + 232, + 170, + 173, + 223, + 180, + 172, + 30, + 78, + 141, + 161, + 72, + 25, + 122, + 141, + 68, + 154, + 114, + 48, + 123, + 0, + 115, + 225, + 221, + 203, + 189, + 114, + 185, + 14, + 236, + 31, + 9, + 116, + 224, + 178, + 82, + 232, + 128, + 30, + 10, + 214, + 133, + 116, + 59, + 73, + 29, + 35, + 92, + 114, + 92, + 169, + 143, + 56, + 252, + 111, + 110, + 14, + 116, + 233, + 66, + 150, + 88, + 20, + 219, + 183, + 161, + 95, + 139, + 161, + 111, + 185, + 135, + 251, + 232, + 200, + 39, + 151, + 172, + 124, + 40, + 125, + 243, + 235, + 63, + 127, + 118, + 107, + 205, + 252, + 113, + 203, + 254, + 79, + 239, + 156, + 5, + 231, + 172, + 29, + 203, + 215, + 61, + 56, + 253, + 226, + 75, + 231, + 236, + 220, + 180, + 125, + 160, + 158, + 253, + 236, + 202, + 139, + 199, + 62, + 248, + 196, + 192, + 67, + 108, + 203, + 170, + 85, + 51, + 127, + 252, + 131, + 129, + 63, + 249, + 241, + 204, + 135, + 252, + 56, + 18, + 161, + 155, + 221, + 160, + 192, + 137, + 65, + 246, + 180, + 213, + 103, + 189, + 207, + 125, + 20, + 60, + 194, + 29, + 11, + 138, + 60, + 216, + 201, + 106, + 205, + 200, + 223, + 96, + 209, + 135, + 173, + 189, + 177, + 3, + 177, + 98, + 140, + 207, + 200, + 161, + 64, + 40, + 226, + 164, + 4, + 137, + 138, + 17, + 67, + 133, + 59, + 217, + 150, + 132, + 54, + 80, + 218, + 113, + 152, + 227, + 75, + 227, + 14, + 169, + 141, + 97, + 12, + 19, + 195, + 120, + 70, + 195, + 72, + 70, + 195, + 72, + 70, + 27, + 138, + 100, + 52, + 84, + 35, + 90, + 53, + 190, + 194, + 239, + 217, + 35, + 118, + 106, + 24, + 201, + 104, + 152, + 199, + 70, + 183, + 7, + 35, + 25, + 72, + 135, + 0, + 127, + 80, + 236, + 212, + 48, + 88, + 210, + 104, + 81, + 163, + 218, + 244, + 24, + 168, + 173, + 38, + 136, + 106, + 98, + 71, + 98, + 108, + 89, + 108, + 99, + 172, + 39, + 214, + 31, + 227, + 99, + 28, + 107, + 9, + 71, + 80, + 110, + 34, + 40, + 67, + 17, + 148, + 158, + 8, + 234, + 187, + 99, + 189, + 182, + 237, + 23, + 230, + 125, + 103, + 48, + 163, + 126, + 35, + 152, + 177, + 203, + 130, + 25, + 47, + 135, + 130, + 92, + 198, + 111, + 6, + 71, + 211, + 163, + 214, + 177, + 114, + 234, + 159, + 23, + 222, + 28, + 197, + 0, + 231, + 164, + 3, + 67, + 149, + 175, + 88, + 80, + 211, + 113, + 248, + 68, + 132, + 19, + 17, + 109, + 69, + 149, + 85, + 73, + 229, + 68, + 171, + 206, + 22, + 3, + 73, + 106, + 170, + 142, + 47, + 48, + 80, + 245, + 222, + 13, + 70, + 20, + 5, + 195, + 79, + 176, + 149, + 73, + 197, + 186, + 199, + 174, + 219, + 223, + 245, + 232, + 76, + 75, + 237, + 109, + 92, + 122, + 214, + 181, + 79, + 241, + 117, + 15, + 109, + 154, + 184, + 108, + 218, + 200, + 155, + 6, + 174, + 101, + 119, + 92, + 125, + 213, + 25, + 15, + 188, + 57, + 128, + 157, + 59, + 38, + 20, + 15, + 241, + 245, + 252, + 56, + 98, + 144, + 56, + 125, + 121, + 123, + 56, + 230, + 83, + 228, + 161, + 239, + 154, + 8, + 218, + 236, + 144, + 187, + 16, + 102, + 113, + 60, + 224, + 72, + 106, + 92, + 159, + 44, + 158, + 37, + 159, + 47, + 206, + 149, + 47, + 23, + 23, + 203, + 114, + 222, + 26, + 235, + 140, + 141, + 180, + 198, + 38, + 90, + 83, + 157, + 169, + 145, + 137, + 177, + 249, + 194, + 124, + 229, + 92, + 171, + 224, + 20, + 34, + 231, + 198, + 174, + 18, + 174, + 82, + 22, + 88, + 87, + 57, + 87, + 69, + 22, + 196, + 174, + 167, + 97, + 69, + 20, + 140, + 11, + 185, + 243, + 132, + 243, + 212, + 11, + 245, + 43, + 185, + 133, + 194, + 66, + 245, + 74, + 93, + 141, + 166, + 120, + 201, + 78, + 105, + 90, + 57, + 139, + 206, + 195, + 160, + 67, + 16, + 186, + 6, + 49, + 20, + 173, + 77, + 34, + 194, + 145, + 68, + 209, + 129, + 98, + 24, + 15, + 225, + 144, + 16, + 105, + 246, + 115, + 41, + 165, + 164, + 24, + 78, + 252, + 18, + 153, + 35, + 8, + 76, + 249, + 101, + 52, + 56, + 233, + 119, + 3, + 181, + 217, + 252, + 8, + 137, + 18, + 201, + 146, + 50, + 80, + 70, + 91, + 60, + 234, + 49, + 73, + 165, + 83, + 223, + 75, + 210, + 36, + 188, + 226, + 42, + 0, + 41, + 147, + 52, + 9, + 217, + 143, + 82, + 112, + 16, + 240, + 2, + 133, + 90, + 184, + 97, + 47, + 120, + 78, + 168, + 88, + 48, + 149, + 67, + 82, + 40, + 29, + 8, + 67, + 250, + 250, + 3, + 181, + 37, + 193, + 162, + 104, + 226, + 214, + 102, + 243, + 160, + 152, + 24, + 112, + 22, + 176, + 20, + 71, + 47, + 117, + 154, + 34, + 167, + 38, + 0, + 168, + 68, + 3, + 120, + 194, + 223, + 70, + 87, + 171, + 59, + 87, + 56, + 150, + 43, + 148, + 57, + 225, + 229, + 245, + 56, + 128, + 72, + 35, + 7, + 97, + 182, + 48, + 91, + 185, + 84, + 184, + 84, + 225, + 193, + 93, + 65, + 63, + 221, + 26, + 237, + 245, + 97, + 67, + 196, + 178, + 28, + 248, + 152, + 240, + 196, + 93, + 191, + 249, + 51, + 141, + 220, + 248, + 233, + 61, + 239, + 13, + 30, + 126, + 97, + 203, + 186, + 59, + 182, + 108, + 189, + 125, + 221, + 22, + 22, + 164, + 245, + 247, + 173, + 28, + 252, + 235, + 192, + 238, + 79, + 255, + 133, + 86, + 82, + 227, + 205, + 55, + 222, + 252, + 221, + 111, + 222, + 120, + 157, + 48, + 178, + 110, + 112, + 49, + 95, + 197, + 143, + 35, + 14, + 169, + 164, + 63, + 114, + 87, + 232, + 214, + 41, + 214, + 233, + 214, + 84, + 139, + 239, + 200, + 244, + 100, + 88, + 58, + 51, + 76, + 175, + 169, + 24, + 25, + 30, + 89, + 49, + 190, + 98, + 89, + 102, + 125, + 70, + 30, + 27, + 29, + 155, + 60, + 59, + 122, + 118, + 114, + 174, + 124, + 161, + 62, + 63, + 58, + 63, + 185, + 68, + 94, + 170, + 47, + 182, + 174, + 138, + 46, + 77, + 246, + 103, + 254, + 16, + 218, + 31, + 219, + 159, + 248, + 67, + 229, + 193, + 208, + 193, + 202, + 3, + 153, + 98, + 38, + 82, + 195, + 231, + 172, + 92, + 184, + 149, + 31, + 107, + 77, + 226, + 207, + 182, + 230, + 89, + 31, + 104, + 159, + 86, + 12, + 90, + 154, + 29, + 224, + 34, + 41, + 72, + 148, + 138, + 145, + 84, + 64, + 35, + 129, + 120, + 73, + 32, + 226, + 37, + 129, + 136, + 251, + 69, + 158, + 227, + 59, + 227, + 181, + 123, + 85, + 106, + 169, + 174, + 218, + 165, + 174, + 81, + 249, + 12, + 138, + 69, + 6, + 69, + 4, + 90, + 53, + 122, + 28, + 17, + 53, + 86, + 226, + 70, + 150, + 34, + 133, + 161, + 234, + 79, + 47, + 105, + 170, + 130, + 108, + 183, + 34, + 79, + 114, + 5, + 13, + 182, + 176, + 22, + 63, + 9, + 225, + 165, + 31, + 188, + 84, + 68, + 150, + 144, + 239, + 206, + 134, + 150, + 146, + 160, + 86, + 89, + 18, + 212, + 58, + 41, + 9, + 122, + 236, + 155, + 73, + 80, + 36, + 88, + 80, + 199, + 75, + 130, + 166, + 39, + 143, + 142, + 209, + 147, + 178, + 160, + 67, + 73, + 208, + 220, + 209, + 131, + 223, + 206, + 127, + 122, + 53, + 37, + 109, + 229, + 233, + 207, + 96, + 201, + 30, + 68, + 194, + 33, + 6, + 64, + 87, + 189, + 205, + 149, + 173, + 248, + 186, + 39, + 198, + 62, + 112, + 197, + 157, + 123, + 151, + 92, + 247, + 222, + 141, + 243, + 238, + 31, + 110, + 63, + 185, + 114, + 213, + 47, + 158, + 90, + 113, + 237, + 230, + 193, + 197, + 194, + 175, + 238, + 158, + 53, + 235, + 222, + 226, + 195, + 143, + 15, + 30, + 191, + 231, + 156, + 177, + 3, + 199, + 185, + 39, + 118, + 239, + 122, + 227, + 237, + 55, + 94, + 255, + 35, + 104, + 131, + 179, + 6, + 23, + 115, + 7, + 248, + 113, + 196, + 34, + 41, + 186, + 202, + 189, + 82, + 99, + 57, + 214, + 24, + 59, + 141, + 77, + 101, + 55, + 232, + 98, + 71, + 184, + 35, + 62, + 53, + 190, + 190, + 114, + 99, + 165, + 144, + 15, + 230, + 147, + 29, + 149, + 19, + 130, + 19, + 146, + 179, + 131, + 179, + 147, + 151, + 5, + 47, + 75, + 118, + 85, + 174, + 169, + 124, + 75, + 124, + 219, + 249, + 80, + 252, + 88, + 255, + 36, + 102, + 13, + 99, + 213, + 122, + 46, + 220, + 198, + 90, + 245, + 41, + 108, + 146, + 62, + 143, + 45, + 102, + 127, + 210, + 255, + 28, + 123, + 63, + 242, + 113, + 252, + 195, + 228, + 215, + 204, + 164, + 188, + 17, + 74, + 164, + 52, + 41, + 32, + 134, + 82, + 188, + 70, + 2, + 209, + 64, + 11, + 18, + 127, + 125, + 199, + 120, + 40, + 211, + 232, + 195, + 158, + 4, + 146, + 80, + 38, + 181, + 76, + 215, + 236, + 50, + 215, + 152, + 124, + 37, + 194, + 158, + 149, + 184, + 226, + 38, + 194, + 158, + 200, + 7, + 68, + 165, + 96, + 34, + 236, + 105, + 34, + 236, + 9, + 206, + 152, + 7, + 90, + 155, + 17, + 88, + 13, + 80, + 103, + 168, + 9, + 240, + 229, + 5, + 212, + 112, + 43, + 108, + 92, + 118, + 27, + 23, + 220, + 198, + 197, + 183, + 107, + 191, + 149, + 111, + 42, + 207, + 63, + 214, + 162, + 190, + 65, + 124, + 83, + 66, + 124, + 83, + 194, + 173, + 46, + 97, + 106, + 83, + 138, + 87, + 84, + 126, + 19, + 217, + 244, + 129, + 205, + 129, + 111, + 99, + 154, + 71, + 219, + 191, + 189, + 180, + 164, + 155, + 218, + 126, + 34, + 18, + 241, + 237, + 214, + 111, + 100, + 155, + 154, + 26, + 31, + 234, + 252, + 213, + 224, + 231, + 215, + 252, + 225, + 230, + 223, + 116, + 63, + 54, + 80, + 245, + 220, + 170, + 107, + 159, + 220, + 180, + 242, + 186, + 199, + 7, + 23, + 51, + 249, + 180, + 233, + 116, + 56, + 149, + 54, + 14, + 222, + 250, + 228, + 125, + 95, + 157, + 201, + 61, + 191, + 123, + 247, + 175, + 255, + 227, + 173, + 119, + 254, + 3, + 60, + 229, + 219, + 9, + 97, + 175, + 242, + 227, + 136, + 77, + 222, + 117, + 167, + 53, + 7, + 169, + 197, + 211, + 26, + 62, + 207, + 159, + 201, + 207, + 230, + 23, + 241, + 43, + 120, + 81, + 177, + 101, + 69, + 86, + 140, + 160, + 173, + 24, + 132, + 147, + 169, + 134, + 27, + 145, + 168, + 74, + 195, + 122, + 153, + 202, + 213, + 153, + 32, + 13, + 178, + 106, + 255, + 226, + 148, + 95, + 174, + 255, + 29, + 23, + 28, + 138, + 16, + 254, + 233, + 218, + 101, + 166, + 84, + 68, + 101, + 121, + 146, + 255, + 229, + 65, + 131, + 98, + 89, + 20, + 58, + 221, + 153, + 188, + 235, + 187, + 160, + 193, + 131, + 86, + 225, + 232, + 114, + 232, + 183, + 3, + 215, + 11, + 216, + 132, + 8, + 104, + 16, + 235, + 181, + 117, + 1, + 172, + 41, + 46, + 44, + 135, + 22, + 75, + 222, + 174, + 240, + 210, + 2, + 146, + 24, + 182, + 111, + 127, + 108, + 220, + 226, + 142, + 11, + 47, + 26, + 55, + 126, + 252, + 105, + 23, + 133, + 42, + 249, + 186, + 71, + 187, + 207, + 26, + 251, + 84, + 253, + 228, + 142, + 174, + 229, + 3, + 111, + 17, + 74, + 58, + 138, + 135, + 184, + 205, + 252, + 56, + 50, + 130, + 219, + 236, + 6, + 189, + 196, + 137, + 231, + 196, + 198, + 113, + 108, + 40, + 73, + 99, + 125, + 105, + 2, + 212, + 158, + 82, + 51, + 54, + 111, + 130, + 156, + 33, + 116, + 70, + 75, + 147, + 234, + 210, + 164, + 170, + 52, + 201, + 192, + 159, + 122, + 11, + 98, + 124, + 213, + 161, + 234, + 177, + 202, + 217, + 202, + 132, + 218, + 243, + 171, + 23, + 86, + 175, + 86, + 238, + 83, + 110, + 171, + 125, + 50, + 248, + 139, + 166, + 87, + 56, + 67, + 137, + 38, + 98, + 209, + 17, + 83, + 155, + 222, + 137, + 10, + 73, + 214, + 201, + 152, + 53, + 146, + 170, + 177, + 249, + 242, + 124, + 101, + 190, + 58, + 95, + 155, + 175, + 207, + 55, + 150, + 200, + 75, + 148, + 37, + 234, + 18, + 109, + 137, + 190, + 196, + 232, + 173, + 235, + 173, + 55, + 161, + 124, + 160, + 118, + 216, + 168, + 218, + 121, + 234, + 92, + 109, + 65, + 221, + 130, + 134, + 21, + 53, + 43, + 106, + 215, + 212, + 254, + 80, + 253, + 169, + 254, + 64, + 195, + 67, + 77, + 15, + 142, + 120, + 66, + 125, + 70, + 127, + 188, + 254, + 137, + 134, + 173, + 117, + 191, + 169, + 139, + 224, + 223, + 2, + 87, + 184, + 186, + 52, + 193, + 19, + 246, + 139, + 187, + 188, + 137, + 255, + 247, + 250, + 175, + 129, + 137, + 255, + 71, + 249, + 175, + 129, + 73, + 5, + 84, + 228, + 58, + 149, + 109, + 243, + 228, + 250, + 172, + 174, + 242, + 137, + 76, + 93, + 152, + 215, + 134, + 87, + 36, + 32, + 197, + 81, + 29, + 111, + 194, + 4, + 113, + 188, + 35, + 62, + 35, + 126, + 113, + 124, + 83, + 124, + 79, + 92, + 52, + 227, + 233, + 248, + 53, + 241, + 247, + 226, + 124, + 58, + 126, + 127, + 156, + 197, + 127, + 197, + 58, + 225, + 238, + 228, + 94, + 238, + 209, + 13, + 193, + 203, + 45, + 40, + 108, + 183, + 232, + 94, + 202, + 8, + 181, + 40, + 246, + 49, + 217, + 26, + 138, + 228, + 49, + 39, + 9, + 237, + 33, + 40, + 29, + 62, + 191, + 226, + 202, + 10, + 86, + 145, + 10, + 75, + 208, + 204, + 17, + 169, + 90, + 188, + 215, + 136, + 0, + 1, + 197, + 15, + 221, + 32, + 136, + 17, + 159, + 26, + 174, + 165, + 19, + 52, + 81, + 27, + 119, + 131, + 177, + 252, + 72, + 120, + 123, + 43, + 230, + 182, + 48, + 10, + 1, + 31, + 134, + 117, + 198, + 35, + 32, + 137, + 241, + 12, + 188, + 51, + 158, + 129, + 119, + 65, + 193, + 144, + 216, + 25, + 199, + 236, + 33, + 28, + 29, + 223, + 25, + 223, + 201, + 46, + 36, + 82, + 241, + 139, + 237, + 136, + 76, + 213, + 54, + 246, + 21, + 251, + 183, + 165, + 218, + 246, + 54, + 210, + 70, + 248, + 78, + 120, + 127, + 99, + 169, + 48, + 12, + 39, + 240, + 254, + 70, + 143, + 91, + 140, + 147, + 163, + 219, + 225, + 83, + 26, + 19, + 120, + 6, + 85, + 245, + 141, + 249, + 174, + 145, + 253, + 35, + 89, + 199, + 200, + 53, + 35, + 217, + 72, + 72, + 175, + 214, + 18, + 60, + 21, + 8, + 80, + 196, + 78, + 2, + 178, + 129, + 169, + 84, + 156, + 192, + 121, + 161, + 180, + 164, + 225, + 220, + 50, + 40, + 133, + 153, + 90, + 19, + 173, + 139, + 137, + 231, + 110, + 102, + 124, + 229, + 246, + 149, + 91, + 135, + 42, + 15, + 27, + 35, + 248, + 249, + 21, + 36, + 145, + 154, + 213, + 239, + 149, + 0, + 160, + 248, + 169, + 126, + 54, + 180, + 208, + 93, + 170, + 82, + 68, + 111, + 34, + 103, + 229, + 114, + 135, + 151, + 79, + 47, + 145, + 192, + 114, + 185, + 110, + 200, + 137, + 150, + 5, + 50, + 135, + 129, + 49, + 129, + 45, + 188, + 187, + 145, + 2, + 6, + 241, + 56, + 212, + 187, + 192, + 195, + 80, + 115, + 39, + 224, + 128, + 157, + 121, + 131, + 235, + 214, + 159, + 82, + 89, + 35, + 132, + 154, + 234, + 108, + 203, + 177, + 130, + 22, + 39, + 86, + 27, + 153, + 36, + 81, + 26, + 164, + 36, + 21, + 78, + 145, + 146, + 180, + 50, + 148, + 73, + 146, + 170, + 64, + 77, + 146, + 84, + 215, + 24, + 186, + 60, + 76, + 77, + 210, + 134, + 122, + 69, + 21, + 115, + 124, + 146, + 164, + 173, + 10, + 240, + 104, + 189, + 150, + 78, + 56, + 96, + 8, + 212, + 152, + 91, + 187, + 118, + 173, + 223, + 17, + 4, + 117, + 0, + 96, + 192, + 64, + 225, + 245, + 127, + 104, + 121, + 35, + 218, + 250, + 186, + 250, + 225, + 172, + 53, + 15, + 221, + 212, + 190, + 81, + 70, + 19, + 141, + 96, + 101, + 45, + 102, + 130, + 58, + 182, + 152, + 119, + 221, + 184, + 122, + 85, + 107, + 246, + 135, + 175, + 62, + 50, + 227, + 140, + 49, + 141, + 63, + 152, + 125, + 211, + 175, + 230, + 217, + 61, + 250, + 181, + 139, + 87, + 47, + 137, + 68, + 154, + 147, + 183, + 189, + 252, + 208, + 249, + 139, + 95, + 189, + 105, + 207, + 159, + 232, + 233, + 169, + 165, + 203, + 23, + 78, + 56, + 189, + 38, + 150, + 29, + 57, + 101, + 237, + 244, + 201, + 55, + 52, + 164, + 115, + 103, + 221, + 120, + 121, + 236, + 220, + 249, + 231, + 142, + 174, + 73, + 85, + 4, + 213, + 218, + 150, + 51, + 86, + 207, + 159, + 183, + 225, + 130, + 231, + 64, + 183, + 214, + 22, + 191, + 96, + 141, + 194, + 35, + 36, + 74, + 211, + 208, + 5, + 219, + 11, + 255, + 253, + 78, + 57, + 101, + 165, + 14, + 82, + 105, + 34, + 150, + 38, + 80, + 217, + 177, + 181, + 166, + 14, + 80, + 200, + 126, + 119, + 118, + 77, + 93, + 126, + 77, + 156, + 18, + 170, + 27, + 42, + 229, + 72, + 196, + 82, + 114, + 166, + 42, + 70, + 82, + 156, + 102, + 90, + 213, + 164, + 154, + 26, + 39, + 185, + 39, + 88, + 238, + 239, + 100, + 117, + 90, + 148, + 228, + 137, + 202, + 196, + 46, + 105, + 153, + 180, + 70, + 90, + 47, + 241, + 68, + 202, + 72, + 27, + 165, + 30, + 169, + 95, + 218, + 43, + 137, + 88, + 72, + 238, + 87, + 148, + 131, + 207, + 131, + 147, + 47, + 144, + 159, + 232, + 119, + 206, + 240, + 39, + 126, + 141, + 57, + 132, + 63, + 158, + 187, + 12, + 46, + 20, + 64, + 175, + 190, + 215, + 236, + 5, + 3, + 210, + 78, + 182, + 132, + 196, + 232, + 168, + 205, + 139, + 190, + 129, + 218, + 96, + 183, + 126, + 47, + 119, + 115, + 16, + 44, + 218, + 97, + 168, + 190, + 1, + 139, + 102, + 183, + 180, + 88, + 175, + 149, + 149, + 29, + 102, + 163, + 30, + 143, + 2, + 210, + 183, + 246, + 104, + 236, + 58, + 141, + 149, + 37, + 204, + 74, + 156, + 211, + 126, + 233, + 149, + 77, + 183, + 221, + 182, + 117, + 219, + 182, + 96, + 174, + 161, + 242, + 209, + 13, + 214, + 184, + 133, + 143, + 177, + 203, + 238, + 165, + 210, + 149, + 131, + 223, + 191, + 119, + 224, + 135, + 211, + 154, + 18, + 128, + 170, + 21, + 15, + 113, + 7, + 248, + 58, + 18, + 163, + 183, + 190, + 64, + 18, + 64, + 50, + 8, + 71, + 243, + 44, + 19, + 140, + 64, + 225, + 232, + 17, + 55, + 238, + 132, + 242, + 185, + 32, + 173, + 149, + 131, + 17, + 157, + 6, + 35, + 154, + 72, + 84, + 59, + 197, + 105, + 164, + 37, + 82, + 138, + 75, + 35, + 37, + 39, + 35, + 50, + 20, + 151, + 70, + 178, + 177, + 40, + 4, + 144, + 9, + 140, + 78, + 163, + 24, + 151, + 70, + 29, + 76, + 157, + 14, + 113, + 68, + 163, + 104, + 188, + 48, + 181, + 234, + 37, + 81, + 49, + 34, + 5, + 50, + 132, + 23, + 145, + 70, + 17, + 174, + 192, + 142, + 134, + 6, + 92, + 178, + 98, + 148, + 246, + 71, + 105, + 116, + 122, + 2, + 22, + 182, + 30, + 130, + 209, + 196, + 145, + 4, + 91, + 150, + 216, + 152, + 232, + 73, + 20, + 19, + 60, + 80, + 184, + 32, + 153, + 224, + 37, + 34, + 188, + 132, + 67, + 86, + 25, + 50, + 164, + 10, + 37, + 74, + 70, + 217, + 171, + 28, + 80, + 120, + 108, + 123, + 139, + 57, + 191, + 33, + 67, + 234, + 103, + 251, + 84, + 204, + 241, + 33, + 209, + 26, + 243, + 122, + 24, + 141, + 42, + 152, + 90, + 83, + 166, + 199, + 79, + 2, + 214, + 252, + 252, + 217, + 183, + 195, + 78, + 207, + 168, + 34, + 185, + 174, + 221, + 51, + 166, + 184, + 153, + 19, + 188, + 21, + 48, + 76, + 3, + 202, + 17, + 160, + 221, + 33, + 39, + 90, + 188, + 158, + 36, + 134, + 108, + 123, + 217, + 129, + 198, + 198, + 181, + 164, + 0, + 187, + 207, + 103, + 197, + 212, + 215, + 97, + 82, + 32, + 122, + 162, + 77, + 19, + 215, + 177, + 250, + 237, + 139, + 30, + 159, + 97, + 105, + 189, + 154, + 125, + 245, + 172, + 89, + 247, + 157, + 214, + 251, + 211, + 222, + 179, + 174, + 154, + 209, + 122, + 45, + 123, + 96, + 96, + 235, + 247, + 79, + 157, + 60, + 107, + 246, + 253, + 119, + 178, + 182, + 227, + 251, + 8, + 133, + 30, + 242, + 220, + 33, + 190, + 142, + 168, + 108, + 20, + 116, + 170, + 65, + 202, + 80, + 169, + 142, + 131, + 124, + 187, + 212, + 135, + 69, + 124, + 240, + 211, + 51, + 170, + 128, + 235, + 3, + 152, + 56, + 30, + 171, + 171, + 134, + 184, + 120, + 81, + 65, + 38, + 170, + 44, + 82, + 113, + 168, + 160, + 167, + 22, + 187, + 106, + 52, + 231, + 202, + 235, + 122, + 176, + 172, + 103, + 71, + 171, + 64, + 73, + 181, + 221, + 166, + 130, + 73, + 51, + 236, + 54, + 37, + 226, + 164, + 242, + 50, + 12, + 172, + 175, + 248, + 201, + 86, + 39, + 5, + 54, + 8, + 31, + 85, + 64, + 221, + 148, + 202, + 170, + 60, + 105, + 168, + 172, + 130, + 223, + 14, + 185, + 74, + 117, + 54, + 79, + 34, + 213, + 89, + 248, + 109, + 159, + 123, + 115, + 195, + 240, + 60, + 201, + 52, + 12, + 207, + 155, + 250, + 48, + 210, + 160, + 212, + 169, + 109, + 164, + 85, + 61, + 139, + 76, + 86, + 207, + 167, + 231, + 179, + 185, + 242, + 28, + 101, + 17, + 93, + 196, + 22, + 203, + 139, + 149, + 85, + 228, + 122, + 122, + 61, + 187, + 65, + 94, + 165, + 92, + 175, + 174, + 163, + 235, + 216, + 29, + 220, + 93, + 210, + 157, + 242, + 221, + 202, + 207, + 200, + 195, + 202, + 15, + 212, + 231, + 200, + 99, + 234, + 175, + 200, + 14, + 105, + 179, + 250, + 26, + 249, + 141, + 186, + 143, + 188, + 173, + 126, + 70, + 222, + 87, + 143, + 147, + 163, + 106, + 147, + 74, + 4, + 53, + 70, + 34, + 106, + 3, + 169, + 83, + 71, + 171, + 51, + 136, + 171, + 42, + 130, + 235, + 68, + 242, + 130, + 171, + 25, + 249, + 210, + 13, + 29, + 160, + 154, + 73, + 4, + 223, + 13, + 164, + 213, + 196, + 226, + 47, + 8, + 61, + 197, + 78, + 184, + 22, + 240, + 28, + 70, + 32, + 112, + 85, + 240, + 89, + 38, + 8, + 186, + 6, + 28, + 223, + 253, + 185, + 221, + 22, + 252, + 223, + 157, + 219, + 157, + 35, + 205, + 67, + 101, + 79, + 163, + 85, + 73, + 150, + 179, + 138, + 26, + 82, + 20, + 149, + 112, + 140, + 101, + 189, + 106, + 19, + 65, + 85, + 9, + 52, + 177, + 2, + 110, + 191, + 164, + 42, + 28, + 161, + 66, + 179, + 78, + 245, + 106, + 217, + 117, + 93, + 239, + 150, + 37, + 52, + 185, + 205, + 21, + 214, + 8, + 76, + 232, + 163, + 73, + 87, + 201, + 48, + 151, + 86, + 107, + 159, + 252, + 30, + 196, + 242, + 112, + 34, + 62, + 80, + 24, + 40, + 36, + 98, + 135, + 15, + 22, + 252, + 78, + 216, + 67, + 185, + 4, + 27, + 19, + 9, + 39, + 106, + 66, + 128, + 114, + 239, + 243, + 139, + 79, + 252, + 148, + 87, + 31, + 149, + 234, + 55, + 130, + 45, + 148, + 254, + 114, + 240, + 202, + 127, + 59, + 152, + 77, + 199, + 114, + 159, + 189, + 48, + 120, + 53, + 95, + 55, + 112, + 219, + 229, + 215, + 156, + 183, + 146, + 221, + 9, + 185, + 64, + 175, + 30, + 99, + 7, + 95, + 71, + 28, + 225, + 98, + 168, + 19, + 241, + 37, + 205, + 139, + 235, + 49, + 245, + 94, + 1, + 21, + 119, + 12, + 43, + 254, + 45, + 196, + 47, + 5, + 47, + 249, + 138, + 44, + 90, + 174, + 12, + 120, + 255, + 196, + 43, + 218, + 176, + 208, + 210, + 66, + 211, + 94, + 76, + 108, + 121, + 236, + 9, + 143, + 236, + 142, + 38, + 24, + 15, + 56, + 165, + 3, + 242, + 208, + 1, + 208, + 170, + 94, + 218, + 223, + 171, + 221, + 240, + 132, + 221, + 194, + 50, + 38, + 17, + 43, + 61, + 148, + 82, + 142, + 0, + 209, + 51, + 60, + 79, + 211, + 107, + 160, + 95, + 42, + 146, + 147, + 135, + 14, + 0, + 239, + 13, + 45, + 137, + 87, + 224, + 228, + 117, + 186, + 70, + 15, + 189, + 218, + 63, + 224, + 21, + 57, + 243, + 32, + 176, + 152, + 110, + 176, + 51, + 222, + 97, + 223, + 2, + 189, + 91, + 74, + 60, + 191, + 187, + 245, + 196, + 22, + 122, + 129, + 56, + 16, + 79, + 161, + 129, + 240, + 184, + 243, + 56, + 170, + 80, + 44, + 165, + 27, + 232, + 122, + 65, + 167, + 127, + 224, + 249, + 101, + 96, + 4, + 75, + 214, + 27, + 240, + 50, + 193, + 253, + 110, + 51, + 204, + 108, + 23, + 127, + 87, + 109, + 142, + 18, + 93, + 148, + 68, + 42, + 154, + 42, + 81, + 13, + 40, + 114, + 97, + 157, + 186, + 77, + 25, + 175, + 242, + 182, + 234, + 163, + 205, + 158, + 45, + 178, + 161, + 67, + 255, + 110, + 235, + 157, + 221, + 214, + 91, + 216, + 64, + 202, + 47, + 146, + 66, + 17, + 40, + 153, + 252, + 164, + 27, + 49, + 67, + 180, + 145, + 31, + 166, + 178, + 179, + 237, + 11, + 237, + 251, + 108, + 14, + 254, + 30, + 140, + 230, + 225, + 126, + 11, + 232, + 12, + 122, + 19, + 27, + 148, + 131, + 146, + 174, + 202, + 91, + 169, + 10, + 47, + 245, + 231, + 238, + 72, + 215, + 230, + 121, + 81, + 87, + 130, + 98, + 82, + 137, + 59, + 2, + 79, + 120, + 81, + 83, + 180, + 128, + 236, + 88, + 36, + 200, + 133, + 164, + 148, + 156, + 212, + 42, + 2, + 181, + 36, + 43, + 53, + 202, + 185, + 64, + 158, + 180, + 74, + 99, + 229, + 211, + 2, + 19, + 184, + 201, + 162, + 43, + 77, + 147, + 167, + 106, + 103, + 154, + 147, + 237, + 179, + 157, + 11, + 205, + 115, + 157, + 165, + 210, + 2, + 249, + 114, + 231, + 6, + 241, + 123, + 210, + 10, + 249, + 5, + 113, + 167, + 185, + 221, + 249, + 135, + 120, + 92, + 105, + 208, + 236, + 6, + 210, + 96, + 212, + 7, + 26, + 204, + 122, + 167, + 57, + 52, + 134, + 140, + 118, + 174, + 151, + 239, + 144, + 31, + 230, + 30, + 210, + 159, + 162, + 79, + 179, + 167, + 181, + 39, + 245, + 109, + 100, + 187, + 184, + 51, + 240, + 91, + 254, + 29, + 241, + 79, + 202, + 33, + 254, + 144, + 249, + 145, + 115, + 84, + 252, + 74, + 73, + 105, + 216, + 74, + 64, + 199, + 209, + 194, + 49, + 128, + 163, + 137, + 163, + 227, + 239, + 237, + 164, + 26, + 48, + 121, + 135, + 216, + 178, + 36, + 103, + 37, + 51, + 27, + 0, + 120, + 34, + 32, + 113, + 6, + 213, + 179, + 70, + 95, + 241, + 29, + 119, + 52, + 216, + 4, + 131, + 101, + 41, + 182, + 140, + 164, + 6, + 13, + 5, + 69, + 85, + 179, + 235, + 212, + 156, + 125, + 30, + 127, + 174, + 58, + 223, + 190, + 210, + 94, + 109, + 223, + 109, + 171, + 182, + 202, + 115, + 132, + 194, + 114, + 120, + 11, + 243, + 205, + 122, + 180, + 230, + 220, + 209, + 102, + 175, + 170, + 217, + 58, + 8, + 255, + 60, + 111, + 207, + 118, + 218, + 146, + 110, + 136, + 195, + 58, + 53, + 73, + 80, + 84, + 85, + 214, + 116, + 93, + 181, + 108, + 160, + 143, + 78, + 221, + 42, + 16, + 39, + 211, + 87, + 156, + 226, + 46, + 82, + 205, + 64, + 230, + 215, + 182, + 36, + 103, + 36, + 219, + 113, + 114, + 130, + 20, + 18, + 4, + 41, + 160, + 234, + 122, + 214, + 8, + 132, + 12, + 35, + 32, + 219, + 166, + 153, + 83, + 229, + 144, + 170, + 202, + 80, + 188, + 230, + 171, + 19, + 194, + 168, + 228, + 240, + 178, + 105, + 235, + 1, + 3, + 79, + 207, + 49, + 116, + 29, + 250, + 216, + 130, + 126, + 113, + 76, + 232, + 254, + 162, + 134, + 142, + 89, + 6, + 133, + 166, + 148, + 107, + 12, + 206, + 232, + 163, + 79, + 185, + 106, + 102, + 134, + 74, + 175, + 81, + 111, + 129, + 202, + 33, + 214, + 233, + 42, + 51, + 108, + 122, + 141, + 125, + 139, + 13, + 5, + 186, + 157, + 174, + 102, + 9, + 180, + 11, + 115, + 91, + 156, + 208, + 71, + 159, + 218, + 70, + 143, + 5, + 143, + 45, + 66, + 63, + 56, + 62, + 237, + 104, + 161, + 16, + 27, + 40, + 116, + 15, + 20, + 186, + 65, + 19, + 21, + 98, + 223, + 93, + 184, + 230, + 171, + 38, + 27, + 199, + 255, + 143, + 186, + 53, + 41, + 96, + 181, + 195, + 127, + 152, + 195, + 255, + 169, + 61, + 233, + 217, + 115, + 122, + 141, + 140, + 158, + 97, + 47, + 21, + 15, + 16, + 90, + 60, + 64, + 2, + 197, + 189, + 189, + 100, + 132, + 153, + 113, + 250, + 138, + 7, + 176, + 162, + 8, + 171, + 138, + 166, + 246, + 228, + 103, + 99, + 159, + 182, + 189, + 155, + 37, + 184, + 237, + 194, + 220, + 169, + 61, + 85, + 179, + 167, + 246, + 180, + 32, + 137, + 89, + 46, + 30, + 216, + 44, + 101, + 188, + 103, + 29, + 191, + 99, + 22, + 180, + 102, + 216, + 187, + 221, + 204, + 192, + 103, + 203, + 125, + 197, + 189, + 91, + 164, + 17, + 240, + 137, + 91, + 200, + 24, + 6, + 119, + 168, + 160, + 101, + 31, + 62, + 244, + 190, + 40, + 190, + 207, + 46, + 30, + 216, + 170, + 102, + 248, + 12, + 220, + 41, + 6, + 139, + 226, + 252, + 70, + 15, + 111, + 109, + 119, + 218, + 72, + 147, + 131, + 141, + 89, + 54, + 7, + 79, + 84, + 51, + 121, + 57, + 56, + 216, + 126, + 216, + 77, + 235, + 100, + 239, + 251, + 127, + 251, + 1, + 149, + 140, + 26, + 57, + 24, + 197, + 122, + 58, + 174, + 158, + 163, + 83, + 7, + 95, + 220, + 249, + 76, + 7, + 223, + 242, + 204, + 11, + 27, + 90, + 79, + 223, + 190, + 105, + 176, + 247, + 197, + 103, + 134, + 253, + 145, + 175, + 27, + 248, + 201, + 65, + 251, + 117, + 118, + 245, + 192, + 195, + 111, + 236, + 102, + 139, + 142, + 239, + 99, + 171, + 183, + 125, + 189, + 135, + 80, + 98, + 18, + 194, + 253, + 55, + 95, + 71, + 44, + 70, + 161, + 229, + 151, + 175, + 171, + 61, + 138, + 40, + 22, + 189, + 121, + 9, + 85, + 252, + 221, + 183, + 249, + 97, + 147, + 106, + 34, + 207, + 20, + 145, + 137, + 134, + 74, + 84, + 19, + 3, + 62, + 179, + 25, + 160, + 179, + 142, + 14, + 108, + 133, + 157, + 220, + 97, + 58, + 212, + 172, + 142, + 123, + 77, + 3, + 103, + 198, + 219, + 230, + 153, + 63, + 226, + 127, + 36, + 63, + 18, + 248, + 177, + 217, + 47, + 244, + 139, + 253, + 210, + 27, + 166, + 98, + 186, + 145, + 182, + 4, + 23, + 84, + 194, + 70, + 194, + 106, + 165, + 99, + 181, + 181, + 244, + 62, + 77, + 110, + 118, + 46, + 224, + 231, + 74, + 115, + 181, + 57, + 129, + 135, + 232, + 195, + 234, + 195, + 218, + 14, + 214, + 167, + 255, + 86, + 123, + 61, + 240, + 166, + 181, + 143, + 123, + 91, + 249, + 157, + 241, + 103, + 235, + 3, + 213, + 41, + 237, + 81, + 77, + 39, + 142, + 109, + 198, + 12, + 75, + 4, + 63, + 255, + 144, + 27, + 128, + 153, + 41, + 18, + 102, + 16, + 85, + 101, + 34, + 118, + 204, + 2, + 201, + 202, + 121, + 244, + 150, + 164, + 187, + 72, + 20, + 57, + 73, + 86, + 20, + 42, + 138, + 10, + 212, + 213, + 105, + 166, + 105, + 5, + 12, + 131, + 154, + 166, + 97, + 105, + 148, + 40, + 204, + 208, + 56, + 221, + 82, + 69, + 147, + 153, + 170, + 245, + 42, + 121, + 85, + 97, + 86, + 150, + 40, + 33, + 66, + 20, + 142, + 25, + 175, + 26, + 212, + 200, + 234, + 92, + 72, + 215, + 57, + 85, + 81, + 56, + 142, + 137, + 150, + 97, + 232, + 58, + 81, + 103, + 56, + 212, + 153, + 98, + 220, + 172, + 87, + 171, + 230, + 37, + 162, + 114, + 179, + 171, + 246, + 209, + 228, + 14, + 87, + 156, + 41, + 174, + 193, + 59, + 3, + 156, + 233, + 6, + 50, + 220, + 205, + 172, + 122, + 6, + 161, + 100, + 138, + 189, + 26, + 209, + 150, + 194, + 81, + 207, + 48, + 39, + 98, + 135, + 173, + 15, + 172, + 163, + 135, + 177, + 235, + 224, + 137, + 109, + 129, + 119, + 162, + 242, + 133, + 190, + 224, + 223, + 37, + 164, + 205, + 52, + 215, + 201, + 40, + 236, + 222, + 184, + 75, + 198, + 93, + 208, + 46, + 183, + 251, + 178, + 213, + 27, + 136, + 85, + 180, + 105, + 216, + 192, + 171, + 162, + 77, + 175, + 142, + 182, + 113, + 213, + 81, + 252, + 125, + 75, + 85, + 155, + 133, + 117, + 237, + 225, + 54, + 90, + 93, + 213, + 166, + 184, + 169, + 161, + 134, + 141, + 115, + 49, + 171, + 129, + 57, + 120, + 248, + 181, + 133, + 210, + 150, + 40, + 88, + 248, + 209, + 144, + 121, + 231, + 234, + 169, + 73, + 111, + 27, + 124, + 228, + 175, + 143, + 15, + 79, + 53, + 101, + 183, + 254, + 113, + 240, + 7, + 244, + 158, + 253, + 251, + 198, + 14, + 126, + 204, + 26, + 232, + 224, + 151, + 147, + 71, + 140, + 111, + 57, + 62, + 168, + 15, + 252, + 39, + 61, + 123, + 238, + 96, + 1, + 172, + 126, + 213, + 224, + 44, + 238, + 191, + 248, + 58, + 146, + 96, + 75, + 221, + 180, + 137, + 55, + 149, + 9, + 33, + 150, + 23, + 198, + 49, + 130, + 163, + 137, + 134, + 30, + 140, + 171, + 219, + 236, + 65, + 254, + 152, + 120, + 197, + 17, + 110, + 28, + 4, + 230, + 23, + 141, + 123, + 25, + 43, + 200, + 115, + 219, + 157, + 33, + 97, + 212, + 203, + 133, + 177, + 66, + 13, + 153, + 156, + 198, + 165, + 226, + 166, + 35, + 106, + 98, + 208, + 117, + 204, + 140, + 230, + 234, + 25, + 95, + 40, + 227, + 205, + 185, + 196, + 254, + 68, + 108, + 119, + 34, + 110, + 193, + 3, + 226, + 89, + 104, + 230, + 146, + 91, + 205, + 20, + 20, + 98, + 188, + 235, + 94, + 149, + 106, + 107, + 8, + 157, + 111, + 110, + 82, + 57, + 215, + 112, + 77, + 102, + 102, + 26, + 70, + 228, + 45, + 24, + 36, + 93, + 113, + 34, + 70, + 204, + 169, + 215, + 234, + 245, + 122, + 99, + 148, + 62, + 202, + 104, + 13, + 60, + 98, + 107, + 13, + 78, + 67, + 240, + 172, + 200, + 92, + 103, + 110, + 112, + 110, + 120, + 177, + 179, + 56, + 184, + 56, + 124, + 131, + 184, + 210, + 184, + 193, + 254, + 94, + 232, + 123, + 225, + 219, + 141, + 187, + 237, + 123, + 157, + 123, + 131, + 119, + 133, + 30, + 86, + 159, + 214, + 94, + 178, + 94, + 180, + 119, + 134, + 62, + 81, + 63, + 10, + 253, + 195, + 24, + 176, + 190, + 12, + 21, + 83, + 149, + 37, + 209, + 141, + 4, + 181, + 84, + 146, + 55, + 39, + 152, + 183, + 153, + 156, + 25, + 31, + 58, + 125, + 15, + 111, + 243, + 186, + 125, + 128, + 192, + 142, + 54, + 77, + 221, + 178, + 29, + 71, + 37, + 92, + 60, + 20, + 12, + 102, + 29, + 53, + 228, + 56, + 170, + 169, + 155, + 182, + 158, + 213, + 212, + 144, + 166, + 169, + 65, + 40, + 41, + 212, + 68, + 248, + 0, + 146, + 178, + 82, + 172, + 57, + 245, + 114, + 138, + 165, + 250, + 88, + 199, + 54, + 51, + 232, + 58, + 110, + 168, + 143, + 157, + 231, + 106, + 29, + 142, + 235, + 176, + 139, + 157, + 151, + 29, + 230, + 244, + 209, + 241, + 219, + 77, + 90, + 77, + 38, + 38, + 85, + 56, + 132, + 87, + 203, + 205, + 232, + 35, + 244, + 25, + 58, + 55, + 83, + 47, + 234, + 76, + 239, + 163, + 227, + 183, + 54, + 67, + 145, + 10, + 235, + 232, + 77, + 102, + 86, + 47, + 138, + 229, + 18, + 113, + 107, + 0, + 238, + 69, + 145, + 136, + 97, + 223, + 193, + 152, + 117, + 244, + 96, + 220, + 58, + 88, + 232, + 62, + 156, + 136, + 89, + 135, + 113, + 70, + 98, + 16, + 136, + 150, + 68, + 87, + 46, + 231, + 166, + 128, + 236, + 66, + 149, + 113, + 187, + 188, + 107, + 106, + 79, + 96, + 246, + 212, + 158, + 216, + 172, + 121, + 115, + 94, + 36, + 122, + 241, + 16, + 209, + 138, + 135, + 104, + 185, + 110, + 12, + 21, + 223, + 221, + 62, + 186, + 77, + 173, + 30, + 221, + 22, + 128, + 198, + 127, + 225, + 54, + 219, + 111, + 125, + 51, + 23, + 66, + 41, + 232, + 39, + 234, + 203, + 105, + 153, + 123, + 154, + 11, + 214, + 123, + 124, + 212, + 209, + 88, + 87, + 236, + 187, + 167, + 112, + 183, + 173, + 154, + 234, + 91, + 66, + 167, + 53, + 181, + 159, + 21, + 181, + 235, + 4, + 109, + 240, + 170, + 87, + 246, + 231, + 170, + 211, + 185, + 247, + 123, + 7, + 175, + 60, + 163, + 118, + 196, + 234, + 243, + 243, + 131, + 151, + 63, + 99, + 53, + 212, + 38, + 151, + 154, + 21, + 124, + 195, + 192, + 35, + 215, + 173, + 93, + 189, + 146, + 45, + 61, + 254, + 219, + 77, + 227, + 231, + 206, + 6, + 89, + 110, + 32, + 132, + 123, + 139, + 175, + 35, + 1, + 250, + 239, + 219, + 233, + 80, + 47, + 66, + 143, + 36, + 226, + 244, + 177, + 215, + 100, + 230, + 208, + 145, + 94, + 101, + 239, + 127, + 186, + 138, + 19, + 205, + 211, + 113, + 149, + 200, + 125, + 122, + 197, + 61, + 187, + 178, + 42, + 63, + 140, + 53, + 40, + 205, + 86, + 27, + 109, + 83, + 167, + 208, + 73, + 108, + 146, + 60, + 69, + 153, + 97, + 205, + 167, + 231, + 177, + 243, + 228, + 121, + 202, + 76, + 235, + 74, + 122, + 25, + 187, + 76, + 94, + 162, + 220, + 72, + 87, + 200, + 55, + 42, + 247, + 208, + 219, + 229, + 187, + 148, + 47, + 233, + 81, + 184, + 187, + 76, + 29, + 29, + 38, + 231, + 148, + 54, + 249, + 95, + 229, + 63, + 82, + 9, + 118, + 237, + 14, + 43, + 156, + 103, + 77, + 78, + 155, + 2, + 37, + 243, + 53, + 78, + 27, + 101, + 99, + 21, + 149, + 201, + 170, + 154, + 165, + 44, + 68, + 41, + 163, + 112, + 231, + 18, + 118, + 137, + 144, + 147, + 68, + 81, + 189, + 196, + 32, + 222, + 173, + 222, + 208, + 57, + 201, + 5, + 84, + 214, + 71, + 205, + 94, + 89, + 150, + 4, + 241, + 69, + 118, + 33, + 33, + 68, + 2, + 12, + 24, + 51, + 119, + 213, + 198, + 198, + 0, + 37, + 1, + 55, + 208, + 21, + 88, + 19, + 56, + 18, + 16, + 208, + 253, + 173, + 133, + 67, + 129, + 21, + 68, + 189, + 153, + 210, + 77, + 132, + 206, + 32, + 215, + 144, + 34, + 225, + 8, + 246, + 228, + 34, + 113, + 211, + 90, + 81, + 5, + 234, + 11, + 192, + 118, + 143, + 169, + 4, + 55, + 66, + 236, + 110, + 63, + 152, + 67, + 146, + 57, + 222, + 211, + 38, + 215, + 110, + 125, + 208, + 209, + 62, + 240, + 1, + 214, + 116, + 248, + 225, + 133, + 21, + 128, + 123, + 63, + 129, + 21, + 243, + 49, + 165, + 51, + 231, + 207, + 217, + 54, + 140, + 214, + 201, + 128, + 61, + 122, + 87, + 79, + 134, + 107, + 73, + 251, + 138, + 175, + 236, + 128, + 171, + 8, + 151, + 210, + 107, + 62, + 222, + 61, + 23, + 75, + 128, + 193, + 52, + 191, + 187, + 197, + 132, + 139, + 224, + 63, + 28, + 218, + 145, + 108, + 83, + 228, + 72, + 242, + 116, + 240, + 53, + 183, + 68, + 225, + 169, + 127, + 186, + 106, + 164, + 141, + 133, + 34, + 109, + 44, + 17, + 57, + 161, + 224, + 128, + 74, + 212, + 74, + 197, + 26, + 232, + 72, + 66, + 165, + 81, + 45, + 85, + 225, + 6, + 246, + 196, + 181, + 115, + 6, + 103, + 112, + 11, + 6, + 254, + 253, + 154, + 27, + 150, + 208, + 79, + 31, + 224, + 100, + 241, + 129, + 235, + 7, + 46, + 186, + 81, + 249, + 9, + 249, + 127, + 255, + 74, + 202, + 114, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 56, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 70, + 111, + 110, + 116, + 68, + 101, + 115, + 99, + 114, + 105, + 112, + 116, + 111, + 114, + 10, + 47, + 70, + 111, + 110, + 116, + 78, + 97, + 109, + 101, + 32, + 47, + 65, + 65, + 65, + 65, + 65, + 65, + 43, + 65, + 114, + 105, + 97, + 108, + 77, + 84, + 10, + 47, + 70, + 108, + 97, + 103, + 115, + 32, + 52, + 10, + 47, + 65, + 115, + 99, + 101, + 110, + 116, + 32, + 57, + 48, + 53, + 46, + 50, + 55, + 51, + 52, + 52, + 10, + 47, + 68, + 101, + 115, + 99, + 101, + 110, + 116, + 32, + 45, + 50, + 49, + 49, + 46, + 57, + 49, + 52, + 48, + 54, + 10, + 47, + 83, + 116, + 101, + 109, + 86, + 32, + 52, + 53, + 46, + 56, + 57, + 56, + 52, + 51, + 56, + 10, + 47, + 67, + 97, + 112, + 72, + 101, + 105, + 103, + 104, + 116, + 32, + 55, + 49, + 53, + 46, + 56, + 50, + 48, + 51, + 49, + 10, + 47, + 73, + 116, + 97, + 108, + 105, + 99, + 65, + 110, + 103, + 108, + 101, + 32, + 48, + 10, + 47, + 70, + 111, + 110, + 116, + 66, + 66, + 111, + 120, + 32, + 91, + 45, + 54, + 54, + 52, + 46, + 53, + 53, + 48, + 55, + 56, + 32, + 45, + 51, + 50, + 52, + 46, + 55, + 48, + 55, + 48, + 51, + 32, + 50, + 48, + 48, + 48, + 32, + 49, + 48, + 48, + 53, + 46, + 56, + 53, + 57, + 51, + 56, + 93, + 10, + 47, + 70, + 111, + 110, + 116, + 70, + 105, + 108, + 101, + 50, + 32, + 52, + 52, + 55, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 52, + 57, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 70, + 111, + 110, + 116, + 10, + 47, + 70, + 111, + 110, + 116, + 68, + 101, + 115, + 99, + 114, + 105, + 112, + 116, + 111, + 114, + 32, + 52, + 52, + 56, + 32, + 48, + 32, + 82, + 10, + 47, + 66, + 97, + 115, + 101, + 70, + 111, + 110, + 116, + 32, + 47, + 65, + 65, + 65, + 65, + 65, + 65, + 43, + 65, + 114, + 105, + 97, + 108, + 77, + 84, + 10, + 47, + 83, + 117, + 98, + 116, + 121, + 112, + 101, + 32, + 47, + 67, + 73, + 68, + 70, + 111, + 110, + 116, + 84, + 121, + 112, + 101, + 50, + 10, + 47, + 67, + 73, + 68, + 84, + 111, + 71, + 73, + 68, + 77, + 97, + 112, + 32, + 47, + 73, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 10, + 47, + 67, + 73, + 68, + 83, + 121, + 115, + 116, + 101, + 109, + 73, + 110, + 102, + 111, + 32, + 60, + 60, + 47, + 82, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 32, + 40, + 65, + 100, + 111, + 98, + 101, + 41, + 10, + 47, + 79, + 114, + 100, + 101, + 114, + 105, + 110, + 103, + 32, + 40, + 73, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 41, + 10, + 47, + 83, + 117, + 112, + 112, + 108, + 101, + 109, + 101, + 110, + 116, + 32, + 48, + 62, + 62, + 10, + 47, + 87, + 32, + 91, + 48, + 32, + 91, + 55, + 53, + 48, + 32, + 48, + 32, + 48, + 32, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 51, + 53, + 52, + 46, + 57, + 56, + 48, + 52, + 55, + 93, + 32, + 49, + 48, + 32, + 91, + 49, + 57, + 48, + 46, + 57, + 49, + 55, + 57, + 55, + 93, + 32, + 49, + 53, + 32, + 91, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 51, + 51, + 51, + 46, + 48, + 48, + 55, + 56, + 49, + 32, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 93, + 32, + 50, + 49, + 32, + 50, + 54, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 50, + 57, + 32, + 91, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 93, + 32, + 51, + 52, + 32, + 91, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 48, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 54, + 49, + 48, + 46, + 56, + 51, + 57, + 56, + 52, + 32, + 55, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 93, + 32, + 52, + 54, + 32, + 91, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 56, + 51, + 51, + 46, + 48, + 48, + 55, + 56, + 49, + 32, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 55, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 55, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 54, + 49, + 48, + 46, + 56, + 51, + 57, + 56, + 52, + 32, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 32, + 57, + 52, + 51, + 46, + 56, + 52, + 55, + 54, + 54, + 32, + 48, + 32, + 54, + 54, + 54, + 46, + 57, + 57, + 50, + 49, + 57, + 93, + 32, + 54, + 56, + 32, + 54, + 57, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 55, + 49, + 32, + 55, + 50, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 55, + 51, + 32, + 91, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 50, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 50, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 93, + 32, + 55, + 57, + 32, + 91, + 50, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 32, + 56, + 51, + 51, + 46, + 48, + 48, + 55, + 56, + 49, + 93, + 32, + 56, + 49, + 32, + 56, + 52, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 32, + 56, + 53, + 32, + 91, + 51, + 51, + 51, + 46, + 48, + 48, + 55, + 56, + 49, + 93, + 32, + 56, + 55, + 32, + 91, + 50, + 55, + 55, + 46, + 56, + 51, + 50, + 48, + 51, + 32, + 53, + 53, + 54, + 46, + 49, + 53, + 50, + 51, + 52, + 93, + 32, + 57, + 48, + 32, + 91, + 55, + 50, + 50, + 46, + 49, + 54, + 55, + 57, + 55, + 93, + 93, + 10, + 47, + 68, + 87, + 32, + 53, + 48, + 48, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 53, + 48, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 70, + 105, + 108, + 116, + 101, + 114, + 32, + 47, + 70, + 108, + 97, + 116, + 101, + 68, + 101, + 99, + 111, + 100, + 101, + 10, + 47, + 76, + 101, + 110, + 103, + 116, + 104, + 32, + 51, + 48, + 54, + 62, + 62, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 120, + 156, + 93, + 145, + 203, + 106, + 195, + 48, + 16, + 69, + 247, + 250, + 10, + 45, + 147, + 69, + 144, + 44, + 219, + 73, + 11, + 198, + 16, + 28, + 12, + 94, + 244, + 65, + 221, + 124, + 128, + 35, + 141, + 93, + 65, + 45, + 11, + 89, + 89, + 248, + 239, + 139, + 103, + 242, + 128, + 46, + 36, + 113, + 230, + 161, + 123, + 153, + 17, + 85, + 115, + 106, + 156, + 141, + 92, + 124, + 134, + 73, + 183, + 16, + 121, + 111, + 157, + 9, + 48, + 79, + 215, + 160, + 129, + 95, + 96, + 176, + 142, + 37, + 138, + 27, + 171, + 227, + 141, + 240, + 214, + 99, + 231, + 153, + 168, + 154, + 83, + 187, + 204, + 17, + 198, + 198, + 245, + 19, + 43, + 10, + 206, + 197, + 23, + 12, + 118, + 142, + 97, + 225, + 155, + 163, + 153, + 46, + 176, + 101, + 226, + 35, + 24, + 8, + 214, + 13, + 124, + 115, + 174, + 218, + 45, + 19, + 237, + 213, + 251, + 95, + 24, + 193, + 69, + 46, + 89, + 89, + 114, + 3, + 61, + 19, + 213, + 91, + 231, + 223, + 187, + 17, + 184, + 192, + 182, + 93, + 99, + 192, + 69, + 27, + 151, + 221, + 185, + 106, + 159, + 21, + 223, + 139, + 7, + 174, + 144, + 19, + 114, + 163, + 39, + 3, + 179, + 239, + 52, + 132, + 206, + 13, + 192, + 10, + 41, + 165, + 44, + 121, + 81, + 215, + 117, + 93, + 50, + 112, + 230, + 95, + 126, + 79, + 93, + 151, + 94, + 255, + 116, + 1, + 171, + 143, + 37, + 47, + 164, + 84, + 135, + 114, + 165, + 36, + 71, + 74, + 21, + 17, + 229, + 210, + 91, + 238, + 68, + 116, + 68, + 82, + 138, + 168, + 70, + 74, + 43, + 164, + 252, + 21, + 53, + 111, + 191, + 231, + 119, + 173, + 167, + 181, + 20, + 203, + 36, + 169, + 40, + 137, + 189, + 178, + 70, + 74, + 232, + 67, + 85, + 145, + 216, + 129, + 130, + 47, + 164, + 146, + 145, + 102, + 118, + 119, + 176, + 62, + 89, + 130, + 193, + 140, + 130, + 57, + 185, + 219, + 39, + 55, + 7, + 164, + 185, + 14, + 96, + 93, + 212, + 99, + 186, + 250, + 26, + 2, + 184, + 136, + 219, + 196, + 137, + 174, + 179, + 180, + 14, + 30, + 11, + 247, + 147, + 95, + 187, + 214, + 243, + 7, + 219, + 141, + 154, + 184, + 10, + 101, + 110, + 100, + 115, + 116, + 114, + 101, + 97, + 109, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 52, + 32, + 48, + 32, + 111, + 98, + 106, + 10, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 32, + 47, + 70, + 111, + 110, + 116, + 10, + 47, + 83, + 117, + 98, + 116, + 121, + 112, + 101, + 32, + 47, + 84, + 121, + 112, + 101, + 48, + 10, + 47, + 66, + 97, + 115, + 101, + 70, + 111, + 110, + 116, + 32, + 47, + 65, + 65, + 65, + 65, + 65, + 65, + 43, + 65, + 114, + 105, + 97, + 108, + 77, + 84, + 10, + 47, + 69, + 110, + 99, + 111, + 100, + 105, + 110, + 103, + 32, + 47, + 73, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 45, + 72, + 10, + 47, + 68, + 101, + 115, + 99, + 101, + 110, + 100, + 97, + 110, + 116, + 70, + 111, + 110, + 116, + 115, + 32, + 91, + 52, + 52, + 57, + 32, + 48, + 32, + 82, + 93, + 10, + 47, + 84, + 111, + 85, + 110, + 105, + 99, + 111, + 100, + 101, + 32, + 52, + 53, + 48, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 120, + 114, + 101, + 102, + 10, + 48, + 32, + 52, + 53, + 49, + 10, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 32, + 54, + 53, + 53, + 51, + 53, + 32, + 102, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 49, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 53, + 49, + 56, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 49, + 48, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 51, + 50, + 57, + 48, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 48, + 48, + 49, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 53, + 52, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 49, + 48, + 57, + 48, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 53, + 54, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 50, + 49, + 53, + 50, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 53, + 56, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 51, + 50, + 52, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 54, + 48, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 52, + 50, + 54, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 54, + 50, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 53, + 50, + 55, + 51, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 54, + 53, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 54, + 50, + 57, + 57, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 54, + 55, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 55, + 51, + 51, + 49, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 54, + 57, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 56, + 51, + 55, + 51, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 55, + 49, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 48, + 57, + 51, + 57, + 52, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 55, + 51, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 48, + 52, + 54, + 49, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 55, + 54, + 48, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 49, + 52, + 57, + 56, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 55, + 56, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 50, + 54, + 49, + 56, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 56, + 48, + 52, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 51, + 55, + 48, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 56, + 50, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 52, + 55, + 49, + 48, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 56, + 52, + 56, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 53, + 55, + 54, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 56, + 55, + 48, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 56, + 56, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 56, + 57, + 52, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 51, + 51, + 50, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 54, + 53, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 48, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 48, + 55, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 49, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 50, + 49, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 50, + 56, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 51, + 53, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 52, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 52, + 57, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 53, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 54, + 51, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 55, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 55, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 56, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 57, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 54, + 57, + 57, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 48, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 49, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 49, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 50, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 51, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 52, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 52, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 53, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 54, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 54, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 55, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 56, + 49, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 56, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 48, + 57, + 53, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 48, + 50, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 48, + 57, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 49, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 50, + 51, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 51, + 48, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 51, + 55, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 52, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 53, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 53, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 54, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 55, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 55, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 56, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 49, + 57, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 48, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 48, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 49, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 50, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 50, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 51, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 52, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 52, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 53, + 53, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 54, + 50, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 54, + 57, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 55, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 56, + 51, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 57, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 50, + 57, + 55, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 48, + 52, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 49, + 49, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 49, + 56, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 50, + 53, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 51, + 50, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 51, + 57, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 52, + 54, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 53, + 51, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 54, + 48, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 54, + 55, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 55, + 52, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 56, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 56, + 57, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 51, + 57, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 48, + 51, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 49, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 49, + 55, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 50, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 51, + 49, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 51, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 52, + 53, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 53, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 54, + 48, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 54, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 55, + 52, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 56, + 49, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 56, + 56, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 52, + 57, + 53, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 48, + 50, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 49, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 49, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 50, + 52, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 51, + 49, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 51, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 52, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 53, + 51, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 54, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 54, + 55, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 55, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 56, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 56, + 57, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 53, + 57, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 48, + 51, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 49, + 48, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 49, + 55, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 50, + 52, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 51, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 51, + 57, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 52, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 53, + 51, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 54, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 54, + 55, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 55, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 56, + 49, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 56, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 54, + 57, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 48, + 51, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 49, + 48, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 49, + 55, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 50, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 51, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 51, + 57, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 52, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 53, + 51, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 54, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 54, + 56, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 55, + 53, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 56, + 50, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 56, + 57, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 55, + 57, + 54, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 48, + 51, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 49, + 48, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 49, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 50, + 53, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 51, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 51, + 57, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 52, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 53, + 51, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 54, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 54, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 55, + 53, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 56, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 56, + 57, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 56, + 57, + 54, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 48, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 49, + 49, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 49, + 56, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 50, + 53, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 51, + 50, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 52, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 52, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 53, + 52, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 54, + 49, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 54, + 56, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 55, + 53, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 56, + 50, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 56, + 57, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 55, + 57, + 57, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 48, + 52, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 49, + 49, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 49, + 56, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 50, + 53, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 51, + 50, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 51, + 57, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 52, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 53, + 52, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 54, + 49, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 54, + 56, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 55, + 53, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 56, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 57, + 48, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 48, + 57, + 55, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 48, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 49, + 49, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 49, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 50, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 51, + 51, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 52, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 52, + 55, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 53, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 54, + 49, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 54, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 55, + 53, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 56, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 57, + 48, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 49, + 57, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 48, + 52, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 49, + 49, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 49, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 50, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 51, + 51, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 52, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 52, + 55, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 53, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 54, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 54, + 57, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 55, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 56, + 51, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 57, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 50, + 57, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 48, + 53, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 49, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 49, + 57, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 50, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 51, + 51, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 52, + 48, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 52, + 55, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 53, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 54, + 49, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 54, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 55, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 56, + 51, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 57, + 48, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 51, + 57, + 55, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 48, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 49, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 49, + 57, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 50, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 51, + 51, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 52, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 52, + 56, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 53, + 53, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 54, + 50, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 54, + 57, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 55, + 54, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 56, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 57, + 49, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 52, + 57, + 56, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 48, + 53, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 49, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 49, + 57, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 50, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 51, + 51, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 52, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 52, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 53, + 53, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 54, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 54, + 57, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 55, + 54, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 56, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 57, + 49, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 53, + 57, + 56, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 48, + 53, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 49, + 50, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 50, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 50, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 51, + 52, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 52, + 49, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 52, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 53, + 53, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 54, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 55, + 48, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 55, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 56, + 52, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 57, + 49, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 54, + 57, + 56, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 48, + 53, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 49, + 50, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 49, + 57, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 50, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 51, + 52, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 52, + 49, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 52, + 56, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 53, + 53, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 54, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 55, + 48, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 55, + 55, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 56, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 57, + 49, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 55, + 57, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 48, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 49, + 51, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 50, + 48, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 50, + 55, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 51, + 52, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 52, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 52, + 57, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 53, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 54, + 51, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 55, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 55, + 55, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 56, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 57, + 49, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 56, + 57, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 48, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 49, + 51, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 50, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 50, + 55, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 51, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 52, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 52, + 57, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 53, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 54, + 51, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 55, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 55, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 56, + 53, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 57, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 56, + 57, + 57, + 57, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 48, + 54, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 49, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 50, + 49, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 50, + 56, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 51, + 53, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 52, + 50, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 52, + 57, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 53, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 54, + 51, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 55, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 55, + 55, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 56, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 57, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 48, + 57, + 57, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 48, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 49, + 51, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 50, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 50, + 56, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 51, + 53, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 52, + 50, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 52, + 57, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 53, + 55, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 54, + 52, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 55, + 49, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 55, + 56, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 56, + 53, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 49, + 57, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 48, + 48, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 48, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 49, + 52, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 50, + 49, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 50, + 56, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 51, + 53, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 52, + 50, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 52, + 57, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 53, + 54, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 54, + 52, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 55, + 49, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 55, + 56, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 56, + 53, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 50, + 57, + 50, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 48, + 48, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 48, + 55, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 49, + 52, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 50, + 49, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 50, + 56, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 51, + 54, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 52, + 51, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 53, + 48, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 53, + 55, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 54, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 55, + 49, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 55, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 56, + 54, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 51, + 57, + 51, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 48, + 48, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 48, + 55, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 49, + 52, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 50, + 49, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 50, + 56, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 51, + 53, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 52, + 51, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 53, + 48, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 53, + 55, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 54, + 52, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 55, + 49, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 55, + 57, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 56, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 52, + 57, + 51, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 48, + 48, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 48, + 55, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 49, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 50, + 50, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 50, + 57, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 51, + 54, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 52, + 51, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 53, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 53, + 55, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 54, + 53, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 55, + 50, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 55, + 57, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 56, + 54, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 53, + 57, + 51, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 48, + 48, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 48, + 55, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 49, + 52, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 50, + 50, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 50, + 57, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 51, + 54, + 52, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 52, + 51, + 54, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 53, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 54, + 53, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 57, + 55, + 54, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 49, + 57, + 57, + 57, + 53, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 48, + 49, + 53, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 48, + 51, + 54, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 48, + 53, + 56, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 48, + 55, + 57, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 49, + 48, + 49, + 48, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 49, + 50, + 50, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 49, + 52, + 51, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 49, + 54, + 52, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 49, + 56, + 54, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 50, + 48, + 56, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 50, + 51, + 48, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 50, + 53, + 50, + 55, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 50, + 55, + 51, + 56, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 50, + 57, + 52, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 51, + 49, + 49, + 50, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 51, + 52, + 49, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 48, + 51, + 54, + 49, + 57, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 51, + 49, + 53, + 48, + 51, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 51, + 49, + 55, + 52, + 49, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 48, + 48, + 48, + 48, + 50, + 51, + 50, + 53, + 50, + 53, + 32, + 48, + 48, + 48, + 48, + 48, + 32, + 110, + 32, + 10, + 116, + 114, + 97, + 105, + 108, + 101, + 114, + 10, + 60, + 60, + 47, + 83, + 105, + 122, + 101, + 32, + 52, + 53, + 49, + 10, + 47, + 82, + 111, + 111, + 116, + 32, + 52, + 52, + 54, + 32, + 48, + 32, + 82, + 10, + 47, + 73, + 110, + 102, + 111, + 32, + 49, + 32, + 48, + 32, + 82, + 62, + 62, + 10, + 115, + 116, + 97, + 114, + 116, + 120, + 114, + 101, + 102, + 10, + 50, + 51, + 51, + 48, + 52, + 52, + 10, + 37, + 37, + 69, + 79, + 70, + 10 + ], + "type": "Buffer" + }, + "name": "Shrek_Script.pdf", + "type": 1, + "projectId": 1, + "wholeText": "Once upon a time there was a lovely princess. But she had an enchantment upon her of a fearful sort, which could only be broken by Love's first kiss. She was locked away in a castle guarded by a terrible fire breathing dragon. Many brave knights had attempted to free her from this dreadful prison, but none prevailed. She waited in the dragon's keep in the highest room of the tallest tower for her true love and true love's first kiss. Like that's ever going to happen. What a loony. Shrek Beware Stay out I think he's in here. All right. Lets get it! Hold on. Do you know what that thing can do to you? Yeah. He'll groan into your bones for his brains. Well actually that would be a giant. Now Ogres, huh, they are much worse. They'll make a soup from your freshly peeled skin. They'll chew your livers, squeeze the jelly from your eyes. Actually, it's quite good on toast. Back, back beast, back! I warned you! Right. This is the part, where you run away. Yeah! And stay out. Wanted. Fairytale creatures. Right, this one is full. Take it away. Give me that. Your fine days are over. -25 pieces of silver for the witch. Next. -Come on. Sit down there! And be quiet! This cage is so small. You wouldn't turn me in. I'll never be stubborn again. I can change. Please, give me another chance. Oh, shut up! Next. What do we got? This little wooden puppet. I'm not a puppet, I'm a real boy. Five shillings for the possessed toy. Take it away. No! Please, don't let them do it! Next. What do you got? Well, I've got a talking donkey! Right. Well that's good for ten schillings, if you can prove it. Oh, go ahead fella. Well? He's just a li..., just a little nervous. He's really quite a chatterbox. You boneheaded donkey! That's it. I have heard enough. Guards! No, no, he talks, he does! I can talk. I love to talk. I've talked to... Get her out of my sight! -No, no, I swear! Hey, I can fly. -He can fly! -He can fly! He can talk! -That's right, fool! Now I'm a flying, talking donkey! You might have seen house fly, maybe even a superfly. But I bet you ain't never seen a donkey fly! Seize him! Get him! This way! Hurry! You there. Ogre. -I. By the order of lord Farquaad. I am authorized to place you both under arrest. And transport you to designated resettlement facility. Oh really? You and what army? Can I say something to you? Listen, you were really, really something, back there. Incredible. Are you talking to... ...me? Yes, I was talking to you. Can I just tell you that you were really great back there\nwith those guards. They thought that was all over there. And then you showed up and BAM. There was tripping on over themselves like babes in the woods. That really made me feel good to see that. Oh, that's great. Really. Man, it's good to be free. Now, why don't you go celebrate your freedom with your own friends? But I... I don't have any friends. And I'm not going out there by myself. Hey wait a minute. I have a great idea... I'll stick with you. You and me in green fighting machine. Together we'll scare the spin if anybody crosses us. Oh, a, that was really scary. Maybe you don't mine me saying. If that don't work, your breath will certainly do the job done, 'cause... you definitively need some tic-tac or something, 'cause your breath stinks! Man you've ??? my note! Just like the time... ...and then I ate some rotten berries. Man I had some strong gases leaking out of my but that day. Why are you following me? I'll tell you why. 'Cause I'm all alone, there is no one here, beside me. My problems have all gone. There's no one to derive me. But you got to have free ... -Stop singing! Well, it's no wonder, you don't have any friends. Wow! Only a true friend would be that truly honest. Listen! Little donkey. Take a look at me! What am I? A... ...really tall? No! I'm an Ogre. You know, grab your torch and pitchforks. Doesn't that bother you? Nope. Really? -Really really. Oh? Man, I like you. What's your name? A..., Shrek. Shrek?! But do you know, what I like about you, Shrek? You've got that kind of: \"I don't care what nobody thinks of me\" thing. I like that, I respect that, Shrek. You're all right. Uh, look at that. Who would wanna live in a place like that? That would be my home. Oh, it is lovely. Just beautiful. You know you're quite a decorator. It's amazing what you did with such a modest budget. I like that boulder. That is a nice boulder. I guess, you don't entertain much, do you? I like my privacy. You know I do to. That's another thing, we have in common. Like I hate it when you got somebody in your face. You try to give them a hint and they won't leave. And then there's that big occurred silence, you know? Can I stay with you? -What? Can I stay with you, please. Of course! -Really? No. -Please! I don't want to go back there. You don't how is like to be concerned like a freak. Well..., maybe you do. But that's why we have to stick together! You got to let me stay! Please! Please! OK, OK. -But one night only. -Huh, thank you! A,\nwhat are you do... No! This is going to be fun. We can stay up late, swap the manly stories. And in the morning... I'm making waffles. Where do I sleep? Outside! Oh, a, I guess that's cool. You know, I don't know you and you don't know me... ... so I guess, outside is best for me. Here I go. Good night. I do like that half door. I'm a donkey all alone outside. Sit by myself outside, I guess. I'm all alone, there's no one here beside me. -I thought, I told you to stay outside. -I am outside. Well James. This is far from the farm, but what choice do we have? It's not... What a lovely bed. -Got you! I found some cheese. Awful stuff. -Is that you Gordon? -How did you know? Enough! What are you doing in my house? Oh, no, no, no... Death prods off the table! Where would we supposed to put her. The bed's taken. What? I live in a swamp. I've put up signs. I'm a terrifying Ogre! What do I have to do, to get a little privacy? Oh, no! No, no! What are you doing in my swamp? All right, get out of here. All of you. Move it! Come on, let's go. And hurry up, hurry up. No, no, not there. Not there! Hey don't look at me. I didn't invite them. Oh gosh, no one invited us. -What? We were forced to come here. -By who? Lord Farquaad. He ??? All right. Who knows where this Farquaad guy is? Oh I do. I know where he is. Does anyone else know where to find him? -Anyone at all? -Me. -Anyone? Oh pick me, I know! Me, me. Ok, fine. Attention all fairy tale things! Do not get comfortable. Your welcome is officially warned up. In fact. I'm gonna see this guy Farquaad right now and get all off my land and back where you came from. You. You're coming with me. All right. That's what I like to hear, man. Shrek and Donkey, two stubborn friends off on a world and big city adventure. I love it. I'm on road again. Sing with me Shrek! I'm on road again... What did I say about singing? -Can I whistle? -No. -Well, can I hummer? -All right. That's enough. He's ready to talk. Run, run, run as fast as you can, you can't catch me. I'm the gingerbread man. You monster. I'm not a monster here. You are. You and the rest of that fairytale trash, poisoning my perfect world. -Now tell me! Where are the others? -Eat me. I've tried to be fair to you, creatures. Now my patience has reached its end! -Tell me! Or I'll... -No, no, not the buttons. Not gumdrop buttons. All right! Who's hiding them? Ok, I'll tell you. -Do you know the muffin-man? -The muffin-man? -The muffin-man.\n-Yes, I know the muffin-man. Who lives on Proully lane? -Well, she's married to the muffin-man. -The muffin-man! -The muffin-man! -She's married to the muffin-man. My lord! We found it. Well then, what are you waiting for? Bring it in. Magic mirror. Don't tell him anything! Evening. Mirror, mirror on the wall. Is this not the most perfect kingdom of them all? Well, technically, you're not a king. A..., felonious. -You were saying. -What I mean is a... ...you're not a king, yet. But you can become one. All you have to do, is marry a princess. Go on. So, just sit back and relax my lord, because it's time for you to meet today's eligible bachelorettes. And here they are. Bachelorette number one is a mentally abused shading from a kingdom far, far away. She likes sushi and hottubbing anytime. Her hobbies include cooking and cleaning for two evil sisters. Please welcome... Cinderella. Bachelorette number two is a kemp wearing girl from a land of fantasy. Although she lives with seven other man, she is not easy. Just kiss hers dead frozen lips and find out what a live wife she is. Come on. Give it up for... Show-white. And last but certainly not least. Bachelorette number three is a fire-breathing ????, dragon guarded castle, surrounded by a hot boiling lava. But don't let that cool you off. She's a loaded pistol who likes Pina Coladas and getting cut in the rain. Yours for the rescuing, Princess Fiona. So will it be, bachelorette number one? Bachelorette number two? Or bachelorette number three? -Two... -Three! -Two! One. No, no, no. Three. Pick number three my lord. Ok, ok. Number three. Lord Farquaad. You've chosen... princess Fiona. She's nice. Fiona. She's perfect. All I have to do is just find someone... But I probably should mention little thing that happens at night... -I'll do it! -Yes, but after sunset... Silence! I will make this princess Fiona my queen. And Duloc will finally have the perfect king! Captain! Assemble your finest man. We're going to have a tournament! That's it, that's, right there, that's Duloc. I've told you I'll find it. So. That must be lord Farquaad's castle. Aha, that's the place. Do you think maybe he's compensating for something. Hey, hey wait up Shrek! -Hey, you! -No, no! Wait a second. Look, I'm not gonna eat you. I just... It's quiet. Too quiet. Where is everybody? Hey look at this. Wow! -Let's do that again. -No. no. All right. You're going the right way for smack bottom. Sorry about that. That\nchampion should have the honor, no, no... ...the privilege to go forth and rescue the lovely princess Fiona from the fireing keep of the dragon. If for any reason the winner is unsuccessful, the first runner up will take his place. And so on, and so forth. Some of you may die, but it's a sacrifice I'm willing to make. Applause. Let the tournament begin. What is that? Ugh, it's hideous. Oh, that's not very nice. It's just a donkey. Indeed. Knights! New plan. The one, who kills the Ogre, will be named champion. How about him. Oh, hey. Now, come on. Can't we just settle this over a pint? No? All right then. Come on. Hey Shrek! Let me, let me! The chair! Give him the chair! Thank you. Thank you, very much. I'm here until Thursday. Try the wheel! Shall I give the order sir? No. I have a better idea. People of Duloc. I give you our champion! What? Congratulation, Ogre. You've won the honor of embarking on a great and noble quest. Quest? I'm already on a quest. A quest to get my swamp back! -Your swamp? -Yeah, my swamp! Where you dumped those fairytale creatures. Indeed. All right Ogre, I'll make you a deal. Go on this quest for me and I'll give you your swamp back. Exactly the way it was? Down to the last slime covered toast tool. -And the squatters? -As good as gone. What kind of quest? Ok, let me get this straight! We gonna go find the dragon and rescue a princess just so Farquaad will give you back the swamp, which you only don't have, 'cause he filled it with full of freaks on the first place. -Is that about right? -You know what? Maybe there is a good reason, donkeys shouldn't talk. I don't get it Shrek. Why didn't you just pull some old Ogre stuff on them? You know, ??? . Grab his bones to make you brave. You know the whole Ogre trick. Oh, you know what. Maybe I could have decapitated entire village and put their heads on plate. Got a knife, cut open their spleens and drink their fluids. Does that sound good to you? A, no, not really, no. For your information, there is a lot more to Ogres than people think. -Example. -Example? OK, A-a-m, Ogres are like onions. -They stink? -Yes, no. -O, they make you cry. -No. Oh, you leave them out on the sun and they get all brown and start ??? little wild hairs? No! Layers! Onions have layers. Ogres have layers. Onions have layers. You get it? We both have layers. O, you both have layers. You\nknow not everybody likes onions. Cake! Everybody loves cakes. Cakes have layers. I don't care what everyone likes. Ogres are not like cakes. You know what else everyone likes? Paffe. Have you ever met a person and you say: \"Hey, let's get some paffe\" and they say I don't like paffe. Paffe is delicious. No! You tensed, irritating, miniature peace of barden. Ogres are like onions. End of story. Bye, bye. See you lather. Paffe is maybe the most delicious thing on the whole damn planet. You know I think I've preferred your humming. Do you have a tissue or something, 'cause I'm making a mess. Just the word paffe has made me start slimying Why, Shrek, did you do that? Man you got to warn somebody before you just crack one off. My mouth was opened and everything. Believe me donkey, if it was me, you'd be dead. It's brimstone. We must be getting close. Yeah, right, brimstone. Don't be talking ??? brimstone. I know what I smell and ??? no brimstone. And they don't come of stone neither. Sure it's big enough, but look at the location. Oh, Shrek, remember when you said that Ogres have layers? Oh, yeah. Well, I have a confession to make. Donkeys don't have layers. We wear ??? sleeves. Wait a second. Donkeys don't have sleeves. -You know what I mean. -Oh, you can't tell me you're afraid of highs. No, I'm just a little uncomfortable of being on a rickety bridge over boiling lake of lava! Come on donkey, I'm right here beside you. Ok? For emotional support. We'll just hackle this thing together one little baby step after time. -Really? -Really really. Ok. That makes me feel so much better. Just keep moving and don't look down. Don't look down, don't look down. Shrek! I'm looking down! I can't do this. Just let me off right now, please. -But you're already half way. -Yeah, but I know that half is safe. Ok, fine. I don't have time for this. You go back. Shrek, no, wait. Don't do that! Oh, I'm sorry. Do what? -Oh. This? -Yes, that! Yes, yes. Do it. OK. -No, Shrek! -I'm doing it. I'm gonna die. I'm gonna die. Shrek, I'm gonna die. That will do Donkey, that will do. Cool. So where is this fire breathing pain in the neck anyway? Inside. Waiting for us to rescue her. I was talking about the dragon Shrek. -Are you afraid? -No, but shhhhh. Oh, good. Me neither. Because there's nothing wrong with being afraid. Here's a..., something responsible of the situation. Not to mention dangerous situation. And there's dragon that\nbreathes fire. I'm sure he's meaner than a cow or anything, but they're scare. You know what I mean. I'm sure he's heavier than a cow... Donkey. Two things. Ok? Shut, up. Now go over there and see if you can find any stairs. Stairs? I thought we were looking for the princess. The princess will be up the stairs in the highest room in the tallest tower. What makes you think she'll be there? I read it in a book once. Cool. You handle the dragon, I'll handle the stairs. Oh, I'll find those stairs. I'll ???. That's right. Those stairs won't know which way they go. The drafting stairs, ??? Don't mess with me. I'm the stair master. I'm master of the stairs. I wish I had a stair right here right here now, I'd step all over it. Well, at least we know where the princess is. -But where is the... -Dragon! Donkey, look out! Got you. Oh, what large teeth you have. I mean, white sparkling teeth. You probably hear this all the time from your food, but you must bleach yourself, because that is one dashing smile you got there. And do I detect the hint of minty freshness? And you know what else? You're a girl dragon. Oh, sure. I mean 'course you're a girl dragon, 'cause you're just ricking the feminine beauty out. What's the matter with you? Do you have something in your eye? Man, I'd really love to stay, but you know I'm a asthmatic and I don't know if we would worked out. You'd be blowing smoke and stuff. Shrek! No, Shrek! Shrek! -Wake up! -What? Are you princess Fiona? I am. Awaiting a knight so bold as to rescue me. Oh, that's nice. Now let's go. But wait, sir knight. This be our first meeting. Should not be wonderful, romantic moment? Yeah. Sorry lady there's no time. Hey, what are you doing? You know, you should sweep me out of my feet. Out through the window and down the rope by to your valued steed. You've had a lot of time to plan this, haven't you? Uh-um. But we have to sing through this moment. You can residing of a poem to me. A ballad, a sonnet, a libretti. Or something. I don't think so. Well, can I at least know a name of my champion? Shrek. So, Shrek. I pray that you take this favor as a token of my gratitude. Thanks. -You didn't slay the dragon? -It's not my job to do this. Now, come on! But this isn't right. ??? That's what all the other knights did. Yeah. Right before they burst in the flame. That's not the point. Wait. Where are you going? Exit is\nover there. Well, I have to save my ass. What kind of knight are you? One of a kind. ...rush into a physical relationship. I'm not that emotionally ready for commitment of a this magnitude. That was the word I was looking for. Magnitude. Hey, that is unwanted physical contact. Hey, what are you doing? Ok, ok, let's just back up a little and take this one step at the time. I mean, we really should get to know each other first, you know what am I saying. As friends, maybe even as ??? Hey don't do that. That's my tail. That's ma personal tail. And you're going to tear it off.... Oh, no. No! -It talks?! -Yeah. It's getting to shut up, that's a trick. Ok, you two. Head for the exit. I'll take care of the dragon. Ruuuuun! You did it. You rescued me. Amizing, you're wonderful. You're a ... ...a little unorthodox I admit, but by deed is great and by heart is pure. I'm entirely in your debt. And where would a brave knight be without his noble steed. I hope you heard that. She called me a noble steed. She thinks I'm a steed. The battle is won. You may remove your helmet good sir knight. -Aah, no. -Why not? I have helmet hair. Please. I wouldst look upon the face of my rescuer. Oh, no, you wouldn't, dust. But, how will you kiss me? What? That wasn't in a job description. -Maybe it's a perk? -No. It's destiny. You must know how it goes. A princess locked in a tower and besieged by a dragon is rescued by a brave knight. And then they share true love's first kiss. With Shrek? You think, wait... ...you think Shrek is your true love? Well, yes. You think that Shrek is your true love. What is so funny? Let's just say, I'm not your type, ok? Of course you are. You're my rescuer. Now, now remove your helmet. Look. I really don't think this is a good idea. -Just take off the helmet. -I'm not going to. -Take it off! -No! -Now! -Ok, easy. As you command your highness. You're an Ogre. Oh, you were expecting Prince Charming. Well, yes, actually. Oh no. This is all wrong. You're not supposed to be an Ogre. Princess, I was sent to rescue you by lord Farquaad, ok? He's the one, who wants to marry you. Well, then why didn't he come to rescue me? Good question. You should ask him that, when we get there. But I have to be rescued by my true love. Not by some Ogre and his pet. Well so much for noble steed. Look princess. You're not making my job any easier. Well I'm\nsorry, but your job is not my problem. You can tell lord Farquaad that if he wants to rescue me properly, I'll be waiting for him right here. Hey, I'm no ones messenger boy, all right? -I'm a delivery boy. -You wouldn't dare. -You coming donkey? -Put me down! Yeah, I'm right behind you. Put me down or you will suffer the consequences. This is not dignified. Put me down. Ok, here's another question. Let's say that a woman 'digged' you, but you don't really like her, that way. Now, how you let her down real easy, so her feelings aren't hurt? But you don't get burned to a crisp neither. How do you do this? Just tell her, she's not your true love. Everyone knows it what happens when you find... Hey! The sooner we get to Duloc, the better. Oh, yeah. You gonna love it there princess. It's beautiful. And what of my groom to be, lord Farquaad. What's he like? Well, let me put it this way, princess. Men of Farquaad's stature are in short supply. Oh no, Shrek. There are those who think little of him. Stop it. Stop it, both of you. You know, you're just jealous that you can never measure up to a great ruler like lord Farquaad. Yeah. Well maybe you're right princess. But I'd like you do that measuring when you see him tomorrow Tomorrow? It will take that long? -Shouldn't we stop to make camp? -No. That would take longer. We can keep going. But there are robbers in the woods. Whoa, time out Shrek. Camp is definitely something that sounds good. Hey. Come on. I'm scarier than anything we're gonna see in this forest. I need to find somewhere to camp, now! Hey, over here. Shrek, we can do better than that. Now, I don't think this is decent for princess. No, no, it's perfect. It just needs a few homey touches. Homey touches? Like what? A door. Well, gentleman I'll be d..., good night. Do you want me to come in and read you a bedtime story, 'cause I will... I said good night! Shrek! What are you doing? I just..., you know... Oh, come on, I was just kidding. And that one, that's Throwback. The only Ogre to ever spit over three wheat fields. Right. Yeah. Hey, can you tell my future form these stars? Well, the stars don't tell the future, Donkey. They tell stories. Look. There's Blodna, the \"Flatulent\" You can guess what he is famous for. All right. Now I know you're making this up. No. Look. There he is and there's the group of hunters running away from his\nstag. Man, there ain't nothing, but a bunch of little dots. You know donkey, sometimes things are more than they appear. Forget it. Hey Shrek. What are you gonna do when we get our swamp back, anyway? -Our swamp? -You know. When we're through rescuing the princess and all that stuff. We? Donkey, there is no we. There's no our. There's just me and my swamp. And the first thing I'm gonna do, is build a ten foot wall around my land. You cut me deep Shrek, you cut me real deep just now. You know, what I think? I think this whole wall thing is just a way to keep somebody out. No, do you think? -Are you hiding something? -Never mind Donkey. Oh, this is another one of those onion things, isn't it? No. This is one of those drop it and leave it alone things. -Why don't you want to talk about it? -Why do you want to talk about it? -Oh, Why you block? -I'm not blocking. -Oh yes you are. -Donkey, I'm warning you. -Who are you trying to keep out? Just tell me that Shrek. Who? Everyone, ok? -Oh, now we're getting somewhere. -Oh, for 'the love of pit'. Hey, what's your problem Shrek? What do you got against the whole world anyway? Look. I'm not the one with the problem, ok? It's the world that seems to have a problem with me. People take one look at me and go: AAA... Help! Run! A big stupid ugly Ogre. They judge me, before they even know me. That's why I'm better off alone. You know what? When we met, I didn't think you're just a big stupid, ugly Ogre. Yeah, I know. So, a... Are there any donkeys up there? Well, there's a Cabby. The small and annoying. Ok, ok. I see him, now. Big shining one, right there. That one, over there? That's the moon. Again. Show me again. Mirror, mirror, show her to me. Show me the princess. Perfect. Yeah. You know I like like that. Oh come on baby... -Donkey. Wake up. -What? -Wake up. Morning. How do you like your eggs? -Good morning princess. -What's all this about? You know, we kind of got of to a bad start yesterday and I wanted to make it up to you. I mean, after all, you did rescue me. Thanks. Well, eat up. We've got a big day ahead of us. -Shrek! -What? It's a compliment. Better out than in I always say. But that's no way to behave in front of a princess. -Thanks. -She's as nasty as you are. You know. You're not exactly what I've expected. Well, maybe you shouldn't judge people before you get to know them. Princess! What are you doing? ???mon shery, for I am your saviour.\nAnd I am rescuing you from this green...beast. Hey! That's my princess. Go find your own. Please, monster. Can't you see I'm a little busy here? Look, pal. I don't know who you think you are. Oh, of course. How rude that was. Please, let me introduce myself. Oh marry men! Man, that was annoying. Oh, you little... Shall we? ???all the forin??? Whoa, hold on, now. Where did that come from? -What? -That. Back there. That was amazing. Where did you learn that? Well, when one lives alone one has to learn these things in case there's a... There is an arrow in your butt. What? Oh, would you look at that. Oh, no... This is all my fault. I'm so sorry. -What's wrong? -Shrek's hurt. -Shrek's hurt? Shrek's hurt! -Oh, no. Shrek's going to die. -Donkey, I'm ok. You can't do this to me Shrek. I'm too young for you to die. Keep your legs elevated. Turn your head ???. -Does anyone know how to handle... -Donkey! Calm down. If you want to help Shrek, run into woods and find me a blue flower with red thorns. Blue flower, red thorns. Ok, I'm on it. Blue flower, red thorns. Blue flower, red thorns. Don't die Shrek. And if you see a long tunnel, stay away from the light! -Donkey! -Oh, yeah. Right. Blue flower, red thorns. Blue flower, red thorns. -What are the flowers for? -For getting rid of the Donkey. Now, you hold still and I'll yank this thing out. -Hey! Easy with the yanking. -I'm sorry, but it has to come out. No, no. It's tender. What you're doing here is the opposite... -Don't move. -Ok, look. Time out. -Would you... Ok. What do you propose we do? Blue flower, red thorns. Blue flower, red thorns. Blue flower, red thorns. This would be so much easier if I wasn't colorblind. Blue flower, red thorns. Blue flower, red thorns. Hold on, Shrek. I'm coming! Not good. Ok, ok, I can lose it. It's just about it. Nothing happened. We were just a... Look if you want to be alone, all you had to do is ask, ok? Oh, come on. That's the last thing on my mind. The princess here was just... Au! Hey, what's that? Is that... There it is, princess. -Your future awaits you. -That's Duloc? Yeah. I know. You'll shrink things lord Farquaad is compensating for something, which I think needs, he has a I guess we better move on. Sure, but Shrek... -I'm worried about Donkey. -What? I mean. Look at him. He doesn't look so good. -What are you talking about? I'm fine. -Well, that's what they always say. And the next thing you know you're on your back. -Dead! -You know\nshe's right. You look awful. -Do you want to sit down? -You know, I'll make you up some tea. Well, I won't say nothing, but I've got this twinge in my neck. And if I turn my neck like this, look. Au, see? -He's hungry. I'll find us some dinner. -I'll get the firewood. Hey, where are you going? Oh man, I can't feel my thumbs. I don't have any thumbs!!! I think I need a hug. This is good. This is really good. -What is this? -Wheat rat. -Rotisserie style. -No kidding. -Oh, this is delicious. -Well, they also great in stews. Now, I don't mean to brag, but I make a mean wheat rat stew. I guess I'll be dining a little different late tomorrow night. Maybe you can come visit me in the swamp sometime. I'll cook all kinds of stuff for you. Swamp toast, soup fish, eye tartar. You name it. I'd like that. -Ah... , princess? -Yes, Shrek? I'm a.... I was wondering. Are you... a... Are you gonna eat that? Man, isn't this romantic. Just look at that sunset. Sunset?! Oh, no. It's late. It's very late. -What? -Wait a minute. I see what's going on here. You're afraid of the dark. Aren't you? Yes, yes. That's it. That's, I'm terrified. You know I'll better go inside. But don't feel bad, princess. I used to be afraid of the dark too. Until... Hey, no, wait. I'm still afraid of the dark. -Good night. -Good night. Ahh. Now I really see what's going on here. Oh, what are you talking about. Hey I don't wanna even hear. Look, I'm an animal and I got instincts. And I know that you two are digging on each other. I can feel it. Oh, you're crazy. I'm just bringing her back to Farquaad. Oh, come on, Shrek. Wake up and smell the fairemones. Just go in there and tell her how you feel. There's nothing to tell. Besides, even if I did tell her that... well you know. I'm not saying that I do, 'cause I don't. She's a princess and I'm... ...an Ogre. Yeah, an Ogre. -Hey, where are you going? -To get more firewood. Princess. Princess Fiona? Princess, where are you? Princess? It's very spooky in here and are we playing little games. -No, no. -Help! Shrek! Shrek! -No. -Shrek! -It's ok. It's ok. -What did you do with the princess? -Donkey, shhh. I'm the princess. -It's me, in this body. -Oh my god. You ate the princess. -Can you hear me? -Donkey! Listen, keep breathing. I'll get you out of there! Shrek! Shrek! Shrek! This is me. Princess? What happened to you? You're a... different. -I'm ugly, ok? -Yeah. Was it something that you ate? 'Cause I told Shrek those rats were a bad idea. -You are what you eat, I say. -No. I've been this way as long as I can remember. What do you mean? Look, I've never seen\nyou like this before. It only happens when the sun goes down. By night one way, by day another. This shall be the norm until you find true love's first kiss. Then, take love's true form... -Oh, that's beautiful. I didn't know you wrote poetry. -It's the spell. When I was a little girl, a witch cast a spell on me. Every night I become this. This horrible ugly beast. I was placed in a tower to await the day when my true love would rescue me. That's why I have to marry lord Farquaad tomorrow, before the sun sets and he sees me, like this? All right, all right. Calm down. Look, it's not that bad. You're not that ugly. Wait, wait, I'll not lie, you are ugly. But you only look like this at night. Shrek's ugly 24/7. But Donkey, I'm a princess. And this is not how a princess is meant to look. Princess. How about if you don't marry Farquaad? I have to. Only my true love's kiss can brake the spell. But you know, you're kind of an Ogre. And Shrek... Well you've got a lot in common. Shrek? Princess, I... How is it going first of all? Good? Good for me to. I'm ok. I saw this flower and thought of you because it's pretty. And, well, I don't really like it, but I thought you may like it, because you're pretty. But I like you anyway. A.... I'm in trouble. Ok, here we go. Who could ever love a piece so hideous and ugly? Princess and ugly don't go together. That's why I can't stay here with Shrek, but only chance to live happily ever after is to marry my true love. Don't you see, Donkey? That's just how it has to be. It's the only way to break the spell. Well, at least you've got tell Shrek the truth. No, no. You can't breathe the word. No one must ever know. What's the point of being unable to talk? You got to keep secrets. Promise you won't tell. Promise! You know, before this is over, I'm going to need whole lot of serious therapies. All right, all right. I won't tell him. But you should. Look at my eye twitching. I tell him, I tell him not. I tell him. I tell him not. I tell him! Shrek! Shrek! There's something I want ... Shrek. Are you all right? Perfect. Never been better. I... There's something I have to tell you. You don't have to tell me anything, princess. I heard enough last night. -You've heard what I said? -Every word. I thought you'd understand? Oh, I understand! Like you said, who could love a hideous, ugly beast! -I thought that wouldn't matter to you. -Yeah, well, it does. Ah, right on time. Princess. I brought you a little something. What I missed? What I missed? -Princess Fiona. -As\npromised. Now hand it over. Very well, Ogre. The deed to your swamp. Cleared out as agreed. Take it and go. Before I change my mind. Forgive me princess for startling you, but you startled me. For I've never seen such a radiant beauty before. -I am lord Farquaad. -Lord Farquaad? Oh, no, no... forgive me my lord for I was just saying short... farewell. Oh. That is so sweet. You don't have to raise good manners on the Ogre. -It's not like it has feelings. -No. You're right. It doesn't. Princess Fiona, beautiful fair flawless Fiona, I ask your hand in marriage. Will you be the perfect bride for the perfect groom? Lord Farquaad, I accept. Nothing would make... Excellent! I'll start the plans for tomorrow we wedd... No! I mean I... Why wait? Let's get married today. Before sunset. Oh, anxious are we? You're right. The sooner, the better. There's so much to do. There is the camera, the cake, the band, the guests... Captain! Round up some guests. Farewell Ogre. Shrek, what are you doing? You let her get away. -Yeah, so what. -Shrek. There's something about her that you don't know. -I talked to her last night. She's... -Yeah I know you talked to her last night. You're great pal, aren't you? Now, if you two are such good friend, why didn't you follow her home? -Shrek. I want to go with you. -I told you, didn't I? You're not coming home with me. I live alone. My swamp, me and nobody else! Understand? Nobody! Especially useless, pathetic, annoying, talking donkeys! -But. I thought... -Yeah. You know what? You thought wrong. Shrek. Donkey? What are you doing? I was thinking of all the people, you would recognize a wall when you see one. Well, yeah. But the wall supposed to go around my swamp. Not through it. It is around your half. See? That's your half and this is my half. Oh, your half? Yes, my half. I helped rescue the princess. I did half the work. I get half the booty. Now hand me that big old rock, the one that looks like your head -Back off! -No. You back off! -This is my swamp. -Our swamp. -Let go, Donkey! -You let go! -Stubborn jackass. -Smelly Ogre. Fine! Hey, hey, come back here. I'm not through with you, yet. -Well, I'm through with you! -Well, you know. You were always me, me, me. Well, guess what? Now it's my turn! So you just shut up and pay attention! You are mean to me, you insult me, you don't appreciate anything that I\ndo! You're always pushing me around or pushing me away. Oh, yeah? Well, if I treated you so bad, how come you came back? Because that's what friend do. They forgive each other! Oh, yeah. You're right Donkey. I forgive you for stabbing me in the back! You're so wrapped up in layers, onion boy. You're afraid of your own feelings. -Go away. -See? There you are, doing it again. Just like you did it to Fiona. And all she ever do, was like you. Maybe even love you. Love me? She said I was ugly! A hideous creature. -I heard that you two were talking. -She wasn't talking about you. She was talking about... ...somebody else. She wasn't talking about me? Well then, who was she talking about? No way, I'm not saying anything. You won't listen to me, right? Right? -Donkey. -No! Ok, look. I'm sorry, all right? I'm sorry. I guess I am just a big stupid, ugly Ogre. Can you forgive me? -Hey, that's the friends are for, right? -Right. -Friends? -Friends. So? What did Fiona said about me? Why are you asking me for? Why don't you just go ask her. The wedding! We'll never make it in time! Never fear! For where there is a will, there is a way. And I have I way. Donkey? -I guess this is just my act of magnetism. -Oh, come here, you. All right. All right. Don't get all started. No one likes kissass. All right, hop on. Hold on tight. I hadn't have a chance to install seat belts, yet. People of Duloc. We gather here today to bear witness to reunion of our new king... Excuse me. Could you just skip ahead to \"I do's\"? Go on. Go ahead and have some fun, if we need you, I'll whistle. How about that? Shrek, wait, wait a minute. You want to do this right, don't you? -What are you talking about? -It's the line, it's the line you got to wait for. The priest is going to say: \"Speak now or forever hold your peace\". And that's where you say: \"I object\". -I don't have time for this. -Wait, wait. What are you doing? Listen to me! Look, you love this woman, don't you? -Yes. -You want to hold her! -Yes. -Please her! -Yes! Then you got to, got to try a little tender love. -The chicks love that romantic crap. -All right. Cut it out. When does this guy say the line? We got to check it out. And as so by the power of these two... What do you see? -I now pronounce you... -There they go! -...he all ready said it. -Oh, for 'the love of pit'. I object! Shrek? Oh, now what does he want? Hi, everyone. Having a\ngood time, aren't you? I love Duloc, first of all. Very clean. -What are you doing here? -Really, it's rude enough being alive, when no one wants you. But showing up uninvited to a wedding... -Fiona! I need to talk to you. -Oh, now you wanna talk? Well it's a little late for that. So if you'll excuse me. -But you can't marry him! -And why not? Because, because he's just marrying you so he can be king. -Outrageous! Fiona, don't listen to him. -He's not your true love. -What do you know about true love? -Well, I ...I'm in... Oh, this is precious. The Ogre has fallen in love with the princess. Laugh. Shrek. Is this true? Who cares. It's preposterious. Fiona, my love, we gonna kiss away for our happily ever after. Now kiss me! By night one way, by day another. I wanted to show you before. Well. That explains a lot. Oh. It's disgusting. Guards, guards. I order you to get them out of my sight. -Now! Get them! Get them, both! -No! This marriage is minding, and that makes me king. See? See? -Shrek! -No. -Don't just stand there, you dogs. -Get out of my way. No! Shrek! -And as for you my wife. -Fiona! I'll have you locked back in that tower for the rest of your days! I will have order. I will have potential. I will have... All right, nobody move! I got a dragon here and I'm not afraid to use it. I'm a donkey on the edge! Celebrity marriages. They never last, do they? Go ahead Shrek. -Fiona? -Yes, Shrek? I love you. Really? Really, really. I love you too. A time for true love's first kiss... Fiona? Fiona? Are you all right? Yes. But I don't understand. I'm supposed to be beautiful. But you are beautiful. I was hoping this would be a happy ending. God bless us, everyone.\n", + "importAnnotations": false + }, + "direction": true, + "startTime": "2026-08-10T23:10:24.477Z", + "endTime": "2026-08-10T23:10:24.477Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:10:24.495Z", + "projectId": 1, + "updatedAt": "2026-08-10T23:10:24.495Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:10:24.855Z", + "endTime": "2026-08-10T23:10:24.855Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:10:24.495Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T23:10:24.495Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:10:24.856Z", + "endTime": "2026-08-10T23:10:24.856Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "documentUpload", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:10:24.877Z", + "endTime": "2026-08-10T23:10:24.877Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1099, + "clientY": 3, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:10:27.359Z", + "endTime": "2026-08-10T23:10:27.359Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:10:27.724Z", + "endTime": "2026-08-10T23:10:27.724Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/110-manage-tags.json b/backend/tests/regression_stories/110-manage-tags.json new file mode 100644 index 000000000..b175b6052 --- /dev/null +++ b/backend/tests/regression_stories/110-manage-tags.json @@ -0,0 +1,882 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:10.707Z", + "traceCount": 49, + "recording": { + "name": "110-manage-tags", + "status": "finished", + "startTime": "2026-08-10T23:11:04.555Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:12:06.859Z" + }, + "traces": [ + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 2, + "name": "Recording 8/11/2026, 1:11:04 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:11:04.556Z", + "startTime": "2026-08-10T23:11:04.555Z", + "updatedAt": "2026-08-10T23:11:04.556Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:11:04.566Z", + "endTime": "2026-08-10T23:11:04.566Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:11:06.257Z", + "endTime": "2026-08-10T23:11:06.257Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/tags", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:11:08.581Z", + "endTime": "2026-08-10T23:11:08.581Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "1f20ce63-a0f6-481a-90c9-f3409fba3c28", + "direction": true, + "startTime": "2026-08-10T23:11:08.594Z", + "endTime": "2026-08-10T23:11:08.594Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "e611fc0a-e224-4adf-9368-13b81eb578f2", + "direction": true, + "startTime": "2026-08-10T23:11:08.598Z", + "endTime": "2026-08-10T23:11:08.598Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "605c8a32-1e44-4c73-a18a-7b3aca521804", + "direction": true, + "startTime": "2026-08-10T23:11:08.599Z", + "endTime": "2026-08-10T23:11:08.599Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "26615ad8-74c3-4253-904c-61aa49201f22", + "direction": true, + "startTime": "2026-08-10T23:11:08.599Z", + "endTime": "2026-08-10T23:11:08.599Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "f2d7d29e-6f19-47b4-b6f9-7713e873bef7", + "direction": true, + "startTime": "2026-08-10T23:11:08.599Z", + "endTime": "2026-08-10T23:11:08.599Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "ed8bb442-2e6d-4283-a193-979cd39f03fd", + "direction": true, + "startTime": "2026-08-10T23:11:08.599Z", + "endTime": "2026-08-10T23:11:08.599Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:11:08.636Z", + "endTime": "2026-08-10T23:11:08.636Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:11:08.638Z", + "endTime": "2026-08-10T23:11:08.638Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "tagRefresh", + "payload": [ + { + "id": 1, + "name": "Highlight", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "warning", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Highlight" + }, + { + "id": 2, + "name": "Strength", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "success", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Strength" + }, + { + "id": 3, + "name": "Weakness", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "danger", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Weakness" + }, + { + "id": 4, + "name": "Other", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "info", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Other" + } + ], + "direction": false, + "startTime": "2026-08-10T23:11:08.641Z", + "endTime": "2026-08-10T23:11:08.641Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add new tag set" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:11:09.919Z", + "endTime": "2026-08-10T23:11:09.919Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:11:10.385Z", + "endTime": "2026-08-10T23:11:10.385Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 805, + "clientY": 154, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:11.521Z", + "endTime": "2026-08-10T23:11:11.521Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 590, + "clientY": 172, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:14.783Z", + "endTime": "2026-08-10T23:11:14.783Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 529, + "clientY": 145, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:16.440Z", + "endTime": "2026-08-10T23:11:16.440Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 491, + "clientY": 220, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:20.056Z", + "endTime": "2026-08-10T23:11:20.056Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 525, + "clientY": 353, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:22.936Z", + "endTime": "2026-08-10T23:11:22.936Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 676, + "clientY": 344, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:27.356Z", + "endTime": "2026-08-10T23:11:27.356Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 835, + "clientY": 366, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:29.039Z", + "endTime": "2026-08-10T23:11:29.039Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 836, + "clientY": 363, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:30.323Z", + "endTime": "2026-08-10T23:11:30.323Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 509, + "clientY": 424, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:34.256Z", + "endTime": "2026-08-10T23:11:34.256Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 668, + "clientY": 400, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:37.071Z", + "endTime": "2026-08-10T23:11:37.071Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 826, + "clientY": 409, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:38.340Z", + "endTime": "2026-08-10T23:11:38.340Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 473, + "clientY": 452, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:41.839Z", + "endTime": "2026-08-10T23:11:41.839Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 681, + "clientY": 472, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:44.355Z", + "endTime": "2026-08-10T23:11:44.355Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 848, + "clientY": 494, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:46.473Z", + "endTime": "2026-08-10T23:11:46.473Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 513, + "clientY": 536, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:50.320Z", + "endTime": "2026-08-10T23:11:50.320Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 530, + "clientY": 513, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:51.089Z", + "endTime": "2026-08-10T23:11:51.089Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 648, + "clientY": 498, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:53.940Z", + "endTime": "2026-08-10T23:11:53.940Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 927, + "clientY": 515, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:55.690Z", + "endTime": "2026-08-10T23:11:55.690Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "name": "newtags", + "tags": [ + { + "name": "first", + "colorCode": "info", + "description": "1st" + }, + { + "name": "second", + "colorCode": "warning", + "description": "2nd" + }, + { + "name": "third", + "colorCode": "success", + "description": "3rd" + }, + { + "name": "fourth", + "colorCode": "danger", + "description": "4th" + } + ], + "description": "hi" + }, + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:11:58.998Z", + "endTime": "2026-08-10T23:11:58.998Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "tag_setRefresh", + "payload": [ + { + "id": 2, + "name": "newtags", + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:11:59.004Z", + "projectId": 1, + "updatedAt": "2026-08-10T23:11:59.004Z", + "description": "hi" + } + ], + "direction": false, + "startTime": "2026-08-10T23:11:59.043Z", + "endTime": "2026-08-10T23:11:59.043Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "tagRefresh", + "payload": [ + { + "id": 5, + "name": "first", + "public": false, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "info", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:11:59.029Z", + "description": "1st" + }, + { + "id": 6, + "name": "second", + "public": false, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "warning", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:11:59.029Z", + "description": "2nd" + }, + { + "id": 7, + "name": "third", + "public": false, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "success", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:11:59.029Z", + "description": "3rd" + }, + { + "id": 8, + "name": "fourth", + "public": false, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "danger", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:11:59.029Z", + "description": "4th" + } + ], + "direction": false, + "startTime": "2026-08-10T23:11:59.044Z", + "endTime": "2026-08-10T23:11:59.044Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1074, + "clientY": 652, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:11:59.257Z", + "endTime": "2026-08-10T23:11:59.257Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:12:00.947Z", + "endTime": "2026-08-10T23:12:00.947Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 961, + "clientY": 484, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:12:02.040Z", + "endTime": "2026-08-10T23:12:02.040Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/tags" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.343Z", + "endTime": "2026-08-10T23:12:04.343Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "097a8a75-cf1f-4011-a313-42ed923e2a37", + "direction": true, + "startTime": "2026-08-10T23:12:04.347Z", + "endTime": "2026-08-10T23:12:04.347Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "97321ea9-b0dd-4c18-b374-63841a27ef56", + "direction": true, + "startTime": "2026-08-10T23:12:04.348Z", + "endTime": "2026-08-10T23:12:04.348Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.366Z", + "endTime": "2026-08-10T23:12:04.366Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.378Z", + "endTime": "2026-08-10T23:12:04.378Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.378Z", + "endTime": "2026-08-10T23:12:04.378Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.378Z", + "endTime": "2026-08-10T23:12:04.378Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.378Z", + "endTime": "2026-08-10T23:12:04.378Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:12:04.386Z", + "endTime": "2026-08-10T23:12:04.386Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:12:05.288Z", + "endTime": "2026-08-10T23:12:05.288Z" + }, + { + "recordingId": 2, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1064, + "clientY": 6, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:12:05.679Z", + "endTime": "2026-08-10T23:12:05.679Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/115-set-default-tag-set.json b/backend/tests/regression_stories/115-set-default-tag-set.json new file mode 100644 index 000000000..8e176b8a5 --- /dev/null +++ b/backend/tests/regression_stories/115-set-default-tag-set.json @@ -0,0 +1,473 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:13.468Z", + "traceCount": 25, + "recording": { + "name": "115-set-default-tag-set", + "status": "finished", + "startTime": "2026-08-10T23:12:44.990Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:12:55.458Z" + }, + "traces": [ + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 3, + "name": "Recording 8/11/2026, 1:12:44 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:12:44.992Z", + "startTime": "2026-08-10T23:12:44.990Z", + "updatedAt": "2026-08-10T23:12:44.992Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:12:45.007Z", + "endTime": "2026-08-10T23:12:45.007Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:12:46.125Z", + "endTime": "2026-08-10T23:12:46.125Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/tags", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:12:49.012Z", + "endTime": "2026-08-10T23:12:49.012Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "79008785-b114-4544-aea3-21a58e2dd4b4", + "direction": true, + "startTime": "2026-08-10T23:12:49.019Z", + "endTime": "2026-08-10T23:12:49.019Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "7d504555-53b7-4451-8095-672bb79848bb", + "direction": true, + "startTime": "2026-08-10T23:12:49.020Z", + "endTime": "2026-08-10T23:12:49.020Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "28f55d35-3d1c-42c4-9e4e-b94c8849a09e", + "direction": true, + "startTime": "2026-08-10T23:12:49.020Z", + "endTime": "2026-08-10T23:12:49.020Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "5becb57e-dc4a-4439-8bb6-fccac1715a57", + "direction": true, + "startTime": "2026-08-10T23:12:49.020Z", + "endTime": "2026-08-10T23:12:49.020Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "be95014b-42bc-45c7-b264-cedb8a2615d1", + "direction": true, + "startTime": "2026-08-10T23:12:49.020Z", + "endTime": "2026-08-10T23:12:49.020Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "42749734-36ed-4c21-937b-f243b08b3d56", + "direction": true, + "startTime": "2026-08-10T23:12:49.020Z", + "endTime": "2026-08-10T23:12:49.020Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:12:49.035Z", + "endTime": "2026-08-10T23:12:49.035Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:12:49.035Z", + "endTime": "2026-08-10T23:12:49.035Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "appSettingSet", + "payload": { + "key": "tags.tagSet.default", + "value": 2 + }, + "direction": true, + "startTime": "2026-08-10T23:12:50.101Z", + "endTime": "2026-08-10T23:12:50.101Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "action": "defaultTagSet", + "params": {} + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:12:50.101Z", + "endTime": "2026-08-10T23:12:50.101Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "appSettings", + "payload": { + "logo.reBgColor": "#ffe599", + "system.baseUrl": "localhost:3000", + "app.login.guest": "true", + "service.nlp.url": "http://localhost:4852", + "projects.default": "1", + "app.study.enabled": "true", + "app.register.terms": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "service.nlp.enabled": "true", + "service.nlp.timeout": "60000", + "tags.tagSet.default": "2", + "app.config.copyright": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "app.landing.linkDocs": "/docs", + "app.landing.showDocs": "true", + "app.register.enabled": "true", + "rpc.moodleAPI.apiKey": "", + "rpc.moodleAPI.apiUrl": "", + "system.auth.ldap.url": "", + "statistics.batch.size": "100", + "rpc.moodleAPI.courseID": "1", + "service.nlp.retryDelay": "10000", + "annotator.nlp.activated": "true", + "app.landing.linkProject": "https://intertext.ukp-lab.de/", + "app.landing.showProject": "true", + "system.auth.saml.issuer": "", + "tags.recencySortingIsOn": "false", + "app.landing.linkFeedback": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "app.landing.showFeedback": "true", + "app.login.forgotPassword": "true", + "app.register.requestData": "true", + "app.register.requestName": "true", + "system.auth.ldap.enabled": "false", + "system.auth.saml.enabled": "false", + "annotator.collab.response": "true", + "app.register.requestStats": "true", + "editor.edits.debounceTime": "150", + "editor.toolbar.tools.bold": "true", + "editor.toolbar.tools.font": "true", + "editor.toolbar.tools.link": "false", + "editor.toolbar.tools.size": "true", + "editor.toolbar.visibility": "true", + "email.template.assignment": "", + "modal.nlp.request.timeout": "15000", + "service.nlp.test.fallback": "true", + "system.auth.orcid.enabled": "false", + "system.auth.orcid.sandbox": "true", + "annotator.sidebar.maxWidth": "50", + "annotator.sidebar.minWidth": "400", + "app.config.consent.enabled": "true", + "editor.toolbar.tools.align": "true", + "editor.toolbar.tools.clean": "true", + "editor.toolbar.tools.color": "true", + "editor.toolbar.tools.image": "false", + "editor.toolbar.tools.video": "false", + "email.template.studyClosed": "", + "system.mailService.enabled": "true", + "editor.toolbar.tools.header": "true", + "editor.toolbar.tools.indent": "true", + "editor.toolbar.tools.italic": "true", + "editor.toolbar.tools.strike": "true", + "email.template.registration": "", + "email.template.sessionStart": "", + "email.template.twoFactorOtp": "", + "email.template.verification": "", + "system.auth.ldap.searchBase": "", + "system.auth.saml.entryPoint": "", + "editor.toolbar.tools.formula": "false", + "email.template.passwordReset": "", + "email.template.sessionFinish": "", + "system.auth.redirect.baseUrl": "http://localhost:3000", + "system.auth.saml.callbackUrl": "", + "system.mailService.smtp.host": "smtp.gmail.com", + "system.mailService.smtp.port": "587", + "annotator.nlp.request.timeout": "15000", + "editor.edits.historyGroupTime": "60000", + "modal.nlp.rotation_timer.long": "120000", + "system.auth.ldap.2fa.required": "false", + "system.auth.ldap.searchFilter": "(uid={{username}})", + "system.auth.orcid.callbackUrl": "", + "system.auth.saml.2fa.required": "false", + "app.register.emailVerification": "true", + "editor.toolbar.tools.checkList": "true", + "editor.toolbar.tools.direction": "true", + "editor.toolbar.tools.subscript": "true", + "editor.toolbar.tools.underline": "true", + "modal.nlp.rotation_timer.short": "30000", + "rpc.moodleAPI.showInput.apiKey": "true", + "rpc.moodleAPI.showInput.apiUrl": "true", + "system.auth.local.2fa.required": "false", + "system.auth.orcid.2fa.required": "false", + "system.mailService.smtp.secure": "true", + "editor.edits.showHistoryForUser": "false", + "editor.toolbar.showHTMLDownload": "true", + "editor.toolbar.tools.background": "true", + "editor.toolbar.tools.blockquote": "true", + "editor.toolbar.tools.code-block": "true", + "email.template.submissionUpload": "", + "system.mailService.smtp.enabled": "true", + "annotator.comments.votes.enabled": "true", + "app.login.passwordResetRateLimit": "5", + "app.register.acceptStats.default": "false", + "editor.document.showButtonCreate": "true", + "editor.toolbar.tools.orderedList": "true", + "editor.toolbar.tools.superscript": "true", + "rpc.moodleAPI.showInput.courseID": "true", + "system.mailService.sendMail.path": "/usr/sbin/sendmail", + "system.mailService.senderAddress": "system@localhost", + "system.mailService.smtp.auth.pass": "", + "system.mailService.smtp.auth.user": "", + "topBar.projects.hideProjectButton": "false", + "editor.toolbar.tools.unorderedList": "true", + "annotator.comments.votes.onlyUpvote": "false", + "email.template.passwordResetSuccess": "", + "system.mailService.sendMail.enabled": "true", + "system.mailService.smtp.auth.enabled": "true", + "annotator.nlp.summarization.activated": "true", + "annotator.nlp.summarization.maxLength": "30", + "annotator.nlp.summarization.minLength": "10", + "annotator.nlp.summarization.skillName": "summarization", + "editor.document.showButtonPDFDownload": "true", + "statistics.tracking.mouseDebounceTime": "500", + "system.auth.tokenExpiry.passwordReset": "1", + "annotator.nlp.summarization.annoLength": "10", + "app.register.acceptDataSharing.default": "false", + "dashboard.navigation.component.default": "Home", + "editor.document.showButtonHTMLDownload": "true", + "app.register.emailVerificationRateLimit": "2", + "editor.document.showButtonDeltaDownload": "false", + "system.auth.tokenExpiry.emailVerification": "24", + "annotator.nlp.sentiment_analysis.activated": "false", + "email.template.submissionUploadConfirmation": "", + "annotator.download.enabledBeforeStudyClosing": "true", + "annotator.comments.defaultNumsShown.levelZero": "3", + "annotator.comments.defaultNumsShown.levelOneUp": "1" + }, + "direction": false, + "startTime": "2026-08-10T23:12:50.131Z", + "endTime": "2026-08-10T23:12:50.131Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/tags" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.915Z", + "endTime": "2026-08-10T23:12:52.915Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "ec386962-a38d-4ea4-9d69-923b210fb5eb", + "direction": true, + "startTime": "2026-08-10T23:12:52.917Z", + "endTime": "2026-08-10T23:12:52.917Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "9ec60a5f-6a29-41dd-ba96-42894f5af073", + "direction": true, + "startTime": "2026-08-10T23:12:52.918Z", + "endTime": "2026-08-10T23:12:52.918Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.926Z", + "endTime": "2026-08-10T23:12:52.926Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.935Z", + "endTime": "2026-08-10T23:12:52.935Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.936Z", + "endTime": "2026-08-10T23:12:52.936Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.936Z", + "endTime": "2026-08-10T23:12:52.936Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.939Z", + "endTime": "2026-08-10T23:12:52.939Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:12:52.939Z", + "endTime": "2026-08-10T23:12:52.939Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 192, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:12:53.773Z", + "endTime": "2026-08-10T23:12:53.773Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:12:54.553Z", + "endTime": "2026-08-10T23:12:54.553Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/120-publish-tag-set.json b/backend/tests/regression_stories/120-publish-tag-set.json new file mode 100644 index 000000000..127694fa9 --- /dev/null +++ b/backend/tests/regression_stories/120-publish-tag-set.json @@ -0,0 +1,483 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:16.420Z", + "traceCount": 30, + "recording": { + "name": "120-publish-tag-set", + "status": "finished", + "startTime": "2026-08-10T23:13:22.602Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:13:36.689Z" + }, + "traces": [ + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 4, + "name": "Recording 8/11/2026, 1:13:22 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:13:22.603Z", + "startTime": "2026-08-10T23:13:22.602Z", + "updatedAt": "2026-08-10T23:13:22.603Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:13:22.614Z", + "endTime": "2026-08-10T23:13:22.614Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:13:23.510Z", + "endTime": "2026-08-10T23:13:23.510Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/tags", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:13:25.863Z", + "endTime": "2026-08-10T23:13:25.863Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "ae953c45-b375-43c4-9149-3a01fbe079af", + "direction": true, + "startTime": "2026-08-10T23:13:25.872Z", + "endTime": "2026-08-10T23:13:25.872Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "35fa53ed-9cf9-4b7e-9a55-9e71fad9903f", + "direction": true, + "startTime": "2026-08-10T23:13:25.872Z", + "endTime": "2026-08-10T23:13:25.872Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "7e8fc606-57d6-4a91-92c5-941dc4f1ab4e", + "direction": true, + "startTime": "2026-08-10T23:13:25.879Z", + "endTime": "2026-08-10T23:13:25.879Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:13:25.891Z", + "endTime": "2026-08-10T23:13:25.891Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "26f74d6f-3b63-41f4-a2d1-4f9fb8623dc2", + "direction": true, + "startTime": "2026-08-10T23:13:25.880Z", + "endTime": "2026-08-10T23:13:25.880Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "776c34f5-ce9f-451c-b7b3-adeaff37079e", + "direction": true, + "startTime": "2026-08-10T23:13:25.880Z", + "endTime": "2026-08-10T23:13:25.880Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "15236027-7374-4d77-a719-e88260075ff1", + "direction": true, + "startTime": "2026-08-10T23:13:25.879Z", + "endTime": "2026-08-10T23:13:25.879Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:13:25.897Z", + "endTime": "2026-08-10T23:13:25.897Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "action": "publishTagSet", + "params": { + "tagSetId": 2 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:13:28.975Z", + "endTime": "2026-08-10T23:13:28.975Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "confirmPublish Tagset", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:13:29.425Z", + "endTime": "2026-08-10T23:13:29.425Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "confirmPublish Tagset", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:13:30.349Z", + "endTime": "2026-08-10T23:13:30.349Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "id": 2, + "public": true + }, + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:13:30.352Z", + "endTime": "2026-08-10T23:13:30.352Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "tagRefresh", + "payload": [ + { + "id": 5, + "name": "first", + "public": true, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "info", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.360Z", + "description": "1st" + }, + { + "id": 6, + "name": "second", + "public": true, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "warning", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.365Z", + "description": "2nd" + }, + { + "id": 7, + "name": "third", + "public": true, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "success", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.372Z", + "description": "3rd" + }, + { + "id": 8, + "name": "fourth", + "public": true, + "userId": 4, + "deleted": false, + "tagSetId": 2, + "colorCode": "danger", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.387Z", + "description": "4th" + } + ], + "direction": false, + "startTime": "2026-08-10T23:13:30.399Z", + "endTime": "2026-08-10T23:13:30.399Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "tag_setRefresh", + "payload": [ + { + "id": 2, + "name": "newtags", + "public": true, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:11:59.004Z", + "projectId": 1, + "updatedAt": "2026-08-10T23:13:30.354Z", + "description": "hi" + } + ], + "direction": false, + "startTime": "2026-08-10T23:13:30.399Z", + "endTime": "2026-08-10T23:13:30.399Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 935, + "clientY": 261, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:13:30.726Z", + "endTime": "2026-08-10T23:13:30.726Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 940, + "clientY": 238, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:13:31.525Z", + "endTime": "2026-08-10T23:13:31.525Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/tags" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.256Z", + "endTime": "2026-08-10T23:13:34.256Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "6bcd0373-de7f-4f20-9110-9b3bfcb9be04", + "direction": true, + "startTime": "2026-08-10T23:13:34.268Z", + "endTime": "2026-08-10T23:13:34.268Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "4c092857-a498-4745-acbb-c9ec39253a41", + "direction": true, + "startTime": "2026-08-10T23:13:34.268Z", + "endTime": "2026-08-10T23:13:34.268Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.282Z", + "endTime": "2026-08-10T23:13:34.282Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.292Z", + "endTime": "2026-08-10T23:13:34.292Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.292Z", + "endTime": "2026-08-10T23:13:34.292Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.296Z", + "endTime": "2026-08-10T23:13:34.296Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.296Z", + "endTime": "2026-08-10T23:13:34.296Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:13:34.297Z", + "endTime": "2026-08-10T23:13:34.297Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 490, + "clientY": 15, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:13:35.124Z", + "endTime": "2026-08-10T23:13:35.124Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:13:35.446Z", + "endTime": "2026-08-10T23:13:35.446Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/130-create-html-document.json b/backend/tests/regression_stories/130-create-html-document.json new file mode 100644 index 000000000..2f9b524bc --- /dev/null +++ b/backend/tests/regression_stories/130-create-html-document.json @@ -0,0 +1,332 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:19.170Z", + "traceCount": 17, + "recording": { + "name": "130-create-html-document", + "status": "finished", + "startTime": "2026-08-10T23:14:08.048Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:14:30.227Z" + }, + "traces": [ + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 5, + "name": "Recording 8/11/2026, 1:14:08 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:14:08.049Z", + "startTime": "2026-08-10T23:14:08.048Z", + "updatedAt": "2026-08-10T23:14:08.049Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:14:08.065Z", + "endTime": "2026-08-10T23:14:08.065Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:14:09.762Z", + "endTime": "2026-08-10T23:14:09.762Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "file-earmark-plus", + "title": "Create document" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:14:12.501Z", + "endTime": "2026-08-10T23:14:12.501Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "documentCreate", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:14:12.972Z", + "endTime": "2026-08-10T23:14:12.972Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 640, + "clientY": 157, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:13.792Z", + "endTime": "2026-08-10T23:14:13.792Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 655, + "clientY": 227, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:15.360Z", + "endTime": "2026-08-10T23:14:15.360Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentCreate", + "payload": { + "name": "test_doc", + "type": 1, + "projectId": 1, + "templateId": 0 + }, + "direction": true, + "startTime": "2026-08-10T23:14:22.484Z", + "endTime": "2026-08-10T23:14:22.484Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:14:22.487Z", + "endTime": "2026-08-10T23:14:22.487Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 3, + "hash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd", + "name": "test_doc", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:14:22.490Z", + "projectId": 1, + "updatedAt": "2026-08-10T23:14:22.490Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:14:22.500Z", + "endTime": "2026-08-10T23:14:22.500Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 3, + "hash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd", + "name": "test_doc", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:14:22.490Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T23:14:22.490Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:14:22.501Z", + "endTime": "2026-08-10T23:14:22.501Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "documentCreate", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:14:22.505Z", + "endTime": "2026-08-10T23:14:22.505Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 912, + "clientY": 437, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:23.092Z", + "endTime": "2026-08-10T23:14:23.092Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 889, + "clientY": 403, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:25.459Z", + "endTime": "2026-08-10T23:14:25.459Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:14:26.774Z", + "endTime": "2026-08-10T23:14:26.774Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:14:27.145Z", + "endTime": "2026-08-10T23:14:27.145Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:14:28.905Z", + "endTime": "2026-08-10T23:14:28.905Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1071, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:29.679Z", + "endTime": "2026-08-10T23:14:29.679Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/140-rename-document.json b/backend/tests/regression_stories/140-rename-document.json new file mode 100644 index 000000000..08278e3d3 --- /dev/null +++ b/backend/tests/regression_stories/140-rename-document.json @@ -0,0 +1,294 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:21.481Z", + "traceCount": 14, + "recording": { + "name": "140-rename-document", + "status": "finished", + "startTime": "2026-08-10T23:14:51.630Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:15:07.405Z" + }, + "traces": [ + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 6, + "name": "Recording 8/11/2026, 1:14:51 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:14:51.631Z", + "startTime": "2026-08-10T23:14:51.630Z", + "updatedAt": "2026-08-10T23:14:51.631Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:14:51.641Z", + "endTime": "2026-08-10T23:14:51.641Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:14:52.784Z", + "endTime": "2026-08-10T23:14:52.784Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1273, + "clientY": 194, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:55.944Z", + "endTime": "2026-08-10T23:14:55.944Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "action": "renameDoc", + "params": { + "documentId": 2 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:14:57.345Z", + "endTime": "2026-08-10T23:14:57.345Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:14:57.793Z", + "endTime": "2026-08-10T23:14:57.793Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 615, + "clientY": 159, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:14:58.942Z", + "endTime": "2026-08-10T23:14:58.942Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script_renamed", + "public": false, + "userId": 4 + }, + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:15:03.551Z", + "endTime": "2026-08-10T23:15:03.551Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script_renamed", + "public": false, + "userId": 4 + }, + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:15:03.552Z", + "endTime": "2026-08-10T23:15:03.552Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script_renamed", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:10:24.495Z", + "projectId": 1, + "updatedAt": "2026-08-10T23:15:03.556Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:15:03.574Z", + "endTime": "2026-08-10T23:15:03.574Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script_renamed", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:10:24.495Z", + "projectId": 1, + "updatedAt": "2026-08-10T23:15:03.570Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:15:03.578Z", + "endTime": "2026-08-10T23:15:03.578Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:15:03.579Z", + "endTime": "2026-08-10T23:15:03.579Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1058, + "clientY": 434, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:03.845Z", + "endTime": "2026-08-10T23:15:03.845Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1110, + "clientY": 22, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:05.361Z", + "endTime": "2026-08-10T23:15:05.361Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:15:05.615Z", + "endTime": "2026-08-10T23:15:05.615Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/150-publish-document.json b/backend/tests/regression_stories/150-publish-document.json new file mode 100644 index 000000000..0f2aeb6c2 --- /dev/null +++ b/backend/tests/regression_stories/150-publish-document.json @@ -0,0 +1,424 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:23.964Z", + "traceCount": 23, + "recording": { + "name": "150-publish-document", + "status": "finished", + "startTime": "2026-08-10T23:15:33.990Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:16:03.795Z" + }, + "traces": [ + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 7, + "name": "Recording 8/11/2026, 1:15:33 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:15:33.991Z", + "startTime": "2026-08-10T23:15:33.990Z", + "updatedAt": "2026-08-10T23:15:33.991Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:15:34.006Z", + "endTime": "2026-08-10T23:15:34.006Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:15:36.075Z", + "endTime": "2026-08-10T23:15:36.075Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1190, + "clientY": 197, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:38.361Z", + "endTime": "2026-08-10T23:15:38.361Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1335, + "clientY": 192, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:42.094Z", + "endTime": "2026-08-10T23:15:42.094Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1311, + "clientY": 189, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:44.745Z", + "endTime": "2026-08-10T23:15:44.745Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1283, + "clientY": 189, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:46.262Z", + "endTime": "2026-08-10T23:15:46.262Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1245, + "clientY": 186, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:47.146Z", + "endTime": "2026-08-10T23:15:47.146Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:15:50.978Z", + "endTime": "2026-08-10T23:15:50.978Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:15:52.082Z", + "endTime": "2026-08-10T23:15:52.082Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1252, + "clientY": 192, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:54.161Z", + "endTime": "2026-08-10T23:15:54.161Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 2 + }, + "action": "openModalPublishDocument" + }, + "direction": true, + "startTime": "2026-08-10T23:15:54.311Z", + "endTime": "2026-08-10T23:15:54.311Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "action": "publicDoc", + "params": { + "documentId": 2 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:15:54.314Z", + "endTime": "2026-08-10T23:15:54.314Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "documentPublish", + "props": { + "documentId": 2 + } + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:15:54.762Z", + "endTime": "2026-08-10T23:15:54.762Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentPublish", + "payload": { + "documentId": 2 + }, + "direction": true, + "startTime": "2026-08-10T23:15:55.470Z", + "endTime": "2026-08-10T23:15:55.470Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Yes, publish it!" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:15:55.471Z", + "endTime": "2026-08-10T23:15:55.471Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "c8d1342a-9016-42c1-8a9f-17736404b365", + "name": "Shrek_Script_renamed", + "type": 0, + "public": true, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:10:24.495Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T23:15:55.492Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:15:55.502Z", + "endTime": "2026-08-10T23:15:55.502Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 874, + "clientY": 189, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:55.645Z", + "endTime": "2026-08-10T23:15:55.645Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 937, + "clientY": 64, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:15:58.461Z", + "endTime": "2026-08-10T23:15:58.461Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "name": "documentPublish", + "props": { + "documentId": 2 + } + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:15:59.469Z", + "endTime": "2026-08-10T23:15:59.469Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 2 + }, + "action": "cancelModalPublishDocument" + }, + "direction": true, + "startTime": "2026-08-10T23:15:59.470Z", + "endTime": "2026-08-10T23:15:59.470Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Close" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:15:59.471Z", + "endTime": "2026-08-10T23:15:59.471Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1134, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:01.595Z", + "endTime": "2026-08-10T23:16:01.595Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:16:02.258Z", + "endTime": "2026-08-10T23:16:02.258Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/160-edit-html-document.json b/backend/tests/regression_stories/160-edit-html-document.json new file mode 100644 index 000000000..5d17cefe0 --- /dev/null +++ b/backend/tests/regression_stories/160-edit-html-document.json @@ -0,0 +1,1087 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:26.617Z", + "traceCount": 64, + "recording": { + "name": "160-edit-html-document", + "status": "finished", + "startTime": "2026-08-10T23:16:29.972Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:16:58.209Z" + }, + "traces": [ + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 8, + "name": "Recording 8/11/2026, 1:16:29 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:16:29.973Z", + "startTime": "2026-08-10T23:16:29.972Z", + "updatedAt": "2026-08-10T23:16:29.973Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:29.993Z", + "endTime": "2026-08-10T23:16:29.993Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:16:31.357Z", + "endTime": "2026-08-10T23:16:31.357Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "action": "accessDoc", + "params": { + "documentId": 3 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.443Z", + "endTime": "2026-08-10T23:16:33.443Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1176, + "clientY": 231, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.679Z", + "endTime": "2026-08-10T23:16:33.679Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/document/281da0da-fcfc-4a30-91c9-eaf8087d03bd", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.780Z", + "endTime": "2026-08-10T23:16:33.780Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "087dd62a-aa2e-42c7-bc9c-aa5f995ef2a8", + "direction": true, + "startTime": "2026-08-10T23:16:33.785Z", + "endTime": "2026-08-10T23:16:33.785Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "15a5f129-2ad9-4fed-a48c-9998dd9922dd", + "direction": true, + "startTime": "2026-08-10T23:16:33.786Z", + "endTime": "2026-08-10T23:16:33.786Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "0df71b06-e2fc-4e71-aac9-fa93a68efa39", + "direction": true, + "startTime": "2026-08-10T23:16:33.787Z", + "endTime": "2026-08-10T23:16:33.787Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "e934f950-93f8-40a1-a429-ce0b3069ae19", + "direction": true, + "startTime": "2026-08-10T23:16:33.787Z", + "endTime": "2026-08-10T23:16:33.787Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "6f7442c8-5fba-4b44-b664-e3f94cd1b826", + "direction": true, + "startTime": "2026-08-10T23:16:33.787Z", + "endTime": "2026-08-10T23:16:33.787Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "4a5ccad6-056c-4f55-9c1b-79bd2c60bd7c", + "direction": true, + "startTime": "2026-08-10T23:16:33.787Z", + "endTime": "2026-08-10T23:16:33.787Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "081bba52-c949-443e-a0cc-f8e393eac8e0", + "direction": true, + "startTime": "2026-08-10T23:16:33.787Z", + "endTime": "2026-08-10T23:16:33.787Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "12f1ccd7-54f2-45db-9d28-0731a9e25d16", + "direction": true, + "startTime": "2026-08-10T23:16:33.789Z", + "endTime": "2026-08-10T23:16:33.789Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "056d7e7a-4a7e-4d21-b8a5-f4fcb076e5b2", + "direction": true, + "startTime": "2026-08-10T23:16:33.789Z", + "endTime": "2026-08-10T23:16:33.789Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentGetByHash", + "payload": { + "documentHash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.789Z", + "endTime": "2026-08-10T23:16:33.789Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 3, + "hash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd", + "name": "test_doc", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:14:22.490Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T23:14:22.490Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:33.813Z", + "endTime": "2026-08-10T23:16:33.813Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.818Z", + "endTime": "2026-08-10T23:16:33.818Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_dataRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:16:33.819Z", + "endTime": "2026-08-10T23:16:33.819Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentGet", + "payload": { + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.824Z", + "endTime": "2026-08-10T23:16:33.824Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.824Z", + "endTime": "2026-08-10T23:16:33.824Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentSubscribe", + "payload": { + "documentId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.824Z", + "endTime": "2026-08-10T23:16:33.824Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentGet", + "payload": { + "history": true, + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.824Z", + "endTime": "2026-08-10T23:16:33.824Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:16:33.824Z", + "endTime": "2026-08-10T23:16:33.824Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:16:33.828Z", + "endTime": "2026-08-10T23:16:33.828Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": null, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": null + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-10T23:16:34.325Z", + "endTime": "2026-08-10T23:16:34.325Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": false + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-10T23:16:36.303Z", + "endTime": "2026-08-10T23:16:36.303Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Hide sidebar", + "documentId": 3 + }, + "action": "clickTopBarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:16:36.306Z", + "endTime": "2026-08-10T23:16:36.306Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 615, + "clientY": 297, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:37.579Z", + "endTime": "2026-08-10T23:16:37.579Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 3, + "text": "heh", + "offset": 0, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:39.315Z", + "endTime": "2026-08-10T23:16:39.315Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 1, + "span": 3, + "text": "heh", + "draft": true, + "order": 1, + "offset": 0, + "sender": "HfkJbcIP3cSFqBocAAAL", + "userId": 4, + "applied": true, + "deleted": false, + "createdAt": "2026-08-10T23:16:39.317Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:39.317Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:39.325Z", + "endTime": "2026-08-10T23:16:39.325Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 1, + "text": "e", + "offset": 3, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:39.507Z", + "endTime": "2026-08-10T23:16:39.507Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 2, + "span": 1, + "text": "e", + "draft": true, + "order": 1, + "offset": 3, + "sender": "HfkJbcIP3cSFqBocAAAL", + "userId": 4, + "applied": true, + "deleted": false, + "createdAt": "2026-08-10T23:16:39.511Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:39.511Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:39.516Z", + "endTime": "2026-08-10T23:16:39.516Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 1, + "text": " ", + "offset": 4, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:40.143Z", + "endTime": "2026-08-10T23:16:40.143Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 3, + "span": 1, + "text": " ", + "draft": true, + "order": 1, + "offset": 4, + "sender": "HfkJbcIP3cSFqBocAAAL", + "userId": 4, + "applied": true, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.147Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:40.147Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:40.151Z", + "endTime": "2026-08-10T23:16:40.151Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 1, + "text": "h", + "offset": 5, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:40.408Z", + "endTime": "2026-08-10T23:16:40.408Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 4, + "span": 1, + "text": "h", + "draft": true, + "order": 1, + "offset": 5, + "sender": "HfkJbcIP3cSFqBocAAAL", + "userId": 4, + "applied": true, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.410Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:40.410Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:40.413Z", + "endTime": "2026-08-10T23:16:40.413Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 2, + "text": "ah", + "offset": 6, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:40.783Z", + "endTime": "2026-08-10T23:16:40.783Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 5, + "span": 2, + "text": "ah", + "draft": true, + "order": 1, + "offset": 6, + "sender": "HfkJbcIP3cSFqBocAAAL", + "userId": 4, + "applied": true, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.788Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:40.788Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:40.797Z", + "endTime": "2026-08-10T23:16:40.797Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 1, + "text": "a", + "offset": 8, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:40.956Z", + "endTime": "2026-08-10T23:16:40.956Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 6, + "span": 1, + "text": "a", + "draft": true, + "order": 1, + "offset": 8, + "sender": "HfkJbcIP3cSFqBocAAAL", + "userId": 4, + "applied": true, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.959Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:40.959Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:16:40.965Z", + "endTime": "2026-08-10T23:16:40.965Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 650, + "clientY": 304, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:42.061Z", + "endTime": "2026-08-10T23:16:42.061Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-10T23:16:46.020Z", + "endTime": "2026-08-10T23:16:46.020Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Show sidebar", + "documentId": 3 + }, + "action": "clickTopBarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:16:46.022Z", + "endTime": "2026-08-10T23:16:46.022Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 878, + "clientY": 180, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:47.146Z", + "endTime": "2026-08-10T23:16:47.146Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 543, + "clientY": 169, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:49.113Z", + "endTime": "2026-08-10T23:16:49.113Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:16:50.247Z", + "endTime": "2026-08-10T23:16:50.247Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:16:52.477Z", + "endTime": "2026-08-10T23:16:52.477Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/document/281da0da-fcfc-4a30-91c9-eaf8087d03bd" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.881Z", + "endTime": "2026-08-10T23:16:53.881Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "51729907-f111-4edd-a0d7-a1a5a3a3fafe", + "direction": true, + "startTime": "2026-08-10T23:16:53.890Z", + "endTime": "2026-08-10T23:16:53.890Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "6c181f8a-060b-4ddc-b46a-0234b795a162", + "direction": true, + "startTime": "2026-08-10T23:16:53.890Z", + "endTime": "2026-08-10T23:16:53.890Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_group" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.890Z", + "endTime": "2026-08-10T23:16:53.890Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.893Z", + "endTime": "2026-08-10T23:16:53.893Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.893Z", + "endTime": "2026-08-10T23:16:53.893Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.914Z", + "endTime": "2026-08-10T23:16:53.914Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentUnsubscribe", + "payload": { + "documentId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.893Z", + "endTime": "2026-08-10T23:16:53.893Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.925Z", + "endTime": "2026-08-10T23:16:53.925Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.925Z", + "endTime": "2026-08-10T23:16:53.925Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentClose", + "payload": { + "documentId": 3, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.893Z", + "endTime": "2026-08-10T23:16:53.893Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.925Z", + "endTime": "2026-08-10T23:16:53.925Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.925Z", + "endTime": "2026-08-10T23:16:53.925Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.925Z", + "endTime": "2026-08-10T23:16:53.925Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 105, + "clientY": 29, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:53.930Z", + "endTime": "2026-08-10T23:16:53.930Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1152, + "clientY": 4, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:16:56.782Z", + "endTime": "2026-08-10T23:16:56.782Z" + }, + { + "recordingId": 8, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:16:57.295Z", + "endTime": "2026-08-10T23:16:57.295Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/170-view-edit-history.json b/backend/tests/regression_stories/170-view-edit-history.json new file mode 100644 index 000000000..e2ae54fe9 --- /dev/null +++ b/backend/tests/regression_stories/170-view-edit-history.json @@ -0,0 +1,802 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:20:32.340Z", + "traceCount": 47, + "recording": { + "name": "170-view-edit-history", + "status": "finished", + "startTime": "2026-08-10T23:17:21.575Z", + "userId": 4, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:17:43.740Z" + }, + "traces": [ + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 9, + "name": "Recording 8/11/2026, 1:17:21 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:17:21.575Z", + "startTime": "2026-08-10T23:17:21.575Z", + "updatedAt": "2026-08-10T23:17:21.575Z", + "excludeEvents": null, + "participantSocketIds": [ + "HfkJbcIP3cSFqBocAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:17:21.597Z", + "endTime": "2026-08-10T23:17:21.597Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:17:23.380Z", + "endTime": "2026-08-10T23:17:23.380Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1187, + "clientY": 242, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:25.081Z", + "endTime": "2026-08-10T23:17:25.081Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1296, + "clientY": 235, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:28.931Z", + "endTime": "2026-08-10T23:17:28.931Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "action": "accessDoc", + "params": { + "documentId": 3 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.810Z", + "endTime": "2026-08-10T23:17:29.810Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/document/281da0da-fcfc-4a30-91c9-eaf8087d03bd", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.854Z", + "endTime": "2026-08-10T23:17:29.854Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "2c918010-46ac-4adb-b885-f6caf4c6bca6", + "direction": true, + "startTime": "2026-08-10T23:17:29.865Z", + "endTime": "2026-08-10T23:17:29.865Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "add483d6-3a4d-4420-b40e-3d5f011b6543", + "direction": true, + "startTime": "2026-08-10T23:17:29.865Z", + "endTime": "2026-08-10T23:17:29.865Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "7662e80b-f9a0-4580-a5c4-0499f978e220", + "direction": true, + "startTime": "2026-08-10T23:17:29.869Z", + "endTime": "2026-08-10T23:17:29.869Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "12596b8f-0fd6-482f-9631-6551907904b0", + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "4074d153-620c-418b-88e8-d6f69b073831", + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "675bbc3c-256f-4187-ba79-c0ed206fa19c", + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "9a2d87cb-1e45-40c0-a95b-691de980e03e", + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "f7f027b8-6a80-42a4-8eda-ff555067b760", + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "e488367f-742e-4e21-a03d-bfdaaea00686", + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentGetByHash", + "payload": { + "documentHash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd" + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.870Z", + "endTime": "2026-08-10T23:17:29.870Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.885Z", + "endTime": "2026-08-10T23:17:29.885Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentSubscribe", + "payload": { + "documentId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.892Z", + "endTime": "2026-08-10T23:17:29.892Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 3, + "hash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd", + "name": "test_doc", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:14:22.490Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T23:14:22.490Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:17:29.878Z", + "endTime": "2026-08-10T23:17:29.878Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentGet", + "payload": { + "history": true, + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.892Z", + "endTime": "2026-08-10T23:17:29.892Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentGet", + "payload": { + "documentId": 3, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.890Z", + "endTime": "2026-08-10T23:17:29.890Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.893Z", + "endTime": "2026-08-10T23:17:29.893Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-10T23:17:29.893Z", + "endTime": "2026-08-10T23:17:29.893Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "document_editRefresh", + "payload": [ + { + "id": 1, + "span": 3, + "text": "heh", + "draft": false, + "order": 1, + "offset": 0, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:16:39.317Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:53.965Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + }, + { + "id": 2, + "span": 1, + "text": "e", + "draft": false, + "order": 1, + "offset": 3, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:16:39.511Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:53.965Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + }, + { + "id": 3, + "span": 1, + "text": " ", + "draft": false, + "order": 1, + "offset": 4, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.147Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:53.965Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + }, + { + "id": 4, + "span": 1, + "text": "h", + "draft": false, + "order": 1, + "offset": 5, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.410Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:53.965Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + }, + { + "id": 5, + "span": 2, + "text": "ah", + "draft": false, + "order": 1, + "offset": 6, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.788Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:53.965Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + }, + { + "id": 6, + "span": 1, + "text": "a", + "draft": false, + "order": 1, + "offset": 8, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-10T23:16:40.959Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:16:53.965Z", + "attributes": null, + "documentId": 3, + "studyStepId": null, + "creator_name": "admin", + "operationType": 0, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:17:29.949Z", + "endTime": "2026-08-10T23:17:29.949Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1187, + "clientY": 241, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:30.046Z", + "endTime": "2026-08-10T23:17:30.046Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": null, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": null + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-10T23:17:30.390Z", + "endTime": "2026-08-10T23:17:30.390Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1422, + "clientY": 91, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:32.012Z", + "endTime": "2026-08-10T23:17:32.012Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1277, + "clientY": 209, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:34.147Z", + "endTime": "2026-08-10T23:17:34.147Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "editId": 5, + "documentId": 3, + "studyStepId": null, + "studySessionId": null, + "acceptDataSharing": false + }, + "action": "editorHistorySelect" + }, + "direction": true, + "startTime": "2026-08-10T23:17:35.433Z", + "endTime": "2026-08-10T23:17:35.433Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1229, + "clientY": 334, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:35.730Z", + "endTime": "2026-08-10T23:17:35.730Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "editId": 4, + "documentId": 3, + "studyStepId": null, + "studySessionId": null, + "acceptDataSharing": false + }, + "action": "editorHistorySelect" + }, + "direction": true, + "startTime": "2026-08-10T23:17:36.993Z", + "endTime": "2026-08-10T23:17:36.993Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/document/281da0da-fcfc-4a30-91c9-eaf8087d03bd" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.267Z", + "endTime": "2026-08-10T23:17:41.267Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "1753f42f-e6c5-47cc-bd60-c7a325397b58", + "direction": true, + "startTime": "2026-08-10T23:17:41.279Z", + "endTime": "2026-08-10T23:17:41.279Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "unsubscribeAppData", + "payload": "c750e7f5-8fd7-48d3-beef-fb4e8197ce6a", + "direction": true, + "startTime": "2026-08-10T23:17:41.279Z", + "endTime": "2026-08-10T23:17:41.279Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.288Z", + "endTime": "2026-08-10T23:17:41.288Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.289Z", + "endTime": "2026-08-10T23:17:41.289Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.304Z", + "endTime": "2026-08-10T23:17:41.304Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentClose", + "payload": { + "documentId": 3, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.289Z", + "endTime": "2026-08-10T23:17:41.289Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_group" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.288Z", + "endTime": "2026-08-10T23:17:41.288Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.319Z", + "endTime": "2026-08-10T23:17:41.319Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "documentUnsubscribe", + "payload": { + "documentId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.289Z", + "endTime": "2026-08-10T23:17:41.289Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.319Z", + "endTime": "2026-08-10T23:17:41.319Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.319Z", + "endTime": "2026-08-10T23:17:41.319Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.320Z", + "endTime": "2026-08-10T23:17:41.320Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:17:41.320Z", + "endTime": "2026-08-10T23:17:41.320Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:17:42.882Z", + "endTime": "2026-08-10T23:17:42.882Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "HfkJbcIP3cSFqBocAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1230, + "clientY": 10, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:17:43.682Z", + "endTime": "2026-08-10T23:17:43.682Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/210-create-annotation.json b/backend/tests/regression_stories/210-create-annotation.json new file mode 100644 index 000000000..5db59cafa --- /dev/null +++ b/backend/tests/regression_stories/210-create-annotation.json @@ -0,0 +1,4413 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:35:48.808Z", + "traceCount": 89, + "recording": { + "name": "210-create-annotation", + "status": "finished", + "startTime": "2026-08-10T23:23:57.654Z", + "userId": 3, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:24:15.188Z" + }, + "traces": [ + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "recordingRefresh", + "payload": [ + { + "id": 11, + "name": "Recording 8/11/2026, 1:23:57 AM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:23:57.654Z", + "startTime": "2026-08-10T23:23:57.654Z", + "updatedAt": "2026-08-10T23:23:57.654Z", + "excludeEvents": null, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:23:57.666Z", + "endTime": "2026-08-10T23:23:57.666Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:23:59.568Z", + "endTime": "2026-08-10T23:23:59.568Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1175, + "clientY": 190, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.637Z", + "endTime": "2026-08-10T23:24:01.637Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "action": "accessDoc", + "params": { + "documentId": 1 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.753Z", + "endTime": "2026-08-10T23:24:01.753Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "to": "/document/8852a746-360e-4c31-add2-4d1c75bfb96d", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.839Z", + "endTime": "2026-08-10T23:24:01.839Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "e3b6c37a-0c73-4836-a962-47dde6280ebe", + "direction": true, + "startTime": "2026-08-10T23:24:01.846Z", + "endTime": "2026-08-10T23:24:01.846Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "0197eb83-8542-4645-8dc9-83746da9b4bf", + "direction": true, + "startTime": "2026-08-10T23:24:01.846Z", + "endTime": "2026-08-10T23:24:01.846Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "f113c7a7-d162-4786-8663-759ea7c11214", + "direction": true, + "startTime": "2026-08-10T23:24:01.857Z", + "endTime": "2026-08-10T23:24:01.857Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "4edf12e9-39f0-4c9b-8532-3b6ae6c82c0f", + "direction": true, + "startTime": "2026-08-10T23:24:01.855Z", + "endTime": "2026-08-10T23:24:01.855Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "d998e0b3-b9ef-4772-a014-c72efe4beeeb", + "direction": true, + "startTime": "2026-08-10T23:24:01.857Z", + "endTime": "2026-08-10T23:24:01.857Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "a7438898-c393-4780-b273-42f5607929de", + "direction": true, + "startTime": "2026-08-10T23:24:01.857Z", + "endTime": "2026-08-10T23:24:01.857Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "ac044b36-1f88-4098-8f27-acb3904d5d18", + "direction": true, + "startTime": "2026-08-10T23:24:01.857Z", + "endTime": "2026-08-10T23:24:01.857Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "bc994268-2fd9-4ad6-9fce-9078e36f3f97", + "direction": true, + "startTime": "2026-08-10T23:24:01.858Z", + "endTime": "2026-08-10T23:24:01.858Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentGetByHash", + "payload": { + "documentHash": "8852a746-360e-4c31-add2-4d1c75bfb96d" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.858Z", + "endTime": "2026-08-10T23:24:01.858Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "30ec0069-6578-419d-9d07-272401d8bcae", + "direction": true, + "startTime": "2026-08-10T23:24:01.858Z", + "endTime": "2026-08-10T23:24:01.858Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentRefresh", + "payload": [ + { + "id": 1, + "hash": "8852a746-360e-4c31-add2-4d1c75bfb96d", + "name": "Showcase Document", + "type": 0, + "public": false, + "userId": 3, + "deleted": false, + "createdAt": "2026-08-10T22:35:47.569Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T22:35:47.569Z", + "creator_name": "guest", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:01.890Z", + "endTime": "2026-08-10T23:24:01.890Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentGet", + "payload": { + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.899Z", + "endTime": "2026-08-10T23:24:01.899Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.902Z", + "endTime": "2026-08-10T23:24:01.902Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.902Z", + "endTime": "2026-08-10T23:24:01.902Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "user_environment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentGetData", + "payload": { + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRefresh", + "payload": { + "data": { + "name": "sentiment_classification", + "input": { + "data": { + "text": { + "type": "string", + "required": true, + "description": "The text to be classified" + } + }, + "example": { + "text": "This restaurant is awesome!" + } + }, + "output": { + "data": { + "label": { + "type": "string", + "description": "The label of the classification" + }, + "score": { + "type": "float", + "description": "The score of the classification" + } + }, + "example": { + "label": "pos", + "score": 0.9 + } + }, + "description": "This classifies a given paragraph according to it's sentiment returning a polarity estimate." + }, + "type": "skillConfig", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-10T23:24:01.905Z", + "endTime": "2026-08-10T23:24:01.905Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceCommand", + "payload": { + "data": { + "name": "sentiment_classification" + }, + "command": "skillGetConfig", + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.915Z", + "endTime": "2026-08-10T23:24:01.915Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentSubscribe", + "payload": { + "documentId": 1 + }, + "direction": true, + "startTime": "2026-08-10T23:24:01.903Z", + "endTime": "2026-08-10T23:24:01.903Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "tagRefresh", + "payload": [ + { + "id": 1, + "name": "Highlight", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "warning", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Highlight" + }, + { + "id": 2, + "name": "Strength", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "success", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Strength" + }, + { + "id": 3, + "name": "Weakness", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "danger", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Weakness" + }, + { + "id": 4, + "name": "Other", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "info", + "createdAt": "2026-08-10T22:35:47.497Z", + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Other" + }, + { + "id": 5, + "name": "first", + "public": true, + "userId": 4, + "tagSetId": 2, + "colorCode": "info", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.360Z", + "description": "1st", + "creator_name": "admin" + }, + { + "id": 6, + "name": "second", + "public": true, + "userId": 4, + "tagSetId": 2, + "colorCode": "warning", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.365Z", + "description": "2nd", + "creator_name": "admin" + }, + { + "id": 7, + "name": "third", + "public": true, + "userId": 4, + "tagSetId": 2, + "colorCode": "success", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.372Z", + "description": "3rd", + "creator_name": "admin" + }, + { + "id": 8, + "name": "fourth", + "public": true, + "userId": 4, + "tagSetId": 2, + "colorCode": "danger", + "createdAt": "2026-08-10T23:11:59.029Z", + "updatedAt": "2026-08-10T23:13:30.387Z", + "description": "4th", + "creator_name": "admin" + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:01.916Z", + "endTime": "2026-08-10T23:24:01.916Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.919Z", + "endTime": "2026-08-10T23:24:01.919Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "user_environmentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.917Z", + "endTime": "2026-08-10T23:24:01.917Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "study_sessionRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.937Z", + "endTime": "2026-08-10T23:24:01.937Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-10T22:35:48.390Z", + "updatedAt": "2026-08-10T22:35:59.295Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-10T22:35:48.390Z", + "updatedAt": "2026-08-10T22:35:59.295Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 3, + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "createdAt": "2026-08-10T22:35:48.390Z", + "updatedAt": "2026-08-10T22:35:59.295Z", + "description": "Validation schema for UKP Exposé LaTeX submissions", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-10T22:35:48.390Z", + "updatedAt": "2026-08-10T22:35:59.295Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-10T22:35:48.390Z", + "updatedAt": "2026-08-10T22:35:59.295Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:01.921Z", + "endTime": "2026-08-10T23:24:01.921Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.955Z", + "endTime": "2026-08-10T23:24:01.955Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "tagRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.956Z", + "endTime": "2026-08-10T23:24:01.956Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "comment_voteRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.955Z", + "endTime": "2026-08-10T23:24:01.955Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:01.955Z", + "endTime": "2026-08-10T23:24:01.955Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.058Z", + "endTime": "2026-08-10T23:24:02.058Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "comment_stateRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:02.061Z", + "endTime": "2026-08-10T23:24:02.061Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.063Z", + "endTime": "2026-08-10T23:24:02.063Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.063Z", + "endTime": "2026-08-10T23:24:02.063Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.063Z", + "endTime": "2026-08-10T23:24:02.063Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.063Z", + "endTime": "2026-08-10T23:24:02.063Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.063Z", + "endTime": "2026-08-10T23:24:02.063Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.062Z", + "endTime": "2026-08-10T23:24:02.062Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": null + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.401Z", + "endTime": "2026-08-10T23:24:02.401Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 889, + "clientY": 335, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:02.854Z", + "endTime": "2026-08-10T23:24:02.854Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 891, + "clientY": 324, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:03.855Z", + "endTime": "2026-08-10T23:24:03.855Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "scrollTop": 375, + "documentId": 1, + "scrollHeight": 22764 + }, + "action": "annotatorScrollActivity" + }, + "direction": true, + "startTime": "2026-08-10T23:24:04.271Z", + "endTime": "2026-08-10T23:24:04.271Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:24:05.514Z", + "endTime": "2026-08-10T23:24:05.514Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:24:06.129Z", + "endTime": "2026-08-10T23:24:06.129Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "text": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "documentId": 1, + "studyStepId": null, + "eventClientX": 212, + "eventClientY": 377, + "studySessionId": null + }, + "action": "onTextSelect" + }, + "direction": true, + "startTime": "2026-08-10T23:24:08.132Z", + "endTime": "2026-08-10T23:24:08.132Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 212, + "clientY": 377, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:08.221Z", + "endTime": "2026-08-10T23:24:08.221Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 250, + "clientY": 299, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:09.703Z", + "endTime": "2026-08-10T23:24:09.703Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "title": "Strength", + "documentId": 1 + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:24:09.716Z", + "endTime": "2026-08-10T23:24:09.716Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 2, + "anonymous": false, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 858, + "type": "TextPositionSelector", + "start": 762 + }, + { + "type": "TextQuoteSelector", + "exact": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "prefix": "des a framework for enhancingrea", + "suffix": "he extensible behavioral logging" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:24:09.722Z", + "endTime": "2026-08-10T23:24:09.722Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 1, + "text": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "draft": true, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:24:09.738Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 858, + "type": "TextPositionSelector", + "start": 762 + }, + { + "type": "TextQuoteSelector", + "exact": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "prefix": "des a framework for enhancingrea", + "suffix": "he extensible behavioral logging" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:24:09.738Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:09.764Z", + "endTime": "2026-08-10T23:24:09.764Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 1, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:24:09.756Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:24:09.756Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 1, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:09.763Z", + "endTime": "2026-08-10T23:24:09.763Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 1, + "text": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "draft": true, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:24:09.738Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 858, + "type": "TextPositionSelector", + "start": 762 + }, + { + "type": "TextQuoteSelector", + "exact": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "prefix": "des a framework for enhancingrea", + "suffix": "he extensible behavioral logging" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:24:09.738Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:09.766Z", + "endTime": "2026-08-10T23:24:09.766Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 1, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:24:09.756Z", + "updatedAt": "2026-08-10T23:24:09.756Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 1, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:09.767Z", + "endTime": "2026-08-10T23:24:09.767Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:24:09.768Z", + "endTime": "2026-08-10T23:24:09.768Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:24:09.769Z", + "endTime": "2026-08-10T23:24:09.769Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:09.769Z", + "endTime": "2026-08-10T23:24:09.769Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 792, + "clientY": 22, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:11.822Z", + "endTime": "2026-08-10T23:24:11.822Z" + }, + { + "recordingId": 11, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:24:12.079Z", + "endTime": "2026-08-10T23:24:12.079Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/220-edit-annotation-tag.json b/backend/tests/regression_stories/220-edit-annotation-tag.json new file mode 100644 index 000000000..33a111d1a --- /dev/null +++ b/backend/tests/regression_stories/220-edit-annotation-tag.json @@ -0,0 +1,1907 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:35:56.185Z", + "traceCount": 108, + "recording": { + "name": "220-edit-annotation-tag", + "status": "finished", + "startTime": "2026-08-10T23:24:54.333Z", + "userId": 3, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:25:33.268Z" + }, + "traces": [ + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "recordingRefresh", + "payload": [ + { + "id": 12, + "name": "Recording 8/11/2026, 1:24:54 AM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:24:54.334Z", + "startTime": "2026-08-10T23:24:54.333Z", + "updatedAt": "2026-08-10T23:24:54.334Z", + "excludeEvents": null, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:54.354Z", + "endTime": "2026-08-10T23:24:54.354Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:24:55.783Z", + "endTime": "2026-08-10T23:24:55.783Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "action": "accessDoc", + "params": { + "documentId": 1 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-10T23:24:56.967Z", + "endTime": "2026-08-10T23:24:56.967Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "to": "/document/8852a746-360e-4c31-add2-4d1c75bfb96d", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.000Z", + "endTime": "2026-08-10T23:24:57.000Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "f699ab8b-d8f3-4658-975f-57c906b33520", + "direction": true, + "startTime": "2026-08-10T23:24:57.012Z", + "endTime": "2026-08-10T23:24:57.012Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "5edd566b-3214-4669-bc11-7cb37eb15ecc", + "direction": true, + "startTime": "2026-08-10T23:24:57.012Z", + "endTime": "2026-08-10T23:24:57.012Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "73d96476-eb3b-4fa0-83bc-d2fb30126947", + "direction": true, + "startTime": "2026-08-10T23:24:57.013Z", + "endTime": "2026-08-10T23:24:57.013Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "bf94a2ee-72b1-4ff0-8e56-0715d2ad0394", + "direction": true, + "startTime": "2026-08-10T23:24:57.021Z", + "endTime": "2026-08-10T23:24:57.021Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "51079b16-f99d-484d-ac02-014f621ce06f", + "direction": true, + "startTime": "2026-08-10T23:24:57.022Z", + "endTime": "2026-08-10T23:24:57.022Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "f2ad7fe3-e57d-481e-8bda-db8d428b2176", + "direction": true, + "startTime": "2026-08-10T23:24:57.022Z", + "endTime": "2026-08-10T23:24:57.022Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "b2f6989c-fc06-4d2e-9e54-87c6786c0a44", + "direction": true, + "startTime": "2026-08-10T23:24:57.022Z", + "endTime": "2026-08-10T23:24:57.022Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "bc922096-365a-4e82-ba18-786f016e474a", + "direction": true, + "startTime": "2026-08-10T23:24:57.022Z", + "endTime": "2026-08-10T23:24:57.022Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "7768bab0-d7f6-4329-bb0c-8a062ca48696", + "direction": true, + "startTime": "2026-08-10T23:24:57.022Z", + "endTime": "2026-08-10T23:24:57.022Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentGetByHash", + "payload": { + "documentHash": "8852a746-360e-4c31-add2-4d1c75bfb96d" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.022Z", + "endTime": "2026-08-10T23:24:57.022Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentRefresh", + "payload": [ + { + "id": 1, + "hash": "8852a746-360e-4c31-add2-4d1c75bfb96d", + "name": "Showcase Document", + "type": 0, + "public": false, + "userId": 3, + "deleted": false, + "createdAt": "2026-08-10T22:35:47.569Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-10T22:35:47.569Z", + "creator_name": "guest", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:57.028Z", + "endTime": "2026-08-10T23:24:57.028Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentGet", + "payload": { + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.036Z", + "endTime": "2026-08-10T23:24:57.036Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_vote" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.050Z", + "endTime": "2026-08-10T23:24:57.050Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.050Z", + "endTime": "2026-08-10T23:24:57.050Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "user_environment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentGetData", + "payload": { + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "documentSubscribe", + "payload": { + "documentId": 1 + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRefresh", + "payload": { + "data": { + "name": "sentiment_classification", + "input": { + "data": { + "text": { + "type": "string", + "required": true, + "description": "The text to be classified" + } + }, + "example": { + "text": "This restaurant is awesome!" + } + }, + "output": { + "data": { + "label": { + "type": "string", + "description": "The label of the classification" + }, + "score": { + "type": "float", + "description": "The score of the classification" + } + }, + "example": { + "label": "pos", + "score": 0.9 + } + }, + "description": "This classifies a given paragraph according to it's sentiment returning a polarity estimate." + }, + "type": "skillConfig", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-10T23:24:57.052Z", + "endTime": "2026-08-10T23:24:57.052Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceCommand", + "payload": { + "data": { + "name": "sentiment_classification" + }, + "command": "skillGetConfig", + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.051Z", + "endTime": "2026-08-10T23:24:57.051Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 1, + "text": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "draft": false, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:24:09.738Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 858, + "type": "TextPositionSelector", + "start": 762 + }, + { + "type": "TextQuoteSelector", + "exact": "ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T", + "prefix": "des a framework for enhancingrea", + "suffix": "he extensible behavioral logging" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:24:42.119Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:57.118Z", + "endTime": "2026-08-10T23:24:57.118Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 1, + "tags": "[]", + "text": null, + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:24:09.756Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:24:42.123Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 1, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:57.118Z", + "endTime": "2026-08-10T23:24:57.118Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "comment_voteRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-10T23:24:57.119Z", + "endTime": "2026-08-10T23:24:57.119Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "tagRefresh", + "payload": [ + { + "id": 2, + "name": "Strength", + "public": true, + "userId": null, + "deleted": false, + "tagSetId": 1, + "colorCode": "success", + "createdAt": "2026-08-10T22:35:47.497Z", + "deletedAt": null, + "updatedAt": "2026-08-10T22:35:47.497Z", + "description": "Strength" + } + ], + "direction": false, + "startTime": "2026-08-10T23:24:57.123Z", + "endTime": "2026-08-10T23:24:57.123Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.190Z", + "endTime": "2026-08-10T23:24:57.190Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.192Z", + "endTime": "2026-08-10T23:24:57.192Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.192Z", + "endTime": "2026-08-10T23:24:57.192Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.192Z", + "endTime": "2026-08-10T23:24:57.192Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.196Z", + "endTime": "2026-08-10T23:24:57.196Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.196Z", + "endTime": "2026-08-10T23:24:57.196Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.196Z", + "endTime": "2026-08-10T23:24:57.196Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.195Z", + "endTime": "2026-08-10T23:24:57.195Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.194Z", + "endTime": "2026-08-10T23:24:57.194Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": null + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.537Z", + "endTime": "2026-08-10T23:24:57.537Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "scrollTop": 375, + "documentId": 1, + "scrollHeight": 22764 + }, + "action": "annotatorScrollActivity" + }, + "direction": true, + "startTime": "2026-08-10T23:24:57.989Z", + "endTime": "2026-08-10T23:24:57.989Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 569, + "clientY": 402, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:24:58.473Z", + "endTime": "2026-08-10T23:24:58.473Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "scrollTop": 452, + "documentId": 1, + "scrollHeight": 22764 + }, + "action": "annotatorScrollActivity" + }, + "direction": true, + "startTime": "2026-08-10T23:24:59.055Z", + "endTime": "2026-08-10T23:24:59.055Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:25:00.424Z", + "endTime": "2026-08-10T23:25:00.424Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:25:03.685Z", + "endTime": "2026-08-10T23:25:03.685Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "text": "Humans use annotations to read and", + "documentId": 1, + "studyStepId": null, + "eventClientX": 798, + "eventClientY": 372, + "studySessionId": null + }, + "action": "onTextSelect" + }, + "direction": true, + "startTime": "2026-08-10T23:25:11.467Z", + "endTime": "2026-08-10T23:25:11.467Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 798, + "clientY": 372, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:11.673Z", + "endTime": "2026-08-10T23:25:11.673Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "title": "Weakness", + "documentId": 1 + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:25:13.114Z", + "endTime": "2026-08-10T23:25:13.114Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 3, + "anonymous": false, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:25:13.116Z", + "endTime": "2026-08-10T23:25:13.116Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 2, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.129Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:25:13.129Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:13.132Z", + "endTime": "2026-08-10T23:25:13.132Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 2, + "text": "Humans use annotations to read and", + "draft": true, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.124Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:25:13.124Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:13.133Z", + "endTime": "2026-08-10T23:25:13.133Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 2, + "text": "Humans use annotations to read and", + "draft": true, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.124Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:25:13.124Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:13.135Z", + "endTime": "2026-08-10T23:25:13.135Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 2, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.129Z", + "updatedAt": "2026-08-10T23:25:13.129Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:13.135Z", + "endTime": "2026-08-10T23:25:13.135Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:25:13.137Z", + "endTime": "2026-08-10T23:25:13.137Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:25:13.137Z", + "endTime": "2026-08-10T23:25:13.137Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:25:13.137Z", + "endTime": "2026-08-10T23:25:13.137Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 848, + "clientY": 304, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:13.322Z", + "endTime": "2026-08-10T23:25:13.322Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "studySessionId": null + }, + "action": "pdfScroll" + }, + "direction": true, + "startTime": "2026-08-10T23:25:14.714Z", + "endTime": "2026-08-10T23:25:14.714Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "studySessionId": null + }, + "action": "pdfScroll" + }, + "direction": true, + "startTime": "2026-08-10T23:25:14.714Z", + "endTime": "2026-08-10T23:25:14.714Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "studySessionId": null + }, + "action": "pdfScroll" + }, + "direction": true, + "startTime": "2026-08-10T23:25:14.714Z", + "endTime": "2026-08-10T23:25:14.714Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1086, + "clientY": 382, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:15.041Z", + "endTime": "2026-08-10T23:25:15.041Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "scrollTop": 690, + "documentId": 1, + "scrollHeight": 22764 + }, + "action": "annotatorScrollActivity" + }, + "direction": true, + "startTime": "2026-08-10T23:25:15.323Z", + "endTime": "2026-08-10T23:25:15.323Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1275, + "clientY": 488, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:17.121Z", + "endTime": "2026-08-10T23:25:17.121Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 3, + "annotationId": 2 + }, + "direction": true, + "startTime": "2026-08-10T23:25:18.547Z", + "endTime": "2026-08-10T23:25:18.547Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "floppy-fill", + "props": { + "commentId": 2 + }, + "title": "Save" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:25:18.552Z", + "endTime": "2026-08-10T23:25:18.552Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentUpdate", + "payload": { + "tags": "[]", + "text": null, + "commentId": 2 + }, + "direction": true, + "startTime": "2026-08-10T23:25:18.551Z", + "endTime": "2026-08-10T23:25:18.551Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 2, + "text": "Humans use annotations to read and", + "draft": false, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.124Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:25:18.561Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:18.569Z", + "endTime": "2026-08-10T23:25:18.569Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 2, + "text": "Humans use annotations to read and", + "draft": false, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.124Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:25:18.561Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:18.570Z", + "endTime": "2026-08-10T23:25:18.570Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 2, + "tags": "[]", + "text": null, + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.129Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:25:18.568Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:18.574Z", + "endTime": "2026-08-10T23:25:18.574Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 2, + "tags": "[]", + "text": null, + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.129Z", + "updatedAt": "2026-08-10T23:25:18.568Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 2, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:18.575Z", + "endTime": "2026-08-10T23:25:18.575Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_vote" + }, + "direction": true, + "startTime": "2026-08-10T23:25:18.583Z", + "endTime": "2026-08-10T23:25:18.583Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1361, + "clientY": 532, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:18.873Z", + "endTime": "2026-08-10T23:25:18.873Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "tag", + "props": { + "commentId": 2 + }, + "title": "Edit main tag" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:25:20.282Z", + "endTime": "2026-08-10T23:25:20.282Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1324, + "clientY": 405, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:21.572Z", + "endTime": "2026-08-10T23:25:21.572Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 1, + "annotationId": 2 + }, + "direction": true, + "startTime": "2026-08-10T23:25:23.816Z", + "endTime": "2026-08-10T23:25:23.816Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 2, + "text": "Humans use annotations to read and", + "draft": false, + "tagId": 1, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.124Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:25:23.835Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:23.840Z", + "endTime": "2026-08-10T23:25:23.840Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 2, + "text": "Humans use annotations to read and", + "draft": false, + "tagId": 1, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:25:13.124Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2517, + "type": "TextPositionSelector", + "start": 2483 + }, + { + "type": "TextQuoteSelector", + "exact": "Humans use annotations to read and", + "prefix": "ans in critical text assessment.", + "suffix": " collabo-rate over text, from ha" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:25:23.835Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:23.841Z", + "endTime": "2026-08-10T23:25:23.841Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1134, + "clientY": 567, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:25.222Z", + "endTime": "2026-08-10T23:25:25.222Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:25:27.173Z", + "endTime": "2026-08-10T23:25:27.173Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:25:30.174Z", + "endTime": "2026-08-10T23:25:30.174Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1037, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:25:31.440Z", + "endTime": "2026-08-10T23:25:31.440Z" + }, + { + "recordingId": 12, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:25:32.165Z", + "endTime": "2026-08-10T23:25:32.165Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/230-add-comment.json b/backend/tests/regression_stories/230-add-comment.json new file mode 100644 index 000000000..1dd8913bc --- /dev/null +++ b/backend/tests/regression_stories/230-add-comment.json @@ -0,0 +1,783 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:35:58.331Z", + "traceCount": 34, + "recording": { + "name": "230-add-comment", + "status": "finished", + "startTime": "2026-08-10T23:25:56.184Z", + "userId": 3, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:26:19.391Z" + }, + "traces": [ + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "recordingRefresh", + "payload": [ + { + "id": 13, + "name": "Recording 8/11/2026, 1:25:56 AM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:25:56.185Z", + "startTime": "2026-08-10T23:25:56.184Z", + "updatedAt": "2026-08-10T23:25:56.185Z", + "excludeEvents": null, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:25:56.202Z", + "endTime": "2026-08-10T23:25:56.202Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:25:58.203Z", + "endTime": "2026-08-10T23:25:58.203Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1244, + "clientY": 7, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:01.040Z", + "endTime": "2026-08-10T23:26:01.040Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 737, + "clientY": 328, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:04.740Z", + "endTime": "2026-08-10T23:26:04.740Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "text": "t, the lack of data and key in-sights limits the NLP progress ", + "documentId": 1, + "studyStepId": null, + "eventClientX": 669, + "eventClientY": 315, + "studySessionId": null + }, + "action": "onTextSelect" + }, + "direction": true, + "startTime": "2026-08-10T23:26:06.280Z", + "endTime": "2026-08-10T23:26:06.280Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 669, + "clientY": 315, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:06.390Z", + "endTime": "2026-08-10T23:26:06.390Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "title": "Strength", + "documentId": 1 + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.097Z", + "endTime": "2026-08-10T23:26:08.097Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 2, + "anonymous": false, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2954, + "type": "TextPositionSelector", + "start": 2892 + }, + { + "type": "TextQuoteSelector", + "exact": "t, the lack of data and key in-sights limits the NLP progress ", + "prefix": "on the high-lighted passages. Ye", + "suffix": "in this area: from thefoundation" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.099Z", + "endTime": "2026-08-10T23:26:08.099Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 3, + "text": "t, the lack of data and key in-sights limits the NLP progress ", + "draft": true, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.104Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2954, + "type": "TextPositionSelector", + "start": 2892 + }, + { + "type": "TextQuoteSelector", + "exact": "t, the lack of data and key in-sights limits the NLP progress ", + "prefix": "on the high-lighted passages. Ye", + "suffix": "in this area: from thefoundation" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:08.104Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:08.115Z", + "endTime": "2026-08-10T23:26:08.115Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 3, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.110Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:26:08.110Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 3, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:08.114Z", + "endTime": "2026-08-10T23:26:08.114Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 3, + "text": "t, the lack of data and key in-sights limits the NLP progress ", + "draft": true, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.104Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2954, + "type": "TextPositionSelector", + "start": 2892 + }, + { + "type": "TextQuoteSelector", + "exact": "t, the lack of data and key in-sights limits the NLP progress ", + "prefix": "on the high-lighted passages. Ye", + "suffix": "in this area: from thefoundation" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:08.104Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:08.117Z", + "endTime": "2026-08-10T23:26:08.117Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 3, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.110Z", + "updatedAt": "2026-08-10T23:26:08.110Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 3, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:08.118Z", + "endTime": "2026-08-10T23:26:08.118Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.122Z", + "endTime": "2026-08-10T23:26:08.122Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.121Z", + "endTime": "2026-08-10T23:26:08.121Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.122Z", + "endTime": "2026-08-10T23:26:08.122Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 743, + "clientY": 228, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.240Z", + "endTime": "2026-08-10T23:26:08.240Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 843, + "clientY": 344, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:08.974Z", + "endTime": "2026-08-10T23:26:08.974Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:26:10.238Z", + "endTime": "2026-08-10T23:26:10.238Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:26:11.077Z", + "endTime": "2026-08-10T23:26:11.077Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1118, + "clientY": 642, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:12.590Z", + "endTime": "2026-08-10T23:26:12.590Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1207, + "clientY": 680, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:14.823Z", + "endTime": "2026-08-10T23:26:14.823Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 2, + "annotationId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:26:15.732Z", + "endTime": "2026-08-10T23:26:15.732Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRequest", + "payload": { + "data": { + "id": 3, + "data": { + "text": "hihi" + }, + "name": "sentiment_classification" + }, + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-10T23:26:15.735Z", + "endTime": "2026-08-10T23:26:15.735Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "floppy-fill", + "props": { + "commentId": 3 + }, + "title": "Save" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:26:15.735Z", + "endTime": "2026-08-10T23:26:15.735Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRefresh", + "payload": { + "data": { + "id": 3, + "data": { + "label": "pos", + "score": 0.9 + }, + "fallback": true + }, + "type": "skillResults", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-10T23:26:15.739Z", + "endTime": "2026-08-10T23:26:15.739Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentUpdate", + "payload": { + "tags": "[]", + "text": "hihi", + "commentId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:26:15.735Z", + "endTime": "2026-08-10T23:26:15.735Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 3, + "text": "t, the lack of data and key in-sights limits the NLP progress ", + "draft": false, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.104Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2954, + "type": "TextPositionSelector", + "start": 2892 + }, + { + "type": "TextQuoteSelector", + "exact": "t, the lack of data and key in-sights limits the NLP progress ", + "prefix": "on the high-lighted passages. Ye", + "suffix": "in this area: from thefoundation" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:15.752Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:15.759Z", + "endTime": "2026-08-10T23:26:15.759Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 3, + "text": "t, the lack of data and key in-sights limits the NLP progress ", + "draft": false, + "tagId": 2, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.104Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 2954, + "type": "TextPositionSelector", + "start": 2892 + }, + { + "type": "TextQuoteSelector", + "exact": "t, the lack of data and key in-sights limits the NLP progress ", + "prefix": "on the high-lighted passages. Ye", + "suffix": "in this area: from thefoundation" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:15.752Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:15.760Z", + "endTime": "2026-08-10T23:26:15.760Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 3, + "tags": "[]", + "text": "hihi", + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.110Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:26:15.758Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 3, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:15.764Z", + "endTime": "2026-08-10T23:26:15.764Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 3, + "tags": "[]", + "text": "hihi", + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:08.110Z", + "updatedAt": "2026-08-10T23:26:15.758Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 3, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:15.765Z", + "endTime": "2026-08-10T23:26:15.765Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_vote" + }, + "direction": true, + "startTime": "2026-08-10T23:26:15.772Z", + "endTime": "2026-08-10T23:26:15.772Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1361, + "clientY": 733, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:16.058Z", + "endTime": "2026-08-10T23:26:16.058Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1080, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:18.241Z", + "endTime": "2026-08-10T23:26:18.241Z" + }, + { + "recordingId": 13, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:26:18.388Z", + "endTime": "2026-08-10T23:26:18.388Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/240-reply-to-comment.json b/backend/tests/regression_stories/240-reply-to-comment.json new file mode 100644 index 000000000..f17202633 --- /dev/null +++ b/backend/tests/regression_stories/240-reply-to-comment.json @@ -0,0 +1,969 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:36:00.266Z", + "traceCount": 42, + "recording": { + "name": "240-reply-to-comment", + "status": "finished", + "startTime": "2026-08-10T23:26:37.987Z", + "userId": 3, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:27:03.231Z" + }, + "traces": [ + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "recordingRefresh", + "payload": [ + { + "id": 14, + "name": "Recording 8/11/2026, 1:26:37 AM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:26:37.988Z", + "startTime": "2026-08-10T23:26:37.987Z", + "updatedAt": "2026-08-10T23:26:37.988Z", + "excludeEvents": null, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:38.006Z", + "endTime": "2026-08-10T23:26:38.006Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:26:39.015Z", + "endTime": "2026-08-10T23:26:39.015Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "text": "tween humans and texts,how they translate into NLP tasks, and ", + "documentId": 1, + "studyStepId": null, + "eventClientX": 792, + "eventClientY": 474, + "studySessionId": null + }, + "action": "onTextSelect" + }, + "direction": true, + "startTime": "2026-08-10T23:26:44.665Z", + "endTime": "2026-08-10T23:26:44.665Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 792, + "clientY": 474, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:44.942Z", + "endTime": "2026-08-10T23:26:44.942Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 853, + "clientY": 424, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.208Z", + "endTime": "2026-08-10T23:26:46.208Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "title": "Weakness", + "documentId": 1 + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.783Z", + "endTime": "2026-08-10T23:26:46.783Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 3, + "anonymous": false, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 3260, + "type": "TextPositionSelector", + "start": 3198 + }, + { + "type": "TextQuoteSelector", + "exact": "tween humans and texts,how they translate into NLP tasks, and ", + "prefix": "bout thehands-on interactions be", + "suffix": "how theimpact of NLP-based assis" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.785Z", + "endTime": "2026-08-10T23:26:46.785Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 4, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.796Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:26:46.796Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 4, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:46.799Z", + "endTime": "2026-08-10T23:26:46.799Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 4, + "text": "tween humans and texts,how they translate into NLP tasks, and ", + "draft": true, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.789Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 3260, + "type": "TextPositionSelector", + "start": 3198 + }, + { + "type": "TextQuoteSelector", + "exact": "tween humans and texts,how they translate into NLP tasks, and ", + "prefix": "bout thehands-on interactions be", + "suffix": "how theimpact of NLP-based assis" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:46.789Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:46.800Z", + "endTime": "2026-08-10T23:26:46.800Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 4, + "text": "tween humans and texts,how they translate into NLP tasks, and ", + "draft": true, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.789Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 3260, + "type": "TextPositionSelector", + "start": 3198 + }, + { + "type": "TextQuoteSelector", + "exact": "tween humans and texts,how they translate into NLP tasks, and ", + "prefix": "bout thehands-on interactions be", + "suffix": "how theimpact of NLP-based assis" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:46.789Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:46.801Z", + "endTime": "2026-08-10T23:26:46.801Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 4, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.796Z", + "updatedAt": "2026-08-10T23:26:46.796Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 4, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:46.801Z", + "endTime": "2026-08-10T23:26:46.801Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.805Z", + "endTime": "2026-08-10T23:26:46.805Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.805Z", + "endTime": "2026-08-10T23:26:46.805Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.805Z", + "endTime": "2026-08-10T23:26:46.805Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 853, + "clientY": 424, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:46.820Z", + "endTime": "2026-08-10T23:26:46.820Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1162, + "clientY": 651, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:48.426Z", + "endTime": "2026-08-10T23:26:48.426Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentUpdate", + "payload": { + "tags": "[]", + "text": "haha", + "commentId": 4 + }, + "direction": true, + "startTime": "2026-08-10T23:26:52.299Z", + "endTime": "2026-08-10T23:26:52.299Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRequest", + "payload": { + "data": { + "id": 4, + "data": { + "text": "haha" + }, + "name": "sentiment_classification" + }, + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-10T23:26:52.299Z", + "endTime": "2026-08-10T23:26:52.299Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 3, + "annotationId": 4 + }, + "direction": true, + "startTime": "2026-08-10T23:26:52.298Z", + "endTime": "2026-08-10T23:26:52.298Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "floppy-fill", + "props": { + "commentId": 4 + }, + "title": "Save" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:26:52.307Z", + "endTime": "2026-08-10T23:26:52.307Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRefresh", + "payload": { + "data": { + "id": 4, + "data": { + "label": "pos", + "score": 0.9 + }, + "fallback": true + }, + "type": "skillResults", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-10T23:26:52.302Z", + "endTime": "2026-08-10T23:26:52.302Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 4, + "text": "tween humans and texts,how they translate into NLP tasks, and ", + "draft": false, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.789Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 3260, + "type": "TextPositionSelector", + "start": 3198 + }, + { + "type": "TextQuoteSelector", + "exact": "tween humans and texts,how they translate into NLP tasks, and ", + "prefix": "bout thehands-on interactions be", + "suffix": "how theimpact of NLP-based assis" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:52.317Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:52.324Z", + "endTime": "2026-08-10T23:26:52.324Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 4, + "text": "tween humans and texts,how they translate into NLP tasks, and ", + "draft": false, + "tagId": 3, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.789Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 3260, + "type": "TextPositionSelector", + "start": 3198 + }, + { + "type": "TextQuoteSelector", + "exact": "tween humans and texts,how they translate into NLP tasks, and ", + "prefix": "bout thehands-on interactions be", + "suffix": "how theimpact of NLP-based assis" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:26:52.317Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:52.325Z", + "endTime": "2026-08-10T23:26:52.325Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 4, + "tags": "[]", + "text": "haha", + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.796Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:26:52.327Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 4, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:52.330Z", + "endTime": "2026-08-10T23:26:52.330Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 4, + "tags": "[]", + "text": "haha", + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:46.796Z", + "updatedAt": "2026-08-10T23:26:52.327Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 4, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:52.331Z", + "endTime": "2026-08-10T23:26:52.331Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_vote" + }, + "direction": true, + "startTime": "2026-08-10T23:26:52.334Z", + "endTime": "2026-08-10T23:26:52.334Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1364, + "clientY": 743, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:52.691Z", + "endTime": "2026-08-10T23:26:52.691Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "reply-fill", + "props": { + "commentId": 4 + }, + "title": "Reply" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:26:53.970Z", + "endTime": "2026-08-10T23:26:53.970Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentUpdate", + "payload": { + "anonymous": false, + "documentId": 1, + "studyStepId": null, + "studySessionId": null, + "parentCommentId": 4 + }, + "direction": true, + "startTime": "2026-08-10T23:26:53.969Z", + "endTime": "2026-08-10T23:26:53.969Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 5, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:53.977Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:26:53.977Z", + "documentId": 1, + "studyStepId": null, + "annotationId": null, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:53.985Z", + "endTime": "2026-08-10T23:26:53.985Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 5, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:53.977Z", + "updatedAt": "2026-08-10T23:26:53.977Z", + "documentId": 1, + "studyStepId": null, + "annotationId": null, + "studySessionId": null, + "parentCommentId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:53.987Z", + "endTime": "2026-08-10T23:26:53.987Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1273, + "clientY": 736, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:54.358Z", + "endTime": "2026-08-10T23:26:54.358Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentUpdate", + "payload": { + "tags": "[]", + "text": "hehe", + "commentId": 5 + }, + "direction": true, + "startTime": "2026-08-10T23:26:58.116Z", + "endTime": "2026-08-10T23:26:58.116Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRequest", + "payload": { + "data": { + "id": 5, + "data": { + "text": "hehe" + }, + "name": "sentiment_classification" + }, + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-10T23:26:58.117Z", + "endTime": "2026-08-10T23:26:58.117Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "serviceRefresh", + "payload": { + "data": { + "id": 5, + "data": { + "label": "pos", + "score": 0.9 + }, + "fallback": true + }, + "type": "skillResults", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-10T23:26:58.121Z", + "endTime": "2026-08-10T23:26:58.121Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "save-fill", + "props": { + "edit": false, + "level": 1, + "commentId": 5 + }, + "title": "Save (Ctrl+Enter)" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:26:58.117Z", + "endTime": "2026-08-10T23:26:58.117Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 5, + "tags": "[]", + "text": "hehe", + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:53.977Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:26:58.138Z", + "documentId": 1, + "studyStepId": null, + "annotationId": null, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:58.143Z", + "endTime": "2026-08-10T23:26:58.143Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 5, + "tags": "[]", + "text": "hehe", + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:26:53.977Z", + "updatedAt": "2026-08-10T23:26:58.138Z", + "documentId": 1, + "studyStepId": null, + "annotationId": null, + "studySessionId": null, + "parentCommentId": 4 + } + ], + "direction": false, + "startTime": "2026-08-10T23:26:58.153Z", + "endTime": "2026-08-10T23:26:58.153Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_vote" + }, + "direction": true, + "startTime": "2026-08-10T23:26:58.155Z", + "endTime": "2026-08-10T23:26:58.155Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1364, + "clientY": 713, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:26:58.290Z", + "endTime": "2026-08-10T23:26:58.290Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1117, + "clientY": 5, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:00.941Z", + "endTime": "2026-08-10T23:27:00.941Z" + }, + { + "recordingId": 14, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:27:02.127Z", + "endTime": "2026-08-10T23:27:02.127Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/250-toggle-annotation-visibility.json b/backend/tests/regression_stories/250-toggle-annotation-visibility.json new file mode 100644 index 000000000..bd82269e7 --- /dev/null +++ b/backend/tests/regression_stories/250-toggle-annotation-visibility.json @@ -0,0 +1,784 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:36:03.383Z", + "traceCount": 34, + "recording": { + "name": "250-toggle-annotation-visibility", + "status": "finished", + "startTime": "2026-08-10T23:27:27.395Z", + "userId": 3, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:27:50.509Z" + }, + "traces": [ + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "recordingRefresh", + "payload": [ + { + "id": 15, + "name": "Recording 8/11/2026, 1:27:27 AM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:27:27.396Z", + "startTime": "2026-08-10T23:27:27.395Z", + "updatedAt": "2026-08-10T23:27:27.396Z", + "excludeEvents": null, + "participantSocketIds": [ + "o2D2-TTZMejvegnsAAAR" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:27.407Z", + "endTime": "2026-08-10T23:27:27.407Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:27:29.112Z", + "endTime": "2026-08-10T23:27:29.112Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 596, + "clientY": 671, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:33.526Z", + "endTime": "2026-08-10T23:27:33.526Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "text": "o address these limitations, we introduce", + "documentId": 1, + "studyStepId": null, + "eventClientX": 596, + "eventClientY": 671, + "studySessionId": null + }, + "action": "onTextSelect" + }, + "direction": true, + "startTime": "2026-08-10T23:27:33.557Z", + "endTime": "2026-08-10T23:27:33.557Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "text": "hatGPT (O", + "documentId": 1, + "studyStepId": null, + "eventClientX": 368, + "eventClientY": 536, + "studySessionId": null + }, + "action": "onTextSelect" + }, + "direction": true, + "startTime": "2026-08-10T23:27:36.978Z", + "endTime": "2026-08-10T23:27:36.978Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "title": "Other", + "documentId": 1 + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:27:38.685Z", + "endTime": "2026-08-10T23:27:38.685Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 4, + "anonymous": false, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 1826, + "type": "TextPositionSelector", + "start": 1817 + }, + { + "type": "TextQuoteSelector", + "exact": "hatGPT (O", + "prefix": "GPT-3 (Brown et al., 2020) and C", + "suffix": "uyanget al., 2022)2 – the progre" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "direction": true, + "startTime": "2026-08-10T23:27:38.687Z", + "endTime": "2026-08-10T23:27:38.687Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 6, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.701Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:27:38.701Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 5, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:38.703Z", + "endTime": "2026-08-10T23:27:38.703Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 5, + "text": "hatGPT (O", + "draft": true, + "tagId": 4, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.693Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 1826, + "type": "TextPositionSelector", + "start": 1817 + }, + { + "type": "TextQuoteSelector", + "exact": "hatGPT (O", + "prefix": "GPT-3 (Brown et al., 2020) and C", + "suffix": "uyanget al., 2022)2 – the progre" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:27:38.693Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:38.704Z", + "endTime": "2026-08-10T23:27:38.704Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 5, + "text": "hatGPT (O", + "draft": true, + "tagId": 4, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.693Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 1826, + "type": "TextPositionSelector", + "start": 1817 + }, + { + "type": "TextQuoteSelector", + "exact": "hatGPT (O", + "prefix": "GPT-3 (Brown et al., 2020) and C", + "suffix": "uyanget al., 2022)2 – the progre" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:27:38.693Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:38.705Z", + "endTime": "2026-08-10T23:27:38.705Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 6, + "tags": "[]", + "text": null, + "draft": true, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.701Z", + "updatedAt": "2026-08-10T23:27:38.701Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 5, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:38.706Z", + "endTime": "2026-08-10T23:27:38.706Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-10T23:27:38.708Z", + "endTime": "2026-08-10T23:27:38.708Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:27:38.708Z", + "endTime": "2026-08-10T23:27:38.708Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:27:38.708Z", + "endTime": "2026-08-10T23:27:38.708Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 413, + "clientY": 503, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:39.043Z", + "endTime": "2026-08-10T23:27:39.043Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "icon": "floppy-fill", + "props": { + "commentId": 6 + }, + "title": "Save" + }, + "action": "clickSidebarButton" + }, + "direction": true, + "startTime": "2026-08-10T23:27:40.937Z", + "endTime": "2026-08-10T23:27:40.937Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentUpdate", + "payload": { + "tags": "[]", + "text": null, + "commentId": 6 + }, + "direction": true, + "startTime": "2026-08-10T23:27:40.936Z", + "endTime": "2026-08-10T23:27:40.936Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationUpdate", + "payload": { + "tagId": 4, + "annotationId": 5 + }, + "direction": true, + "startTime": "2026-08-10T23:27:40.935Z", + "endTime": "2026-08-10T23:27:40.935Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 5, + "text": "hatGPT (O", + "draft": false, + "tagId": 4, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.693Z", + "deletedAt": null, + "selectors": { + "target": [ + { + "selector": [ + { + "end": 1826, + "type": "TextPositionSelector", + "start": 1817 + }, + { + "type": "TextQuoteSelector", + "exact": "hatGPT (O", + "prefix": "GPT-3 (Brown et al., 2020) and C", + "suffix": "uyanget al., 2022)2 – the progre" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:27:40.946Z", + "documentId": 1, + "studyStepId": null, + "creator_name": "guest", + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:40.953Z", + "endTime": "2026-08-10T23:27:40.953Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "annotationRefresh", + "payload": [ + { + "id": 5, + "text": "hatGPT (O", + "draft": false, + "tagId": 4, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.693Z", + "selectors": { + "target": [ + { + "selector": [ + { + "end": 1826, + "type": "TextPositionSelector", + "start": 1817 + }, + { + "type": "TextQuoteSelector", + "exact": "hatGPT (O", + "prefix": "GPT-3 (Brown et al., 2020) and C", + "suffix": "uyanget al., 2022)2 – the progre" + }, + { + "type": "PagePositionSelector", + "number": 1 + } + ] + } + ] + }, + "updatedAt": "2026-08-10T23:27:40.946Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:40.955Z", + "endTime": "2026-08-10T23:27:40.955Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 6, + "tags": "[]", + "text": null, + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.701Z", + "deletedAt": null, + "updatedAt": "2026-08-10T23:27:40.952Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 5, + "creator_name": "guest", + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:40.958Z", + "endTime": "2026-08-10T23:27:40.958Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "commentRefresh", + "payload": [ + { + "id": 6, + "tags": "[]", + "text": null, + "draft": false, + "userId": 3, + "deleted": false, + "anonymous": false, + "createdAt": "2026-08-10T23:27:38.701Z", + "updatedAt": "2026-08-10T23:27:40.952Z", + "documentId": 1, + "studyStepId": null, + "annotationId": 5, + "studySessionId": null, + "parentCommentId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:40.959Z", + "endTime": "2026-08-10T23:27:40.959Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "subscribeAppData", + "payload": { + "table": "comment_vote" + }, + "direction": true, + "startTime": "2026-08-10T23:27:40.965Z", + "endTime": "2026-08-10T23:27:40.965Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1364, + "clientY": 475, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:42.459Z", + "endTime": "2026-08-10T23:27:42.459Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1364, + "clientY": 472, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:43.992Z", + "endTime": "2026-08-10T23:27:43.992Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "appDataUpdate", + "payload": { + "data": { + "state": 1, + "userId": 3, + "commentId": 6, + "documentId": 1, + "studyStepId": null, + "studySessionId": null + }, + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-10T23:27:45.501Z", + "endTime": "2026-08-10T23:27:45.501Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "state": true, + "commentId": 6 + }, + "action": "commentToggleCollapse" + }, + "direction": true, + "startTime": "2026-08-10T23:27:45.505Z", + "endTime": "2026-08-10T23:27:45.505Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "unsubscribeAppData", + "payload": "cc10d201-04e9-4a99-9a54-c14cfab6c74f", + "direction": true, + "startTime": "2026-08-10T23:27:45.505Z", + "endTime": "2026-08-10T23:27:45.505Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "comment_stateRefresh", + "payload": [ + { + "id": 1, + "state": 1, + "userId": 3, + "deleted": false, + "commentId": 6, + "createdAt": "2026-08-10T23:27:45.508Z", + "updatedAt": "2026-08-10T23:27:45.508Z", + "documentId": 1, + "studyStepId": null, + "studySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:27:45.518Z", + "endTime": "2026-08-10T23:27:45.518Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1078, + "clientY": 351, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:45.860Z", + "endTime": "2026-08-10T23:27:45.860Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1076, + "clientY": 371, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:47.093Z", + "endTime": "2026-08-10T23:27:47.093Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1049, + "clientY": 387, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:48.110Z", + "endTime": "2026-08-10T23:27:48.110Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "clientX": 1069, + "clientY": 84, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:27:49.159Z", + "endTime": "2026-08-10T23:27:49.159Z" + }, + { + "recordingId": 15, + "userId": 3, + "socketId": "o2D2-TTZMejvegnsAAAR", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:27:49.321Z", + "endTime": "2026-08-10T23:27:49.321Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/330-customise-logo.json b/backend/tests/regression_stories/330-customise-logo.json new file mode 100644 index 000000000..a52c04fda --- /dev/null +++ b/backend/tests/regression_stories/330-customise-logo.json @@ -0,0 +1,6056 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:16.857Z", + "traceCount": 46, + "recording": { + "name": "330-customise-logo", + "status": "finished", + "startTime": "2026-08-10T23:36:47.726Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:37:16.312Z" + }, + "traces": [ + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 18, + "name": "Recording 8/11/2026, 1:36:47 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:36:47.727Z", + "startTime": "2026-08-10T23:36:47.726Z", + "updatedAt": "2026-08-10T23:36:47.727Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:36:47.745Z", + "endTime": "2026-08-10T23:36:47.745Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:36:48.917Z", + "endTime": "2026-08-10T23:36:48.917Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/settings", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:36:50.653Z", + "endTime": "2026-08-10T23:36:50.653Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "d06e1559-d8a2-4f1e-8377-9c26b776028c", + "direction": true, + "startTime": "2026-08-10T23:36:50.661Z", + "endTime": "2026-08-10T23:36:50.661Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "2444db68-4723-4c94-b955-7cf40a0f6d87", + "direction": true, + "startTime": "2026-08-10T23:36:50.662Z", + "endTime": "2026-08-10T23:36:50.662Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "67aafec3-8ba9-4a3f-96d6-dbe7fba594a9", + "direction": true, + "startTime": "2026-08-10T23:36:50.662Z", + "endTime": "2026-08-10T23:36:50.662Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "5b4ee7c0-3016-4e3b-b1f0-cabb1d3c4fae", + "direction": true, + "startTime": "2026-08-10T23:36:50.663Z", + "endTime": "2026-08-10T23:36:50.663Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "2d4e1102-5629-4f46-bf79-497b420d6040", + "direction": true, + "startTime": "2026-08-10T23:36:50.663Z", + "endTime": "2026-08-10T23:36:50.663Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "e7aeec06-fa49-4ddc-bad1-ffd7798d7f59", + "direction": true, + "startTime": "2026-08-10T23:36:50.663Z", + "endTime": "2026-08-10T23:36:50.663Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:50.700Z", + "endTime": "2026-08-10T23:36:50.700Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingGetData", + "payload": null, + "direction": true, + "startTime": "2026-08-10T23:36:50.701Z", + "endTime": "2026-08-10T23:36:50.701Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.637Z", + "endTime": "2026-08-10T23:36:52.637Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:36:52.638Z", + "endTime": "2026-08-10T23:36:52.638Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 658, + "clientY": 660, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:36:53.500Z", + "endTime": "2026-08-10T23:36:53.500Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 687, + "clientY": 416, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:36:55.301Z", + "endTime": "2026-08-10T23:36:55.301Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1101, + "clientY": 398, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:00.553Z", + "endTime": "2026-08-10T23:37:00.553Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 878, + "clientY": 512, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:02.079Z", + "endTime": "2026-08-10T23:37:02.079Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "upload", + "title": "Save Settings (Unsaved changes)" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:37:08.386Z", + "endTime": "2026-08-10T23:37:08.386Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingSave", + "payload": [ + { + "key": "annotator.collab.response", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.009Z", + "wizardStep": null, + "description": "Whether the comment response functionality is activated.", + "displayName": "Comment replies", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.defaultNumsShown.levelOneUp", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.015Z", + "wizardStep": null, + "description": "How many 1st or higher level comments are shown by default.", + "displayName": "Level 1+ comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.defaultNumsShown.levelZero", + "type": "integer", + "value": "3", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.017Z", + "wizardStep": null, + "description": "How many 0-level comments are shown by default when annotation responses are shown", + "displayName": "Level 0 comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.019Z", + "wizardStep": null, + "description": "Enable voting on comments", + "displayName": "Voting on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.onlyUpvote", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.020Z", + "wizardStep": null, + "description": "Only allow upvote on comments", + "displayName": "Only upvote on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.download.enabledBeforeStudyClosing", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.213Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.022Z", + "wizardStep": null, + "description": "Whether annotations can be downloaded before a study is closed", + "displayName": "Download before study closing", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Download" + }, + { + "key": "annotator.nlp.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.025Z", + "wizardStep": null, + "description": "Indicates whether NLP support is activated in the annotation view.", + "displayName": "NLP in annotation view", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.027Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request.", + "displayName": "NLP request timeout", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.sentiment_analysis.activated", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.423Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.029Z", + "wizardStep": null, + "description": "Indicates whether sentiment analysis is activated in the annotation view.", + "displayName": "Sentiment analysis in comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.031Z", + "wizardStep": null, + "description": "Indicates whether summarization is activated.", + "displayName": "Summarization activated", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.annoLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.033Z", + "wizardStep": null, + "description": "The minimum length of the annotation to generate a summary.", + "displayName": "Summarization annotation length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.maxLength", + "type": "integer", + "value": "30", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.035Z", + "wizardStep": null, + "description": "The maximum length of the summary (in tokens of the model).", + "displayName": "Summarization max length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.minLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.036Z", + "wizardStep": null, + "description": "The minimum length of the summary (in tokens of the model).", + "displayName": "Summarization min length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.skillName", + "type": null, + "value": "summarization", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.037Z", + "wizardStep": null, + "description": "The skill name to use for summarization.", + "displayName": "Summarization skill name", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.sidebar.maxWidth", + "type": "integer", + "value": "50", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.039Z", + "wizardStep": null, + "description": "The maximum width of the sidebar (percentage of the screen, in %)", + "displayName": "Sidebar max width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "annotator.sidebar.minWidth", + "type": "integer", + "value": "400", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.043Z", + "wizardStep": null, + "description": "The minimum width of the sidebar (in px)", + "displayName": "Sidebar min width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "app.config.consent.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.135Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.046Z", + "wizardStep": "general", + "description": "Enable consent updating feature", + "displayName": "Consent update feature", + "wizardOrder": 2, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.config.copyright", + "type": null, + "value": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.048Z", + "wizardStep": "general", + "description": "The copyright text to display on the login page", + "displayName": "Copyright notice", + "wizardOrder": 1, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.landing.linkDocs", + "type": null, + "value": "/docs", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.049Z", + "wizardStep": "general", + "description": "The URL to the documentation", + "displayName": "Documentation URL", + "wizardOrder": 7, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkFeedback", + "type": null, + "value": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.051Z", + "wizardStep": "general", + "description": "The URL to the official feedback page", + "displayName": "Feedback form URL", + "wizardOrder": 11, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkProject", + "type": null, + "value": "https://intertext.ukp-lab.de/", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.052Z", + "wizardStep": "general", + "description": "The URL to the official project page", + "displayName": "Project page URL", + "wizardOrder": 9, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showDocs", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.054Z", + "wizardStep": "general", + "description": "Whether to show the documentation links on the landing page", + "displayName": "Show documentation link", + "wizardOrder": 6, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showFeedback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.055Z", + "wizardStep": "general", + "description": "Whether to show the official feedback link on the landing page", + "displayName": "Show feedback link", + "wizardOrder": 10, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showProject", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.057Z", + "wizardStep": "general", + "description": "Whether to show the official project page link on the landing page", + "displayName": "Show project link", + "wizardOrder": 8, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.login.forgotPassword", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.059Z", + "wizardStep": "general", + "description": "Whether to enable the forgot password functionality or not", + "displayName": "Forgot password", + "wizardOrder": 4, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.login.guest", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.061Z", + "wizardStep": "general", + "description": "Whether to allow guest logins", + "displayName": "Allow guest login", + "wizardOrder": 3, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.login.passwordResetRateLimit", + "type": "number", + "value": "5", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.062Z", + "wizardStep": null, + "description": "Rate limit in minutes for password reset emails to prevent spam", + "displayName": "Password reset rate limit", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.register.acceptDataSharing.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.064Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to share data during registration.", + "displayName": "Default accept data sharing", + "wizardOrder": 30, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.acceptStats.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.066Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to tracking during registration.", + "displayName": "Default accept tracking", + "wizardOrder": 29, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.emailVerification", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.068Z", + "wizardStep": "mail", + "description": "Whether to require email verification for new user accounts", + "displayName": "Email verification required", + "wizardOrder": 24, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "app.register.emailVerificationRateLimit", + "type": "number", + "value": "2", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.070Z", + "wizardStep": null, + "description": "Rate limit in minutes for email verification emails to prevent spam", + "displayName": "Email verification rate limit", + "wizardOrder": null, + "displayGroup": "Registration", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email verification rate limit" + }, + { + "key": "app.register.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.614Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.071Z", + "wizardStep": "registration", + "description": "Whether self-registration via the public register page is allowed.", + "displayName": "Enable self-registration", + "wizardOrder": 25, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Enable registration" + }, + { + "key": "app.register.requestData", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.075Z", + "wizardStep": "registration", + "description": "Indicates if the option for data sharing during registration is enabled.", + "displayName": "Request data sharing at registration", + "wizardOrder": 28, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestName", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.077Z", + "wizardStep": "registration", + "description": "Whether to request the user's name during registration", + "displayName": "Request name at registration", + "wizardOrder": 26, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestStats", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.078Z", + "wizardStep": "registration", + "description": "Whether to request the user's statistics approval during registration", + "displayName": "Request usage-stats consent at registration", + "wizardOrder": 27, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.terms", + "type": "edits", + "value": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.079Z", + "wizardStep": "general", + "description": "Terms and conditions text to display during registration", + "displayName": "Terms and conditions", + "wizardOrder": 5, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Terms and conditions" + }, + { + "key": "app.setup.wizardCompleted", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.083Z", + "wizardStep": null, + "description": "Internal setup wizard completion state.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.setup.wizardCurrentStep", + "type": "integer", + "value": "0", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.084Z", + "wizardStep": null, + "description": "Internal setup wizard current step.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.study.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.086Z", + "wizardStep": null, + "description": "Whether to enable the user study functionality", + "displayName": "Enable study mode", + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Study mode" + }, + { + "key": "dashboard.navigation.component.default", + "type": null, + "value": "Home", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.087Z", + "wizardStep": null, + "description": "The default component to display in the dashboard", + "displayName": "Default dashboard component", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Navigation and dashboard" + }, + { + "key": "editor.document.showButtonCreate", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.089Z", + "wizardStep": null, + "description": "Show create button in dashboard to create a new html document", + "displayName": "Show create document button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonDeltaDownload", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.090Z", + "wizardStep": null, + "description": "Show download button for document deltas (edits)", + "displayName": "Show delta download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.092Z", + "wizardStep": null, + "description": "Show download button for document HTML (edits)", + "displayName": "Show HTML download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonPDFDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.207Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.093Z", + "wizardStep": null, + "description": "Show download button for PDF documents with annotations", + "displayName": "Show PDF download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.edits.debounceTime", + "type": "number", + "value": "150", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.095Z", + "wizardStep": null, + "description": "Delay time in milliseconds before processing edits", + "displayName": "Edit debounce time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.historyGroupTime", + "type": "integer", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.096Z", + "wizardStep": null, + "description": "The edits will be merged into groups when there is less than this time between them", + "displayName": "Edit history group time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.showHistoryForUser", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.098Z", + "wizardStep": null, + "description": "Show the history of edits for all users (default only admins)", + "displayName": "Show edit history to users", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.toolbar.showHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.099Z", + "wizardStep": null, + "description": "Show download button for the html document", + "displayName": "Toolbar HTML download", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.align", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.100Z", + "wizardStep": null, + "description": "Text alignment in the toolbar", + "displayName": "Toolbar align", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.background", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.102Z", + "wizardStep": null, + "description": "Text background color in the toolbar", + "displayName": "Toolbar background", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.blockquote", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.103Z", + "wizardStep": null, + "description": "Blockquote in the toolbar", + "displayName": "Toolbar blockquote", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.bold", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.105Z", + "wizardStep": null, + "description": "Bold text in the toolbar", + "displayName": "Toolbar bold", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.checkList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.106Z", + "wizardStep": null, + "description": "Check list in the toolbar", + "displayName": "Toolbar check list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.clean", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.108Z", + "wizardStep": null, + "description": "Clean tool in the toolbar", + "displayName": "Toolbar clean", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.code-block", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.110Z", + "wizardStep": null, + "description": "Code-block in the toolbar", + "displayName": "Toolbar code-block", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.color", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.112Z", + "wizardStep": null, + "description": "Text color in the toolbar", + "displayName": "Toolbar color", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.direction", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.113Z", + "wizardStep": null, + "description": "Text direction in the toolbar", + "displayName": "Toolbar direction", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.font", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.115Z", + "wizardStep": null, + "description": "Font tool in the toolbar", + "displayName": "Toolbar font", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.formula", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.116Z", + "wizardStep": null, + "description": "Formula in the toolbar", + "displayName": "Toolbar formula", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.header", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.118Z", + "wizardStep": null, + "description": "Header in the toolbar", + "displayName": "Toolbar header", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.image", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.119Z", + "wizardStep": null, + "description": "Image tool in the toolbar", + "displayName": "Toolbar image", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.indent", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.120Z", + "wizardStep": null, + "description": "Indent in the toolbar", + "displayName": "Toolbar indent", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.italic", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.121Z", + "wizardStep": null, + "description": "Italic text in the toolbar", + "displayName": "Toolbar italic", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.link", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.123Z", + "wizardStep": null, + "description": "Link tool in the toolbar", + "displayName": "Toolbar link", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.orderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.124Z", + "wizardStep": null, + "description": "Ordered list in the toolbar", + "displayName": "Toolbar ordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.size", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.126Z", + "wizardStep": null, + "description": "Font size in the toolbar", + "displayName": "Toolbar size", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.strike", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.127Z", + "wizardStep": null, + "description": "Strike through text in the toolbar", + "displayName": "Toolbar strike", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.subscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.130Z", + "wizardStep": null, + "description": " Subscript in the toolbar", + "displayName": "Toolbar subscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.superscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.133Z", + "wizardStep": null, + "description": "Superscript in the toolbar", + "displayName": "Toolbar superscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.underline", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.135Z", + "wizardStep": null, + "description": "Underline text in the toolbar", + "displayName": "Toolbar underline", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.unorderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.137Z", + "wizardStep": null, + "description": "Bullet list in the toolbar", + "displayName": "Toolbar unordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.video", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.139Z", + "wizardStep": null, + "description": "Video tool in the toolbar", + "displayName": "Toolbar video", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.visibility", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.142Z", + "wizardStep": null, + "description": "Make toolbar in the editor visible", + "displayName": "Toolbar visibility", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.assignment", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.144Z", + "wizardStep": null, + "description": "Template type for assignment notification emails (Email - Assignment). Leave empty to use default hardcoded email.", + "displayName": "Assignment notification email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordReset", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.149Z", + "wizardStep": null, + "description": "Template type for password reset emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Password reset email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordResetSuccess", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.152Z", + "wizardStep": null, + "description": "Template type for password reset success emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Password reset success email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.registration", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.154Z", + "wizardStep": null, + "description": "Template type for registration welcome emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Registration welcome email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionFinish", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.156Z", + "wizardStep": null, + "description": "Template type for session finish emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session finish email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionStart", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.158Z", + "wizardStep": null, + "description": "Template type for session start emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session start email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.studyClosed", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.159Z", + "wizardStep": null, + "description": "Template type for study closed emails (Email - Study Close). Leave empty to use default hardcoded email.", + "displayName": "Study closed email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUpload", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.161Z", + "wizardStep": null, + "description": "Template type for assignment submission upload/reupload emails to the assignment owner (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (assignment owner)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUploadConfirmation", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.162Z", + "wizardStep": null, + "description": "Template for submission upload confirmation to the submitter (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (submitter)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.twoFactorOtp", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.163Z", + "wizardStep": null, + "description": "Template type for two-factor authentication code emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Two-factor OTP email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.verification", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.164Z", + "wizardStep": null, + "description": "Template type for email verification emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Email verification", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "logo.reBgColor", + "type": "color", + "value": "#a934df", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.757Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.166Z", + "wizardStep": null, + "description": "Background colour for the RE section of the logo", + "displayName": "Logo RE section background colour", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Branding" + }, + { + "key": "modal.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.201Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.168Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request in modal (frontend, ms)", + "displayName": "Modal NLP request timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.long", + "type": "integer", + "value": "120000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.169Z", + "wizardStep": null, + "description": "Long rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation long", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.short", + "type": "integer", + "value": "30000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.170Z", + "wizardStep": null, + "description": "Short rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation short", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "projects.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.253Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.172Z", + "wizardStep": null, + "description": "The default project to use for new documents or studies", + "displayName": "Default project", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + }, + { + "key": "rpc.moodleAPI.apiKey", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.173Z", + "wizardStep": "moodle", + "description": "The Moodle API key for the connection", + "displayName": "Moodle API key", + "wizardOrder": 32, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.apiUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.175Z", + "wizardStep": "moodle", + "description": "The URL of the Moodle API", + "displayName": "Moodle API URL", + "wizardOrder": 31, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.courseID", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.177Z", + "wizardStep": "moodle", + "description": "The ID of the course in Moodle from which to fetch the data", + "displayName": "Moodle course ID", + "wizardOrder": 33, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Course" + }, + { + "key": "rpc.moodleAPI.showInput.apiKey", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.178Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API key", + "displayName": "Show Moodle API key input", + "wizardOrder": 35, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.apiUrl", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.180Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API URL", + "displayName": "Show Moodle API URL input", + "wizardOrder": 34, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.courseID", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.181Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the course ID", + "displayName": "Show Moodle course ID input", + "wizardOrder": 36, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "service.nlp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.182Z", + "wizardStep": null, + "description": "Whether to automatically connect to the NLP service", + "displayName": "Enable NLP features", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.retryDelay", + "type": "number", + "value": "10000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.183Z", + "wizardStep": null, + "description": "The delay between retries if connection errors occurs for the NLP service (ms)", + "displayName": "NLP retry delay", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.test.fallback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.184Z", + "wizardStep": null, + "description": "Whether to use the fallback NLP service if the main service is not available, files on local file system are used as fallback and return examples", + "displayName": "NLP test fallback", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.timeout", + "type": "number", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.186Z", + "wizardStep": null, + "description": "The timeout between connection attempts for the NLP service (ms)", + "displayName": "NLP timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.url", + "type": null, + "value": "http://localhost:4852", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.187Z", + "wizardStep": null, + "description": "The URL of the NLP service", + "displayName": "NLP service URL", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "statistics.batch.size", + "type": "number", + "value": "100", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.339Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.188Z", + "wizardStep": null, + "description": "Batch size for buffering statistics events before flushing to DB (requires server restart)", + "displayName": "Statistics batch size", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "statistics.tracking.mouseDebounceTime", + "type": "number", + "value": "500", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.806Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.189Z", + "wizardStep": null, + "description": "Debounce time in milliseconds for reporting mouse move events", + "displayName": "Mouse debounce time", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "system.auth.ldap.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.191Z", + "wizardStep": null, + "description": "Require 2FA setup for LDAP login users", + "displayName": "Require 2FA for LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.ldap.bindCredentials", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.193Z", + "wizardStep": null, + "description": "LDAP bind password (changes require a restart of the server)", + "displayName": "LDAP bind password", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.bindDN", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.194Z", + "wizardStep": null, + "description": "LDAP bind DN (changes require a restart of the server)", + "displayName": "LDAP bind DN", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.196Z", + "wizardStep": null, + "description": "Enable LDAP login flow", + "displayName": "Enable LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchBase", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.198Z", + "wizardStep": null, + "description": "LDAP user search base (changes require a restart of the server)", + "displayName": "LDAP search base", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchFilter", + "type": "string", + "value": "(uid={{username}})", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.199Z", + "wizardStep": null, + "description": "LDAP search filter template (changes require a restart of the server)", + "displayName": "LDAP search filter", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.url", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.200Z", + "wizardStep": null, + "description": "LDAP server URL (changes require a restart of the server)", + "displayName": "LDAP server URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.local.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.201Z", + "wizardStep": null, + "description": "Require 2FA setup for local login users", + "displayName": "Require 2FA for local login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.203Z", + "wizardStep": null, + "description": "Require 2FA setup for ORCID login users", + "displayName": "Require 2FA for ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.204Z", + "wizardStep": null, + "description": "ORCID callback URL (changes require a restart of the server)", + "displayName": "ORCID callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientId", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.204Z", + "wizardStep": null, + "description": "ORCID OAuth client id (changes require a restart of the server)", + "displayName": "ORCID client ID", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientSecret", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.206Z", + "wizardStep": null, + "description": "ORCID OAuth client secret (changes require a restart of the server)", + "displayName": "ORCID client secret", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.208Z", + "wizardStep": null, + "description": "Enable ORCID login flow", + "displayName": "Enable ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.sandbox", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.209Z", + "wizardStep": null, + "description": "Use ORCID sandbox mode (changes require a restart of the server)", + "displayName": "ORCID sandbox mode", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.redirect.baseUrl", + "type": "string", + "value": "http://localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.210Z", + "wizardStep": null, + "description": "Frontend base URL for authentication redirects (login success, OAuth callback, and 2FA verification pages)", + "displayName": "Frontend base URL for auth redirects", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Auth redirects" + }, + { + "key": "system.auth.saml.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.211Z", + "wizardStep": null, + "description": "Require 2FA setup for SAML login users", + "displayName": "Require 2FA for SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.saml.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.212Z", + "wizardStep": null, + "description": "SAML callback URL (changes require a restart of the server)", + "displayName": "SAML callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.cert", + "type": "text", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:32:47.213Z", + "wizardStep": null, + "description": "SAML identity provider certificate (changes require a restart of the server)", + "displayName": "SAML IdP certificate", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.214Z", + "wizardStep": null, + "description": "Enable SAML login flow", + "displayName": "Enable SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.entryPoint", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.215Z", + "wizardStep": null, + "description": "SAML identity provider entry point (changes require a restart of the server)", + "displayName": "SAML IdP entry point", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.issuer", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:32:47.216Z", + "wizardStep": null, + "description": "SAML service provider issuer (changes require a restart of the server)", + "displayName": "SAML SP issuer", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.tokenExpiry.emailVerification", + "type": "number", + "value": "24", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.217Z", + "wizardStep": null, + "description": "Email verification token expiration time in hours", + "displayName": "Email verification token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.auth.tokenExpiry.passwordReset", + "type": "number", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.218Z", + "wizardStep": null, + "description": "Password reset token expiration time in hours", + "displayName": "Password reset token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.baseUrl", + "type": "string", + "value": "localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.220Z", + "wizardStep": "mail", + "description": "The URL of the redirection for links in emails (e.g. password reset)", + "displayName": "Base URL for emails", + "wizardOrder": 23, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "system.mailService.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.221Z", + "wizardStep": "mail", + "description": "Enable the mail service (changes require a restart of the server)", + "displayName": "Mail service enabled", + "wizardOrder": 12, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.sendMail.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.224Z", + "wizardStep": "mail", + "description": "Use the sendMail function of an unix system", + "displayName": "Sendmail enabled (prioritized over SMTP)", + "wizardOrder": 13, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.sendMail.path", + "type": "string", + "value": "/usr/sbin/sendmail", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.225Z", + "wizardStep": "mail", + "description": "The path to the sendmail binary (default: /usr/sbin/sendmail)", + "displayName": "Sendmail path", + "wizardOrder": 14, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.senderAddress", + "type": "string", + "value": "system@localhost", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.226Z", + "wizardStep": "mail", + "description": "The sender address for mails", + "displayName": "Mail sender address", + "wizardOrder": 15, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.smtp.auth.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.228Z", + "wizardStep": "mail", + "description": "Use authentication for the SMTP server", + "displayName": "SMTP auth enabled", + "wizardOrder": 20, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.pass", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.229Z", + "wizardStep": "mail", + "description": "The password for the SMTP server", + "displayName": "SMTP auth password", + "wizardOrder": 22, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.user", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.230Z", + "wizardStep": "mail", + "description": "The username for the SMTP server", + "displayName": "SMTP auth user", + "wizardOrder": 21, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.231Z", + "wizardStep": "mail", + "description": "Use an SMTP server for sending mails (sendMail must be disabled!)", + "displayName": "SMTP enabled", + "wizardOrder": 16, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.host", + "type": "string", + "value": "smtp.gmail.com", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.232Z", + "wizardStep": "mail", + "description": "The hostname of the SMTP server", + "displayName": "SMTP host", + "wizardOrder": 17, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.port", + "type": "integer", + "value": "587", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.233Z", + "wizardStep": "mail", + "description": "The port of the SMTP server", + "displayName": "SMTP port", + "wizardOrder": 18, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.secure", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.234Z", + "wizardStep": "mail", + "description": "Use a secure connection to the SMTP server", + "displayName": "SMTP secure", + "wizardOrder": 19, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "tags.recencySortingIsOn", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.483Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.235Z", + "wizardStep": null, + "description": "Indicates whether recency based sorting for annotation tags is turned on.", + "displayName": "Tag recency sorting", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "tags.tagSet.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.236Z", + "wizardStep": null, + "description": "The default tagset to use for new annotations", + "displayName": "Default tag set", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "topBar.projects.hideProjectButton", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.302Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:32:47.237Z", + "wizardStep": null, + "description": "Whether to hide the project button in the topBar", + "displayName": "Hide project button in topbar", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + } + ], + "direction": true, + "startTime": "2026-08-10T23:37:08.386Z", + "endTime": "2026-08-10T23:37:08.386Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "appSettings", + "payload": { + "logo.reBgColor": "#a934df", + "system.baseUrl": "localhost:3000", + "app.login.guest": "true", + "service.nlp.url": "http://localhost:4852", + "projects.default": "1", + "app.study.enabled": "true", + "app.register.terms": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "service.nlp.enabled": "true", + "service.nlp.timeout": "60000", + "tags.tagSet.default": "2", + "app.config.copyright": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "app.landing.linkDocs": "/docs", + "app.landing.showDocs": "true", + "app.register.enabled": "true", + "rpc.moodleAPI.apiKey": "", + "rpc.moodleAPI.apiUrl": "", + "system.auth.ldap.url": "", + "statistics.batch.size": "100", + "rpc.moodleAPI.courseID": "1", + "service.nlp.retryDelay": "10000", + "annotator.nlp.activated": "true", + "app.landing.linkProject": "https://intertext.ukp-lab.de/", + "app.landing.showProject": "true", + "system.auth.saml.issuer": "", + "tags.recencySortingIsOn": "false", + "app.landing.linkFeedback": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "app.landing.showFeedback": "true", + "app.login.forgotPassword": "true", + "app.register.requestData": "true", + "app.register.requestName": "true", + "system.auth.ldap.enabled": "false", + "system.auth.saml.enabled": "false", + "annotator.collab.response": "true", + "app.register.requestStats": "true", + "editor.edits.debounceTime": "150", + "editor.toolbar.tools.bold": "true", + "editor.toolbar.tools.font": "true", + "editor.toolbar.tools.link": "false", + "editor.toolbar.tools.size": "true", + "editor.toolbar.visibility": "true", + "email.template.assignment": "", + "modal.nlp.request.timeout": "15000", + "service.nlp.test.fallback": "true", + "system.auth.orcid.enabled": "false", + "system.auth.orcid.sandbox": "true", + "annotator.sidebar.maxWidth": "50", + "annotator.sidebar.minWidth": "400", + "app.config.consent.enabled": "true", + "editor.toolbar.tools.align": "true", + "editor.toolbar.tools.clean": "true", + "editor.toolbar.tools.color": "true", + "editor.toolbar.tools.image": "false", + "editor.toolbar.tools.video": "false", + "email.template.studyClosed": "", + "system.mailService.enabled": "true", + "editor.toolbar.tools.header": "true", + "editor.toolbar.tools.indent": "true", + "editor.toolbar.tools.italic": "true", + "editor.toolbar.tools.strike": "true", + "email.template.registration": "", + "email.template.sessionStart": "", + "email.template.twoFactorOtp": "", + "email.template.verification": "", + "system.auth.ldap.searchBase": "", + "system.auth.saml.entryPoint": "", + "editor.toolbar.tools.formula": "false", + "email.template.passwordReset": "", + "email.template.sessionFinish": "", + "system.auth.redirect.baseUrl": "http://localhost:3000", + "system.auth.saml.callbackUrl": "", + "system.mailService.smtp.host": "smtp.gmail.com", + "system.mailService.smtp.port": "587", + "annotator.nlp.request.timeout": "15000", + "editor.edits.historyGroupTime": "60000", + "modal.nlp.rotation_timer.long": "120000", + "system.auth.ldap.2fa.required": "false", + "system.auth.ldap.searchFilter": "(uid={{username}})", + "system.auth.orcid.callbackUrl": "", + "system.auth.saml.2fa.required": "false", + "app.register.emailVerification": "true", + "editor.toolbar.tools.checkList": "true", + "editor.toolbar.tools.direction": "true", + "editor.toolbar.tools.subscript": "true", + "editor.toolbar.tools.underline": "true", + "modal.nlp.rotation_timer.short": "30000", + "rpc.moodleAPI.showInput.apiKey": "true", + "rpc.moodleAPI.showInput.apiUrl": "true", + "system.auth.local.2fa.required": "false", + "system.auth.orcid.2fa.required": "false", + "system.mailService.smtp.secure": "true", + "editor.edits.showHistoryForUser": "false", + "editor.toolbar.showHTMLDownload": "true", + "editor.toolbar.tools.background": "true", + "editor.toolbar.tools.blockquote": "true", + "editor.toolbar.tools.code-block": "true", + "email.template.submissionUpload": "", + "system.mailService.smtp.enabled": "true", + "annotator.comments.votes.enabled": "true", + "app.login.passwordResetRateLimit": "5", + "app.register.acceptStats.default": "false", + "editor.document.showButtonCreate": "true", + "editor.toolbar.tools.orderedList": "true", + "editor.toolbar.tools.superscript": "true", + "rpc.moodleAPI.showInput.courseID": "true", + "system.mailService.sendMail.path": "/usr/sbin/sendmail", + "system.mailService.senderAddress": "system@localhost", + "system.mailService.smtp.auth.pass": "", + "system.mailService.smtp.auth.user": "", + "topBar.projects.hideProjectButton": "false", + "editor.toolbar.tools.unorderedList": "true", + "annotator.comments.votes.onlyUpvote": "false", + "email.template.passwordResetSuccess": "", + "system.mailService.sendMail.enabled": "true", + "system.mailService.smtp.auth.enabled": "true", + "annotator.nlp.summarization.activated": "true", + "annotator.nlp.summarization.maxLength": "30", + "annotator.nlp.summarization.minLength": "10", + "annotator.nlp.summarization.skillName": "summarization", + "editor.document.showButtonPDFDownload": "true", + "statistics.tracking.mouseDebounceTime": "500", + "system.auth.tokenExpiry.passwordReset": "1", + "annotator.nlp.summarization.annoLength": "10", + "app.register.acceptDataSharing.default": "false", + "dashboard.navigation.component.default": "Home", + "editor.document.showButtonHTMLDownload": "true", + "app.register.emailVerificationRateLimit": "2", + "editor.document.showButtonDeltaDownload": "false", + "system.auth.tokenExpiry.emailVerification": "24", + "annotator.nlp.sentiment_analysis.activated": "false", + "email.template.submissionUploadConfirmation": "", + "annotator.download.enabledBeforeStudyClosing": "true", + "annotator.comments.defaultNumsShown.levelZero": "3", + "annotator.comments.defaultNumsShown.levelOneUp": "1" + }, + "direction": false, + "startTime": "2026-08-10T23:37:08.531Z", + "endTime": "2026-08-10T23:37:08.531Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingData", + "payload": [ + { + "key": "annotator.collab.response", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.393Z", + "wizardStep": null, + "description": "Whether the comment response functionality is activated.", + "displayName": "Comment replies", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.422Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request.", + "displayName": "NLP request timeout", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "app.login.passwordResetRateLimit", + "type": "number", + "value": "5", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.447Z", + "wizardStep": null, + "description": "Rate limit in minutes for password reset emails to prevent spam", + "displayName": "Password reset rate limit", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.register.acceptDataSharing.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.448Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to share data during registration.", + "displayName": "Default accept data sharing", + "wizardOrder": 30, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.acceptStats.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.449Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to tracking during registration.", + "displayName": "Default accept tracking", + "wizardOrder": 29, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.emailVerification", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.450Z", + "wizardStep": "mail", + "description": "Whether to require email verification for new user accounts", + "displayName": "Email verification required", + "wizardOrder": 24, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "app.register.emailVerificationRateLimit", + "type": "number", + "value": "2", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.450Z", + "wizardStep": null, + "description": "Rate limit in minutes for email verification emails to prevent spam", + "displayName": "Email verification rate limit", + "wizardOrder": null, + "displayGroup": "Registration", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email verification rate limit" + }, + { + "key": "app.register.terms", + "type": "edits", + "value": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.454Z", + "wizardStep": "general", + "description": "Terms and conditions text to display during registration", + "displayName": "Terms and conditions", + "wizardOrder": 5, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Terms and conditions" + }, + { + "key": "dashboard.navigation.component.default", + "type": null, + "value": "Home", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.459Z", + "wizardStep": null, + "description": "The default component to display in the dashboard", + "displayName": "Default dashboard component", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Navigation and dashboard" + }, + { + "key": "editor.document.showButtonCreate", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.465Z", + "wizardStep": null, + "description": "Show create button in dashboard to create a new html document", + "displayName": "Show create document button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonDeltaDownload", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.469Z", + "wizardStep": null, + "description": "Show download button for document deltas (edits)", + "displayName": "Show delta download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.469Z", + "wizardStep": null, + "description": "Show download button for document HTML (edits)", + "displayName": "Show HTML download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonPDFDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.207Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.470Z", + "wizardStep": null, + "description": "Show download button for PDF documents with annotations", + "displayName": "Show PDF download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.edits.debounceTime", + "type": "number", + "value": "150", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.471Z", + "wizardStep": null, + "description": "Delay time in milliseconds before processing edits", + "displayName": "Edit debounce time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.historyGroupTime", + "type": "integer", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.471Z", + "wizardStep": null, + "description": "The edits will be merged into groups when there is less than this time between them", + "displayName": "Edit history group time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.showHistoryForUser", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.472Z", + "wizardStep": null, + "description": "Show the history of edits for all users (default only admins)", + "displayName": "Show edit history to users", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.toolbar.showHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.473Z", + "wizardStep": null, + "description": "Show download button for the html document", + "displayName": "Toolbar HTML download", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.background", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.476Z", + "wizardStep": null, + "description": "Text background color in the toolbar", + "displayName": "Toolbar background", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.blockquote", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.477Z", + "wizardStep": null, + "description": "Blockquote in the toolbar", + "displayName": "Toolbar blockquote", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.bold", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.477Z", + "wizardStep": null, + "description": "Bold text in the toolbar", + "displayName": "Toolbar bold", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.checkList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.478Z", + "wizardStep": null, + "description": "Check list in the toolbar", + "displayName": "Toolbar check list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.clean", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.479Z", + "wizardStep": null, + "description": "Clean tool in the toolbar", + "displayName": "Toolbar clean", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.code-block", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.479Z", + "wizardStep": null, + "description": "Code-block in the toolbar", + "displayName": "Toolbar code-block", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.color", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.480Z", + "wizardStep": null, + "description": "Text color in the toolbar", + "displayName": "Toolbar color", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.direction", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.480Z", + "wizardStep": null, + "description": "Text direction in the toolbar", + "displayName": "Toolbar direction", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.font", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.481Z", + "wizardStep": null, + "description": "Font tool in the toolbar", + "displayName": "Toolbar font", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.formula", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.482Z", + "wizardStep": null, + "description": "Formula in the toolbar", + "displayName": "Toolbar formula", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.header", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.482Z", + "wizardStep": null, + "description": "Header in the toolbar", + "displayName": "Toolbar header", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.image", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.483Z", + "wizardStep": null, + "description": "Image tool in the toolbar", + "displayName": "Toolbar image", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.indent", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.483Z", + "wizardStep": null, + "description": "Indent in the toolbar", + "displayName": "Toolbar indent", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.italic", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.484Z", + "wizardStep": null, + "description": "Italic text in the toolbar", + "displayName": "Toolbar italic", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.link", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.484Z", + "wizardStep": null, + "description": "Link tool in the toolbar", + "displayName": "Toolbar link", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.orderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.485Z", + "wizardStep": null, + "description": "Ordered list in the toolbar", + "displayName": "Toolbar ordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.size", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.485Z", + "wizardStep": null, + "description": "Font size in the toolbar", + "displayName": "Toolbar size", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.strike", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.486Z", + "wizardStep": null, + "description": "Strike through text in the toolbar", + "displayName": "Toolbar strike", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.subscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.486Z", + "wizardStep": null, + "description": " Subscript in the toolbar", + "displayName": "Toolbar subscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.superscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.487Z", + "wizardStep": null, + "description": "Superscript in the toolbar", + "displayName": "Toolbar superscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.underline", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.488Z", + "wizardStep": null, + "description": "Underline text in the toolbar", + "displayName": "Toolbar underline", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.unorderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.488Z", + "wizardStep": null, + "description": "Bullet list in the toolbar", + "displayName": "Toolbar unordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "annotator.comments.votes.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.414Z", + "wizardStep": null, + "description": "Enable voting on comments", + "displayName": "Voting on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.onlyUpvote", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.416Z", + "wizardStep": null, + "description": "Only allow upvote on comments", + "displayName": "Only upvote on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "editor.toolbar.tools.video", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.489Z", + "wizardStep": null, + "description": "Video tool in the toolbar", + "displayName": "Toolbar video", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.visibility", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.489Z", + "wizardStep": null, + "description": "Make toolbar in the editor visible", + "displayName": "Toolbar visibility", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.assignment", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.490Z", + "wizardStep": null, + "description": "Template type for assignment notification emails (Email - Assignment). Leave empty to use default hardcoded email.", + "displayName": "Assignment notification email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordReset", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.490Z", + "wizardStep": null, + "description": "Template type for password reset emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Password reset email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordResetSuccess", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.491Z", + "wizardStep": null, + "description": "Template type for password reset success emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Password reset success email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.registration", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.491Z", + "wizardStep": null, + "description": "Template type for registration welcome emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Registration welcome email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionFinish", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.492Z", + "wizardStep": null, + "description": "Template type for session finish emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session finish email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionStart", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.492Z", + "wizardStep": null, + "description": "Template type for session start emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session start email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.studyClosed", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.493Z", + "wizardStep": null, + "description": "Template type for study closed emails (Email - Study Close). Leave empty to use default hardcoded email.", + "displayName": "Study closed email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUpload", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.494Z", + "wizardStep": null, + "description": "Template type for assignment submission upload/reupload emails to the assignment owner (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (assignment owner)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUploadConfirmation", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.494Z", + "wizardStep": null, + "description": "Template for submission upload confirmation to the submitter (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (submitter)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.twoFactorOtp", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.495Z", + "wizardStep": null, + "description": "Template type for two-factor authentication code emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Two-factor OTP email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.verification", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.495Z", + "wizardStep": null, + "description": "Template type for email verification emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Email verification", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "logo.reBgColor", + "type": "color", + "value": "#a934df", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.757Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.496Z", + "wizardStep": null, + "description": "Background colour for the RE section of the logo", + "displayName": "Logo RE section background colour", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Branding" + }, + { + "key": "modal.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.201Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.496Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request in modal (frontend, ms)", + "displayName": "Modal NLP request timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.long", + "type": "integer", + "value": "120000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.497Z", + "wizardStep": null, + "description": "Long rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation long", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.short", + "type": "integer", + "value": "30000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.498Z", + "wizardStep": null, + "description": "Short rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation short", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "projects.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.253Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.499Z", + "wizardStep": null, + "description": "The default project to use for new documents or studies", + "displayName": "Default project", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + }, + { + "key": "rpc.moodleAPI.apiKey", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.499Z", + "wizardStep": "moodle", + "description": "The Moodle API key for the connection", + "displayName": "Moodle API key", + "wizardOrder": 32, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.apiUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.500Z", + "wizardStep": "moodle", + "description": "The URL of the Moodle API", + "displayName": "Moodle API URL", + "wizardOrder": 31, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.courseID", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.500Z", + "wizardStep": "moodle", + "description": "The ID of the course in Moodle from which to fetch the data", + "displayName": "Moodle course ID", + "wizardOrder": 33, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Course" + }, + { + "key": "rpc.moodleAPI.showInput.apiKey", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.501Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API key", + "displayName": "Show Moodle API key input", + "wizardOrder": 35, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.apiUrl", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.502Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API URL", + "displayName": "Show Moodle API URL input", + "wizardOrder": 34, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.courseID", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.502Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the course ID", + "displayName": "Show Moodle course ID input", + "wizardOrder": 36, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "service.nlp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.503Z", + "wizardStep": null, + "description": "Whether to automatically connect to the NLP service", + "displayName": "Enable NLP features", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.retryDelay", + "type": "number", + "value": "10000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.503Z", + "wizardStep": null, + "description": "The delay between retries if connection errors occurs for the NLP service (ms)", + "displayName": "NLP retry delay", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.test.fallback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.504Z", + "wizardStep": null, + "description": "Whether to use the fallback NLP service if the main service is not available, files on local file system are used as fallback and return examples", + "displayName": "NLP test fallback", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.timeout", + "type": "number", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.504Z", + "wizardStep": null, + "description": "The timeout between connection attempts for the NLP service (ms)", + "displayName": "NLP timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.url", + "type": null, + "value": "http://localhost:4852", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.505Z", + "wizardStep": null, + "description": "The URL of the NLP service", + "displayName": "NLP service URL", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "statistics.batch.size", + "type": "number", + "value": "100", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.339Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.505Z", + "wizardStep": null, + "description": "Batch size for buffering statistics events before flushing to DB (requires server restart)", + "displayName": "Statistics batch size", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "statistics.tracking.mouseDebounceTime", + "type": "number", + "value": "500", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.806Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.506Z", + "wizardStep": null, + "description": "Debounce time in milliseconds for reporting mouse move events", + "displayName": "Mouse debounce time", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "system.auth.ldap.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.506Z", + "wizardStep": null, + "description": "Require 2FA setup for LDAP login users", + "displayName": "Require 2FA for LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "annotator.comments.defaultNumsShown.levelOneUp", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.405Z", + "wizardStep": null, + "description": "How many 1st or higher level comments are shown by default.", + "displayName": "Level 1+ comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "app.config.consent.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.135Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.439Z", + "wizardStep": "general", + "description": "Enable consent updating feature", + "displayName": "Consent update feature", + "wizardOrder": 2, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.config.copyright", + "type": null, + "value": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.440Z", + "wizardStep": "general", + "description": "The copyright text to display on the login page", + "displayName": "Copyright notice", + "wizardOrder": 1, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.login.forgotPassword", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.446Z", + "wizardStep": "general", + "description": "Whether to enable the forgot password functionality or not", + "displayName": "Forgot password", + "wizardOrder": 4, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "system.auth.ldap.bindCredentials", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.507Z", + "wizardStep": null, + "description": "LDAP bind password (changes require a restart of the server)", + "displayName": "LDAP bind password", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.bindDN", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.507Z", + "wizardStep": null, + "description": "LDAP bind DN (changes require a restart of the server)", + "displayName": "LDAP bind DN", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.508Z", + "wizardStep": null, + "description": "Enable LDAP login flow", + "displayName": "Enable LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchBase", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.508Z", + "wizardStep": null, + "description": "LDAP user search base (changes require a restart of the server)", + "displayName": "LDAP search base", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchFilter", + "type": "string", + "value": "(uid={{username}})", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.509Z", + "wizardStep": null, + "description": "LDAP search filter template (changes require a restart of the server)", + "displayName": "LDAP search filter", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.url", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.509Z", + "wizardStep": null, + "description": "LDAP server URL (changes require a restart of the server)", + "displayName": "LDAP server URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.local.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.510Z", + "wizardStep": null, + "description": "Require 2FA setup for local login users", + "displayName": "Require 2FA for local login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.510Z", + "wizardStep": null, + "description": "Require 2FA setup for ORCID login users", + "displayName": "Require 2FA for ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.511Z", + "wizardStep": null, + "description": "ORCID callback URL (changes require a restart of the server)", + "displayName": "ORCID callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientId", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.511Z", + "wizardStep": null, + "description": "ORCID OAuth client id (changes require a restart of the server)", + "displayName": "ORCID client ID", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientSecret", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.512Z", + "wizardStep": null, + "description": "ORCID OAuth client secret (changes require a restart of the server)", + "displayName": "ORCID client secret", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.512Z", + "wizardStep": null, + "description": "Enable ORCID login flow", + "displayName": "Enable ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.sandbox", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.513Z", + "wizardStep": null, + "description": "Use ORCID sandbox mode (changes require a restart of the server)", + "displayName": "ORCID sandbox mode", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.redirect.baseUrl", + "type": "string", + "value": "http://localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.514Z", + "wizardStep": null, + "description": "Frontend base URL for authentication redirects (login success, OAuth callback, and 2FA verification pages)", + "displayName": "Frontend base URL for auth redirects", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Auth redirects" + }, + { + "key": "system.auth.saml.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.514Z", + "wizardStep": null, + "description": "Require 2FA setup for SAML login users", + "displayName": "Require 2FA for SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.saml.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.515Z", + "wizardStep": null, + "description": "SAML callback URL (changes require a restart of the server)", + "displayName": "SAML callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.cert", + "type": "text", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.515Z", + "wizardStep": null, + "description": "SAML identity provider certificate (changes require a restart of the server)", + "displayName": "SAML IdP certificate", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.516Z", + "wizardStep": null, + "description": "Enable SAML login flow", + "displayName": "Enable SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.entryPoint", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.516Z", + "wizardStep": null, + "description": "SAML identity provider entry point (changes require a restart of the server)", + "displayName": "SAML IdP entry point", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.issuer", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.517Z", + "wizardStep": null, + "description": "SAML service provider issuer (changes require a restart of the server)", + "displayName": "SAML SP issuer", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.tokenExpiry.emailVerification", + "type": "number", + "value": "24", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.517Z", + "wizardStep": null, + "description": "Email verification token expiration time in hours", + "displayName": "Email verification token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "annotator.comments.defaultNumsShown.levelZero", + "type": "integer", + "value": "3", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.412Z", + "wizardStep": null, + "description": "How many 0-level comments are shown by default when annotation responses are shown", + "displayName": "Level 0 comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.nlp.sentiment_analysis.activated", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.423Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.424Z", + "wizardStep": null, + "description": "Indicates whether sentiment analysis is activated in the annotation view.", + "displayName": "Sentiment analysis in comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.annoLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.433Z", + "wizardStep": null, + "description": "The minimum length of the annotation to generate a summary.", + "displayName": "Summarization annotation length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "app.landing.linkFeedback", + "type": null, + "value": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.442Z", + "wizardStep": "general", + "description": "The URL to the official feedback page", + "displayName": "Feedback form URL", + "wizardOrder": 11, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showProject", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.445Z", + "wizardStep": "general", + "description": "Whether to show the official project page link on the landing page", + "displayName": "Show project link", + "wizardOrder": 8, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.register.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.614Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.451Z", + "wizardStep": "registration", + "description": "Whether self-registration via the public register page is allowed.", + "displayName": "Enable self-registration", + "wizardOrder": 25, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Enable registration" + }, + { + "key": "app.register.requestData", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.452Z", + "wizardStep": "registration", + "description": "Indicates if the option for data sharing during registration is enabled.", + "displayName": "Request data sharing at registration", + "wizardOrder": 28, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestName", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.453Z", + "wizardStep": "registration", + "description": "Whether to request the user's name during registration", + "displayName": "Request name at registration", + "wizardOrder": 26, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestStats", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.453Z", + "wizardStep": "registration", + "description": "Whether to request the user's statistics approval during registration", + "displayName": "Request usage-stats consent at registration", + "wizardOrder": 27, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.setup.wizardCompleted", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.455Z", + "wizardStep": null, + "description": "Internal setup wizard completion state.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.setup.wizardCurrentStep", + "type": "integer", + "value": "0", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.456Z", + "wizardStep": null, + "description": "Internal setup wizard current step.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.study.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.456Z", + "wizardStep": null, + "description": "Whether to enable the user study functionality", + "displayName": "Enable study mode", + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Study mode" + }, + { + "key": "annotator.download.enabledBeforeStudyClosing", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.213Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.418Z", + "wizardStep": null, + "description": "Whether annotations can be downloaded before a study is closed", + "displayName": "Download before study closing", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Download" + }, + { + "key": "annotator.nlp.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.420Z", + "wizardStep": null, + "description": "Indicates whether NLP support is activated in the annotation view.", + "displayName": "NLP in annotation view", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.432Z", + "wizardStep": null, + "description": "Indicates whether summarization is activated.", + "displayName": "Summarization activated", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.maxLength", + "type": "integer", + "value": "30", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.435Z", + "wizardStep": null, + "description": "The maximum length of the summary (in tokens of the model).", + "displayName": "Summarization max length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.minLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.436Z", + "wizardStep": null, + "description": "The minimum length of the summary (in tokens of the model).", + "displayName": "Summarization min length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.skillName", + "type": null, + "value": "summarization", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.437Z", + "wizardStep": null, + "description": "The skill name to use for summarization.", + "displayName": "Summarization skill name", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.sidebar.maxWidth", + "type": "integer", + "value": "50", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.438Z", + "wizardStep": null, + "description": "The maximum width of the sidebar (percentage of the screen, in %)", + "displayName": "Sidebar max width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "annotator.sidebar.minWidth", + "type": "integer", + "value": "400", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.438Z", + "wizardStep": null, + "description": "The minimum width of the sidebar (in px)", + "displayName": "Sidebar min width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "app.landing.linkDocs", + "type": null, + "value": "/docs", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.441Z", + "wizardStep": "general", + "description": "The URL to the documentation", + "displayName": "Documentation URL", + "wizardOrder": 7, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkProject", + "type": null, + "value": "https://intertext.ukp-lab.de/", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.443Z", + "wizardStep": "general", + "description": "The URL to the official project page", + "displayName": "Project page URL", + "wizardOrder": 9, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showDocs", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.443Z", + "wizardStep": "general", + "description": "Whether to show the documentation links on the landing page", + "displayName": "Show documentation link", + "wizardOrder": 6, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showFeedback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.444Z", + "wizardStep": "general", + "description": "Whether to show the official feedback link on the landing page", + "displayName": "Show feedback link", + "wizardOrder": 10, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.login.guest", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.446Z", + "wizardStep": "general", + "description": "Whether to allow guest logins", + "displayName": "Allow guest login", + "wizardOrder": 3, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "editor.toolbar.tools.align", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.474Z", + "wizardStep": null, + "description": "Text alignment in the toolbar", + "displayName": "Toolbar align", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "system.auth.tokenExpiry.passwordReset", + "type": "number", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.518Z", + "wizardStep": null, + "description": "Password reset token expiration time in hours", + "displayName": "Password reset token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.baseUrl", + "type": "string", + "value": "localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.518Z", + "wizardStep": "mail", + "description": "The URL of the redirection for links in emails (e.g. password reset)", + "displayName": "Base URL for emails", + "wizardOrder": 23, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "system.mailService.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.519Z", + "wizardStep": "mail", + "description": "Enable the mail service (changes require a restart of the server)", + "displayName": "Mail service enabled", + "wizardOrder": 12, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.sendMail.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.519Z", + "wizardStep": "mail", + "description": "Use the sendMail function of an unix system", + "displayName": "Sendmail enabled (prioritized over SMTP)", + "wizardOrder": 13, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.sendMail.path", + "type": "string", + "value": "/usr/sbin/sendmail", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.519Z", + "wizardStep": "mail", + "description": "The path to the sendmail binary (default: /usr/sbin/sendmail)", + "displayName": "Sendmail path", + "wizardOrder": 14, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.senderAddress", + "type": "string", + "value": "system@localhost", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.520Z", + "wizardStep": "mail", + "description": "The sender address for mails", + "displayName": "Mail sender address", + "wizardOrder": 15, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.smtp.auth.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.520Z", + "wizardStep": "mail", + "description": "Use authentication for the SMTP server", + "displayName": "SMTP auth enabled", + "wizardOrder": 20, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.pass", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.521Z", + "wizardStep": "mail", + "description": "The password for the SMTP server", + "displayName": "SMTP auth password", + "wizardOrder": 22, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.user", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.521Z", + "wizardStep": "mail", + "description": "The username for the SMTP server", + "displayName": "SMTP auth user", + "wizardOrder": 21, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.522Z", + "wizardStep": "mail", + "description": "Use an SMTP server for sending mails (sendMail must be disabled!)", + "displayName": "SMTP enabled", + "wizardOrder": 16, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.host", + "type": "string", + "value": "smtp.gmail.com", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.522Z", + "wizardStep": "mail", + "description": "The hostname of the SMTP server", + "displayName": "SMTP host", + "wizardOrder": 17, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.port", + "type": "integer", + "value": "587", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.523Z", + "wizardStep": "mail", + "description": "The port of the SMTP server", + "displayName": "SMTP port", + "wizardOrder": 18, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.secure", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.523Z", + "wizardStep": "mail", + "description": "Use a secure connection to the SMTP server", + "displayName": "SMTP secure", + "wizardOrder": 19, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "tags.recencySortingIsOn", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.483Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.523Z", + "wizardStep": null, + "description": "Indicates whether recency based sorting for annotation tags is turned on.", + "displayName": "Tag recency sorting", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "tags.tagSet.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.524Z", + "wizardStep": null, + "description": "The default tagset to use for new annotations", + "displayName": "Default tag set", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "topBar.projects.hideProjectButton", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.302Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.524Z", + "wizardStep": null, + "description": "Whether to hide the project button in the topBar", + "displayName": "Hide project button in topbar", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + } + ], + "direction": false, + "startTime": "2026-08-10T23:37:08.535Z", + "endTime": "2026-08-10T23:37:08.535Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1351, + "clientY": 102, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:08.652Z", + "endTime": "2026-08-10T23:37:08.652Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/settings" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.532Z", + "endTime": "2026-08-10T23:37:14.532Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "cb3f5ff1-cf6b-4712-926a-60e3e4e80506", + "direction": true, + "startTime": "2026-08-10T23:37:14.536Z", + "endTime": "2026-08-10T23:37:14.536Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "a994ba9e-b40e-4b0d-8b66-b5ea2d391ca2", + "direction": true, + "startTime": "2026-08-10T23:37:14.536Z", + "endTime": "2026-08-10T23:37:14.536Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "8aa3b588-f68c-491c-873c-591249851d33", + "direction": true, + "startTime": "2026-08-10T23:37:14.536Z", + "endTime": "2026-08-10T23:37:14.536Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "814a90fa-9ac6-43ed-9795-d69da0eeec7f", + "direction": true, + "startTime": "2026-08-10T23:37:14.538Z", + "endTime": "2026-08-10T23:37:14.538Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "4613b219-7ae5-4f4c-8bdd-b2afcf73b7dc", + "direction": true, + "startTime": "2026-08-10T23:37:14.538Z", + "endTime": "2026-08-10T23:37:14.538Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "edfb7410-e239-4af3-8289-6d261b24b18c", + "direction": true, + "startTime": "2026-08-10T23:37:14.539Z", + "endTime": "2026-08-10T23:37:14.539Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "68110726-b2ae-46e3-a8c1-cd9674f7f3f4", + "direction": true, + "startTime": "2026-08-10T23:37:14.539Z", + "endTime": "2026-08-10T23:37:14.539Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "548487d6-fed5-48d9-a7e0-d500e0901749", + "direction": true, + "startTime": "2026-08-10T23:37:14.539Z", + "endTime": "2026-08-10T23:37:14.539Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "82c39fe8-2ee8-452a-b13c-77d76a6f970c", + "direction": true, + "startTime": "2026-08-10T23:37:14.539Z", + "endTime": "2026-08-10T23:37:14.539Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.551Z", + "endTime": "2026-08-10T23:37:14.551Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.563Z", + "endTime": "2026-08-10T23:37:14.563Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.564Z", + "endTime": "2026-08-10T23:37:14.564Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.563Z", + "endTime": "2026-08-10T23:37:14.563Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.564Z", + "endTime": "2026-08-10T23:37:14.564Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:37:14.564Z", + "endTime": "2026-08-10T23:37:14.564Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 298, + "clientY": 92, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:15.135Z", + "endTime": "2026-08-10T23:37:15.135Z" + }, + { + "recordingId": 18, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:37:15.285Z", + "endTime": "2026-08-10T23:37:15.285Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/340-change-app-setting.json b/backend/tests/regression_stories/340-change-app-setting.json new file mode 100644 index 000000000..940ab5952 --- /dev/null +++ b/backend/tests/regression_stories/340-change-app-setting.json @@ -0,0 +1,6262 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:23.154Z", + "traceCount": 60, + "recording": { + "name": "340-change-app-setting", + "status": "finished", + "startTime": "2026-08-10T23:37:43.473Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:38:08.824Z" + }, + "traces": [ + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 19, + "name": "Recording 8/11/2026, 1:37:43 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:37:43.474Z", + "startTime": "2026-08-10T23:37:43.473Z", + "updatedAt": "2026-08-10T23:37:43.474Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:37:43.485Z", + "endTime": "2026-08-10T23:37:43.485Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:37:44.632Z", + "endTime": "2026-08-10T23:37:44.632Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/settings", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:37:46.150Z", + "endTime": "2026-08-10T23:37:46.150Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "b1b8813b-c34d-4c45-aa89-f301d58dc038", + "direction": true, + "startTime": "2026-08-10T23:37:46.160Z", + "endTime": "2026-08-10T23:37:46.160Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "8e4a036b-28c4-45de-8e74-1a06c7e0b992", + "direction": true, + "startTime": "2026-08-10T23:37:46.161Z", + "endTime": "2026-08-10T23:37:46.161Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "ede6ed9b-c4fc-486f-ac9d-1fb71f433d7d", + "direction": true, + "startTime": "2026-08-10T23:37:46.161Z", + "endTime": "2026-08-10T23:37:46.161Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "0a774bc0-e0c4-4b96-8466-67c9b8629cc0", + "direction": true, + "startTime": "2026-08-10T23:37:46.161Z", + "endTime": "2026-08-10T23:37:46.161Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "4d1fe4fa-5204-4646-8b2e-30683a96a384", + "direction": true, + "startTime": "2026-08-10T23:37:46.161Z", + "endTime": "2026-08-10T23:37:46.161Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "5cb06e10-1aa6-4b93-8b5a-9e85d0a85bfc", + "direction": true, + "startTime": "2026-08-10T23:37:46.161Z", + "endTime": "2026-08-10T23:37:46.161Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:46.170Z", + "endTime": "2026-08-10T23:37:46.170Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingGetData", + "payload": null, + "direction": true, + "startTime": "2026-08-10T23:37:46.171Z", + "endTime": "2026-08-10T23:37:46.171Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 387, + "clientY": 383, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:47.417Z", + "endTime": "2026-08-10T23:37:47.417Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:51.177Z", + "endTime": "2026-08-10T23:37:51.177Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 432, + "clientY": 620, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:51.470Z", + "endTime": "2026-08-10T23:37:51.470Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 368, + "clientY": 110, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.435Z", + "endTime": "2026-08-10T23:37:53.435Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.894Z", + "endTime": "2026-08-10T23:37:53.894Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.903Z", + "endTime": "2026-08-10T23:37:53.903Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.904Z", + "endTime": "2026-08-10T23:37:53.904Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.904Z", + "endTime": "2026-08-10T23:37:53.904Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.908Z", + "endTime": "2026-08-10T23:37:53.908Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.908Z", + "endTime": "2026-08-10T23:37:53.908Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.908Z", + "endTime": "2026-08-10T23:37:53.908Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.908Z", + "endTime": "2026-08-10T23:37:53.908Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.908Z", + "endTime": "2026-08-10T23:37:53.908Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.909Z", + "endTime": "2026-08-10T23:37:53.909Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.911Z", + "endTime": "2026-08-10T23:37:53.911Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.911Z", + "endTime": "2026-08-10T23:37:53.911Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.911Z", + "endTime": "2026-08-10T23:37:53.911Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:37:53.910Z", + "endTime": "2026-08-10T23:37:53.910Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 486, + "clientY": 365, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:54.852Z", + "endTime": "2026-08-10T23:37:54.852Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 674, + "clientY": 538, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:59.103Z", + "endTime": "2026-08-10T23:37:59.103Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 724, + "clientY": 456, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:37:59.985Z", + "endTime": "2026-08-10T23:37:59.985Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 724, + "clientY": 448, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:38:02.301Z", + "endTime": "2026-08-10T23:38:02.301Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 725, + "clientY": 443, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:38:03.191Z", + "endTime": "2026-08-10T23:38:03.191Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "upload", + "title": "Save Settings (Unsaved changes)" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:38:05.886Z", + "endTime": "2026-08-10T23:38:05.886Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingSave", + "payload": [ + { + "key": "annotator.collab.response", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.393Z", + "wizardStep": null, + "description": "Whether the comment response functionality is activated.", + "displayName": "Comment replies", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.defaultNumsShown.levelOneUp", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.405Z", + "wizardStep": null, + "description": "How many 1st or higher level comments are shown by default.", + "displayName": "Level 1+ comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.defaultNumsShown.levelZero", + "type": "integer", + "value": "3", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.412Z", + "wizardStep": null, + "description": "How many 0-level comments are shown by default when annotation responses are shown", + "displayName": "Level 0 comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.414Z", + "wizardStep": null, + "description": "Enable voting on comments", + "displayName": "Voting on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.onlyUpvote", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.416Z", + "wizardStep": null, + "description": "Only allow upvote on comments", + "displayName": "Only upvote on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.download.enabledBeforeStudyClosing", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.213Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.418Z", + "wizardStep": null, + "description": "Whether annotations can be downloaded before a study is closed", + "displayName": "Download before study closing", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Download" + }, + { + "key": "annotator.nlp.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.420Z", + "wizardStep": null, + "description": "Indicates whether NLP support is activated in the annotation view.", + "displayName": "NLP in annotation view", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.422Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request.", + "displayName": "NLP request timeout", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.sentiment_analysis.activated", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.423Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.424Z", + "wizardStep": null, + "description": "Indicates whether sentiment analysis is activated in the annotation view.", + "displayName": "Sentiment analysis in comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.432Z", + "wizardStep": null, + "description": "Indicates whether summarization is activated.", + "displayName": "Summarization activated", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.annoLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.433Z", + "wizardStep": null, + "description": "The minimum length of the annotation to generate a summary.", + "displayName": "Summarization annotation length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.maxLength", + "type": "integer", + "value": "30", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.435Z", + "wizardStep": null, + "description": "The maximum length of the summary (in tokens of the model).", + "displayName": "Summarization max length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.minLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.436Z", + "wizardStep": null, + "description": "The minimum length of the summary (in tokens of the model).", + "displayName": "Summarization min length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.skillName", + "type": null, + "value": "summarization", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.437Z", + "wizardStep": null, + "description": "The skill name to use for summarization.", + "displayName": "Summarization skill name", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.sidebar.maxWidth", + "type": "integer", + "value": "50", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.438Z", + "wizardStep": null, + "description": "The maximum width of the sidebar (percentage of the screen, in %)", + "displayName": "Sidebar max width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "annotator.sidebar.minWidth", + "type": "integer", + "value": "400", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.438Z", + "wizardStep": null, + "description": "The minimum width of the sidebar (in px)", + "displayName": "Sidebar min width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "app.config.consent.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.135Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.439Z", + "wizardStep": "general", + "description": "Enable consent updating feature", + "displayName": "Consent update feature", + "wizardOrder": 2, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.config.copyright", + "type": null, + "value": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.440Z", + "wizardStep": "general", + "description": "The copyright text to display on the login page", + "displayName": "Copyright notice", + "wizardOrder": 1, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.landing.linkDocs", + "type": null, + "value": "/docs", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.441Z", + "wizardStep": "general", + "description": "The URL to the documentation", + "displayName": "Documentation URL", + "wizardOrder": 7, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkFeedback", + "type": null, + "value": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.442Z", + "wizardStep": "general", + "description": "The URL to the official feedback page", + "displayName": "Feedback form URL", + "wizardOrder": 11, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkProject", + "type": null, + "value": "https://intertext.ukp-lab.de/", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.443Z", + "wizardStep": "general", + "description": "The URL to the official project page", + "displayName": "Project page URL", + "wizardOrder": 9, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showDocs", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.443Z", + "wizardStep": "general", + "description": "Whether to show the documentation links on the landing page", + "displayName": "Show documentation link", + "wizardOrder": 6, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showFeedback", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.444Z", + "wizardStep": "general", + "description": "Whether to show the official feedback link on the landing page", + "displayName": "Show feedback link", + "wizardOrder": 10, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showProject", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.445Z", + "wizardStep": "general", + "description": "Whether to show the official project page link on the landing page", + "displayName": "Show project link", + "wizardOrder": 8, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.login.forgotPassword", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.446Z", + "wizardStep": "general", + "description": "Whether to enable the forgot password functionality or not", + "displayName": "Forgot password", + "wizardOrder": 4, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.login.guest", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.446Z", + "wizardStep": "general", + "description": "Whether to allow guest logins", + "displayName": "Allow guest login", + "wizardOrder": 3, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.login.passwordResetRateLimit", + "type": "number", + "value": "5", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.447Z", + "wizardStep": null, + "description": "Rate limit in minutes for password reset emails to prevent spam", + "displayName": "Password reset rate limit", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.register.acceptDataSharing.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.448Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to share data during registration.", + "displayName": "Default accept data sharing", + "wizardOrder": 30, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.acceptStats.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.449Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to tracking during registration.", + "displayName": "Default accept tracking", + "wizardOrder": 29, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.emailVerification", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.450Z", + "wizardStep": "mail", + "description": "Whether to require email verification for new user accounts", + "displayName": "Email verification required", + "wizardOrder": 24, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "app.register.emailVerificationRateLimit", + "type": "number", + "value": "2", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.450Z", + "wizardStep": null, + "description": "Rate limit in minutes for email verification emails to prevent spam", + "displayName": "Email verification rate limit", + "wizardOrder": null, + "displayGroup": "Registration", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email verification rate limit" + }, + { + "key": "app.register.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.614Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.451Z", + "wizardStep": "registration", + "description": "Whether self-registration via the public register page is allowed.", + "displayName": "Enable self-registration", + "wizardOrder": 25, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Enable registration" + }, + { + "key": "app.register.requestData", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.452Z", + "wizardStep": "registration", + "description": "Indicates if the option for data sharing during registration is enabled.", + "displayName": "Request data sharing at registration", + "wizardOrder": 28, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestName", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.453Z", + "wizardStep": "registration", + "description": "Whether to request the user's name during registration", + "displayName": "Request name at registration", + "wizardOrder": 26, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestStats", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.453Z", + "wizardStep": "registration", + "description": "Whether to request the user's statistics approval during registration", + "displayName": "Request usage-stats consent at registration", + "wizardOrder": 27, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.terms", + "type": "edits", + "value": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.454Z", + "wizardStep": "general", + "description": "Terms and conditions text to display during registration", + "displayName": "Terms and conditions", + "wizardOrder": 5, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Terms and conditions" + }, + { + "key": "app.setup.wizardCompleted", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.455Z", + "wizardStep": null, + "description": "Internal setup wizard completion state.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.setup.wizardCurrentStep", + "type": "integer", + "value": "0", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.456Z", + "wizardStep": null, + "description": "Internal setup wizard current step.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.study.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.456Z", + "wizardStep": null, + "description": "Whether to enable the user study functionality", + "displayName": "Enable study mode", + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Study mode" + }, + { + "key": "dashboard.navigation.component.default", + "type": null, + "value": "Home", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.459Z", + "wizardStep": null, + "description": "The default component to display in the dashboard", + "displayName": "Default dashboard component", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Navigation and dashboard" + }, + { + "key": "editor.document.showButtonCreate", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.465Z", + "wizardStep": null, + "description": "Show create button in dashboard to create a new html document", + "displayName": "Show create document button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonDeltaDownload", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.469Z", + "wizardStep": null, + "description": "Show download button for document deltas (edits)", + "displayName": "Show delta download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.469Z", + "wizardStep": null, + "description": "Show download button for document HTML (edits)", + "displayName": "Show HTML download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonPDFDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.207Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.470Z", + "wizardStep": null, + "description": "Show download button for PDF documents with annotations", + "displayName": "Show PDF download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.edits.debounceTime", + "type": "number", + "value": "150", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.471Z", + "wizardStep": null, + "description": "Delay time in milliseconds before processing edits", + "displayName": "Edit debounce time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.historyGroupTime", + "type": "integer", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.471Z", + "wizardStep": null, + "description": "The edits will be merged into groups when there is less than this time between them", + "displayName": "Edit history group time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.showHistoryForUser", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.472Z", + "wizardStep": null, + "description": "Show the history of edits for all users (default only admins)", + "displayName": "Show edit history to users", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.toolbar.showHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.473Z", + "wizardStep": null, + "description": "Show download button for the html document", + "displayName": "Toolbar HTML download", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.align", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.474Z", + "wizardStep": null, + "description": "Text alignment in the toolbar", + "displayName": "Toolbar align", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.background", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.476Z", + "wizardStep": null, + "description": "Text background color in the toolbar", + "displayName": "Toolbar background", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.blockquote", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.477Z", + "wizardStep": null, + "description": "Blockquote in the toolbar", + "displayName": "Toolbar blockquote", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.bold", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.477Z", + "wizardStep": null, + "description": "Bold text in the toolbar", + "displayName": "Toolbar bold", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.checkList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.478Z", + "wizardStep": null, + "description": "Check list in the toolbar", + "displayName": "Toolbar check list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.clean", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.479Z", + "wizardStep": null, + "description": "Clean tool in the toolbar", + "displayName": "Toolbar clean", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.code-block", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.479Z", + "wizardStep": null, + "description": "Code-block in the toolbar", + "displayName": "Toolbar code-block", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.color", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.480Z", + "wizardStep": null, + "description": "Text color in the toolbar", + "displayName": "Toolbar color", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.direction", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.480Z", + "wizardStep": null, + "description": "Text direction in the toolbar", + "displayName": "Toolbar direction", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.font", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.481Z", + "wizardStep": null, + "description": "Font tool in the toolbar", + "displayName": "Toolbar font", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.formula", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.482Z", + "wizardStep": null, + "description": "Formula in the toolbar", + "displayName": "Toolbar formula", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.header", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.482Z", + "wizardStep": null, + "description": "Header in the toolbar", + "displayName": "Toolbar header", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.image", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.483Z", + "wizardStep": null, + "description": "Image tool in the toolbar", + "displayName": "Toolbar image", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.indent", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.483Z", + "wizardStep": null, + "description": "Indent in the toolbar", + "displayName": "Toolbar indent", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.italic", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.484Z", + "wizardStep": null, + "description": "Italic text in the toolbar", + "displayName": "Toolbar italic", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.link", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.484Z", + "wizardStep": null, + "description": "Link tool in the toolbar", + "displayName": "Toolbar link", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.orderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.485Z", + "wizardStep": null, + "description": "Ordered list in the toolbar", + "displayName": "Toolbar ordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.size", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.485Z", + "wizardStep": null, + "description": "Font size in the toolbar", + "displayName": "Toolbar size", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.strike", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.486Z", + "wizardStep": null, + "description": "Strike through text in the toolbar", + "displayName": "Toolbar strike", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.subscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.486Z", + "wizardStep": null, + "description": " Subscript in the toolbar", + "displayName": "Toolbar subscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.superscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.487Z", + "wizardStep": null, + "description": "Superscript in the toolbar", + "displayName": "Toolbar superscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.underline", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.488Z", + "wizardStep": null, + "description": "Underline text in the toolbar", + "displayName": "Toolbar underline", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.unorderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.488Z", + "wizardStep": null, + "description": "Bullet list in the toolbar", + "displayName": "Toolbar unordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.video", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.489Z", + "wizardStep": null, + "description": "Video tool in the toolbar", + "displayName": "Toolbar video", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.visibility", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.489Z", + "wizardStep": null, + "description": "Make toolbar in the editor visible", + "displayName": "Toolbar visibility", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.assignment", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.490Z", + "wizardStep": null, + "description": "Template type for assignment notification emails (Email - Assignment). Leave empty to use default hardcoded email.", + "displayName": "Assignment notification email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordReset", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.490Z", + "wizardStep": null, + "description": "Template type for password reset emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Password reset email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordResetSuccess", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.491Z", + "wizardStep": null, + "description": "Template type for password reset success emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Password reset success email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.registration", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.491Z", + "wizardStep": null, + "description": "Template type for registration welcome emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Registration welcome email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionFinish", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.492Z", + "wizardStep": null, + "description": "Template type for session finish emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session finish email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionStart", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.492Z", + "wizardStep": null, + "description": "Template type for session start emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session start email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.studyClosed", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.493Z", + "wizardStep": null, + "description": "Template type for study closed emails (Email - Study Close). Leave empty to use default hardcoded email.", + "displayName": "Study closed email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUpload", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.494Z", + "wizardStep": null, + "description": "Template type for assignment submission upload/reupload emails to the assignment owner (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (assignment owner)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUploadConfirmation", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.494Z", + "wizardStep": null, + "description": "Template for submission upload confirmation to the submitter (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (submitter)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.twoFactorOtp", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.495Z", + "wizardStep": null, + "description": "Template type for two-factor authentication code emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Two-factor OTP email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.verification", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.495Z", + "wizardStep": null, + "description": "Template type for email verification emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Email verification", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "logo.reBgColor", + "type": "color", + "value": "#a934df", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.757Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.496Z", + "wizardStep": null, + "description": "Background colour for the RE section of the logo", + "displayName": "Logo RE section background colour", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Branding" + }, + { + "key": "modal.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.201Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.496Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request in modal (frontend, ms)", + "displayName": "Modal NLP request timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.long", + "type": "integer", + "value": "120000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.497Z", + "wizardStep": null, + "description": "Long rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation long", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.short", + "type": "integer", + "value": "30000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.498Z", + "wizardStep": null, + "description": "Short rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation short", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "projects.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.253Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.499Z", + "wizardStep": null, + "description": "The default project to use for new documents or studies", + "displayName": "Default project", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + }, + { + "key": "rpc.moodleAPI.apiKey", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.499Z", + "wizardStep": "moodle", + "description": "The Moodle API key for the connection", + "displayName": "Moodle API key", + "wizardOrder": 32, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.apiUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.500Z", + "wizardStep": "moodle", + "description": "The URL of the Moodle API", + "displayName": "Moodle API URL", + "wizardOrder": 31, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.courseID", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.500Z", + "wizardStep": "moodle", + "description": "The ID of the course in Moodle from which to fetch the data", + "displayName": "Moodle course ID", + "wizardOrder": 33, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Course" + }, + { + "key": "rpc.moodleAPI.showInput.apiKey", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.501Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API key", + "displayName": "Show Moodle API key input", + "wizardOrder": 35, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.apiUrl", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.502Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API URL", + "displayName": "Show Moodle API URL input", + "wizardOrder": 34, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.courseID", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.502Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the course ID", + "displayName": "Show Moodle course ID input", + "wizardOrder": 36, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "service.nlp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.503Z", + "wizardStep": null, + "description": "Whether to automatically connect to the NLP service", + "displayName": "Enable NLP features", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.retryDelay", + "type": "number", + "value": "10000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.503Z", + "wizardStep": null, + "description": "The delay between retries if connection errors occurs for the NLP service (ms)", + "displayName": "NLP retry delay", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.test.fallback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.504Z", + "wizardStep": null, + "description": "Whether to use the fallback NLP service if the main service is not available, files on local file system are used as fallback and return examples", + "displayName": "NLP test fallback", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.timeout", + "type": "number", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.504Z", + "wizardStep": null, + "description": "The timeout between connection attempts for the NLP service (ms)", + "displayName": "NLP timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.url", + "type": null, + "value": "http://localhost:4852", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.505Z", + "wizardStep": null, + "description": "The URL of the NLP service", + "displayName": "NLP service URL", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "statistics.batch.size", + "type": "number", + "value": "100", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.339Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.505Z", + "wizardStep": null, + "description": "Batch size for buffering statistics events before flushing to DB (requires server restart)", + "displayName": "Statistics batch size", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "statistics.tracking.mouseDebounceTime", + "type": "number", + "value": "500", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.806Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.506Z", + "wizardStep": null, + "description": "Debounce time in milliseconds for reporting mouse move events", + "displayName": "Mouse debounce time", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "system.auth.ldap.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.506Z", + "wizardStep": null, + "description": "Require 2FA setup for LDAP login users", + "displayName": "Require 2FA for LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.ldap.bindCredentials", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.507Z", + "wizardStep": null, + "description": "LDAP bind password (changes require a restart of the server)", + "displayName": "LDAP bind password", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.bindDN", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.507Z", + "wizardStep": null, + "description": "LDAP bind DN (changes require a restart of the server)", + "displayName": "LDAP bind DN", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.508Z", + "wizardStep": null, + "description": "Enable LDAP login flow", + "displayName": "Enable LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchBase", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.508Z", + "wizardStep": null, + "description": "LDAP user search base (changes require a restart of the server)", + "displayName": "LDAP search base", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchFilter", + "type": "string", + "value": "(uid={{username}})", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.509Z", + "wizardStep": null, + "description": "LDAP search filter template (changes require a restart of the server)", + "displayName": "LDAP search filter", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.url", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.509Z", + "wizardStep": null, + "description": "LDAP server URL (changes require a restart of the server)", + "displayName": "LDAP server URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.local.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.510Z", + "wizardStep": null, + "description": "Require 2FA setup for local login users", + "displayName": "Require 2FA for local login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.510Z", + "wizardStep": null, + "description": "Require 2FA setup for ORCID login users", + "displayName": "Require 2FA for ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.511Z", + "wizardStep": null, + "description": "ORCID callback URL (changes require a restart of the server)", + "displayName": "ORCID callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientId", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.511Z", + "wizardStep": null, + "description": "ORCID OAuth client id (changes require a restart of the server)", + "displayName": "ORCID client ID", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientSecret", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.512Z", + "wizardStep": null, + "description": "ORCID OAuth client secret (changes require a restart of the server)", + "displayName": "ORCID client secret", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.512Z", + "wizardStep": null, + "description": "Enable ORCID login flow", + "displayName": "Enable ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.sandbox", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.513Z", + "wizardStep": null, + "description": "Use ORCID sandbox mode (changes require a restart of the server)", + "displayName": "ORCID sandbox mode", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.redirect.baseUrl", + "type": "string", + "value": "http://localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.514Z", + "wizardStep": null, + "description": "Frontend base URL for authentication redirects (login success, OAuth callback, and 2FA verification pages)", + "displayName": "Frontend base URL for auth redirects", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Auth redirects" + }, + { + "key": "system.auth.saml.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.514Z", + "wizardStep": null, + "description": "Require 2FA setup for SAML login users", + "displayName": "Require 2FA for SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.saml.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.515Z", + "wizardStep": null, + "description": "SAML callback URL (changes require a restart of the server)", + "displayName": "SAML callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.cert", + "type": "text", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:37:08.515Z", + "wizardStep": null, + "description": "SAML identity provider certificate (changes require a restart of the server)", + "displayName": "SAML IdP certificate", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.516Z", + "wizardStep": null, + "description": "Enable SAML login flow", + "displayName": "Enable SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.entryPoint", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.516Z", + "wizardStep": null, + "description": "SAML identity provider entry point (changes require a restart of the server)", + "displayName": "SAML IdP entry point", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.issuer", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:37:08.517Z", + "wizardStep": null, + "description": "SAML service provider issuer (changes require a restart of the server)", + "displayName": "SAML SP issuer", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.tokenExpiry.emailVerification", + "type": "number", + "value": "24", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.517Z", + "wizardStep": null, + "description": "Email verification token expiration time in hours", + "displayName": "Email verification token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.auth.tokenExpiry.passwordReset", + "type": "number", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.518Z", + "wizardStep": null, + "description": "Password reset token expiration time in hours", + "displayName": "Password reset token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.baseUrl", + "type": "string", + "value": "localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.518Z", + "wizardStep": "mail", + "description": "The URL of the redirection for links in emails (e.g. password reset)", + "displayName": "Base URL for emails", + "wizardOrder": 23, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "system.mailService.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.519Z", + "wizardStep": "mail", + "description": "Enable the mail service (changes require a restart of the server)", + "displayName": "Mail service enabled", + "wizardOrder": 12, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.sendMail.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.519Z", + "wizardStep": "mail", + "description": "Use the sendMail function of an unix system", + "displayName": "Sendmail enabled (prioritized over SMTP)", + "wizardOrder": 13, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.sendMail.path", + "type": "string", + "value": "/usr/sbin/sendmail", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.519Z", + "wizardStep": "mail", + "description": "The path to the sendmail binary (default: /usr/sbin/sendmail)", + "displayName": "Sendmail path", + "wizardOrder": 14, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.senderAddress", + "type": "string", + "value": "system@localhost", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.520Z", + "wizardStep": "mail", + "description": "The sender address for mails", + "displayName": "Mail sender address", + "wizardOrder": 15, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.smtp.auth.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.520Z", + "wizardStep": "mail", + "description": "Use authentication for the SMTP server", + "displayName": "SMTP auth enabled", + "wizardOrder": 20, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.pass", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.521Z", + "wizardStep": "mail", + "description": "The password for the SMTP server", + "displayName": "SMTP auth password", + "wizardOrder": 22, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.user", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.521Z", + "wizardStep": "mail", + "description": "The username for the SMTP server", + "displayName": "SMTP auth user", + "wizardOrder": 21, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.522Z", + "wizardStep": "mail", + "description": "Use an SMTP server for sending mails (sendMail must be disabled!)", + "displayName": "SMTP enabled", + "wizardOrder": 16, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.host", + "type": "string", + "value": "smtp.gmail.com", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.522Z", + "wizardStep": "mail", + "description": "The hostname of the SMTP server", + "displayName": "SMTP host", + "wizardOrder": 17, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.port", + "type": "integer", + "value": "587", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.523Z", + "wizardStep": "mail", + "description": "The port of the SMTP server", + "displayName": "SMTP port", + "wizardOrder": 18, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.secure", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.523Z", + "wizardStep": "mail", + "description": "Use a secure connection to the SMTP server", + "displayName": "SMTP secure", + "wizardOrder": 19, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "tags.recencySortingIsOn", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.483Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.523Z", + "wizardStep": null, + "description": "Indicates whether recency based sorting for annotation tags is turned on.", + "displayName": "Tag recency sorting", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "tags.tagSet.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.524Z", + "wizardStep": null, + "description": "The default tagset to use for new annotations", + "displayName": "Default tag set", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "topBar.projects.hideProjectButton", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.302Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:37:08.524Z", + "wizardStep": null, + "description": "Whether to hide the project button in the topBar", + "displayName": "Hide project button in topbar", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + } + ], + "direction": true, + "startTime": "2026-08-10T23:38:05.886Z", + "endTime": "2026-08-10T23:38:05.886Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "appSettings", + "payload": { + "logo.reBgColor": "#a934df", + "system.baseUrl": "localhost:3000", + "app.login.guest": "true", + "service.nlp.url": "http://localhost:4852", + "projects.default": "1", + "app.study.enabled": "true", + "app.register.terms": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "service.nlp.enabled": "true", + "service.nlp.timeout": "60000", + "tags.tagSet.default": "2", + "app.config.copyright": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "app.landing.linkDocs": "/docs", + "app.landing.showDocs": "true", + "app.register.enabled": "true", + "rpc.moodleAPI.apiKey": "", + "rpc.moodleAPI.apiUrl": "", + "system.auth.ldap.url": "", + "statistics.batch.size": "100", + "rpc.moodleAPI.courseID": "1", + "service.nlp.retryDelay": "10000", + "annotator.nlp.activated": "true", + "app.landing.linkProject": "https://intertext.ukp-lab.de/", + "app.landing.showProject": "true", + "system.auth.saml.issuer": "", + "tags.recencySortingIsOn": "false", + "app.landing.linkFeedback": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "app.landing.showFeedback": "false", + "app.login.forgotPassword": "true", + "app.register.requestData": "true", + "app.register.requestName": "true", + "system.auth.ldap.enabled": "false", + "system.auth.saml.enabled": "false", + "annotator.collab.response": "true", + "app.register.requestStats": "true", + "editor.edits.debounceTime": "150", + "editor.toolbar.tools.bold": "true", + "editor.toolbar.tools.font": "true", + "editor.toolbar.tools.link": "false", + "editor.toolbar.tools.size": "true", + "editor.toolbar.visibility": "true", + "email.template.assignment": "", + "modal.nlp.request.timeout": "15000", + "service.nlp.test.fallback": "true", + "system.auth.orcid.enabled": "false", + "system.auth.orcid.sandbox": "true", + "annotator.sidebar.maxWidth": "50", + "annotator.sidebar.minWidth": "400", + "app.config.consent.enabled": "true", + "editor.toolbar.tools.align": "true", + "editor.toolbar.tools.clean": "true", + "editor.toolbar.tools.color": "true", + "editor.toolbar.tools.image": "false", + "editor.toolbar.tools.video": "false", + "email.template.studyClosed": "", + "system.mailService.enabled": "true", + "editor.toolbar.tools.header": "true", + "editor.toolbar.tools.indent": "true", + "editor.toolbar.tools.italic": "true", + "editor.toolbar.tools.strike": "true", + "email.template.registration": "", + "email.template.sessionStart": "", + "email.template.twoFactorOtp": "", + "email.template.verification": "", + "system.auth.ldap.searchBase": "", + "system.auth.saml.entryPoint": "", + "editor.toolbar.tools.formula": "false", + "email.template.passwordReset": "", + "email.template.sessionFinish": "", + "system.auth.redirect.baseUrl": "http://localhost:3000", + "system.auth.saml.callbackUrl": "", + "system.mailService.smtp.host": "smtp.gmail.com", + "system.mailService.smtp.port": "587", + "annotator.nlp.request.timeout": "15000", + "editor.edits.historyGroupTime": "60000", + "modal.nlp.rotation_timer.long": "120000", + "system.auth.ldap.2fa.required": "false", + "system.auth.ldap.searchFilter": "(uid={{username}})", + "system.auth.orcid.callbackUrl": "", + "system.auth.saml.2fa.required": "false", + "app.register.emailVerification": "true", + "editor.toolbar.tools.checkList": "true", + "editor.toolbar.tools.direction": "true", + "editor.toolbar.tools.subscript": "true", + "editor.toolbar.tools.underline": "true", + "modal.nlp.rotation_timer.short": "30000", + "rpc.moodleAPI.showInput.apiKey": "true", + "rpc.moodleAPI.showInput.apiUrl": "true", + "system.auth.local.2fa.required": "false", + "system.auth.orcid.2fa.required": "false", + "system.mailService.smtp.secure": "true", + "editor.edits.showHistoryForUser": "false", + "editor.toolbar.showHTMLDownload": "true", + "editor.toolbar.tools.background": "true", + "editor.toolbar.tools.blockquote": "true", + "editor.toolbar.tools.code-block": "true", + "email.template.submissionUpload": "", + "system.mailService.smtp.enabled": "true", + "annotator.comments.votes.enabled": "true", + "app.login.passwordResetRateLimit": "5", + "app.register.acceptStats.default": "false", + "editor.document.showButtonCreate": "true", + "editor.toolbar.tools.orderedList": "true", + "editor.toolbar.tools.superscript": "true", + "rpc.moodleAPI.showInput.courseID": "true", + "system.mailService.sendMail.path": "/usr/sbin/sendmail", + "system.mailService.senderAddress": "system@localhost", + "system.mailService.smtp.auth.pass": "", + "system.mailService.smtp.auth.user": "", + "topBar.projects.hideProjectButton": "false", + "editor.toolbar.tools.unorderedList": "true", + "annotator.comments.votes.onlyUpvote": "false", + "email.template.passwordResetSuccess": "", + "system.mailService.sendMail.enabled": "true", + "system.mailService.smtp.auth.enabled": "true", + "annotator.nlp.summarization.activated": "true", + "annotator.nlp.summarization.maxLength": "30", + "annotator.nlp.summarization.minLength": "10", + "annotator.nlp.summarization.skillName": "summarization", + "editor.document.showButtonPDFDownload": "true", + "statistics.tracking.mouseDebounceTime": "500", + "system.auth.tokenExpiry.passwordReset": "1", + "annotator.nlp.summarization.annoLength": "10", + "app.register.acceptDataSharing.default": "false", + "dashboard.navigation.component.default": "Home", + "editor.document.showButtonHTMLDownload": "true", + "app.register.emailVerificationRateLimit": "2", + "editor.document.showButtonDeltaDownload": "false", + "system.auth.tokenExpiry.emailVerification": "24", + "annotator.nlp.sentiment_analysis.activated": "false", + "email.template.submissionUploadConfirmation": "", + "annotator.download.enabledBeforeStudyClosing": "true", + "annotator.comments.defaultNumsShown.levelZero": "3", + "annotator.comments.defaultNumsShown.levelOneUp": "1" + }, + "direction": false, + "startTime": "2026-08-10T23:38:06.036Z", + "endTime": "2026-08-10T23:38:06.036Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingData", + "payload": [ + { + "key": "annotator.collab.response", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.891Z", + "wizardStep": null, + "description": "Whether the comment response functionality is activated.", + "displayName": "Comment replies", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.909Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request.", + "displayName": "NLP request timeout", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "app.login.passwordResetRateLimit", + "type": "number", + "value": "5", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.930Z", + "wizardStep": null, + "description": "Rate limit in minutes for password reset emails to prevent spam", + "displayName": "Password reset rate limit", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "annotator.comments.votes.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.900Z", + "wizardStep": null, + "description": "Enable voting on comments", + "displayName": "Voting on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.onlyUpvote", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.902Z", + "wizardStep": null, + "description": "Only allow upvote on comments", + "displayName": "Only upvote on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "app.register.acceptDataSharing.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.931Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to share data during registration.", + "displayName": "Default accept data sharing", + "wizardOrder": 30, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "annotator.comments.defaultNumsShown.levelOneUp", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.896Z", + "wizardStep": null, + "description": "How many 1st or higher level comments are shown by default.", + "displayName": "Level 1+ comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "app.config.consent.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.135Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.919Z", + "wizardStep": "general", + "description": "Enable consent updating feature", + "displayName": "Consent update feature", + "wizardOrder": 2, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.config.copyright", + "type": null, + "value": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.920Z", + "wizardStep": "general", + "description": "The copyright text to display on the login page", + "displayName": "Copyright notice", + "wizardOrder": 1, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.login.forgotPassword", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.928Z", + "wizardStep": "general", + "description": "Whether to enable the forgot password functionality or not", + "displayName": "Forgot password", + "wizardOrder": 4, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.register.acceptStats.default", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.932Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to tracking during registration.", + "displayName": "Default accept tracking", + "wizardOrder": 29, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.emailVerification", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.933Z", + "wizardStep": "mail", + "description": "Whether to require email verification for new user accounts", + "displayName": "Email verification required", + "wizardOrder": 24, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "app.register.emailVerificationRateLimit", + "type": "number", + "value": "2", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.934Z", + "wizardStep": null, + "description": "Rate limit in minutes for email verification emails to prevent spam", + "displayName": "Email verification rate limit", + "wizardOrder": null, + "displayGroup": "Registration", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email verification rate limit" + }, + { + "key": "app.register.terms", + "type": "edits", + "value": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.944Z", + "wizardStep": "general", + "description": "Terms and conditions text to display during registration", + "displayName": "Terms and conditions", + "wizardOrder": 5, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Terms and conditions" + }, + { + "key": "dashboard.navigation.component.default", + "type": null, + "value": "Home", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.948Z", + "wizardStep": null, + "description": "The default component to display in the dashboard", + "displayName": "Default dashboard component", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Navigation and dashboard" + }, + { + "key": "editor.document.showButtonCreate", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.949Z", + "wizardStep": null, + "description": "Show create button in dashboard to create a new html document", + "displayName": "Show create document button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonDeltaDownload", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.950Z", + "wizardStep": null, + "description": "Show download button for document deltas (edits)", + "displayName": "Show delta download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.950Z", + "wizardStep": null, + "description": "Show download button for document HTML (edits)", + "displayName": "Show HTML download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonPDFDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.207Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.951Z", + "wizardStep": null, + "description": "Show download button for PDF documents with annotations", + "displayName": "Show PDF download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "annotator.comments.defaultNumsShown.levelZero", + "type": "integer", + "value": "3", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.898Z", + "wizardStep": null, + "description": "How many 0-level comments are shown by default when annotation responses are shown", + "displayName": "Level 0 comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.nlp.sentiment_analysis.activated", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.423Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.910Z", + "wizardStep": null, + "description": "Indicates whether sentiment analysis is activated in the annotation view.", + "displayName": "Sentiment analysis in comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.annoLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.914Z", + "wizardStep": null, + "description": "The minimum length of the annotation to generate a summary.", + "displayName": "Summarization annotation length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "app.landing.linkFeedback", + "type": null, + "value": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.921Z", + "wizardStep": "general", + "description": "The URL to the official feedback page", + "displayName": "Feedback form URL", + "wizardOrder": 11, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showProject", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.927Z", + "wizardStep": "general", + "description": "Whether to show the official project page link on the landing page", + "displayName": "Show project link", + "wizardOrder": 8, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.register.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.614Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.935Z", + "wizardStep": "registration", + "description": "Whether self-registration via the public register page is allowed.", + "displayName": "Enable self-registration", + "wizardOrder": 25, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Enable registration" + }, + { + "key": "app.register.requestData", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.935Z", + "wizardStep": "registration", + "description": "Indicates if the option for data sharing during registration is enabled.", + "displayName": "Request data sharing at registration", + "wizardOrder": 28, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestName", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.941Z", + "wizardStep": "registration", + "description": "Whether to request the user's name during registration", + "displayName": "Request name at registration", + "wizardOrder": 26, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestStats", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.944Z", + "wizardStep": "registration", + "description": "Whether to request the user's statistics approval during registration", + "displayName": "Request usage-stats consent at registration", + "wizardOrder": 27, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.setup.wizardCompleted", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.946Z", + "wizardStep": null, + "description": "Internal setup wizard completion state.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.setup.wizardCurrentStep", + "type": "integer", + "value": "0", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.947Z", + "wizardStep": null, + "description": "Internal setup wizard current step.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.study.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.947Z", + "wizardStep": null, + "description": "Whether to enable the user study functionality", + "displayName": "Enable study mode", + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Study mode" + }, + { + "key": "editor.edits.debounceTime", + "type": "number", + "value": "150", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.952Z", + "wizardStep": null, + "description": "Delay time in milliseconds before processing edits", + "displayName": "Edit debounce time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.historyGroupTime", + "type": "integer", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.953Z", + "wizardStep": null, + "description": "The edits will be merged into groups when there is less than this time between them", + "displayName": "Edit history group time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.showHistoryForUser", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.954Z", + "wizardStep": null, + "description": "Show the history of edits for all users (default only admins)", + "displayName": "Show edit history to users", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.toolbar.showHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.954Z", + "wizardStep": null, + "description": "Show download button for the html document", + "displayName": "Toolbar HTML download", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.background", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.956Z", + "wizardStep": null, + "description": "Text background color in the toolbar", + "displayName": "Toolbar background", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.blockquote", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.956Z", + "wizardStep": null, + "description": "Blockquote in the toolbar", + "displayName": "Toolbar blockquote", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.bold", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.957Z", + "wizardStep": null, + "description": "Bold text in the toolbar", + "displayName": "Toolbar bold", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.checkList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.958Z", + "wizardStep": null, + "description": "Check list in the toolbar", + "displayName": "Toolbar check list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.clean", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.959Z", + "wizardStep": null, + "description": "Clean tool in the toolbar", + "displayName": "Toolbar clean", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.code-block", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.959Z", + "wizardStep": null, + "description": "Code-block in the toolbar", + "displayName": "Toolbar code-block", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.color", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.960Z", + "wizardStep": null, + "description": "Text color in the toolbar", + "displayName": "Toolbar color", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.direction", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.961Z", + "wizardStep": null, + "description": "Text direction in the toolbar", + "displayName": "Toolbar direction", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.font", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.962Z", + "wizardStep": null, + "description": "Font tool in the toolbar", + "displayName": "Toolbar font", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.formula", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.963Z", + "wizardStep": null, + "description": "Formula in the toolbar", + "displayName": "Toolbar formula", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "annotator.download.enabledBeforeStudyClosing", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.213Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.904Z", + "wizardStep": null, + "description": "Whether annotations can be downloaded before a study is closed", + "displayName": "Download before study closing", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Download" + }, + { + "key": "annotator.nlp.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.906Z", + "wizardStep": null, + "description": "Indicates whether NLP support is activated in the annotation view.", + "displayName": "NLP in annotation view", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.912Z", + "wizardStep": null, + "description": "Indicates whether summarization is activated.", + "displayName": "Summarization activated", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.maxLength", + "type": "integer", + "value": "30", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.915Z", + "wizardStep": null, + "description": "The maximum length of the summary (in tokens of the model).", + "displayName": "Summarization max length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.minLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.916Z", + "wizardStep": null, + "description": "The minimum length of the summary (in tokens of the model).", + "displayName": "Summarization min length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.skillName", + "type": null, + "value": "summarization", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.917Z", + "wizardStep": null, + "description": "The skill name to use for summarization.", + "displayName": "Summarization skill name", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.sidebar.maxWidth", + "type": "integer", + "value": "50", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.918Z", + "wizardStep": null, + "description": "The maximum width of the sidebar (percentage of the screen, in %)", + "displayName": "Sidebar max width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "annotator.sidebar.minWidth", + "type": "integer", + "value": "400", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.918Z", + "wizardStep": null, + "description": "The minimum width of the sidebar (in px)", + "displayName": "Sidebar min width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "app.landing.linkDocs", + "type": null, + "value": "/docs", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.921Z", + "wizardStep": "general", + "description": "The URL to the documentation", + "displayName": "Documentation URL", + "wizardOrder": 7, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkProject", + "type": null, + "value": "https://intertext.ukp-lab.de/", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.922Z", + "wizardStep": "general", + "description": "The URL to the official project page", + "displayName": "Project page URL", + "wizardOrder": 9, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showDocs", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.925Z", + "wizardStep": "general", + "description": "Whether to show the documentation links on the landing page", + "displayName": "Show documentation link", + "wizardOrder": 6, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showFeedback", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.926Z", + "wizardStep": "general", + "description": "Whether to show the official feedback link on the landing page", + "displayName": "Show feedback link", + "wizardOrder": 10, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.login.guest", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.929Z", + "wizardStep": "general", + "description": "Whether to allow guest logins", + "displayName": "Allow guest login", + "wizardOrder": 3, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "editor.toolbar.tools.header", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.963Z", + "wizardStep": null, + "description": "Header in the toolbar", + "displayName": "Toolbar header", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.image", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.964Z", + "wizardStep": null, + "description": "Image tool in the toolbar", + "displayName": "Toolbar image", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.indent", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.965Z", + "wizardStep": null, + "description": "Indent in the toolbar", + "displayName": "Toolbar indent", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.italic", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.966Z", + "wizardStep": null, + "description": "Italic text in the toolbar", + "displayName": "Toolbar italic", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.link", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.967Z", + "wizardStep": null, + "description": "Link tool in the toolbar", + "displayName": "Toolbar link", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.orderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.968Z", + "wizardStep": null, + "description": "Ordered list in the toolbar", + "displayName": "Toolbar ordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.size", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.969Z", + "wizardStep": null, + "description": "Font size in the toolbar", + "displayName": "Toolbar size", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.strike", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.969Z", + "wizardStep": null, + "description": "Strike through text in the toolbar", + "displayName": "Toolbar strike", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.subscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.970Z", + "wizardStep": null, + "description": " Subscript in the toolbar", + "displayName": "Toolbar subscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.superscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.971Z", + "wizardStep": null, + "description": "Superscript in the toolbar", + "displayName": "Toolbar superscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.underline", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.972Z", + "wizardStep": null, + "description": "Underline text in the toolbar", + "displayName": "Toolbar underline", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.unorderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.972Z", + "wizardStep": null, + "description": "Bullet list in the toolbar", + "displayName": "Toolbar unordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.video", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.973Z", + "wizardStep": null, + "description": "Video tool in the toolbar", + "displayName": "Toolbar video", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.visibility", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.974Z", + "wizardStep": null, + "description": "Make toolbar in the editor visible", + "displayName": "Toolbar visibility", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.assignment", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.975Z", + "wizardStep": null, + "description": "Template type for assignment notification emails (Email - Assignment). Leave empty to use default hardcoded email.", + "displayName": "Assignment notification email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "editor.toolbar.tools.align", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.955Z", + "wizardStep": null, + "description": "Text alignment in the toolbar", + "displayName": "Toolbar align", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.passwordReset", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.976Z", + "wizardStep": null, + "description": "Template type for password reset emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Password reset email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordResetSuccess", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.977Z", + "wizardStep": null, + "description": "Template type for password reset success emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Password reset success email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.registration", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.978Z", + "wizardStep": null, + "description": "Template type for registration welcome emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Registration welcome email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionFinish", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.978Z", + "wizardStep": null, + "description": "Template type for session finish emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session finish email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionStart", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.979Z", + "wizardStep": null, + "description": "Template type for session start emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session start email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.studyClosed", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.980Z", + "wizardStep": null, + "description": "Template type for study closed emails (Email - Study Close). Leave empty to use default hardcoded email.", + "displayName": "Study closed email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUpload", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.981Z", + "wizardStep": null, + "description": "Template type for assignment submission upload/reupload emails to the assignment owner (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (assignment owner)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUploadConfirmation", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.981Z", + "wizardStep": null, + "description": "Template for submission upload confirmation to the submitter (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (submitter)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.twoFactorOtp", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.982Z", + "wizardStep": null, + "description": "Template type for two-factor authentication code emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Two-factor OTP email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.verification", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.983Z", + "wizardStep": null, + "description": "Template type for email verification emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Email verification", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "logo.reBgColor", + "type": "color", + "value": "#a934df", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.757Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.984Z", + "wizardStep": null, + "description": "Background colour for the RE section of the logo", + "displayName": "Logo RE section background colour", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Branding" + }, + { + "key": "modal.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.201Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.984Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request in modal (frontend, ms)", + "displayName": "Modal NLP request timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.long", + "type": "integer", + "value": "120000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.985Z", + "wizardStep": null, + "description": "Long rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation long", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.short", + "type": "integer", + "value": "30000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.986Z", + "wizardStep": null, + "description": "Short rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation short", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "projects.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.253Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.987Z", + "wizardStep": null, + "description": "The default project to use for new documents or studies", + "displayName": "Default project", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + }, + { + "key": "rpc.moodleAPI.apiKey", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.987Z", + "wizardStep": "moodle", + "description": "The Moodle API key for the connection", + "displayName": "Moodle API key", + "wizardOrder": 32, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.apiUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.988Z", + "wizardStep": "moodle", + "description": "The URL of the Moodle API", + "displayName": "Moodle API URL", + "wizardOrder": 31, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.courseID", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.989Z", + "wizardStep": "moodle", + "description": "The ID of the course in Moodle from which to fetch the data", + "displayName": "Moodle course ID", + "wizardOrder": 33, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Course" + }, + { + "key": "rpc.moodleAPI.showInput.apiKey", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.990Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API key", + "displayName": "Show Moodle API key input", + "wizardOrder": 35, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.apiUrl", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.990Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API URL", + "displayName": "Show Moodle API URL input", + "wizardOrder": 34, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.courseID", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.991Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the course ID", + "displayName": "Show Moodle course ID input", + "wizardOrder": 36, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "service.nlp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.992Z", + "wizardStep": null, + "description": "Whether to automatically connect to the NLP service", + "displayName": "Enable NLP features", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.retryDelay", + "type": "number", + "value": "10000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.993Z", + "wizardStep": null, + "description": "The delay between retries if connection errors occurs for the NLP service (ms)", + "displayName": "NLP retry delay", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.test.fallback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.994Z", + "wizardStep": null, + "description": "Whether to use the fallback NLP service if the main service is not available, files on local file system are used as fallback and return examples", + "displayName": "NLP test fallback", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.timeout", + "type": "number", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.995Z", + "wizardStep": null, + "description": "The timeout between connection attempts for the NLP service (ms)", + "displayName": "NLP timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.url", + "type": null, + "value": "http://localhost:4852", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.996Z", + "wizardStep": null, + "description": "The URL of the NLP service", + "displayName": "NLP service URL", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "statistics.batch.size", + "type": "number", + "value": "100", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.339Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.997Z", + "wizardStep": null, + "description": "Batch size for buffering statistics events before flushing to DB (requires server restart)", + "displayName": "Statistics batch size", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "statistics.tracking.mouseDebounceTime", + "type": "number", + "value": "500", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.806Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.997Z", + "wizardStep": null, + "description": "Debounce time in milliseconds for reporting mouse move events", + "displayName": "Mouse debounce time", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "system.auth.ldap.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:05.998Z", + "wizardStep": null, + "description": "Require 2FA setup for LDAP login users", + "displayName": "Require 2FA for LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.ldap.bindCredentials", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.999Z", + "wizardStep": null, + "description": "LDAP bind password (changes require a restart of the server)", + "displayName": "LDAP bind password", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.bindDN", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.999Z", + "wizardStep": null, + "description": "LDAP bind DN (changes require a restart of the server)", + "displayName": "LDAP bind DN", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.000Z", + "wizardStep": null, + "description": "Enable LDAP login flow", + "displayName": "Enable LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchBase", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.000Z", + "wizardStep": null, + "description": "LDAP user search base (changes require a restart of the server)", + "displayName": "LDAP search base", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchFilter", + "type": "string", + "value": "(uid={{username}})", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.001Z", + "wizardStep": null, + "description": "LDAP search filter template (changes require a restart of the server)", + "displayName": "LDAP search filter", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.url", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.002Z", + "wizardStep": null, + "description": "LDAP server URL (changes require a restart of the server)", + "displayName": "LDAP server URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.local.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.002Z", + "wizardStep": null, + "description": "Require 2FA setup for local login users", + "displayName": "Require 2FA for local login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.003Z", + "wizardStep": null, + "description": "Require 2FA setup for ORCID login users", + "displayName": "Require 2FA for ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.004Z", + "wizardStep": null, + "description": "ORCID callback URL (changes require a restart of the server)", + "displayName": "ORCID callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientId", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:06.004Z", + "wizardStep": null, + "description": "ORCID OAuth client id (changes require a restart of the server)", + "displayName": "ORCID client ID", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientSecret", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:06.005Z", + "wizardStep": null, + "description": "ORCID OAuth client secret (changes require a restart of the server)", + "displayName": "ORCID client secret", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.006Z", + "wizardStep": null, + "description": "Enable ORCID login flow", + "displayName": "Enable ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.sandbox", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.006Z", + "wizardStep": null, + "description": "Use ORCID sandbox mode (changes require a restart of the server)", + "displayName": "ORCID sandbox mode", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.redirect.baseUrl", + "type": "string", + "value": "http://localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.007Z", + "wizardStep": null, + "description": "Frontend base URL for authentication redirects (login success, OAuth callback, and 2FA verification pages)", + "displayName": "Frontend base URL for auth redirects", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Auth redirects" + }, + { + "key": "system.auth.saml.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.008Z", + "wizardStep": null, + "description": "Require 2FA setup for SAML login users", + "displayName": "Require 2FA for SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.saml.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.009Z", + "wizardStep": null, + "description": "SAML callback URL (changes require a restart of the server)", + "displayName": "SAML callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.cert", + "type": "text", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:06.009Z", + "wizardStep": null, + "description": "SAML identity provider certificate (changes require a restart of the server)", + "displayName": "SAML IdP certificate", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.010Z", + "wizardStep": null, + "description": "Enable SAML login flow", + "displayName": "Enable SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.entryPoint", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.011Z", + "wizardStep": null, + "description": "SAML identity provider entry point (changes require a restart of the server)", + "displayName": "SAML IdP entry point", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.issuer", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.011Z", + "wizardStep": null, + "description": "SAML service provider issuer (changes require a restart of the server)", + "displayName": "SAML SP issuer", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.tokenExpiry.emailVerification", + "type": "number", + "value": "24", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.012Z", + "wizardStep": null, + "description": "Email verification token expiration time in hours", + "displayName": "Email verification token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.auth.tokenExpiry.passwordReset", + "type": "number", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.013Z", + "wizardStep": null, + "description": "Password reset token expiration time in hours", + "displayName": "Password reset token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.baseUrl", + "type": "string", + "value": "localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.013Z", + "wizardStep": "mail", + "description": "The URL of the redirection for links in emails (e.g. password reset)", + "displayName": "Base URL for emails", + "wizardOrder": 23, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "system.mailService.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.014Z", + "wizardStep": "mail", + "description": "Enable the mail service (changes require a restart of the server)", + "displayName": "Mail service enabled", + "wizardOrder": 12, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.sendMail.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.014Z", + "wizardStep": "mail", + "description": "Use the sendMail function of an unix system", + "displayName": "Sendmail enabled (prioritized over SMTP)", + "wizardOrder": 13, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.sendMail.path", + "type": "string", + "value": "/usr/sbin/sendmail", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.015Z", + "wizardStep": "mail", + "description": "The path to the sendmail binary (default: /usr/sbin/sendmail)", + "displayName": "Sendmail path", + "wizardOrder": 14, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.senderAddress", + "type": "string", + "value": "system@localhost", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.016Z", + "wizardStep": "mail", + "description": "The sender address for mails", + "displayName": "Mail sender address", + "wizardOrder": 15, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.smtp.auth.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.016Z", + "wizardStep": "mail", + "description": "Use authentication for the SMTP server", + "displayName": "SMTP auth enabled", + "wizardOrder": 20, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.pass", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.017Z", + "wizardStep": "mail", + "description": "The password for the SMTP server", + "displayName": "SMTP auth password", + "wizardOrder": 22, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.user", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.018Z", + "wizardStep": "mail", + "description": "The username for the SMTP server", + "displayName": "SMTP auth user", + "wizardOrder": 21, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.018Z", + "wizardStep": "mail", + "description": "Use an SMTP server for sending mails (sendMail must be disabled!)", + "displayName": "SMTP enabled", + "wizardOrder": 16, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.host", + "type": "string", + "value": "smtp.gmail.com", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.019Z", + "wizardStep": "mail", + "description": "The hostname of the SMTP server", + "displayName": "SMTP host", + "wizardOrder": 17, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.port", + "type": "integer", + "value": "587", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.020Z", + "wizardStep": "mail", + "description": "The port of the SMTP server", + "displayName": "SMTP port", + "wizardOrder": 18, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.secure", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.020Z", + "wizardStep": "mail", + "description": "Use a secure connection to the SMTP server", + "displayName": "SMTP secure", + "wizardOrder": 19, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "tags.recencySortingIsOn", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.483Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.021Z", + "wizardStep": null, + "description": "Indicates whether recency based sorting for annotation tags is turned on.", + "displayName": "Tag recency sorting", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "tags.tagSet.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.022Z", + "wizardStep": null, + "description": "The default tagset to use for new annotations", + "displayName": "Default tag set", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "topBar.projects.hideProjectButton", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.302Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.022Z", + "wizardStep": null, + "description": "Whether to hide the project button in the topBar", + "displayName": "Hide project button in topbar", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + } + ], + "direction": false, + "startTime": "2026-08-10T23:38:06.043Z", + "endTime": "2026-08-10T23:38:06.043Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1265, + "clientY": 100, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:38:06.185Z", + "endTime": "2026-08-10T23:38:06.185Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1133, + "clientY": 3, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:38:06.887Z", + "endTime": "2026-08-10T23:38:06.887Z" + }, + { + "recordingId": 19, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:38:07.332Z", + "endTime": "2026-08-10T23:38:07.332Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/350-wizard-setting.json b/backend/tests/regression_stories/350-wizard-setting.json new file mode 100644 index 000000000..8e1f58242 --- /dev/null +++ b/backend/tests/regression_stories/350-wizard-setting.json @@ -0,0 +1,5842 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:25.800Z", + "traceCount": 28, + "recording": { + "name": "350-wizard-setting", + "status": "finished", + "startTime": "2026-08-10T23:40:25.029Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:40:40.164Z" + }, + "traces": [ + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 20, + "name": "Recording 8/11/2026, 1:40:25 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:40:25.030Z", + "startTime": "2026-08-10T23:40:25.029Z", + "updatedAt": "2026-08-10T23:40:25.030Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:40:25.042Z", + "endTime": "2026-08-10T23:40:25.042Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:40:26.130Z", + "endTime": "2026-08-10T23:40:26.130Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/settings", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:40:28.838Z", + "endTime": "2026-08-10T23:40:28.838Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "21ac6fe2-39c7-4064-a2da-ea42819d4228", + "direction": true, + "startTime": "2026-08-10T23:40:28.845Z", + "endTime": "2026-08-10T23:40:28.845Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "7ac7ac98-be1d-4785-9fcc-6092a8882c8e", + "direction": true, + "startTime": "2026-08-10T23:40:28.846Z", + "endTime": "2026-08-10T23:40:28.846Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "1160b479-af76-4287-a133-494a49a8e10d", + "direction": true, + "startTime": "2026-08-10T23:40:28.846Z", + "endTime": "2026-08-10T23:40:28.846Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "93534d55-a1af-4183-8e06-d015080185df", + "direction": true, + "startTime": "2026-08-10T23:40:28.846Z", + "endTime": "2026-08-10T23:40:28.846Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "413510b3-ebb5-4870-b6a7-25b65133a06d", + "direction": true, + "startTime": "2026-08-10T23:40:28.846Z", + "endTime": "2026-08-10T23:40:28.846Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "5dc1d61f-6435-4a61-9304-02cfc0004e4c", + "direction": true, + "startTime": "2026-08-10T23:40:28.846Z", + "endTime": "2026-08-10T23:40:28.846Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:28.851Z", + "endTime": "2026-08-10T23:40:28.851Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingGetData", + "payload": null, + "direction": true, + "startTime": "2026-08-10T23:40:28.853Z", + "endTime": "2026-08-10T23:40:28.853Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.471Z", + "endTime": "2026-08-10T23:40:31.471Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.480Z", + "endTime": "2026-08-10T23:40:31.480Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.480Z", + "endTime": "2026-08-10T23:40:31.480Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.482Z", + "endTime": "2026-08-10T23:40:31.482Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.482Z", + "endTime": "2026-08-10T23:40:31.482Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.482Z", + "endTime": "2026-08-10T23:40:31.482Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.482Z", + "endTime": "2026-08-10T23:40:31.482Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:40:31.482Z", + "endTime": "2026-08-10T23:40:31.482Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 474, + "clientY": 554, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:40:32.503Z", + "endTime": "2026-08-10T23:40:32.503Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 661, + "clientY": 564, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:40:34.685Z", + "endTime": "2026-08-10T23:40:34.685Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "upload", + "title": "Save Settings (Unsaved changes)" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:40:37.254Z", + "endTime": "2026-08-10T23:40:37.254Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingSave", + "payload": [ + { + "key": "annotator.collab.response", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.891Z", + "wizardStep": null, + "description": "Whether the comment response functionality is activated.", + "displayName": "Comment replies", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.defaultNumsShown.levelOneUp", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.896Z", + "wizardStep": null, + "description": "How many 1st or higher level comments are shown by default.", + "displayName": "Level 1+ comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.defaultNumsShown.levelZero", + "type": "integer", + "value": "3", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.898Z", + "wizardStep": null, + "description": "How many 0-level comments are shown by default when annotation responses are shown", + "displayName": "Level 0 comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.900Z", + "wizardStep": null, + "description": "Enable voting on comments", + "displayName": "Voting on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.onlyUpvote", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.902Z", + "wizardStep": null, + "description": "Only allow upvote on comments", + "displayName": "Only upvote on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.download.enabledBeforeStudyClosing", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.213Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.904Z", + "wizardStep": null, + "description": "Whether annotations can be downloaded before a study is closed", + "displayName": "Download before study closing", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Download" + }, + { + "key": "annotator.nlp.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.906Z", + "wizardStep": null, + "description": "Indicates whether NLP support is activated in the annotation view.", + "displayName": "NLP in annotation view", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.909Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request.", + "displayName": "NLP request timeout", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.sentiment_analysis.activated", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.423Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.910Z", + "wizardStep": null, + "description": "Indicates whether sentiment analysis is activated in the annotation view.", + "displayName": "Sentiment analysis in comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.912Z", + "wizardStep": null, + "description": "Indicates whether summarization is activated.", + "displayName": "Summarization activated", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.annoLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.914Z", + "wizardStep": null, + "description": "The minimum length of the annotation to generate a summary.", + "displayName": "Summarization annotation length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.maxLength", + "type": "integer", + "value": "30", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.915Z", + "wizardStep": null, + "description": "The maximum length of the summary (in tokens of the model).", + "displayName": "Summarization max length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.minLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.916Z", + "wizardStep": null, + "description": "The minimum length of the summary (in tokens of the model).", + "displayName": "Summarization min length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.skillName", + "type": null, + "value": "summarization", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.917Z", + "wizardStep": null, + "description": "The skill name to use for summarization.", + "displayName": "Summarization skill name", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.sidebar.maxWidth", + "type": "integer", + "value": "50", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.918Z", + "wizardStep": null, + "description": "The maximum width of the sidebar (percentage of the screen, in %)", + "displayName": "Sidebar max width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "annotator.sidebar.minWidth", + "type": "integer", + "value": "400", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.918Z", + "wizardStep": null, + "description": "The minimum width of the sidebar (in px)", + "displayName": "Sidebar min width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "app.config.consent.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.135Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.919Z", + "wizardStep": "general", + "description": "Enable consent updating feature", + "displayName": "Consent update feature", + "wizardOrder": 2, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.config.copyright", + "type": null, + "value": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.920Z", + "wizardStep": "general", + "description": "The copyright text to display on the login page", + "displayName": "Copyright notice", + "wizardOrder": 1, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.landing.linkDocs", + "type": null, + "value": "/docs", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.921Z", + "wizardStep": "general", + "description": "The URL to the documentation", + "displayName": "Documentation URL", + "wizardOrder": 7, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkFeedback", + "type": null, + "value": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.921Z", + "wizardStep": "general", + "description": "The URL to the official feedback page", + "displayName": "Feedback form URL", + "wizardOrder": 11, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkProject", + "type": null, + "value": "https://intertext.ukp-lab.de/", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.922Z", + "wizardStep": "general", + "description": "The URL to the official project page", + "displayName": "Project page URL", + "wizardOrder": 9, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showDocs", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.925Z", + "wizardStep": "general", + "description": "Whether to show the documentation links on the landing page", + "displayName": "Show documentation link", + "wizardOrder": 6, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showFeedback", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.926Z", + "wizardStep": "general", + "description": "Whether to show the official feedback link on the landing page", + "displayName": "Show feedback link", + "wizardOrder": 10, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showProject", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.927Z", + "wizardStep": "general", + "description": "Whether to show the official project page link on the landing page", + "displayName": "Show project link", + "wizardOrder": 8, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.login.forgotPassword", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.928Z", + "wizardStep": "general", + "description": "Whether to enable the forgot password functionality or not", + "displayName": "Forgot password", + "wizardOrder": 4, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.login.guest", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.929Z", + "wizardStep": "general", + "description": "Whether to allow guest logins", + "displayName": "Allow guest login", + "wizardOrder": 3, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.login.passwordResetRateLimit", + "type": "number", + "value": "5", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.930Z", + "wizardStep": null, + "description": "Rate limit in minutes for password reset emails to prevent spam", + "displayName": "Password reset rate limit", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.register.acceptDataSharing.default", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.931Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to share data during registration.", + "displayName": "Default accept data sharing", + "wizardOrder": 30, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.acceptStats.default", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.932Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to tracking during registration.", + "displayName": "Default accept tracking", + "wizardOrder": 29, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.emailVerification", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.933Z", + "wizardStep": "mail", + "description": "Whether to require email verification for new user accounts", + "displayName": "Email verification required", + "wizardOrder": 24, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "app.register.emailVerificationRateLimit", + "type": "number", + "value": "2", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.934Z", + "wizardStep": null, + "description": "Rate limit in minutes for email verification emails to prevent spam", + "displayName": "Email verification rate limit", + "wizardOrder": null, + "displayGroup": "Registration", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email verification rate limit" + }, + { + "key": "app.register.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.614Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.935Z", + "wizardStep": "registration", + "description": "Whether self-registration via the public register page is allowed.", + "displayName": "Enable self-registration", + "wizardOrder": 25, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Enable registration" + }, + { + "key": "app.register.requestData", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.935Z", + "wizardStep": "registration", + "description": "Indicates if the option for data sharing during registration is enabled.", + "displayName": "Request data sharing at registration", + "wizardOrder": 28, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestName", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.941Z", + "wizardStep": "registration", + "description": "Whether to request the user's name during registration", + "displayName": "Request name at registration", + "wizardOrder": 26, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestStats", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.944Z", + "wizardStep": "registration", + "description": "Whether to request the user's statistics approval during registration", + "displayName": "Request usage-stats consent at registration", + "wizardOrder": 27, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.terms", + "type": "edits", + "value": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.944Z", + "wizardStep": "general", + "description": "Terms and conditions text to display during registration", + "displayName": "Terms and conditions", + "wizardOrder": 5, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Terms and conditions" + }, + { + "key": "app.setup.wizardCompleted", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.946Z", + "wizardStep": null, + "description": "Internal setup wizard completion state.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.setup.wizardCurrentStep", + "type": "integer", + "value": "0", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.947Z", + "wizardStep": null, + "description": "Internal setup wizard current step.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.study.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.947Z", + "wizardStep": null, + "description": "Whether to enable the user study functionality", + "displayName": "Enable study mode", + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Study mode" + }, + { + "key": "dashboard.navigation.component.default", + "type": null, + "value": "Home", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.948Z", + "wizardStep": null, + "description": "The default component to display in the dashboard", + "displayName": "Default dashboard component", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Navigation and dashboard" + }, + { + "key": "editor.document.showButtonCreate", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.949Z", + "wizardStep": null, + "description": "Show create button in dashboard to create a new html document", + "displayName": "Show create document button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonDeltaDownload", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.950Z", + "wizardStep": null, + "description": "Show download button for document deltas (edits)", + "displayName": "Show delta download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.950Z", + "wizardStep": null, + "description": "Show download button for document HTML (edits)", + "displayName": "Show HTML download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonPDFDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.207Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.951Z", + "wizardStep": null, + "description": "Show download button for PDF documents with annotations", + "displayName": "Show PDF download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.edits.debounceTime", + "type": "number", + "value": "150", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.952Z", + "wizardStep": null, + "description": "Delay time in milliseconds before processing edits", + "displayName": "Edit debounce time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.historyGroupTime", + "type": "integer", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.953Z", + "wizardStep": null, + "description": "The edits will be merged into groups when there is less than this time between them", + "displayName": "Edit history group time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.showHistoryForUser", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.954Z", + "wizardStep": null, + "description": "Show the history of edits for all users (default only admins)", + "displayName": "Show edit history to users", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.toolbar.showHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.954Z", + "wizardStep": null, + "description": "Show download button for the html document", + "displayName": "Toolbar HTML download", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.align", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.955Z", + "wizardStep": null, + "description": "Text alignment in the toolbar", + "displayName": "Toolbar align", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.background", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.956Z", + "wizardStep": null, + "description": "Text background color in the toolbar", + "displayName": "Toolbar background", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.blockquote", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.956Z", + "wizardStep": null, + "description": "Blockquote in the toolbar", + "displayName": "Toolbar blockquote", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.bold", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.957Z", + "wizardStep": null, + "description": "Bold text in the toolbar", + "displayName": "Toolbar bold", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.checkList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.958Z", + "wizardStep": null, + "description": "Check list in the toolbar", + "displayName": "Toolbar check list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.clean", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.959Z", + "wizardStep": null, + "description": "Clean tool in the toolbar", + "displayName": "Toolbar clean", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.code-block", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.959Z", + "wizardStep": null, + "description": "Code-block in the toolbar", + "displayName": "Toolbar code-block", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.color", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.960Z", + "wizardStep": null, + "description": "Text color in the toolbar", + "displayName": "Toolbar color", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.direction", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.961Z", + "wizardStep": null, + "description": "Text direction in the toolbar", + "displayName": "Toolbar direction", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.font", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.962Z", + "wizardStep": null, + "description": "Font tool in the toolbar", + "displayName": "Toolbar font", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.formula", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.963Z", + "wizardStep": null, + "description": "Formula in the toolbar", + "displayName": "Toolbar formula", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.header", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.963Z", + "wizardStep": null, + "description": "Header in the toolbar", + "displayName": "Toolbar header", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.image", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.964Z", + "wizardStep": null, + "description": "Image tool in the toolbar", + "displayName": "Toolbar image", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.indent", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.965Z", + "wizardStep": null, + "description": "Indent in the toolbar", + "displayName": "Toolbar indent", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.italic", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.966Z", + "wizardStep": null, + "description": "Italic text in the toolbar", + "displayName": "Toolbar italic", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.link", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.967Z", + "wizardStep": null, + "description": "Link tool in the toolbar", + "displayName": "Toolbar link", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.orderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.968Z", + "wizardStep": null, + "description": "Ordered list in the toolbar", + "displayName": "Toolbar ordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.size", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.969Z", + "wizardStep": null, + "description": "Font size in the toolbar", + "displayName": "Toolbar size", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.strike", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.969Z", + "wizardStep": null, + "description": "Strike through text in the toolbar", + "displayName": "Toolbar strike", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.subscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.970Z", + "wizardStep": null, + "description": " Subscript in the toolbar", + "displayName": "Toolbar subscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.superscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.971Z", + "wizardStep": null, + "description": "Superscript in the toolbar", + "displayName": "Toolbar superscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.underline", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.972Z", + "wizardStep": null, + "description": "Underline text in the toolbar", + "displayName": "Toolbar underline", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.unorderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.972Z", + "wizardStep": null, + "description": "Bullet list in the toolbar", + "displayName": "Toolbar unordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.video", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.973Z", + "wizardStep": null, + "description": "Video tool in the toolbar", + "displayName": "Toolbar video", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.visibility", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.974Z", + "wizardStep": null, + "description": "Make toolbar in the editor visible", + "displayName": "Toolbar visibility", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.assignment", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.975Z", + "wizardStep": null, + "description": "Template type for assignment notification emails (Email - Assignment). Leave empty to use default hardcoded email.", + "displayName": "Assignment notification email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordReset", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.976Z", + "wizardStep": null, + "description": "Template type for password reset emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Password reset email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordResetSuccess", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.977Z", + "wizardStep": null, + "description": "Template type for password reset success emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Password reset success email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.registration", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.978Z", + "wizardStep": null, + "description": "Template type for registration welcome emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Registration welcome email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionFinish", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.978Z", + "wizardStep": null, + "description": "Template type for session finish emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session finish email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionStart", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.979Z", + "wizardStep": null, + "description": "Template type for session start emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session start email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.studyClosed", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.980Z", + "wizardStep": null, + "description": "Template type for study closed emails (Email - Study Close). Leave empty to use default hardcoded email.", + "displayName": "Study closed email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUpload", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.981Z", + "wizardStep": null, + "description": "Template type for assignment submission upload/reupload emails to the assignment owner (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (assignment owner)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUploadConfirmation", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.981Z", + "wizardStep": null, + "description": "Template for submission upload confirmation to the submitter (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (submitter)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.twoFactorOtp", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.982Z", + "wizardStep": null, + "description": "Template type for two-factor authentication code emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Two-factor OTP email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.verification", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.983Z", + "wizardStep": null, + "description": "Template type for email verification emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Email verification", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "logo.reBgColor", + "type": "color", + "value": "#a934df", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.757Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.984Z", + "wizardStep": null, + "description": "Background colour for the RE section of the logo", + "displayName": "Logo RE section background colour", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Branding" + }, + { + "key": "modal.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.201Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.984Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request in modal (frontend, ms)", + "displayName": "Modal NLP request timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.long", + "type": "integer", + "value": "120000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.985Z", + "wizardStep": null, + "description": "Long rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation long", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.short", + "type": "integer", + "value": "30000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.986Z", + "wizardStep": null, + "description": "Short rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation short", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "projects.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.253Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.987Z", + "wizardStep": null, + "description": "The default project to use for new documents or studies", + "displayName": "Default project", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + }, + { + "key": "rpc.moodleAPI.apiKey", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.987Z", + "wizardStep": "moodle", + "description": "The Moodle API key for the connection", + "displayName": "Moodle API key", + "wizardOrder": 32, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.apiUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.988Z", + "wizardStep": "moodle", + "description": "The URL of the Moodle API", + "displayName": "Moodle API URL", + "wizardOrder": 31, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.courseID", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.989Z", + "wizardStep": "moodle", + "description": "The ID of the course in Moodle from which to fetch the data", + "displayName": "Moodle course ID", + "wizardOrder": 33, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Course" + }, + { + "key": "rpc.moodleAPI.showInput.apiKey", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.990Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API key", + "displayName": "Show Moodle API key input", + "wizardOrder": 35, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.apiUrl", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.990Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API URL", + "displayName": "Show Moodle API URL input", + "wizardOrder": 34, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.courseID", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.991Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the course ID", + "displayName": "Show Moodle course ID input", + "wizardOrder": 36, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "service.nlp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.992Z", + "wizardStep": null, + "description": "Whether to automatically connect to the NLP service", + "displayName": "Enable NLP features", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.retryDelay", + "type": "number", + "value": "10000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.993Z", + "wizardStep": null, + "description": "The delay between retries if connection errors occurs for the NLP service (ms)", + "displayName": "NLP retry delay", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.test.fallback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.994Z", + "wizardStep": null, + "description": "Whether to use the fallback NLP service if the main service is not available, files on local file system are used as fallback and return examples", + "displayName": "NLP test fallback", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.timeout", + "type": "number", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.995Z", + "wizardStep": null, + "description": "The timeout between connection attempts for the NLP service (ms)", + "displayName": "NLP timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.url", + "type": null, + "value": "http://localhost:4852", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.996Z", + "wizardStep": null, + "description": "The URL of the NLP service", + "displayName": "NLP service URL", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "statistics.batch.size", + "type": "number", + "value": "100", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.339Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.997Z", + "wizardStep": null, + "description": "Batch size for buffering statistics events before flushing to DB (requires server restart)", + "displayName": "Statistics batch size", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "statistics.tracking.mouseDebounceTime", + "type": "number", + "value": "500", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.806Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:05.997Z", + "wizardStep": null, + "description": "Debounce time in milliseconds for reporting mouse move events", + "displayName": "Mouse debounce time", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "system.auth.ldap.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:05.998Z", + "wizardStep": null, + "description": "Require 2FA setup for LDAP login users", + "displayName": "Require 2FA for LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.ldap.bindCredentials", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.999Z", + "wizardStep": null, + "description": "LDAP bind password (changes require a restart of the server)", + "displayName": "LDAP bind password", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.bindDN", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:05.999Z", + "wizardStep": null, + "description": "LDAP bind DN (changes require a restart of the server)", + "displayName": "LDAP bind DN", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.000Z", + "wizardStep": null, + "description": "Enable LDAP login flow", + "displayName": "Enable LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchBase", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.000Z", + "wizardStep": null, + "description": "LDAP user search base (changes require a restart of the server)", + "displayName": "LDAP search base", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchFilter", + "type": "string", + "value": "(uid={{username}})", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.001Z", + "wizardStep": null, + "description": "LDAP search filter template (changes require a restart of the server)", + "displayName": "LDAP search filter", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.url", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.002Z", + "wizardStep": null, + "description": "LDAP server URL (changes require a restart of the server)", + "displayName": "LDAP server URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.local.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.002Z", + "wizardStep": null, + "description": "Require 2FA setup for local login users", + "displayName": "Require 2FA for local login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.003Z", + "wizardStep": null, + "description": "Require 2FA setup for ORCID login users", + "displayName": "Require 2FA for ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.004Z", + "wizardStep": null, + "description": "ORCID callback URL (changes require a restart of the server)", + "displayName": "ORCID callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientId", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:06.004Z", + "wizardStep": null, + "description": "ORCID OAuth client id (changes require a restart of the server)", + "displayName": "ORCID client ID", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientSecret", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:06.005Z", + "wizardStep": null, + "description": "ORCID OAuth client secret (changes require a restart of the server)", + "displayName": "ORCID client secret", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.006Z", + "wizardStep": null, + "description": "Enable ORCID login flow", + "displayName": "Enable ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.sandbox", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.006Z", + "wizardStep": null, + "description": "Use ORCID sandbox mode (changes require a restart of the server)", + "displayName": "ORCID sandbox mode", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.redirect.baseUrl", + "type": "string", + "value": "http://localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.007Z", + "wizardStep": null, + "description": "Frontend base URL for authentication redirects (login success, OAuth callback, and 2FA verification pages)", + "displayName": "Frontend base URL for auth redirects", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Auth redirects" + }, + { + "key": "system.auth.saml.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.008Z", + "wizardStep": null, + "description": "Require 2FA setup for SAML login users", + "displayName": "Require 2FA for SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.saml.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.009Z", + "wizardStep": null, + "description": "SAML callback URL (changes require a restart of the server)", + "displayName": "SAML callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.cert", + "type": "text", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:38:06.009Z", + "wizardStep": null, + "description": "SAML identity provider certificate (changes require a restart of the server)", + "displayName": "SAML IdP certificate", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.010Z", + "wizardStep": null, + "description": "Enable SAML login flow", + "displayName": "Enable SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.entryPoint", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.011Z", + "wizardStep": null, + "description": "SAML identity provider entry point (changes require a restart of the server)", + "displayName": "SAML IdP entry point", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.issuer", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:38:06.011Z", + "wizardStep": null, + "description": "SAML service provider issuer (changes require a restart of the server)", + "displayName": "SAML SP issuer", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.tokenExpiry.emailVerification", + "type": "number", + "value": "24", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.012Z", + "wizardStep": null, + "description": "Email verification token expiration time in hours", + "displayName": "Email verification token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.auth.tokenExpiry.passwordReset", + "type": "number", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.013Z", + "wizardStep": null, + "description": "Password reset token expiration time in hours", + "displayName": "Password reset token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.baseUrl", + "type": "string", + "value": "localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.013Z", + "wizardStep": "mail", + "description": "The URL of the redirection for links in emails (e.g. password reset)", + "displayName": "Base URL for emails", + "wizardOrder": 23, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "system.mailService.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.014Z", + "wizardStep": "mail", + "description": "Enable the mail service (changes require a restart of the server)", + "displayName": "Mail service enabled", + "wizardOrder": 12, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.sendMail.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.014Z", + "wizardStep": "mail", + "description": "Use the sendMail function of an unix system", + "displayName": "Sendmail enabled (prioritized over SMTP)", + "wizardOrder": 13, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.sendMail.path", + "type": "string", + "value": "/usr/sbin/sendmail", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.015Z", + "wizardStep": "mail", + "description": "The path to the sendmail binary (default: /usr/sbin/sendmail)", + "displayName": "Sendmail path", + "wizardOrder": 14, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.senderAddress", + "type": "string", + "value": "system@localhost", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.016Z", + "wizardStep": "mail", + "description": "The sender address for mails", + "displayName": "Mail sender address", + "wizardOrder": 15, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.smtp.auth.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.016Z", + "wizardStep": "mail", + "description": "Use authentication for the SMTP server", + "displayName": "SMTP auth enabled", + "wizardOrder": 20, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.pass", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.017Z", + "wizardStep": "mail", + "description": "The password for the SMTP server", + "displayName": "SMTP auth password", + "wizardOrder": 22, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.user", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.018Z", + "wizardStep": "mail", + "description": "The username for the SMTP server", + "displayName": "SMTP auth user", + "wizardOrder": 21, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.018Z", + "wizardStep": "mail", + "description": "Use an SMTP server for sending mails (sendMail must be disabled!)", + "displayName": "SMTP enabled", + "wizardOrder": 16, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.host", + "type": "string", + "value": "smtp.gmail.com", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.019Z", + "wizardStep": "mail", + "description": "The hostname of the SMTP server", + "displayName": "SMTP host", + "wizardOrder": 17, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.port", + "type": "integer", + "value": "587", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.020Z", + "wizardStep": "mail", + "description": "The port of the SMTP server", + "displayName": "SMTP port", + "wizardOrder": 18, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.secure", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.020Z", + "wizardStep": "mail", + "description": "Use a secure connection to the SMTP server", + "displayName": "SMTP secure", + "wizardOrder": 19, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "tags.recencySortingIsOn", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.483Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.021Z", + "wizardStep": null, + "description": "Indicates whether recency based sorting for annotation tags is turned on.", + "displayName": "Tag recency sorting", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "tags.tagSet.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.022Z", + "wizardStep": null, + "description": "The default tagset to use for new annotations", + "displayName": "Default tag set", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "topBar.projects.hideProjectButton", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.302Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:38:06.022Z", + "wizardStep": null, + "description": "Whether to hide the project button in the topBar", + "displayName": "Hide project button in topbar", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + } + ], + "direction": true, + "startTime": "2026-08-10T23:40:37.253Z", + "endTime": "2026-08-10T23:40:37.253Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "appSettings", + "payload": { + "logo.reBgColor": "#a934df", + "system.baseUrl": "localhost:3000", + "app.login.guest": "true", + "service.nlp.url": "http://localhost:4852", + "projects.default": "1", + "app.study.enabled": "true", + "app.register.terms": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "service.nlp.enabled": "true", + "service.nlp.timeout": "60000", + "tags.tagSet.default": "2", + "app.config.copyright": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "app.landing.linkDocs": "/docs", + "app.landing.showDocs": "true", + "app.register.enabled": "true", + "rpc.moodleAPI.apiKey": "", + "rpc.moodleAPI.apiUrl": "", + "system.auth.ldap.url": "", + "statistics.batch.size": "100", + "rpc.moodleAPI.courseID": "1", + "service.nlp.retryDelay": "10000", + "annotator.nlp.activated": "true", + "app.landing.linkProject": "https://intertext.ukp-lab.de/", + "app.landing.showProject": "true", + "system.auth.saml.issuer": "", + "tags.recencySortingIsOn": "false", + "app.landing.linkFeedback": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "app.landing.showFeedback": "false", + "app.login.forgotPassword": "true", + "app.register.requestData": "true", + "app.register.requestName": "true", + "system.auth.ldap.enabled": "false", + "system.auth.saml.enabled": "false", + "annotator.collab.response": "true", + "app.register.requestStats": "true", + "editor.edits.debounceTime": "150", + "editor.toolbar.tools.bold": "true", + "editor.toolbar.tools.font": "true", + "editor.toolbar.tools.link": "false", + "editor.toolbar.tools.size": "true", + "editor.toolbar.visibility": "true", + "email.template.assignment": "", + "modal.nlp.request.timeout": "15000", + "service.nlp.test.fallback": "true", + "system.auth.orcid.enabled": "false", + "system.auth.orcid.sandbox": "true", + "annotator.sidebar.maxWidth": "50", + "annotator.sidebar.minWidth": "400", + "app.config.consent.enabled": "true", + "editor.toolbar.tools.align": "true", + "editor.toolbar.tools.clean": "true", + "editor.toolbar.tools.color": "true", + "editor.toolbar.tools.image": "false", + "editor.toolbar.tools.video": "false", + "email.template.studyClosed": "", + "system.mailService.enabled": "true", + "editor.toolbar.tools.header": "true", + "editor.toolbar.tools.indent": "true", + "editor.toolbar.tools.italic": "true", + "editor.toolbar.tools.strike": "true", + "email.template.registration": "", + "email.template.sessionStart": "", + "email.template.twoFactorOtp": "", + "email.template.verification": "", + "system.auth.ldap.searchBase": "", + "system.auth.saml.entryPoint": "", + "editor.toolbar.tools.formula": "false", + "email.template.passwordReset": "", + "email.template.sessionFinish": "", + "system.auth.redirect.baseUrl": "http://localhost:3000", + "system.auth.saml.callbackUrl": "", + "system.mailService.smtp.host": "smtp.gmail.com", + "system.mailService.smtp.port": "587", + "annotator.nlp.request.timeout": "15000", + "editor.edits.historyGroupTime": "60000", + "modal.nlp.rotation_timer.long": "120000", + "system.auth.ldap.2fa.required": "false", + "system.auth.ldap.searchFilter": "(uid={{username}})", + "system.auth.orcid.callbackUrl": "", + "system.auth.saml.2fa.required": "false", + "app.register.emailVerification": "true", + "editor.toolbar.tools.checkList": "true", + "editor.toolbar.tools.direction": "true", + "editor.toolbar.tools.subscript": "true", + "editor.toolbar.tools.underline": "true", + "modal.nlp.rotation_timer.short": "30000", + "rpc.moodleAPI.showInput.apiKey": "true", + "rpc.moodleAPI.showInput.apiUrl": "true", + "system.auth.local.2fa.required": "false", + "system.auth.orcid.2fa.required": "false", + "system.mailService.smtp.secure": "true", + "editor.edits.showHistoryForUser": "false", + "editor.toolbar.showHTMLDownload": "true", + "editor.toolbar.tools.background": "true", + "editor.toolbar.tools.blockquote": "true", + "editor.toolbar.tools.code-block": "true", + "email.template.submissionUpload": "", + "system.mailService.smtp.enabled": "true", + "annotator.comments.votes.enabled": "true", + "app.login.passwordResetRateLimit": "5", + "app.register.acceptStats.default": "true", + "editor.document.showButtonCreate": "true", + "editor.toolbar.tools.orderedList": "true", + "editor.toolbar.tools.superscript": "true", + "rpc.moodleAPI.showInput.courseID": "true", + "system.mailService.sendMail.path": "/usr/sbin/sendmail", + "system.mailService.senderAddress": "system@localhost", + "system.mailService.smtp.auth.pass": "", + "system.mailService.smtp.auth.user": "", + "topBar.projects.hideProjectButton": "false", + "editor.toolbar.tools.unorderedList": "true", + "annotator.comments.votes.onlyUpvote": "false", + "email.template.passwordResetSuccess": "", + "system.mailService.sendMail.enabled": "true", + "system.mailService.smtp.auth.enabled": "true", + "annotator.nlp.summarization.activated": "true", + "annotator.nlp.summarization.maxLength": "30", + "annotator.nlp.summarization.minLength": "10", + "annotator.nlp.summarization.skillName": "summarization", + "editor.document.showButtonPDFDownload": "true", + "statistics.tracking.mouseDebounceTime": "500", + "system.auth.tokenExpiry.passwordReset": "1", + "annotator.nlp.summarization.annoLength": "10", + "app.register.acceptDataSharing.default": "true", + "dashboard.navigation.component.default": "Home", + "editor.document.showButtonHTMLDownload": "true", + "app.register.emailVerificationRateLimit": "2", + "editor.document.showButtonDeltaDownload": "false", + "system.auth.tokenExpiry.emailVerification": "24", + "annotator.nlp.sentiment_analysis.activated": "false", + "email.template.submissionUploadConfirmation": "", + "annotator.download.enabledBeforeStudyClosing": "true", + "annotator.comments.defaultNumsShown.levelZero": "3", + "annotator.comments.defaultNumsShown.levelOneUp": "1" + }, + "direction": false, + "startTime": "2026-08-10T23:40:37.523Z", + "endTime": "2026-08-10T23:40:37.523Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1260, + "clientY": 97, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:40:37.549Z", + "endTime": "2026-08-10T23:40:37.549Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingData", + "payload": [ + { + "key": "annotator.collab.response", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.258Z", + "wizardStep": null, + "description": "Whether the comment response functionality is activated.", + "displayName": "Comment replies", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.275Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request.", + "displayName": "NLP request timeout", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "app.login.passwordResetRateLimit", + "type": "number", + "value": "5", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.305Z", + "wizardStep": null, + "description": "Rate limit in minutes for password reset emails to prevent spam", + "displayName": "Password reset rate limit", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "editor.edits.debounceTime", + "type": "number", + "value": "150", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.327Z", + "wizardStep": null, + "description": "Delay time in milliseconds before processing edits", + "displayName": "Edit debounce time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.historyGroupTime", + "type": "integer", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.328Z", + "wizardStep": null, + "description": "The edits will be merged into groups when there is less than this time between them", + "displayName": "Edit history group time", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.edits.showHistoryForUser", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.158Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.330Z", + "wizardStep": null, + "description": "Show the history of edits for all users (default only admins)", + "displayName": "Show edit history to users", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Edit history" + }, + { + "key": "editor.toolbar.showHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.331Z", + "wizardStep": null, + "description": "Show download button for the html document", + "displayName": "Toolbar HTML download", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.background", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.333Z", + "wizardStep": null, + "description": "Text background color in the toolbar", + "displayName": "Toolbar background", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.blockquote", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.334Z", + "wizardStep": null, + "description": "Blockquote in the toolbar", + "displayName": "Toolbar blockquote", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.bold", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.336Z", + "wizardStep": null, + "description": "Bold text in the toolbar", + "displayName": "Toolbar bold", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.checkList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.337Z", + "wizardStep": null, + "description": "Check list in the toolbar", + "displayName": "Toolbar check list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.clean", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.338Z", + "wizardStep": null, + "description": "Clean tool in the toolbar", + "displayName": "Toolbar clean", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.code-block", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.339Z", + "wizardStep": null, + "description": "Code-block in the toolbar", + "displayName": "Toolbar code-block", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.color", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.340Z", + "wizardStep": null, + "description": "Text color in the toolbar", + "displayName": "Toolbar color", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.direction", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.342Z", + "wizardStep": null, + "description": "Text direction in the toolbar", + "displayName": "Toolbar direction", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.font", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.343Z", + "wizardStep": null, + "description": "Font tool in the toolbar", + "displayName": "Toolbar font", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.formula", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.344Z", + "wizardStep": null, + "description": "Formula in the toolbar", + "displayName": "Toolbar formula", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.header", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.346Z", + "wizardStep": null, + "description": "Header in the toolbar", + "displayName": "Toolbar header", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.image", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.347Z", + "wizardStep": null, + "description": "Image tool in the toolbar", + "displayName": "Toolbar image", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.indent", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.348Z", + "wizardStep": null, + "description": "Indent in the toolbar", + "displayName": "Toolbar indent", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.italic", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.350Z", + "wizardStep": null, + "description": "Italic text in the toolbar", + "displayName": "Toolbar italic", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.link", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.351Z", + "wizardStep": null, + "description": "Link tool in the toolbar", + "displayName": "Toolbar link", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.orderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.352Z", + "wizardStep": null, + "description": "Ordered list in the toolbar", + "displayName": "Toolbar ordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.size", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.354Z", + "wizardStep": null, + "description": "Font size in the toolbar", + "displayName": "Toolbar size", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.strike", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.355Z", + "wizardStep": null, + "description": "Strike through text in the toolbar", + "displayName": "Toolbar strike", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.subscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.356Z", + "wizardStep": null, + "description": " Subscript in the toolbar", + "displayName": "Toolbar subscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.superscript", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.357Z", + "wizardStep": null, + "description": "Superscript in the toolbar", + "displayName": "Toolbar superscript", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.underline", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.359Z", + "wizardStep": null, + "description": "Underline text in the toolbar", + "displayName": "Toolbar underline", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.unorderedList", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.360Z", + "wizardStep": null, + "description": "Bullet list in the toolbar", + "displayName": "Toolbar unordered list", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.tools.video", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.362Z", + "wizardStep": null, + "description": "Video tool in the toolbar", + "displayName": "Toolbar video", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "editor.toolbar.visibility", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.363Z", + "wizardStep": null, + "description": "Make toolbar in the editor visible", + "displayName": "Toolbar visibility", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "email.template.assignment", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.366Z", + "wizardStep": null, + "description": "Template type for assignment notification emails (Email - Assignment). Leave empty to use default hardcoded email.", + "displayName": "Assignment notification email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordReset", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.369Z", + "wizardStep": null, + "description": "Template type for password reset emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Password reset email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.passwordResetSuccess", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.370Z", + "wizardStep": null, + "description": "Template type for password reset success emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Password reset success email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.registration", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.371Z", + "wizardStep": null, + "description": "Template type for registration welcome emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Registration welcome email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionFinish", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.372Z", + "wizardStep": null, + "description": "Template type for session finish emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session finish email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.sessionStart", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.374Z", + "wizardStep": null, + "description": "Template type for session start emails (Email - Study Session). Leave empty to use default hardcoded email.", + "displayName": "Study session start email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.studyClosed", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.375Z", + "wizardStep": null, + "description": "Template type for study closed emails (Email - Study Close). Leave empty to use default hardcoded email.", + "displayName": "Study closed email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "annotator.comments.votes.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.269Z", + "wizardStep": null, + "description": "Enable voting on comments", + "displayName": "Voting on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.comments.votes.onlyUpvote", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.128Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.271Z", + "wizardStep": null, + "description": "Only allow upvote on comments", + "displayName": "Only upvote on comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "app.register.acceptDataSharing.default", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.307Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to share data during registration.", + "displayName": "Default accept data sharing", + "wizardOrder": 30, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "email.template.submissionUpload", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.376Z", + "wizardStep": null, + "description": "Template type for assignment submission upload/reupload emails to the assignment owner (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (assignment owner)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.submissionUploadConfirmation", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.202Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.378Z", + "wizardStep": null, + "description": "Template for submission upload confirmation to the submitter (Email - Submission upload). Leave empty to use default email.", + "displayName": "Submission upload (submitter)", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.twoFactorOtp", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:49.180Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.380Z", + "wizardStep": null, + "description": "Template type for two-factor authentication code emails (Email - General). Leave empty to use the fallback email from disk.", + "displayName": "Two-factor OTP email", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "email.template.verification", + "type": "number", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.559Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.381Z", + "wizardStep": null, + "description": "Template type for email verification emails (Email - General). Leave empty to use default hardcoded email.", + "displayName": "Email verification", + "wizardOrder": null, + "displayGroup": "Mail", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email templates" + }, + { + "key": "logo.reBgColor", + "type": "color", + "value": "#a934df", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.757Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.382Z", + "wizardStep": null, + "description": "Background colour for the RE section of the logo", + "displayName": "Logo RE section background colour", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Branding" + }, + { + "key": "modal.nlp.request.timeout", + "type": "integer", + "value": "15000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.201Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.385Z", + "wizardStep": null, + "description": "The timeout for the NLP Service request in modal (frontend, ms)", + "displayName": "Modal NLP request timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.long", + "type": "integer", + "value": "120000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.387Z", + "wizardStep": null, + "description": "Long rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation long", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "modal.nlp.rotation_timer.short", + "type": "integer", + "value": "30000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.431Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.388Z", + "wizardStep": null, + "description": "Short rotation timer duration in milliseconds.", + "displayName": "Modal NLP rotation short", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Modal NLP" + }, + { + "key": "projects.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.253Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.390Z", + "wizardStep": null, + "description": "The default project to use for new documents or studies", + "displayName": "Default project", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + }, + { + "key": "rpc.moodleAPI.apiKey", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.391Z", + "wizardStep": "moodle", + "description": "The Moodle API key for the connection", + "displayName": "Moodle API key", + "wizardOrder": 32, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.apiUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.393Z", + "wizardStep": "moodle", + "description": "The URL of the Moodle API", + "displayName": "Moodle API URL", + "wizardOrder": 31, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Connection" + }, + { + "key": "rpc.moodleAPI.courseID", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.396Z", + "wizardStep": "moodle", + "description": "The ID of the course in Moodle from which to fetch the data", + "displayName": "Moodle course ID", + "wizardOrder": 33, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Course" + }, + { + "key": "rpc.moodleAPI.showInput.apiKey", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.397Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API key", + "displayName": "Show Moodle API key input", + "wizardOrder": 35, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.apiUrl", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.399Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the API URL", + "displayName": "Show Moodle API URL input", + "wizardOrder": 34, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "rpc.moodleAPI.showInput.courseID", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.052Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.401Z", + "wizardStep": "moodle", + "description": "Show the input field to allow changing the course ID", + "displayName": "Show Moodle course ID input", + "wizardOrder": 36, + "displayGroup": "Moodle", + "showInWizard": true, + "wizardStepId": 5, + "requiredInWizard": false, + "displaySubsection": "Show inputs" + }, + { + "key": "service.nlp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.404Z", + "wizardStep": null, + "description": "Whether to automatically connect to the NLP service", + "displayName": "Enable NLP features", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.retryDelay", + "type": "number", + "value": "10000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.405Z", + "wizardStep": null, + "description": "The delay between retries if connection errors occurs for the NLP service (ms)", + "displayName": "NLP retry delay", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.test.fallback", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.407Z", + "wizardStep": null, + "description": "Whether to use the fallback NLP service if the main service is not available, files on local file system are used as fallback and return examples", + "displayName": "NLP test fallback", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.timeout", + "type": "number", + "value": "60000", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.409Z", + "wizardStep": null, + "description": "The timeout between connection attempts for the NLP service (ms)", + "displayName": "NLP timeout", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "service.nlp.url", + "type": null, + "value": "http://localhost:4852", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.411Z", + "wizardStep": null, + "description": "The URL of the NLP service", + "displayName": "NLP service URL", + "wizardOrder": null, + "displayGroup": "AI & NLP", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP service" + }, + { + "key": "statistics.batch.size", + "type": "number", + "value": "100", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.339Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.413Z", + "wizardStep": null, + "description": "Batch size for buffering statistics events before flushing to DB (requires server restart)", + "displayName": "Statistics batch size", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "statistics.tracking.mouseDebounceTime", + "type": "number", + "value": "500", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.806Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.415Z", + "wizardStep": null, + "description": "Debounce time in milliseconds for reporting mouse move events", + "displayName": "Mouse debounce time", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "system.auth.ldap.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.417Z", + "wizardStep": null, + "description": "Require 2FA setup for LDAP login users", + "displayName": "Require 2FA for LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.ldap.bindCredentials", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.419Z", + "wizardStep": null, + "description": "LDAP bind password (changes require a restart of the server)", + "displayName": "LDAP bind password", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.bindDN", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.421Z", + "wizardStep": null, + "description": "LDAP bind DN (changes require a restart of the server)", + "displayName": "LDAP bind DN", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchBase", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.424Z", + "wizardStep": null, + "description": "LDAP user search base (changes require a restart of the server)", + "displayName": "LDAP search base", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.searchFilter", + "type": "string", + "value": "(uid={{username}})", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.426Z", + "wizardStep": null, + "description": "LDAP search filter template (changes require a restart of the server)", + "displayName": "LDAP search filter", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.ldap.url", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.429Z", + "wizardStep": null, + "description": "LDAP server URL (changes require a restart of the server)", + "displayName": "LDAP server URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "annotator.comments.defaultNumsShown.levelOneUp", + "type": "integer", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.263Z", + "wizardStep": null, + "description": "How many 1st or higher level comments are shown by default.", + "displayName": "Level 1+ comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "app.config.consent.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.135Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.289Z", + "wizardStep": "general", + "description": "Enable consent updating feature", + "displayName": "Consent update feature", + "wizardOrder": 2, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.config.copyright", + "type": null, + "value": "Copyright © 2022-2024 Team Care UKP Lab (TU Darmstadt)", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.290Z", + "wizardStep": "general", + "description": "The copyright text to display on the login page", + "displayName": "Copyright notice", + "wizardOrder": 1, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Copyright and consent" + }, + { + "key": "app.login.forgotPassword", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.303Z", + "wizardStep": "general", + "description": "Whether to enable the forgot password functionality or not", + "displayName": "Forgot password", + "wizardOrder": 4, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "app.register.acceptStats.default", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.308Z", + "wizardStep": "registration", + "description": "The default value of whether the user agrees to tracking during registration.", + "displayName": "Default accept tracking", + "wizardOrder": 29, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Consent options" + }, + { + "key": "app.register.emailVerification", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.309Z", + "wizardStep": "mail", + "description": "Whether to require email verification for new user accounts", + "displayName": "Email verification required", + "wizardOrder": 24, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "app.register.emailVerificationRateLimit", + "type": "number", + "value": "2", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.310Z", + "wizardStep": null, + "description": "Rate limit in minutes for email verification emails to prevent spam", + "displayName": "Email verification rate limit", + "wizardOrder": null, + "displayGroup": "Registration", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Email verification rate limit" + }, + { + "key": "app.register.terms", + "type": "edits", + "value": "{\"ops\":[{\"insert\":\"Einwilligungserklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Ich willige ein, dass meine personenbezogenen Daten (z. B. Name, Benutzerkennung, eingereichte Inhalte, Bewertungen, Interaktionen und IP-Adresse) zum Zweck der Durchführung der Anwendung verarbeitet werden dürfen. Zusätzlich willige ich in die Verarbeitung meiner personenbezogenen Daten für Forschungszwecke ein, sofern ich separat zugestimmt habe.\\n\\n\"},{\"insert\":\"Informationen und Datenschutzerklärung\\n\",\"attributes\":{\"header\":2}},{\"insert\":\"Die Datenverarbeitung erfolgt unter Beachtung geltender Datenschutzgesetze (z. B. DSGVO). Alle Daten werden ausschließlich zu den im Informationsblatt beschriebenen Zwecken verwendet.\\n\\n\"},{\"insert\":\"1. Bezeichnung der Verarbeitungstätigkeit\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verarbeitung personenbezogener Daten zur Durchführung der Anwendung und optional zur wissenschaftlichen Auswertung von Nutzungsverhalten und Feedback.\\n\\n\"},{\"insert\":\"2. Datenverantwortlicher\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Verantwortliche Organisation:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"[Name der Organisation]\\n[Adresse]\\n[E-Mail-Adresse oder Kontaktlink]\\n\\n\"},{\"insert\":\"3. Datenschutzbeauftragter\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"[Name/Titel des Datenschutzbeauftragten]\\n[Organisation oder Kontaktstelle]\\n[Adresse]\\n[E-Mail oder Datenschutzlink]\\n\\n\"},{\"insert\":\"4. Zweck(e) und Rechtsgrundlage(n) der Verarbeitung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Zwecke:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Bewertung und Durchführung der Anwendung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Eindeutige Zuordnung über Benutzerkennungen\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Sicherstellung der Kontosicherheit durch Zwei-Faktor-Authentifizierung (2FA), einschließlich Versand einmaliger Verifizierungscodes per E-Mail\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Nutzung anonymisierter Daten für Forschung und Publikation (bei Zustimmung)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Analyse des Nutzungsverhaltens (z. B. Klicks, Navigation, Zeitstempel)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technisch notwendige IP-Verarbeitung (nicht gespeichert)\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\nRechtsgrundlage:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"Art. 6 Abs. 1 lit. a DSGVO (Einwilligung)\\n\\n\"},{\"insert\":\"4a. Hinweise zur E-Mail-Verifizierung (2FA)\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Wenn E-Mail-2FA aktiviert ist, werden bei der Anmeldung einmalige Sicherheitscodes an die hinterlegte E-Mail-Adresse gesendet.\\n\"},{\"insert\":\"Verarbeitet werden dabei insbesondere:\\n\",\"attributes\":{\"bold\":true}},{\"insert\":\"E-Mail-Adresse\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Zeitpunkt des Versands und Ablaufzeitpunkt des Codes\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Technische Metadaten zur Missbrauchs- und Fehlerprävention\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Die Codes werden ausschließlich zur Anmeldung und Kontosicherheit verwendet, nicht für Werbung oder Newsletter.\\n\\n\"},{\"insert\":\"5. Dauer der Speicherung\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Personenbezogene Daten werden für einen definierten Zeitraum (z. B. zwei Jahre nach Abschluss) gespeichert und anschließend gelöscht oder anonymisiert.\\n\\n\"},{\"insert\":\"6. Rechte der betroffenen Personen\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Recht auf Auskunft\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Berichtigung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Löschung oder Einschränkung\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Widerspruch\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Recht auf Datenübertragbarkeit\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"Beschwerderecht bei einer Aufsichtsbehörde\\n\",\"attributes\":{\"list\":\"bullet\"}},{\"insert\":\"\\n\"},{\"insert\":\"7. Widerrufsrecht\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Die Einwilligung kann jederzeit widerrufen werden. Die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung bleibt unberührt. Nach Anonymisierung ist keine nachträgliche Löschung mehr möglich.\\n\\n\"},{\"insert\":\"8. Veröffentlichung anonymisierter Daten\\n\",\"attributes\":{\"header\":3}},{\"insert\":\"Anonymisierte Ergebnisse können in wissenschaftlichen Publikationen veröffentlicht werden. Die Daten werden unter einer offenen Lizenz (z. B. CC BY-NC 4.0) in geeigneten Repositorien veröffentlicht.\\n\"}]}", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.316Z", + "wizardStep": "general", + "description": "Terms and conditions text to display during registration", + "displayName": "Terms and conditions", + "wizardOrder": 5, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Terms and conditions" + }, + { + "key": "dashboard.navigation.component.default", + "type": null, + "value": "Home", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.321Z", + "wizardStep": null, + "description": "The default component to display in the dashboard", + "displayName": "Default dashboard component", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Navigation and dashboard" + }, + { + "key": "editor.document.showButtonCreate", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.322Z", + "wizardStep": null, + "description": "Show create button in dashboard to create a new html document", + "displayName": "Show create document button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonDeltaDownload", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.323Z", + "wizardStep": null, + "description": "Show download button for document deltas (edits)", + "displayName": "Show delta download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonHTMLDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.324Z", + "wizardStep": null, + "description": "Show download button for document HTML (edits)", + "displayName": "Show HTML download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "editor.document.showButtonPDFDownload", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.207Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.326Z", + "wizardStep": null, + "description": "Show download button for PDF documents with annotations", + "displayName": "Show PDF download button", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Document buttons" + }, + { + "key": "annotator.comments.defaultNumsShown.levelZero", + "type": "integer", + "value": "3", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.439Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.265Z", + "wizardStep": null, + "description": "How many 0-level comments are shown by default when annotation responses are shown", + "displayName": "Level 0 comments shown by default", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Comments" + }, + { + "key": "annotator.nlp.sentiment_analysis.activated", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.423Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.276Z", + "wizardStep": null, + "description": "Indicates whether sentiment analysis is activated in the annotation view.", + "displayName": "Sentiment analysis in comments", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.annoLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.280Z", + "wizardStep": null, + "description": "The minimum length of the annotation to generate a summary.", + "displayName": "Summarization annotation length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "app.landing.linkFeedback", + "type": null, + "value": "https://docs.google.com/forms/d/e/1FAIpQLSfS6Ju1FdvrErGvtqLXge5i6OYUHpbSXEFcXHKA0z_kTvMotg/viewform?usp=sf_link", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.293Z", + "wizardStep": "general", + "description": "The URL to the official feedback page", + "displayName": "Feedback form URL", + "wizardOrder": 11, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showProject", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.302Z", + "wizardStep": "general", + "description": "Whether to show the official project page link on the landing page", + "displayName": "Show project link", + "wizardOrder": 8, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.register.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.614Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.312Z", + "wizardStep": "registration", + "description": "Whether self-registration via the public register page is allowed.", + "displayName": "Enable self-registration", + "wizardOrder": 25, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Enable registration" + }, + { + "key": "app.register.requestData", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.831Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.313Z", + "wizardStep": "registration", + "description": "Indicates if the option for data sharing during registration is enabled.", + "displayName": "Request data sharing at registration", + "wizardOrder": 28, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestName", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.314Z", + "wizardStep": "registration", + "description": "Whether to request the user's name during registration", + "displayName": "Request name at registration", + "wizardOrder": 26, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.register.requestStats", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.315Z", + "wizardStep": "registration", + "description": "Whether to request the user's statistics approval during registration", + "displayName": "Request usage-stats consent at registration", + "wizardOrder": 27, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 4, + "requiredInWizard": false, + "displaySubsection": "Information requested at registration" + }, + { + "key": "app.setup.wizardCompleted", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.318Z", + "wizardStep": null, + "description": "Internal setup wizard completion state.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.setup.wizardCurrentStep", + "type": "integer", + "value": "0", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.821Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.319Z", + "wizardStep": null, + "description": "Internal setup wizard current step.", + "displayName": null, + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": null + }, + { + "key": "app.study.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.320Z", + "wizardStep": null, + "description": "Whether to enable the user study functionality", + "displayName": "Enable study mode", + "wizardOrder": null, + "displayGroup": null, + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Study mode" + }, + { + "key": "annotator.download.enabledBeforeStudyClosing", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.213Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.273Z", + "wizardStep": null, + "description": "Whether annotations can be downloaded before a study is closed", + "displayName": "Download before study closing", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Download" + }, + { + "key": "annotator.nlp.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.274Z", + "wizardStep": null, + "description": "Indicates whether NLP support is activated in the annotation view.", + "displayName": "NLP in annotation view", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.activated", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.278Z", + "wizardStep": null, + "description": "Indicates whether summarization is activated.", + "displayName": "Summarization activated", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.maxLength", + "type": "integer", + "value": "30", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.281Z", + "wizardStep": null, + "description": "The maximum length of the summary (in tokens of the model).", + "displayName": "Summarization max length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.minLength", + "type": "integer", + "value": "10", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.282Z", + "wizardStep": null, + "description": "The minimum length of the summary (in tokens of the model).", + "displayName": "Summarization min length", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.nlp.summarization.skillName", + "type": null, + "value": "summarization", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.642Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.285Z", + "wizardStep": null, + "description": "The skill name to use for summarization.", + "displayName": "Summarization skill name", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "NLP in annotations" + }, + { + "key": "annotator.sidebar.maxWidth", + "type": "integer", + "value": "50", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.286Z", + "wizardStep": null, + "description": "The maximum width of the sidebar (percentage of the screen, in %)", + "displayName": "Sidebar max width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "annotator.sidebar.minWidth", + "type": "integer", + "value": "400", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.706Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.287Z", + "wizardStep": null, + "description": "The minimum width of the sidebar (in px)", + "displayName": "Sidebar min width", + "wizardOrder": null, + "displayGroup": "Annotations", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Sidebar" + }, + { + "key": "app.landing.linkDocs", + "type": null, + "value": "/docs", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.291Z", + "wizardStep": "general", + "description": "The URL to the documentation", + "displayName": "Documentation URL", + "wizardOrder": 7, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": true, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.linkProject", + "type": null, + "value": "https://intertext.ukp-lab.de/", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.295Z", + "wizardStep": "general", + "description": "The URL to the official project page", + "displayName": "Project page URL", + "wizardOrder": 9, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showDocs", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.297Z", + "wizardStep": "general", + "description": "Whether to show the documentation links on the landing page", + "displayName": "Show documentation link", + "wizardOrder": 6, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.landing.showFeedback", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.299Z", + "wizardStep": "general", + "description": "Whether to show the official feedback link on the landing page", + "displayName": "Show feedback link", + "wizardOrder": 10, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Landing page links" + }, + { + "key": "app.login.guest", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.304Z", + "wizardStep": "general", + "description": "Whether to allow guest logins", + "displayName": "Allow guest login", + "wizardOrder": 3, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 2, + "requiredInWizard": false, + "displaySubsection": "Login options" + }, + { + "key": "editor.toolbar.tools.align", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.721Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.332Z", + "wizardStep": null, + "description": "Text alignment in the toolbar", + "displayName": "Toolbar align", + "wizardOrder": null, + "displayGroup": "Text Editor", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Toolbar" + }, + { + "key": "system.auth.ldap.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.422Z", + "wizardStep": null, + "description": "Enable LDAP login flow", + "displayName": "Enable LDAP login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "LDAP login" + }, + { + "key": "system.auth.local.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.430Z", + "wizardStep": null, + "description": "Require 2FA setup for local login users", + "displayName": "Require 2FA for local login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.433Z", + "wizardStep": null, + "description": "Require 2FA setup for ORCID login users", + "displayName": "Require 2FA for ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.orcid.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.435Z", + "wizardStep": null, + "description": "ORCID callback URL (changes require a restart of the server)", + "displayName": "ORCID callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientId", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.437Z", + "wizardStep": null, + "description": "ORCID OAuth client id (changes require a restart of the server)", + "displayName": "ORCID client ID", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.clientSecret", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.439Z", + "wizardStep": null, + "description": "ORCID OAuth client secret (changes require a restart of the server)", + "displayName": "ORCID client secret", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.440Z", + "wizardStep": null, + "description": "Enable ORCID login flow", + "displayName": "Enable ORCID login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.orcid.sandbox", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.442Z", + "wizardStep": null, + "description": "Use ORCID sandbox mode (changes require a restart of the server)", + "displayName": "ORCID sandbox mode", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "ORCID login" + }, + { + "key": "system.auth.redirect.baseUrl", + "type": "string", + "value": "http://localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.444Z", + "wizardStep": null, + "description": "Frontend base URL for authentication redirects (login success, OAuth callback, and 2FA verification pages)", + "displayName": "Frontend base URL for auth redirects", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Auth redirects" + }, + { + "key": "system.auth.saml.2fa.required", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.446Z", + "wizardStep": null, + "description": "Require 2FA setup for SAML login users", + "displayName": "Require 2FA for SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Two-factor authentication" + }, + { + "key": "system.auth.saml.callbackUrl", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.447Z", + "wizardStep": null, + "description": "SAML callback URL (changes require a restart of the server)", + "displayName": "SAML callback URL", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.cert", + "type": "text", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": true, + "updatedAt": "2026-08-10T23:40:37.449Z", + "wizardStep": null, + "description": "SAML identity provider certificate (changes require a restart of the server)", + "displayName": "SAML IdP certificate", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.enabled", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.451Z", + "wizardStep": null, + "description": "Enable SAML login flow", + "displayName": "Enable SAML login", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.entryPoint", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.453Z", + "wizardStep": null, + "description": "SAML identity provider entry point (changes require a restart of the server)", + "displayName": "SAML IdP entry point", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.saml.issuer", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.811Z", + "deletedAt": null, + "onlyAdmin": null, + "updatedAt": "2026-08-10T23:40:37.455Z", + "wizardStep": null, + "description": "SAML service provider issuer (changes require a restart of the server)", + "displayName": "SAML SP issuer", + "wizardOrder": null, + "displayGroup": "General", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "SAML login" + }, + { + "key": "system.auth.tokenExpiry.emailVerification", + "type": "number", + "value": "24", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.456Z", + "wizardStep": null, + "description": "Email verification token expiration time in hours", + "displayName": "Email verification token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.auth.tokenExpiry.passwordReset", + "type": "number", + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.458Z", + "wizardStep": null, + "description": "Password reset token expiration time in hours", + "displayName": "Password reset token expiry", + "wizardOrder": null, + "displayGroup": "System", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Token expiry" + }, + { + "key": "system.baseUrl", + "type": "string", + "value": "localhost:3000", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.361Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.460Z", + "wizardStep": "mail", + "description": "The URL of the redirection for links in emails (e.g. password reset)", + "displayName": "Base URL for emails", + "wizardOrder": 23, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Base URL and verification" + }, + { + "key": "system.mailService.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.462Z", + "wizardStep": "mail", + "description": "Enable the mail service (changes require a restart of the server)", + "displayName": "Mail service enabled", + "wizardOrder": 12, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.sendMail.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.465Z", + "wizardStep": "mail", + "description": "Use the sendMail function of an unix system", + "displayName": "Sendmail enabled (prioritized over SMTP)", + "wizardOrder": 13, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.sendMail.path", + "type": "string", + "value": "/usr/sbin/sendmail", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.467Z", + "wizardStep": "mail", + "description": "The path to the sendmail binary (default: /usr/sbin/sendmail)", + "displayName": "Sendmail path", + "wizardOrder": 14, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Sendmail" + }, + { + "key": "system.mailService.senderAddress", + "type": "string", + "value": "system@localhost", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.470Z", + "wizardStep": "mail", + "description": "The sender address for mails", + "displayName": "Mail sender address", + "wizardOrder": 15, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "Mail service" + }, + { + "key": "system.mailService.smtp.auth.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.473Z", + "wizardStep": "mail", + "description": "Use authentication for the SMTP server", + "displayName": "SMTP auth enabled", + "wizardOrder": 20, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.pass", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.475Z", + "wizardStep": "mail", + "description": "The password for the SMTP server", + "displayName": "SMTP auth password", + "wizardOrder": 22, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.auth.user", + "type": "string", + "value": "", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.478Z", + "wizardStep": "mail", + "description": "The username for the SMTP server", + "displayName": "SMTP auth user", + "wizardOrder": 21, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.enabled", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.480Z", + "wizardStep": "mail", + "description": "Use an SMTP server for sending mails (sendMail must be disabled!)", + "displayName": "SMTP enabled", + "wizardOrder": 16, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.host", + "type": "string", + "value": "smtp.gmail.com", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.482Z", + "wizardStep": "mail", + "description": "The hostname of the SMTP server", + "displayName": "SMTP host", + "wizardOrder": 17, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.port", + "type": "integer", + "value": "587", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.485Z", + "wizardStep": "mail", + "description": "The port of the SMTP server", + "displayName": "SMTP port", + "wizardOrder": 18, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "system.mailService.smtp.secure", + "type": "boolean", + "value": "true", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.353Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.489Z", + "wizardStep": "mail", + "description": "Use a secure connection to the SMTP server", + "displayName": "SMTP secure", + "wizardOrder": 19, + "displayGroup": null, + "showInWizard": true, + "wizardStepId": 3, + "requiredInWizard": false, + "displaySubsection": "SMTP" + }, + { + "key": "tags.recencySortingIsOn", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.483Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.491Z", + "wizardStep": null, + "description": "Indicates whether recency based sorting for annotation tags is turned on.", + "displayName": "Tag recency sorting", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "tags.tagSet.default", + "type": null, + "value": "1", + "deleted": false, + "createdAt": "2026-08-10T22:35:47.631Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.493Z", + "wizardStep": null, + "description": "The default tagset to use for new annotations", + "displayName": "Default tag set", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Statistics and tags" + }, + { + "key": "topBar.projects.hideProjectButton", + "type": "boolean", + "value": "false", + "deleted": false, + "createdAt": "2026-08-10T22:35:48.302Z", + "deletedAt": null, + "onlyAdmin": false, + "updatedAt": "2026-08-10T23:40:37.495Z", + "wizardStep": null, + "description": "Whether to hide the project button in the topBar", + "displayName": "Hide project button in topbar", + "wizardOrder": null, + "displayGroup": "Interface", + "showInWizard": false, + "wizardStepId": null, + "requiredInWizard": false, + "displaySubsection": "Projects" + } + ], + "direction": false, + "startTime": "2026-08-10T23:40:37.554Z", + "endTime": "2026-08-10T23:40:37.554Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1145, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:40:39.134Z", + "endTime": "2026-08-10T23:40:39.134Z" + }, + { + "recordingId": 20, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:40:39.254Z", + "endTime": "2026-08-10T23:40:39.254Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/360-admin-logs.json b/backend/tests/regression_stories/360-admin-logs.json new file mode 100644 index 000000000..b2a02f4bf --- /dev/null +++ b/backend/tests/regression_stories/360-admin-logs.json @@ -0,0 +1,481 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:27.866Z", + "traceCount": 16, + "recording": { + "name": "360-admin-logs", + "status": "finished", + "startTime": "2026-08-10T23:41:05.298Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:41:15.666Z" + }, + "traces": [ + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 21, + "name": "Recording 8/11/2026, 1:41:05 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:41:05.299Z", + "startTime": "2026-08-10T23:41:05.298Z", + "updatedAt": "2026-08-10T23:41:05.299Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:41:05.307Z", + "endTime": "2026-08-10T23:41:05.307Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:41:06.451Z", + "endTime": "2026-08-10T23:41:06.451Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/logs", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:41:08.363Z", + "endTime": "2026-08-10T23:41:08.363Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "58289591-16ab-4623-8614-b78d9e37a6cd", + "direction": true, + "startTime": "2026-08-10T23:41:08.374Z", + "endTime": "2026-08-10T23:41:08.374Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "e97d4ae1-aeac-4c81-bf63-d6dac3d8c357", + "direction": true, + "startTime": "2026-08-10T23:41:08.375Z", + "endTime": "2026-08-10T23:41:08.375Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "0e300a8a-eeac-4b2f-9673-83d27bb97f28", + "direction": true, + "startTime": "2026-08-10T23:41:08.375Z", + "endTime": "2026-08-10T23:41:08.375Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "a3f0c040-d071-4d42-8c5b-7225f6a84b25", + "direction": true, + "startTime": "2026-08-10T23:41:08.376Z", + "endTime": "2026-08-10T23:41:08.376Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "03759e5b-3e69-495e-b87b-7a1bd37b86fd", + "direction": true, + "startTime": "2026-08-10T23:41:08.376Z", + "endTime": "2026-08-10T23:41:08.376Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "a2714fec-293f-47d1-97e2-d4a0ba7c1080", + "direction": true, + "startTime": "2026-08-10T23:41:08.376Z", + "endTime": "2026-08-10T23:41:08.376Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "logGetAll", + "payload": { + "page": 0 + }, + "direction": true, + "startTime": "2026-08-10T23:41:08.435Z", + "endTime": "2026-08-10T23:41:08.435Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "logGetAll", + "payload": { + "page": 0, + "limit": 10, + "order": null, + "filter": {} + }, + "direction": true, + "startTime": "2026-08-10T23:41:08.440Z", + "endTime": "2026-08-10T23:41:08.440Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "logAll", + "payload": { + "rows": [ + { + "id": 59, + "level": "info", + "userId": null, + "deleted": false, + "message": "pg_stat_activity snapshot", + "service": "webServer", + "createdAt": "2026-08-10T23:40:59.133Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:40:59.133Z", + "updatedAt": "2026-08-10T23:40:59.133Z" + }, + { + "id": 58, + "level": "info", + "userId": null, + "deleted": false, + "message": "Using sendmail transport", + "service": "webServer", + "createdAt": "2026-08-10T23:40:37.509Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:40:37.509Z", + "updatedAt": "2026-08-10T23:40:37.509Z" + }, + { + "id": 57, + "level": "info", + "userId": null, + "deleted": false, + "message": "Using sendmail transport", + "service": "webServer", + "createdAt": "2026-08-10T23:38:06.030Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:38:06.029Z", + "updatedAt": "2026-08-10T23:38:06.030Z" + }, + { + "id": 56, + "level": "info", + "userId": null, + "deleted": false, + "message": "Using sendmail transport", + "service": "webServer", + "createdAt": "2026-08-10T23:37:08.528Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:37:08.528Z", + "updatedAt": "2026-08-10T23:37:08.528Z" + }, + { + "id": 55, + "level": "info", + "userId": null, + "deleted": false, + "message": "Client connected with data undefined", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:36:41.706Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:41.706Z", + "updatedAt": "2026-08-10T23:36:41.706Z" + }, + { + "id": 54, + "level": "info", + "userId": null, + "deleted": false, + "message": "pg_stat_activity snapshot", + "service": "webServer", + "createdAt": "2026-08-10T23:35:59.128Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:59.127Z", + "updatedAt": "2026-08-10T23:35:59.128Z" + }, + { + "id": 53, + "level": "info", + "userId": null, + "deleted": false, + "message": "The request for skill sentiment_classification is sent to the fallback nlp service", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:35:01.425Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.425Z", + "updatedAt": "2026-08-10T23:35:01.425Z" + }, + { + "id": 52, + "level": "info", + "userId": null, + "deleted": false, + "message": "The request for skill sentiment_classification is sent to the fallback nlp service", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:35:01.411Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.411Z", + "updatedAt": "2026-08-10T23:35:01.411Z" + }, + { + "id": 51, + "level": "info", + "userId": null, + "deleted": false, + "message": "Client connected with data undefined", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:35:01.317Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.317Z", + "updatedAt": "2026-08-10T23:35:01.317Z" + }, + { + "id": 50, + "level": "info", + "userId": null, + "deleted": false, + "message": "The request for skill sentiment_classification is sent to the fallback nlp service", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:33:29.693Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:29.693Z", + "updatedAt": "2026-08-10T23:33:29.693Z" + } + ], + "count": 59 + }, + "direction": false, + "startTime": "2026-08-10T23:41:08.454Z", + "endTime": "2026-08-10T23:41:08.454Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "logAll", + "payload": { + "rows": [ + { + "id": 59, + "level": "info", + "userId": null, + "deleted": false, + "message": "pg_stat_activity snapshot", + "service": "webServer", + "createdAt": "2026-08-10T23:40:59.133Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:40:59.133Z", + "updatedAt": "2026-08-10T23:40:59.133Z" + }, + { + "id": 58, + "level": "info", + "userId": null, + "deleted": false, + "message": "Using sendmail transport", + "service": "webServer", + "createdAt": "2026-08-10T23:40:37.509Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:40:37.509Z", + "updatedAt": "2026-08-10T23:40:37.509Z" + }, + { + "id": 57, + "level": "info", + "userId": null, + "deleted": false, + "message": "Using sendmail transport", + "service": "webServer", + "createdAt": "2026-08-10T23:38:06.030Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:38:06.029Z", + "updatedAt": "2026-08-10T23:38:06.030Z" + }, + { + "id": 56, + "level": "info", + "userId": null, + "deleted": false, + "message": "Using sendmail transport", + "service": "webServer", + "createdAt": "2026-08-10T23:37:08.528Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:37:08.528Z", + "updatedAt": "2026-08-10T23:37:08.528Z" + }, + { + "id": 55, + "level": "info", + "userId": null, + "deleted": false, + "message": "Client connected with data undefined", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:36:41.706Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:41.706Z", + "updatedAt": "2026-08-10T23:36:41.706Z" + }, + { + "id": 54, + "level": "info", + "userId": null, + "deleted": false, + "message": "pg_stat_activity snapshot", + "service": "webServer", + "createdAt": "2026-08-10T23:35:59.128Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:59.127Z", + "updatedAt": "2026-08-10T23:35:59.128Z" + }, + { + "id": 53, + "level": "info", + "userId": null, + "deleted": false, + "message": "The request for skill sentiment_classification is sent to the fallback nlp service", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:35:01.425Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.425Z", + "updatedAt": "2026-08-10T23:35:01.425Z" + }, + { + "id": 52, + "level": "info", + "userId": null, + "deleted": false, + "message": "The request for skill sentiment_classification is sent to the fallback nlp service", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:35:01.411Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.411Z", + "updatedAt": "2026-08-10T23:35:01.411Z" + }, + { + "id": 51, + "level": "info", + "userId": null, + "deleted": false, + "message": "Client connected with data undefined", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:35:01.317Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.317Z", + "updatedAt": "2026-08-10T23:35:01.317Z" + }, + { + "id": 50, + "level": "info", + "userId": null, + "deleted": false, + "message": "The request for skill sentiment_classification is sent to the fallback nlp service", + "service": "Service/NLPService", + "createdAt": "2026-08-10T23:33:29.693Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:29.693Z", + "updatedAt": "2026-08-10T23:33:29.693Z" + } + ], + "count": 59 + }, + "direction": false, + "startTime": "2026-08-10T23:41:08.456Z", + "endTime": "2026-08-10T23:41:08.456Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 463, + "clientY": 469, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:41:09.168Z", + "endTime": "2026-08-10T23:41:09.168Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 323, + "clientY": 16, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:41:14.469Z", + "endTime": "2026-08-10T23:41:14.469Z" + }, + { + "recordingId": 21, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:41:14.847Z", + "endTime": "2026-08-10T23:41:14.847Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/370-user-statistics.json b/backend/tests/regression_stories/370-user-statistics.json new file mode 100644 index 000000000..cf819a2ed --- /dev/null +++ b/backend/tests/regression_stories/370-user-statistics.json @@ -0,0 +1,2761 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:30.371Z", + "traceCount": 16, + "recording": { + "name": "370-user-statistics", + "status": "finished", + "startTime": "2026-08-10T23:41:39.700Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:41:53.671Z" + }, + "traces": [ + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 22, + "name": "Recording 8/11/2026, 1:41:39 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:41:39.701Z", + "startTime": "2026-08-10T23:41:39.700Z", + "updatedAt": "2026-08-10T23:41:39.701Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:41:39.712Z", + "endTime": "2026-08-10T23:41:39.712Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:41:40.801Z", + "endTime": "2026-08-10T23:41:40.801Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/user_stats", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:41:44.306Z", + "endTime": "2026-08-10T23:41:44.306Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "df5e89e1-5d0d-49d2-bca0-cd12c9cd2971", + "direction": true, + "startTime": "2026-08-10T23:41:44.316Z", + "endTime": "2026-08-10T23:41:44.316Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "54367c81-b8cc-41fa-82f9-ff6935336718", + "direction": true, + "startTime": "2026-08-10T23:41:44.316Z", + "endTime": "2026-08-10T23:41:44.316Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "aa28648f-1dd4-44db-9180-38ef0140687b", + "direction": true, + "startTime": "2026-08-10T23:41:44.316Z", + "endTime": "2026-08-10T23:41:44.316Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "9d408353-d1e8-45d3-bace-f48f4c3a99ab", + "direction": true, + "startTime": "2026-08-10T23:41:44.316Z", + "endTime": "2026-08-10T23:41:44.316Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "163a8afc-593a-4a83-952a-dc90d080d214", + "direction": true, + "startTime": "2026-08-10T23:41:44.316Z", + "endTime": "2026-08-10T23:41:44.316Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "852718fd-aefe-4f5b-9dae-d2a1cdcc1237", + "direction": true, + "startTime": "2026-08-10T23:41:44.322Z", + "endTime": "2026-08-10T23:41:44.322Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-10T23:41:44.353Z", + "endTime": "2026-08-10T23:41:44.353Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-10T22:35:47.557Z", + "firstName": "Bot", + "updatedAt": "2026-08-10T22:35:47.557Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-10T22:35:47.558Z", + "firstName": "guest", + "updatedAt": "2026-08-10T23:33:07.056Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-10T23:33:07.056Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-10T22:35:59.284Z", + "firstName": "admin", + "updatedAt": "2026-08-10T23:36:41.437Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-10T23:36:41.437Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:41:44.366Z", + "endTime": "2026-08-10T23:41:44.366Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "statsGetByUser", + "payload": { + "userId": 3 + }, + "direction": true, + "startTime": "2026-08-10T23:41:46.361Z", + "endTime": "2026-08-10T23:41:46.361Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "statsDataByUser", + "payload": { + "userId": 3, + "success": true, + "statistics": [ + { + "id": 482, + "data": "{\"screenSize\":{\"width\":1680,\"height\":1050},\"deviceType\":\"desktop\",\"browserInfo\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36\"}", + "action": "deviceInfo", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:23:50.373Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 483, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:23:51.523Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 484, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:23:59.571Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 485, + "data": "{\"clientX\":1175,\"clientY\":190,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:01.638Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 486, + "data": "{\"action\":\"accessDoc\",\"params\":{\"documentId\":1}}", + "action": "actionClick", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:01.753Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 487, + "data": "{\"from\":\"/dashboard\",\"to\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:01.839Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 488, + "data": "{\"isSidebarVisible\":true,\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null}", + "action": "sidebar-visibility", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:01.903Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 489, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"windowWidth\":1440,\"sidebarVisible\":true}", + "action": "sidebarResize", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:02.401Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 490, + "data": "{\"clientX\":889,\"clientY\":335,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:02.854Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 491, + "data": "{\"clientX\":891,\"clientY\":324,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:03.855Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 492, + "data": "{\"documentId\":1,\"scrollTop\":375,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:04.271Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 493, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:05.515Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 494, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:06.130Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 495, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":212,\"eventClientY\":377,\"text\":\"ding with NLP-based assistance, such as textclassification, generation or question answer-ing. T\"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:08.133Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 496, + "data": "{\"clientX\":212,\"clientY\":377,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:08.221Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 497, + "data": "{\"clientX\":250,\"clientY\":299,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:09.703Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 498, + "data": "{\"title\":\"Strength\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:09.717Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 499, + "data": "{\"clientX\":792,\"clientY\":22,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:11.824Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 500, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:12.080Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 501, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:38.619Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 502, + "data": "{\"from\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\",\"to\":\"/dashboard\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:42.147Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 503, + "data": "{\"action\":\"accessDoc\",\"params\":{\"documentId\":1}}", + "action": "actionClick", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:43.347Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 504, + "data": "{\"from\":\"/dashboard\",\"to\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:43.369Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 505, + "data": "{\"isSidebarVisible\":true,\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null}", + "action": "sidebar-visibility", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:43.392Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 506, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"windowWidth\":1440,\"sidebarVisible\":true}", + "action": "sidebarResize", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:43.891Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 507, + "data": "{\"documentId\":1,\"scrollTop\":375,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:44.338Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 508, + "data": "{\"from\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\",\"to\":\"/dashboard\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:46.065Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 509, + "data": "{\"clientX\":1244,\"clientY\":4,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:47.588Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 510, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:47.602Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 511, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:55.783Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 512, + "data": "{\"action\":\"accessDoc\",\"params\":{\"documentId\":1}}", + "action": "actionClick", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:56.968Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 513, + "data": "{\"from\":\"/dashboard\",\"to\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:57.000Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 514, + "data": "{\"isSidebarVisible\":true,\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null}", + "action": "sidebar-visibility", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:57.051Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 515, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"windowWidth\":1440,\"sidebarVisible\":true}", + "action": "sidebarResize", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:57.538Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 516, + "data": "{\"documentId\":1,\"scrollTop\":375,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:57.989Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 517, + "data": "{\"clientX\":569,\"clientY\":402,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:58.473Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 518, + "data": "{\"documentId\":1,\"scrollTop\":452,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:24:59.056Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 519, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:00.431Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 520, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:03.685Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 521, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":798,\"eventClientY\":372,\"text\":\"Humans use annotations to read and\"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:11.469Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 522, + "data": "{\"clientX\":798,\"clientY\":372,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:11.673Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 523, + "data": "{\"title\":\"Weakness\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:13.114Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 524, + "data": "{\"clientX\":848,\"clientY\":304,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:13.322Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 525, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"annotationId\":2}", + "action": "pdfScroll", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:14.715Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 526, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"annotationId\":2}", + "action": "pdfScroll", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:14.715Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 527, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"annotationId\":2}", + "action": "pdfScroll", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:14.715Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 528, + "data": "{\"clientX\":1086,\"clientY\":382,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:15.041Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 529, + "data": "{\"documentId\":1,\"scrollTop\":690,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:15.323Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 530, + "data": "{\"clientX\":1275,\"clientY\":488,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:17.121Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 531, + "data": "{\"title\":\"Save\",\"icon\":\"floppy-fill\",\"props\":{\"commentId\":2}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:18.552Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 532, + "data": "{\"clientX\":1361,\"clientY\":532,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:18.874Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 533, + "data": "{\"title\":\"Edit main tag\",\"icon\":\"tag\",\"props\":{\"commentId\":2}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:20.283Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 534, + "data": "{\"clientX\":1324,\"clientY\":405,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:21.572Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 535, + "data": "{\"clientX\":1134,\"clientY\":567,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:25.222Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 536, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:27.174Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 537, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:30.175Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 538, + "data": "{\"clientX\":1037,\"clientY\":0,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:31.442Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 539, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:32.165Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 540, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:25:58.206Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 541, + "data": "{\"clientX\":1244,\"clientY\":7,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:01.041Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 542, + "data": "{\"clientX\":737,\"clientY\":328,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:04.741Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 543, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":669,\"eventClientY\":315,\"text\":\"t, the lack of data and key in-sights limits the NLP progress \"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:06.280Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 544, + "data": "{\"clientX\":669,\"clientY\":315,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:06.391Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 545, + "data": "{\"title\":\"Strength\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:08.098Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 546, + "data": "{\"clientX\":743,\"clientY\":228,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:08.240Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 547, + "data": "{\"clientX\":843,\"clientY\":344,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:08.975Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 548, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:10.240Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 549, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:11.078Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 550, + "data": "{\"clientX\":1118,\"clientY\":642,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:12.591Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 551, + "data": "{\"clientX\":1207,\"clientY\":680,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:14.825Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 552, + "data": "{\"title\":\"Save\",\"icon\":\"floppy-fill\",\"props\":{\"commentId\":3}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:15.737Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 553, + "data": "{\"clientX\":1361,\"clientY\":733,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:16.058Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 554, + "data": "{\"clientX\":1080,\"clientY\":0,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:18.241Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 555, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:18.389Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 556, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:39.016Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 557, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":792,\"eventClientY\":474,\"text\":\"tween humans and texts,how they translate into NLP tasks, and \"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:44.667Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 558, + "data": "{\"clientX\":792,\"clientY\":474,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:44.942Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 559, + "data": "{\"clientX\":853,\"clientY\":424,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:46.209Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 560, + "data": "{\"title\":\"Weakness\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:46.784Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 561, + "data": "{\"clientX\":853,\"clientY\":424,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:46.820Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 562, + "data": "{\"clientX\":1162,\"clientY\":651,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:48.426Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 563, + "data": "{\"title\":\"Save\",\"icon\":\"floppy-fill\",\"props\":{\"commentId\":4}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:52.308Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 564, + "data": "{\"clientX\":1364,\"clientY\":743,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:52.691Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 565, + "data": "{\"title\":\"Reply\",\"icon\":\"reply-fill\",\"props\":{\"commentId\":4}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:53.970Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 566, + "data": "{\"clientX\":1273,\"clientY\":736,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:54.358Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 567, + "data": "{\"title\":\"Save (Ctrl+Enter)\",\"icon\":\"save-fill\",\"props\":{\"commentId\":5,\"edit\":false,\"level\":1}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:58.118Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 568, + "data": "{\"clientX\":1364,\"clientY\":713,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:26:58.291Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 569, + "data": "{\"clientX\":1117,\"clientY\":5,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:00.942Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 570, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:02.127Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 571, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:29.117Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 572, + "data": "{\"clientX\":596,\"clientY\":671,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:33.528Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 573, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":596,\"eventClientY\":671,\"text\":\"o address these limitations, we introduce\"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:33.557Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 574, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":368,\"eventClientY\":536,\"text\":\"hatGPT (O\"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:36.978Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 575, + "data": "{\"title\":\"Other\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:38.686Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 576, + "data": "{\"clientX\":413,\"clientY\":503,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:39.044Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 577, + "data": "{\"title\":\"Save\",\"icon\":\"floppy-fill\",\"props\":{\"commentId\":6}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:40.937Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 578, + "data": "{\"clientX\":1364,\"clientY\":475,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:42.459Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 579, + "data": "{\"clientX\":1364,\"clientY\":472,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:43.992Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 580, + "data": "{\"commentId\":6,\"state\":true}", + "action": "commentToggleCollapse", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:45.505Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 581, + "data": "{\"clientX\":1078,\"clientY\":351,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:27:45.861Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:45.861Z", + "updatedAt": "2026-08-10T23:27:45.861Z" + }, + { + "id": 682, + "data": "{\"clientX\":1076,\"clientY\":371,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:47.094Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 683, + "data": "{\"clientX\":1049,\"clientY\":387,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:48.110Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 684, + "data": "{\"clientX\":1069,\"clientY\":84,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:49.160Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 685, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:27:49.321Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 686, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:15.013Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 687, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"eventClientX\":794,\"eventClientY\":535,\"text\":\"hile ethical, controlleddata collection has been receiving incre\"}", + "action": "onTextSelect", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:20.458Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 688, + "data": "{\"clientX\":794,\"clientY\":535,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:20.544Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 689, + "data": "{\"clientX\":841,\"clientY\":458,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:21.961Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 690, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:23.582Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 691, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:23.979Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 692, + "data": "{\"title\":\"Strength\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:25.142Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 693, + "data": "{\"clientX\":847,\"clientY\":462,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:25.493Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 694, + "data": "{\"title\":\"Save\",\"icon\":\"floppy-fill\",\"props\":{\"commentId\":7}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:27.113Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 695, + "data": "{\"clientX\":1365,\"clientY\":743,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:27.193Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 696, + "data": "{\"clientX\":1364,\"clientY\":743,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:29.028Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 697, + "data": "{\"clientX\":1336,\"clientY\":733,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:31.496Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 698, + "data": "{\"clientX\":1295,\"clientY\":727,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:32.395Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 699, + "data": "{\"clientX\":1274,\"clientY\":731,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:33.693Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 700, + "data": "{\"clientX\":1237,\"clientY\":716,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:35.560Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 701, + "data": "{\"clientX\":1237,\"clientY\":716,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:36.448Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 702, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:37.647Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 703, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:54.000Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 704, + "data": "{\"clientX\":1138,\"clientY\":704,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:55.746Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 705, + "data": "{\"clientX\":1296,\"clientY\":739,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:28:57.060Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 706, + "data": "{\"clientX\":1323,\"clientY\":733,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:00.593Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 707, + "data": "{\"clientX\":1365,\"clientY\":735,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:01.714Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 708, + "data": "{\"clientX\":1337,\"clientY\":735,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:02.977Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 709, + "data": "{\"title\":\"Edit\",\"icon\":\"pencil-square\",\"props\":{\"commentId\":7}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:03.694Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 710, + "data": "{\"clientX\":1368,\"clientY\":768,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:08.878Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 711, + "data": "{\"clientX\":1352,\"clientY\":734,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:09.644Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 712, + "data": "{\"title\":\"Save\",\"icon\":\"floppy-fill\",\"props\":{\"commentId\":7}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:11.190Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 713, + "data": "{\"clientX\":1316,\"clientY\":750,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:13.196Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 714, + "data": "{\"clientX\":1129,\"clientY\":619,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:18.910Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 715, + "data": "{\"clientX\":1289,\"clientY\":497,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:22.562Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 716, + "data": "{\"clientX\":1376,\"clientY\":506,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:24.612Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 717, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:29:29.401Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 718, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:07.917Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 719, + "data": "{\"clientX\":1183,\"clientY\":1,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:10.279Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 720, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:10.291Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 721, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:15.915Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 722, + "data": "{\"from\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\",\"to\":\"/dashboard\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:17.001Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 723, + "data": "{\"clientX\":390,\"clientY\":170,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:17.661Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 724, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:30:18.901Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 725, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:31:47.648Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 726, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:31:51.906Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 727, + "data": "{\"clientX\":1108,\"clientY\":96,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:31:52.659Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 728, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:32:10.679Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 729, + "data": "{\"from\":\"/dashboard\",\"to\":\"/login\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:32:13.973Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 730, + "data": "{}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:32:15.907Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 731, + "data": "{\"from\":\"/login\",\"to\":\"/dashboard\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:32:16.034Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 732, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "o2D2-TTZMejvegnsAAAR", + "createdAt": "2026-08-10T23:32:16.106Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:32:16.102Z", + "updatedAt": "2026-08-10T23:32:16.106Z" + }, + { + "id": 756, + "data": "{\"screenSize\":{\"width\":1680,\"height\":1050},\"deviceType\":\"desktop\",\"browserInfo\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36\"}", + "action": "deviceInfo", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:07.262Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 757, + "data": "{\"clientX\":786,\"clientY\":471,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:07.884Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 758, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:08.834Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 759, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:10.072Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 760, + "data": "{\"action\":\"accessDoc\",\"params\":{\"documentId\":1}}", + "action": "actionClick", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:11.637Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 761, + "data": "{\"from\":\"/dashboard\",\"to\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:11.735Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 762, + "data": "{\"isSidebarVisible\":true,\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null}", + "action": "sidebar-visibility", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:11.754Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 763, + "data": "{\"commentId\":6,\"state\":true}", + "action": "commentToggleCollapse", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:11.813Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 764, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"windowWidth\":1440,\"sidebarVisible\":true}", + "action": "sidebarResize", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:12.254Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 765, + "data": "{\"documentId\":1,\"scrollTop\":690,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:13.566Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 766, + "data": "{\"clientX\":1236,\"clientY\":436,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:13.600Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 767, + "data": "{\"clientX\":1183,\"clientY\":566,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:15.033Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 768, + "data": "{\"clientX\":1354,\"clientY\":521,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:16.817Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 769, + "data": "{\"clientX\":1364,\"clientY\":530,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:17.884Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 770, + "data": "{\"clientX\":1297,\"clientY\":530,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:21.152Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 771, + "data": "{\"clientX\":1299,\"clientY\":527,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:22.470Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 772, + "data": "{\"clientX\":1119,\"clientY\":553,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:23.832Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 773, + "data": "{\"clientX\":1100,\"clientY\":282,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:27.849Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 774, + "data": "{\"title\":\"Reply\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:29.681Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 775, + "data": "{\"clientX\":1121,\"clientY\":585,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:29.734Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 776, + "data": "{\"title\":\"Reply\",\"documentId\":1}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:30.530Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 777, + "data": "{\"clientX\":1121,\"clientY\":585,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:30.634Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 778, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"annotationId\":4}", + "action": "pdfScroll", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:31.609Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 779, + "data": "{\"documentId\":1,\"readOnly\":false,\"visibility\":{\"pageNumber\":2,\"isVisible\":true,\"offset\":1461.5},\"studySessionId\":null,\"studyStepId\":null}", + "action": "pdfPageVisibilityChange", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:31.617Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 780, + "data": "{\"clientX\":1100,\"clientY\":502,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:31.921Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 781, + "data": "{\"documentId\":1,\"scrollTop\":1004,\"scrollHeight\":22260}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:32.234Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 782, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"annotationId\":4}", + "action": "pdfScroll", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:32.409Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 783, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"annotationId\":4}", + "action": "pdfScroll", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:32.779Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 784, + "data": "{\"clientX\":1311,\"clientY\":278,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:35.018Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 785, + "data": "{\"title\":\"Edit main tag\",\"icon\":\"tag\",\"props\":{\"commentId\":7}}", + "action": "clickSidebarButton", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:37.926Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 786, + "data": "{\"clientX\":1356,\"clientY\":659,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:39.837Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 787, + "data": "{\"clientX\":992,\"clientY\":803,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:42.702Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 788, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:33:43.983Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 789, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:34:58.793Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 790, + "data": "{\"clientX\":357,\"clientY\":605,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:34:59.876Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 791, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "skGIjneJ-sYjYarlAAAV", + "createdAt": "2026-08-10T23:35:01.079Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.063Z", + "updatedAt": "2026-08-10T23:35:01.079Z" + }, + { + "id": 792, + "data": "{\"screenSize\":{\"width\":1680,\"height\":1050},\"deviceType\":\"desktop\",\"browserInfo\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36\"}", + "action": "deviceInfo", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.335Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 793, + "data": "{\"isSidebarVisible\":true,\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null}", + "action": "sidebar-visibility", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.355Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 794, + "data": "{\"commentId\":6,\"state\":true}", + "action": "commentToggleCollapse", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.424Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 795, + "data": "{\"documentId\":1,\"studySessionId\":null,\"studyStepId\":null,\"windowWidth\":1440,\"sidebarVisible\":true}", + "action": "sidebarResize", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:01.857Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 796, + "data": "{\"documentId\":1,\"scrollTop\":690,\"scrollHeight\":22764}", + "action": "annotatorScrollActivity", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:03.153Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 797, + "data": "{\"clientX\":1152,\"clientY\":334,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:03.654Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 798, + "data": "{\"clientX\":1224,\"clientY\":219,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:06.169Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 799, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:07.369Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 800, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:15.266Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 801, + "data": "{\"clientX\":1043,\"clientY\":9,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:17.253Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 802, + "data": "{\"hidden\":true}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:35:18.404Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 803, + "data": "{\"hidden\":false}", + "action": "tabVisibilityChange", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:37.180Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 804, + "data": "{\"from\":\"/document/8852a746-360e-4c31-add2-4d1c75bfb96d\",\"to\":\"/login\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:39.062Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 805, + "data": "{\"clientX\":825,\"clientY\":356,\"scrollX\":0,\"scrollY\":0}", + "action": "mouseMove", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:40.161Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 806, + "data": "{}", + "action": "clickCardButton", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:41.325Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + }, + { + "id": 807, + "data": "{\"from\":\"/login\",\"to\":\"/dashboard\"}", + "action": "routeStep", + "userId": 3, + "deleted": false, + "session": "y4iQfIRSPTc6OTaLAAAX", + "createdAt": "2026-08-10T23:36:41.538Z", + "deletedAt": null, + "timestamp": "2026-08-10T23:36:41.467Z", + "updatedAt": "2026-08-10T23:36:41.538Z" + } + ] + }, + "direction": false, + "startTime": "2026-08-10T23:41:46.373Z", + "endTime": "2026-08-10T23:41:46.373Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 582, + "clientY": 611, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:41:47.686Z", + "endTime": "2026-08-10T23:41:47.686Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1066, + "clientY": 14, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:41:51.536Z", + "endTime": "2026-08-10T23:41:51.536Z" + }, + { + "recordingId": 22, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:41:52.805Z", + "endTime": "2026-08-10T23:41:52.805Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/380-manage-configurations.json b/backend/tests/regression_stories/380-manage-configurations.json new file mode 100644 index 000000000..9e81ba203 --- /dev/null +++ b/backend/tests/regression_stories/380-manage-configurations.json @@ -0,0 +1,456 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:33.561Z", + "traceCount": 22, + "recording": { + "name": "380-manage-configurations", + "status": "finished", + "startTime": "2026-08-10T23:42:35.518Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:42:53.089Z" + }, + "traces": [ + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 23, + "name": "Recording 8/11/2026, 1:42:35 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:42:35.519Z", + "startTime": "2026-08-10T23:42:35.518Z", + "updatedAt": "2026-08-10T23:42:35.519Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:42:35.528Z", + "endTime": "2026-08-10T23:42:35.528Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:42:36.833Z", + "endTime": "2026-08-10T23:42:36.833Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/configurations", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:42:40.208Z", + "endTime": "2026-08-10T23:42:40.208Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "ce833b55-3a1e-46d8-aa5a-36d4c3b181d3", + "direction": true, + "startTime": "2026-08-10T23:42:40.226Z", + "endTime": "2026-08-10T23:42:40.226Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "da0261d4-c806-427b-a60f-eba8dc38085d", + "direction": true, + "startTime": "2026-08-10T23:42:40.234Z", + "endTime": "2026-08-10T23:42:40.234Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "afdebb08-c715-4ef5-b3d6-638f79e9965f", + "direction": true, + "startTime": "2026-08-10T23:42:40.235Z", + "endTime": "2026-08-10T23:42:40.235Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "1cc22030-6aaa-4f21-b26e-508cfd37f143", + "direction": true, + "startTime": "2026-08-10T23:42:40.235Z", + "endTime": "2026-08-10T23:42:40.235Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-10T23:42:40.246Z", + "endTime": "2026-08-10T23:42:40.246Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "d6726a07-27f5-4a32-8817-4cffb612f8cf", + "direction": true, + "startTime": "2026-08-10T23:42:40.235Z", + "endTime": "2026-08-10T23:42:40.235Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "974b1ec8-6e10-498f-bac9-5d0ec619bc45", + "direction": true, + "startTime": "2026-08-10T23:42:40.235Z", + "endTime": "2026-08-10T23:42:40.235Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "upload", + "title": "Import configuration file" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:42:42.201Z", + "endTime": "2026-08-10T23:42:42.201Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:42:42.652Z", + "endTime": "2026-08-10T23:42:42.652Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 861, + "clientY": 193, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:42:43.502Z", + "endTime": "2026-08-10T23:42:43.502Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:42:47.128Z", + "endTime": "2026-08-10T23:42:47.128Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:42:48.445Z", + "endTime": "2026-08-10T23:42:48.445Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "configurationAdd", + "payload": { + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "description": "Validation schema for UKP Exposé LaTeX submissions", + "creator_name": "admin", + "hideInFrontend": false + }, + "direction": true, + "startTime": "2026-08-10T23:42:49.345Z", + "endTime": "2026-08-10T23:42:49.345Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Submit" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:42:49.348Z", + "endTime": "2026-08-10T23:42:49.348Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "configurationRefresh", + "payload": [ + { + "id": 6, + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "deleted": false, + "createdAt": "2026-08-10T23:42:49.364Z", + "updatedAt": "2026-08-10T23:42:49.364Z", + "description": "Validation schema for UKP Exposé LaTeX submissions", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-10T23:42:49.372Z", + "endTime": "2026-08-10T23:42:49.372Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:42:49.380Z", + "endTime": "2026-08-10T23:42:49.380Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 939, + "clientY": 488, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:42:50.220Z", + "endTime": "2026-08-10T23:42:50.220Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:42:52.147Z", + "endTime": "2026-08-10T23:42:52.147Z" + }, + { + "recordingId": 23, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1066, + "clientY": 71, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:42:52.659Z", + "endTime": "2026-08-10T23:42:52.659Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/400-manage-users.json b/backend/tests/regression_stories/400-manage-users.json new file mode 100644 index 000000000..e4b13c7ce --- /dev/null +++ b/backend/tests/regression_stories/400-manage-users.json @@ -0,0 +1,568 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:37.336Z", + "traceCount": 32, + "recording": { + "name": "400-manage-users", + "status": "finished", + "startTime": "2026-08-10T23:43:36.840Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:44:18.998Z" + }, + "traces": [ + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 24, + "name": "Recording 8/11/2026, 1:43:36 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:43:36.840Z", + "startTime": "2026-08-10T23:43:36.840Z", + "updatedAt": "2026-08-10T23:43:36.840Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:43:36.851Z", + "endTime": "2026-08-10T23:43:36.851Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:43:38.330Z", + "endTime": "2026-08-10T23:43:38.330Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/users", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:43:41.069Z", + "endTime": "2026-08-10T23:43:41.069Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "9f125ec6-1de6-4b8a-b0fa-23cb73010e7e", + "direction": true, + "startTime": "2026-08-10T23:43:41.075Z", + "endTime": "2026-08-10T23:43:41.075Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "94c2d10f-0d8d-468f-bac3-14d28167b50c", + "direction": true, + "startTime": "2026-08-10T23:43:41.076Z", + "endTime": "2026-08-10T23:43:41.076Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "2d384854-b707-47eb-8b3b-3779848b8960", + "direction": true, + "startTime": "2026-08-10T23:43:41.076Z", + "endTime": "2026-08-10T23:43:41.076Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "c3583090-39f3-4ec3-8e43-4bf8e6b6f6bb", + "direction": true, + "startTime": "2026-08-10T23:43:41.085Z", + "endTime": "2026-08-10T23:43:41.085Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "510e71e4-2518-4a16-8556-5920811b09bc", + "direction": true, + "startTime": "2026-08-10T23:43:41.076Z", + "endTime": "2026-08-10T23:43:41.076Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "1729dabf-a345-4032-9360-3fd613dea402", + "direction": true, + "startTime": "2026-08-10T23:43:41.085Z", + "endTime": "2026-08-10T23:43:41.085Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-10T23:43:41.207Z", + "endTime": "2026-08-10T23:43:41.207Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-10T23:43:41.210Z", + "endTime": "2026-08-10T23:43:41.210Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "user_roleRefresh", + "payload": [ + { + "id": 1, + "name": "user", + "createdAt": "2026-08-10T22:35:47.511Z", + "updatedAt": "2026-08-10T22:35:47.511Z", + "description": "no system rights" + }, + { + "id": 2, + "name": "admin", + "createdAt": "2026-08-10T22:35:47.511Z", + "updatedAt": "2026-08-10T22:35:47.511Z", + "description": "full control" + }, + { + "id": 3, + "name": "teacher", + "createdAt": "2026-08-10T22:35:47.763Z", + "updatedAt": "2026-08-10T22:35:47.763Z", + "description": "responsible for coordination" + }, + { + "id": 4, + "name": "mentor", + "createdAt": "2026-08-10T22:35:47.763Z", + "updatedAt": "2026-08-10T22:35:47.763Z", + "description": "have the right to grade" + }, + { + "id": 5, + "name": "student", + "createdAt": "2026-08-10T22:35:47.763Z", + "updatedAt": "2026-08-10T22:35:47.763Z", + "description": "leave inline commentary" + }, + { + "id": 6, + "name": "guest", + "createdAt": "2026-08-10T22:35:47.763Z", + "updatedAt": "2026-08-10T22:35:47.763Z", + "description": "have limited rights when using the platform" + } + ], + "direction": false, + "startTime": "2026-08-10T23:43:41.211Z", + "endTime": "2026-08-10T23:43:41.212Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userMonitorSubscribe", + "payload": {}, + "direction": true, + "startTime": "2026-08-10T23:43:41.210Z", + "endTime": "2026-08-10T23:43:41.210Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "person-plus", + "title": "Add User" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:43:42.645Z", + "endTime": "2026-08-10T23:43:42.645Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "UserCreateModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:43:43.102Z", + "endTime": "2026-08-10T23:43:43.102Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 784, + "clientY": 162, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:43:44.069Z", + "endTime": "2026-08-10T23:43:44.069Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:43:45.203Z", + "endTime": "2026-08-10T23:43:45.203Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:43:53.336Z", + "endTime": "2026-08-10T23:43:53.336Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 663, + "clientY": 160, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:43:54.822Z", + "endTime": "2026-08-10T23:43:54.822Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 663, + "clientY": 170, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:43:55.897Z", + "endTime": "2026-08-10T23:43:55.897Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 525, + "clientY": 134, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:43:57.770Z", + "endTime": "2026-08-10T23:43:57.770Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 551, + "clientY": 196, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:43:59.403Z", + "endTime": "2026-08-10T23:43:59.403Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 562, + "clientY": 299, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:44:03.038Z", + "endTime": "2026-08-10T23:44:03.038Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 539, + "clientY": 394, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:44:05.871Z", + "endTime": "2026-08-10T23:44:05.871Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 612, + "clientY": 467, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:44:07.890Z", + "endTime": "2026-08-10T23:44:07.890Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Add" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:44:15.765Z", + "endTime": "2026-08-10T23:44:15.765Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userCreate", + "payload": { + "email": "jojos@email.com", + "lastName": "Joestar", + "password": "Jojo@123", + "userName": "jojo", + "firstName": "Joseph", + "isCreatedByAdmin": true + }, + "direction": true, + "startTime": "2026-08-10T23:44:15.761Z", + "endTime": "2026-08-10T23:44:15.761Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userRefresh", + "payload": [ + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "deleted": false, + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-10T23:44:15.840Z", + "firstName": "Joseph", + "updatedAt": "2026-08-10T23:44:15.840Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "rolesUpdatedAt": null, + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:44:15.858Z", + "endTime": "2026-08-10T23:44:15.858Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "UserCreateModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:44:15.864Z", + "endTime": "2026-08-10T23:44:15.864Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 704, + "clientY": 476, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:44:16.737Z", + "endTime": "2026-08-10T23:44:16.737Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1059, + "clientY": 62, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:44:17.845Z", + "endTime": "2026-08-10T23:44:17.845Z" + }, + { + "recordingId": 24, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:44:18.114Z", + "endTime": "2026-08-10T23:44:18.114Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/410-manage-role-rights.json b/backend/tests/regression_stories/410-manage-role-rights.json new file mode 100644 index 000000000..fc729c25c --- /dev/null +++ b/backend/tests/regression_stories/410-manage-role-rights.json @@ -0,0 +1,652 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:40.522Z", + "traceCount": 32, + "recording": { + "name": "410-manage-role-rights", + "status": "finished", + "startTime": "2026-08-10T23:45:16.230Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:45:41.933Z" + }, + "traces": [ + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 25, + "name": "Recording 8/11/2026, 1:45:16 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:45:16.231Z", + "startTime": "2026-08-10T23:45:16.230Z", + "updatedAt": "2026-08-10T23:45:16.231Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:45:16.241Z", + "endTime": "2026-08-10T23:45:16.241Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:45:17.364Z", + "endTime": "2026-08-10T23:45:17.364Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 148, + "clientY": 105, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:45:19.354Z", + "endTime": "2026-08-10T23:45:19.354Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/users", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:45:21.162Z", + "endTime": "2026-08-10T23:45:21.162Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "7ff873ba-d6a3-41a3-979c-c4394cb6de07", + "direction": true, + "startTime": "2026-08-10T23:45:21.171Z", + "endTime": "2026-08-10T23:45:21.171Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "049f8b78-a0ff-439e-ae7c-88f6f7c49557", + "direction": true, + "startTime": "2026-08-10T23:45:21.171Z", + "endTime": "2026-08-10T23:45:21.171Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "dc4dceba-e44f-4cbf-afac-ae67da9fe397", + "direction": true, + "startTime": "2026-08-10T23:45:21.174Z", + "endTime": "2026-08-10T23:45:21.174Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "877a8a48-01b1-4a14-84ca-925b30d37aa6", + "direction": true, + "startTime": "2026-08-10T23:45:21.174Z", + "endTime": "2026-08-10T23:45:21.174Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "7ee87394-4371-48c5-8b5b-93f605d36210", + "direction": true, + "startTime": "2026-08-10T23:45:21.174Z", + "endTime": "2026-08-10T23:45:21.174Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-10T23:45:21.203Z", + "endTime": "2026-08-10T23:45:21.203Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "e84eb113-88ff-4f99-95d8-b5e026cada24", + "direction": true, + "startTime": "2026-08-10T23:45:21.174Z", + "endTime": "2026-08-10T23:45:21.174Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-10T23:45:21.200Z", + "endTime": "2026-08-10T23:45:21.200Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userMonitorSubscribe", + "payload": {}, + "direction": true, + "startTime": "2026-08-10T23:45:21.204Z", + "endTime": "2026-08-10T23:45:21.204Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "shield-lock", + "title": "Rights Management" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:45:23.244Z", + "endTime": "2026-08-10T23:45:23.244Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-10T23:45:23.247Z", + "endTime": "2026-08-10T23:45:23.247Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userGetAllRights", + "payload": {}, + "direction": true, + "startTime": "2026-08-10T23:45:23.247Z", + "endTime": "2026-08-10T23:45:23.247Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "user_right" + }, + "direction": true, + "startTime": "2026-08-10T23:45:23.247Z", + "endTime": "2026-08-10T23:45:23.247Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "user_rightRefresh", + "payload": [ + { + "id": 1, + "name": "backend.socket.user.getUsers.student", + "createdAt": "2026-08-10T22:35:47.743Z", + "updatedAt": "2026-08-10T22:35:47.743Z", + "description": "access to get all students" + }, + { + "id": 2, + "name": "backend.socket.user.getUsers.mentor", + "createdAt": "2026-08-10T22:35:47.743Z", + "updatedAt": "2026-08-10T22:35:47.743Z", + "description": "access to get all mentors" + }, + { + "id": 3, + "name": "frontend.dashboard.users.view", + "createdAt": "2026-08-10T22:35:47.743Z", + "updatedAt": "2026-08-10T22:35:47.743Z", + "description": "access to view users on the dashboard" + }, + { + "id": 4, + "name": "backend.socket.user.getUsers.all", + "createdAt": "2026-08-10T22:35:47.743Z", + "updatedAt": "2026-08-10T22:35:47.743Z", + "description": "access to get all users" + }, + { + "id": 5, + "name": "frontend.dashboard.studies.addBulkAssignments", + "createdAt": "2026-08-10T22:35:48.035Z", + "updatedAt": "2026-08-10T22:35:48.035Z", + "description": "access to the functionality of bulk adding assignments on the dashboard" + }, + { + "id": 6, + "name": "frontend.dashboard.studies.addSingleAssignments", + "createdAt": "2026-08-10T22:35:48.035Z", + "updatedAt": "2026-08-10T22:35:48.035Z", + "description": "access to the functionality of adding assignments on the dashboard" + }, + { + "id": 7, + "name": "frontend.dashboard.studies.fullAccess", + "createdAt": "2026-08-10T22:35:48.035Z", + "updatedAt": "2026-08-10T22:35:48.035Z", + "description": "access to view open studies and sessions" + }, + { + "id": 8, + "name": "frontend.dashboard.studies.view.readOnly", + "createdAt": "2026-08-10T22:35:48.035Z", + "updatedAt": "2026-08-10T22:35:48.035Z", + "description": "access to open sessions in a read-only mode" + }, + { + "id": 9, + "name": "frontend.dashboard.studies.view.userPrivateInfo", + "createdAt": "2026-08-10T22:35:48.035Z", + "updatedAt": "2026-08-10T22:35:48.035Z", + "description": "access to view user's private information such as first name and last name" + }, + { + "id": 10, + "name": "frontend.dashboard.home.view", + "createdAt": "2026-08-10T22:35:48.308Z", + "updatedAt": "2026-08-10T22:35:48.308Z", + "description": "access to view home in the dashboard" + }, + { + "id": 11, + "name": "frontend.dashboard.documents.view", + "createdAt": "2026-08-10T22:35:48.308Z", + "updatedAt": "2026-08-10T22:35:48.308Z", + "description": "access to view documents in the dashboard" + }, + { + "id": 12, + "name": "frontend.dashboard.tags.view", + "createdAt": "2026-08-10T22:35:48.308Z", + "updatedAt": "2026-08-10T22:35:48.308Z", + "description": "access to view tagsets in the dashboard" + }, + { + "id": 13, + "name": "frontend.dashboard.projects.view", + "createdAt": "2026-08-10T22:35:48.308Z", + "updatedAt": "2026-08-10T22:35:48.308Z", + "description": "access to view projects in the dashboard" + }, + { + "id": 14, + "name": "frontend.dashboard.studies.view", + "createdAt": "2026-08-10T22:35:48.308Z", + "updatedAt": "2026-08-10T22:35:48.308Z", + "description": "access to view studies in the dashboard" + }, + { + "id": 16, + "name": "study.template.delete", + "createdAt": "2026-08-10T22:35:48.446Z", + "updatedAt": "2026-08-10T22:35:48.446Z", + "description": "access to delete templates" + }, + { + "id": 17, + "name": "frontend.dashboard.templates.view", + "createdAt": "2026-08-10T22:35:48.523Z", + "updatedAt": "2026-08-10T22:35:48.523Z", + "description": "access to view templates in the dashboard" + }, + { + "id": 18, + "name": "frontend.dashboard.workflows.view", + "createdAt": "2026-08-10T22:35:48.566Z", + "updatedAt": "2026-08-10T22:35:48.566Z", + "description": "access to view workflows in the dashboard" + }, + { + "id": 19, + "name": "frontend.dashboard.assignments.view", + "createdAt": "2026-08-10T22:35:49.131Z", + "updatedAt": "2026-08-10T22:35:49.131Z", + "description": "access to view assignments in the dashboard" + }, + { + "id": 20, + "name": "frontend.dashboard.assignments.viewAll", + "createdAt": "2026-08-10T22:35:49.154Z", + "updatedAt": "2026-08-10T22:35:49.154Z", + "description": "access to view all assignments and submissions in the Assignments dashboard view" + }, + { + "id": 21, + "name": "frontend.dashboard.assignments.uploadForOthers", + "createdAt": "2026-08-10T22:35:49.154Z", + "updatedAt": "2026-08-10T22:35:49.154Z", + "description": "access to upload submissions for other users" + }, + { + "id": 22, + "name": "frontend.dashboard.assignments.edit", + "createdAt": "2026-08-10T22:35:49.154Z", + "updatedAt": "2026-08-10T22:35:49.154Z", + "description": "access to edit assignments" + }, + { + "id": 23, + "name": "frontend.dashboard.assignments.replaceDeleteSubmissions", + "createdAt": "2026-08-10T22:35:49.154Z", + "updatedAt": "2026-08-10T22:35:49.154Z", + "description": "access to replace or delete submissions" + }, + { + "id": 24, + "name": "frontend.dashboard.submissions.view", + "createdAt": "2026-08-10T22:35:49.154Z", + "updatedAt": "2026-08-10T22:35:49.154Z", + "description": "access to view submissions dashboard" + }, + { + "id": 25, + "name": "frontend.dashboard.session_overview.view", + "createdAt": "2026-08-10T22:35:49.274Z", + "updatedAt": "2026-08-10T22:35:49.274Z", + "description": "access to view session overview in the dashboard" + }, + { + "id": 15, + "name": "frontend.dashboard.my_sessions.view", + "createdAt": "2026-08-10T22:35:48.308Z", + "updatedAt": "2026-08-10T22:35:49.275Z", + "description": "access to view my sessions in the dashboard" + }, + { + "id": 26, + "name": "frontend.dashboard.studies.canManageStudies", + "createdAt": "2026-08-10T22:35:49.482Z", + "updatedAt": "2026-08-10T22:35:49.482Z", + "description": "access to manage studies in the dashboard, including bulk closing and deleting studies" + }, + { + "id": 27, + "name": "frontend.dashboard.studies.view.userPublicInfo", + "createdAt": "2026-08-10T22:35:49.492Z", + "updatedAt": "2026-08-10T22:35:49.492Z", + "description": "access to view public user info (id, userName) in studies" + } + ], + "direction": false, + "startTime": "2026-08-10T23:45:23.253Z", + "endTime": "2026-08-10T23:45:23.253Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 701, + "clientY": 98, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:45:23.605Z", + "endTime": "2026-08-10T23:45:23.605Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:45:23.703Z", + "endTime": "2026-08-10T23:45:23.703Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 556, + "clientY": 188, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:45:24.769Z", + "endTime": "2026-08-10T23:45:24.769Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userGetRoleBasedRights", + "payload": { + "roleId": 6 + }, + "direction": true, + "startTime": "2026-08-10T23:45:26.240Z", + "endTime": "2026-08-10T23:45:26.240Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:45:27.395Z", + "endTime": "2026-08-10T23:45:27.395Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 675, + "clientY": 393, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:45:28.937Z", + "endTime": "2026-08-10T23:45:28.937Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 800, + "clientY": 467, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:45:37.703Z", + "endTime": "2026-08-10T23:45:37.703Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userAssignRoleRights", + "payload": { + "roleId": 6, + "newRights": [ + "study.template.delete" + ], + "deletedRights": [] + }, + "direction": true, + "startTime": "2026-08-10T23:45:38.766Z", + "endTime": "2026-08-10T23:45:38.766Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Assign Rights" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:45:38.769Z", + "endTime": "2026-08-10T23:45:38.769Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "147ae275-0d40-43cf-ac47-238bf2cd9aad", + "direction": true, + "startTime": "2026-08-10T23:45:38.772Z", + "endTime": "2026-08-10T23:45:38.772Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:45:38.769Z", + "endTime": "2026-08-10T23:45:38.769Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "edab2356-c4b0-4495-b36d-a0a04cf0b7e0", + "direction": true, + "startTime": "2026-08-10T23:45:38.772Z", + "endTime": "2026-08-10T23:45:38.772Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:45:41.146Z", + "endTime": "2026-08-10T23:45:41.146Z" + }, + { + "recordingId": 25, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1098, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:45:41.650Z", + "endTime": "2026-08-10T23:45:41.650Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/420-manage-user-settings.json b/backend/tests/regression_stories/420-manage-user-settings.json new file mode 100644 index 000000000..2fe84e753 --- /dev/null +++ b/backend/tests/regression_stories/420-manage-user-settings.json @@ -0,0 +1,758 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-10T23:47:42.906Z", + "traceCount": 34, + "recording": { + "name": "420-manage-user-settings", + "status": "finished", + "startTime": "2026-08-10T23:46:32.166Z", + "userId": 4, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ], + "excludeEvents": null, + "endTime": "2026-08-10T23:46:52.686Z" + }, + "traces": [ + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 26, + "name": "Recording 8/11/2026, 1:46:32 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-10T23:46:32.167Z", + "startTime": "2026-08-10T23:46:32.166Z", + "updatedAt": "2026-08-10T23:46:32.167Z", + "excludeEvents": null, + "participantSocketIds": [ + "90oWDZwTlp-h7ZFKAAAZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-10T23:46:32.186Z", + "endTime": "2026-08-10T23:46:32.186Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:46:33.781Z", + "endTime": "2026-08-10T23:46:33.781Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/settings", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:46:36.242Z", + "endTime": "2026-08-10T23:46:36.242Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "af48eb7b-cc92-476b-a68e-172dad5f3d10", + "direction": true, + "startTime": "2026-08-10T23:46:36.261Z", + "endTime": "2026-08-10T23:46:36.261Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "5d67b8e1-bc45-46a9-abe0-a436ec9f0295", + "direction": true, + "startTime": "2026-08-10T23:46:36.261Z", + "endTime": "2026-08-10T23:46:36.261Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "b85c249f-6884-4b41-bf7c-01107acdb106", + "direction": true, + "startTime": "2026-08-10T23:46:36.263Z", + "endTime": "2026-08-10T23:46:36.263Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "0003ee30-38c0-4efe-be28-e91cad728de1", + "direction": true, + "startTime": "2026-08-10T23:46:36.263Z", + "endTime": "2026-08-10T23:46:36.263Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "be2988f3-f843-4fde-b8e3-2ac996e5c5df", + "direction": true, + "startTime": "2026-08-10T23:46:36.266Z", + "endTime": "2026-08-10T23:46:36.266Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:46:36.273Z", + "endTime": "2026-08-10T23:46:36.273Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "ad2f485b-2e8e-44f8-9b63-203a608b6a17", + "direction": true, + "startTime": "2026-08-10T23:46:36.263Z", + "endTime": "2026-08-10T23:46:36.263Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "settingGetData", + "payload": null, + "direction": true, + "startTime": "2026-08-10T23:46:36.274Z", + "endTime": "2026-08-10T23:46:36.274Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 230, + "clientY": 356, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:46:36.470Z", + "endTime": "2026-08-10T23:46:36.470Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userGetByRole", + "payload": { + "role": "all" + }, + "direction": true, + "startTime": "2026-08-10T23:46:37.545Z", + "endTime": "2026-08-10T23:46:37.545Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "icon": "sliders", + "title": "Change User Settings" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:46:37.550Z", + "endTime": "2026-08-10T23:46:37.550Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userByRole", + "payload": { + "users": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "deleted": false, + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-10T22:35:47.557Z", + "deletedAt": null, + "firstName": "Bot", + "updatedAt": "2026-08-10T22:35:47.557Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "rolesUpdatedAt": null, + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "deleted": false, + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-10T22:35:47.558Z", + "deletedAt": null, + "firstName": "guest", + "updatedAt": "2026-08-10T23:33:07.056Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-10T23:33:07.056Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "rolesUpdatedAt": null, + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "deleted": false, + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-10T22:35:59.284Z", + "deletedAt": null, + "firstName": "admin", + "updatedAt": "2026-08-10T23:36:41.437Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-10T23:36:41.437Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "rolesUpdatedAt": "2026-08-10T22:35:59.294Z", + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "deleted": false, + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-10T23:44:15.840Z", + "deletedAt": null, + "firstName": "Joseph", + "updatedAt": "2026-08-10T23:44:15.855Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "rolesUpdatedAt": "2026-08-10T23:44:15.855Z", + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "success": true + }, + "direction": false, + "startTime": "2026-08-10T23:46:37.553Z", + "endTime": "2026-08-10T23:46:37.553Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "deleted": false, + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-10T22:35:47.557Z", + "deletedAt": null, + "firstName": "Bot", + "updatedAt": "2026-08-10T22:35:47.557Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "rolesUpdatedAt": null, + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "deleted": false, + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-10T22:35:47.558Z", + "deletedAt": null, + "firstName": "guest", + "updatedAt": "2026-08-10T23:33:07.056Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-10T23:33:07.056Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "rolesUpdatedAt": null, + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "deleted": false, + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-10T22:35:59.284Z", + "deletedAt": null, + "firstName": "admin", + "updatedAt": "2026-08-10T23:36:41.437Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-10T23:36:41.437Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "rolesUpdatedAt": "2026-08-10T22:35:59.294Z", + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "deleted": false, + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-10T23:44:15.840Z", + "deletedAt": null, + "firstName": "Joseph", + "updatedAt": "2026-08-10T23:44:15.855Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "rolesUpdatedAt": "2026-08-10T23:44:15.855Z", + "initialPassword": null, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-10T23:46:37.554Z", + "endTime": "2026-08-10T23:46:37.554Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-10T23:46:38.016Z", + "endTime": "2026-08-10T23:46:38.016Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 598, + "clientY": 222, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:46:38.688Z", + "endTime": "2026-08-10T23:46:38.688Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:46:42.378Z", + "endTime": "2026-08-10T23:46:42.378Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 716, + "clientY": 317, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:46:43.721Z", + "endTime": "2026-08-10T23:46:43.721Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:46:45.112Z", + "endTime": "2026-08-10T23:46:45.112Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "appSettingSet", + "payload": { + "key": "annotator.comments.votes.enabled", + "value": "true", + "userIds": [ + 3 + ] + }, + "direction": true, + "startTime": "2026-08-10T23:46:46.547Z", + "endTime": "2026-08-10T23:46:46.547Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "title": "Apply" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-10T23:46:46.551Z", + "endTime": "2026-08-10T23:46:46.551Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-10T23:46:46.557Z", + "endTime": "2026-08-10T23:46:46.557Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/settings" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.159Z", + "endTime": "2026-08-10T23:46:50.159Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "unsubscribeAppData", + "payload": "e06dd248-34fc-4fcd-8564-573b137cc634", + "direction": true, + "startTime": "2026-08-10T23:46:50.165Z", + "endTime": "2026-08-10T23:46:50.165Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.181Z", + "endTime": "2026-08-10T23:46:50.181Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.191Z", + "endTime": "2026-08-10T23:46:50.191Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.191Z", + "endTime": "2026-08-10T23:46:50.191Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.191Z", + "endTime": "2026-08-10T23:46:50.191Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.191Z", + "endTime": "2026-08-10T23:46:50.191Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.191Z", + "endTime": "2026-08-10T23:46:50.191Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "clientX": 792, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-10T23:46:50.920Z", + "endTime": "2026-08-10T23:46:50.920Z" + }, + { + "recordingId": 26, + "userId": 4, + "socketId": "90oWDZwTlp-h7ZFKAAAZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-10T23:46:51.047Z", + "endTime": "2026-08-10T23:46:51.047Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/500-manage-workflows.json b/backend/tests/regression_stories/500-manage-workflows.json new file mode 100644 index 000000000..ee331ba57 --- /dev/null +++ b/backend/tests/regression_stories/500-manage-workflows.json @@ -0,0 +1,1141 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:27:56.086Z", + "traceCount": 75, + "recording": { + "name": "500-manage-workflows", + "status": "finished", + "startTime": "2026-08-11T00:18:23.719Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:20:01.184Z" + }, + "traces": [ + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 1, + "name": "Recording 8/11/2026, 2:18:23 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:18:23.722Z", + "startTime": "2026-08-11T00:18:23.719Z", + "updatedAt": "2026-08-11T00:18:23.722Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:18:23.738Z", + "endTime": "2026-08-11T00:18:23.738Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:18:24.838Z", + "endTime": "2026-08-11T00:18:24.838Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/workflows", + "from": "/dashboard/studies" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.901Z", + "endTime": "2026-08-11T00:18:28.901Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bc8f4306-094d-4310-a5a1-796073edd0aa", + "direction": true, + "startTime": "2026-08-11T00:18:28.910Z", + "endTime": "2026-08-11T00:18:28.910Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bbf46cc4-fe76-4948-b4ae-921c37f8648b", + "direction": true, + "startTime": "2026-08-11T00:18:28.911Z", + "endTime": "2026-08-11T00:18:28.911Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5136e6e4-3246-4f30-9475-ddb07d448655", + "direction": true, + "startTime": "2026-08-11T00:18:28.911Z", + "endTime": "2026-08-11T00:18:28.911Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d2e2c910-c1c1-43eb-8746-141c4624f1df", + "direction": true, + "startTime": "2026-08-11T00:18:28.938Z", + "endTime": "2026-08-11T00:18:28.938Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d5607f92-be5d-4820-8c4d-36688c816dbb", + "direction": true, + "startTime": "2026-08-11T00:18:28.911Z", + "endTime": "2026-08-11T00:18:28.911Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b988d0c1-6bc8-4614-b374-901f8faf0157", + "direction": true, + "startTime": "2026-08-11T00:18:28.912Z", + "endTime": "2026-08-11T00:18:28.912Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "42b2c96a-a497-4293-9f13-b0b79aeafb9d", + "direction": true, + "startTime": "2026-08-11T00:18:28.913Z", + "endTime": "2026-08-11T00:18:28.913Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "a1b3ae3d-05ed-4093-b712-eb63b2f544da", + "direction": true, + "startTime": "2026-08-11T00:18:28.911Z", + "endTime": "2026-08-11T00:18:28.911Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "0aa2c3c6-afb8-4207-be7d-59bf509085b6", + "direction": true, + "startTime": "2026-08-11T00:18:28.938Z", + "endTime": "2026-08-11T00:18:28.938Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "693cde2f-b8ea-4475-826a-8237cbcfd66a", + "direction": true, + "startTime": "2026-08-11T00:18:28.938Z", + "endTime": "2026-08-11T00:18:28.938Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6e2fd0cb-09af-494b-8906-df5517b4bf71", + "direction": true, + "startTime": "2026-08-11T00:18:28.939Z", + "endTime": "2026-08-11T00:18:28.939Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e0ade45c-56d3-4d97-aaf8-2ea604278f08", + "direction": true, + "startTime": "2026-08-11T00:18:28.939Z", + "endTime": "2026-08-11T00:18:28.939Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f52b75a2-512d-4f7e-9fcc-5f56e58da93b", + "direction": true, + "startTime": "2026-08-11T00:18:28.939Z", + "endTime": "2026-08-11T00:18:28.939Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "520cb302-e121-4779-8c0f-8c76b00ba317", + "direction": true, + "startTime": "2026-08-11T00:18:28.939Z", + "endTime": "2026-08-11T00:18:28.939Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "81ad5f4c-b03f-4f63-9fd3-0e4582415119", + "direction": true, + "startTime": "2026-08-11T00:18:28.938Z", + "endTime": "2026-08-11T00:18:28.938Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bf2af639-ee35-4311-8b23-b51bbdbff1a1", + "direction": true, + "startTime": "2026-08-11T00:18:28.940Z", + "endTime": "2026-08-11T00:18:28.940Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "201b00b4-0579-4310-980c-0228276c4706", + "direction": true, + "startTime": "2026-08-11T00:18:28.940Z", + "endTime": "2026-08-11T00:18:28.940Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d901069e-a744-49c3-9758-5777ae42b94b", + "direction": true, + "startTime": "2026-08-11T00:18:28.940Z", + "endTime": "2026-08-11T00:18:28.940Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.989Z", + "endTime": "2026-08-11T00:18:28.989Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d78a0d4b-30f5-4981-b10d-ce9373c61f8c", + "direction": true, + "startTime": "2026-08-11T00:18:28.940Z", + "endTime": "2026-08-11T00:18:28.940Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.989Z", + "endTime": "2026-08-11T00:18:28.989Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.989Z", + "endTime": "2026-08-11T00:18:28.989Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.985Z", + "endTime": "2026-08-11T00:18:28.985Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "cc81bb0c-6fe1-4317-91fb-65f633ff9c87", + "direction": true, + "startTime": "2026-08-11T00:18:28.939Z", + "endTime": "2026-08-11T00:18:28.939Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.989Z", + "endTime": "2026-08-11T00:18:28.989Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:18:28.989Z", + "endTime": "2026-08-11T00:18:28.989Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1184, + "clientY": 96, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:31.190Z", + "endTime": "2026-08-11T00:18:31.190Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Add Workflow" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:18:32.405Z", + "endTime": "2026-08-11T00:18:32.405Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:18:32.852Z", + "endTime": "2026-08-11T00:18:32.852Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 646, + "clientY": 162, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:34.435Z", + "endTime": "2026-08-11T00:18:34.435Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 634, + "clientY": 237, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:41.320Z", + "endTime": "2026-08-11T00:18:41.320Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "name": "replayworkflow", + "description": "hi", + "hideInFrontend": false + }, + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:18:45.271Z", + "endTime": "2026-08-11T00:18:45.271Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "workflowRefresh", + "payload": [ + { + "id": 9, + "name": "replayworkflow", + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:18:45.296Z", + "updatedAt": "2026-08-11T00:18:45.296Z", + "description": "hi", + "hideInFrontend": false, + "parentWorkflowId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:18:45.333Z", + "endTime": "2026-08-11T00:18:45.333Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 748, + "clientY": 235, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:46.122Z", + "endTime": "2026-08-11T00:18:46.122Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1071, + "clientY": 181, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:47.386Z", + "endTime": "2026-08-11T00:18:47.386Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:18:47.395Z", + "endTime": "2026-08-11T00:18:47.395Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1242, + "clientY": 589, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:48.887Z", + "endTime": "2026-08-11T00:18:48.887Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "editWorkflow", + "params": { + "workflowId": 9 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:18:49.699Z", + "endTime": "2026-08-11T00:18:49.699Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:18:49.730Z", + "endTime": "2026-08-11T00:18:49.730Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "workflowEditModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:18:50.166Z", + "endTime": "2026-08-11T00:18:50.166Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "node-plus" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:18:51.449Z", + "endTime": "2026-08-11T00:18:51.449Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:18:51.920Z", + "endTime": "2026-08-11T00:18:51.920Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 582, + "clientY": 218, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:18:53.302Z", + "endTime": "2026-08-11T00:18:53.302Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:18:56.807Z", + "endTime": "2026-08-11T00:18:56.807Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:19:06.146Z", + "endTime": "2026-08-11T00:19:06.146Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 907, + "clientY": 337, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:10.820Z", + "endTime": "2026-08-11T00:19:10.820Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 868, + "clientY": 169, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:12.136Z", + "endTime": "2026-08-11T00:19:12.136Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 868, + "clientY": 169, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:12.869Z", + "endTime": "2026-08-11T00:19:12.869Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 869, + "clientY": 163, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:13.652Z", + "endTime": "2026-08-11T00:19:13.652Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 457, + "clientY": 319, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:22.690Z", + "endTime": "2026-08-11T00:19:22.690Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 449, + "clientY": 324, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:23.670Z", + "endTime": "2026-08-11T00:19:23.670Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "name": "first", + "stepType": 2, + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepPrevious": null + }, + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:19:31.848Z", + "endTime": "2026-08-11T00:19:31.848Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "workflow_stepRefresh", + "payload": [ + { + "id": 20, + "name": "first", + "deleted": false, + "stepType": 2, + "createdAt": "2026-08-11T00:19:31.857Z", + "updatedAt": "2026-08-11T00:19:31.857Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:19:31.872Z", + "endTime": "2026-08-11T00:19:31.872Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:19:31.875Z", + "endTime": "2026-08-11T00:19:31.875Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1075, + "clientY": 524, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:32.187Z", + "endTime": "2026-08-11T00:19:32.187Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 313, + "clientY": 241, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:36.337Z", + "endTime": "2026-08-11T00:19:36.337Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "node-plus" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:19:38.122Z", + "endTime": "2026-08-11T00:19:38.122Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:19:38.571Z", + "endTime": "2026-08-11T00:19:38.571Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 609, + "clientY": 149, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:40.586Z", + "endTime": "2026-08-11T00:19:40.586Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 599, + "clientY": 225, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:43.806Z", + "endTime": "2026-08-11T00:19:43.806Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "name": "second", + "stepType": 1, + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepPrevious": "20" + }, + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:19:47.379Z", + "endTime": "2026-08-11T00:19:47.379Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "workflow_stepRefresh", + "payload": [ + { + "id": 21, + "name": "second", + "deleted": false, + "stepType": 1, + "createdAt": "2026-08-11T00:19:47.386Z", + "updatedAt": "2026-08-11T00:19:47.386Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 20 + } + ], + "direction": false, + "startTime": "2026-08-11T00:19:47.411Z", + "endTime": "2026-08-11T00:19:47.411Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:19:47.419Z", + "endTime": "2026-08-11T00:19:47.419Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 946, + "clientY": 441, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:48.354Z", + "endTime": "2026-08-11T00:19:48.354Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 941, + "clientY": 444, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:49.619Z", + "endTime": "2026-08-11T00:19:49.619Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 370, + "clientY": 232, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:53.757Z", + "endTime": "2026-08-11T00:19:53.757Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "workflowEditModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:19:56.536Z", + "endTime": "2026-08-11T00:19:56.536Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:19:56.561Z", + "endTime": "2026-08-11T00:19:56.561Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d386e3e9-fd03-4749-8360-f023ae36f0f5", + "direction": true, + "startTime": "2026-08-11T00:19:56.561Z", + "endTime": "2026-08-11T00:19:56.561Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1119, + "clientY": 563, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:19:57.988Z", + "endTime": "2026-08-11T00:19:57.988Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:20:00.178Z", + "endTime": "2026-08-11T00:20:00.178Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1071, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:20:00.696Z", + "endTime": "2026-08-11T00:20:00.696Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/510-create-study.json b/backend/tests/regression_stories/510-create-study.json new file mode 100644 index 000000000..9318b38ec --- /dev/null +++ b/backend/tests/regression_stories/510-create-study.json @@ -0,0 +1,3805 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:27:52.230Z", + "traceCount": 53, + "recording": { + "name": "510-create-study", + "status": "finished", + "startTime": "2026-08-11T00:26:10.445Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:26:38.659Z" + }, + "traces": [ + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 3, + "name": "Recording 8/11/2026, 2:26:10 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:26:10.447Z", + "startTime": "2026-08-11T00:26:10.445Z", + "updatedAt": "2026-08-11T00:26:10.447Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:26:10.470Z", + "endTime": "2026-08-11T00:26:10.470Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:26:11.651Z", + "endTime": "2026-08-11T00:26:11.651Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/studies", + "from": "/dashboard/documents" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.714Z", + "endTime": "2026-08-11T00:26:13.714Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "61848554-a949-42d7-be86-46db44861f6d", + "direction": true, + "startTime": "2026-08-11T00:26:13.731Z", + "endTime": "2026-08-11T00:26:13.731Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "38797f26-1ba9-4311-8e44-e88c794b14e5", + "direction": true, + "startTime": "2026-08-11T00:26:13.733Z", + "endTime": "2026-08-11T00:26:13.733Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "0f5f52d2-73e3-455b-a23d-bce0fb7a041b", + "direction": true, + "startTime": "2026-08-11T00:26:13.733Z", + "endTime": "2026-08-11T00:26:13.733Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5c66940b-30c7-4749-99a4-31fe3fa802b8", + "direction": true, + "startTime": "2026-08-11T00:26:13.734Z", + "endTime": "2026-08-11T00:26:13.734Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "54a794a7-2196-4335-91fe-fc994bf5ab81", + "direction": true, + "startTime": "2026-08-11T00:26:13.734Z", + "endTime": "2026-08-11T00:26:13.734Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b44f04e9-a371-455c-97bb-6bbba1bde9ce", + "direction": true, + "startTime": "2026-08-11T00:26:13.734Z", + "endTime": "2026-08-11T00:26:13.734Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.751Z", + "endTime": "2026-08-11T00:26:13.751Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.753Z", + "endTime": "2026-08-11T00:26:13.753Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.756Z", + "endTime": "2026-08-11T00:26:13.756Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "configuration", + "filter": [ + { + "key": "type", + "value": 0 + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.755Z", + "endTime": "2026-08-11T00:26:13.755Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.756Z", + "endTime": "2026-08-11T00:26:13.756Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.756Z", + "endTime": "2026-08-11T00:26:13.756Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.756Z", + "endTime": "2026-08-11T00:26:13.756Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.756Z", + "endTime": "2026-08-11T00:26:13.756Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.757Z", + "endTime": "2026-08-11T00:26:13.757Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.757Z", + "endTime": "2026-08-11T00:26:13.757Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.757Z", + "endTime": "2026-08-11T00:26:13.757Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.758Z", + "endTime": "2026-08-11T00:26:13.758Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.757Z", + "endTime": "2026-08-11T00:26:13.757Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "include": [ + { + "by": "userId", + "table": "user" + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.757Z", + "endTime": "2026-08-11T00:26:13.757Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.758Z", + "endTime": "2026-08-11T00:26:13.758Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.758Z", + "endTime": "2026-08-11T00:26:13.758Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.757Z", + "endTime": "2026-08-11T00:26:13.757Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.758Z", + "endTime": "2026-08-11T00:26:13.758Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.758Z", + "endTime": "2026-08-11T00:26:13.758Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:26:13.756Z", + "endTime": "2026-08-11T00:26:13.756Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:26:13.796Z", + "endTime": "2026-08-11T00:26:13.796Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:26:15.035Z", + "endTime": "2026-08-11T00:26:15.035Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:26:15.048Z", + "endTime": "2026-08-11T00:26:15.048Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-11T00:26:15.049Z", + "endTime": "2026-08-11T00:26:15.049Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:26:15.505Z", + "endTime": "2026-08-11T00:26:15.505Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 630, + "clientY": 156, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:16.525Z", + "endTime": "2026-08-11T00:26:16.525Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 526, + "clientY": 229, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:18.276Z", + "endTime": "2026-08-11T00:26:18.276Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 524, + "clientY": 308, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:19.692Z", + "endTime": "2026-08-11T00:26:19.692Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 522, + "clientY": 393, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:20.943Z", + "endTime": "2026-08-11T00:26:20.943Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 575, + "clientY": 638, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:22.908Z", + "endTime": "2026-08-11T00:26:22.908Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 800, + "clientY": 566, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:27.176Z", + "endTime": "2026-08-11T00:26:27.176Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 860, + "clientY": 510, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:27.966Z", + "endTime": "2026-08-11T00:26:27.966Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "end": null, + "name": "replaystudy", + "start": null, + "collab": false, + "tagSetId": 1, + "anonymize": false, + "resumable": false, + "timeLimit": 0, + "documentId": 0, + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "limitSessions": 0, + "stepDocuments": [ + { + "id": 1, + "documentId": 2, + "configuration": {} + }, + { + "id": 2, + "documentId": null, + "configuration": {} + } + ], + "isTemplateMode": false, + "multipleSubmit": false, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:26:29.367Z", + "endTime": "2026-08-11T00:26:29.367Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "8c8ab9b8-5ca1-41f0-88ae-b52d57a67879", + "name": "Shrek_Script_renamed", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:25:13.188Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:26:29.404Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 3, + "hash": "d9c1ee71-172f-469e-83f1-03271e817ea0", + "name": "Document Study 1", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:26:29.412Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:26:29.412Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 3, + "hash": "d9c1ee71-172f-469e-83f1-03271e817ea0", + "name": "Document Study 1", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:26:29.412Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:26:29.419Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:26:29.424Z", + "endTime": "2026-08-11T00:26:29.424Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:26:29.425Z", + "endTime": "2026-08-11T00:26:29.425Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "deleted": false, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "deleted": false, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + } + ], + "direction": false, + "startTime": "2026-08-11T00:26:29.425Z", + "endTime": "2026-08-11T00:26:29.425Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1075, + "clientY": 761, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:29.658Z", + "endTime": "2026-08-11T00:26:29.658Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:26:31.485Z", + "endTime": "2026-08-11T00:26:31.485Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d58d6191-d1eb-4e54-9e03-9946d0e54e03", + "direction": true, + "startTime": "2026-08-11T00:26:31.488Z", + "endTime": "2026-08-11T00:26:31.488Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "29f05308-d710-41d9-aeba-05558f40ea22", + "direction": true, + "startTime": "2026-08-11T00:26:31.489Z", + "endTime": "2026-08-11T00:26:31.489Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1064, + "clientY": 231, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:31.842Z", + "endTime": "2026-08-11T00:26:31.842Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1133, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:33.242Z", + "endTime": "2026-08-11T00:26:33.242Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1086, + "clientY": 9, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:26:37.026Z", + "endTime": "2026-08-11T00:26:37.026Z" + }, + { + "recordingId": 3, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:26:37.356Z", + "endTime": "2026-08-11T00:26:37.356Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/515-create-study-template.json b/backend/tests/regression_stories/515-create-study-template.json new file mode 100644 index 000000000..5b696e35e --- /dev/null +++ b/backend/tests/regression_stories/515-create-study-template.json @@ -0,0 +1,557 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:34:29.158Z", + "traceCount": 24, + "recording": { + "name": "515-create-study-template", + "status": "finished", + "startTime": "2026-08-11T00:32:07.234Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:32:42.546Z" + }, + "traces": [ + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 5, + "name": "Recording 8/11/2026, 2:32:07 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:32:07.236Z", + "startTime": "2026-08-11T00:32:07.234Z", + "updatedAt": "2026-08-11T00:32:07.236Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:32:07.256Z", + "endTime": "2026-08-11T00:32:07.256Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:32:08.554Z", + "endTime": "2026-08-11T00:32:08.554Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "folder", + "title": "Saved Templates" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:32:10.689Z", + "endTime": "2026-08-11T00:32:10.689Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "savedTemplatesModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:32:11.148Z", + "endTime": "2026-08-11T00:32:11.148Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "savedTemplatesModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:32:12.658Z", + "endTime": "2026-08-11T00:32:12.658Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Create Template" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:32:12.664Z", + "endTime": "2026-08-11T00:32:12.664Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:32:13.146Z", + "endTime": "2026-08-11T00:32:13.146Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 742, + "clientY": 157, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:14.230Z", + "endTime": "2026-08-11T00:32:14.230Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 623, + "clientY": 174, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:16.348Z", + "endTime": "2026-08-11T00:32:16.348Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 619, + "clientY": 224, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:21.430Z", + "endTime": "2026-08-11T00:32:21.430Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 595, + "clientY": 320, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:23.229Z", + "endTime": "2026-08-11T00:32:23.229Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 594, + "clientY": 396, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:24.630Z", + "endTime": "2026-08-11T00:32:24.630Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 598, + "clientY": 446, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:28.114Z", + "endTime": "2026-08-11T00:32:28.114Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 598, + "clientY": 598, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:29.981Z", + "endTime": "2026-08-11T00:32:29.981Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 691, + "clientY": 636, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:33.496Z", + "endTime": "2026-08-11T00:32:33.496Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySaveAsTemplate", + "payload": { + "onlyTemplate": true, + "templateData": { + "end": null, + "name": "replaystudytemplate", + "start": null, + "collab": false, + "tagSetId": 1, + "anonymize": false, + "resumable": false, + "timeLimit": 0, + "documentId": 0, + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "limitSessions": 0, + "stepDocuments": [ + { + "id": 1, + "documentId": 2, + "configuration": {} + }, + { + "id": 2, + "documentId": null, + "configuration": {} + } + ], + "isTemplateMode": true, + "multipleSubmit": false, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + }, + "direction": true, + "startTime": "2026-08-11T00:32:35.358Z", + "endTime": "2026-08-11T00:32:35.358Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "8c8ab9b8-5ca1-41f0-88ae-b52d57a67879", + "name": "Shrek_Script_renamed", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:25:13.188Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.419Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 2, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 4, + "hash": "2a1d0c59-9b50-4703-bc81-2a75c534f95e", + "name": "Document Study 2", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:32:35.422Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.422Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 4, + "hash": "2a1d0c59-9b50-4703-bc81-2a75c534f95e", + "name": "Document Study 2", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:32:35.422Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.427Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:32:35.430Z", + "endTime": "2026-08-11T00:32:35.430Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 3, + "deleted": false, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "deleted": false, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:32:35.430Z", + "endTime": "2026-08-11T00:32:35.430Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:32:35.430Z", + "endTime": "2026-08-11T00:32:35.430Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 900, + "clientY": 506, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:36.229Z", + "endTime": "2026-08-11T00:32:36.229Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:32:39.440Z", + "endTime": "2026-08-11T00:32:39.440Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1131, + "clientY": 174, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:40.300Z", + "endTime": "2026-08-11T00:32:40.300Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1145, + "clientY": 3, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:32:41.082Z", + "endTime": "2026-08-11T00:32:41.082Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:32:41.555Z", + "endTime": "2026-08-11T00:32:41.555Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/520-assign-user-to-study.json b/backend/tests/regression_stories/520-assign-user-to-study.json new file mode 100644 index 000000000..2d8d03f6d --- /dev/null +++ b/backend/tests/regression_stories/520-assign-user-to-study.json @@ -0,0 +1,1956 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:34:31.943Z", + "traceCount": 86, + "recording": { + "name": "520-assign-user-to-study", + "status": "finished", + "startTime": "2026-08-11T00:33:09.796Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:33:49.463Z" + }, + "traces": [ + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 6, + "name": "Recording 8/11/2026, 2:33:09 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:33:09.797Z", + "startTime": "2026-08-11T00:33:09.796Z", + "updatedAt": "2026-08-11T00:33:09.797Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:09.807Z", + "endTime": "2026-08-11T00:33:09.807Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:33:10.884Z", + "endTime": "2026-08-11T00:33:10.884Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "icon": "plus-square", + "title": "Add Single Assignment" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.593Z", + "endTime": "2026-08-11T00:33:13.593Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "filter": [ + { + "key": "template", + "value": true + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.609Z", + "endTime": "2026-08-11T00:33:13.609Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.609Z", + "endTime": "2026-08-11T00:33:13.609Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.623Z", + "endTime": "2026-08-11T00:33:13.623Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document", + "filter": [ + { + "key": "readyForReview", + "value": true + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.623Z", + "endTime": "2026-08-11T00:33:13.623Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.623Z", + "endTime": "2026-08-11T00:33:13.623Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.624Z", + "endTime": "2026-08-11T00:33:13.624Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "filter": [ + { + "key": "template", + "value": true + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.623Z", + "endTime": "2026-08-11T00:33:13.623Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.624Z", + "endTime": "2026-08-11T00:33:13.624Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "filter": [ + { + "key": "template", + "value": true + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.624Z", + "endTime": "2026-08-11T00:33:13.624Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.624Z", + "endTime": "2026-08-11T00:33:13.624Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:33:13.624Z", + "endTime": "2026-08-11T00:33:13.624Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:13.663Z", + "endTime": "2026-08-11T00:33:13.663Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:13.662Z", + "endTime": "2026-08-11T00:33:13.662Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:13.666Z", + "endTime": "2026-08-11T00:33:13.666Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:13.665Z", + "endTime": "2026-08-11T00:33:13.665Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:13.666Z", + "endTime": "2026-08-11T00:33:13.666Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:13.667Z", + "endTime": "2026-08-11T00:33:13.667Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:33:14.079Z", + "endTime": "2026-08-11T00:33:14.079Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:18.874Z", + "endTime": "2026-08-11T00:33:18.874Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9e8d6fb0-1c83-4d1d-b4b2-f7cde97e25de", + "direction": true, + "startTime": "2026-08-11T00:33:18.880Z", + "endTime": "2026-08-11T00:33:18.880Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "4adaa282-a1c2-4021-8010-b57cf9154600", + "direction": true, + "startTime": "2026-08-11T00:33:18.881Z", + "endTime": "2026-08-11T00:33:18.881Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:33:18.881Z", + "endTime": "2026-08-11T00:33:18.881Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:33:18.881Z", + "endTime": "2026-08-11T00:33:18.881Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e424a1d8-2c52-4813-a9cc-e49890111bec", + "direction": true, + "startTime": "2026-08-11T00:33:18.881Z", + "endTime": "2026-08-11T00:33:18.881Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:33:18.897Z", + "endTime": "2026-08-11T00:33:18.897Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:33:18.897Z", + "endTime": "2026-08-11T00:33:18.897Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:33:18.897Z", + "endTime": "2026-08-11T00:33:18.897Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 1, + "hash": "8852a746-360e-4c31-add2-4d1c75bfb96d", + "name": "Showcase Document", + "type": 0, + "public": false, + "userId": 3, + "createdAt": "2026-08-11T00:15:41.390Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:15:41.390Z", + "creator_name": "guest", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 3, + "hash": "d9c1ee71-172f-469e-83f1-03271e817ea0", + "name": "Document Study 1", + "type": 1, + "public": false, + "userId": 4, + "createdAt": "2026-08-11T00:26:29.412Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:26:29.419Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 2, + "hash": "8c8ab9b8-5ca1-41f0-88ae-b52d57a67879", + "name": "Shrek_Script_renamed", + "type": 0, + "public": false, + "userId": 4, + "createdAt": "2026-08-11T00:25:13.188Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.419Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 2, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 4, + "hash": "2a1d0c59-9b50-4703-bc81-2a75c534f95e", + "name": "Document Study 2", + "type": 1, + "public": false, + "userId": 4, + "createdAt": "2026-08-11T00:32:35.422Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.427Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:18.911Z", + "endTime": "2026-08-11T00:33:18.911Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:18.919Z", + "endTime": "2026-08-11T00:33:18.919Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:18.920Z", + "endTime": "2026-08-11T00:33:18.920Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 825, + "clientY": 236, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:20.932Z", + "endTime": "2026-08-11T00:33:20.932Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Previous" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:23.191Z", + "endTime": "2026-08-11T00:33:23.191Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c2ea09a7-9108-4726-94e6-fefc32c3b551", + "direction": true, + "startTime": "2026-08-11T00:33:23.201Z", + "endTime": "2026-08-11T00:33:23.201Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "602d33ed-a3d9-4d24-a14a-2f1291086a63", + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "23df3ebf-6ca2-493b-ab13-0cf81c26a138", + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b01d8414-5784-49a8-9f9a-9f3a4a08d43f", + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6c87bd6e-1f0f-4d0a-a7eb-59010b33d336", + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "filter": [ + { + "key": "template", + "value": true + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:33:23.203Z", + "endTime": "2026-08-11T00:33:23.203Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:23.215Z", + "endTime": "2026-08-11T00:33:23.215Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:23.215Z", + "endTime": "2026-08-11T00:33:23.215Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 860, + "clientY": 402, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:24.680Z", + "endTime": "2026-08-11T00:33:24.680Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:28.890Z", + "endTime": "2026-08-11T00:33:28.890Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "0d0b7135-8640-4aa4-95cf-1dbe3f6b3ce6", + "direction": true, + "startTime": "2026-08-11T00:33:28.907Z", + "endTime": "2026-08-11T00:33:28.907Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ff812ba3-ad7e-4b0f-8a2f-018eef35ca02", + "direction": true, + "startTime": "2026-08-11T00:33:28.907Z", + "endTime": "2026-08-11T00:33:28.907Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6a4a050b-e659-4835-ad7b-11e51e260309", + "direction": true, + "startTime": "2026-08-11T00:33:28.907Z", + "endTime": "2026-08-11T00:33:28.907Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 981, + "clientY": 231, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:30.414Z", + "endTime": "2026-08-11T00:33:30.414Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:33.356Z", + "endTime": "2026-08-11T00:33:33.356Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:33:33.367Z", + "endTime": "2026-08-11T00:33:33.367Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:33:33.367Z", + "endTime": "2026-08-11T00:33:33.367Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:33:33.367Z", + "endTime": "2026-08-11T00:33:33.367Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 1, + "hash": "8852a746-360e-4c31-add2-4d1c75bfb96d", + "name": "Showcase Document", + "type": 0, + "public": false, + "userId": 3, + "createdAt": "2026-08-11T00:15:41.390Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:15:41.390Z", + "creator_name": "guest", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 3, + "hash": "d9c1ee71-172f-469e-83f1-03271e817ea0", + "name": "Document Study 1", + "type": 1, + "public": false, + "userId": 4, + "createdAt": "2026-08-11T00:26:29.412Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:26:29.419Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 2, + "hash": "8c8ab9b8-5ca1-41f0-88ae-b52d57a67879", + "name": "Shrek_Script_renamed", + "type": 0, + "public": false, + "userId": 4, + "createdAt": "2026-08-11T00:25:13.188Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.419Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 2, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 4, + "hash": "2a1d0c59-9b50-4703-bc81-2a75c534f95e", + "name": "Document Study 2", + "type": 1, + "public": false, + "userId": 4, + "createdAt": "2026-08-11T00:32:35.422Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:32:35.427Z", + "creator_name": "admin", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:33.371Z", + "endTime": "2026-08-11T00:33:33.371Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:33:33.374Z", + "endTime": "2026-08-11T00:33:33.374Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:33:33.374Z", + "endTime": "2026-08-11T00:33:33.374Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:33.386Z", + "endTime": "2026-08-11T00:33:33.386Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:33.386Z", + "endTime": "2026-08-11T00:33:33.386Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 969, + "clientY": 243, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:35.398Z", + "endTime": "2026-08-11T00:33:35.398Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:37.980Z", + "endTime": "2026-08-11T00:33:37.980Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "08f30338-812e-4b37-bea9-6898ddaaf833", + "direction": true, + "startTime": "2026-08-11T00:33:38.009Z", + "endTime": "2026-08-11T00:33:38.009Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8548c86b-5eca-4493-a144-ab7ca272e7d3", + "direction": true, + "startTime": "2026-08-11T00:33:38.010Z", + "endTime": "2026-08-11T00:33:38.010Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b864b268-21a9-460e-9d89-48dd769434bf", + "direction": true, + "startTime": "2026-08-11T00:33:38.010Z", + "endTime": "2026-08-11T00:33:38.010Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b8bb66e6-6144-4f61-ad11-5c6017a32a62", + "direction": true, + "startTime": "2026-08-11T00:33:38.010Z", + "endTime": "2026-08-11T00:33:38.010Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2f1705c1-78c3-4971-9d4b-deb0d247c47b", + "direction": true, + "startTime": "2026-08-11T00:33:38.010Z", + "endTime": "2026-08-11T00:33:38.010Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1013, + "clientY": 290, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:39.031Z", + "endTime": "2026-08-11T00:33:39.031Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:40.208Z", + "endTime": "2026-08-11T00:33:40.208Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "assignmentCreateSingle", + "payload": { + "reviewer": [ + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-11T00:15:41.381Z", + "documents": 0, + "firstName": "guest", + "updatedAt": "2026-08-11T00:15:41.381Z", + "acceptedAt": null, + "resetToken": null, + "rolesNames": "guest", + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "studySessions": 0, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "template": { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + "assignmentType": "study_session", + "workflowMapping": { + "1": 1, + "2": 2 + }, + "selectedAssignments": [ + { + "id": 1, + "status": "Running", + "userId": 4, + "studyId": 1, + "lastName": "User", + "createdAt": "8/11/2026, 2:30:28 AM", + "firstName": "admin", + "workflowType": "Peer Review Workflow", + "studyLastName": "User", + "studyFirstName": "admin", + "submissionGroup": "N/A", + "completeUserName": "admin User", + "studyCompleteUserName": "admin User" + } + ], + "enableEmailNotification": false + }, + "direction": true, + "startTime": "2026-08-11T00:33:41.794Z", + "endTime": "2026-08-11T00:33:41.794Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Submit" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:33:41.798Z", + "endTime": "2026-08-11T00:33:41.798Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "f4be4faa-a36a-467f-936a-4e2805f48ad4", + "start": null, + "userId": 3, + "deleted": false, + "studyId": 3, + "createdAt": "2026-08-11T00:33:41.871Z", + "updatedAt": "2026-08-11T00:33:41.871Z", + "numberSteps": 1, + "studyStepId": 5, + "studyStepIdMax": 5, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:41.874Z", + "endTime": "2026-08-11T00:33:41.874Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:41.874Z", + "endTime": "2026-08-11T00:33:41.874Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentRefresh", + "payload": [ + { + "id": 5, + "hash": "72dbe4d3-46de-4d62-b305-3a9aeb6309aa", + "name": "Shrek_Script_renamed_copy", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:33:41.821Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:33:41.821Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": 2, + "uploadedByUserId": 4 + }, + { + "id": 6, + "hash": "95f54acf-08bf-4ff3-9a26-95f52ad5d815", + "name": "Document Study 1_copy", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:33:41.835Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:33:41.835Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": 3, + "uploadedByUserId": null + }, + { + "id": 5, + "hash": "72dbe4d3-46de-4d62-b305-3a9aeb6309aa", + "name": "Shrek_Script_renamed_copy", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:33:41.821Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:33:41.860Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": 2, + "uploadedByUserId": 4 + }, + { + "id": 6, + "hash": "95f54acf-08bf-4ff3-9a26-95f52ad5d815", + "name": "Document Study 1_copy", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:33:41.835Z", + "projectId": 1, + "updatedAt": "2026-08-11T00:33:41.865Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": 3, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:41.873Z", + "endTime": "2026-08-11T00:33:41.873Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 5, + "deleted": false, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "deleted": false, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:33:41.874Z", + "endTime": "2026-08-11T00:33:41.874Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:33:41.895Z", + "endTime": "2026-08-11T00:33:41.895Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b6875816-27c0-463f-9fdf-462cdbccb268", + "direction": true, + "startTime": "2026-08-11T00:33:41.916Z", + "endTime": "2026-08-11T00:33:41.916Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bd109548-8a9b-4148-910f-0f34933136a2", + "direction": true, + "startTime": "2026-08-11T00:33:41.915Z", + "endTime": "2026-08-11T00:33:41.915Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "41178d8f-5db1-4d8a-b18d-fccbf504ea82", + "direction": true, + "startTime": "2026-08-11T00:33:41.916Z", + "endTime": "2026-08-11T00:33:41.916Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "36966c06-6e3d-49e1-8bf7-89912a6e2981", + "direction": true, + "startTime": "2026-08-11T00:33:41.916Z", + "endTime": "2026-08-11T00:33:41.916Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ec13e0a1-2cab-438c-9464-ab2171ed41f9", + "direction": true, + "startTime": "2026-08-11T00:33:41.916Z", + "endTime": "2026-08-11T00:33:41.916Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 968, + "clientY": 285, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:43.351Z", + "endTime": "2026-08-11T00:33:43.351Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:33:47.227Z", + "endTime": "2026-08-11T00:33:47.227Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:33:47.314Z", + "endTime": "2026-08-11T00:33:47.314Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 971, + "clientY": 27, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:33:48.430Z", + "endTime": "2026-08-11T00:33:48.430Z" + }, + { + "recordingId": 6, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:33:48.585Z", + "endTime": "2026-08-11T00:33:48.585Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/530-start-study-session.json b/backend/tests/regression_stories/530-start-study-session.json new file mode 100644 index 000000000..c833929e8 --- /dev/null +++ b/backend/tests/regression_stories/530-start-study-session.json @@ -0,0 +1,8354 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:34:25.299Z", + "traceCount": 194, + "recording": { + "name": "530-start-study-session", + "status": "finished", + "startTime": "2026-08-11T00:30:20.122Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:30:42.649Z" + }, + "traces": [ + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 4, + "name": "Recording 8/11/2026, 2:30:20 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:30:20.124Z", + "startTime": "2026-08-11T00:30:20.122Z", + "updatedAt": "2026-08-11T00:30:20.124Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:20.144Z", + "endTime": "2026-08-11T00:30:20.144Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:30:21.213Z", + "endTime": "2026-08-11T00:30:21.213Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/studies", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.750Z", + "endTime": "2026-08-11T00:30:24.750Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "31b4d949-7837-4f8e-a6dc-e0e7d6dc1407", + "direction": true, + "startTime": "2026-08-11T00:30:24.774Z", + "endTime": "2026-08-11T00:30:24.774Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "257ac962-66e0-4108-83d9-a6d1b7effbe0", + "direction": true, + "startTime": "2026-08-11T00:30:24.774Z", + "endTime": "2026-08-11T00:30:24.774Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1f7cecdc-8467-41af-b735-01a1efeda584", + "direction": true, + "startTime": "2026-08-11T00:30:24.775Z", + "endTime": "2026-08-11T00:30:24.775Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "68643731-ffa7-41d2-8fec-40313e9dc53d", + "direction": true, + "startTime": "2026-08-11T00:30:24.775Z", + "endTime": "2026-08-11T00:30:24.775Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5045ae6c-0601-4a78-ae34-742957ebde49", + "direction": true, + "startTime": "2026-08-11T00:30:24.775Z", + "endTime": "2026-08-11T00:30:24.775Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6f74327d-4d85-4eb9-964a-0dc2ab7ac2f8", + "direction": true, + "startTime": "2026-08-11T00:30:24.775Z", + "endTime": "2026-08-11T00:30:24.775Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.803Z", + "endTime": "2026-08-11T00:30:24.803Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "configuration", + "filter": [ + { + "key": "type", + "value": 0 + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "include": [ + { + "by": "userId", + "table": "user" + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.806Z", + "endTime": "2026-08-11T00:30:24.806Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.807Z", + "endTime": "2026-08-11T00:30:24.807Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.807Z", + "endTime": "2026-08-11T00:30:24.807Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.807Z", + "endTime": "2026-08-11T00:30:24.807Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.807Z", + "endTime": "2026-08-11T00:30:24.807Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.807Z", + "endTime": "2026-08-11T00:30:24.807Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:30:24.807Z", + "endTime": "2026-08-11T00:30:24.807Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:24.837Z", + "endTime": "2026-08-11T00:30:24.837Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "openStudy", + "params": { + "studyId": 1 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.122Z", + "endTime": "2026-08-11T00:30:27.122Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/study/584adaad-05b8-4235-b575-59b6c6c0d112", + "from": "/dashboard/studies" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.163Z", + "endTime": "2026-08-11T00:30:27.163Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9c933b38-06dc-45ad-a208-8de0a82002df", + "direction": true, + "startTime": "2026-08-11T00:30:27.171Z", + "endTime": "2026-08-11T00:30:27.171Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b117e043-e62b-47a4-814e-bdc86701c574", + "direction": true, + "startTime": "2026-08-11T00:30:27.171Z", + "endTime": "2026-08-11T00:30:27.171Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5c51ece7-908e-41cb-a300-c2c00837f870", + "direction": true, + "startTime": "2026-08-11T00:30:27.171Z", + "endTime": "2026-08-11T00:30:27.171Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f95bef11-5287-4fe8-9150-43e0c53dc414", + "direction": true, + "startTime": "2026-08-11T00:30:27.171Z", + "endTime": "2026-08-11T00:30:27.171Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8e795634-e296-470d-8c88-ab330d74be90", + "direction": true, + "startTime": "2026-08-11T00:30:27.187Z", + "endTime": "2026-08-11T00:30:27.187Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "415f6138-e8e0-42ac-bfd4-e924ccebbf1b", + "direction": true, + "startTime": "2026-08-11T00:30:27.187Z", + "endTime": "2026-08-11T00:30:27.187Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5cd36be4-2f78-4561-9250-1cd8219c368b", + "direction": true, + "startTime": "2026-08-11T00:30:27.185Z", + "endTime": "2026-08-11T00:30:27.185Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "aded1805-abd4-4af2-be58-33baf7fb1677", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5cef42b3-036c-4897-a962-453749bb40f4", + "direction": true, + "startTime": "2026-08-11T00:30:27.187Z", + "endTime": "2026-08-11T00:30:27.187Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e5ff7ac1-3908-4cc3-b826-4ecfb6ed1333", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "45bf3b1a-7f13-4f3d-9698-a2c917c3457d", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "227223d5-88dd-4d2e-b431-82fb8bfb08fc", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7d23c4ce-04af-4789-ac4d-319cb490787d", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5f1d58fd-5a6e-4cf0-a9e0-6f790dfaf3a7", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "39d1aefb-ae5c-4666-a54d-7c01e457a030", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "00312a76-6848-4268-ac71-cab365e106d0", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "56772146-abe5-4efd-80f0-e19f9dd7f659", + "direction": true, + "startTime": "2026-08-11T00:30:27.188Z", + "endTime": "2026-08-11T00:30:27.188Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "46c98c7a-709f-443b-bf18-e437b98dbc7e", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9cbadb6f-2489-4e3e-b1a5-e3ccc4e876db", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "085989b5-9c84-47a3-9080-f9b9e0c60fc3", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8f20cb3f-c7c1-4cdd-b2cd-9edb05e5d073", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2f607c44-4220-4a60-b506-42e414777f5e", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2efbbe48-31b5-47ae-8383-4a1a57bd0f11", + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataByHash", + "payload": { + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.189Z", + "endTime": "2026-08-11T00:30:27.189Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:27.211Z", + "endTime": "2026-08-11T00:30:27.211Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:27.211Z", + "endTime": "2026-08-11T00:30:27.211Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1231, + "clientY": 221, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.295Z", + "endTime": "2026-08-11T00:30:27.295Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "studyStart", + "props": { + "studyId": 1, + "studyClosed": false, + "studySessionId": 0 + } + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:30:27.679Z", + "endTime": "2026-08-11T00:30:27.679Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 913, + "clientY": 198, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.779Z", + "endTime": "2026-08-11T00:30:28.779Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.873Z", + "endTime": "2026-08-11T00:30:28.873Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionStart", + "payload": { + "studyId": 1, + "studySessionId": 0 + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.870Z", + "endTime": "2026-08-11T00:30:28.870Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", + "start": "2026-08-11T00:30:28.883Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:30:28.884Z", + "updatedAt": "2026-08-11T00:30:28.884Z", + "numberSteps": 1, + "studyStepId": 1, + "studyStepIdMax": 1, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:28.891Z", + "endTime": "2026-08-11T00:30:28.891Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "studyStart", + "props": { + "studyId": 1, + "studyClosed": false, + "studySessionId": 0 + } + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.897Z", + "endTime": "2026-08-11T00:30:28.897Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d6261bb8-2eab-4977-981b-5d92013ddc65", + "direction": true, + "startTime": "2026-08-11T00:30:28.910Z", + "endTime": "2026-08-11T00:30:28.910Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentDataGet", + "payload": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.912Z", + "endTime": "2026-08-11T00:30:28.912Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentGet", + "payload": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.925Z", + "endTime": "2026-08-11T00:30:28.925Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 1, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentSubscribe", + "payload": { + "documentId": 2 + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentGetData", + "payload": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_environment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "serviceRefresh", + "payload": { + "data": { + "name": "sentiment_classification", + "input": { + "data": { + "text": { + "type": "string", + "required": true, + "description": "The text to be classified" + } + }, + "example": { + "text": "This restaurant is awesome!" + } + }, + "output": { + "data": { + "label": { + "type": "string", + "description": "The label of the classification" + }, + "score": { + "type": "float", + "description": "The score of the classification" + } + }, + "example": { + "label": "pos", + "score": 0.9 + } + }, + "description": "This classifies a given paragraph according to it's sentiment returning a polarity estimate." + }, + "type": "skillConfig", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-11T00:30:28.931Z", + "endTime": "2026-08-11T00:30:28.931Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "serviceCommand", + "payload": { + "data": { + "name": "sentiment_classification" + }, + "command": "skillGetConfig", + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-11T00:30:28.929Z", + "endTime": "2026-08-11T00:30:28.929Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "commentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:28.941Z", + "endTime": "2026-08-11T00:30:28.941Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "tagRefresh", + "payload": [ + { + "id": 1, + "name": "Highlight", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "warning", + "createdAt": "2026-08-11T00:15:41.318Z", + "updatedAt": "2026-08-11T00:15:41.318Z", + "description": "Highlight" + }, + { + "id": 2, + "name": "Strength", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "success", + "createdAt": "2026-08-11T00:15:41.318Z", + "updatedAt": "2026-08-11T00:15:41.318Z", + "description": "Strength" + }, + { + "id": 3, + "name": "Weakness", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "danger", + "createdAt": "2026-08-11T00:15:41.318Z", + "updatedAt": "2026-08-11T00:15:41.318Z", + "description": "Weakness" + }, + { + "id": 4, + "name": "Other", + "public": true, + "userId": null, + "tagSetId": 1, + "colorCode": "info", + "createdAt": "2026-08-11T00:15:41.318Z", + "updatedAt": "2026-08-11T00:15:41.318Z", + "description": "Other" + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:28.942Z", + "endTime": "2026-08-11T00:30:28.942Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "user_environmentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:28.943Z", + "endTime": "2026-08-11T00:30:28.943Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 3, + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Validation schema for UKP Exposé LaTeX submissions", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:28.944Z", + "endTime": "2026-08-11T00:30:28.944Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "annotationRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:28.949Z", + "endTime": "2026-08-11T00:30:28.949Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "commentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:28.951Z", + "endTime": "2026-08-11T00:30:28.951Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "comment_voteRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:28.953Z", + "endTime": "2026-08-11T00:30:28.953Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "tagRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:28.954Z", + "endTime": "2026-08-11T00:30:28.954Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.103Z", + "endTime": "2026-08-11T00:30:29.103Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.105Z", + "endTime": "2026-08-11T00:30:29.105Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.105Z", + "endTime": "2026-08-11T00:30:29.105Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.107Z", + "endTime": "2026-08-11T00:30:29.107Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.106Z", + "endTime": "2026-08-11T00:30:29.106Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.108Z", + "endTime": "2026-08-11T00:30:29.108Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "comment_stateRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:30:29.156Z", + "endTime": "2026-08-11T00:30:29.156Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "StudyLoadingModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.364Z", + "endTime": "2026-08-11T00:30:29.364Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "StudyLoadingModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.362Z", + "endTime": "2026-08-11T00:30:29.362Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 2, + "studyStepId": 1, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": 1 + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-11T00:30:29.428Z", + "endTime": "2026-08-11T00:30:29.428Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1066, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:30:33.364Z", + "endTime": "2026-08-11T00:30:33.364Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/study/584adaad-05b8-4235-b575-59b6c6c0d112" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.383Z", + "endTime": "2026-08-11T00:30:40.383Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d6aa5cb6-53b0-48c0-8787-b226c8b6dd07", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "fb61be07-dfc7-4d87-a9e7-911d3bceabef", + "direction": true, + "startTime": "2026-08-11T00:30:40.412Z", + "endTime": "2026-08-11T00:30:40.412Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "key": "scroll", + "value": "{\"page\":1,\"value\":0}", + "userId": 4, + "documentId": 2, + "studyStepId": 1, + "studySessionId": 1 + }, + "table": "user_environment" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.412Z", + "endTime": "2026-08-11T00:30:40.412Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6547bfeb-8d10-4a97-9e32-74f0f78545f2", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "collabUnsubscribe", + "payload": { + "documentId": 2 + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.412Z", + "endTime": "2026-08-11T00:30:40.412Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "21116749-c50d-41ae-a30b-797fc97a3a8c", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bac31333-8b7c-4849-845d-70f989a03a19", + "direction": true, + "startTime": "2026-08-11T00:30:40.412Z", + "endTime": "2026-08-11T00:30:40.412Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "75b57862-51c6-4ae4-91c8-b6a2293b1c90", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "4c2066aa-47a5-450d-b7b4-e2b249c8f458", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "96d9ea6f-70b1-430c-a086-b9e6f14817de", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d39dae86-91eb-4f02-b543-d612d1592f8d", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e370c0a1-bf5e-4016-ba7f-eecde667015d", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "96baf982-aa67-411a-b8c0-7fe925ea5da0", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "0d18d1b0-d0cc-41df-9d3b-ac35ffc19391", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b75ae5ca-24fa-48d9-9302-210a935b004a", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1d961ab6-814e-421f-9375-13e4ef5d70e9", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c3d9cac6-c065-4bc1-9aa9-7399dc3dfe4a", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "cc2dc51d-ce99-4feb-ae9c-eb49da91e6af", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b297ead9-79c1-4902-8126-357fc8c9e4f0", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1c5e6585-3c6a-4278-bcd2-d92086381363", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3301a8e1-d26c-4bb8-8a9e-2d7eb487c0a6", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b332ecd9-7f58-429a-bc69-34add9a1b582", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d7fd092f-432e-4638-b1ca-bb0735da9d08", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "cbe171ec-c226-46b6-ad99-aa8e0711a7a3", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "4fb3d42c-633c-443e-93e4-55e94bf1bb8c", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "724735f3-d96a-4f80-a95c-a5d5119aea35", + "direction": true, + "startTime": "2026-08-11T00:30:40.416Z", + "endTime": "2026-08-11T00:30:40.416Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3259bb1a-51c3-4384-bc69-14925522e22e", + "direction": true, + "startTime": "2026-08-11T00:30:40.413Z", + "endTime": "2026-08-11T00:30:40.413Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3538ef2f-c7e2-4c28-ba3b-926aaaffe578", + "direction": true, + "startTime": "2026-08-11T00:30:40.416Z", + "endTime": "2026-08-11T00:30:40.416Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "83216b15-700d-40c7-a3b7-23f7a69d1891", + "direction": true, + "startTime": "2026-08-11T00:30:40.418Z", + "endTime": "2026-08-11T00:30:40.418Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b7e405e3-e9c8-4150-8c00-fa0f1dd2a5e0", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6c042ddd-0b6b-44aa-8e93-9f602f5785f3", + "direction": true, + "startTime": "2026-08-11T00:30:40.414Z", + "endTime": "2026-08-11T00:30:40.414Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ce15ad91-32aa-4857-a45a-fe5659a524e8", + "direction": true, + "startTime": "2026-08-11T00:30:40.415Z", + "endTime": "2026-08-11T00:30:40.415Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3abeff11-b092-4c5a-9949-a6f890e9e689", + "direction": true, + "startTime": "2026-08-11T00:30:40.419Z", + "endTime": "2026-08-11T00:30:40.419Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "daf05f58-d1b6-416a-8811-3fb875769628", + "direction": true, + "startTime": "2026-08-11T00:30:40.417Z", + "endTime": "2026-08-11T00:30:40.417Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "43584d53-769b-4a36-a89c-66bc2be0b61a", + "direction": true, + "startTime": "2026-08-11T00:30:40.418Z", + "endTime": "2026-08-11T00:30:40.418Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "166656bb-7f66-4b30-be13-0d985c388b26", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "517a4b14-a156-48fd-8dd4-70c6a870942e", + "direction": true, + "startTime": "2026-08-11T00:30:40.417Z", + "endTime": "2026-08-11T00:30:40.417Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "fcdab490-425c-4cc7-b4a9-ec1f82970afd", + "direction": true, + "startTime": "2026-08-11T00:30:40.417Z", + "endTime": "2026-08-11T00:30:40.417Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9573dab0-38d4-446f-9c90-55c3d43b983c", + "direction": true, + "startTime": "2026-08-11T00:30:40.416Z", + "endTime": "2026-08-11T00:30:40.416Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "4e2dc974-6f0b-4e96-91db-61543d9bf9ba", + "direction": true, + "startTime": "2026-08-11T00:30:40.416Z", + "endTime": "2026-08-11T00:30:40.416Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "0a54116d-54c9-4539-bdfc-823fea78df70", + "direction": true, + "startTime": "2026-08-11T00:30:40.417Z", + "endTime": "2026-08-11T00:30:40.417Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5dba3529-2c6f-41f8-9ccd-3ca31b59c146", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "de54ae96-cc29-40e8-8b1d-86eefadaf43e", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "a3413eba-949a-4cbc-ad04-e55c8a34df85", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_group" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8bd2409d-38ef-43ca-a119-e7a03d9013ac", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "950df6c0-b364-492b-847a-d9c7697f5c5a", + "direction": true, + "startTime": "2026-08-11T00:30:40.416Z", + "endTime": "2026-08-11T00:30:40.416Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "901dda2a-c1af-4dfe-9d04-592a4bd7ed72", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c69a1f31-3119-43fd-a26e-00819b6c7c38", + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "user_environmentRefresh", + "payload": [ + { + "id": 1, + "key": "scroll", + "value": "{\"page\":1,\"value\":0}", + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:30:40.465Z", + "updatedAt": "2026-08-11T00:30:40.465Z", + "documentId": 2, + "studyStepId": 1, + "studySessionId": 1 + } + ], + "direction": false, + "startTime": "2026-08-11T00:30:40.550Z", + "endTime": "2026-08-11T00:30:40.550Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:30:40.448Z", + "endTime": "2026-08-11T00:30:40.448Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:30:41.610Z", + "endTime": "2026-08-11T00:30:41.610Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 933, + "clientY": 3, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:30:41.691Z", + "endTime": "2026-08-11T00:30:41.691Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/540-study-sessions-overview.json b/backend/tests/regression_stories/540-study-sessions-overview.json new file mode 100644 index 000000000..101a2c458 --- /dev/null +++ b/backend/tests/regression_stories/540-study-sessions-overview.json @@ -0,0 +1,806 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:51:34.599Z", + "traceCount": 49, + "recording": { + "name": "540-study-sessions-overview", + "status": "finished", + "startTime": "2026-08-11T00:37:15.224Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:37:41.821Z" + }, + "traces": [ + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 7, + "name": "Recording 8/11/2026, 2:37:15 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:37:15.226Z", + "startTime": "2026-08-11T00:37:15.224Z", + "updatedAt": "2026-08-11T00:37:15.226Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:37:15.249Z", + "endTime": "2026-08-11T00:37:15.249Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:37:16.230Z", + "endTime": "2026-08-11T00:37:16.230Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/study_sessions", + "from": "/dashboard/studies" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:37:18.749Z", + "endTime": "2026-08-11T00:37:18.749Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "11b833fd-f7a7-4b5e-9cae-cc6684dab15a", + "direction": true, + "startTime": "2026-08-11T00:37:18.764Z", + "endTime": "2026-08-11T00:37:18.764Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ea036899-c5e8-4556-8f98-e86872fb619e", + "direction": true, + "startTime": "2026-08-11T00:37:18.764Z", + "endTime": "2026-08-11T00:37:18.764Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "84c156f9-f774-4112-95dc-b5d726731afa", + "direction": true, + "startTime": "2026-08-11T00:37:18.764Z", + "endTime": "2026-08-11T00:37:18.764Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "71d9181d-a69c-4547-b5d8-040d0e92dc4d", + "direction": true, + "startTime": "2026-08-11T00:37:18.769Z", + "endTime": "2026-08-11T00:37:18.769Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "89ebe043-9936-4af1-ade0-0be2b8f289e6", + "direction": true, + "startTime": "2026-08-11T00:37:18.769Z", + "endTime": "2026-08-11T00:37:18.769Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "fe54d09b-d7ae-4d0b-87ba-da24a265177b", + "direction": true, + "startTime": "2026-08-11T00:37:18.770Z", + "endTime": "2026-08-11T00:37:18.770Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "56f1eb29-adfc-4cf3-ad78-bb32e5c24587", + "direction": true, + "startTime": "2026-08-11T00:37:18.770Z", + "endTime": "2026-08-11T00:37:18.770Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1bbd19fc-80d2-4e10-9a83-a0ec373ff4e6", + "direction": true, + "startTime": "2026-08-11T00:37:18.770Z", + "endTime": "2026-08-11T00:37:18.770Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3648c633-31e4-4b63-b298-a69ff3661442", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "326963d1-e06d-4439-b1c4-1c7550f7ed16", + "direction": true, + "startTime": "2026-08-11T00:37:18.770Z", + "endTime": "2026-08-11T00:37:18.770Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "318b977a-48fc-4b13-a5f0-4771e3e55bc2", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "294fca0a-064b-4563-ac14-4f44a1328ac2", + "direction": true, + "startTime": "2026-08-11T00:37:18.771Z", + "endTime": "2026-08-11T00:37:18.771Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2b6472ab-b3a7-4591-b659-12f49b88fe62", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d78d005c-045e-4576-873f-5090547ad5b8", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f38888bb-7467-44f6-94fd-0ec04b5adeb6", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c8824557-2cdd-42bc-bb85-0b288082db86", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "437ff7aa-e161-4ae7-85cf-7d86639f48b4", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "cd189860-eaae-4530-9d35-862b41b92497", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9cd6d674-d1d6-4c8d-a8c8-9d8af1f5577f", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f58fc773-8c55-42cd-a225-3e3879ebda11", + "direction": true, + "startTime": "2026-08-11T00:37:18.775Z", + "endTime": "2026-08-11T00:37:18.775Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ec12d984-400d-49c3-898c-6d0aa19ce733", + "direction": true, + "startTime": "2026-08-11T00:37:18.775Z", + "endTime": "2026-08-11T00:37:18.775Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1d0a46d9-118f-4246-9fed-d58a22d97853", + "direction": true, + "startTime": "2026-08-11T00:37:18.772Z", + "endTime": "2026-08-11T00:37:18.772Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:37:18.836Z", + "endTime": "2026-08-11T00:37:18.836Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:37:18.836Z", + "endTime": "2026-08-11T00:37:18.836Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 137, + "clientY": 262, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:18.936Z", + "endTime": "2026-08-11T00:37:18.936Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/session_overview", + "from": "/dashboard/study_sessions" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:37:19.954Z", + "endTime": "2026-08-11T00:37:19.954Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7081afbd-23de-45c1-a953-2006e7f29f9b", + "direction": true, + "startTime": "2026-08-11T00:37:19.964Z", + "endTime": "2026-08-11T00:37:19.964Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3dfee222-6789-4024-8bbd-91a3d03a9714", + "direction": true, + "startTime": "2026-08-11T00:37:19.964Z", + "endTime": "2026-08-11T00:37:19.964Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:37:20.018Z", + "endTime": "2026-08-11T00:37:20.018Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:37:20.019Z", + "endTime": "2026-08-11T00:37:20.019Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:37:20.019Z", + "endTime": "2026-08-11T00:37:20.019Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:37:20.019Z", + "endTime": "2026-08-11T00:37:20.019Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:37:20.019Z", + "endTime": "2026-08-11T00:37:20.019Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:37:20.037Z", + "endTime": "2026-08-11T00:37:20.037Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:37:20.038Z", + "endTime": "2026-08-11T00:37:20.038Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 136, + "clientY": 295, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:20.269Z", + "endTime": "2026-08-11T00:37:20.269Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 711, + "clientY": 335, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:23.422Z", + "endTime": "2026-08-11T00:37:23.422Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 713, + "clientY": 338, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:24.203Z", + "endTime": "2026-08-11T00:37:24.203Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 650, + "clientY": 183, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:26.568Z", + "endTime": "2026-08-11T00:37:26.568Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 650, + "clientY": 180, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:29.536Z", + "endTime": "2026-08-11T00:37:29.536Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:37:34.247Z", + "endTime": "2026-08-11T00:37:34.247Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:37:34.298Z", + "endTime": "2026-08-11T00:37:34.298Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:37:35.886Z", + "endTime": "2026-08-11T00:37:35.886Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:37:39.671Z", + "endTime": "2026-08-11T00:37:39.671Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1027, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:37:40.817Z", + "endTime": "2026-08-11T00:37:40.817Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:37:40.862Z", + "endTime": "2026-08-11T00:37:40.862Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/545-complete-study-session.json b/backend/tests/regression_stories/545-complete-study-session.json new file mode 100644 index 000000000..67c2d723c --- /dev/null +++ b/backend/tests/regression_stories/545-complete-study-session.json @@ -0,0 +1,7092 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:41:16.264Z", + "traceCount": 255, + "recording": { + "name": "545-complete-study-session", + "status": "finished", + "startTime": "2026-08-11T00:40:22.618Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:40:51.106Z" + }, + "traces": [ + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 9, + "name": "Recording 8/11/2026, 2:40:22 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:40:22.619Z", + "startTime": "2026-08-11T00:40:22.618Z", + "updatedAt": "2026-08-11T00:40:22.619Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:22.635Z", + "endTime": "2026-08-11T00:40:22.635Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:24.140Z", + "endTime": "2026-08-11T00:40:24.140Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/studies", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.167Z", + "endTime": "2026-08-11T00:40:27.167Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8ee49543-6c7e-4eaf-85ef-fdfe1b086de3", + "direction": true, + "startTime": "2026-08-11T00:40:27.186Z", + "endTime": "2026-08-11T00:40:27.186Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "16fde4b3-8be0-4f45-9b76-1130ca8cdf46", + "direction": true, + "startTime": "2026-08-11T00:40:27.186Z", + "endTime": "2026-08-11T00:40:27.186Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9277c344-0bbb-4109-a90f-486d6a8339ae", + "direction": true, + "startTime": "2026-08-11T00:40:27.189Z", + "endTime": "2026-08-11T00:40:27.189Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c477fd52-22d5-4f67-bc15-735ef540c527", + "direction": true, + "startTime": "2026-08-11T00:40:27.189Z", + "endTime": "2026-08-11T00:40:27.189Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "748feb08-779e-40c4-bfd4-c14818b02732", + "direction": true, + "startTime": "2026-08-11T00:40:27.189Z", + "endTime": "2026-08-11T00:40:27.189Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e87a1762-10c8-4b24-8b63-1a44a556655e", + "direction": true, + "startTime": "2026-08-11T00:40:27.189Z", + "endTime": "2026-08-11T00:40:27.189Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.205Z", + "endTime": "2026-08-11T00:40:27.205Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.207Z", + "endTime": "2026-08-11T00:40:27.207Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "configuration", + "filter": [ + { + "key": "type", + "value": 0 + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.207Z", + "endTime": "2026-08-11T00:40:27.207Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.208Z", + "endTime": "2026-08-11T00:40:27.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "include": [ + { + "by": "userId", + "table": "user" + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:40:27.209Z", + "endTime": "2026-08-11T00:40:27.209Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:27.246Z", + "endTime": "2026-08-11T00:40:27.246Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:27.244Z", + "endTime": "2026-08-11T00:40:27.244Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:27.244Z", + "endTime": "2026-08-11T00:40:27.244Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:27.246Z", + "endTime": "2026-08-11T00:40:27.246Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1211, + "clientY": 222, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:29.554Z", + "endTime": "2026-08-11T00:40:29.554Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "openStudy", + "params": { + "studyId": 1 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.715Z", + "endTime": "2026-08-11T00:40:31.715Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/study/584adaad-05b8-4235-b575-59b6c6c0d112", + "from": "/dashboard/studies" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.752Z", + "endTime": "2026-08-11T00:40:31.752Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3fbeae28-5b3f-4dea-8436-6eafb244bb14", + "direction": true, + "startTime": "2026-08-11T00:40:31.774Z", + "endTime": "2026-08-11T00:40:31.774Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f0defd99-c85b-40f5-80ec-f7f626c5d413", + "direction": true, + "startTime": "2026-08-11T00:40:31.776Z", + "endTime": "2026-08-11T00:40:31.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8ec67149-98f9-45b7-be79-66aeaf50654d", + "direction": true, + "startTime": "2026-08-11T00:40:31.776Z", + "endTime": "2026-08-11T00:40:31.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "afe5f69b-1502-4dc4-86cf-a19f552129cc", + "direction": true, + "startTime": "2026-08-11T00:40:31.776Z", + "endTime": "2026-08-11T00:40:31.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d6ca9421-1e26-42be-9da9-644c0ec7e413", + "direction": true, + "startTime": "2026-08-11T00:40:31.776Z", + "endTime": "2026-08-11T00:40:31.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c27b1c1d-f637-49f7-addd-940490345f86", + "direction": true, + "startTime": "2026-08-11T00:40:31.776Z", + "endTime": "2026-08-11T00:40:31.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ae98bcd7-c306-4442-aa81-5a5332383314", + "direction": true, + "startTime": "2026-08-11T00:40:31.776Z", + "endTime": "2026-08-11T00:40:31.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c2f5067d-0801-43aa-be7f-8b10eb848544", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6d5e9f76-fcd1-4062-8e55-716832881d4a", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "05026ebd-8e28-4d0c-a761-ea07162566a7", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "801a808b-07b6-42db-b221-f1ea62ed1b09", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d93f3c5e-3875-4835-aa43-2ef3982fb538", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9e756aaf-c072-4bd6-86b5-35806469bac8", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "407ea84b-4696-420f-948e-1b98d5074be9", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "71beaa1c-de12-4fa7-be78-27147357ab30", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7712c37f-4bc9-4281-8061-803b5a4409eb", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "27ddb213-a8c6-44f1-9b85-6741da4ebb50", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c92a087c-205c-49c0-94e1-6d025e2adfb5", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7e717707-5e07-4834-97d6-dd5f677c6f95", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8d27fe19-18ad-4f9a-ac9b-3ed80bf2a92f", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9a07a794-9e77-4558-907f-10aa77d499f9", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "98b52606-bad2-4139-9b4d-947e73c74c9d", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f2a897f3-2636-44f5-898d-ebeed7cd16e9", + "direction": true, + "startTime": "2026-08-11T00:40:31.777Z", + "endTime": "2026-08-11T00:40:31.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.778Z", + "endTime": "2026-08-11T00:40:31.778Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.778Z", + "endTime": "2026-08-11T00:40:31.778Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.778Z", + "endTime": "2026-08-11T00:40:31.778Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.799Z", + "endTime": "2026-08-11T00:40:31.799Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataByHash", + "payload": { + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.799Z", + "endTime": "2026-08-11T00:40:31.799Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:31.811Z", + "endTime": "2026-08-11T00:40:31.811Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:31.811Z", + "endTime": "2026-08-11T00:40:31.811Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1216, + "clientY": 222, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:31.853Z", + "endTime": "2026-08-11T00:40:31.853Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "studyStart", + "props": { + "studyId": 1, + "studyClosed": false, + "studySessionId": 0 + } + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:32.271Z", + "endTime": "2026-08-11T00:40:32.271Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionStart", + "payload": { + "studyId": 1, + "studySessionId": 0 + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.180Z", + "endTime": "2026-08-11T00:40:34.180Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.181Z", + "endTime": "2026-08-11T00:40:34.181Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 3, + "end": null, + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "updatedAt": "2026-08-11T00:40:34.185Z", + "numberSteps": 1, + "studyStepId": 1, + "studyStepIdMax": 1, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:34.201Z", + "endTime": "2026-08-11T00:40:34.201Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "studyStart", + "props": { + "studyId": 1, + "studyClosed": false, + "studySessionId": 0 + } + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.208Z", + "endTime": "2026-08-11T00:40:34.208Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "f88db633-22ef-443d-8c88-b64b10916c29", + "direction": true, + "startTime": "2026-08-11T00:40:34.219Z", + "endTime": "2026-08-11T00:40:34.219Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentDataGet", + "payload": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.220Z", + "endTime": "2026-08-11T00:40:34.220Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentGet", + "payload": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.238Z", + "endTime": "2026-08-11T00:40:34.238Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentSubscribe", + "payload": { + "documentId": 2 + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "annotation" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_environment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 3, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentGetData", + "payload": { + "documentId": 2, + "studyStepId": 1, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "serviceRefresh", + "payload": { + "data": { + "name": "sentiment_classification", + "input": { + "data": { + "text": { + "type": "string", + "required": true, + "description": "The text to be classified" + } + }, + "example": { + "text": "This restaurant is awesome!" + } + }, + "output": { + "data": { + "label": { + "type": "string", + "description": "The label of the classification" + }, + "score": { + "type": "float", + "description": "The score of the classification" + } + }, + "example": { + "label": "pos", + "score": 0.9 + } + }, + "description": "This classifies a given paragraph according to it's sentiment returning a polarity estimate." + }, + "type": "skillConfig", + "service": "NLPService" + }, + "direction": false, + "startTime": "2026-08-11T00:40:34.243Z", + "endTime": "2026-08-11T00:40:34.243Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "serviceCommand", + "payload": { + "data": { + "name": "sentiment_classification" + }, + "command": "skillGetConfig", + "service": "NLPService" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 903, + "clientY": 192, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.256Z", + "endTime": "2026-08-11T00:40:34.256Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.242Z", + "endTime": "2026-08-11T00:40:34.242Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:34.270Z", + "endTime": "2026-08-11T00:40:34.270Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:34.270Z", + "endTime": "2026-08-11T00:40:34.270Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 3, + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Validation schema for UKP Exposé LaTeX submissions", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:34.266Z", + "endTime": "2026-08-11T00:40:34.266Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "annotationRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:40:34.274Z", + "endTime": "2026-08-11T00:40:34.274Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "commentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:40:34.275Z", + "endTime": "2026-08-11T00:40:34.275Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "comment_voteRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:40:34.279Z", + "endTime": "2026-08-11T00:40:34.279Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "tagRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-11T00:40:34.280Z", + "endTime": "2026-08-11T00:40:34.280Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.382Z", + "endTime": "2026-08-11T00:40:34.382Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.384Z", + "endTime": "2026-08-11T00:40:34.384Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.384Z", + "endTime": "2026-08-11T00:40:34.384Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.386Z", + "endTime": "2026-08-11T00:40:34.386Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "comment_state" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.387Z", + "endTime": "2026-08-11T00:40:34.387Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "StudyLoadingModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.681Z", + "endTime": "2026-08-11T00:40:34.681Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "StudyLoadingModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.683Z", + "endTime": "2026-08-11T00:40:34.683Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 2, + "studyStepId": 1, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": 3 + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-11T00:40:34.740Z", + "endTime": "2026-08-11T00:40:34.740Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 839, + "clientY": 180, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:35.754Z", + "endTime": "2026-08-11T00:40:35.754Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next", + "studySessionId": 3, + "currentStudyStepId": 1 + }, + "action": "clickTopBarButton" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.264Z", + "endTime": "2026-08-11T00:40:40.264Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "id": 3, + "studyStepId": 2 + }, + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.264Z", + "endTime": "2026-08-11T00:40:40.264Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 3, + "end": null, + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "updatedAt": "2026-08-11T00:40:40.274Z", + "numberSteps": 2, + "studyStepId": 2, + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:40.300Z", + "endTime": "2026-08-11T00:40:40.300Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentDataGet", + "payload": { + "documentId": 3, + "studyStepId": 2, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.318Z", + "endTime": "2026-08-11T00:40:40.318Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.331Z", + "endTime": "2026-08-11T00:40:40.331Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentGet", + "payload": { + "documentId": 3, + "studyStepId": 2, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.338Z", + "endTime": "2026-08-11T00:40:40.338Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentSubscribe", + "payload": { + "documentId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.339Z", + "endTime": "2026-08-11T00:40:40.339Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": 2, + "studySessionId": 3, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.339Z", + "endTime": "2026-08-11T00:40:40.339Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.339Z", + "endTime": "2026-08-11T00:40:40.339Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 171, + "clientY": 38, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.503Z", + "endTime": "2026-08-11T00:40:40.503Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "readOnly": false, + "documentId": 2, + "visibility": { + "offset": -52.5, + "isVisible": false, + "pageNumber": 1 + }, + "studyStepId": 1, + "studySessionId": 3 + }, + "action": "pdfPageVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.623Z", + "endTime": "2026-08-11T00:40:40.623Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "StudyLoadingModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.771Z", + "endTime": "2026-08-11T00:40:40.771Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "StudyLoadingModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.776Z", + "endTime": "2026-08-11T00:40:40.776Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "documentId": 3, + "studyStepId": 2, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": 3 + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-11T00:40:40.840Z", + "endTime": "2026-08-11T00:40:40.840Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 1 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.323Z", + "endTime": "2026-08-11T00:40:41.323Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 3 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.331Z", + "endTime": "2026-08-11T00:40:41.331Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 2 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.331Z", + "endTime": "2026-08-11T00:40:41.331Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 8 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 13 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 5 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.331Z", + "endTime": "2026-08-11T00:40:41.331Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 12 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 9 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 16 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 6 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.331Z", + "endTime": "2026-08-11T00:40:41.331Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 4 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.331Z", + "endTime": "2026-08-11T00:40:41.331Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 14 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 7 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 10 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 11 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 0, + "documentId": 2, + "pageNumber": 15 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:41.332Z", + "endTime": "2026-08-11T00:40:41.332Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 358, + "clientY": 214, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:42.636Z", + "endTime": "2026-08-11T00:40:42.636Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentEdit", + "payload": { + "ops": [ + { + "span": 2, + "text": "hi", + "offset": 0, + "attributes": null, + "operationType": 0 + } + ], + "documentId": 3, + "studyStepId": 2, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:43.365Z", + "endTime": "2026-08-11T00:40:43.365Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Finish Study", + "studySessionId": 3, + "currentStudyStepId": 2 + }, + "action": "clickTopBarButton" + }, + "direction": true, + "startTime": "2026-08-11T00:40:44.482Z", + "endTime": "2026-08-11T00:40:44.482Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "studyFinish", + "props": { + "finished": false, + "closeable": false, + "showTimeUp": false, + "studySessionId": 3 + } + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:44.954Z", + "endTime": "2026-08-11T00:40:44.954Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionFinish", + "payload": { + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:46.081Z", + "endTime": "2026-08-11T00:40:46.081Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Finish study", + "studySessionId": 3, + "currentStudyStepId": 2 + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:40:46.085Z", + "endTime": "2026-08-11T00:40:46.085Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "studyFinish", + "props": { + "finished": false, + "closeable": false, + "showTimeUp": false, + "studySessionId": 3 + } + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:40:46.085Z", + "endTime": "2026-08-11T00:40:46.085Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "studyStepId": 2, + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:46.115Z", + "endTime": "2026-08-11T00:40:46.115Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "readOnly": true, + "documentId": 2, + "visibility": { + "offset": 65.5, + "isVisible": true, + "pageNumber": 1 + }, + "studyStepId": 1, + "studySessionId": 3 + }, + "action": "pdfPageVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:46.132Z", + "endTime": "2026-08-11T00:40:46.132Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 717, + "clientY": 276, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.091Z", + "endTime": "2026-08-11T00:40:47.091Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 5 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.136Z", + "endTime": "2026-08-11T00:40:47.136Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 6 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.138Z", + "endTime": "2026-08-11T00:40:47.138Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 7 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.138Z", + "endTime": "2026-08-11T00:40:47.138Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 9 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.138Z", + "endTime": "2026-08-11T00:40:47.138Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 16 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.140Z", + "endTime": "2026-08-11T00:40:47.140Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 13 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.139Z", + "endTime": "2026-08-11T00:40:47.139Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 8 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.138Z", + "endTime": "2026-08-11T00:40:47.138Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 14 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.139Z", + "endTime": "2026-08-11T00:40:47.139Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 10 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.139Z", + "endTime": "2026-08-11T00:40:47.139Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 11 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.139Z", + "endTime": "2026-08-11T00:40:47.139Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 12 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.139Z", + "endTime": "2026-08-11T00:40:47.139Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "width": 985.5, + "documentId": 2, + "pageNumber": 15 + }, + "action": "pdfPageResizeChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:47.140Z", + "endTime": "2026-08-11T00:40:47.140Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/study/584adaad-05b8-4235-b575-59b6c6c0d112" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:40:48.970Z", + "endTime": "2026-08-11T00:40:48.970Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "collabUnsubscribe", + "payload": { + "documentId": 2 + }, + "direction": true, + "startTime": "2026-08-11T00:40:48.988Z", + "endTime": "2026-08-11T00:40:48.988Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "eca9ec16-0b1b-44a5-b9b6-86460bdc98a5", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3a5d66cf-3573-4823-a24d-22a0c235a228", + "direction": true, + "startTime": "2026-08-11T00:40:48.989Z", + "endTime": "2026-08-11T00:40:48.989Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "743da208-cec1-4112-9c56-8c23239e7128", + "direction": true, + "startTime": "2026-08-11T00:40:48.989Z", + "endTime": "2026-08-11T00:40:48.989Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b2c277c5-6f3c-4378-8550-b859f26d8f19", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3d2e93bd-e1a9-4fac-9844-1b51460eda96", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "appDataUpdate", + "payload": { + "data": { + "key": "scroll", + "value": "{\"page\":1,\"value\":0}", + "userId": 4, + "documentId": 2, + "studyStepId": 1, + "studySessionId": 3 + }, + "table": "user_environment" + }, + "direction": true, + "startTime": "2026-08-11T00:40:48.989Z", + "endTime": "2026-08-11T00:40:48.989Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c1b83393-8c88-47b6-bb9e-d532cba9d035", + "direction": true, + "startTime": "2026-08-11T00:40:48.989Z", + "endTime": "2026-08-11T00:40:48.989Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2257abf3-699a-450d-9aa6-6536b6c6c6a6", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "396f33c0-d4e2-4899-b85c-c492a208e964", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d1787523-c8e8-42e8-9e9d-e6a4af3bfb66", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "a86be61c-8b1e-4b56-94e0-66a27c8d3009", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b85af1ed-5c90-41d3-abe6-7d9a536ef92e", + "direction": true, + "startTime": "2026-08-11T00:40:48.989Z", + "endTime": "2026-08-11T00:40:48.989Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "035e61f0-4f14-446b-9e5b-ce93cdd650c3", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c9a24440-788b-4f81-bf6f-ca39c22a3d36", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "36535bb1-f6df-43f5-9b46-ec2a2bdd0f4c", + "direction": true, + "startTime": "2026-08-11T00:40:48.990Z", + "endTime": "2026-08-11T00:40:48.990Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5bd5a71a-068a-4df6-b84a-4417aa13d72a", + "direction": true, + "startTime": "2026-08-11T00:40:48.991Z", + "endTime": "2026-08-11T00:40:48.991Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7cf0efb6-ee02-4a57-a416-6a20d103909d", + "direction": true, + "startTime": "2026-08-11T00:40:48.991Z", + "endTime": "2026-08-11T00:40:48.991Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "3771a834-e9da-4814-95a3-4e7e98cca2df", + "direction": true, + "startTime": "2026-08-11T00:40:48.994Z", + "endTime": "2026-08-11T00:40:48.994Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "48267a14-c019-4f3a-9cb8-77c15c28a874", + "direction": true, + "startTime": "2026-08-11T00:40:48.991Z", + "endTime": "2026-08-11T00:40:48.991Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "34102cc4-c3ab-4f86-afdd-e9f82e84856e", + "direction": true, + "startTime": "2026-08-11T00:40:48.992Z", + "endTime": "2026-08-11T00:40:48.992Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e07a0c02-bb4d-4e29-8024-00f47ddf5d39", + "direction": true, + "startTime": "2026-08-11T00:40:48.992Z", + "endTime": "2026-08-11T00:40:48.992Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "13ef800b-9ea5-4105-bd78-1af33de47883", + "direction": true, + "startTime": "2026-08-11T00:40:48.995Z", + "endTime": "2026-08-11T00:40:48.995Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "cc0640f5-8243-40f6-857a-0262911223cf", + "direction": true, + "startTime": "2026-08-11T00:40:48.995Z", + "endTime": "2026-08-11T00:40:48.995Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bd7da609-3085-46ee-afec-f4852629e1bb", + "direction": true, + "startTime": "2026-08-11T00:40:48.995Z", + "endTime": "2026-08-11T00:40:48.995Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2e3c336d-6c30-40ed-97cd-6b077b9633e2", + "direction": true, + "startTime": "2026-08-11T00:40:48.994Z", + "endTime": "2026-08-11T00:40:48.994Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7dc34172-387f-4b95-9874-2e509df2fde4", + "direction": true, + "startTime": "2026-08-11T00:40:48.992Z", + "endTime": "2026-08-11T00:40:48.992Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9ff6b382-5a9b-4201-9fde-e06729f78f3a", + "direction": true, + "startTime": "2026-08-11T00:40:48.992Z", + "endTime": "2026-08-11T00:40:48.992Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1386e48d-2df6-4fe3-b81a-1f39d8164d1a", + "direction": true, + "startTime": "2026-08-11T00:40:48.992Z", + "endTime": "2026-08-11T00:40:48.992Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b44a435f-a974-441e-9ce7-e0d94f712296", + "direction": true, + "startTime": "2026-08-11T00:40:48.992Z", + "endTime": "2026-08-11T00:40:48.992Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "fc529ab3-2b30-4426-a936-8a493da5a0bd", + "direction": true, + "startTime": "2026-08-11T00:40:48.995Z", + "endTime": "2026-08-11T00:40:48.995Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7dcf7a48-b205-4c08-858b-61447fcbd585", + "direction": true, + "startTime": "2026-08-11T00:40:48.996Z", + "endTime": "2026-08-11T00:40:48.996Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "0e17f12b-d184-42c0-ac61-c3a4d4a7cc30", + "direction": true, + "startTime": "2026-08-11T00:40:48.996Z", + "endTime": "2026-08-11T00:40:48.996Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "34b539e9-414d-4f7d-9a9c-a888c14bd419", + "direction": true, + "startTime": "2026-08-11T00:40:48.996Z", + "endTime": "2026-08-11T00:40:48.996Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8f44be81-cfc0-48da-81ef-1cecfed9d1d1", + "direction": true, + "startTime": "2026-08-11T00:40:48.996Z", + "endTime": "2026-08-11T00:40:48.996Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "c93f169f-1b3f-41df-b3fe-bf413ddb1f85", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9e71e126-8d0b-46b7-b53c-ac4f1bc75a31", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "562386eb-cc08-4ec9-be5e-983b893b32ae", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1f201991-bbdc-4c23-9c4e-e4fbe8a8c7b9", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "abac1fb2-679c-44a1-bc33-dd948289d41a", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "48abd448-2af3-4f0f-8687-fab367374708", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6fa0340f-9f92-4107-a406-2b032b57eea0", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5408c889-f293-4101-8072-b4a6f5c28fc0", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ef7b51ac-6e76-4138-aa92-b3e6147b620c", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5cb2636f-bf21-42a8-ba35-14db4aa630bc", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d6ca32cc-339e-472c-a3ed-3b53d9e57eaa", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "62ad01e2-82b2-43a9-8e18-6750a3d250ca", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentUnsubscribe", + "payload": { + "documentId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_group" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ce3376db-b022-46d7-990e-dd9551600980", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7330de01-f30d-49f6-b467-1427a0872557", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "documentClose", + "payload": { + "documentId": 3, + "studySessionId": 3 + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 82, + "clientY": 20, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "user_environmentRefresh", + "payload": [ + { + "id": 3, + "key": "scroll", + "value": "{\"page\":1,\"value\":0}", + "userId": 4, + "deleted": false, + "createdAt": "2026-08-11T00:40:49.042Z", + "updatedAt": "2026-08-11T00:40:49.042Z", + "documentId": 2, + "studyStepId": 1, + "studySessionId": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:49.068Z", + "endTime": "2026-08-11T00:40:49.068Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "33eb993f-a6ad-4d88-82cb-206d39874e60", + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.034Z", + "endTime": "2026-08-11T00:40:49.034Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:49.074Z", + "endTime": "2026-08-11T00:40:49.074Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:40:49.074Z", + "endTime": "2026-08-11T00:40:49.074Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 129, + "clientY": 4, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:40:49.721Z", + "endTime": "2026-08-11T00:40:49.721Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:40:50.127Z", + "endTime": "2026-08-11T00:40:50.127Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/550-reopen-session.json b/backend/tests/regression_stories/550-reopen-session.json new file mode 100644 index 000000000..e031a4bd3 --- /dev/null +++ b/backend/tests/regression_stories/550-reopen-session.json @@ -0,0 +1,1936 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:51:40.359Z", + "traceCount": 99, + "recording": { + "name": "550-reopen-session", + "status": "finished", + "startTime": "2026-08-11T00:46:57.686Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:48:03.303Z" + }, + "traces": [ + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 11, + "name": "Recording 8/11/2026, 2:46:57 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:46:57.687Z", + "startTime": "2026-08-11T00:46:57.686Z", + "updatedAt": "2026-08-11T00:46:57.687Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:46:57.708Z", + "endTime": "2026-08-11T00:46:57.708Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:46:58.959Z", + "endTime": "2026-08-11T00:46:58.959Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:01.305Z", + "endTime": "2026-08-11T00:47:01.305Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/study_sessions" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.144Z", + "endTime": "2026-08-11T00:47:06.144Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b08b0034-ba3e-4a28-8d21-3afafa0d7227", + "direction": true, + "startTime": "2026-08-11T00:47:06.156Z", + "endTime": "2026-08-11T00:47:06.156Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "1f656232-f2f2-4298-9f84-f17f879c41b0", + "direction": true, + "startTime": "2026-08-11T00:47:06.156Z", + "endTime": "2026-08-11T00:47:06.156Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "2a77965a-021b-4bbe-b760-7eae1162854a", + "direction": true, + "startTime": "2026-08-11T00:47:06.156Z", + "endTime": "2026-08-11T00:47:06.156Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "312a6719-88fd-4848-b5f5-d7c37993687b", + "direction": true, + "startTime": "2026-08-11T00:47:06.172Z", + "endTime": "2026-08-11T00:47:06.172Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9e807074-7a3a-423b-a72c-7180da56755d", + "direction": true, + "startTime": "2026-08-11T00:47:06.171Z", + "endTime": "2026-08-11T00:47:06.171Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.197Z", + "endTime": "2026-08-11T00:47:06.197Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "634830c0-a343-4927-8bb4-08a017ad60ef", + "direction": true, + "startTime": "2026-08-11T00:47:06.172Z", + "endTime": "2026-08-11T00:47:06.172Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.211Z", + "endTime": "2026-08-11T00:47:06.211Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.211Z", + "endTime": "2026-08-11T00:47:06.211Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.213Z", + "endTime": "2026-08-11T00:47:06.213Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.213Z", + "endTime": "2026-08-11T00:47:06.213Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:47:06.213Z", + "endTime": "2026-08-11T00:47:06.213Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:06.220Z", + "endTime": "2026-08-11T00:47:06.220Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:06.221Z", + "endTime": "2026-08-11T00:47:06.221Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 282, + "clientY": 206, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:10.743Z", + "endTime": "2026-08-11T00:47:10.743Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/study_sessions", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:47:10.954Z", + "endTime": "2026-08-11T00:47:10.954Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "5780aa3d-abbd-489e-9c6d-9967ecf438b1", + "direction": true, + "startTime": "2026-08-11T00:47:10.966Z", + "endTime": "2026-08-11T00:47:10.966Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "9fba2f94-490d-47bc-9244-481fedb3df3a", + "direction": true, + "startTime": "2026-08-11T00:47:10.967Z", + "endTime": "2026-08-11T00:47:10.967Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "d594ba17-75df-4be2-b694-91ea46acd9f7", + "direction": true, + "startTime": "2026-08-11T00:47:10.967Z", + "endTime": "2026-08-11T00:47:10.967Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "32b03e43-17a2-48d0-99f2-8179f94ce971", + "direction": true, + "startTime": "2026-08-11T00:47:10.967Z", + "endTime": "2026-08-11T00:47:10.967Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "e67c7128-2133-4d00-9743-eb2beaffcb84", + "direction": true, + "startTime": "2026-08-11T00:47:10.966Z", + "endTime": "2026-08-11T00:47:10.966Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "b4af54d6-dbc9-416c-8296-11d8caaa43b4", + "direction": true, + "startTime": "2026-08-11T00:47:10.967Z", + "endTime": "2026-08-11T00:47:10.967Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:10.978Z", + "endTime": "2026-08-11T00:47:10.978Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:10.978Z", + "endTime": "2026-08-11T00:47:10.978Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", + "start": "2026-08-11T00:30:28.883Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:30:28.884Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:30:28.884Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": null + }, + { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:12.071Z", + "endTime": "2026-08-11T00:47:12.071Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionSubscribe", + "payload": { + "studyId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:47:12.067Z", + "endTime": "2026-08-11T00:47:12.067Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:12.075Z", + "endTime": "2026-08-11T00:47:12.075Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:12.075Z", + "endTime": "2026-08-11T00:47:12.075Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:12.075Z", + "endTime": "2026-08-11T00:47:12.075Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:12.075Z", + "endTime": "2026-08-11T00:47:12.075Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionSubscribe", + "payload": { + "studyId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:47:13.969Z", + "endTime": "2026-08-11T00:47:13.969Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", + "start": "2026-08-11T00:30:28.883Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:30:28.884Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:30:28.884Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": null + }, + { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:13.972Z", + "endTime": "2026-08-11T00:47:13.972Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "copySession", + "params": { + "studySessionId": 3 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:47:13.978Z", + "endTime": "2026-08-11T00:47:13.978Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:14.426Z", + "endTime": "2026-08-11T00:47:14.426Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 942, + "clientY": 348, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:16.559Z", + "endTime": "2026-08-11T00:47:16.559Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1237, + "clientY": 510, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:18.878Z", + "endTime": "2026-08-11T00:47:18.878Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:24.871Z", + "endTime": "2026-08-11T00:47:24.871Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionSubscribe", + "payload": { + "studyId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:47:26.422Z", + "endTime": "2026-08-11T00:47:26.422Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", + "start": "2026-08-11T00:30:28.883Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:30:28.884Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:30:28.884Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": null + }, + { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:26.431Z", + "endTime": "2026-08-11T00:47:26.431Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "copySession", + "params": { + "studySessionId": 3 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:47:26.438Z", + "endTime": "2026-08-11T00:47:26.438Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1232, + "clientY": 312, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:26.543Z", + "endTime": "2026-08-11T00:47:26.543Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:26.877Z", + "endTime": "2026-08-11T00:47:26.877Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:28.322Z", + "endTime": "2026-08-11T00:47:28.322Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/session_overview", + "from": "/dashboard/study_sessions" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.177Z", + "endTime": "2026-08-11T00:47:29.177Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "facb1e21-66be-4954-b53b-e9c8cde5d6f1", + "direction": true, + "startTime": "2026-08-11T00:47:29.179Z", + "endTime": "2026-08-11T00:47:29.179Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "fb1645f8-04f6-42b1-bec5-20b13a4b263c", + "direction": true, + "startTime": "2026-08-11T00:47:29.179Z", + "endTime": "2026-08-11T00:47:29.179Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "4704ccd2-aeb2-41d8-a9c3-9247d4397cb2", + "direction": true, + "startTime": "2026-08-11T00:47:29.179Z", + "endTime": "2026-08-11T00:47:29.179Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "302b18ba-c7df-4437-8894-cffb129d26b2", + "direction": true, + "startTime": "2026-08-11T00:47:29.180Z", + "endTime": "2026-08-11T00:47:29.180Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8db929a4-63cc-44d3-a648-323dbca30269", + "direction": true, + "startTime": "2026-08-11T00:47:29.180Z", + "endTime": "2026-08-11T00:47:29.180Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6cafe9c7-cf67-4625-888d-d5a9eb6f9dd8", + "direction": true, + "startTime": "2026-08-11T00:47:29.180Z", + "endTime": "2026-08-11T00:47:29.180Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.194Z", + "endTime": "2026-08-11T00:47:29.194Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.189Z", + "endTime": "2026-08-11T00:47:29.189Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.194Z", + "endTime": "2026-08-11T00:47:29.194Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.194Z", + "endTime": "2026-08-11T00:47:29.194Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.194Z", + "endTime": "2026-08-11T00:47:29.194Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 93, + "clientY": 323, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:29.209Z", + "endTime": "2026-08-11T00:47:29.209Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:29.211Z", + "endTime": "2026-08-11T00:47:29.211Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:26:29.375Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:29.211Z", + "endTime": "2026-08-11T00:47:29.211Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 586, + "clientY": 391, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:30.577Z", + "endTime": "2026-08-11T00:47:30.577Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 587, + "clientY": 390, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:31.263Z", + "endTime": "2026-08-11T00:47:31.263Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 647, + "clientY": 393, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:32.961Z", + "endTime": "2026-08-11T00:47:32.961Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/study_sessions", + "from": "/dashboard/session_overview" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:47:38.371Z", + "endTime": "2026-08-11T00:47:38.371Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "62487834-3709-40e8-82e9-969594192d55", + "direction": true, + "startTime": "2026-08-11T00:47:38.373Z", + "endTime": "2026-08-11T00:47:38.373Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7b1b6e29-da6d-411b-a880-8b43149bdae0", + "direction": true, + "startTime": "2026-08-11T00:47:38.373Z", + "endTime": "2026-08-11T00:47:38.373Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6db593f7-83d9-44a6-a8da-94855f783ffc", + "direction": true, + "startTime": "2026-08-11T00:47:38.373Z", + "endTime": "2026-08-11T00:47:38.373Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "ae05ebcf-7a57-453b-81a2-4e109b175e2d", + "direction": true, + "startTime": "2026-08-11T00:47:38.373Z", + "endTime": "2026-08-11T00:47:38.373Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "edeab846-c3c7-47ec-bd2d-707d554a5d00", + "direction": true, + "startTime": "2026-08-11T00:47:38.373Z", + "endTime": "2026-08-11T00:47:38.373Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:38.378Z", + "endTime": "2026-08-11T00:47:38.378Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:38.378Z", + "endTime": "2026-08-11T00:47:38.378Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionSubscribe", + "payload": { + "studyId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:47:39.536Z", + "endTime": "2026-08-11T00:47:39.536Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", + "start": "2026-08-11T00:30:28.883Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:30:28.884Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:30:28.884Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": null + }, + { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:39.538Z", + "endTime": "2026-08-11T00:47:39.538Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:39.550Z", + "endTime": "2026-08-11T00:47:39.550Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:39.551Z", + "endTime": "2026-08-11T00:47:39.551Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:47:39.553Z", + "endTime": "2026-08-11T00:47:39.553Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:47:39.554Z", + "endTime": "2026-08-11T00:47:39.554Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1027, + "clientY": 324, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:40.677Z", + "endTime": "2026-08-11T00:47:40.677Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", + "start": "2026-08-11T00:30:28.883Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:30:28.884Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:30:28.884Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": null + }, + { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:40:34.185Z", + "deletedAt": null, + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "parentStudySessionId": null + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:41.788Z", + "endTime": "2026-08-11T00:47:41.788Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionSubscribe", + "payload": { + "studyId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:47:41.786Z", + "endTime": "2026-08-11T00:47:41.786Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "copySession", + "params": { + "studySessionId": 3 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:47:41.796Z", + "endTime": "2026-08-11T00:47:41.796Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:42.243Z", + "endTime": "2026-08-11T00:47:42.243Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 938, + "clientY": 387, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:43.545Z", + "endTime": "2026-08-11T00:47:43.545Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 940, + "clientY": 388, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:45.128Z", + "endTime": "2026-08-11T00:47:45.128Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:47:45.870Z", + "endTime": "2026-08-11T00:47:45.870Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 972, + "clientY": 347, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:47.160Z", + "endTime": "2026-08-11T00:47:47.160Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionCopy", + "payload": { + "userIds": [ + 4 + ], + "studySession": { + "id": 3, + "end": "2026-08-11T00:40:46.104Z", + "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", + "start": "2026-08-11T00:40:34.185Z", + "userId": 4, + "deleted": false, + "studyId": 1, + "finished": true, + "createdAt": "2026-08-11T00:40:34.185Z", + "deletedAt": null, + "resumable": false, + "updatedAt": "2026-08-11T00:40:46.105Z", + "numberSteps": 2, + "startParsed": "8/11/2026, 2:40:34 AM", + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "showStartButton": false, + "showDeleteButton": false, + "showResumeButton": false, + "showInspectButton": false, + "parentStudySessionId": "-" + } + }, + "direction": true, + "startTime": "2026-08-11T00:47:49.120Z", + "endTime": "2026-08-11T00:47:49.120Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "title": "Submit" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:47:49.124Z", + "endTime": "2026-08-11T00:47:49.124Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:47:49.144Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + }, + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:47:49.160Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:49.217Z", + "endTime": "2026-08-11T00:47:49.217Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 4, + "end": null, + "hash": "837cae21-71c7-45a6-a656-7ac379f569cf", + "start": null, + "userId": 4, + "deleted": false, + "studyId": 1, + "createdAt": "2026-08-11T00:47:49.179Z", + "updatedAt": "2026-08-11T00:47:49.179Z", + "numberSteps": 1, + "studyStepId": 1, + "studyStepIdMax": 1, + "parentStudySessionId": 3 + } + ], + "direction": false, + "startTime": "2026-08-11T00:47:49.218Z", + "endTime": "2026-08-11T00:47:49.218Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studySessionUnsubscribe", + "payload": { + "studyId": 1 + }, + "direction": true, + "startTime": "2026-08-11T00:47:49.230Z", + "endTime": "2026-08-11T00:47:49.230Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:47:49.235Z", + "endTime": "2026-08-11T00:47:49.235Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1255, + "clientY": 392, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:49.446Z", + "endTime": "2026-08-11T00:47:49.446Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1178, + "clientY": 360, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:50.526Z", + "endTime": "2026-08-11T00:47:50.526Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1262, + "clientY": 355, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:47:58.697Z", + "endTime": "2026-08-11T00:47:58.697Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1117, + "clientY": 4, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:48:01.911Z", + "endTime": "2026-08-11T00:48:01.911Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:48:02.107Z", + "endTime": "2026-08-11T00:48:02.107Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/560-copy-session.json b/backend/tests/regression_stories/560-copy-session.json new file mode 100644 index 000000000..b4386c6b4 --- /dev/null +++ b/backend/tests/regression_stories/560-copy-session.json @@ -0,0 +1 @@ +{"schemaVersion": 1, "exportedAt": "2026-08-11T00:48:54.209Z", "traceCount": 99, "recording": {"name": "560-copy-session", "status": "finished", "startTime": "2026-08-11T00:46:57.686Z", "userId": 4, "participantSocketIds": ["d9A9RFi1xfVMSPlsAAAL"], "excludeEvents": null, "endTime": "2026-08-11T00:48:03.303Z"}, "traces": [{"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "recordingRefresh", "payload": [{"id": 11, "name": "Recording 8/11/2026, 2:46:57 AM", "status": "recording", "userId": 4, "deleted": false, "endTime": null, "createdAt": "2026-08-11T00:46:57.687Z", "startTime": "2026-08-11T00:46:57.686Z", "updatedAt": "2026-08-11T00:46:57.687Z", "excludeEvents": null, "participantSocketIds": ["d9A9RFi1xfVMSPlsAAAL"]}], "direction": false, "startTime": "2026-08-11T00:46:57.708Z", "endTime": "2026-08-11T00:46:57.708Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"hidden": false}, "action": "tabVisibilityChange"}, "direction": true, "startTime": "2026-08-11T00:46:58.959Z", "endTime": "2026-08-11T00:46:58.959Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "hideModal"}, "direction": true, "startTime": "2026-08-11T00:47:01.305Z", "endTime": "2026-08-11T00:47:01.305Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"to": "/dashboard", "from": "/dashboard/study_sessions"}, "action": "routeStep"}, "direction": true, "startTime": "2026-08-11T00:47:06.144Z", "endTime": "2026-08-11T00:47:06.144Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "b08b0034-ba3e-4a28-8d21-3afafa0d7227", "direction": true, "startTime": "2026-08-11T00:47:06.156Z", "endTime": "2026-08-11T00:47:06.156Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "1f656232-f2f2-4298-9f84-f17f879c41b0", "direction": true, "startTime": "2026-08-11T00:47:06.156Z", "endTime": "2026-08-11T00:47:06.156Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "2a77965a-021b-4bbe-b760-7eae1162854a", "direction": true, "startTime": "2026-08-11T00:47:06.156Z", "endTime": "2026-08-11T00:47:06.156Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "312a6719-88fd-4848-b5f5-d7c37993687b", "direction": true, "startTime": "2026-08-11T00:47:06.172Z", "endTime": "2026-08-11T00:47:06.172Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "9e807074-7a3a-423b-a72c-7180da56755d", "direction": true, "startTime": "2026-08-11T00:47:06.171Z", "endTime": "2026-08-11T00:47:06.171Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "document"}, "direction": true, "startTime": "2026-08-11T00:47:06.197Z", "endTime": "2026-08-11T00:47:06.197Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "634830c0-a343-4927-8bb4-08a017ad60ef", "direction": true, "startTime": "2026-08-11T00:47:06.172Z", "endTime": "2026-08-11T00:47:06.172Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "tag_set"}, "direction": true, "startTime": "2026-08-11T00:47:06.211Z", "endTime": "2026-08-11T00:47:06.211Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "template"}, "direction": true, "startTime": "2026-08-11T00:47:06.211Z", "endTime": "2026-08-11T00:47:06.211Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "document"}, "direction": true, "startTime": "2026-08-11T00:47:06.213Z", "endTime": "2026-08-11T00:47:06.213Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study"}, "direction": true, "startTime": "2026-08-11T00:47:06.213Z", "endTime": "2026-08-11T00:47:06.213Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "template"}, "direction": true, "startTime": "2026-08-11T00:47:06.213Z", "endTime": "2026-08-11T00:47:06.213Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_stepRefresh", "payload": [{"id": 1, "studyId": 1, "stepType": 1, "createdAt": "2026-08-11T00:26:29.395Z", "updatedAt": "2026-08-11T00:26:29.395Z", "documentId": 2, "stepNumber": 1, "allowBackward": false, "configuration": {}, "workflowStepId": 1, "studyStepDocument": null, "studyStepPrevious": null}, {"id": 2, "studyId": 1, "stepType": 2, "createdAt": "2026-08-11T00:26:29.417Z", "updatedAt": "2026-08-11T00:26:29.417Z", "documentId": 3, "stepNumber": 2, "allowBackward": true, "configuration": {}, "workflowStepId": 2, "studyStepDocument": null, "studyStepPrevious": 1}, {"id": 3, "studyId": 2, "stepType": 1, "createdAt": "2026-08-11T00:32:35.412Z", "updatedAt": "2026-08-11T00:32:35.412Z", "documentId": 2, "stepNumber": 1, "allowBackward": false, "configuration": {}, "workflowStepId": 1, "studyStepDocument": null, "studyStepPrevious": null}, {"id": 4, "studyId": 2, "stepType": 2, "createdAt": "2026-08-11T00:32:35.425Z", "updatedAt": "2026-08-11T00:32:35.425Z", "documentId": 4, "stepNumber": 2, "allowBackward": true, "configuration": {}, "workflowStepId": 2, "studyStepDocument": null, "studyStepPrevious": 3}, {"id": 5, "studyId": 3, "stepType": 1, "createdAt": "2026-08-11T00:33:41.857Z", "updatedAt": "2026-08-11T00:33:41.857Z", "documentId": 5, "stepNumber": 1, "allowBackward": false, "configuration": {}, "workflowStepId": 1, "studyStepDocument": null, "studyStepPrevious": null}, {"id": 6, "studyId": 3, "stepType": 2, "createdAt": "2026-08-11T00:33:41.863Z", "updatedAt": "2026-08-11T00:33:41.863Z", "documentId": 6, "stepNumber": 2, "allowBackward": true, "configuration": {}, "workflowStepId": 2, "studyStepDocument": null, "studyStepPrevious": 5}], "direction": false, "startTime": "2026-08-11T00:47:06.220Z", "endTime": "2026-08-11T00:47:06.220Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studyRefresh", "payload": [{"id": 1, "end": null, "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", "name": "replaystudy", "start": null, "closed": null, "collab": false, "userId": 4, "tagSetId": 1, "template": false, "anonymize": false, "createdAt": "2026-08-11T00:26:29.375Z", "projectId": 1, "resumable": false, "timeLimit": 0, "updatedAt": "2026-08-11T00:26:29.375Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", "creator_name": "admin", "userIdClosed": null, "limitSessions": 0, "parentStudyId": null, "multipleSubmit": false, "createdByUserId": null, "limitSessionsPerUser": 0, "enableEmailNotifications": false}, {"id": 2, "end": null, "hash": "54bd784b-53ed-418f-98c2-49714defe52e", "name": "replaystudytemplate", "start": null, "closed": null, "collab": false, "userId": 4, "tagSetId": 1, "template": true, "anonymize": false, "createdAt": "2026-08-11T00:32:35.384Z", "projectId": 1, "resumable": false, "timeLimit": 0, "updatedAt": "2026-08-11T00:32:35.384Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", "creator_name": "admin", "userIdClosed": null, "limitSessions": 0, "parentStudyId": null, "multipleSubmit": false, "createdByUserId": null, "limitSessionsPerUser": 0, "enableEmailNotifications": false}, {"id": 3, "end": null, "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", "name": "replaystudytemplate", "start": null, "closed": null, "collab": false, "userId": 4, "tagSetId": 1, "template": false, "anonymize": false, "createdAt": "2026-08-11T00:33:41.844Z", "projectId": 1, "resumable": true, "timeLimit": 0, "updatedAt": "2026-08-11T00:33:41.844Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", "creator_name": "admin", "userIdClosed": null, "limitSessions": 1, "parentStudyId": 1, "multipleSubmit": false, "createdByUserId": 4, "limitSessionsPerUser": 1, "enableEmailNotifications": false}], "direction": false, "startTime": "2026-08-11T00:47:06.221Z", "endTime": "2026-08-11T00:47:06.221Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 282, "clientY": 206, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:10.743Z", "endTime": "2026-08-11T00:47:10.743Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"to": "/dashboard/study_sessions", "from": "/dashboard"}, "action": "routeStep"}, "direction": true, "startTime": "2026-08-11T00:47:10.954Z", "endTime": "2026-08-11T00:47:10.954Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "5780aa3d-abbd-489e-9c6d-9967ecf438b1", "direction": true, "startTime": "2026-08-11T00:47:10.966Z", "endTime": "2026-08-11T00:47:10.966Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "9fba2f94-490d-47bc-9244-481fedb3df3a", "direction": true, "startTime": "2026-08-11T00:47:10.967Z", "endTime": "2026-08-11T00:47:10.967Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "d594ba17-75df-4be2-b694-91ea46acd9f7", "direction": true, "startTime": "2026-08-11T00:47:10.967Z", "endTime": "2026-08-11T00:47:10.967Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "32b03e43-17a2-48d0-99f2-8179f94ce971", "direction": true, "startTime": "2026-08-11T00:47:10.967Z", "endTime": "2026-08-11T00:47:10.967Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "e67c7128-2133-4d00-9743-eb2beaffcb84", "direction": true, "startTime": "2026-08-11T00:47:10.966Z", "endTime": "2026-08-11T00:47:10.966Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "b4af54d6-dbc9-416c-8296-11d8caaa43b4", "direction": true, "startTime": "2026-08-11T00:47:10.967Z", "endTime": "2026-08-11T00:47:10.967Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:10.978Z", "endTime": "2026-08-11T00:47:10.978Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:10.978Z", "endTime": "2026-08-11T00:47:10.978Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_sessionRefresh", "payload": [{"id": 1, "end": null, "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", "start": "2026-08-11T00:30:28.883Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:30:28.884Z", "deletedAt": null, "updatedAt": "2026-08-11T00:30:28.884Z", "numberSteps": 1, "studyStepId": 1, "creator_name": "admin", "studyStepIdMax": 1, "parentStudySessionId": null}, {"id": 3, "end": "2026-08-11T00:40:46.104Z", "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", "start": "2026-08-11T00:40:34.185Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:40:34.185Z", "deletedAt": null, "updatedAt": "2026-08-11T00:40:46.105Z", "numberSteps": 2, "studyStepId": 2, "creator_name": "admin", "studyStepIdMax": 2, "parentStudySessionId": null}], "direction": false, "startTime": "2026-08-11T00:47:12.071Z", "endTime": "2026-08-11T00:47:12.071Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionSubscribe", "payload": {"studyId": 1}, "direction": true, "startTime": "2026-08-11T00:47:12.067Z", "endTime": "2026-08-11T00:47:12.067Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:12.075Z", "endTime": "2026-08-11T00:47:12.075Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:12.075Z", "endTime": "2026-08-11T00:47:12.075Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:12.075Z", "endTime": "2026-08-11T00:47:12.075Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:12.075Z", "endTime": "2026-08-11T00:47:12.075Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionSubscribe", "payload": {"studyId": 1}, "direction": true, "startTime": "2026-08-11T00:47:13.969Z", "endTime": "2026-08-11T00:47:13.969Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_sessionRefresh", "payload": [{"id": 1, "end": null, "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", "start": "2026-08-11T00:30:28.883Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:30:28.884Z", "deletedAt": null, "updatedAt": "2026-08-11T00:30:28.884Z", "numberSteps": 1, "studyStepId": 1, "creator_name": "admin", "studyStepIdMax": 1, "parentStudySessionId": null}, {"id": 3, "end": "2026-08-11T00:40:46.104Z", "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", "start": "2026-08-11T00:40:34.185Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:40:34.185Z", "deletedAt": null, "updatedAt": "2026-08-11T00:40:46.105Z", "numberSteps": 2, "studyStepId": 2, "creator_name": "admin", "studyStepIdMax": 2, "parentStudySessionId": null}], "direction": false, "startTime": "2026-08-11T00:47:13.972Z", "endTime": "2026-08-11T00:47:13.972Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"action": "copySession", "params": {"studySessionId": 3}}, "action": "actionClick"}, "direction": true, "startTime": "2026-08-11T00:47:13.978Z", "endTime": "2026-08-11T00:47:13.978Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "showModal"}, "direction": true, "startTime": "2026-08-11T00:47:14.426Z", "endTime": "2026-08-11T00:47:14.426Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 942, "clientY": 348, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:16.559Z", "endTime": "2026-08-11T00:47:16.559Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1237, "clientY": 510, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:18.878Z", "endTime": "2026-08-11T00:47:18.878Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "hideModal"}, "direction": true, "startTime": "2026-08-11T00:47:24.871Z", "endTime": "2026-08-11T00:47:24.871Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionSubscribe", "payload": {"studyId": 1}, "direction": true, "startTime": "2026-08-11T00:47:26.422Z", "endTime": "2026-08-11T00:47:26.422Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_sessionRefresh", "payload": [{"id": 1, "end": null, "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", "start": "2026-08-11T00:30:28.883Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:30:28.884Z", "deletedAt": null, "updatedAt": "2026-08-11T00:30:28.884Z", "numberSteps": 1, "studyStepId": 1, "creator_name": "admin", "studyStepIdMax": 1, "parentStudySessionId": null}, {"id": 3, "end": "2026-08-11T00:40:46.104Z", "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", "start": "2026-08-11T00:40:34.185Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:40:34.185Z", "deletedAt": null, "updatedAt": "2026-08-11T00:40:46.105Z", "numberSteps": 2, "studyStepId": 2, "creator_name": "admin", "studyStepIdMax": 2, "parentStudySessionId": null}], "direction": false, "startTime": "2026-08-11T00:47:26.431Z", "endTime": "2026-08-11T00:47:26.431Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"action": "copySession", "params": {"studySessionId": 3}}, "action": "actionClick"}, "direction": true, "startTime": "2026-08-11T00:47:26.438Z", "endTime": "2026-08-11T00:47:26.438Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1232, "clientY": 312, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:26.543Z", "endTime": "2026-08-11T00:47:26.543Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "showModal"}, "direction": true, "startTime": "2026-08-11T00:47:26.877Z", "endTime": "2026-08-11T00:47:26.877Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "hideModal"}, "direction": true, "startTime": "2026-08-11T00:47:28.322Z", "endTime": "2026-08-11T00:47:28.322Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"to": "/dashboard/session_overview", "from": "/dashboard/study_sessions"}, "action": "routeStep"}, "direction": true, "startTime": "2026-08-11T00:47:29.177Z", "endTime": "2026-08-11T00:47:29.177Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "facb1e21-66be-4954-b53b-e9c8cde5d6f1", "direction": true, "startTime": "2026-08-11T00:47:29.179Z", "endTime": "2026-08-11T00:47:29.179Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "fb1645f8-04f6-42b1-bec5-20b13a4b263c", "direction": true, "startTime": "2026-08-11T00:47:29.179Z", "endTime": "2026-08-11T00:47:29.179Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "4704ccd2-aeb2-41d8-a9c3-9247d4397cb2", "direction": true, "startTime": "2026-08-11T00:47:29.179Z", "endTime": "2026-08-11T00:47:29.179Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "302b18ba-c7df-4437-8894-cffb129d26b2", "direction": true, "startTime": "2026-08-11T00:47:29.180Z", "endTime": "2026-08-11T00:47:29.180Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "8db929a4-63cc-44d3-a648-323dbca30269", "direction": true, "startTime": "2026-08-11T00:47:29.180Z", "endTime": "2026-08-11T00:47:29.180Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "6cafe9c7-cf67-4625-888d-d5a9eb6f9dd8", "direction": true, "startTime": "2026-08-11T00:47:29.180Z", "endTime": "2026-08-11T00:47:29.180Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study"}, "direction": true, "startTime": "2026-08-11T00:47:29.194Z", "endTime": "2026-08-11T00:47:29.194Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:29.189Z", "endTime": "2026-08-11T00:47:29.189Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:29.194Z", "endTime": "2026-08-11T00:47:29.194Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "workflow"}, "direction": true, "startTime": "2026-08-11T00:47:29.194Z", "endTime": "2026-08-11T00:47:29.194Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_step"}, "direction": true, "startTime": "2026-08-11T00:47:29.194Z", "endTime": "2026-08-11T00:47:29.194Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 93, "clientY": 323, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:29.209Z", "endTime": "2026-08-11T00:47:29.209Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_stepRefresh", "payload": [{"id": 1, "studyId": 1, "stepType": 1, "createdAt": "2026-08-11T00:26:29.395Z", "updatedAt": "2026-08-11T00:26:29.395Z", "documentId": 2, "stepNumber": 1, "allowBackward": false, "configuration": {}, "workflowStepId": 1, "studyStepDocument": null, "studyStepPrevious": null}, {"id": 2, "studyId": 1, "stepType": 2, "createdAt": "2026-08-11T00:26:29.417Z", "updatedAt": "2026-08-11T00:26:29.417Z", "documentId": 3, "stepNumber": 2, "allowBackward": true, "configuration": {}, "workflowStepId": 2, "studyStepDocument": null, "studyStepPrevious": 1}, {"id": 3, "studyId": 2, "stepType": 1, "createdAt": "2026-08-11T00:32:35.412Z", "updatedAt": "2026-08-11T00:32:35.412Z", "documentId": 2, "stepNumber": 1, "allowBackward": false, "configuration": {}, "workflowStepId": 1, "studyStepDocument": null, "studyStepPrevious": null}, {"id": 4, "studyId": 2, "stepType": 2, "createdAt": "2026-08-11T00:32:35.425Z", "updatedAt": "2026-08-11T00:32:35.425Z", "documentId": 4, "stepNumber": 2, "allowBackward": true, "configuration": {}, "workflowStepId": 2, "studyStepDocument": null, "studyStepPrevious": 3}, {"id": 5, "studyId": 3, "stepType": 1, "createdAt": "2026-08-11T00:33:41.857Z", "updatedAt": "2026-08-11T00:33:41.857Z", "documentId": 5, "stepNumber": 1, "allowBackward": false, "configuration": {}, "workflowStepId": 1, "studyStepDocument": null, "studyStepPrevious": null}, {"id": 6, "studyId": 3, "stepType": 2, "createdAt": "2026-08-11T00:33:41.863Z", "updatedAt": "2026-08-11T00:33:41.863Z", "documentId": 6, "stepNumber": 2, "allowBackward": true, "configuration": {}, "workflowStepId": 2, "studyStepDocument": null, "studyStepPrevious": 5}], "direction": false, "startTime": "2026-08-11T00:47:29.211Z", "endTime": "2026-08-11T00:47:29.211Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studyRefresh", "payload": [{"id": 1, "end": null, "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", "name": "replaystudy", "start": null, "closed": null, "collab": false, "userId": 4, "tagSetId": 1, "template": false, "anonymize": false, "createdAt": "2026-08-11T00:26:29.375Z", "projectId": 1, "resumable": false, "timeLimit": 0, "updatedAt": "2026-08-11T00:26:29.375Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", "creator_name": "admin", "userIdClosed": null, "limitSessions": 0, "parentStudyId": null, "multipleSubmit": false, "createdByUserId": null, "limitSessionsPerUser": 0, "enableEmailNotifications": false}, {"id": 2, "end": null, "hash": "54bd784b-53ed-418f-98c2-49714defe52e", "name": "replaystudytemplate", "start": null, "closed": null, "collab": false, "userId": 4, "tagSetId": 1, "template": true, "anonymize": false, "createdAt": "2026-08-11T00:32:35.384Z", "projectId": 1, "resumable": false, "timeLimit": 0, "updatedAt": "2026-08-11T00:32:35.384Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", "creator_name": "admin", "userIdClosed": null, "limitSessions": 0, "parentStudyId": null, "multipleSubmit": false, "createdByUserId": null, "limitSessionsPerUser": 0, "enableEmailNotifications": false}, {"id": 3, "end": null, "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", "name": "replaystudytemplate", "start": null, "closed": null, "collab": false, "userId": 4, "tagSetId": 1, "template": false, "anonymize": false, "createdAt": "2026-08-11T00:33:41.844Z", "projectId": 1, "resumable": true, "timeLimit": 0, "updatedAt": "2026-08-11T00:33:41.844Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", "creator_name": "admin", "userIdClosed": null, "limitSessions": 1, "parentStudyId": 1, "multipleSubmit": false, "createdByUserId": 4, "limitSessionsPerUser": 1, "enableEmailNotifications": false}], "direction": false, "startTime": "2026-08-11T00:47:29.211Z", "endTime": "2026-08-11T00:47:29.211Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 586, "clientY": 391, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:30.577Z", "endTime": "2026-08-11T00:47:30.577Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 587, "clientY": 390, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:31.263Z", "endTime": "2026-08-11T00:47:31.263Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 647, "clientY": 393, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:32.961Z", "endTime": "2026-08-11T00:47:32.961Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"to": "/dashboard/study_sessions", "from": "/dashboard/session_overview"}, "action": "routeStep"}, "direction": true, "startTime": "2026-08-11T00:47:38.371Z", "endTime": "2026-08-11T00:47:38.371Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "62487834-3709-40e8-82e9-969594192d55", "direction": true, "startTime": "2026-08-11T00:47:38.373Z", "endTime": "2026-08-11T00:47:38.373Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "7b1b6e29-da6d-411b-a880-8b43149bdae0", "direction": true, "startTime": "2026-08-11T00:47:38.373Z", "endTime": "2026-08-11T00:47:38.373Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "6db593f7-83d9-44a6-a8da-94855f783ffc", "direction": true, "startTime": "2026-08-11T00:47:38.373Z", "endTime": "2026-08-11T00:47:38.373Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "ae05ebcf-7a57-453b-81a2-4e109b175e2d", "direction": true, "startTime": "2026-08-11T00:47:38.373Z", "endTime": "2026-08-11T00:47:38.373Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "unsubscribeAppData", "payload": "edeab846-c3c7-47ec-bd2d-707d554a5d00", "direction": true, "startTime": "2026-08-11T00:47:38.373Z", "endTime": "2026-08-11T00:47:38.373Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:38.378Z", "endTime": "2026-08-11T00:47:38.378Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:38.378Z", "endTime": "2026-08-11T00:47:38.378Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionSubscribe", "payload": {"studyId": 1}, "direction": true, "startTime": "2026-08-11T00:47:39.536Z", "endTime": "2026-08-11T00:47:39.536Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_sessionRefresh", "payload": [{"id": 1, "end": null, "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", "start": "2026-08-11T00:30:28.883Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:30:28.884Z", "deletedAt": null, "updatedAt": "2026-08-11T00:30:28.884Z", "numberSteps": 1, "studyStepId": 1, "creator_name": "admin", "studyStepIdMax": 1, "parentStudySessionId": null}, {"id": 3, "end": "2026-08-11T00:40:46.104Z", "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", "start": "2026-08-11T00:40:34.185Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:40:34.185Z", "deletedAt": null, "updatedAt": "2026-08-11T00:40:46.105Z", "numberSteps": 2, "studyStepId": 2, "creator_name": "admin", "studyStepIdMax": 2, "parentStudySessionId": null}], "direction": false, "startTime": "2026-08-11T00:47:39.538Z", "endTime": "2026-08-11T00:47:39.538Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:39.550Z", "endTime": "2026-08-11T00:47:39.550Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:39.551Z", "endTime": "2026-08-11T00:47:39.551Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "user"}, "direction": true, "startTime": "2026-08-11T00:47:39.553Z", "endTime": "2026-08-11T00:47:39.553Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "subscribeAppData", "payload": {"table": "study_session"}, "direction": true, "startTime": "2026-08-11T00:47:39.554Z", "endTime": "2026-08-11T00:47:39.554Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1027, "clientY": 324, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:40.677Z", "endTime": "2026-08-11T00:47:40.677Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_sessionRefresh", "payload": [{"id": 1, "end": null, "hash": "54da13e9-0802-426c-9767-cbdc6ae8b033", "start": "2026-08-11T00:30:28.883Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:30:28.884Z", "deletedAt": null, "updatedAt": "2026-08-11T00:30:28.884Z", "numberSteps": 1, "studyStepId": 1, "creator_name": "admin", "studyStepIdMax": 1, "parentStudySessionId": null}, {"id": 3, "end": "2026-08-11T00:40:46.104Z", "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", "start": "2026-08-11T00:40:34.185Z", "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:40:34.185Z", "deletedAt": null, "updatedAt": "2026-08-11T00:40:46.105Z", "numberSteps": 2, "studyStepId": 2, "creator_name": "admin", "studyStepIdMax": 2, "parentStudySessionId": null}], "direction": false, "startTime": "2026-08-11T00:47:41.788Z", "endTime": "2026-08-11T00:47:41.788Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionSubscribe", "payload": {"studyId": 1}, "direction": true, "startTime": "2026-08-11T00:47:41.786Z", "endTime": "2026-08-11T00:47:41.786Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"action": "copySession", "params": {"studySessionId": 3}}, "action": "actionClick"}, "direction": true, "startTime": "2026-08-11T00:47:41.796Z", "endTime": "2026-08-11T00:47:41.796Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "showModal"}, "direction": true, "startTime": "2026-08-11T00:47:42.243Z", "endTime": "2026-08-11T00:47:42.243Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 938, "clientY": 387, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:43.545Z", "endTime": "2026-08-11T00:47:43.545Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 940, "clientY": 388, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:45.128Z", "endTime": "2026-08-11T00:47:45.128Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"title": "Next"}, "action": "clickCardButton"}, "direction": true, "startTime": "2026-08-11T00:47:45.870Z", "endTime": "2026-08-11T00:47:45.870Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 972, "clientY": 347, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:47.160Z", "endTime": "2026-08-11T00:47:47.160Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionCopy", "payload": {"userIds": [4], "studySession": {"id": 3, "end": "2026-08-11T00:40:46.104Z", "hash": "5913037e-af99-4829-9a79-a1d86a6ae8df", "start": "2026-08-11T00:40:34.185Z", "userId": 4, "deleted": false, "studyId": 1, "finished": true, "createdAt": "2026-08-11T00:40:34.185Z", "deletedAt": null, "resumable": false, "updatedAt": "2026-08-11T00:40:46.105Z", "numberSteps": 2, "startParsed": "8/11/2026, 2:40:34 AM", "studyStepId": 2, "creator_name": "admin", "studyStepIdMax": 2, "showStartButton": false, "showDeleteButton": false, "showResumeButton": false, "showInspectButton": false, "parentStudySessionId": "-"}}, "direction": true, "startTime": "2026-08-11T00:47:49.120Z", "endTime": "2026-08-11T00:47:49.120Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"title": "Submit"}, "action": "clickCardButton"}, "direction": true, "startTime": "2026-08-11T00:47:49.124Z", "endTime": "2026-08-11T00:47:49.124Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studyRefresh", "payload": [{"id": 1, "end": null, "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", "name": "replaystudy", "start": null, "closed": null, "collab": false, "userId": 4, "deleted": false, "tagSetId": 1, "template": false, "anonymize": false, "createdAt": "2026-08-11T00:26:29.375Z", "projectId": 1, "resumable": false, "timeLimit": 0, "updatedAt": "2026-08-11T00:47:49.144Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", "userIdClosed": null, "limitSessions": 0, "parentStudyId": null, "multipleSubmit": false, "createdByUserId": null, "limitSessionsPerUser": 1, "enableEmailNotifications": false}, {"id": 1, "end": null, "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", "name": "replaystudy", "start": null, "closed": null, "collab": false, "userId": 4, "deleted": false, "tagSetId": 1, "template": false, "anonymize": false, "createdAt": "2026-08-11T00:26:29.375Z", "projectId": 1, "resumable": false, "timeLimit": 0, "updatedAt": "2026-08-11T00:47:49.160Z", "workflowId": 1, "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", "userIdClosed": null, "limitSessions": 1, "parentStudyId": null, "multipleSubmit": false, "createdByUserId": null, "limitSessionsPerUser": 1, "enableEmailNotifications": false}], "direction": false, "startTime": "2026-08-11T00:47:49.217Z", "endTime": "2026-08-11T00:47:49.217Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "study_sessionRefresh", "payload": [{"id": 4, "end": null, "hash": "837cae21-71c7-45a6-a656-7ac379f569cf", "start": null, "userId": 4, "deleted": false, "studyId": 1, "createdAt": "2026-08-11T00:47:49.179Z", "updatedAt": "2026-08-11T00:47:49.179Z", "numberSteps": 1, "studyStepId": 1, "studyStepIdMax": 1, "parentStudySessionId": 3}], "direction": false, "startTime": "2026-08-11T00:47:49.218Z", "endTime": "2026-08-11T00:47:49.218Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "studySessionUnsubscribe", "payload": {"studyId": 1}, "direction": true, "startTime": "2026-08-11T00:47:49.230Z", "endTime": "2026-08-11T00:47:49.230Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"name": "stepperModal", "props": {}}, "action": "hideModal"}, "direction": true, "startTime": "2026-08-11T00:47:49.235Z", "endTime": "2026-08-11T00:47:49.235Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1255, "clientY": 392, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:49.446Z", "endTime": "2026-08-11T00:47:49.446Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1178, "clientY": 360, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:50.526Z", "endTime": "2026-08-11T00:47:50.526Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1262, "clientY": 355, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:47:58.697Z", "endTime": "2026-08-11T00:47:58.697Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"clientX": 1117, "clientY": 4, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-11T00:48:01.911Z", "endTime": "2026-08-11T00:48:01.911Z"}, {"recordingId": 11, "userId": 4, "socketId": "d9A9RFi1xfVMSPlsAAAL", "action": "stats", "payload": {"data": {"hidden": true}, "action": "tabVisibilityChange"}, "direction": true, "startTime": "2026-08-11T00:48:02.107Z", "endTime": "2026-08-11T00:48:02.107Z"}]} \ No newline at end of file diff --git a/backend/tests/regression_stories/570-close-study.json b/backend/tests/regression_stories/570-close-study.json new file mode 100644 index 000000000..6fc78eee3 --- /dev/null +++ b/backend/tests/regression_stories/570-close-study.json @@ -0,0 +1,3928 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-11T00:51:42.994Z", + "traceCount": 47, + "recording": { + "name": "570-close-study", + "status": "finished", + "startTime": "2026-08-11T00:50:35.568Z", + "userId": 4, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ], + "excludeEvents": null, + "endTime": "2026-08-11T00:50:55.141Z" + }, + "traces": [ + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "recordingRefresh", + "payload": [ + { + "id": 12, + "name": "Recording 8/11/2026, 2:50:35 AM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-11T00:50:35.569Z", + "startTime": "2026-08-11T00:50:35.568Z", + "updatedAt": "2026-08-11T00:50:35.569Z", + "excludeEvents": null, + "participantSocketIds": [ + "d9A9RFi1xfVMSPlsAAAL" + ] + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:35.584Z", + "endTime": "2026-08-11T00:50:35.584Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:50:36.825Z", + "endTime": "2026-08-11T00:50:36.825Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 663, + "clientY": 367, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:50:38.347Z", + "endTime": "2026-08-11T00:50:38.347Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 633, + "clientY": 329, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:50:41.247Z", + "endTime": "2026-08-11T00:50:41.247Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 131, + "clientY": 180, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.296Z", + "endTime": "2026-08-11T00:50:43.296Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/studies", + "from": "/dashboard/study_sessions" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.321Z", + "endTime": "2026-08-11T00:50:43.321Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "988279e7-1620-4c99-ab6c-fec11e947666", + "direction": true, + "startTime": "2026-08-11T00:50:43.325Z", + "endTime": "2026-08-11T00:50:43.325Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "7e16db9c-2408-4807-960d-56f48b49b4f7", + "direction": true, + "startTime": "2026-08-11T00:50:43.326Z", + "endTime": "2026-08-11T00:50:43.326Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "122bd1a8-9fd0-447e-8679-7eee019ded46", + "direction": true, + "startTime": "2026-08-11T00:50:43.326Z", + "endTime": "2026-08-11T00:50:43.326Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "bf297f3f-40f4-49b6-8483-74c8f54e2f6d", + "direction": true, + "startTime": "2026-08-11T00:50:43.330Z", + "endTime": "2026-08-11T00:50:43.330Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "8c2a87ca-464f-4bda-81c6-32fb4fdf9f65", + "direction": true, + "startTime": "2026-08-11T00:50:43.330Z", + "endTime": "2026-08-11T00:50:43.330Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "unsubscribeAppData", + "payload": "6f4aa0b4-a0aa-4659-86ce-ee8617b643a1", + "direction": true, + "startTime": "2026-08-11T00:50:43.330Z", + "endTime": "2026-08-11T00:50:43.330Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.343Z", + "endTime": "2026-08-11T00:50:43.343Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.344Z", + "endTime": "2026-08-11T00:50:43.344Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "configuration", + "filter": [ + { + "key": "type", + "value": 0 + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.346Z", + "endTime": "2026-08-11T00:50:43.346Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.347Z", + "endTime": "2026-08-11T00:50:43.347Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study", + "include": [ + { + "by": "userId", + "table": "user" + } + ] + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.347Z", + "endTime": "2026-08-11T00:50:43.347Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.347Z", + "endTime": "2026-08-11T00:50:43.347Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.347Z", + "endTime": "2026-08-11T00:50:43.347Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.348Z", + "endTime": "2026-08-11T00:50:43.348Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.347Z", + "endTime": "2026-08-11T00:50:43.347Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.348Z", + "endTime": "2026-08-11T00:50:43.348Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-11T00:50:43.348Z", + "endTime": "2026-08-11T00:50:43.348Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-11T00:15:41.990Z", + "updatedAt": "2026-08-11T00:15:49.589Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:43.365Z", + "endTime": "2026-08-11T00:50:43.365Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:43.387Z", + "endTime": "2026-08-11T00:50:43.387Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + }, + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:47:49.160Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:43.388Z", + "endTime": "2026-08-11T00:50:43.388Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-11T00:26:29.395Z", + "updatedAt": "2026-08-11T00:26:29.395Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-11T00:26:29.417Z", + "updatedAt": "2026-08-11T00:26:29.417Z", + "documentId": 3, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-11T00:32:35.412Z", + "updatedAt": "2026-08-11T00:32:35.412Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-11T00:32:35.425Z", + "updatedAt": "2026-08-11T00:32:35.425Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-11T00:33:41.857Z", + "updatedAt": "2026-08-11T00:33:41.857Z", + "documentId": 5, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-11T00:33:41.863Z", + "updatedAt": "2026-08-11T00:33:41.863Z", + "documentId": 6, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:43.395Z", + "endTime": "2026-08-11T00:50:43.395Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 2, + "end": null, + "hash": "54bd784b-53ed-418f-98c2-49714defe52e", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": true, + "anonymize": false, + "createdAt": "2026-08-11T00:32:35.384Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:32:35.384Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:33:41.844Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + }, + { + "id": 1, + "end": null, + "hash": "584adaad-05b8-4235-b575-59b6c6c0d112", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:26:29.375Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:47:49.160Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:43.395Z", + "endTime": "2026-08-11T00:50:43.395Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1322, + "clientY": 265, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:50:47.764Z", + "endTime": "2026-08-11T00:50:47.764Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "action": "closeStudy", + "params": { + "studyId": 3 + } + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-11T00:50:48.028Z", + "endTime": "2026-08-11T00:50:48.028Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "study-close-modal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-11T00:50:48.480Z", + "endTime": "2026-08-11T00:50:48.480Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyClose", + "payload": { + "studyId": 3, + "notifySessions": false + }, + "direction": true, + "startTime": "2026-08-11T00:50:50.172Z", + "endTime": "2026-08-11T00:50:50.172Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-11T00:50:50.176Z", + "endTime": "2026-08-11T00:50:50.176Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "studyRefresh", + "payload": [ + { + "id": 3, + "end": null, + "hash": "f39dca56-2735-478a-ab3c-23f35ba517df", + "name": "replaystudytemplate", + "start": null, + "closed": "2026-08-11T00:50:50.194Z", + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-11T00:33:41.844Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-11T00:50:50.195Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-11T00:50:50.212Z", + "endTime": "2026-08-11T00:50:50.212Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "name": "study-close-modal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-11T00:50:50.223Z", + "endTime": "2026-08-11T00:50:50.223Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 913, + "clientY": 205, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:50:50.479Z", + "endTime": "2026-08-11T00:50:50.479Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "clientX": 1107, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-11T00:50:52.045Z", + "endTime": "2026-08-11T00:50:52.045Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "d9A9RFi1xfVMSPlsAAAL", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-11T00:50:53.953Z", + "endTime": "2026-08-11T00:50:53.953Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/580-anonymous-study-mode.json b/backend/tests/regression_stories/580-anonymous-study-mode.json new file mode 100644 index 000000000..22f4f6aee --- /dev/null +++ b/backend/tests/regression_stories/580-anonymous-study-mode.json @@ -0,0 +1,5922 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T18:02:19.178Z", + "traceCount": 84, + "recording": { + "name": "580-anonymous-study-mode", + "status": "finished", + "startTime": "2026-08-14T14:39:59.524Z", + "endTime": "2026-08-14T14:42:07.353Z", + "userId": 4, + "participantSocketIds": [ + "vqQNw-zydud49qrFAABr" + ], + "excludeEvents": null + }, + "traces": [ + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "recordingRefresh", + "payload": [ + { + "id": 11, + "name": "Recording 8/14/2026, 4:39:59 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:39:59.526Z", + "startTime": "2026-08-14T14:39:59.524Z", + "updatedAt": "2026-08-14T14:39:59.526Z", + "excludeEvents": null, + "participantSocketIds": [ + "vqQNw-zydud49qrFAABr" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:39:59.542Z", + "endTime": "2026-08-14T14:39:59.542Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:00.471Z", + "endTime": "2026-08-14T14:40:00.471Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/studies", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.670Z", + "endTime": "2026-08-14T14:40:03.670Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "1e53439a-0770-4f50-8247-8b5134b36a73", + "direction": true, + "startTime": "2026-08-14T14:40:03.679Z", + "endTime": "2026-08-14T14:40:03.679Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "bd8bfdab-0f5b-4140-83de-640a5272c1f6", + "direction": true, + "startTime": "2026-08-14T14:40:03.679Z", + "endTime": "2026-08-14T14:40:03.679Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "7cf62eb0-c46a-4f71-8188-053a8f159e96", + "direction": true, + "startTime": "2026-08-14T14:40:03.683Z", + "endTime": "2026-08-14T14:40:03.683Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "7ab81701-c2b8-4604-ada8-63e120ed9a4b", + "direction": true, + "startTime": "2026-08-14T14:40:03.683Z", + "endTime": "2026-08-14T14:40:03.683Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "3862d06f-f719-43a3-8700-af983a84fc0c", + "direction": true, + "startTime": "2026-08-14T14:40:03.683Z", + "endTime": "2026-08-14T14:40:03.683Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "55c50aaf-ed4c-4113-b482-60f9d552bc0f", + "direction": true, + "startTime": "2026-08-14T14:40:03.683Z", + "endTime": "2026-08-14T14:40:03.683Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.732Z", + "endTime": "2026-08-14T14:40:03.732Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "configuration", + "filter": [ + { + "key": "type", + "value": 0 + } + ] + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "document_data" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study", + "include": [ + { + "by": "userId", + "table": "user" + } + ] + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study_session" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.735Z", + "endTime": "2026-08-14T14:40:03.735Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study_step" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.735Z", + "endTime": "2026-08-14T14:40:03.735Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "workflow_step" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.735Z", + "endTime": "2026-08-14T14:40:03.735Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.734Z", + "endTime": "2026-08-14T14:40:03.734Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.735Z", + "endTime": "2026-08-14T14:40:03.735Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "workflow_stepRefresh", + "payload": [ + { + "id": 3, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.359Z", + "updatedAt": "2026-08-14T13:54:10.359Z", + "workflowId": 2, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 15, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.786Z", + "updatedAt": "2026-08-14T13:54:10.786Z", + "workflowId": 6, + "allowBackward": true, + "configuration": { + "services": [ + { + "name": "textualFeedback", + "type": "nlpRequest", + "required": true + } + ], + "placeholders": false + }, + "workflowStepDocument": 14, + "workflowStepPrevious": 14 + }, + { + "id": 2, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.358Z", + "updatedAt": "2026-08-14T13:54:10.358Z", + "workflowId": 1, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 1 + }, + { + "id": 5, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.360Z", + "updatedAt": "2026-08-14T13:54:10.360Z", + "workflowId": 2, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": 3, + "workflowStepPrevious": 4 + }, + { + "id": 13, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.784Z", + "updatedAt": "2026-08-14T13:54:10.784Z", + "workflowId": 5, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 12 + }, + { + "id": 16, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.920Z", + "updatedAt": "2026-08-14T13:54:10.920Z", + "workflowId": 7, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "showAllDocumentAnnotations", + "help": "If enabled, default annotations will be shown to the reviewer.", + "type": "switch", + "label": "Show All Document Annotations", + "default": true, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "annotator" + ] + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 7, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.362Z", + "updatedAt": "2026-08-14T13:54:10.362Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 1, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.357Z", + "updatedAt": "2026-08-14T13:54:10.357Z", + "workflowId": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 8, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.362Z", + "updatedAt": "2026-08-14T13:54:10.362Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 7 + }, + { + "id": 10, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.363Z", + "updatedAt": "2026-08-14T13:54:10.363Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 9 + }, + { + "id": 9, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.363Z", + "updatedAt": "2026-08-14T13:54:10.363Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": 7, + "workflowStepPrevious": 8 + }, + { + "id": 11, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.724Z", + "updatedAt": "2026-08-14T13:54:10.724Z", + "workflowId": 4, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 4, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.360Z", + "updatedAt": "2026-08-14T13:54:10.360Z", + "workflowId": 2, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpEditComparison", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "modalSize", + "type": "select", + "label": "Modal Size", + "options": [ + { + "name": "Small", + "value": "sm" + }, + { + "name": "Medium", + "value": "md" + }, + { + "name": "Large", + "value": "lg" + }, + { + "name": "Extra Large", + "value": "xl" + } + ], + "required": true + } + ] + } + }, + "workflowStepDocument": null, + "workflowStepPrevious": 3 + }, + { + "id": 6, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.361Z", + "updatedAt": "2026-08-14T13:54:10.361Z", + "workflowId": 2, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpEditComparison", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "modalSize", + "type": "select", + "label": "Modal Size", + "options": [ + { + "name": "Small", + "value": "sm" + }, + { + "name": "Medium", + "value": "md" + }, + { + "name": "Large", + "value": "lg" + }, + { + "name": "Extra Large", + "value": "xl" + } + ], + "required": true + } + ] + } + }, + "workflowStepDocument": null, + "workflowStepPrevious": 5 + }, + { + "id": 12, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.783Z", + "updatedAt": "2026-08-14T13:54:10.783Z", + "workflowId": 5, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step assessment.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 14, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.785Z", + "updatedAt": "2026-08-14T13:54:10.785Z", + "workflowId": 6, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpAssessment", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step.", + "type": "select", + "label": "Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 17, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.921Z", + "updatedAt": "2026-08-14T13:54:10.921Z", + "workflowId": 7, + "allowBackward": true, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step assessment.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "editor" + ] + }, + "workflowStepDocument": 16, + "workflowStepPrevious": 16 + }, + { + "id": 18, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:11.005Z", + "updatedAt": "2026-08-14T13:54:11.005Z", + "workflowId": 8, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for assessment sidebar.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, users must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + }, + { + "key": "showAllDocumentAnnotations", + "help": "If enabled, all document annotations will be shown to the reviewer.", + "type": "switch", + "label": "Show all document Annotations", + "default": true, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "annotator", + "assessment" + ] + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 19, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:11.006Z", + "updatedAt": "2026-08-14T13:54:11.006Z", + "workflowId": 8, + "allowBackward": true, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for assessment sidebar.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, users must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [], + "previousAssessmentData": 1 + }, + "workflowStepDocument": null, + "workflowStepPrevious": 18 + }, + { + "id": 20, + "name": "first", + "stepType": 2, + "createdAt": "2026-08-14T13:55:22.862Z", + "updatedAt": "2026-08-14T13:55:22.862Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 21, + "name": "second", + "stepType": 1, + "createdAt": "2026-08-14T13:55:23.290Z", + "updatedAt": "2026-08-14T13:55:23.290Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 20 + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.766Z", + "endTime": "2026-08-14T14:40:03.766Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "user_roleRefresh", + "payload": [ + { + "id": 1, + "name": "user", + "createdAt": "2026-08-14T13:54:09.962Z", + "updatedAt": "2026-08-14T13:54:09.962Z", + "description": "no system rights" + }, + { + "id": 2, + "name": "admin", + "createdAt": "2026-08-14T13:54:09.962Z", + "updatedAt": "2026-08-14T13:54:09.962Z", + "description": "full control" + }, + { + "id": 3, + "name": "teacher", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "responsible for coordination" + }, + { + "id": 4, + "name": "mentor", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "have the right to grade" + }, + { + "id": 5, + "name": "student", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "leave inline commentary" + }, + { + "id": 6, + "name": "guest", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "have limited rights when using the platform" + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.767Z", + "endTime": "2026-08-14T14:40:03.767Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:40:03.735Z", + "endTime": "2026-08-14T14:40:03.735Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "document_dataRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-14T14:40:03.765Z", + "endTime": "2026-08-14T14:40:03.765Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "studyRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "ca37a014-02a1-4547-97dc-a958c61662da", + "name": "replaystudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-14T13:55:26.017Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-14T13:56:09.276Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"this is a test\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 2, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 2, + "enableEmailNotifications": false + }, + { + "id": 3, + "end": null, + "hash": "f638ba50-631e-4caf-b605-787c559d828f", + "name": "replaystudytemplate", + "start": null, + "closed": "2026-08-14T13:56:11.699Z", + "collab": false, + "userId": 4, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-14T13:55:30.728Z", + "projectId": 1, + "resumable": true, + "timeLimit": 0, + "updatedAt": "2026-08-14T13:56:11.700Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"template\\n\"}]}", + "creator_name": "admin", + "userIdClosed": null, + "limitSessions": 1, + "parentStudyId": 1, + "multipleSubmit": false, + "createdByUserId": 4, + "limitSessionsPerUser": 1, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.760Z", + "endTime": "2026-08-14T14:40:03.760Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-14T13:55:26.035Z", + "updatedAt": "2026-08-14T13:55:26.035Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-14T13:55:26.061Z", + "updatedAt": "2026-08-14T13:55:26.061Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 3, + "studyId": 2, + "stepType": 1, + "createdAt": "2026-08-14T13:55:27.343Z", + "updatedAt": "2026-08-14T13:55:27.343Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 4, + "studyId": 2, + "stepType": 2, + "createdAt": "2026-08-14T13:55:27.369Z", + "updatedAt": "2026-08-14T13:55:27.369Z", + "documentId": 5, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 3 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-14T13:55:30.737Z", + "updatedAt": "2026-08-14T13:55:30.737Z", + "documentId": 6, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-14T13:55:30.747Z", + "updatedAt": "2026-08-14T13:55:30.747Z", + "documentId": 7, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.771Z", + "endTime": "2026-08-14T14:40:03.771Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "submissionRefresh", + "payload": [ + { + "id": 1, + "name": "assignment submission", + "extId": null, + "userId": 3, + "createdAt": "2026-08-14T14:10:40.191Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:10:40.191Z", + "description": "hi", + "assignmentId": 1, + "creator_name": "guest", + "createdByUserId": 4, + "additionalSettings": null, + "parentSubmissionId": null, + "previousSubmissionId": null, + "validationConfigurationId": 3 + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.774Z", + "endTime": "2026-08-14T14:40:03.774Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "user_role_matchingRefresh", + "payload": [ + { + "id": 2, + "userId": 3, + "createdAt": "2026-08-14T13:54:10.010Z", + "updatedAt": "2026-08-14T13:54:10.010Z", + "userRoleId": 6, + "creator_name": "guest" + }, + { + "id": 3, + "userId": 4, + "createdAt": "2026-08-14T13:54:19.457Z", + "updatedAt": "2026-08-14T13:54:19.457Z", + "userRoleId": 1, + "creator_name": "admin" + }, + { + "id": 4, + "userId": 4, + "createdAt": "2026-08-14T13:54:19.462Z", + "updatedAt": "2026-08-14T13:54:19.462Z", + "userRoleId": 2, + "creator_name": "admin" + }, + { + "id": 5, + "userId": 5, + "createdAt": "2026-08-14T13:55:16.314Z", + "updatedAt": "2026-08-14T13:55:16.314Z", + "userRoleId": 1, + "creator_name": "jojo" + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.769Z", + "endTime": "2026-08-14T14:40:03.769Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "study_stepRefresh", + "payload": [ + { + "id": 1, + "studyId": 1, + "stepType": 1, + "createdAt": "2026-08-14T13:55:26.035Z", + "updatedAt": "2026-08-14T13:55:26.035Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 2, + "studyId": 1, + "stepType": 2, + "createdAt": "2026-08-14T13:55:26.061Z", + "updatedAt": "2026-08-14T13:55:26.061Z", + "documentId": 4, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 1 + }, + { + "id": 5, + "studyId": 3, + "stepType": 1, + "createdAt": "2026-08-14T13:55:30.737Z", + "updatedAt": "2026-08-14T13:55:30.737Z", + "documentId": 6, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 6, + "studyId": 3, + "stepType": 2, + "createdAt": "2026-08-14T13:55:30.747Z", + "updatedAt": "2026-08-14T13:55:30.747Z", + "documentId": 7, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 5 + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.803Z", + "endTime": "2026-08-14T14:40:03.803Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "study_sessionRefresh", + "payload": [ + { + "id": 1, + "end": null, + "hash": "764edc4e-7cc7-42e9-af1a-1284c50db35f", + "start": null, + "userId": 3, + "studyId": 3, + "createdAt": "2026-08-14T13:55:30.758Z", + "updatedAt": "2026-08-14T13:55:30.758Z", + "numberSteps": 1, + "studyStepId": 5, + "creator_name": "guest", + "studyStepIdMax": 5, + "parentStudySessionId": null + }, + { + "id": 2, + "end": null, + "hash": "d7fbb2a1-87de-4089-bc31-8643214cb131", + "start": "2026-08-14T13:55:34.862Z", + "userId": 4, + "studyId": 1, + "createdAt": "2026-08-14T13:55:34.863Z", + "updatedAt": "2026-08-14T13:55:34.863Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": null + }, + { + "id": 3, + "end": "2026-08-14T13:55:53.912Z", + "hash": "b49be6ed-98dc-45bb-813a-bd19f701f153", + "start": "2026-08-14T13:55:48.976Z", + "userId": 4, + "studyId": 1, + "createdAt": "2026-08-14T13:55:48.977Z", + "updatedAt": "2026-08-14T13:55:53.913Z", + "numberSteps": 2, + "studyStepId": 2, + "creator_name": "admin", + "studyStepIdMax": 2, + "parentStudySessionId": null + }, + { + "id": 4, + "end": null, + "hash": "a5974ede-7487-4525-b1c9-25a9c8487219", + "start": null, + "userId": 4, + "studyId": 1, + "createdAt": "2026-08-14T13:56:04.529Z", + "updatedAt": "2026-08-14T13:56:04.529Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": 3 + }, + { + "id": 5, + "end": null, + "hash": "13e157e3-13e9-42d2-b4f8-c8c2c29cc93d", + "start": null, + "userId": 4, + "studyId": 1, + "createdAt": "2026-08-14T13:56:09.289Z", + "updatedAt": "2026-08-14T13:56:09.289Z", + "numberSteps": 1, + "studyStepId": 1, + "creator_name": "admin", + "studyStepIdMax": 1, + "parentStudySessionId": 3 + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.804Z", + "endTime": "2026-08-14T14:40:03.804Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "workflowRefresh", + "payload": [ + { + "id": 1, + "name": "Peer Review Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:10.356Z", + "updatedAt": "2026-08-14T13:54:10.356Z", + "description": "EiWA Project: Review a PDF document and write free text.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 2, + "name": "Ruhr-Uni Bochum Project", + "userId": null, + "createdAt": "2026-08-14T13:54:10.356Z", + "updatedAt": "2026-08-14T13:54:10.356Z", + "description": "Ruhr-Uni Bochum Project: Correct a document over two revisions with edits overview.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 3, + "name": "Ruhr-Uni Bochum Project (Control)", + "userId": null, + "createdAt": "2026-08-14T13:54:10.356Z", + "updatedAt": "2026-08-14T13:54:10.356Z", + "description": "Ruhr-Uni Bochum Project: Correct a document over two revisions with edits overview.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 4, + "name": "Annotation Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:10.723Z", + "updatedAt": "2026-08-14T13:54:10.723Z", + "description": "Workflow with one single annotation step.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 5, + "name": "Peer Review Workflow (Assessment)", + "userId": null, + "createdAt": "2026-08-14T13:54:10.782Z", + "updatedAt": "2026-08-14T13:54:10.782Z", + "description": "Peer Review Workflow with Assessment: Review a PDF document, write free text, and select configuration.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 6, + "name": "Peer Review Workflow (Assessment with AI)", + "userId": null, + "createdAt": "2026-08-14T13:54:10.782Z", + "updatedAt": "2026-08-14T13:54:10.782Z", + "description": "Peer Review Workflow with Assessment and AI: Review a PDF document, write free text, select configuration, and use AI assessment.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 7, + "name": "Review Assessment Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:10.919Z", + "updatedAt": "2026-08-14T13:54:10.919Z", + "description": "Review Assessment Workflow: Review a submitted study session", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 8, + "name": "Revision Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:11.004Z", + "updatedAt": "2026-08-14T13:54:11.004Z", + "description": "Two-step annotation workflow: review previous submission, then annotate with assessment", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 9, + "name": "replayworkflow", + "userId": 4, + "createdAt": "2026-08-14T13:55:21.852Z", + "updatedAt": "2026-08-14T13:55:21.852Z", + "description": "hi", + "creator_name": "admin", + "hideInFrontend": false, + "parentWorkflowId": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.807Z", + "endTime": "2026-08-14T14:40:03.807Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "Bot", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "guest", + "updatedAt": "2026-08-14T14:34:54.080Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-14T14:34:54.080Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-14T13:54:19.451Z", + "firstName": "admin", + "updatedAt": "2026-08-14T14:38:58.385Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-14T14:38:58.385Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-14T13:55:16.309Z", + "firstName": "Joseph", + "updatedAt": "2026-08-14T13:55:16.316Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.760Z", + "endTime": "2026-08-14T14:40:03.760Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.772Z", + "endTime": "2026-08-14T14:40:03.772Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "workflow_stepRefresh", + "payload": [ + { + "id": 3, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.359Z", + "updatedAt": "2026-08-14T13:54:10.359Z", + "workflowId": 2, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 15, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.786Z", + "updatedAt": "2026-08-14T13:54:10.786Z", + "workflowId": 6, + "allowBackward": true, + "configuration": { + "services": [ + { + "name": "textualFeedback", + "type": "nlpRequest", + "required": true + } + ], + "placeholders": false + }, + "workflowStepDocument": 14, + "workflowStepPrevious": 14 + }, + { + "id": 2, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.358Z", + "updatedAt": "2026-08-14T13:54:10.358Z", + "workflowId": 1, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 1 + }, + { + "id": 5, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.360Z", + "updatedAt": "2026-08-14T13:54:10.360Z", + "workflowId": 2, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": 3, + "workflowStepPrevious": 4 + }, + { + "id": 13, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.784Z", + "updatedAt": "2026-08-14T13:54:10.784Z", + "workflowId": 5, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 12 + }, + { + "id": 16, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.920Z", + "updatedAt": "2026-08-14T13:54:10.920Z", + "workflowId": 7, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "showAllDocumentAnnotations", + "help": "If enabled, default annotations will be shown to the reviewer.", + "type": "switch", + "label": "Show All Document Annotations", + "default": true, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "annotator" + ] + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 7, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.362Z", + "updatedAt": "2026-08-14T13:54:10.362Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 1, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.357Z", + "updatedAt": "2026-08-14T13:54:10.357Z", + "workflowId": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 8, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.362Z", + "updatedAt": "2026-08-14T13:54:10.362Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 7 + }, + { + "id": 10, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.363Z", + "updatedAt": "2026-08-14T13:54:10.363Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 9 + }, + { + "id": 9, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.363Z", + "updatedAt": "2026-08-14T13:54:10.363Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": 7, + "workflowStepPrevious": 8 + }, + { + "id": 11, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.724Z", + "updatedAt": "2026-08-14T13:54:10.724Z", + "workflowId": 4, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 4, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.360Z", + "updatedAt": "2026-08-14T13:54:10.360Z", + "workflowId": 2, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpEditComparison", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "modalSize", + "type": "select", + "label": "Modal Size", + "options": [ + { + "name": "Small", + "value": "sm" + }, + { + "name": "Medium", + "value": "md" + }, + { + "name": "Large", + "value": "lg" + }, + { + "name": "Extra Large", + "value": "xl" + } + ], + "required": true + } + ] + } + }, + "workflowStepDocument": null, + "workflowStepPrevious": 3 + }, + { + "id": 6, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.361Z", + "updatedAt": "2026-08-14T13:54:10.361Z", + "workflowId": 2, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpEditComparison", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "modalSize", + "type": "select", + "label": "Modal Size", + "options": [ + { + "name": "Small", + "value": "sm" + }, + { + "name": "Medium", + "value": "md" + }, + { + "name": "Large", + "value": "lg" + }, + { + "name": "Extra Large", + "value": "xl" + } + ], + "required": true + } + ] + } + }, + "workflowStepDocument": null, + "workflowStepPrevious": 5 + }, + { + "id": 12, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.783Z", + "updatedAt": "2026-08-14T13:54:10.783Z", + "workflowId": 5, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step assessment.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 14, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.785Z", + "updatedAt": "2026-08-14T13:54:10.785Z", + "workflowId": 6, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpAssessment", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step.", + "type": "select", + "label": "Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 17, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.921Z", + "updatedAt": "2026-08-14T13:54:10.921Z", + "workflowId": 7, + "allowBackward": true, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step assessment.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "editor" + ] + }, + "workflowStepDocument": 16, + "workflowStepPrevious": 16 + }, + { + "id": 18, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:11.005Z", + "updatedAt": "2026-08-14T13:54:11.005Z", + "workflowId": 8, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for assessment sidebar.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, users must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + }, + { + "key": "showAllDocumentAnnotations", + "help": "If enabled, all document annotations will be shown to the reviewer.", + "type": "switch", + "label": "Show all document Annotations", + "default": true, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "annotator", + "assessment" + ] + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 19, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:11.006Z", + "updatedAt": "2026-08-14T13:54:11.006Z", + "workflowId": 8, + "allowBackward": true, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for assessment sidebar.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, users must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [], + "previousAssessmentData": 1 + }, + "workflowStepDocument": null, + "workflowStepPrevious": 18 + }, + { + "id": 20, + "name": "first", + "stepType": 2, + "createdAt": "2026-08-14T13:55:22.862Z", + "updatedAt": "2026-08-14T13:55:22.862Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 21, + "name": "second", + "stepType": 1, + "createdAt": "2026-08-14T13:55:23.290Z", + "updatedAt": "2026-08-14T13:55:23.290Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 20 + } + ], + "direction": false, + "startTime": "2026-08-14T14:40:03.807Z", + "endTime": "2026-08-14T14:40:03.807Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:40:05.528Z", + "endTime": "2026-08-14T14:40:05.528Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:40:05.544Z", + "endTime": "2026-08-14T14:40:05.544Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-14T14:40:05.544Z", + "endTime": "2026-08-14T14:40:05.544Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:40:06.017Z", + "endTime": "2026-08-14T14:40:06.017Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 726, + "clientY": 147, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:07.185Z", + "endTime": "2026-08-14T14:40:07.185Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 723, + "clientY": 187, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:11.850Z", + "endTime": "2026-08-14T14:40:11.850Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 707, + "clientY": 200, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:13.034Z", + "endTime": "2026-08-14T14:40:13.034Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 695, + "clientY": 237, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:14.183Z", + "endTime": "2026-08-14T14:40:14.183Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 706, + "clientY": 308, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:15.978Z", + "endTime": "2026-08-14T14:40:15.978Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:16.902Z", + "endTime": "2026-08-14T14:40:16.902Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:19.887Z", + "endTime": "2026-08-14T14:40:19.887Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 648, + "clientY": 313, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:21.418Z", + "endTime": "2026-08-14T14:40:21.418Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 662, + "clientY": 399, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:23.184Z", + "endTime": "2026-08-14T14:40:23.184Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:26.324Z", + "endTime": "2026-08-14T14:40:26.324Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:30.366Z", + "endTime": "2026-08-14T14:40:30.366Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:35.236Z", + "endTime": "2026-08-14T14:40:35.236Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:38.094Z", + "endTime": "2026-08-14T14:40:38.094Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 592, + "clientY": 684, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:41.386Z", + "endTime": "2026-08-14T14:40:41.386Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 458, + "clientY": 567, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:43.535Z", + "endTime": "2026-08-14T14:40:43.535Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 464, + "clientY": 567, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:44.335Z", + "endTime": "2026-08-14T14:40:44.335Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 487, + "clientY": 443, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:46.091Z", + "endTime": "2026-08-14T14:40:46.091Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 667, + "clientY": 675, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:40:53.054Z", + "endTime": "2026-08-14T14:40:53.054Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:40:54.168Z", + "endTime": "2026-08-14T14:40:54.168Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:41:23.568Z", + "endTime": "2026-08-14T14:41:23.568Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 741, + "clientY": 498, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:41:24.697Z", + "endTime": "2026-08-14T14:41:24.697Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:41:26.887Z", + "endTime": "2026-08-14T14:41:26.887Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:41:28.341Z", + "endTime": "2026-08-14T14:41:28.341Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1008, + "clientY": 614, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:41:32.301Z", + "endTime": "2026-08-14T14:41:32.301Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 950, + "clientY": 643, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:41:33.752Z", + "endTime": "2026-08-14T14:41:33.752Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "appDataUpdate", + "payload": { + "data": { + "end": null, + "name": "annostudy", + "start": null, + "collab": false, + "tagSetId": 1, + "anonymize": true, + "resumable": false, + "timeLimit": 0, + "documentId": 0, + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"hi\\n\"}]}", + "limitSessions": 0, + "stepDocuments": [ + { + "id": 1, + "documentId": 2, + "configuration": {} + }, + { + "id": 2, + "documentId": null, + "configuration": {} + } + ], + "isTemplateMode": false, + "multipleSubmit": false, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:41:35.827Z", + "endTime": "2026-08-14T14:41:35.827Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "97309c5c-7717-4f26-a55f-572c2566d04b", + "name": "Shrek_Script_renamed", + "type": 0, + "public": true, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T13:54:37.799Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:41:35.883Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 3, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 10, + "hash": "8d2484df-8ce0-4916-874a-c40387542619", + "name": "Document Study 4", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T14:41:35.888Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:41:35.888Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 10, + "hash": "8d2484df-8ce0-4916-874a-c40387542619", + "name": "Document Study 4", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T14:41:35.888Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:41:35.895Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:41:35.901Z", + "endTime": "2026-08-14T14:41:35.901Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "study_stepRefresh", + "payload": [ + { + "id": 7, + "deleted": false, + "studyId": 4, + "stepType": 1, + "createdAt": "2026-08-14T14:41:35.866Z", + "updatedAt": "2026-08-14T14:41:35.866Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 8, + "deleted": false, + "studyId": 4, + "stepType": 2, + "createdAt": "2026-08-14T14:41:35.892Z", + "updatedAt": "2026-08-14T14:41:35.892Z", + "documentId": 10, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 7 + } + ], + "direction": false, + "startTime": "2026-08-14T14:41:35.901Z", + "endTime": "2026-08-14T14:41:35.901Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "studyRefresh", + "payload": [ + { + "id": 4, + "end": null, + "hash": "d88e89d6-aa7f-4e0c-8b85-c8b8bb11e5b4", + "name": "annostudy", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": true, + "createdAt": "2026-08-14T14:41:35.833Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-14T14:41:35.833Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"hi\\n\"}]}", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:41:35.901Z", + "endTime": "2026-08-14T14:41:35.901Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1070, + "clientY": 754, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:41:36.136Z", + "endTime": "2026-08-14T14:41:36.136Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:41:37.845Z", + "endTime": "2026-08-14T14:41:37.845Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "d0ba36ca-e370-428d-84d3-60ee9cd5a37a", + "direction": true, + "startTime": "2026-08-14T14:41:37.847Z", + "endTime": "2026-08-14T14:41:37.847Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "67afedb8-130f-4c1a-9c20-a8b13466d04b", + "direction": true, + "startTime": "2026-08-14T14:41:37.849Z", + "endTime": "2026-08-14T14:41:37.849Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1091, + "clientY": 341, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:41:38.619Z", + "endTime": "2026-08-14T14:41:38.619Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:41:39.786Z", + "endTime": "2026-08-14T14:41:39.786Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:42:03.197Z", + "endTime": "2026-08-14T14:42:03.197Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 946, + "clientY": 277, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:42:05.189Z", + "endTime": "2026-08-14T14:42:05.189Z" + }, + { + "recordingId": 11, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:42:06.315Z", + "endTime": "2026-08-14T14:42:06.315Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/590-bulk-close-studies.json b/backend/tests/regression_stories/590-bulk-close-studies.json new file mode 100644 index 000000000..08070abeb --- /dev/null +++ b/backend/tests/regression_stories/590-bulk-close-studies.json @@ -0,0 +1,1102 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T18:02:22.133Z", + "traceCount": 59, + "recording": { + "name": "590-bulk-close-studies", + "status": "finished", + "startTime": "2026-08-14T14:44:22.758Z", + "endTime": "2026-08-14T14:45:25.919Z", + "userId": 4, + "participantSocketIds": [ + "vqQNw-zydud49qrFAABr" + ], + "excludeEvents": null + }, + "traces": [ + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "recordingRefresh", + "payload": [ + { + "id": 12, + "name": "Recording 8/14/2026, 4:44:22 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:44:22.759Z", + "startTime": "2026-08-14T14:44:22.758Z", + "updatedAt": "2026-08-14T14:44:22.759Z", + "excludeEvents": null, + "participantSocketIds": [ + "vqQNw-zydud49qrFAABr" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:44:22.773Z", + "endTime": "2026-08-14T14:44:22.773Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:44:23.580Z", + "endTime": "2026-08-14T14:44:23.580Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:44:25.932Z", + "endTime": "2026-08-14T14:44:25.932Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:44:25.960Z", + "endTime": "2026-08-14T14:44:25.960Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-14T14:44:25.960Z", + "endTime": "2026-08-14T14:44:25.960Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:44:26.421Z", + "endTime": "2026-08-14T14:44:26.421Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:44:27.331Z", + "endTime": "2026-08-14T14:44:27.331Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "a3f92443-fe70-4c4c-a29d-764d6cd1b6cb", + "direction": true, + "startTime": "2026-08-14T14:44:27.336Z", + "endTime": "2026-08-14T14:44:27.336Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "6daf95c0-1584-4945-b54a-e1ba61f0ba09", + "direction": true, + "startTime": "2026-08-14T14:44:27.336Z", + "endTime": "2026-08-14T14:44:27.336Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1361, + "clientY": 83, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:28.772Z", + "endTime": "2026-08-14T14:44:28.772Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:44:29.463Z", + "endTime": "2026-08-14T14:44:29.463Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:44:29.476Z", + "endTime": "2026-08-14T14:44:29.476Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-14T14:44:29.476Z", + "endTime": "2026-08-14T14:44:29.476Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:44:29.923Z", + "endTime": "2026-08-14T14:44:29.923Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 688, + "clientY": 147, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:31.086Z", + "endTime": "2026-08-14T14:44:31.086Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 677, + "clientY": 232, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:37.238Z", + "endTime": "2026-08-14T14:44:37.238Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 677, + "clientY": 319, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:38.989Z", + "endTime": "2026-08-14T14:44:38.989Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 682, + "clientY": 401, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:40.188Z", + "endTime": "2026-08-14T14:44:40.188Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 676, + "clientY": 583, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:42.188Z", + "endTime": "2026-08-14T14:44:42.188Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 658, + "clientY": 610, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:43.008Z", + "endTime": "2026-08-14T14:44:43.008Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 638, + "clientY": 696, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:45.395Z", + "endTime": "2026-08-14T14:44:45.395Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1082, + "clientY": 755, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:46.470Z", + "endTime": "2026-08-14T14:44:46.470Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "appDataUpdate", + "payload": { + "data": { + "end": null, + "name": "bulkdelete", + "start": null, + "collab": false, + "tagSetId": 1, + "anonymize": false, + "resumable": false, + "timeLimit": 0, + "documentId": 0, + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"delete\\n\"}]}", + "limitSessions": 0, + "stepDocuments": [ + { + "id": 1, + "documentId": 2, + "configuration": {} + }, + { + "id": 2, + "documentId": null, + "configuration": {} + } + ], + "isTemplateMode": false, + "multipleSubmit": false, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + }, + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:44:46.529Z", + "endTime": "2026-08-14T14:44:46.529Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "study_stepRefresh", + "payload": [ + { + "id": 9, + "deleted": false, + "studyId": 5, + "stepType": 1, + "createdAt": "2026-08-14T14:44:46.558Z", + "updatedAt": "2026-08-14T14:44:46.558Z", + "documentId": 2, + "stepNumber": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepId": 1, + "studyStepDocument": null, + "studyStepPrevious": null + }, + { + "id": 10, + "deleted": false, + "studyId": 5, + "stepType": 2, + "createdAt": "2026-08-14T14:44:46.603Z", + "updatedAt": "2026-08-14T14:44:46.603Z", + "documentId": 11, + "stepNumber": 2, + "allowBackward": true, + "configuration": {}, + "workflowStepId": 2, + "studyStepDocument": null, + "studyStepPrevious": 9 + } + ], + "direction": false, + "startTime": "2026-08-14T14:44:46.614Z", + "endTime": "2026-08-14T14:44:46.614Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "documentRefresh", + "payload": [ + { + "id": 2, + "hash": "97309c5c-7717-4f26-a55f-572c2566d04b", + "name": "Shrek_Script_renamed", + "type": 0, + "public": true, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T13:54:37.799Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:44:46.572Z", + "submissionId": null, + "hideInFrontend": false, + "readyForReview": false, + "studyUsageCount": 4, + "originalFilename": "Shrek_Script.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 11, + "hash": "81f3fa19-abdc-4e99-b8a1-0770780bd2ae", + "name": "Document Study 5", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T14:44:46.592Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:44:46.592Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + }, + { + "id": 11, + "hash": "81f3fa19-abdc-4e99-b8a1-0770780bd2ae", + "name": "Document Study 5", + "type": 1, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T14:44:46.592Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:44:46.606Z", + "submissionId": null, + "hideInFrontend": true, + "readyForReview": false, + "studyUsageCount": 1, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:44:46.613Z", + "endTime": "2026-08-14T14:44:46.613Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "studyRefresh", + "payload": [ + { + "id": 5, + "end": null, + "hash": "8414c328-3990-40ef-8665-7210c5a1957f", + "name": "bulkdelete", + "start": null, + "closed": null, + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-14T14:44:46.532Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-14T14:44:46.532Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"delete\\n\"}]}", + "userIdClosed": null, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:44:46.614Z", + "endTime": "2026-08-14T14:44:46.614Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:44:47.930Z", + "endTime": "2026-08-14T14:44:47.930Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "84fa8f4d-0b01-4172-8415-c93a49392e44", + "direction": true, + "startTime": "2026-08-14T14:44:47.932Z", + "endTime": "2026-08-14T14:44:47.932Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "unsubscribeAppData", + "payload": "1d12892c-7e95-4df7-add4-f58db117d415", + "direction": true, + "startTime": "2026-08-14T14:44:47.933Z", + "endTime": "2026-08-14T14:44:47.933Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1068, + "clientY": 231, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:44:48.256Z", + "endTime": "2026-08-14T14:44:48.256Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:44:50.442Z", + "endTime": "2026-08-14T14:44:50.442Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:44:54.205Z", + "endTime": "2026-08-14T14:44:54.205Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "icon": "gear-fill", + "title": "Manage studies" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:44:57.684Z", + "endTime": "2026-08-14T14:44:57.684Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-14T14:44:57.689Z", + "endTime": "2026-08-14T14:44:57.689Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-14T14:44:57.689Z", + "endTime": "2026-08-14T14:44:57.689Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:44:57.690Z", + "endTime": "2026-08-14T14:44:57.690Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-14T14:44:57.690Z", + "endTime": "2026-08-14T14:44:57.690Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:44:57.690Z", + "endTime": "2026-08-14T14:44:57.690Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:44:58.156Z", + "endTime": "2026-08-14T14:44:58.156Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 238, + "clientY": 270, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:45:00.970Z", + "endTime": "2026-08-14T14:45:00.970Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:45:02.040Z", + "endTime": "2026-08-14T14:45:02.040Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:45:04.096Z", + "endTime": "2026-08-14T14:45:04.096Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:45:06.465Z", + "endTime": "2026-08-14T14:45:06.465Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 456, + "clientY": 348, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:45:08.722Z", + "endTime": "2026-08-14T14:45:08.722Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1237, + "clientY": 549, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:45:11.089Z", + "endTime": "2026-08-14T14:45:11.089Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:45:11.282Z", + "endTime": "2026-08-14T14:45:11.282Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "studyCloseBulk", + "payload": { + "studyIds": [ + 4, + 5 + ], + "progressId": "3923fbd8-1d64-4784-b4a7-931e94ea823f", + "notifySessions": false + }, + "direction": true, + "startTime": "2026-08-14T14:45:15.671Z", + "endTime": "2026-08-14T14:45:15.671Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "title": "Submit" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:45:15.694Z", + "endTime": "2026-08-14T14:45:15.694Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "studyRefresh", + "payload": [ + { + "id": 4, + "end": null, + "hash": "d88e89d6-aa7f-4e0c-8b85-c8b8bb11e5b4", + "name": "annostudy", + "start": null, + "closed": "2026-08-14T14:45:15.707Z", + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": true, + "createdAt": "2026-08-14T14:41:35.833Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-14T14:45:15.708Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"hi\\n\"}]}", + "userIdClosed": 4, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:45:15.715Z", + "endTime": "2026-08-14T14:45:15.715Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "progressUpdate", + "payload": { + "id": "3923fbd8-1d64-4784-b4a7-931e94ea823f", + "total": 2, + "current": 1 + }, + "direction": false, + "startTime": "2026-08-14T14:45:15.716Z", + "endTime": "2026-08-14T14:45:15.716Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "studyRefresh", + "payload": [ + { + "id": 5, + "end": null, + "hash": "8414c328-3990-40ef-8665-7210c5a1957f", + "name": "bulkdelete", + "start": null, + "closed": "2026-08-14T14:45:15.718Z", + "collab": false, + "userId": 4, + "deleted": false, + "tagSetId": 1, + "template": false, + "anonymize": false, + "createdAt": "2026-08-14T14:44:46.532Z", + "projectId": 1, + "resumable": false, + "timeLimit": 0, + "updatedAt": "2026-08-14T14:45:15.718Z", + "workflowId": 1, + "description": "{\"ops\":[{\"insert\":\"delete\\n\"}]}", + "userIdClosed": 4, + "limitSessions": 0, + "parentStudyId": null, + "multipleSubmit": false, + "createdByUserId": null, + "limitSessionsPerUser": 0, + "enableEmailNotifications": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:45:15.729Z", + "endTime": "2026-08-14T14:45:15.729Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "progressUpdate", + "payload": { + "id": "3923fbd8-1d64-4784-b4a7-931e94ea823f", + "total": 2, + "current": 2 + }, + "direction": false, + "startTime": "2026-08-14T14:45:15.729Z", + "endTime": "2026-08-14T14:45:15.729Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:45:15.735Z", + "endTime": "2026-08-14T14:45:15.735Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1261, + "clientY": 576, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:45:15.956Z", + "endTime": "2026-08-14T14:45:15.956Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1252, + "clientY": 556, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:45:16.873Z", + "endTime": "2026-08-14T14:45:16.873Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:45:19.139Z", + "endTime": "2026-08-14T14:45:19.139Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:45:22.147Z", + "endTime": "2026-08-14T14:45:22.147Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "clientX": 1139, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:45:24.815Z", + "endTime": "2026-08-14T14:45:24.815Z" + }, + { + "recordingId": 12, + "userId": 4, + "socketId": "vqQNw-zydud49qrFAABr", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:45:25.073Z", + "endTime": "2026-08-14T14:45:25.073Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/700-manage-submission-assignments.json b/backend/tests/regression_stories/700-manage-submission-assignments.json new file mode 100644 index 000000000..8055ae8ab --- /dev/null +++ b/backend/tests/regression_stories/700-manage-submission-assignments.json @@ -0,0 +1,5925 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:03:18.831Z", + "traceCount": 128, + "recording": { + "name": "700-manage-submission-assignments", + "status": "finished", + "startTime": "2026-08-14T14:01:33.349Z", + "userId": 4, + "participantSocketIds": [ + "ibY45Mhk52jioALDAABZ" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:02:44.598Z" + }, + "traces": [ + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "recordingRefresh", + "payload": [ + { + "id": 1, + "name": "Recording 8/14/2026, 4:01:33 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:01:33.350Z", + "startTime": "2026-08-14T14:01:33.349Z", + "updatedAt": "2026-08-14T14:01:33.350Z", + "excludeEvents": null, + "participantSocketIds": [ + "ibY45Mhk52jioALDAABZ" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:33.374Z", + "endTime": "2026-08-14T14:01:33.374Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:01:34.648Z", + "endTime": "2026-08-14T14:01:34.648Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/assignments", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.841Z", + "endTime": "2026-08-14T14:01:36.841Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "481e47b5-7d0b-47ee-9a1f-c46c9eef29ce", + "direction": true, + "startTime": "2026-08-14T14:01:36.847Z", + "endTime": "2026-08-14T14:01:36.847Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "cbeab668-3200-4624-86af-a4ae33246c62", + "direction": true, + "startTime": "2026-08-14T14:01:36.847Z", + "endTime": "2026-08-14T14:01:36.847Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "9d9c4725-918b-4d1a-a54c-9376107d3b95", + "direction": true, + "startTime": "2026-08-14T14:01:36.848Z", + "endTime": "2026-08-14T14:01:36.848Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "7e9f1a24-24cb-4f2c-b8f0-9bc22455c781", + "direction": true, + "startTime": "2026-08-14T14:01:36.848Z", + "endTime": "2026-08-14T14:01:36.848Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "23e2556d-6946-4c05-9bb7-9aed80768cdd", + "direction": true, + "startTime": "2026-08-14T14:01:36.854Z", + "endTime": "2026-08-14T14:01:36.854Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "735fcd3f-ab20-4c27-a910-c97a46c650e1", + "direction": true, + "startTime": "2026-08-14T14:01:36.854Z", + "endTime": "2026-08-14T14:01:36.854Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.907Z", + "endTime": "2026-08-14T14:01:36.907Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "assignmentRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-14T14:01:36.911Z", + "endTime": "2026-08-14T14:01:36.911Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.915Z", + "endTime": "2026-08-14T14:01:36.915Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.916Z", + "endTime": "2026-08-14T14:01:36.916Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "workflow" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment_share" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "project" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user", + "filter": [ + { + "key": "extId", + "type": "not", + "value": null + } + ] + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment_share" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "submission" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.920Z", + "endTime": "2026-08-14T14:01:36.920Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user", + "filter": [ + { + "key": "extId", + "type": "not", + "value": null + } + ] + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.920Z", + "endTime": "2026-08-14T14:01:36.920Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role_matching" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.920Z", + "endTime": "2026-08-14T14:01:36.920Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "project" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.920Z", + "endTime": "2026-08-14T14:01:36.920Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "user_roleRefresh", + "payload": [ + { + "id": 1, + "name": "user", + "createdAt": "2026-08-14T13:54:09.962Z", + "updatedAt": "2026-08-14T13:54:09.962Z", + "description": "no system rights" + }, + { + "id": 2, + "name": "admin", + "createdAt": "2026-08-14T13:54:09.962Z", + "updatedAt": "2026-08-14T13:54:09.962Z", + "description": "full control" + }, + { + "id": 3, + "name": "teacher", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "responsible for coordination" + }, + { + "id": 4, + "name": "mentor", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "have the right to grade" + }, + { + "id": 5, + "name": "student", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "leave inline commentary" + }, + { + "id": 6, + "name": "guest", + "createdAt": "2026-08-14T13:54:10.256Z", + "updatedAt": "2026-08-14T13:54:10.256Z", + "description": "have limited rights when using the platform" + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.936Z", + "endTime": "2026-08-14T14:01:36.936Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "Bot", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "guest", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-14T13:54:19.451Z", + "firstName": "admin", + "updatedAt": "2026-08-14T14:01:19.108Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-14T14:01:19.108Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-14T13:55:16.309Z", + "firstName": "Joseph", + "updatedAt": "2026-08-14T13:55:16.316Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.938Z", + "endTime": "2026-08-14T14:01:36.938Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.921Z", + "endTime": "2026-08-14T14:01:36.921Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.923Z", + "endTime": "2026-08-14T14:01:36.923Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "user_role_matchingRefresh", + "payload": [ + { + "id": 2, + "userId": 3, + "createdAt": "2026-08-14T13:54:10.010Z", + "updatedAt": "2026-08-14T13:54:10.010Z", + "userRoleId": 6, + "creator_name": "guest" + }, + { + "id": 3, + "userId": 4, + "createdAt": "2026-08-14T13:54:19.457Z", + "updatedAt": "2026-08-14T13:54:19.457Z", + "userRoleId": 1, + "creator_name": "admin" + }, + { + "id": 4, + "userId": 4, + "createdAt": "2026-08-14T13:54:19.462Z", + "updatedAt": "2026-08-14T13:54:19.462Z", + "userRoleId": 2, + "creator_name": "admin" + }, + { + "id": 5, + "userId": 5, + "createdAt": "2026-08-14T13:55:16.314Z", + "updatedAt": "2026-08-14T13:55:16.314Z", + "userRoleId": 1, + "creator_name": "jojo" + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.948Z", + "endTime": "2026-08-14T14:01:36.948Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "submissionRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-14T14:01:36.950Z", + "endTime": "2026-08-14T14:01:36.950Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "Bot", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "guest", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-14T13:54:19.451Z", + "firstName": "admin", + "updatedAt": "2026-08-14T14:01:19.108Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-14T14:01:19.108Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-14T13:55:16.309Z", + "firstName": "Joseph", + "updatedAt": "2026-08-14T13:55:16.316Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.950Z", + "endTime": "2026-08-14T14:01:36.950Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment_share" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.921Z", + "endTime": "2026-08-14T14:01:36.921Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "assignment_shareRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-14T14:01:36.949Z", + "endTime": "2026-08-14T14:01:36.949Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "Bot", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "guest", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-14T13:54:19.451Z", + "firstName": "admin", + "updatedAt": "2026-08-14T14:01:19.108Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-14T14:01:19.108Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-14T13:55:16.309Z", + "firstName": "Joseph", + "updatedAt": "2026-08-14T13:55:16.316Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.947Z", + "endTime": "2026-08-14T14:01:36.947Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment_share" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.920Z", + "endTime": "2026-08-14T14:01:36.920Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "userRefresh", + "payload": [ + { + "id": 2, + "email": "noreply@localhost", + "extId": null, + "roles": [], + "orcidId": null, + "lastName": "user", + "userName": "Bot", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "Bot", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 3, + "email": "guest@guest.com", + "extId": null, + "roles": [ + 6 + ], + "orcidId": null, + "lastName": "user", + "userName": "guest", + "createdAt": "2026-08-14T13:54:10.010Z", + "firstName": "guest", + "updatedAt": "2026-08-14T13:54:10.010Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 4, + "email": "admin@admin.com", + "extId": null, + "roles": [ + 1, + 2 + ], + "orcidId": null, + "lastName": "User", + "userName": "admin", + "createdAt": "2026-08-14T13:54:19.451Z", + "firstName": "admin", + "updatedAt": "2026-08-14T14:01:19.108Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": true, + "acceptTerms": true, + "lastLoginAt": "2026-08-14T14:01:19.108Z", + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": true, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + }, + { + "id": 5, + "email": "jojos@email.com", + "extId": null, + "roles": [ + 1 + ], + "orcidId": null, + "lastName": "Joestar", + "userName": "jojo", + "createdAt": "2026-08-14T13:55:16.309Z", + "firstName": "Joseph", + "updatedAt": "2026-08-14T13:55:16.316Z", + "acceptedAt": null, + "resetToken": null, + "samlNameId": null, + "totpSecret": null, + "acceptStats": false, + "acceptTerms": false, + "lastLoginAt": null, + "ldapUsername": null, + "twoFactorOtp": null, + "emailVerified": false, + "twoFactorMethods": [], + "acceptDataSharing": false, + "twoFactorOtpExpiresAt": null, + "emailVerificationToken": null, + "lastVerificationEmailSent": null, + "lastPasswordResetEmailSent": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.956Z", + "endTime": "2026-08-14T14:01:36.956Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "userRefresh", + "payload": [], + "direction": false, + "startTime": "2026-08-14T14:01:36.958Z", + "endTime": "2026-08-14T14:01:36.958Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "workflowRefresh", + "payload": [ + { + "id": 1, + "name": "Peer Review Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:10.356Z", + "updatedAt": "2026-08-14T13:54:10.356Z", + "description": "EiWA Project: Review a PDF document and write free text.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 2, + "name": "Ruhr-Uni Bochum Project", + "userId": null, + "createdAt": "2026-08-14T13:54:10.356Z", + "updatedAt": "2026-08-14T13:54:10.356Z", + "description": "Ruhr-Uni Bochum Project: Correct a document over two revisions with edits overview.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 3, + "name": "Ruhr-Uni Bochum Project (Control)", + "userId": null, + "createdAt": "2026-08-14T13:54:10.356Z", + "updatedAt": "2026-08-14T13:54:10.356Z", + "description": "Ruhr-Uni Bochum Project: Correct a document over two revisions with edits overview.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 4, + "name": "Annotation Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:10.723Z", + "updatedAt": "2026-08-14T13:54:10.723Z", + "description": "Workflow with one single annotation step.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 5, + "name": "Peer Review Workflow (Assessment)", + "userId": null, + "createdAt": "2026-08-14T13:54:10.782Z", + "updatedAt": "2026-08-14T13:54:10.782Z", + "description": "Peer Review Workflow with Assessment: Review a PDF document, write free text, and select configuration.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 6, + "name": "Peer Review Workflow (Assessment with AI)", + "userId": null, + "createdAt": "2026-08-14T13:54:10.782Z", + "updatedAt": "2026-08-14T13:54:10.782Z", + "description": "Peer Review Workflow with Assessment and AI: Review a PDF document, write free text, select configuration, and use AI assessment.", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 7, + "name": "Review Assessment Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:10.919Z", + "updatedAt": "2026-08-14T13:54:10.919Z", + "description": "Review Assessment Workflow: Review a submitted study session", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 8, + "name": "Revision Workflow", + "userId": null, + "createdAt": "2026-08-14T13:54:11.004Z", + "updatedAt": "2026-08-14T13:54:11.004Z", + "description": "Two-step annotation workflow: review previous submission, then annotate with assessment", + "hideInFrontend": false, + "parentWorkflowId": null + }, + { + "id": 9, + "name": "replayworkflow", + "userId": 4, + "createdAt": "2026-08-14T13:55:21.852Z", + "updatedAt": "2026-08-14T13:55:21.852Z", + "description": "hi", + "creator_name": "admin", + "hideInFrontend": false, + "parentWorkflowId": null + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:37.018Z", + "endTime": "2026-08-14T14:01:37.018Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "configuration" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.919Z", + "endTime": "2026-08-14T14:01:36.919Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "workflow_stepRefresh", + "payload": [ + { + "id": 3, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.359Z", + "updatedAt": "2026-08-14T13:54:10.359Z", + "workflowId": 2, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 15, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.786Z", + "updatedAt": "2026-08-14T13:54:10.786Z", + "workflowId": 6, + "allowBackward": true, + "configuration": { + "services": [ + { + "name": "textualFeedback", + "type": "nlpRequest", + "required": true + } + ], + "placeholders": false + }, + "workflowStepDocument": 14, + "workflowStepPrevious": 14 + }, + { + "id": 2, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.358Z", + "updatedAt": "2026-08-14T13:54:10.358Z", + "workflowId": 1, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 1 + }, + { + "id": 5, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.360Z", + "updatedAt": "2026-08-14T13:54:10.360Z", + "workflowId": 2, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": 3, + "workflowStepPrevious": 4 + }, + { + "id": 13, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.784Z", + "updatedAt": "2026-08-14T13:54:10.784Z", + "workflowId": 5, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 12 + }, + { + "id": 16, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.920Z", + "updatedAt": "2026-08-14T13:54:10.920Z", + "workflowId": 7, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "showAllDocumentAnnotations", + "help": "If enabled, default annotations will be shown to the reviewer.", + "type": "switch", + "label": "Show All Document Annotations", + "default": true, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "annotator" + ] + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 7, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.362Z", + "updatedAt": "2026-08-14T13:54:10.362Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 1, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.357Z", + "updatedAt": "2026-08-14T13:54:10.357Z", + "workflowId": 1, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 8, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.362Z", + "updatedAt": "2026-08-14T13:54:10.362Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 7 + }, + { + "id": 10, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.363Z", + "updatedAt": "2026-08-14T13:54:10.363Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 9 + }, + { + "id": 9, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.363Z", + "updatedAt": "2026-08-14T13:54:10.363Z", + "workflowId": 3, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": 7, + "workflowStepPrevious": 8 + }, + { + "id": 11, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.724Z", + "updatedAt": "2026-08-14T13:54:10.724Z", + "workflowId": 4, + "allowBackward": false, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 4, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.360Z", + "updatedAt": "2026-08-14T13:54:10.360Z", + "workflowId": 2, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpEditComparison", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "modalSize", + "type": "select", + "label": "Modal Size", + "options": [ + { + "name": "Small", + "value": "sm" + }, + { + "name": "Medium", + "value": "md" + }, + { + "name": "Large", + "value": "lg" + }, + { + "name": "Extra Large", + "value": "xl" + } + ], + "required": true + } + ] + } + }, + "workflowStepDocument": null, + "workflowStepPrevious": 3 + }, + { + "id": 6, + "name": "Modal", + "stepType": 3, + "createdAt": "2026-08-14T13:54:10.361Z", + "updatedAt": "2026-08-14T13:54:10.361Z", + "workflowId": 2, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpEditComparison", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "modalSize", + "type": "select", + "label": "Modal Size", + "options": [ + { + "name": "Small", + "value": "sm" + }, + { + "name": "Medium", + "value": "md" + }, + { + "name": "Large", + "value": "lg" + }, + { + "name": "Extra Large", + "value": "xl" + } + ], + "required": true + } + ] + } + }, + "workflowStepDocument": null, + "workflowStepPrevious": 5 + }, + { + "id": 12, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.783Z", + "updatedAt": "2026-08-14T13:54:10.783Z", + "workflowId": 5, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step assessment.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 14, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:10.785Z", + "updatedAt": "2026-08-14T13:54:10.785Z", + "workflowId": 6, + "allowBackward": false, + "configuration": { + "services": [ + { + "name": "nlpAssessment", + "type": "nlpRequest", + "required": true + } + ], + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step.", + "type": "select", + "label": "Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 17, + "name": "Editor", + "stepType": 2, + "createdAt": "2026-08-14T13:54:10.921Z", + "updatedAt": "2026-08-14T13:54:10.921Z", + "workflowId": 7, + "allowBackward": true, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for this workflow step assessment.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, reviewers must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "editor" + ] + }, + "workflowStepDocument": 16, + "workflowStepPrevious": 16 + }, + { + "id": 18, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:11.005Z", + "updatedAt": "2026-08-14T13:54:11.005Z", + "workflowId": 8, + "allowBackward": false, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for assessment sidebar.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, users must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + }, + { + "key": "showAllDocumentAnnotations", + "help": "If enabled, all document annotations will be shown to the reviewer.", + "type": "switch", + "label": "Show all document Annotations", + "default": true, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [ + "annotator", + "assessment" + ] + }, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 19, + "name": "Annotator", + "stepType": 1, + "createdAt": "2026-08-14T13:54:11.006Z", + "updatedAt": "2026-08-14T13:54:11.006Z", + "workflowId": 8, + "allowBackward": true, + "configuration": { + "settings": { + "fields": [ + { + "key": "configurationId", + "help": "Select the configuration file for assessment sidebar.", + "type": "select", + "label": "Assessment Configuration File:", + "options": { + "name": "name", + "table": "configuration", + "value": "id", + "filter": [ + { + "key": "type", + "value": 0 + }, + { + "key": "deleted", + "value": false + } + ] + }, + "required": true + }, + { + "key": "forcedAssessment", + "help": "If enabled, users must save a score and justification for every criterion before they can proceed.", + "type": "switch", + "label": "Forced Assessment", + "default": false, + "required": false + } + ] + }, + "placeholders": false, + "readOnlyComponents": [], + "previousAssessmentData": 1 + }, + "workflowStepDocument": null, + "workflowStepPrevious": 18 + }, + { + "id": 20, + "name": "first", + "stepType": 2, + "createdAt": "2026-08-14T13:55:22.862Z", + "updatedAt": "2026-08-14T13:55:22.862Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": null + }, + { + "id": 21, + "name": "second", + "stepType": 1, + "createdAt": "2026-08-14T13:55:23.290Z", + "updatedAt": "2026-08-14T13:55:23.290Z", + "workflowId": 9, + "allowBackward": true, + "configuration": {}, + "workflowStepDocument": null, + "workflowStepPrevious": 20 + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:37.017Z", + "endTime": "2026-08-14T14:01:37.017Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "configurationRefresh", + "payload": [ + { + "id": 1, + "name": "Exposé assessment configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration", + "type": "assessment", + "rubrics": [ + { + "code": "LA", + "name": "Language/Quality", + "criteria": [ + { + "code": "LA1", + "name": "Language quality", + "scoring": [ + { + "points": 0, + "description": "many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "few linguistic errors, clear and comprehensible sentences" + }, + { + "points": 2, + "description": "no linguistic errors, clear and comprehensible sentences with consistent terminology" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of linguistic accuracy and sentence clarity", + "expertLevel": 1 + }, + { + "code": "LA2", + "name": "Common Thread", + "scoring": [ + { + "points": 0, + "description": "No recognizable common thread, the structure is unclear and jumpy" + }, + { + "points": 1, + "description": "Partly recognizable, but the structure is not continuous" + }, + { + "points": 2, + "description": "Text has a continuous structure that is easy to follow, common thread is clear and recognizable from beginning to end" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of structural continuity and coherence throughout the text", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and structural coherence of the text" + }, + { + "code": "ME", + "name": "Metadata", + "criteria": [ + { + "code": "ME1", + "name": "Preliminary title", + "scoring": [ + { + "points": 0, + "description": "Title does not match the topic" + }, + { + "points": 1, + "description": "Title fits the topic; similar title to the one in the topic suggestions" + }, + { + "points": 2, + "description": "Title fits the topic; creative title changed in a novel way and/or fits into the story of the exposé" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the title matches and represents the topic", + "expertLevel": 1 + }, + { + "code": "ME2", + "name": "Metadata available", + "scoring": [ + { + "points": 0, + "description": "Name, date and matriculation number are not entered correctly/changed" + }, + { + "points": 1, + "description": "Name, date, matriculation number are correct and updated" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of proper meta information", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of title appropriateness and creativity" + }, + { + "code": "ST", + "name": "Form/Structure", + "criteria": [ + { + "code": "ST1", + "name": "Template used", + "scoring": [ + { + "points": 0, + "description": "Latex template is not used" + }, + { + "points": 1, + "description": "Latex template is used" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "LaTeX template used", + "expertLevel": 0 + }, + { + "code": "ST2", + "name": "Number of pages", + "scoring": [ + { + "points": 0, + "description": "> three pages (motivation + approach only)" + }, + { + "points": 1, + "description": "<= three sides (motivation + approach only)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Page limitation for more focused writing", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Evaluation of document formatting and structural requirements" + }, + { + "code": "MO", + "name": "Motivation", + "criteria": [ + { + "code": "MO1", + "name": "Hook existing", + "scoring": [ + { + "points": 0, + "description": "Hook not available" + }, + { + "points": 1, + "description": "Hook present and suitable for the topic" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of the presence and suitability of an engaging opening", + "expertLevel": 1 + }, + { + "code": "MO2", + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "The problem is not mentioned at all." + }, + { + "points": 1, + "description": "The problem is stated in general terms without specific details. It is recognizable which problem is being addressed, but important information is omitted." + }, + { + "points": 2, + "description": "The problem is described in detail. All relevant aspects of the problem are mentioned and clarify its scope and possible effects." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of problem statement detail and comprehensiveness", + "expertLevel": 1 + }, + { + "code": "MO3", + "name": "Domain", + "scoring": [ + { + "points": 0, + "description": "The domain or context in which the problem occurs is not mentioned." + }, + { + "points": 1, + "description": "The domain or the relevant expert area of the problem is mentioned. It is clear in which environment the problem exists." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of context and domain specification for the problem", + "expertLevel": 1 + }, + { + "code": "MO4", + "name": "Problem relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance or importance of the problem is not addressed. It remains unclear why this problem is relevant or worth discussing." + }, + { + "points": 1, + "description": "The importance and relevance of the problem is described. It is made clear why the problem is important and what impact or consequences it could have (e.g. for specific individuals, organisations or society as a whole)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the importance and impact of the problem is communicated", + "expertLevel": 1 + }, + { + "code": "MO5", + "name": "Problem handling", + "scoring": [ + { + "points": 0, + "description": "current handling of the problem or current criticism is not given" + }, + { + "points": 1, + "description": "current handling of the problem or current criticism is given" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of current approaches or criticisms regarding the problem", + "expertLevel": 1 + }, + { + "code": "MO6", + "name": "Teaser (RQ)", + "scoring": [ + { + "points": 0, + "description": "There is no research question available" + }, + { + "points": 1, + "description": "A research question exists, but it has weaknesses, e.g. due to unclear terminology or vague formulation. It is difficult to recognise what is to be investigated and how the question fits the problem description." + }, + { + "points": 2, + "description": "The research question is formulated clearly and precisely. It clearly conveys what is to be investigated, and fits thematically with the problem description." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of research question clarity and alignment with problem description", + "expertLevel": 2 + }, + { + "code": "MO7", + "name": "RQ Limitation", + "scoring": [ + { + "points": 0, + "description": "The research question is either too general or too broad, so that it does not seem realistic to answer it within the scope of a Bachelor's thesis, to answer it in the context of a Bachelor's thesis." + }, + { + "points": 1, + "description": "The research question is precise and clearly defined so that it can realistically be addressed in the context of a Bachelor's thesis. The question is formulated in concrete terms and describes specifically which aspects are to be investigated without deviating from the topic." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of research question scope and feasibility for Bachelor's thesis context", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of problem identification, context establishment, and research question formulation" + }, + { + "code": "AP", + "name": "Approach", + "criteria": [ + { + "code": "AP1", + "name": "SOTA", + "scoring": [ + { + "points": 0, + "description": "SOTA not available" + }, + { + "points": 1, + "description": "SOTA present and correctly cited" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of state of the art presence and proper citation", + "expertLevel": 1 + }, + { + "code": "AP2", + "name": "SOTA Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of SOTA is not present or unclear." + }, + { + "points": 1, + "description": "The relevance of SOTA is mentioned, but is only partially comprehensible or weakly presented." + }, + { + "points": 2, + "description": "It is clearly shown how SOTA is relevant to the topic of the exposé and why it is relevant to the research." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of how well the relevance of state of the art is demonstrated", + "expertLevel": 1 + }, + { + "code": "AP3", + "name": "SOTA Weaknesses", + "scoring": [ + { + "points": 0, + "description": "SOTA's weak points are not mentioned" + }, + { + "points": 1, + "description": "SOTA's weaknesses are mentioned, but only superficially or unclearly described" + }, + { + "points": 2, + "description": "SOTA's weaknesses are clearly identified and precisely explained; it is clear which weaknesses are relevant for own research" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and explanation of state of the art limitations", + "expertLevel": 1 + }, + { + "code": "AP4", + "name": "SOTA Delimitation", + "scoring": [ + { + "points": 0, + "description": "No differentiation of own performance from the current state of research" + }, + { + "points": 1, + "description": "The own achievement is differentiated from SOTA; it is explicitly emphasized, what is new or unique about your own research" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of differentiation between own work and existing research", + "expertLevel": 1 + }, + { + "code": "AP5", + "name": "SOTA Combination", + "scoring": [ + { + "points": 0, + "description": "No meaningful combination of existing material (even if reference is made to existing material, but its combination or consolidation is unconvincing or unclear)" + }, + { + "points": 1, + "description": "Existing material is clearly and meaningfully combined; the added value of the combination is clear." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of meaningful combination and consolidation of existing material", + "expertLevel": 2 + }, + { + "code": "AP6", + "name": "Theoretical Framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework does not exist or is completely misleading" + }, + { + "points": 1, + "description": "The theoretical framework is present, but unclear, poorly structured or difficult to understand" + }, + { + "points": 2, + "description": "The theoretical framework is clearly and logically structured. The theoretical approaches are presented in a understandable and comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of theoretical framework structure and clarity", + "expertLevel": 1 + }, + { + "code": "AP7", + "name": "Relevance of theoretical framework", + "scoring": [ + { + "points": 0, + "description": "The theoretical framework shows no connection to the research topic, or the theory is irrelevant" + }, + { + "points": 1, + "description": "The theoretical framework clearly demonstrates how the selected theories directly relate to the research topic and support the research question" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of theoretical framework connection to research topic", + "expertLevel": 2 + }, + { + "code": "AP8", + "name": "Methodology Availability", + "scoring": [ + { + "points": 0, + "description": "Methodology not available" + }, + { + "points": 1, + "description": "Methodology available and suitable for answering the RQ(s)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology presence and suitability for research questions", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of state of the art analysis, theoretical framework" + }, + { + "code": "MD", + "name": "Methodology", + "criteria": [ + { + "code": "MD1", + "name": "Methodology Completeness", + "scoring": [ + { + "points": 0, + "description": "Methodology is available, but not all RQ(s) are addressed" + }, + { + "points": 1, + "description": "Methodology is available and addresses all points of the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of methodology coverage of all research questions", + "expertLevel": 1 + }, + { + "code": "MD2", + "name": "Methodology Relevance", + "scoring": [ + { + "points": 0, + "description": "The relevance of the methodology for the research project is not clear or is unclear" + }, + { + "points": 1, + "description": "It is clearly and precisely demonstrated why the chosen methodology is relevant to the research project and how it contributes to the research questions" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology relevance and contribution to research project", + "expertLevel": 1 + }, + { + "code": "MD3", + "name": "Methodology Target group", + "scoring": [ + { + "points": 0, + "description": "The target group is not specified or there is no precise differentiation" + }, + { + "points": 1, + "description": "The target group is clearly and precisely defined and it is clear why it is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of target group specification and relevance", + "expertLevel": 1 + }, + { + "code": "MD4", + "name": "Methodology Existing Material", + "scoring": [ + { + "points": 0, + "description": "No reference is made to the existing material or the material is inappropriate" + }, + { + "points": 1, + "description": "The existing material is appropriately and accurately related to the topic; it is clear that this material is relevant to the methodology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of appropriate reference to existing material in methodology", + "expertLevel": 1 + }, + { + "code": "MD5", + "name": "Methodology Difficulties", + "scoring": [ + { + "points": 0, + "description": "Potential difficulties in the practical implementation of the methods are not addressed. Potential challenges that could hinder the research process are overlooked." + }, + { + "points": 1, + "description": "Potential difficulties in the practical implementation of the methods are described clearly and precisely. Concrete solutions or strategies to overcome these difficulties are also presented, in order to organize the research process as efficiently and target-oriented as possible." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of identification and solutions for potential implementation challenges", + "expertLevel": 2 + }, + { + "code": "MD6", + "name": "Methodology Possibilities/restrictions", + "scoring": [ + { + "points": 0, + "description": "The possibilities or limitations of the methods used are not addressed, or they are only mentioned superficially, without concrete details. It remains unclear how these methods contribute to answering the research question and which limitations could possibly influence the validity of the results." + }, + { + "points": 1, + "description": "The possibilities and limitations of the methods are described clearly and precisely. It is clear what strengths the methods bring to the study and what weaknesses or limitations could possibly influence the results. limitations could possibly influence the results. The choice of methods is critically reflected upon and related to the research project." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Assessment of methodology strengths, limitations, and critical reflection", + "expertLevel": 2 + }, + { + "code": "MD7", + "name": "Methodology Details", + "scoring": [ + { + "points": 0, + "description": "No additional explanations are given on the methodology or implementation" + }, + { + "points": 1, + "description": "The methodology is explained comprehensively and precisely with additional explanations (e.g. details on implementation), so that the procedure is clearly comprehensible" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Evaluation of comprehensive methodology explanation and implementation details", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of the methodology" + }, + { + "code": "SC", + "name": "Schedule", + "criteria": [ + { + "code": "SC1", + "name": "Schedule Availability", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule not available" + }, + { + "points": 1, + "description": "Tabular schedule in chronological order available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of tabular schedule presence and chronological organization", + "expertLevel": 0 + }, + { + "code": "SC2", + "name": "Schedule Completeness", + "scoring": [ + { + "points": 0, + "description": "Tabular schedule contains gaps" + }, + { + "points": 1, + "description": "Tabular schedule available from start to finish and reasonably divided into blocks" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Assessment of schedule coverage and logical division into work blocks", + "expertLevel": 1 + }, + { + "code": "SC3", + "name": "Schedule Block Description", + "scoring": [ + { + "points": 0, + "description": "not available or only headlines available" + }, + { + "points": 1, + "description": "individual blocks described (not only headlines)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of detailed descriptions for individual schedule blocks", + "expertLevel": 0 + }, + { + "code": "SC4", + "name": "Schedule Realistic Relevance", + "scoring": [ + { + "points": 0, + "description": "The time distribution is obviously unrealistic and important work steps are missing. The research questions are not or only insufficiently addressed" + }, + { + "points": 1, + "description": "The timeline contains the most important steps, but some of the timelines are unrealistic or unclear. It is partially unclear how the steps contribute to answering the research questions. The timeline does not appear to be fully aligned with the Bachelor's thesis context." + }, + { + "points": 2, + "description": "The timeline is clearly structured, realistic and aligned with the scope of the Bachelor's thesis. All important work steps are included and organised in a sensible time frame. Each step contributes to answering the research questions, and the entire plan fits coherently into the exposé and the context of the thesis." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of timeline realism and alignment with Bachelor's thesis scope", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of project timeline structure, completeness, and realism" + }, + { + "code": "BI", + "name": "Bibliography", + "criteria": [ + { + "code": "BI1", + "name": "Bibliography Consistency", + "scoring": [ + { + "points": 0, + "description": "Bibliography with different citation styles" + }, + { + "points": 1, + "description": "Bibliography is standardized ( consistent citation style) and essentially all information on the literature is available" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Evaluation of citation style consistency and completeness of bibliographic information", + "expertLevel": 0 + }, + { + "code": "BI2", + "name": "Key literature", + "scoring": [ + { + "points": 0, + "description": "Literature does not fit the topic" + }, + { + "points": 1, + "description": "Literature fits the topic" + }, + { + "points": 2, + "description": "Literature fits the topic and most of it is highly relevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assessment of literature relevance and quality for the research topic", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Assessment of bibliography consistency and literature relevance" + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths beyond existing criteria." + }, + { + "points": 1, + "description": "Some additional strengths beyond existing criteria." + }, + { + "points": 2, + "description": "Clear exceptional strengths beyond existing criteria." + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good submissions not mentioned in other criteria", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No major issues beyond existing criteria." + }, + { + "points": -1, + "description": "Notable issues beyond existing criteria." + }, + { + "points": -2, + "description": "Serious issues that strongly reduce overall quality." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Major mistakes in the submissions", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Allow additional points for very good submissions and major mistakes in the submission" + } + ], + "version": "1.0.0", + "description": "Expose Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Expose Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 2, + "name": "Review feedback configuration", + "type": 0, + "userId": 4, + "content": { + "name": "Review feedback configuration", + "type": "assessment", + "rubrics": [ + { + "code": "SC", + "name": "Structure and Clarity", + "criteria": [ + { + "code": "SC1", + "name": "Summary available", + "scoring": [ + { + "points": 0, + "description": "No summary available or does not reflect understanding of the performance" + }, + { + "points": 1, + "description": "Simple summary, demonstrates basic understanding of the performance" + }, + { + "points": 2, + "description": "Concise and accurate summary that clearly reflects understanding of performance and builds confidence in feedback" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Concise summary that reflects understanding of the performance", + "expertLevel": 1 + }, + { + "code": "SC2", + "name": "Clarity", + "scoring": [ + { + "points": 0, + "description": "Feedback needs considerable improvement in clarity and comprehensibility, comments are disjointed or difficult to follow" + }, + { + "points": 1, + "description": "Feedback is largely clear, but sometimes lacks specific references to particular lines, pages, sections or figures/tables" + }, + { + "points": 2, + "description": "Feedback is clear, well-structured and easy to understand, with coherent comments and precise references to specific points in the text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Clarity with regard to the overall structure", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of overall structure and clarity" + }, + { + "code": "LG", + "name": "Language", + "criteria": [ + { + "code": "LG1", + "name": "Language", + "scoring": [ + { + "points": 0, + "description": "Many linguistic errors (e.g. wrong tense, wrong personal pronouns)" + }, + { + "points": 1, + "description": "Almost no linguistic errors, clear and comprehensible sentences with standardised terminology" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "code": "LG2", + "name": "Tone", + "scoring": [ + { + "points": 0, + "description": "The tone is inappropriate, sounds judgemental or reproachful, criticism comes across as destructive or personal" + }, + { + "points": 1, + "description": "The tone is generally respectful, avoids personal attacks, but remains unclear or less friendly in places" + }, + { + "points": 2, + "description": "The tone is consistently calm, respectful and polite; criticism is constructive, factual and only directed at the text, not the person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the respectfulness, clarity, and constructiveness of feedback", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of language quality and tone" + }, + { + "code": "FU", + "name": "Feed Up", + "criteria": [ + { + "code": "FU1", + "name": "Learning Goals", + "scoring": [ + { + "points": 0, + "description": "No learning objectives, unclear what is to be achieved, no orientation" + }, + { + "points": 1, + "description": "Partly unclear learning objectives, generally formulated, offer only limited orientation" + }, + { + "points": 2, + "description": "Clear learning objectives, specific, challenging, comparable and provide clear direction" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity, specificity, and guidance of learning objectives.", + "expertLevel": 2 + }, + { + "code": "FU2", + "name": "Success Criteria", + "scoring": [ + { + "points": 0, + "description": "No success criteria, success unclear or vaguely formulated, objectives not defined" + }, + { + "points": 1, + "description": "Partly unclear success criteria, available but imprecise or general, orientation partly missing" + }, + { + "points": 2, + "description": "Clear success criteria, concrete, measurable goals and clear definition of success" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Measures the clarity and specificity of success criteria for achieving learning goals.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of learning goals and success criteria" + }, + { + "code": "FB", + "name": "Feed Back", + "criteria": [ + { + "code": "FB1", + "name": "Knowledge of result", + "scoring": [ + { + "points": 0, + "description": "No information as to whether the task has been solved or not" + }, + { + "points": 1, + "description": "Information given as to whether the task has been solved or not" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on whether the task has been solved or not", + "expertLevel": 1 + }, + { + "code": "FB2", + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "No information on the correct answer" + }, + { + "points": 1, + "description": "Correct answer is clearly communicated" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the correct answer or solution", + "expertLevel": 2 + }, + { + "code": "FB3", + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "No information on rules, requirements or restrictions of the task" + }, + { + "points": 1, + "description": "Clear information on rules, requirements or restrictions of the task (e.g. specifications)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on rules, requirements or restrictions of the task", + "expertLevel": 1 + }, + { + "code": "FB4", + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "No information on conceptual knowledge" + }, + { + "points": 1, + "description": "Basic information on relevant concepts is provided" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on relevant concepts, principles or relationships", + "expertLevel": 1 + }, + { + "code": "FB5", + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "No information about errors" + }, + { + "points": 1, + "description": "Information on the number, location, source or type of errors" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on the number, location, source or type of errors", + "expertLevel": 1 + }, + { + "code": "FB6", + "name": "Self-feedback", + "scoring": [ + { + "points": 0, + "description": "Self-feedback is available that has not been combined with task, process or self-regulation (including feedback on the learner's abilities (i.e. intelligence or talent))" + }, + { + "points": 1, + "description": "No self-feedback is available or, if available, in combination with task, process or self-regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Self Feedback (e.g. praise or recognition) not available or only in combination with learning strategies or self-regulation", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Assessment of feedback quality and knowledge transfer" + }, + { + "code": "FF", + "name": "Feed Forward", + "criteria": [ + { + "code": "FF1", + "name": "Self-regulation", + "scoring": [ + { + "points": 0, + "description": "No indication of how to approach the task, no recognisable approaches to self-monitoring or self-assessment" + }, + { + "points": 1, + "description": "Either indications of strategies for working on the task and recognising errors (e.g. suggestions for improvement, targeted search for information) or approaches to self-monitoring and self-assessment (e.g. reflection on own understanding, strategies or willingness to seek help)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Knowledge about how to process the task or about self regulation", + "expertLevel": 1 + }, + { + "code": "FF2", + "name": "Learning Skills", + "scoring": [ + { + "points": 0, + "description": "No information on how to develop or improve learning skills" + }, + { + "points": 1, + "description": "Information on how to improve the learning objective and how to deal with challenges" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Information on how to develop or improve learning skills", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of future learning guidance" + }, + { + "code": "CQ", + "name": "Content Quality", + "criteria": [ + { + "code": "CQ1", + "name": "Correctness", + "scoring": [ + { + "points": 0, + "description": "The content has significant deficiencies in terms of correctness" + }, + { + "points": 1, + "description": "The content is largely correct" + }, + { + "points": 2, + "description": "The content is completely correct" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the accuracy and correctness of the feedback content", + "expertLevel": 2 + }, + { + "code": "CQ2", + "name": "Actionability", + "scoring": [ + { + "points": 0, + "description": "No specific instructions available, feedback is difficult to implement" + }, + { + "points": 1, + "description": "Some instructions available, but only partially clear or specific" + }, + { + "points": 2, + "description": "Clear, specific feedback with actionable instructions, e.g. comparisons with existing methods, application to other tasks, definitions, explanations, discussions, additional analyses or specific suggestions to remove confusion" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Assesses whether the feedback provides clear and specific instructions for improvement", + "expertLevel": 1 + }, + { + "code": "CQ3", + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Statements or conclusions are not supported by evidence or comprehensible explanations. The argumentation remains superficial or unsystematic, making the content unconvincing." + }, + { + "points": 1, + "description": "Statements are supported by comprehensible evidence, examples or explanations. The argumentation shows a clear link between evidence and conclusions, which strengthens the quality of the content." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Evaluates the quality of argumentation and evidence provided in the feedback", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Assessment of content accuracy and usefulness" + }, + { + "code": "ER", + "name": "Errors", + "criteria": [ + { + "code": "ER1", + "name": "Neglect", + "scoring": [ + { + "points": 0, + "description": "All important details have been considered and no unnecessary questions are asked" + }, + { + "points": -1, + "description": "Important details have been overlooked, leading to unnecessary questions or criticism" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether important details have been overlooked", + "expertLevel": 2 + }, + { + "code": "ER2", + "name": "Vague Critic", + "scoring": [ + { + "points": 0, + "description": "Criticism is specific and clearly states what is missing or can be improved" + }, + { + "points": -1, + "description": "Unspecific criticism, mentions missing components without clearly stating what is missing" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses the specificity and clarity of criticism provided", + "expertLevel": 1 + }, + { + "code": "ER3", + "name": "Out-of-Scope", + "scoring": [ + { + "points": 0, + "description": "Proposals remain within the scope of the task and are relevant" + }, + { + "points": -1, + "description": "Suggestions refer to methods or analyses that go beyond the intended scope" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions remain within the intended scope", + "expertLevel": 1 + }, + { + "code": "ER4", + "name": "Missing Reference", + "scoring": [ + { + "points": 0, + "description": "Alternative methods, etc. (if available) are supported with justification or references" + }, + { + "points": -1, + "description": "Alternative methods, etc. (if available) are suggested without justification or references" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether suggestions are supported by justification or references", + "expertLevel": 1 + }, + { + "code": "ER5", + "name": "Contradiction", + "scoring": [ + { + "points": 0, + "description": "Feedback is consistent in itself, no contradictory statements" + }, + { + "points": -1, + "description": "Contradictory feedback, e.g. criticism and praise for the same methods" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Assesses whether the feedback is consistent and free of contradictions", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Assessment of potential errors and issues in feedback", + "defaultPoints": 4 + }, + { + "code": "AD", + "name": "Additional points", + "isBonus": true, + "criteria": [ + { + "code": "AD1", + "name": "Additional points", + "scoring": [ + { + "points": 0, + "description": "No additional strengths identified." + }, + { + "points": 1, + "description": "Notable additional strengths beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Additional points for very good reviews", + "expertLevel": 1 + }, + { + "code": "AD2", + "name": "Negative points", + "scoring": [ + { + "points": 0, + "description": "No additional major issues identified." + }, + { + "points": -1, + "description": "Significant issues beyond other criteria." + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Major mistakes in the reviews", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Allow additional points for very good reviews or deduct points for major mistakes" + } + ], + "version": "1.0.0", + "description": "Review Criteria by rubrics including calculation" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Review Criteria by rubrics including calculation", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 3, + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Validation schema for UKP Exposé LaTeX submissions", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 4, + "name": "Exposé assessment configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé assessment configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "language", + "name": "Sprache/Qualität", + "criteria": [ + { + "name": "Sprachqualität", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsche Zeitformen, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Wenige sprachliche Fehler, klare und verständliche Sätze" + }, + { + "points": 2, + "description": "Keine sprachlichen Fehler, klare und verständliche Sätze mit konsistenter Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sprachlichen Genauigkeit und Satzklarheit", + "expertLevel": 1 + }, + { + "name": "Roter Faden", + "scoring": [ + { + "points": 0, + "description": "Kein erkennbarer roter Faden, die Struktur ist unklar und sprunghaft" + }, + { + "points": 1, + "description": "Teilweise erkennbar, aber die Struktur ist nicht durchgehend" + }, + { + "points": 2, + "description": "Der Text hat eine durchgehende, gut nachvollziehbare Struktur; der rote Faden ist klar von Anfang bis Ende erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der strukturellen Kontinuität und Kohärenz des Textes", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der sprachlichen Qualität und strukturellen Kohärenz des Textes" + }, + { + "code": "meta", + "name": "Metadaten", + "criteria": [ + { + "name": "Vorläufiger Titel", + "scoring": [ + { + "points": 0, + "description": "Titel passt nicht zum Thema" + }, + { + "points": 1, + "description": "Titel passt zum Thema; ähnlich wie ein Vorschlag in den Themenbeispielen" + }, + { + "points": 2, + "description": "Titel passt zum Thema; kreativer Titel, der neu formuliert wurde und/oder gut zur Story des Exposés passt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut der Titel das Thema trifft und repräsentiert", + "expertLevel": 1 + }, + { + "name": "Metadaten vorhanden", + "scoring": [ + { + "points": 0, + "description": "Name, Datum und Matrikelnummer sind nicht korrekt eingetragen/geändert" + }, + { + "points": 1, + "description": "Name, Datum und Matrikelnummer sind korrekt und aktualisiert" + } + ], + "function": "check_latex_metadata", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der korrekten Angabe von Metainformationen", + "expertLevel": 0 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Angemessenheit und Kreativität des Titels" + }, + { + "code": "structure", + "name": "Form/Struktur", + "criteria": [ + { + "name": "Template genutzt", + "scoring": [ + { + "points": 0, + "description": "LaTeX-Template wurde nicht genutzt" + }, + { + "points": 1, + "description": "LaTeX-Template wurde genutzt" + } + ], + "function": "check_latex_template", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Verwendung des LaTeX-Templates", + "expertLevel": 0 + }, + { + "name": "Seitenanzahl", + "scoring": [ + { + "points": 0, + "description": "> drei Seiten (nur Motivation + Vorgehen)" + }, + { + "points": 1, + "description": "≤ drei Seiten (nur Motivation + Vorgehen)" + } + ], + "function": "check_pdf_pages", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Seitenbegrenzung für fokussiertes Schreiben", + "expertLevel": 0 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Dokumentformatierung und strukturellen Anforderungen" + }, + { + "code": "motivation", + "name": "Motivation", + "criteria": [ + { + "name": "Hook vorhanden", + "scoring": [ + { + "points": 0, + "description": "Kein Hook vorhanden" + }, + { + "points": 1, + "description": "Hook vorhanden und passend zum Thema" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz und Eignung eines einleitenden Aufhängers", + "expertLevel": 1 + }, + { + "name": "Anker", + "scoring": [ + { + "points": 0, + "description": "Das Problem wird nicht erwähnt." + }, + { + "points": 1, + "description": "Das Problem wird allgemein beschrieben, ohne spezifische Details; das Problem ist erkennbar, aber wichtige Informationen fehlen." + }, + { + "points": 2, + "description": "Das Problem wird detailliert beschrieben; alle relevanten Aspekte werden dargestellt und verdeutlichen Umfang und mögliche Auswirkungen." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Detailtiefe und Verständlichkeit der Problemstellung", + "expertLevel": 1 + }, + { + "name": "Domäne", + "scoring": [ + { + "points": 0, + "description": "Die Domäne oder der Kontext des Problems wird nicht erwähnt." + }, + { + "points": 1, + "description": "Die Domäne bzw. der fachliche Kontext des Problems wird genannt; es ist klar, in welchem Umfeld das Problem existiert." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Kontext- oder Domänenspezifikation des Problems", + "expertLevel": 1 + }, + { + "name": "Relevanz des Problems", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des Problems wird nicht angesprochen." + }, + { + "points": 1, + "description": "Die Bedeutung des Problems wird klar dargestellt, inklusive möglicher Auswirkungen (z. B. für Personen, Organisationen oder Gesellschaft)." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Darstellung der Wichtigkeit und Auswirkungen des Problems", + "expertLevel": 1 + }, + { + "name": "Umgang mit dem Problem", + "scoring": [ + { + "points": 0, + "description": "Aktueller Umgang oder Kritik wird nicht dargestellt" + }, + { + "points": 1, + "description": "Aktueller Umgang oder Kritik wird dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung aktueller Ansätze oder Kritikpunkte zum Problem", + "expertLevel": 1 + }, + { + "name": "Teaser (Forschungsfrage)", + "scoring": [ + { + "points": 0, + "description": "Keine Forschungsfrage vorhanden" + }, + { + "points": 1, + "description": "Eine Forschungsfrage ist vorhanden, aber unklar formuliert oder nur vage erkennbar; Passung zur Problemstellung ist schwierig zu erkennen." + }, + { + "points": 2, + "description": "Die Forschungsfrage ist klar und präzise formuliert; sie vermittelt klar, was untersucht wird, und passt zur Problemstellung." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Klarheit und Passung der Forschungsfrage zur Problemstellung", + "expertLevel": 2 + }, + { + "name": "Begrenzung der Forschungsfrage", + "scoring": [ + { + "points": 0, + "description": "Die Forschungsfrage ist zu allgemein oder zu weit gefasst, sodass sie im Rahmen einer Bachelorarbeit nicht realistisch beantwortbar erscheint." + }, + { + "points": 1, + "description": "Die Forschungsfrage ist klar begrenzt und präzise definiert; sie ist realistisch im Rahmen einer Bachelorarbeit zu beantworten." + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung von Umfang und Realisierbarkeit der Forschungsfrage im BA-Kontext", + "expertLevel": 2 + } + ], + "maxPoints": 9, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung von Problemidentifikation, Kontextdarstellung und Formulierung der Forschungsfrage" + }, + { + "code": "approach", + "name": "Vorgehen", + "criteria": [ + { + "name": "State of the Art", + "scoring": [ + { + "points": 0, + "description": "SOTA nicht vorhanden" + }, + { + "points": 1, + "description": "SOTA vorhanden und korrekt zitiert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Darstellung des Forschungsstands und korrekter Zitierung", + "expertLevel": 1 + }, + { + "name": "Relevanz des SOTA", + "scoring": [ + { + "points": 0, + "description": "Die Relevanz des SOTA ist nicht vorhanden oder unklar." + }, + { + "points": 1, + "description": "Die Relevanz wird erwähnt, aber nur teilweise nachvollziehbar dargestellt." + }, + { + "points": 2, + "description": "Es wird klar dargestellt, warum der Forschungsstand relevant ist und wie er sich auf das Forschungsvorhaben bezieht." + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut die Relevanz des Forschungsstands dargestellt wird", + "expertLevel": 1 + }, + { + "name": "Schwachstellen des SOTA", + "scoring": [ + { + "points": 0, + "description": "Schwächen des SOTA werden nicht genannt" + }, + { + "points": 1, + "description": "Schwächen werden genannt, aber nur oberflächlich oder unklar" + }, + { + "points": 2, + "description": "Schwächen werden klar identifiziert und verständlich erklärt; es ist nachvollziehbar, welche Schwächen für die eigene Forschung relevant sind" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation und Erklärung der Schwächen des Forschungsstands", + "expertLevel": 1 + }, + { + "name": "Abgrenzung vom SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine Abgrenzung der eigenen Leistung" + }, + { + "points": 1, + "description": "Die eigene Leistung wird klar vom Forschungsstand abgegrenzt; der neue oder besondere Beitrag wird deutlich" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung, wie gut das eigene Vorgehen vom Forschungsstand abgegrenzt wird", + "expertLevel": 1 + }, + { + "name": "Kombination von SOTA", + "scoring": [ + { + "points": 0, + "description": "Keine sinnvolle Kombination des Materials (auch wenn Literatur erwähnt wird, ist die Zusammenführung unklar oder unzureichend)" + }, + { + "points": 1, + "description": "Bestehendes Material wird klar und sinnvoll kombiniert; der Mehrwert der Kombination ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der sinnvollen Kombination und Zusammenführung bestehender Literatur", + "expertLevel": 2 + }, + { + "name": "Theoretischer Rahmen", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen fehlt oder ist völlig unpassend" + }, + { + "points": 1, + "description": "Der theoretische Rahmen ist vorhanden, aber unklar, schlecht strukturiert oder schwer verständlich" + }, + { + "points": 2, + "description": "Der theoretische Rahmen ist klar und logisch strukturiert; die theoretischen Ansätze werden verständlich dargestellt" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Struktur und Klarheit des theoretischen Rahmens", + "expertLevel": 1 + }, + { + "name": "Relevanz des theoretischen Rahmens", + "scoring": [ + { + "points": 0, + "description": "Der theoretische Rahmen hat keinen Bezug zum Thema oder ist irrelevant" + }, + { + "points": 1, + "description": "Der theoretische Rahmen zeigt klar die Verbindung zum Forschungsthema und unterstützt die Forschungsfrage" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Verbindung zwischen Theorie und Forschungsthema", + "expertLevel": 2 + }, + { + "name": "Methodenverfügbarkeit", + "scoring": [ + { + "points": 0, + "description": "Methodik nicht vorhanden" + }, + { + "points": 1, + "description": "Methodik vorhanden und geeignet, die Forschungsfrage(n) zu beantworten" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Existenz einer geeigneten Methodik", + "expertLevel": 1 + } + ], + "maxPoints": 11, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Analyse des Forschungsstands und des theoretischen Rahmens" + }, + { + "code": "methodology", + "name": "Methodik", + "criteria": [ + { + "name": "Vollständigkeit der Methodik", + "scoring": [ + { + "points": 0, + "description": "Methodik vorhanden, aber deckt nicht alle Forschungsfragen ab" + }, + { + "points": 1, + "description": "Methodik vorhanden und deckt alle Forschungsfragen ab" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung, ob die Methodik alle Forschungsfragen abdeckt", + "expertLevel": 1 + }, + { + "name": "Relevanz der Methodik", + "scoring": [ + { + "points": 0, + "description": "Relevanz der Methodik ist unklar oder nicht dargestellt" + }, + { + "points": 1, + "description": "Es wird klar gezeigt, wie die Methodik zum Projekt beiträgt und die Forschungsfragen unterstützt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und des Beitrags der Methodik zum Forschungsprojekt", + "expertLevel": 1 + }, + { + "name": "Zielgruppe der Methodik", + "scoring": [ + { + "points": 0, + "description": "Zielgruppe nicht spezifiziert oder unklar" + }, + { + "points": 1, + "description": "Zielgruppe klar definiert und ihre Relevanz für die Methodik ist erkennbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Spezifikation der Zielgruppe und ihrer Relevanz", + "expertLevel": 1 + }, + { + "name": "Einbindung vorhandenen Materials", + "scoring": [ + { + "points": 0, + "description": "Kein oder ungeeigneter Bezug auf vorhandenes Material" + }, + { + "points": 1, + "description": "Vorhandenes Material wird angemessen und passend einbezogen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung des angemessenen Bezugs auf vorhandenes Material", + "expertLevel": 1 + }, + { + "name": "Methodische Schwierigkeiten", + "scoring": [ + { + "points": 0, + "description": "Mögliche Schwierigkeiten werden nicht angesprochen" + }, + { + "points": 1, + "description": "Mögliche Schwierigkeiten werden klar beschrieben und es werden konkrete Lösungsansätze genannt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Identifikation möglicher Umsetzungsschwierigkeiten und entsprechender Lösungen", + "expertLevel": 2 + }, + { + "name": "Methodische Möglichkeiten/Einschränkungen", + "scoring": [ + { + "points": 0, + "description": "Möglichkeiten oder Einschränkungen werden nicht oder nur oberflächlich behandelt" + }, + { + "points": 1, + "description": "Möglichkeiten und Einschränkungen werden klar beschrieben; Reflexion ist nachvollziehbar" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Reflexion über Stärken und Schwächen der Methodik", + "expertLevel": 2 + }, + { + "name": "Methodische Details", + "scoring": [ + { + "points": 0, + "description": "Keine zusätzlichen Erklärungen zur Methodik" + }, + { + "points": 1, + "description": "Methodik wird umfassend und präzise erklärt, inklusive Umsetzungsdetails" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Bewertung zusätzlicher Erklärungen und Details zur Umsetzung", + "expertLevel": 2 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "min", + "description": "Bewertung der Methodik" + }, + { + "code": "schedule", + "name": "Zeitplan", + "criteria": [ + { + "name": "Zeitplan vorhanden", + "scoring": [ + { + "points": 0, + "description": "Tabellarischer Zeitplan nicht vorhanden" + }, + { + "points": 1, + "description": "Tabellarischer, chronologischer Zeitplan vorhanden" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Existenz eines tabellarischen und chronologischen Zeitplans", + "expertLevel": 0 + }, + { + "name": "Vollständigkeit des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitplan weist Lücken auf" + }, + { + "points": 1, + "description": "Zeitplan deckt den gesamten Zeitraum ab und ist sinnvoll in Arbeitsschritte gegliedert" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Abdeckung und sinnvollen Einteilung des Zeitplans", + "expertLevel": 1 + }, + { + "name": "Beschreibung der Zeitblöcke", + "scoring": [ + { + "points": 0, + "description": "Keine oder nur Überschriften vorhanden" + }, + { + "points": 1, + "description": "Einzelne Blöcke sind beschrieben (mehr als nur Überschriften)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Detailliertheit der einzelnen Zeitblöcke", + "expertLevel": 0 + }, + { + "name": "Realistische Relevanz des Zeitplans", + "scoring": [ + { + "points": 0, + "description": "Zeitverteilung offensichtlich unrealistisch, wichtige Schritte fehlen; Forschungsfragen werden kaum berücksichtigt" + }, + { + "points": 1, + "description": "Wichtige Schritte enthalten, aber teilweise unrealistisch oder unklar; teilweise unklare Verbindung zu Forschungsfragen" + }, + { + "points": 2, + "description": "Zeitplan ist klar strukturiert, realistisch und passend für den Umfang der Bachelorarbeit; alle wichtigen Schritte sind enthalten und sinnvoll eingeordnet" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Realisierbarkeit und Passung zum BA-Kontext", + "expertLevel": 1 + } + ], + "maxPoints": 5, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Struktur, Vollständigkeit und Realisierbarkeit des Projektzeitplans" + }, + { + "code": "bibliography", + "name": "Literaturverzeichnis", + "criteria": [ + { + "name": "Konsistenz der Literaturangaben", + "scoring": [ + { + "points": 0, + "description": "Literaturverzeichnis mit uneinheitlichen Zitierstilen" + }, + { + "points": 1, + "description": "Literaturverzeichnis ist einheitlich (konsistenter Zitierstil) und enthält im Wesentlichen alle bibliographischen Angaben" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": false, + "description": "Bewertung der Einheitlichkeit des Zitierstils und der Vollständigkeit bibliographischer Angaben", + "expertLevel": 0 + }, + { + "name": "Schlüsselliteratur", + "scoring": [ + { + "points": 0, + "description": "Literatur passt nicht zum Thema" + }, + { + "points": 1, + "description": "Literatur passt zum Thema" + }, + { + "points": 2, + "description": "Literatur passt zum Thema und ist überwiegend hochrelevant" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertung der Relevanz und Qualität der Literatur für das Forschungsthema", + "expertLevel": 2 + } + ], + "maxPoints": 3, + "minPoints": 0, + "description": "Bewertung der Konsistenz des Literaturverzeichnisses und der Relevanz der Literatur" + }, + { + "code": "additional", + "name": "Zusatzpunkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + }, + { + "points": 2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für besonders gute Leistungen, die nicht in anderen Kriterien erwähnt sind", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + }, + { + "points": -2, + "description": "" + } + ], + "function": "manual_grading", + "maxPoints": 0, + "minPoints": -2, + "subjective": true, + "description": "Große Fehler in der Abgabe", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": -2, + "calculation": "sum", + "description": "Zusätzliche Punkte für sehr gute Arbeiten oder Abzüge bei groben Fehlern" + } + ], + "version": "1.0.0", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Exposé-Kriterien nach Rubriken inklusive Berechnung", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 5, + "name": "Exposé feedback configuration (German)", + "type": 0, + "userId": 4, + "content": { + "name": "Exposé feedback configuration (German)", + "type": "assessment", + "rubrics": [ + { + "code": "structure", + "name": "Form und sprachliche Qualität", + "criteria": [ + { + "name": "Zusammenfassung vorhanden", + "scoring": [ + { + "points": 0, + "description": "Keine Zusammenfassung vorhanden oder spiegelt das Verständnis nicht wider" + }, + { + "points": 1, + "description": "Einfache Zusammenfassung, zeigt grundlegendes Verständnis" + }, + { + "points": 2, + "description": "Prägnante und genaue Zusammenfassung, reflektiert das Verständnis klar und schafft Vertrauen" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Die prägnante Darstellung spiegelt ein Verständnis der Leistung wider.", + "expertLevel": 1 + }, + { + "name": "Klarheit (Clarity) bezogen auf die Gesamtstruktur", + "scoring": [ + { + "points": 0, + "description": "Das Feedback braucht erhebliche Verbesserungen in Klarheit und Verständlichkeit, Kommentare sind unzusammenhängend oder schwer nachvollziehbar" + }, + { + "points": 1, + "description": "Das Feedback ist weitgehend klar, aber teils fehlen konkrete Verweise auf bestimmte Zeilen, Seiten, Abschnitte oder Abbildungen/Tabellen" + }, + { + "points": 2, + "description": "Das Feedback ist klar, gut strukturiert und leicht verständlich, mit kohärenten Kommentaren und präzisen Verweisen auf spezifische Stellen im Text" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Klarheit in Bezug auf die Gesamtstruktur.", + "expertLevel": 2 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Form, Struktur, Sprache und Ton des Feedbacks" + }, + { + "code": "language", + "name": "Sprache", + "criteria": [ + { + "name": "Sprache", + "scoring": [ + { + "points": 0, + "description": "Viele sprachliche Fehler (z. B. falsches Tempus, falsche Personalpronomen)" + }, + { + "points": 1, + "description": "Kaum sprachliche Fehler, klare Sätze mit einheitlicher Terminologie" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Accuracy and correctness of language used", + "expertLevel": 1 + }, + { + "name": "Ton", + "scoring": [ + { + "points": 0, + "description": "Der Ton ist unangemessen, klingt wertend oder vorwurfsvoll, Kritik wirkt destruktiv oder persönlich" + }, + { + "points": 1, + "description": "Der Ton ist insgesamt respektvoll, vermeidet persönliche Angriffe, bleibt aber stellenweise unklar oder weniger freundlich formuliert" + }, + { + "points": 2, + "description": "Der Ton ist durchgehend ruhig, respektvoll und höflich; Kritik ist konstruktiv, sachlich und richtet sich nur auf den Text, nicht auf die Person" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Respekt, die Klarheit und die Konstruktivität des Feedbacks.", + "expertLevel": 1 + } + ], + "maxPoints": 3, + "minPoints": 0, + "calculation": "sum", + "description": "Bewertung der Sprachqualität und des Tons." + }, + { + "code": "feed_up", + "name": "Feed Up (Where am I going?)", + "criteria": [ + { + "name": "Lernziele (Learning Goals)", + "scoring": [ + { + "points": 0, + "description": "keine Lernziele, unklar was erreicht werden soll, keine Orientierung" + }, + { + "points": 1, + "description": "teils unklare Lernziele, allgemein formuliert, bieten nur begrenzte Orientierung" + }, + { + "points": 2, + "description": "klare Lernziele, spezifisch, herausfordernd, vergleichbar und geben klare Richtung" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit, die Spezifität und die Anleitung der Lernziele.", + "expertLevel": 2 + }, + { + "name": "Erfolgskriterien (Success Criteria)", + "scoring": [ + { + "points": 0, + "description": "keine Erfolgskriterien, Erfolg unklar oder vage formuliert, Ziele nicht definiert" + }, + { + "points": 1, + "description": "teils unklare Erfolgskriterien, vorhanden aber unpräzise oder allgemein, Orientierung fehlt teilweise" + }, + { + "points": 2, + "description": "klare Erfolgskriterien, konkrete, messbare Ziele und klare Definition von Erfolg" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Misst die Klarheit und Spezifität der Erfolgskriterien für das Erreichen von Lernzielen.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "sum", + "description": "Informationen über Lernziele und Erfolgskriterien" + }, + { + "code": "feed_back", + "name": "Feed Back (How am I going?)", + "criteria": [ + { + "name": "Knowledge of result (vorhanden / nicht vorhanden)", + "scoring": [ + { + "points": 0, + "description": "keine Information, ob die Aufgabe gelöst wurde oder nicht" + }, + { + "points": 1, + "description": "Information gegeben, ob die Aufgabe gelöst wurde oder nicht" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, ob die Aufgabe gelöst wurde oder nicht.", + "expertLevel": 1 + }, + { + "name": "Knowledge of correct response", + "scoring": [ + { + "points": 0, + "description": "Keine Information zur richtigen Antwort" + }, + { + "points": 1, + "description": "richtige Antwort wird klar mitgeteilt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur richtigen Antwort oder Lösung", + "expertLevel": 2 + }, + { + "name": "Knowledge about task constraints", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe" + }, + { + "points": 1, + "description": "klare Hinweise zu Regeln, Anforderungen oder Einschränkungen der Aufgabe (z.B. Vorgaben)" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu Regeln, Anforderungen oder Einschränkungen der Aufgabe.", + "expertLevel": 1 + }, + { + "name": "Knowledge about concepts", + "scoring": [ + { + "points": 0, + "description": "keine Informationen zu konzeptionellem Wissen" + }, + { + "points": 1, + "description": "grundlegende Informationen zu relevanten Konzepten werden bereitgestellt" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zu relevanten Konzepten, Prinzipien oder Zusammenhängen.", + "expertLevel": 1 + }, + { + "name": "Knowledge about mistakes", + "scoring": [ + { + "points": 0, + "description": "keine Information über Fehler" + }, + { + "points": 1, + "description": "Informationen über die Anzahl, den Ort, die Quelle oder den Typ der Fehler" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen zur Anzahl, Position, Quelle oder Art der Fehler.", + "expertLevel": 1 + }, + { + "name": "Self Feedback", + "scoring": [ + { + "points": 0, + "description": "Es ist Self-Feedback vorhanden, welches nicht mit Task, Process oder Self Regulation kombiniert wurde " + }, + { + "points": 1, + "description": "Es ist kein Self-Feedback vorhanden oder falls vorhanden in Kombination mit Task, Process oder Self Regulation" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Selbst-Feedback (z. B. Lob oder Anerkennung) ist nicht verfügbar oder nur in Kombination mit Lernstrategien oder Selbstregulation.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "min", + "description": "Informationen zum aktuellen Leistungsstand" + }, + { + "code": "feed_forward", + "name": "Feed Forward (Where to next?)", + "criteria": [ + { + "name": "Knowledge about process/self regulation", + "scoring": [ + { + "points": 0, + "description": "Keine Hinweise darauf, wie man an die Aufgabe herangehen könnte, keine erkennbaren Ansätze zur Selbstüberwachung oder Selbstbewertung" + }, + { + "points": 1, + "description": "Entweder Hinweise auf Strategien zur Bearbeitung der Aufgabe und Fehlererkennung oder Ansätze zur Selbstüberwachung und Selbsteinschätzung" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Wissen darüber, wie die Aufgabe zu bearbeiten ist, oder über die Selbstregulation.", + "expertLevel": 1 + }, + { + "name": "Lernkompetenz (Learning Skills)", + "scoring": [ + { + "points": 0, + "description": "keine Informationen, wie Lernfähigkeiten entwickelt oder verbessert werden können" + }, + { + "points": 1, + "description": "Hinweise zur Verbesserung des Lernziels und dem Umgang mit Herausforderungen" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Informationen darüber, wie man Lernfähigkeiten entwickelt oder verbessert.", + "expertLevel": 1 + } + ], + "maxPoints": 2, + "minPoints": 0, + "calculation": "sum", + "description": "Hinweise zur Weiterarbeit und Selbstregulation" + }, + { + "code": "content_quality", + "name": "Content Quality", + "criteria": [ + { + "name": "Korrektheit", + "scoring": [ + { + "points": 0, + "description": "Der Inhalt weißt erhebliche Mängel bezüglich der Richtigkeit auf" + }, + { + "points": 1, + "description": "Der Inhalt ist weitesgehend richtig" + }, + { + "points": 2, + "description": "Der Inhalt ist vollständig richtig" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Genauigkeit und Korrektheit des Feedback-Inhalts.", + "expertLevel": 2 + }, + { + "name": "Umsetzbarkeit", + "scoring": [ + { + "points": 0, + "description": "keine konkreten Handlungsanweisungen vorhanden, Feedback ist schwer umsetzbar" + }, + { + "points": 1, + "description": "einige Handlungsanweisungen vorhanden, aber nur teilweise klar oder spezifisch" + }, + { + "points": 2, + "description": "klares, spezifisches Feedback mit umsetzbaren Anweisungen, z.B. Vergleiche mit bestehenden Methoden, Anwendung auf andere Aufgaben, Definitionen, Erklärungen, Diskussionen, zusätzliche Analysen oder gezielte Vorschläge zum Entfernen von Verwirrendem" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Beurteilt, ob das Feedback klare und spezifische Anweisungen zur Verbesserung liefert.", + "expertLevel": 1 + }, + { + "name": "Argumentation", + "scoring": [ + { + "points": 0, + "description": "Aussagen oder Schlussfolgerungen werden nicht durch Belege oder nachvollziehbare Erklärungen gestützt. Die Argumentation bleibt oberflächlich oder unsystematisch, wodurch der Inhalt wenig überzeugend wirkt." + }, + { + "points": 1, + "description": "Aussagen werden durch nachvollziehbare Belege, Beispiele oder Erklärungen untermauert. Die Argumentation zeigt einen klaren Bezug zwischen Belegen und Schlussfolgerungen, wodurch die inhaltliche Qualität gestärkt wird" + } + ], + "function": "auto_grading", + "maxPoints": 2, + "minPoints": 0, + "subjective": true, + "description": "Bewertet die Qualität der Argumentation und der Beweise/Belege, die im Feedback geliefert werden.", + "expertLevel": 1 + } + ], + "maxPoints": 6, + "minPoints": 0, + "calculation": "sum", + "description": "Korrektheit, Umsetzbarkeit und Argumentation" + }, + { + "code": "errors", + "name": "Fehler in Feedback", + "criteria": [ + { + "name": "Vernachlässigung", + "scoring": [ + { + "points": 0, + "description": "alle wichtigen Details wurden berücksichtigt und es werden keine unnötigen Fragen gestellt" + }, + { + "points": -1, + "description": "wichtige Details wurden übersehen, führt zu unnötigen Fragen oder Kritikpunkten" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob wichtige Details übersehen wurden.", + "expertLevel": 2 + }, + { + "name": "Vage Kritik", + "scoring": [ + { + "points": 0, + "description": "Kritik ist spezifisch und benennt klar, was fehlt oder verbessert werden kann" + }, + { + "points": -1, + "description": "unspezifische Kritik, nennt fehlende Komponenten ohne klar zu benennen, was fehlt" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Bewertet die Spezifität und Klarheit der vorgelegten Kritik.", + "expertLevel": 1 + }, + { + "name": "Außerhalb des Umfangs", + "scoring": [ + { + "points": 0, + "description": "Vorschläge bleiben im Rahmen der Aufgabenstellung und sind relevant" + }, + { + "points": -1, + "description": " Vorschläge beziehen sich auf Methoden oder Analysen, die über den vorgesehenen Rahmen hinausgehen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge im vorgesehenen Rahmen bleiben.", + "expertLevel": 1 + }, + { + "name": "Fehlende Referenz", + "scoring": [ + { + "points": 0, + "description": "alternative Methoden, etc. (falls vorhanden) werden mit Begründung oder Referenzen unterstützt" + }, + { + "points": -1, + "description": "alternative Methoden, etc. (falls vorhanden) werden ohne Begründung oder Referenzen vorgeschlagen" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob Vorschläge durch eine Begründung oder Quellenangaben/Referenzen gestützt werden.", + "expertLevel": 1 + }, + { + "name": "Widerspruch", + "scoring": [ + { + "points": 0, + "description": "Feedback ist in sich konsistent, keine widersprüchlichen Aussagen" + }, + { + "points": -1, + "description": "widersprüchliches Feedback, z.B. Kritik und Lob für dieselben Methoden" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Beurteilt, ob das Feedback konsistent und widerspruchsfrei ist.", + "expertLevel": 1 + } + ], + "maxPoints": 4, + "minPoints": 0, + "calculation": "max", + "description": "Fehlerarten im Feedback (Abzüge)", + "defaultPoints": 4 + }, + { + "code": "additional", + "name": "Zusätzliche Punkte", + "isBonus": true, + "criteria": [ + { + "name": "Zusätzliche Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": 1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 1, + "minPoints": 0, + "subjective": true, + "description": "Zusätzliche Punkte für sehr gute Bewertungen", + "expertLevel": 1 + }, + { + "name": "Negative Punkte", + "scoring": [ + { + "points": 0, + "description": "" + }, + { + "points": -1, + "description": "" + } + ], + "function": "auto_grading", + "maxPoints": 0, + "minPoints": -1, + "subjective": true, + "description": "Grobe Fehler in den Rezensionen", + "expertLevel": 1 + } + ], + "maxPoints": 1, + "minPoints": -1, + "calculation": "sum", + "description": "Für besonders gute Bewertungen können zusätzliche Punkte vergeben werden, für gravierende Fehler hingegen werden Punkte abgezogen." + } + ], + "version": "1.0.0", + "description": "Bewertungskriterien für Feedbackqualität" + }, + "createdAt": "2026-08-14T13:54:10.846Z", + "updatedAt": "2026-08-14T13:54:19.463Z", + "description": "Bewertungskriterien für Feedbackqualität", + "creator_name": "admin", + "hideInFrontend": false + }, + { + "id": 6, + "name": "UKP Exposé Submission Validator", + "type": 1, + "userId": 4, + "content": { + "name": "UKP Exposé Submission Validator", + "type": "validation", + "rules": { + "requiredFiles": [ + { + "name": "PDF", + "pattern": ".*\\.pdf$", + "required": true, + "description": "Main PDF of the Exposé" + }, + { + "name": "ZIP", + "pattern": ".*\\.zip$", + "required": true, + "description": "Raw Latex Files for the Exposé", + "includeFiles": [ + { + "name": "expose", + "pattern": "Expose\\.tex$", + "required": true, + "maxMatches": 1, + "description": "Main expose LaTeX document" + }, + { + "name": "bibliography", + "pattern": "ExposeBibliography\\.bib$", + "required": true, + "maxMatches": 1, + "description": "Bibliography file for the exposé" + }, + { + "name": "config", + "pattern": "tudathesis\\.cfg$", + "required": true, + "maxMatches": 1, + "description": "TUDa thesis configuration file" + } + ], + "allowAdditionalFiles": [ + "jpeg", + "jpg", + "png", + "pdf", + "bst", + "cls" + ] + } + ], + "additionalFilesAreAllowed": false + }, + "version": "0.0.1", + "description": "Validation schema for UKP Exposé LaTeX submissions" + }, + "createdAt": "2026-08-14T13:55:14.658Z", + "updatedAt": "2026-08-14T13:55:14.658Z", + "description": "Validation schema for UKP Exposé LaTeX submissions", + "creator_name": "admin", + "hideInFrontend": false + } + ], + "direction": false, + "startTime": "2026-08-14T14:01:36.942Z", + "endTime": "2026-08-14T14:01:36.942Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:01:36.921Z", + "endTime": "2026-08-14T14:01:36.921Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 238, + "clientY": 237, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:01:37.028Z", + "endTime": "2026-08-14T14:01:37.028Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add Assignment" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:01:38.343Z", + "endTime": "2026-08-14T14:01:38.343Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:01:38.796Z", + "endTime": "2026-08-14T14:01:38.796Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 587, + "clientY": 470, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:01:41.064Z", + "endTime": "2026-08-14T14:01:41.064Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:01:45.574Z", + "endTime": "2026-08-14T14:01:45.574Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1078, + "clientY": 673, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:01:45.881Z", + "endTime": "2026-08-14T14:01:45.881Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 762, + "clientY": 303, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:01:47.696Z", + "endTime": "2026-08-14T14:01:47.696Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 480, + "clientY": 482, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:01:57.941Z", + "endTime": "2026-08-14T14:01:57.941Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 480, + "clientY": 508, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:01:58.893Z", + "endTime": "2026-08-14T14:01:58.893Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 651, + "clientY": 570, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:00.863Z", + "endTime": "2026-08-14T14:02:00.863Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1049, + "clientY": 742, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:05.533Z", + "endTime": "2026-08-14T14:02:05.533Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1021, + "clientY": 589, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:06.447Z", + "endTime": "2026-08-14T14:02:06.447Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 674, + "clientY": 476, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:08.714Z", + "endTime": "2026-08-14T14:02:08.714Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:02:11.260Z", + "endTime": "2026-08-14T14:02:11.260Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:02:16.250Z", + "endTime": "2026-08-14T14:02:16.250Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 600, + "clientY": 531, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:17.340Z", + "endTime": "2026-08-14T14:02:17.340Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 632, + "clientY": 512, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:17.981Z", + "endTime": "2026-08-14T14:02:17.981Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 372, + "clientY": 649, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:21.295Z", + "endTime": "2026-08-14T14:02:21.295Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 653, + "clientY": 215, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:24.418Z", + "endTime": "2026-08-14T14:02:24.418Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1033, + "clientY": 732, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:32.449Z", + "endTime": "2026-08-14T14:02:32.449Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "appDataUpdate", + "payload": { + "data": { + "end": null, + "name": "assignment 1", + "start": null, + "userId": 4, + "projectId": 1, + "description": "test assignment", + "maxRevisions": 1, + "allowReUpload": true, + "notifyOnSubmissionUpload": false, + "validationConfigurationId": 3 + }, + "table": "assignment" + }, + "direction": true, + "startTime": "2026-08-14T14:02:32.912Z", + "endTime": "2026-08-14T14:02:32.912Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "title": "Save Assignment" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:02:32.916Z", + "endTime": "2026-08-14T14:02:32.916Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "assignmentRefresh", + "payload": [ + { + "id": 1, + "end": null, + "name": "assignment 1", + "start": null, + "closed": null, + "userId": 4, + "deleted": false, + "disable": false, + "createdAt": "2026-08-14T14:02:32.928Z", + "projectId": 1, + "updatedAt": "2026-08-14T14:02:32.928Z", + "description": "test assignment", + "maxRevisions": 1, + "allowReUpload": true, + "parentAssignmentId": null, + "notifyOnSubmissionUpload": false, + "validationConfigurationId": 3 + } + ], + "direction": false, + "startTime": "2026-08-14T14:02:32.951Z", + "endTime": "2026-08-14T14:02:32.951Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "appDataUpdate", + "payload": { + "data": { + "roleId": 6, + "userId": null, + "assignmentId": 1 + }, + "table": "assignment_share" + }, + "direction": true, + "startTime": "2026-08-14T14:02:32.979Z", + "endTime": "2026-08-14T14:02:32.979Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:02:32.980Z", + "endTime": "2026-08-14T14:02:32.980Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "assignment_shareRefresh", + "payload": [ + { + "id": 1, + "roleId": 6, + "userId": null, + "deleted": false, + "createdAt": "2026-08-14T14:02:32.982Z", + "updatedAt": "2026-08-14T14:02:32.982Z", + "assignmentId": 1 + } + ], + "direction": false, + "startTime": "2026-08-14T14:02:32.987Z", + "endTime": "2026-08-14T14:02:32.987Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 995, + "clientY": 606, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:33.962Z", + "endTime": "2026-08-14T14:02:33.962Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 880, + "clientY": 609, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:35.825Z", + "endTime": "2026-08-14T14:02:35.825Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:02:37.041Z", + "endTime": "2026-08-14T14:02:37.041Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:02:39.134Z", + "endTime": "2026-08-14T14:02:39.134Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1133, + "clientY": 8, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:41.748Z", + "endTime": "2026-08-14T14:02:41.748Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/assignments" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.654Z", + "endTime": "2026-08-14T14:02:42.654Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "ab7c4760-a69a-4ef3-bf30-6130e7a7c08c", + "direction": true, + "startTime": "2026-08-14T14:02:42.664Z", + "endTime": "2026-08-14T14:02:42.664Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "d7998dcc-86b8-490d-b2d1-0ec330b2301b", + "direction": true, + "startTime": "2026-08-14T14:02:42.664Z", + "endTime": "2026-08-14T14:02:42.664Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "5c770461-18b1-439b-9612-02ca291d86cf", + "direction": true, + "startTime": "2026-08-14T14:02:42.664Z", + "endTime": "2026-08-14T14:02:42.664Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "6aa87117-0cdf-4f20-8050-f28dc744a70a", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "f03a3609-ef15-414c-9e90-33d0980121c8", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "2b9d05f7-91f6-41d4-9423-7999f5876822", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "3de699f3-41c1-4b7d-b935-9588fc1db6cf", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "6850ce37-4ed2-479e-acd7-31a0c9e27215", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "00a9eef0-2119-4654-a5a4-1b0a409eeb34", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "c29007e5-800b-4ff9-966c-8431dcf9a7d5", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "7ed8251f-100c-46af-9f9f-523e690ac7f4", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "1a7a85d7-b80c-4419-a486-4a7f8d13e8fd", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "649c7633-a091-4449-9f02-028cfca856cd", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "a77fe4d7-d8c7-4ca2-b2c0-85277f746af4", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "d2ab4635-50d0-41e8-af29-7948e8ec8c41", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "437b4437-3f77-492f-9bd5-086f1cbe7636", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "95f4b2a7-9be9-4d41-8274-b0ef2e906c09", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "8ed31977-e544-4c13-8185-1f634b6ddfbc", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "5cf6eafa-0242-4176-9188-e723c8d2c1a1", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "f080c3b6-0bb5-462a-89fc-3dc846a63ccf", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "248965f7-eeb4-4174-9e82-da30ab778394", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "f7b5061c-2e36-4b4b-bcac-d92f4d2da785", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "a75395df-b972-4309-a581-d2b40537e69b", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "7ca29820-30d1-47ad-ad53-3472a0216a0a", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "7f7f9dff-0f8a-4531-b9c8-7247699a4ca2", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "bb983337-11f0-45c2-ab84-19a110d90f4d", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "8d1ac9f0-b9b3-48c7-b959-fb8f9100fba1", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.703Z", + "endTime": "2026-08-14T14:02:42.703Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "280bf2e8-d7ec-42bf-b402-720b202e7e65", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.703Z", + "endTime": "2026-08-14T14:02:42.703Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "e5747775-1bc5-4bb3-8e41-758c05b10d32", + "direction": true, + "startTime": "2026-08-14T14:02:42.669Z", + "endTime": "2026-08-14T14:02:42.669Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.703Z", + "endTime": "2026-08-14T14:02:42.703Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.706Z", + "endTime": "2026-08-14T14:02:42.706Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "3c8c4249-0894-4397-bc59-ce2abfc3f505", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "2f3b0676-3ed9-44c5-8cd1-bcc0170354ef", + "direction": true, + "startTime": "2026-08-14T14:02:42.669Z", + "endTime": "2026-08-14T14:02:42.669Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.689Z", + "endTime": "2026-08-14T14:02:42.689Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "f8118683-cb85-4b91-ae75-1bceaf5eadb4", + "direction": true, + "startTime": "2026-08-14T14:02:42.672Z", + "endTime": "2026-08-14T14:02:42.672Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "unsubscribeAppData", + "payload": "c03e1806-e061-46a7-a71d-4a56f736b38d", + "direction": true, + "startTime": "2026-08-14T14:02:42.668Z", + "endTime": "2026-08-14T14:02:42.668Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:02:42.706Z", + "endTime": "2026-08-14T14:02:42.706Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "clientX": 1231, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:02:43.514Z", + "endTime": "2026-08-14T14:02:43.514Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "ibY45Mhk52jioALDAABZ", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:02:43.683Z", + "endTime": "2026-08-14T14:02:43.683Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/710-upload-submission.json b/backend/tests/regression_stories/710-upload-submission.json new file mode 100644 index 000000000..c2dd04373 --- /dev/null +++ b/backend/tests/regression_stories/710-upload-submission.json @@ -0,0 +1,1085 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T18:11:03.440Z", + "traceCount": 27, + "recording": { + "name": "710-upload-submission", + "status": "finished", + "startTime": "2026-08-14T18:09:29.228Z", + "userId": 4, + "participantSocketIds": [ + "G-W8z1wkJ_pkb3z-AABn" + ], + "excludeEvents": null, + "endTime": "2026-08-14T18:10:46.987Z" + }, + "traces": [ + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "recordingRefresh", + "payload": [ + { + "id": 1, + "name": "Recording 8/14/2026, 8:09:29 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T18:09:29.228Z", + "startTime": "2026-08-14T18:09:29.228Z", + "updatedAt": "2026-08-14T18:09:29.228Z", + "excludeEvents": null, + "participantSocketIds": [ + "G-W8z1wkJ_pkb3z-AABn" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T18:09:29.242Z", + "endTime": "2026-08-14T18:09:29.242Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T18:09:30.571Z", + "endTime": "2026-08-14T18:09:30.571Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "icon": "file-earmark-arrow-up", + "title": "Upload Submission" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T18:09:31.467Z", + "endTime": "2026-08-14T18:09:31.467Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1249, + "clientY": 161, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:09:31.753Z", + "endTime": "2026-08-14T18:09:31.753Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T18:09:31.918Z", + "endTime": "2026-08-14T18:09:31.918Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 662, + "clientY": 278, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:09:33.202Z", + "endTime": "2026-08-14T18:09:33.202Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 655, + "clientY": 349, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:09:38.110Z", + "endTime": "2026-08-14T18:09:38.110Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T18:09:39.110Z", + "endTime": "2026-08-14T18:09:39.110Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T18:09:45.126Z", + "endTime": "2026-08-14T18:09:45.126Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 409, + "clientY": 200, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:09:46.568Z", + "endTime": "2026-08-14T18:09:46.568Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 529, + "clientY": 290, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:09:52.319Z", + "endTime": "2026-08-14T18:09:52.319Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T18:09:56.722Z", + "endTime": "2026-08-14T18:09:56.722Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T18:10:25.136Z", + "endTime": "2026-08-14T18:10:25.136Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 426, + "clientY": 272, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:10:27.101Z", + "endTime": "2026-08-14T18:10:27.101Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 395, + "clientY": 179, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:10:29.586Z", + "endTime": "2026-08-14T18:10:29.586Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T18:10:33.355Z", + "endTime": "2026-08-14T18:10:33.355Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T18:10:39.969Z", + "endTime": "2026-08-14T18:10:39.969Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "title": "Submit" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T18:10:42.642Z", + "endTime": "2026-08-14T18:10:42.642Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "documentUploadSingleSubmission", + "payload": { + "name": "newsub", + "files": [ + { + "content": { + "data": [ + 37, + 80, + 68, + 70, + 45, + 49, + 46, + 52, + 10, + 49, + 32, + 48, + 32, + 111, + 98, + 106, + 60, + 60, + 47, + 84, + 121, + 112, + 101, + 47, + 67, + 97, + 116, + 97, + 108, + 111, + 103, + 62, + 62, + 101, + 110, + 100, + 111, + 98, + 106, + 10, + 116, + 114, + 97, + 105, + 108, + 101, + 114, + 60, + 60, + 47, + 82, + 111, + 111, + 116, + 32, + 49, + 32, + 48, + 32, + 82, + 62, + 62, + 10 + ], + "type": "Buffer" + }, + "fileName": "expose.pdf" + }, + { + "content": { + "data": [ + 80, + 75, + 3, + 4, + 20, + 0, + 0, + 0, + 8, + 0, + 74, + 129, + 14, + 93, + 33, + 64, + 36, + 172, + 49, + 0, + 0, + 0, + 62, + 0, + 0, + 0, + 10, + 0, + 0, + 0, + 69, + 120, + 112, + 111, + 115, + 101, + 46, + 116, + 101, + 120, + 139, + 73, + 201, + 79, + 46, + 205, + 77, + 205, + 43, + 73, + 206, + 73, + 44, + 46, + 174, + 78, + 44, + 42, + 201, + 76, + 206, + 73, + 173, + 229, + 138, + 73, + 74, + 77, + 207, + 204, + 171, + 134, + 201, + 214, + 114, + 101, + 164, + 230, + 228, + 228, + 115, + 197, + 164, + 230, + 165, + 32, + 9, + 2, + 0, + 80, + 75, + 3, + 4, + 20, + 0, + 0, + 0, + 8, + 0, + 74, + 129, + 14, + 93, + 181, + 79, + 123, + 24, + 44, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 22, + 0, + 0, + 0, + 69, + 120, + 112, + 111, + 115, + 101, + 66, + 105, + 98, + 108, + 105, + 111, + 103, + 114, + 97, + 112, + 104, + 121, + 46, + 98, + 105, + 98, + 115, + 72, + 44, + 42, + 201, + 76, + 206, + 73, + 173, + 174, + 208, + 81, + 40, + 201, + 44, + 201, + 73, + 181, + 173, + 174, + 168, + 213, + 81, + 72, + 44, + 45, + 201, + 200, + 47, + 130, + 176, + 43, + 83, + 19, + 129, + 44, + 35, + 3, + 35, + 179, + 218, + 90, + 46, + 0, + 80, + 75, + 3, + 4, + 10, + 0, + 0, + 0, + 0, + 0, + 74, + 129, + 14, + 93, + 225, + 250, + 82, + 121, + 21, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 116, + 117, + 100, + 97, + 116, + 104, + 101, + 115, + 105, + 115, + 46, + 99, + 102, + 103, + 37, + 32, + 116, + 117, + 100, + 97, + 32, + 116, + 104, + 101, + 115, + 105, + 115, + 32, + 99, + 111, + 110, + 102, + 105, + 103, + 10, + 80, + 75, + 1, + 2, + 30, + 3, + 20, + 0, + 0, + 0, + 8, + 0, + 74, + 129, + 14, + 93, + 33, + 64, + 36, + 172, + 49, + 0, + 0, + 0, + 62, + 0, + 0, + 0, + 10, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 164, + 129, + 0, + 0, + 0, + 0, + 69, + 120, + 112, + 111, + 115, + 101, + 46, + 116, + 101, + 120, + 80, + 75, + 1, + 2, + 30, + 3, + 20, + 0, + 0, + 0, + 8, + 0, + 74, + 129, + 14, + 93, + 181, + 79, + 123, + 24, + 44, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 22, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 164, + 129, + 89, + 0, + 0, + 0, + 69, + 120, + 112, + 111, + 115, + 101, + 66, + 105, + 98, + 108, + 105, + 111, + 103, + 114, + 97, + 112, + 104, + 121, + 46, + 98, + 105, + 98, + 80, + 75, + 1, + 2, + 30, + 3, + 10, + 0, + 0, + 0, + 0, + 0, + 74, + 129, + 14, + 93, + 225, + 250, + 82, + 121, + 21, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 164, + 129, + 185, + 0, + 0, + 0, + 116, + 117, + 100, + 97, + 116, + 104, + 101, + 115, + 105, + 115, + 46, + 99, + 102, + 103, + 80, + 75, + 5, + 6, + 0, + 0, + 0, + 0, + 3, + 0, + 3, + 0, + 184, + 0, + 0, + 0, + 250, + 0, + 0, + 0, + 0, + 0 + ], + "type": "Buffer" + }, + "fileName": "expose.zip" + } + ], + "userId": 4, + "projectId": 1, + "description": "hi", + "assignmentId": 1, + "submissionId": null, + "validationConfigurationId": 3 + }, + "direction": true, + "startTime": "2026-08-14T18:10:42.641Z", + "endTime": "2026-08-14T18:10:42.641Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "submissionRefresh", + "payload": [ + { + "id": 2, + "name": "newsub", + "extId": null, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T18:10:42.684Z", + "projectId": 1, + "updatedAt": "2026-08-14T18:10:42.684Z", + "description": "hi", + "assignmentId": 1, + "createdByUserId": 4, + "additionalSettings": null, + "parentSubmissionId": null, + "previousSubmissionId": null, + "validationConfigurationId": 3 + } + ], + "direction": false, + "startTime": "2026-08-14T18:10:42.721Z", + "endTime": "2026-08-14T18:10:42.721Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "documentRefresh", + "payload": [ + { + "id": 13, + "hash": "a00e7d58-973b-4fad-bb4b-993070ef74cb", + "name": "expose", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T18:10:42.689Z", + "projectId": 1, + "updatedAt": "2026-08-14T18:10:42.689Z", + "submissionId": 2, + "hideInFrontend": false, + "readyForReview": true, + "studyUsageCount": 0, + "originalFilename": "expose.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + }, + { + "id": 14, + "hash": "04857b2f-3140-4444-bdd5-b3b2851c4302", + "name": "expose", + "type": 4, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T18:10:42.718Z", + "projectId": 1, + "updatedAt": "2026-08-14T18:10:42.718Z", + "submissionId": 2, + "hideInFrontend": false, + "readyForReview": true, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-14T18:10:42.722Z", + "endTime": "2026-08-14T18:10:42.722Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "documentRefresh", + "payload": [ + { + "id": 13, + "hash": "a00e7d58-973b-4fad-bb4b-993070ef74cb", + "name": "expose", + "type": 0, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T18:10:42.689Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-14T18:10:42.689Z", + "creator_name": "admin", + "submissionId": 2, + "hideInFrontend": false, + "readyForReview": true, + "studyUsageCount": 0, + "originalFilename": "expose.pdf", + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-14T18:10:42.722Z", + "endTime": "2026-08-14T18:10:42.722Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "documentRefresh", + "payload": [ + { + "id": 14, + "hash": "04857b2f-3140-4444-bdd5-b3b2851c4302", + "name": "expose", + "type": 4, + "public": false, + "userId": 4, + "deleted": false, + "createdAt": "2026-08-14T18:10:42.718Z", + "deletedAt": null, + "projectId": 1, + "updatedAt": "2026-08-14T18:10:42.718Z", + "creator_name": "admin", + "submissionId": 2, + "hideInFrontend": false, + "readyForReview": true, + "studyUsageCount": 0, + "originalFilename": null, + "parentDocumentId": null, + "uploadedByUserId": 4 + } + ], + "direction": false, + "startTime": "2026-08-14T18:10:42.722Z", + "endTime": "2026-08-14T18:10:42.722Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T18:10:42.727Z", + "endTime": "2026-08-14T18:10:42.727Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1060, + "clientY": 342, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:10:44.184Z", + "endTime": "2026-08-14T18:10:44.184Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T18:10:46.198Z", + "endTime": "2026-08-14T18:10:46.198Z" + }, + { + "recordingId": 1, + "userId": 4, + "socketId": "G-W8z1wkJ_pkb3z-AABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1058, + "clientY": 0, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T18:10:46.678Z", + "endTime": "2026-08-14T18:10:46.678Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/800-create-template.json b/backend/tests/regression_stories/800-create-template.json new file mode 100644 index 000000000..cc13276d2 --- /dev/null +++ b/backend/tests/regression_stories/800-create-template.json @@ -0,0 +1,952 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:37:20.937Z", + "traceCount": 64, + "recording": { + "name": "800-create-template", + "status": "finished", + "startTime": "2026-08-14T14:19:56.983Z", + "userId": 4, + "participantSocketIds": [ + "gTR9jRDNQyFEgRcqAABd" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:20:44.023Z" + }, + "traces": [ + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "recordingRefresh", + "payload": [ + { + "id": 4, + "name": "Recording 8/14/2026, 4:19:56 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:19:56.983Z", + "startTime": "2026-08-14T14:19:56.983Z", + "updatedAt": "2026-08-14T14:19:56.983Z", + "excludeEvents": null, + "participantSocketIds": [ + "gTR9jRDNQyFEgRcqAABd" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:19:56.996Z", + "endTime": "2026-08-14T14:19:56.996Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:19:58.336Z", + "endTime": "2026-08-14T14:19:58.336Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 137, + "clientY": 197, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:00.632Z", + "endTime": "2026-08-14T14:20:00.632Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 944, + "clientY": 21, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:02.019Z", + "endTime": "2026-08-14T14:20:02.019Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 866, + "clientY": 177, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:02.936Z", + "endTime": "2026-08-14T14:20:02.936Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:05.027Z", + "endTime": "2026-08-14T14:20:05.027Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:06.155Z", + "endTime": "2026-08-14T14:20:06.155Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 54, + "clientY": 91, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:08.755Z", + "endTime": "2026-08-14T14:20:08.755Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/templates", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:20:09.690Z", + "endTime": "2026-08-14T14:20:09.690Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "c78c8d82-e4be-46dc-9343-7a593778b662", + "direction": true, + "startTime": "2026-08-14T14:20:09.694Z", + "endTime": "2026-08-14T14:20:09.694Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "96d27b2e-7c21-44ec-afae-b7aae582a5bf", + "direction": true, + "startTime": "2026-08-14T14:20:09.699Z", + "endTime": "2026-08-14T14:20:09.699Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "8ede7258-d4eb-490b-81f1-ac36781de9c2", + "direction": true, + "startTime": "2026-08-14T14:20:09.699Z", + "endTime": "2026-08-14T14:20:09.699Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "7aa460d8-94d6-4b3a-9b84-7a50ce814b01", + "direction": true, + "startTime": "2026-08-14T14:20:09.699Z", + "endTime": "2026-08-14T14:20:09.699Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "4299b84d-3f6d-485b-a97c-152c360953db", + "direction": true, + "startTime": "2026-08-14T14:20:09.700Z", + "endTime": "2026-08-14T14:20:09.700Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "a0f58fac-cfac-4c3e-9cac-7143eaf39a81", + "direction": true, + "startTime": "2026-08-14T14:20:09.700Z", + "endTime": "2026-08-14T14:20:09.700Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:09.751Z", + "endTime": "2026-08-14T14:20:09.751Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:09.755Z", + "endTime": "2026-08-14T14:20:09.755Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:09.756Z", + "endTime": "2026-08-14T14:20:09.756Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "icon": "plus", + "title": "Add new template" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:20:10.900Z", + "endTime": "2026-08-14T14:20:10.900Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:20:11.356Z", + "endTime": "2026-08-14T14:20:11.356Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 899, + "clientY": 280, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:12.091Z", + "endTime": "2026-08-14T14:20:12.091Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:13.339Z", + "endTime": "2026-08-14T14:20:13.339Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:15.021Z", + "endTime": "2026-08-14T14:20:15.021Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 820, + "clientY": 152, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:16.615Z", + "endTime": "2026-08-14T14:20:16.615Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 819, + "clientY": 114, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:19.726Z", + "endTime": "2026-08-14T14:20:19.726Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 756, + "clientY": 238, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:20.976Z", + "endTime": "2026-08-14T14:20:20.976Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 753, + "clientY": 330, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:22.428Z", + "endTime": "2026-08-14T14:20:22.428Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:25.730Z", + "endTime": "2026-08-14T14:20:25.730Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:27.029Z", + "endTime": "2026-08-14T14:20:27.029Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 666, + "clientY": 341, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:29.180Z", + "endTime": "2026-08-14T14:20:29.180Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "templateAdd", + "payload": { + "name": "newtemp", + "type": 4, + "content": { + "ops": [ + { + "insert": "\n" + } + ] + }, + "description": "hi" + }, + "direction": true, + "startTime": "2026-08-14T14:20:32.827Z", + "endTime": "2026-08-14T14:20:32.827Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 1062, + "clientY": 477, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:32.881Z", + "endTime": "2026-08-14T14:20:32.881Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "templateRefresh", + "payload": [ + { + "id": 1, + "name": "newtemp", + "type": 4, + "public": false, + "userId": 4, + "deleted": false, + "sourceId": null, + "createdAt": "2026-08-14T14:20:32.906Z", + "updatedAt": "2026-08-14T14:20:32.906Z", + "description": "hi", + "defaultLanguage": "en" + } + ], + "direction": false, + "startTime": "2026-08-14T14:20:32.915Z", + "endTime": "2026-08-14T14:20:32.915Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:20:32.947Z", + "endTime": "2026-08-14T14:20:32.947Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "to": "/template/1", + "from": "/dashboard/templates" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.123Z", + "endTime": "2026-08-14T14:20:33.123Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "a9f572f0-af80-4f5a-b9f6-e6d568f6ff5d", + "direction": true, + "startTime": "2026-08-14T14:20:33.144Z", + "endTime": "2026-08-14T14:20:33.144Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "980e2179-e5a4-433d-ac9e-76861bf27abc", + "direction": true, + "startTime": "2026-08-14T14:20:33.144Z", + "endTime": "2026-08-14T14:20:33.144Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "ee493b96-0b6d-4b26-93ba-5752bc83d1f3", + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "ecb536d8-9c23-4c1e-a768-2f77806d41f9", + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "2b66cc30-674b-48eb-b933-39f50b2c6bd8", + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "c8bd4876-7429-438b-93ac-5db1c66d5988", + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "templateGetLanguages", + "payload": { + "templateId": 1 + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "documentId": 0, + "studyStepId": null, + "studySessionId": null, + "isSidebarVisible": true + }, + "action": "sidebar-visibility" + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.149Z", + "endTime": "2026-08-14T14:20:33.149Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "templateGetContent", + "payload": { + "language": "en", + "templateId": 1 + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.181Z", + "endTime": "2026-08-14T14:20:33.181Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "documentId": 0, + "studyStepId": null, + "windowWidth": 1440, + "sidebarVisible": true, + "studySessionId": null + }, + "action": "sidebarResize" + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.645Z", + "endTime": "2026-08-14T14:20:33.645Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 1012, + "clientY": 453, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:33.947Z", + "endTime": "2026-08-14T14:20:33.947Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 1012, + "clientY": 437, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:34.713Z", + "endTime": "2026-08-14T14:20:34.713Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:35.951Z", + "endTime": "2026-08-14T14:20:35.951Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:38.441Z", + "endTime": "2026-08-14T14:20:38.441Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 110, + "clientY": 39, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:41.166Z", + "endTime": "2026-08-14T14:20:41.166Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "templateClose", + "payload": { + "language": "en", + "templateId": 1 + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.076Z", + "endTime": "2026-08-14T14:20:42.076Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/templates", + "from": "/template/1" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.140Z", + "endTime": "2026-08-14T14:20:42.140Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "3e70f22f-c89e-4270-90e9-3872049be533", + "direction": true, + "startTime": "2026-08-14T14:20:42.146Z", + "endTime": "2026-08-14T14:20:42.146Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "nav_group" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.147Z", + "endTime": "2026-08-14T14:20:42.147Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "unsubscribeAppData", + "payload": "7ec04710-55c0-4e27-b049-4479ac81747e", + "direction": true, + "startTime": "2026-08-14T14:20:42.147Z", + "endTime": "2026-08-14T14:20:42.147Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.147Z", + "endTime": "2026-08-14T14:20:42.147Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "nav_element" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.147Z", + "endTime": "2026-08-14T14:20:42.147Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.164Z", + "endTime": "2026-08-14T14:20:42.164Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.168Z", + "endTime": "2026-08-14T14:20:42.168Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:20:42.168Z", + "endTime": "2026-08-14T14:20:42.168Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 1074, + "clientY": 7, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:20:43.130Z", + "endTime": "2026-08-14T14:20:43.130Z" + }, + { + "recordingId": 4, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:20:43.164Z", + "endTime": "2026-08-14T14:20:43.164Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/805-publish-template.json b/backend/tests/regression_stories/805-publish-template.json new file mode 100644 index 000000000..8b3951019 --- /dev/null +++ b/backend/tests/regression_stories/805-publish-template.json @@ -0,0 +1,262 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:37:23.481Z", + "traceCount": 14, + "recording": { + "name": "805-publish-template", + "status": "finished", + "startTime": "2026-08-14T14:21:09.319Z", + "userId": 4, + "participantSocketIds": [ + "gTR9jRDNQyFEgRcqAABd" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:21:19.525Z" + }, + "traces": [ + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "recordingRefresh", + "payload": [ + { + "id": 5, + "name": "Recording 8/14/2026, 4:21:09 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:21:09.320Z", + "startTime": "2026-08-14T14:21:09.319Z", + "updatedAt": "2026-08-14T14:21:09.320Z", + "excludeEvents": null, + "participantSocketIds": [ + "gTR9jRDNQyFEgRcqAABd" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:21:09.332Z", + "endTime": "2026-08-14T14:21:09.332Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:21:10.506Z", + "endTime": "2026-08-14T14:21:10.506Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 1245, + "clientY": 192, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:21:13.265Z", + "endTime": "2026-08-14T14:21:13.265Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "templateId": 1 + }, + "action": "openModalPublishTemplate" + }, + "direction": true, + "startTime": "2026-08-14T14:21:13.748Z", + "endTime": "2026-08-14T14:21:13.748Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "action": "togglePublished", + "params": {} + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-14T14:21:13.750Z", + "endTime": "2026-08-14T14:21:13.750Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "name": "templatePublish", + "props": { + "templateId": 1 + } + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:21:14.201Z", + "endTime": "2026-08-14T14:21:14.201Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "appDataUpdate", + "payload": { + "data": { + "id": 1, + "public": true + }, + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:21:15.158Z", + "endTime": "2026-08-14T14:21:15.158Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "title": "Yes, publish it!" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:21:15.159Z", + "endTime": "2026-08-14T14:21:15.159Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "templateRefresh", + "payload": [ + { + "id": 1, + "name": "newtemp", + "type": 4, + "public": true, + "userId": 4, + "deleted": false, + "sourceId": null, + "createdAt": "2026-08-14T14:20:32.906Z", + "updatedAt": "2026-08-14T14:21:15.164Z", + "description": "hi", + "defaultLanguage": "en" + } + ], + "direction": false, + "startTime": "2026-08-14T14:21:15.180Z", + "endTime": "2026-08-14T14:21:15.180Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "clientX": 888, + "clientY": 191, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:21:15.497Z", + "endTime": "2026-08-14T14:21:15.497Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "name": "templatePublish", + "props": { + "templateId": 1 + } + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:21:16.974Z", + "endTime": "2026-08-14T14:21:16.974Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "title": "Close" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:21:16.976Z", + "endTime": "2026-08-14T14:21:16.976Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "templateId": 1 + }, + "action": "cancelModalPublishTemplate" + }, + "direction": true, + "startTime": "2026-08-14T14:21:16.976Z", + "endTime": "2026-08-14T14:21:16.976Z" + }, + { + "recordingId": 5, + "userId": 4, + "socketId": "gTR9jRDNQyFEgRcqAABd", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:21:18.703Z", + "endTime": "2026-08-14T14:21:18.703Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/806-grant-template-access.json b/backend/tests/regression_stories/806-grant-template-access.json new file mode 100644 index 000000000..3115393cc --- /dev/null +++ b/backend/tests/regression_stories/806-grant-template-access.json @@ -0,0 +1,516 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:37:26.078Z", + "traceCount": 38, + "recording": { + "name": "806-grant-template-access", + "status": "finished", + "startTime": "2026-08-14T14:30:21.139Z", + "userId": 4, + "participantSocketIds": [ + "VAQXt_4WTiJxz3NqAABj" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:30:41.406Z" + }, + "traces": [ + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "recordingRefresh", + "payload": [ + { + "id": 7, + "name": "Recording 8/14/2026, 4:30:21 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:30:21.140Z", + "startTime": "2026-08-14T14:30:21.139Z", + "updatedAt": "2026-08-14T14:30:21.140Z", + "excludeEvents": null, + "participantSocketIds": [ + "VAQXt_4WTiJxz3NqAABj" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:30:21.153Z", + "endTime": "2026-08-14T14:30:21.153Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:30:21.977Z", + "endTime": "2026-08-14T14:30:21.977Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/users", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:30:24.503Z", + "endTime": "2026-08-14T14:30:24.503Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "9252b6bc-b8db-459b-8ce9-7064ab8ea2e0", + "direction": true, + "startTime": "2026-08-14T14:30:24.506Z", + "endTime": "2026-08-14T14:30:24.506Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "9ea53d04-5710-4142-bcf4-f87644e65ca2", + "direction": true, + "startTime": "2026-08-14T14:30:24.506Z", + "endTime": "2026-08-14T14:30:24.506Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "ce63eb9c-7c62-4c35-bd2a-211668a48195", + "direction": true, + "startTime": "2026-08-14T14:30:24.506Z", + "endTime": "2026-08-14T14:30:24.506Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "00c8f73a-4fd6-4977-8656-cdf0a0b19e62", + "direction": true, + "startTime": "2026-08-14T14:30:24.506Z", + "endTime": "2026-08-14T14:30:24.506Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "a554f9ab-2826-456a-ad51-f9baea54f2f7", + "direction": true, + "startTime": "2026-08-14T14:30:24.506Z", + "endTime": "2026-08-14T14:30:24.506Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "fd4a5af8-7ccd-4866-9d9e-7a53aabb6dca", + "direction": true, + "startTime": "2026-08-14T14:30:24.517Z", + "endTime": "2026-08-14T14:30:24.517Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-14T14:30:24.517Z", + "endTime": "2026-08-14T14:30:24.517Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "user" + }, + "direction": true, + "startTime": "2026-08-14T14:30:24.520Z", + "endTime": "2026-08-14T14:30:24.520Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "userMonitorSubscribe", + "payload": {}, + "direction": true, + "startTime": "2026-08-14T14:30:24.520Z", + "endTime": "2026-08-14T14:30:24.520Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "icon": "shield-lock", + "title": "Rights Management" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:30:25.698Z", + "endTime": "2026-08-14T14:30:25.698Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "user_role" + }, + "direction": true, + "startTime": "2026-08-14T14:30:25.700Z", + "endTime": "2026-08-14T14:30:25.700Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "user_right" + }, + "direction": true, + "startTime": "2026-08-14T14:30:25.702Z", + "endTime": "2026-08-14T14:30:25.702Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "userGetAllRights", + "payload": {}, + "direction": true, + "startTime": "2026-08-14T14:30:25.702Z", + "endTime": "2026-08-14T14:30:25.702Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:30:26.168Z", + "endTime": "2026-08-14T14:30:26.168Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "clientX": 655, + "clientY": 200, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:30:26.991Z", + "endTime": "2026-08-14T14:30:26.991Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "userGetRoleBasedRights", + "payload": { + "roleId": 6 + }, + "direction": true, + "startTime": "2026-08-14T14:30:27.832Z", + "endTime": "2026-08-14T14:30:27.832Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "title": "Next" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:30:28.448Z", + "endTime": "2026-08-14T14:30:28.448Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "clientX": 681, + "clientY": 616, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:30:31.308Z", + "endTime": "2026-08-14T14:30:31.308Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "userAssignRoleRights", + "payload": { + "roleId": 6, + "newRights": [ + "frontend.dashboard.templates.view" + ], + "deletedRights": [] + }, + "direction": true, + "startTime": "2026-08-14T14:30:36.051Z", + "endTime": "2026-08-14T14:30:36.051Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "name": "stepperModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:30:36.054Z", + "endTime": "2026-08-14T14:30:36.054Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "title": "Assign Rights" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:30:36.053Z", + "endTime": "2026-08-14T14:30:36.053Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "025efe7a-70ab-49ac-ba18-cf96b67b7f0a", + "direction": true, + "startTime": "2026-08-14T14:30:36.058Z", + "endTime": "2026-08-14T14:30:36.058Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "b5ecc41a-f45f-434d-b149-9b3e2063ac08", + "direction": true, + "startTime": "2026-08-14T14:30:36.058Z", + "endTime": "2026-08-14T14:30:36.058Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/users" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.135Z", + "endTime": "2026-08-14T14:30:39.135Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "userMonitorUnsubscribe", + "payload": {}, + "direction": true, + "startTime": "2026-08-14T14:30:39.139Z", + "endTime": "2026-08-14T14:30:39.139Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "2e816b4e-b833-4eaa-9d1a-a9bdf12272c5", + "direction": true, + "startTime": "2026-08-14T14:30:39.139Z", + "endTime": "2026-08-14T14:30:39.139Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "unsubscribeAppData", + "payload": "739dc6e4-26b4-4561-b605-f771a7c5caca", + "direction": true, + "startTime": "2026-08-14T14:30:39.139Z", + "endTime": "2026-08-14T14:30:39.139Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.149Z", + "endTime": "2026-08-14T14:30:39.149Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.151Z", + "endTime": "2026-08-14T14:30:39.151Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.151Z", + "endTime": "2026-08-14T14:30:39.151Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.151Z", + "endTime": "2026-08-14T14:30:39.151Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.151Z", + "endTime": "2026-08-14T14:30:39.151Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.151Z", + "endTime": "2026-08-14T14:30:39.151Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "clientX": 989, + "clientY": 5, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:30:39.942Z", + "endTime": "2026-08-14T14:30:39.942Z" + }, + { + "recordingId": 7, + "userId": 4, + "socketId": "VAQXt_4WTiJxz3NqAABj", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:30:40.260Z", + "endTime": "2026-08-14T14:30:40.260Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/810-copy-template.json b/backend/tests/regression_stories/810-copy-template.json new file mode 100644 index 000000000..f4da18f30 --- /dev/null +++ b/backend/tests/regression_stories/810-copy-template.json @@ -0,0 +1,455 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:37:28.632Z", + "traceCount": 32, + "recording": { + "name": "810-copy-template", + "status": "finished", + "startTime": "2026-08-14T14:32:06.043Z", + "userId": 3, + "participantSocketIds": [ + "1kZRaZRYenWyQEGoAABl" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:32:22.420Z" + }, + "traces": [ + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "recordingRefresh", + "payload": [ + { + "id": 8, + "name": "Recording 8/14/2026, 4:32:06 PM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:32:06.044Z", + "startTime": "2026-08-14T14:32:06.043Z", + "updatedAt": "2026-08-14T14:32:06.044Z", + "excludeEvents": null, + "participantSocketIds": [ + "1kZRaZRYenWyQEGoAABl" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:32:06.066Z", + "endTime": "2026-08-14T14:32:06.066Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:32:06.903Z", + "endTime": "2026-08-14T14:32:06.903Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/templates", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:32:11.111Z", + "endTime": "2026-08-14T14:32:11.111Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "0f93d44a-cd83-4b3b-8d35-544602565ead", + "direction": true, + "startTime": "2026-08-14T14:32:11.115Z", + "endTime": "2026-08-14T14:32:11.115Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "a8e7e69f-3d08-446e-929b-439734b6d3d9", + "direction": true, + "startTime": "2026-08-14T14:32:11.115Z", + "endTime": "2026-08-14T14:32:11.115Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "47153ff2-388f-4014-b6a3-30447b5aec91", + "direction": true, + "startTime": "2026-08-14T14:32:11.116Z", + "endTime": "2026-08-14T14:32:11.116Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "f4fff68b-af0f-48dc-90fd-db3ad69e3406", + "direction": true, + "startTime": "2026-08-14T14:32:11.115Z", + "endTime": "2026-08-14T14:32:11.115Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "f075490e-452e-4571-af7c-cf5bba374db0", + "direction": true, + "startTime": "2026-08-14T14:32:11.128Z", + "endTime": "2026-08-14T14:32:11.128Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "985b41fc-b7a5-4090-b8da-12a756cc252c", + "direction": true, + "startTime": "2026-08-14T14:32:11.128Z", + "endTime": "2026-08-14T14:32:11.128Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:32:11.132Z", + "endTime": "2026-08-14T14:32:11.132Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:32:11.131Z", + "endTime": "2026-08-14T14:32:11.131Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:32:11.132Z", + "endTime": "2026-08-14T14:32:11.132Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "icon": "globe", + "title": "Browse public templates" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:32:12.204Z", + "endTime": "2026-08-14T14:32:12.204Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "name": "publicTemplates", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:32:12.658Z", + "endTime": "2026-08-14T14:32:12.658Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "clientX": 1170, + "clientY": 195, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:32:14.144Z", + "endTime": "2026-08-14T14:32:14.144Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "templateCopy", + "payload": { + "sourceTemplateId": 1 + }, + "direction": true, + "startTime": "2026-08-14T14:32:15.738Z", + "endTime": "2026-08-14T14:32:15.738Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "action": "copy", + "params": {} + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-14T14:32:15.738Z", + "endTime": "2026-08-14T14:32:15.738Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "templateRefresh", + "payload": [ + { + "id": 2, + "name": "newtemp (copy)", + "type": 4, + "public": false, + "userId": 3, + "deleted": false, + "sourceId": 1, + "createdAt": "2026-08-14T14:32:15.768Z", + "updatedAt": "2026-08-14T14:32:15.768Z", + "description": "hi", + "defaultLanguage": "en" + } + ], + "direction": false, + "startTime": "2026-08-14T14:32:15.801Z", + "endTime": "2026-08-14T14:32:15.801Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "name": "publicTemplates", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:32:19.352Z", + "endTime": "2026-08-14T14:32:19.352Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "title": "Close" + }, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:32:19.354Z", + "endTime": "2026-08-14T14:32:19.354Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard", + "from": "/dashboard/templates" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.552Z", + "endTime": "2026-08-14T14:32:20.552Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "2796c54e-f7ab-49cf-b491-880ec487c3c8", + "direction": true, + "startTime": "2026-08-14T14:32:20.563Z", + "endTime": "2026-08-14T14:32:20.563Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "d1d7277c-7db6-43f6-a851-cee22d0efae2", + "direction": true, + "startTime": "2026-08-14T14:32:20.564Z", + "endTime": "2026-08-14T14:32:20.564Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "unsubscribeAppData", + "payload": "78817fd0-faaa-4546-b30e-503c6096dad0", + "direction": true, + "startTime": "2026-08-14T14:32:20.565Z", + "endTime": "2026-08-14T14:32:20.565Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.578Z", + "endTime": "2026-08-14T14:32:20.578Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.588Z", + "endTime": "2026-08-14T14:32:20.588Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "study" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.589Z", + "endTime": "2026-08-14T14:32:20.589Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "document" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.589Z", + "endTime": "2026-08-14T14:32:20.589Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.589Z", + "endTime": "2026-08-14T14:32:20.589Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "subscribeAppData", + "payload": { + "table": "tag_set" + }, + "direction": true, + "startTime": "2026-08-14T14:32:20.588Z", + "endTime": "2026-08-14T14:32:20.588Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "clientX": 1034, + "clientY": 3, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:32:21.527Z", + "endTime": "2026-08-14T14:32:21.527Z" + }, + { + "recordingId": 8, + "userId": 3, + "socketId": "1kZRaZRYenWyQEGoAABl", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:32:21.565Z", + "endTime": "2026-08-14T14:32:21.565Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/815-edit-source-template.json b/backend/tests/regression_stories/815-edit-source-template.json new file mode 100644 index 000000000..1124230fc --- /dev/null +++ b/backend/tests/regression_stories/815-edit-source-template.json @@ -0,0 +1,397 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:37:31.715Z", + "traceCount": 25, + "recording": { + "name": "815-edit-source-template", + "status": "finished", + "startTime": "2026-08-14T14:34:14.265Z", + "userId": 4, + "participantSocketIds": [ + "dPOdV8vggcPC7QXKAABn" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:34:32.376Z" + }, + "traces": [ + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "recordingRefresh", + "payload": [ + { + "id": 9, + "name": "Recording 8/14/2026, 4:34:14 PM", + "status": "recording", + "userId": 4, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:34:14.266Z", + "startTime": "2026-08-14T14:34:14.265Z", + "updatedAt": "2026-08-14T14:34:14.266Z", + "excludeEvents": null, + "participantSocketIds": [ + "dPOdV8vggcPC7QXKAABn" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:34:14.280Z", + "endTime": "2026-08-14T14:34:14.280Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:34:15.699Z", + "endTime": "2026-08-14T14:34:15.699Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1032, + "clientY": 162, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:34:17.629Z", + "endTime": "2026-08-14T14:34:17.629Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "clientX": 114, + "clientY": 188, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:34:20.529Z", + "endTime": "2026-08-14T14:34:20.529Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/templates", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:34:21.713Z", + "endTime": "2026-08-14T14:34:21.713Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "unsubscribeAppData", + "payload": "7c954953-18c1-4115-b423-7ba7672d386d", + "direction": true, + "startTime": "2026-08-14T14:34:21.725Z", + "endTime": "2026-08-14T14:34:21.725Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "unsubscribeAppData", + "payload": "93e423f2-df06-4d68-a64c-ee9dcaeaff85", + "direction": true, + "startTime": "2026-08-14T14:34:21.725Z", + "endTime": "2026-08-14T14:34:21.725Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "unsubscribeAppData", + "payload": "7373a8c6-2c89-44fe-a056-6403c9e5857b", + "direction": true, + "startTime": "2026-08-14T14:34:21.725Z", + "endTime": "2026-08-14T14:34:21.725Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "unsubscribeAppData", + "payload": "81f4054a-b51e-4b8f-aaf5-e737bcac4cce", + "direction": true, + "startTime": "2026-08-14T14:34:21.736Z", + "endTime": "2026-08-14T14:34:21.736Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "unsubscribeAppData", + "payload": "a5652c98-867d-47c8-9d0c-6cc1be9c3213", + "direction": true, + "startTime": "2026-08-14T14:34:21.725Z", + "endTime": "2026-08-14T14:34:21.725Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "unsubscribeAppData", + "payload": "32d58783-2b34-4ec8-8548-0736421b0925", + "direction": true, + "startTime": "2026-08-14T14:34:21.737Z", + "endTime": "2026-08-14T14:34:21.737Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:34:21.751Z", + "endTime": "2026-08-14T14:34:21.751Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:34:21.756Z", + "endTime": "2026-08-14T14:34:21.756Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:34:21.757Z", + "endTime": "2026-08-14T14:34:21.757Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "templateGetLanguages", + "payload": { + "templateId": 1 + }, + "direction": true, + "startTime": "2026-08-14T14:34:23.639Z", + "endTime": "2026-08-14T14:34:23.639Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "action": "edit", + "params": {} + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-14T14:34:23.646Z", + "endTime": "2026-08-14T14:34:23.646Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1201, + "clientY": 191, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:34:23.878Z", + "endTime": "2026-08-14T14:34:23.878Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:34:24.128Z", + "endTime": "2026-08-14T14:34:24.128Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "clientX": 869, + "clientY": 258, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:34:25.111Z", + "endTime": "2026-08-14T14:34:25.111Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1064, + "clientY": 479, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:34:27.777Z", + "endTime": "2026-08-14T14:34:27.777Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "appDataUpdate", + "payload": { + "data": { + "id": 1, + "name": "newtemp", + "type": 4, + "description": "hi 2", + "defaultLanguage": "en" + }, + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:34:28.069Z", + "endTime": "2026-08-14T14:34:28.069Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "templateRefresh", + "payload": [ + { + "id": 1, + "name": "newtemp", + "type": 4, + "public": true, + "userId": 4, + "deleted": false, + "sourceId": null, + "createdAt": "2026-08-14T14:20:32.906Z", + "updatedAt": "2026-08-14T14:34:28.075Z", + "description": "hi 2", + "defaultLanguage": "en" + } + ], + "direction": false, + "startTime": "2026-08-14T14:34:28.085Z", + "endTime": "2026-08-14T14:34:28.085Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "name": "coordinatorModal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:34:28.089Z", + "endTime": "2026-08-14T14:34:28.089Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:34:31.161Z", + "endTime": "2026-08-14T14:34:31.161Z" + }, + { + "recordingId": 9, + "userId": 4, + "socketId": "dPOdV8vggcPC7QXKAABn", + "action": "stats", + "payload": { + "data": { + "clientX": 1119, + "clientY": 6, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:34:31.627Z", + "endTime": "2026-08-14T14:34:31.627Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/820-detach-template.json b/backend/tests/regression_stories/820-detach-template.json new file mode 100644 index 000000000..bf51738bc --- /dev/null +++ b/backend/tests/regression_stories/820-detach-template.json @@ -0,0 +1,521 @@ +{ + "schemaVersion": 1, + "exportedAt": "2026-08-14T14:37:34.013Z", + "traceCount": 31, + "recording": { + "name": "820-detach-template", + "status": "finished", + "startTime": "2026-08-14T14:35:59.100Z", + "userId": 3, + "participantSocketIds": [ + "giMjs6OlVS_ukyufAABp" + ], + "excludeEvents": null, + "endTime": "2026-08-14T14:36:45.228Z" + }, + "traces": [ + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "recordingRefresh", + "payload": [ + { + "id": 10, + "name": "Recording 8/14/2026, 4:35:59 PM", + "status": "recording", + "userId": 3, + "deleted": false, + "endTime": null, + "createdAt": "2026-08-14T14:35:59.100Z", + "startTime": "2026-08-14T14:35:59.100Z", + "updatedAt": "2026-08-14T14:35:59.100Z", + "excludeEvents": null, + "participantSocketIds": [ + "giMjs6OlVS_ukyufAABp" + ] + } + ], + "direction": false, + "startTime": "2026-08-14T14:35:59.114Z", + "endTime": "2026-08-14T14:35:59.114Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:36:00.062Z", + "endTime": "2026-08-14T14:36:00.062Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "to": "/dashboard/templates", + "from": "/dashboard" + }, + "action": "routeStep" + }, + "direction": true, + "startTime": "2026-08-14T14:36:01.908Z", + "endTime": "2026-08-14T14:36:01.908Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "unsubscribeAppData", + "payload": "2abd9795-69b3-457b-aaa6-7d37ba945bb0", + "direction": true, + "startTime": "2026-08-14T14:36:01.916Z", + "endTime": "2026-08-14T14:36:01.916Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "unsubscribeAppData", + "payload": "314c2164-4f29-4cc9-9f5a-c24d4b5193af", + "direction": true, + "startTime": "2026-08-14T14:36:01.916Z", + "endTime": "2026-08-14T14:36:01.916Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "unsubscribeAppData", + "payload": "dac01d18-6657-4075-bcc2-cc8d3617629f", + "direction": true, + "startTime": "2026-08-14T14:36:01.917Z", + "endTime": "2026-08-14T14:36:01.917Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "unsubscribeAppData", + "payload": "0bbe355d-b371-42cb-8632-300605795565", + "direction": true, + "startTime": "2026-08-14T14:36:01.917Z", + "endTime": "2026-08-14T14:36:01.917Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "unsubscribeAppData", + "payload": "30892ecf-6112-49e4-a381-a7f583947f7b", + "direction": true, + "startTime": "2026-08-14T14:36:01.917Z", + "endTime": "2026-08-14T14:36:01.917Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "unsubscribeAppData", + "payload": "73af8675-6654-48bc-bec9-f00220719c9f", + "direction": true, + "startTime": "2026-08-14T14:36:01.917Z", + "endTime": "2026-08-14T14:36:01.917Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:36:01.928Z", + "endTime": "2026-08-14T14:36:01.928Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:36:01.933Z", + "endTime": "2026-08-14T14:36:01.933Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "subscribeAppData", + "payload": { + "table": "template" + }, + "direction": true, + "startTime": "2026-08-14T14:36:01.934Z", + "endTime": "2026-08-14T14:36:01.934Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "action": "openUpdateModal", + "params": {} + }, + "action": "actionClick" + }, + "direction": true, + "startTime": "2026-08-14T14:36:03.443Z", + "endTime": "2026-08-14T14:36:03.443Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 1273, + "clientY": 189, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:03.729Z", + "endTime": "2026-08-14T14:36:03.729Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "name": "template-update-modal", + "props": {} + }, + "action": "showModal" + }, + "direction": true, + "startTime": "2026-08-14T14:36:03.899Z", + "endTime": "2026-08-14T14:36:03.899Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 768, + "clientY": 185, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:05.964Z", + "endTime": "2026-08-14T14:36:05.964Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 820, + "clientY": 217, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:24.165Z", + "endTime": "2026-08-14T14:36:24.165Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 817, + "clientY": 222, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:25.915Z", + "endTime": "2026-08-14T14:36:25.915Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 817, + "clientY": 223, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:28.681Z", + "endTime": "2026-08-14T14:36:28.681Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 817, + "clientY": 224, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:30.615Z", + "endTime": "2026-08-14T14:36:30.615Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 817, + "clientY": 225, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:31.763Z", + "endTime": "2026-08-14T14:36:31.763Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 885, + "clientY": 246, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:37.465Z", + "endTime": "2026-08-14T14:36:37.465Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "name": "template-update-modal", + "props": {} + }, + "action": "hideModal" + }, + "direction": true, + "startTime": "2026-08-14T14:36:37.689Z", + "endTime": "2026-08-14T14:36:37.689Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "templateCopy", + "payload": { + "force": true, + "detachTemplateId": 2, + "sourceTemplateId": 1 + }, + "direction": true, + "startTime": "2026-08-14T14:36:37.691Z", + "endTime": "2026-08-14T14:36:37.691Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": {}, + "action": "clickCardButton" + }, + "direction": true, + "startTime": "2026-08-14T14:36:37.691Z", + "endTime": "2026-08-14T14:36:37.691Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "templateRefresh", + "payload": [ + { + "id": 3, + "name": "newtemp (copy 2)", + "type": 4, + "public": false, + "userId": 3, + "deleted": false, + "sourceId": 1, + "createdAt": "2026-08-14T14:36:37.711Z", + "updatedAt": "2026-08-14T14:36:37.711Z", + "description": "hi 2", + "defaultLanguage": "en" + }, + { + "id": 2, + "name": "newtemp (copy)", + "type": 4, + "public": false, + "userId": 3, + "deleted": false, + "sourceId": 1, + "createdAt": "2026-08-14T14:32:15.768Z", + "updatedAt": "2026-08-14T14:36:37.718Z", + "description": "hi", + "defaultLanguage": "en" + }, + { + "id": 2, + "name": "newtemp (copy)", + "type": 4, + "public": false, + "userId": 3, + "deleted": false, + "sourceId": null, + "createdAt": "2026-08-14T14:32:15.768Z", + "updatedAt": "2026-08-14T14:36:37.731Z", + "description": "hi", + "defaultLanguage": "en" + } + ], + "direction": false, + "startTime": "2026-08-14T14:36:37.737Z", + "endTime": "2026-08-14T14:36:37.737Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 878, + "clientY": 259, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:38.663Z", + "endTime": "2026-08-14T14:36:38.663Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:36:41.743Z", + "endTime": "2026-08-14T14:36:41.743Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "hidden": false + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:36:43.131Z", + "endTime": "2026-08-14T14:36:43.131Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "clientX": 1057, + "clientY": 2, + "scrollX": 0, + "scrollY": 0 + }, + "action": "mouseMove" + }, + "direction": true, + "startTime": "2026-08-14T14:36:44.231Z", + "endTime": "2026-08-14T14:36:44.231Z" + }, + { + "recordingId": 10, + "userId": 3, + "socketId": "giMjs6OlVS_ukyufAABp", + "action": "stats", + "payload": { + "data": { + "hidden": true + }, + "action": "tabVisibilityChange" + }, + "direction": true, + "startTime": "2026-08-14T14:36:44.348Z", + "endTime": "2026-08-14T14:36:44.348Z" + } + ] +} \ No newline at end of file diff --git a/backend/tests/regression_stories/990-delete-document.json b/backend/tests/regression_stories/990-delete-document.json new file mode 100644 index 000000000..40c73a397 --- /dev/null +++ b/backend/tests/regression_stories/990-delete-document.json @@ -0,0 +1 @@ +{"schemaVersion": 1, "exportedAt": "2026-08-10T23:20:34.602Z", "traceCount": 10, "recording": {"name": "990-delete-document", "status": "finished", "startTime": "2026-08-10T23:18:02.409Z", "userId": 4, "participantSocketIds": ["HfkJbcIP3cSFqBocAAAL"], "excludeEvents": null, "endTime": "2026-08-10T23:18:09.892Z"}, "traces": [{"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "recordingRefresh", "payload": [{"id": 10, "name": "Recording 8/11/2026, 1:18:02 AM", "status": "recording", "userId": 4, "deleted": false, "endTime": null, "createdAt": "2026-08-10T23:18:02.410Z", "startTime": "2026-08-10T23:18:02.409Z", "updatedAt": "2026-08-10T23:18:02.410Z", "excludeEvents": null, "participantSocketIds": ["HfkJbcIP3cSFqBocAAAL"]}], "direction": false, "startTime": "2026-08-10T23:18:02.420Z", "endTime": "2026-08-10T23:18:02.420Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"hidden": false}, "action": "tabVisibilityChange"}, "direction": true, "startTime": "2026-08-10T23:18:04.357Z", "endTime": "2026-08-10T23:18:04.357Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"action": "deleteDoc", "params": {"documentId": 3}}, "action": "actionClick"}, "direction": true, "startTime": "2026-08-10T23:18:05.958Z", "endTime": "2026-08-10T23:18:05.958Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"name": "confirmDelete Document", "props": {}}, "action": "showModal"}, "direction": true, "startTime": "2026-08-10T23:18:06.423Z", "endTime": "2026-08-10T23:18:06.423Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"name": "confirmDelete Document", "props": {}}, "action": "hideModal"}, "direction": true, "startTime": "2026-08-10T23:18:07.472Z", "endTime": "2026-08-10T23:18:07.472Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "appDataUpdate", "payload": {"data": {"id": 3, "deleted": true}, "table": "document"}, "direction": true, "startTime": "2026-08-10T23:18:07.473Z", "endTime": "2026-08-10T23:18:07.473Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "documentRefresh", "payload": [{"id": 3, "hash": "281da0da-fcfc-4a30-91c9-eaf8087d03bd", "name": "test_doc", "type": 1, "public": false, "userId": 4, "deleted": true, "createdAt": "2026-08-10T23:14:22.490Z", "projectId": 1, "updatedAt": "2026-08-10T23:18:07.477Z", "submissionId": null, "hideInFrontend": false, "readyForReview": false, "studyUsageCount": 0, "originalFilename": null, "parentDocumentId": null, "uploadedByUserId": null}], "direction": false, "startTime": "2026-08-10T23:18:07.515Z", "endTime": "2026-08-10T23:18:07.515Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"clientX": 929, "clientY": 174, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-10T23:18:07.563Z", "endTime": "2026-08-10T23:18:07.563Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"clientX": 1136, "clientY": 85, "scrollX": 0, "scrollY": 0}, "action": "mouseMove"}, "direction": true, "startTime": "2026-08-10T23:18:08.565Z", "endTime": "2026-08-10T23:18:08.565Z"}, {"recordingId": 10, "userId": 4, "socketId": "HfkJbcIP3cSFqBocAAAL", "action": "stats", "payload": {"data": {"hidden": true}, "action": "tabVisibilityChange"}, "direction": true, "startTime": "2026-08-10T23:18:08.911Z", "endTime": "2026-08-10T23:18:08.911Z"}]} \ No newline at end of file diff --git a/backend/utils/recording-recovery.js b/backend/utils/recording-recovery.js new file mode 100644 index 000000000..e513ca6ff --- /dev/null +++ b/backend/utils/recording-recovery.js @@ -0,0 +1,70 @@ +'use strict'; + +/** + * Stop and flag the recording belonging to a socket that dropped mid-capture. + * Only that socket's recording is stopped — other active recordings, including + * other admins' batches, keep running. A start-recording claim with no + * recordingId yet has nothing to stop and expires on its own. + * @param {Object} server - CARE server instance; uses activeRecordings, availSockets, db.models, io and logger + * @param {Object} socket - The disconnecting Socket.IO socket + * @returns {Promise} + */ +async function flagDisconnectedRecording(server, socket) { + try { + const activeRecordings = server.activeRecordings || {}; + const entry = activeRecordings[socket.id]; + if (!entry || !entry.recordingId) { + return; + } + + const recorder = server.availSockets[socket.id]['RecorderSocket']; + if (!recorder) { + return; + } + + await recorder.stopRecording( + { socketId: socket.id, status: "disconnected" }, + { internal: true } + ); + + const ownerSocket = server.io.sockets.sockets.get(entry.ownerSocketId); + if (ownerSocket) { + ownerSocket.emit("toast", { + title: "Recording stopped", + message: "A recorded participant disconnected — recording flagged as disconnected.", + variant: "warning", + }); + } + } catch (e) { + server.logger.warn("Failed to flag disconnected recording: " + e); + } +} + +/** + * Mark any recordings still in "recording" status as "interrupted". These are + * recordings whose server died mid-capture — the in-memory activeRecordings map + * is gone but the DB rows were never closed out. Runs once at server startup. + * @param {Object} server - CARE server instance; uses db.models and logger + * @returns {Promise} + */ +async function recoverInterruptedRecordings(server) { + try { + const stale = await server.db.models["recording"].getAllByKey("status", "recording"); + for (const rec of stale) { + await server.db.models["recording"].updateById(rec.id, { + status: "interrupted", + endTime: rec.endTime || new Date(), + }); + server.logger.warn( + `Marked recording ${rec.id} as interrupted (server was not running cleanly when stopped)` + ); + } + if (stale.length > 0) { + server.logger.info(`Recovered ${stale.length} interrupted recording(s) on startup`); + } + } catch (e) { + server.logger.error("Failed to recover interrupted recordings: " + e); + } +} + +module.exports = { flagDisconnectedRecording, recoverInterruptedRecordings }; diff --git a/backend/utils/replay-auth.js b/backend/utils/replay-auth.js new file mode 100644 index 000000000..60a78d37f --- /dev/null +++ b/backend/utils/replay-auth.js @@ -0,0 +1,155 @@ +'use strict'; + +const crypto = require('crypto'); +const { io: SocketIOClient } = require('socket.io-client'); + + +/** + * Sign a session ID using the express-session HMAC-SHA256 scheme. + * @param {string} sid - Raw session identifier + * @param {string} secret - The express-session secret (SESSION_SECRET) + * @returns {string} Signed session ID in format s:. + */ +function signSessionId(sid, secret) { + const signature = crypto + .createHmac('sha256', secret) + .update(sid) + .digest('base64') + .replace(/=+$/, ''); + return `s:${sid}.${signature}`; +} + +// Replay clients are given the same connect timeout for the handshake and for +// the server's ready signal. +const CONNECT_TIMEOUT_MS = 10000; + +/** + * Delete one session row from the store. + * @param {Object} server - CARE server instance + * @param {string} sid - Raw session identifier + * @returns {Promise} + */ +async function deleteSession(server, sid) { + await server.db.sequelize.query( + `DELETE FROM "Sessions" WHERE "sid" = :sid`, + { replacements: { sid } } + ); +} + +/** + * Create an authenticated socket.io-client by writing a Passport + * session directly to the session store. + * @param {Object} server - CARE server instance + * @param {Object} user - User row from DB + * @param {string} serverUrl - Target server URL + * @returns {Promise} Connected client + * @throws {Error} If the client fails to connect + */ +async function createAuthenticatedClient(server, user, serverUrl) { + const sid = crypto.randomBytes(18).toString('hex'); + + const sessionData = JSON.stringify({ + cookie: { + originalMaxAge: null, + expires: null, + httpOnly: true, + path: '/', + }, + passport: { + user: { + id: user.id, + firstName: user.firstName, + lastName: user.lastName, + userName: user.userName, + email: user.email, + rolesUpdatedAt: user.rolesUpdatedAt || null, + }, + }, + }); + + // Replay clients mint their own session cookies, so this must be the same + // secret express-session verifies with in Server.js (#initSessionManagement) + // — otherwise the middleware rejects them and replay can't authenticate. + const secret = process.env.SESSION_SECRET; + if (!secret) { + throw new Error('SESSION_SECRET is not set — replay cannot mint session cookies'); + } + + const expires = new Date(Date.now() + 24 * 60 * 60 * 1000); + await server.db.sequelize.query( + `INSERT INTO "Sessions" ("sid", "expires", "data", "createdAt", "updatedAt") + VALUES (:sid, :expires, :data, :now, :now)`, + { + replacements: { + sid, + expires: expires.toISOString(), + data: sessionData, + now: new Date().toISOString(), + }, + type: server.db.sequelize.QueryTypes.INSERT, + } + ); + + const signedSid = signSessionId(sid, secret); + const cookie = `connect.sid=${encodeURIComponent(signedSid)}`; + + const client = SocketIOClient(serverUrl, { + extraHeaders: { cookie }, + reconnection: false, + timeout: CONNECT_TIMEOUT_MS, + }); + + try { + return await new Promise((resolve, reject) => { + // Wait for the server's "ready" signal rather than a fixed delay. The + // server emits this once all per-socket handlers are initialized and + // listening, so the first replayed trace can't race handler setup. + const timer = setTimeout(() => { + reject(new Error(`Replay client for user ${user.id} connected but got no ready signal within ${CONNECT_TIMEOUT_MS}ms`)); + }, CONNECT_TIMEOUT_MS); + client.on('ready', () => { + clearTimeout(timer); + resolve(client); + }); + client.on('connect_error', (err) => { + clearTimeout(timer); + reject(new Error(`Replay auth failed for user ${user.id}: ${err.message}`)); + }); + }); + } catch (err) { + // The session row is written before connecting, so a failed connect + // would leave it behind for its full lifetime. Clean up our own mess. + await deleteSession(server, sid).catch(() => { /* best effort */ }); + client.disconnect(); + throw err; + } +} + +/** + * Disconnect a replay client and remove its session from the store. + * @param {Object} server - CARE server instance + * @param {import("socket.io-client").Socket} client - The replay client to clean up + * @returns {Promise} + */ +async function cleanupSession(server, client) { + if (!client) { + return; + } + try { + const cookie = client.io.opts.extraHeaders?.cookie || ''; + const match = cookie.match(/connect\.sid=s%3A([^.]+)\./); + if (match) { + await deleteSession(server, match[1]); + } + client.disconnect(); + } catch (err) { + // Best-effort: a failure here won't corrupt replay results, but a failed + // DELETE leaves an orphaned row in "Sessions", so surface it. + server.logger.warn("Replay session cleanup failed: " + err.message); + } +} + +module.exports = { + createAuthenticatedClient, + cleanupSession, +}; \ No newline at end of file diff --git a/backend/utils/replay-sessions.js b/backend/utils/replay-sessions.js new file mode 100644 index 000000000..a73c8cc91 --- /dev/null +++ b/backend/utils/replay-sessions.js @@ -0,0 +1,94 @@ +'use strict'; + +/** + * Group a recording's traces into one session per originating socket. Traces + * with no userId are skipped — they can't be replayed as anyone. Traces + * missing a socketId fall back to a per-user key so they still form a session. + * @param {Array} traces - Trace rows sorted by startTime + * @returns {Map}>} Map of session key to that session's user and traces + */ +function groupTracesBySocket(traces) { + const map = new Map(); + for (const t of traces) { + if (!t.userId) { + continue; + } + const key = t.socketId || `user-${t.userId}`; + if (!map.has(key)) { + map.set(key, {userId: t.userId, traces: []}); + } + map.get(key).traces.push(t); + } + return map; +} + +/** + * Pick `count` sessions from the pool with wraparound, so a level of any + * size can be built from a pool of N sessions. + * @param {{sessions: Array}} pool - Session pool + * @param {number} count - How many sessions this level runs + * @returns {Array} The level's session list + */ +function buildActiveSessions(pool, count) { + const N = pool.sessions.length; + if (N === 0) { + return []; + } + const activeSessions = []; + for (let i = 0; i < count; i++) { + activeSessions.push(pool.sessions[i % N]); + } + return activeSessions; +} + +/** + * Restore Buffers that JSON.stringify and JSONB storage flatten into + * {type:'Buffer', data:[…]}. Traces carrying file bytes (documentAdd and + * friends) hold a Buffer when captured, but Postgres has no binary type inside + * JSONB, so what comes back out is a plain object — which the handler rejects. + * Walks the whole payload rather than a known key, since any event may nest + * file bytes anywhere. + * @param {*} value - Any value from a stored or parsed trace payload + * @returns {*} The same structure with Buffer-shaped objects converted back to Buffers + */ +function reviveBuffers(value) { + if (Array.isArray(value)) { + return value.map(reviveBuffers); + } + if (value && typeof value === 'object') { + if (value.type === 'Buffer' && Array.isArray(value.data)) { + return Buffer.from(value.data); + } + const out = {}; + for (const [k, v] of Object.entries(value)) { + out[k] = reviveBuffers(v); + } + return out; + } + return value; +} + +/** + * Collect the hash each row had at capture time, from a recording's incoming + * Refresh traces. Keyed "table:id" to match what the replay observes live. + * @param {Array} rawTraces - All of a recording's traces, both directions + * @returns {Map} "table:id" to the hash recorded for that row + */ +function extractRecordedHashes(rawTraces) { + const recorded = new Map(); + for (const t of rawTraces) { + if (!t || t.direction !== false || typeof t.action !== 'string' || !t.action.endsWith('Refresh')) { + continue; + } + const records = Array.isArray(t.payload) ? t.payload : [t.payload]; + const table = t.action.replace('Refresh', ''); + for (const r of records) { + if (r && r.id != null && typeof r.hash === 'string') { + recorded.set(`${table}:${r.id}`, r.hash); + } + } + } + return recorded; +} + +module.exports = {groupTracesBySocket, buildActiveSessions, reviveBuffers, extractRecordedHashes}; diff --git a/backend/utils/replay-worker.js b/backend/utils/replay-worker.js new file mode 100644 index 000000000..321d2892d --- /dev/null +++ b/backend/utils/replay-worker.js @@ -0,0 +1,239 @@ +'use strict'; + +const { createAuthenticatedClient, cleanupSession } = require('./replay-auth'); + +// How long to wait after each trace for the Refresh events it triggered. Long +// enough for a local round-trip, short enough not to dominate replay time — +// a slower Refresh than this is not attributed to its trace. +const DB_CHANGE_WINDOW_MS = 50; + +/** + * Emit a socket event and wait for the server acknowledgement. + * @param {import("socket.io-client").Socket} client - Connected socket client + * @param {string} action - Event name to emit + * @param {Object} payload - Event payload + * @param {number} timeoutMs - Max wait time for ack + * @returns {Promise} The server's response, or {success: false, timedOut: true} if it never acked + */ +function emitWithTimeout(client, action, payload, timeoutMs) { + return new Promise((resolve) => { + const timer = setTimeout(() => { + resolve({ success: false, timedOut: true, message: `No ack within ${timeoutMs}ms` }); + }, timeoutMs); + + // Only null/undefined become {}; a payload of 0, false or "" is real + // data and must be sent as recorded. + client.emit(action, payload === null || payload === undefined ? {} : payload, (response) => { + clearTimeout(timer); + resolve(response); + }); + }); +} + +/** + * Rewrite recorded hashes in a payload to the ones this replay actually + * produced. A recording carries the hashes from its capture run, but + * MetaModel.add generates a fresh uuid on every insert, so a trace that looks + * a row up by hash would miss. Only hashes we have observed on a Refresh + * broadcast are swapped — anything unknown is left exactly as recorded, so a + * miss degrades to current behaviour rather than corrupting the payload. + * @param {*} value - Any value from a trace payload + * @param {Map} hashMap - Recorded hash to replayed hash + * @returns {*} The same structure with known hashes replaced + */ +function remapHashes(value, hashMap) { + if (hashMap.size === 0) { + return value; + } + if (typeof value === 'string') { + return hashMap.has(value) ? hashMap.get(value) : value; + } + if (Array.isArray(value)) { + return value.map(v => remapHashes(v, hashMap)); + } + if (value && typeof value === 'object' && !Buffer.isBuffer(value)) { + const out = {}; + for (const [k, v] of Object.entries(value)) { + out[k] = remapHashes(v, hashMap); + } + return out; + } + return value; +} + +/** + * Replay a single user's traces through an authenticated socket connection. + * @param {Object} server - CARE server instance + * @param {Object} user - User row from DB + * @param {Array} traces - Trace rows (direction: true only), sorted by startTime + * @param {string} serverUrl - Target server URL + * @param {string} timingMode - "realtime" to preserve original delays, "fast" to skip them + * @param {number} [ackTimeout=2000] - Max wait time in ms for the server to ack each trace + * @param {Function} [onProgress=null] - Called once per completed trace, for progress reporting + * @param {Map|null} [recordedHashes=null] - "table:id" to the hash that row had at capture time; used to rewrite stale hashes in payloads + * @returns {Promise} Results with pass/fail counts, errors, latencies, and DB changes + * @throws {Error} If user is missing or has no id + */ +async function replayUserTraces(server, user, traces, serverUrl, timingMode, ackTimeout = 2000, onProgress = null, recordedHashes = null, observedHashes = new Map()) { + // The pool builders filter out sessions with no resolvable user, but this + // is exported and can't assume its caller did that. + if (!user || !user.id) { + throw new Error('replayUserTraces requires a user with an id'); + } + const results = { + userId: user.id, + userName: user.userName, + total: traces.length, + passed: 0, + failed: 0, + // Traces the server never acked. Kept apart from failures: many CARE + // events are fire-and-forget, so silence isn't necessarily a fault — + // but a handler that has stopped responding lands here too, so the + // list is worth reading rather than ignoring. + noAck: 0, + noAckTraces: [], + errors: [], + latencies: [], + }; + + let client; + try { + client = await createAuthenticatedClient(server, user, serverUrl); + } catch (err) { + results.failed = traces.length; + // No ts: the connection never opened, so there's nothing to timestamp. + results.errors.push({ action: 'connect', message: err.message }); + return results; + } + + try { + let pendingDbChanges = []; + + // Rows the server created during this replay, keyed by "table:id". A + // recording carries the hashes from its capture run, but MetaModel.add + // generates a fresh uuid on every insert, so those are stale here. + // Ids replay deterministically (fixed suite order on a fresh database), + // so the id is what links a recorded row to its replayed counterpart. + + + client.onAny((eventName, ...args) => { + if (eventName.endsWith('Refresh')) { + const records = Array.isArray(args[0]) ? args[0] : [args[0]]; + for (const r of records) { + if (r && r.id != null && typeof r.hash === 'string') { + observedHashes.set(`${eventName.replace('Refresh', '')}:${r.id}`, r.hash); + } + } + pendingDbChanges.push({ + table: eventName.replace('Refresh', ''), + recordCount: records.length, + records: records.map(r => ({ + id: r?.id, + fields: r ? Object.keys(r).filter(k => k !== 'id') : [], + })), + }); + } + }); + + // Recorded hash -> the hash that row has in this replay. Both sides key + // on "table:id": recordedHashes comes from the recording's Refresh + // traces, observedHashes from the ones this run received. Ids replay + // deterministically, so the id is what links them. + const hashMap = new Map(); + const rememberHashes = () => { + if (!recordedHashes) { + return; + } + for (const [key, oldHash] of recordedHashes) { + const newHash = observedHashes.get(key); + if (newHash && newHash !== oldHash) { + hashMap.set(oldHash, newHash); + } + } + }; + + let prevTime = traces.length > 0 ? new Date(traces[0].startTime).getTime() : 0; + + for (const trace of traces) { + if (timingMode === 'realtime') { + const traceTime = new Date(trace.startTime).getTime(); + const delay = traceTime - prevTime; + if (delay > 0) { + await new Promise(resolve => setTimeout(resolve, delay)); + } + prevTime = traceTime; + } + + pendingDbChanges = []; + + // Declared outside the try so the catch below can timestamp the + // failure too. + const start = Date.now(); + try { + rememberHashes(); + + const ack = await emitWithTimeout(client, trace.action, remapHashes(trace.payload, hashMap), ackTimeout); + const latency = Date.now() - start; + + // Let any Refresh events triggered by this trace arrive before + // we snapshot them; anything slower than this window is missed. + await new Promise(resolve => setTimeout(resolve, DB_CHANGE_WINDOW_MS)); + const dbChanges = [...pendingDbChanges]; + + if (ack && ack.timedOut) { + // No response within the timeout. Not the same as a + // rejection: many CARE events are fire-and-forget and never + // ack at all, so failing the story would be wrong. Counted + // separately so a genuinely hanging handler still shows up. + results.noAck++; + results.noAckTraces.push({ + traceId: trace.id, + action: trace.action, + }); + } else if (ack && ack.success === false) { + results.failed++; + results.errors.push({ + traceId: trace.id, + action: trace.action, + message: ack.message || 'Server returned success: false', + dbChanges, + }); + } else { + results.passed++; + results.latencies.push({ + ts: start, + traceId: trace.id, + action: trace.action, + latency, + dbChanges, + }); + } + } catch (err) { + results.failed++; + results.errors.push({ + ts: start, + traceId: trace.id, + action: trace.action, + message: err.message, + dbChanges: [], + }); + } + + if (onProgress) { + try { + onProgress(); + } catch (e) { + // progress reporting must never break replay + } + } + } + } finally { + await cleanupSession(server, client); + } + + return results; +} + +module.exports = { + replayUserTraces, +}; \ No newline at end of file diff --git a/backend/webserver/Server.js b/backend/webserver/Server.js index 1628873a5..c27b0960a 100644 --- a/backend/webserver/Server.js +++ b/backend/webserver/Server.js @@ -20,6 +20,7 @@ const nodemailer = require('nodemailer'); const { setupDevAdmin } = require('./utils/devAdmin'); const { initializeAuth } = require("./auth"); const { parseUserAgent } = require("../utils/helper/generic"); +const { flagDisconnectedRecording, recoverInterruptedRecordings } = require("../utils/recording-recovery"); /** * Defines Express Webserver of Content Server @@ -377,11 +378,33 @@ module.exports = class Server { this.logger.debug("Socket connect: " + socket.id); - Object.entries(this.sockets).map(async ([socketName, socketClass]) => { - this.availSockets[socket.id][socketName] = new socketClass(this, this.io, socket); + await Promise.all( + Object.entries(this.sockets).map(async ([socketName, socketClass]) => { + this.availSockets[socket.id][socketName] = new socketClass(this, this.io, socket); + await this.availSockets[socket.id][socketName].init(); + }) + ); + + // All per-socket handlers are now initialized and listening, so it's + // safe for clients (including replay clients) to start emitting events. + socket.emit("ready"); + + // Session-change notifications are admin-only: broadcasting them to + // every client would leak platform-wide connect/disconnect activity + // (who is online, when, how many) to any logged-in user. Admins join + // a room once at connect so the broadcast stays cheap. + const recorderSocket = this.availSockets[socket.id]["RecorderSocket"]; + if (recorderSocket && await recorderSocket.isAdmin()) { + socket.join("admins"); + } + // Notify admins (e.g. an open recording session picker) that the + // set of online sessions changed, so they can refresh live. + this.io.to("admins").emit("sessionsChanged"); - await this.availSockets[socket.id][socketName].init(); - }) + // (Removed) Uncaptured-connection warning: with per-socket recordings + // there is no single active batch a new connection is "outside" of, + // so the warning no longer has a clear meaning. New connections are + // simply not recorded unless explicitly selected. socket.on("disconnect", async (reason) => { try { @@ -409,7 +432,14 @@ module.exports = class Server { this.logger.warn("Failed to broadcast user monitor stats on disconnect: " + e); } + await flagDisconnectedRecording(this, socket); + delete this.availSockets[socket.id]; + + // Notify admins that the online-session set changed so an + // open recording session picker can refresh live. Admin-only + // to avoid leaking connect/disconnect activity to all clients. + this.io.to("admins").emit("sessionsChanged"); } catch (err) { this.logger.error("Error on socket disconnect: " + err); } @@ -490,6 +520,10 @@ module.exports = class Server { } catch (e) { this.logger.warn('Failed to start DB stats scheduler: ' + e.message); } + // Recover any recordings interrupted by the previous server shutdown + recoverInterruptedRecordings(this).catch((e) => { + this.logger.warn("recoverInterruptedRecordings failed: " + e); + }); return this.http; } @@ -506,8 +540,8 @@ module.exports = class Server { } if (this._statsScheduler) { this._statsScheduler.stop(this.logger); - } } + } /** * Flush statistics buffers for all connected sockets. @@ -529,5 +563,4 @@ module.exports = class Server { this.logger.error("flushAllStats encountered an error: " + e); } } - } diff --git a/backend/webserver/sockets/recorder.js b/backend/webserver/sockets/recorder.js new file mode 100644 index 000000000..731a2b122 --- /dev/null +++ b/backend/webserver/sockets/recorder.js @@ -0,0 +1,521 @@ +const Socket = require("../Socket.js"); +const { snapshot } = require("../../db/stats.js"); + +// How long a start-recording claim stays valid before another admin may take +// the socket. Only reached when a start failed between claiming and committing, +// so it just needs to outlast a normal insert. +const RECORDING_CLAIM_TIMEOUT_MS = 10000; + +// The recorder's own control events. These are recording machinery, not user +// activity, so they're never captured — otherwise a recording would include +// its own recorderStop, and replaying it fails with "No active recording". +const RECORDER_CONTROL_EVENTS = [ + "recorderStart", + "recorderStop", + "recordingGetTraces", + "recordingGetOnlineSessions", + "recordingGetPerfHealth", + "recordingGetPerfStats" +]; + +/** + * Recorder Socket + * + * Captures WebSocket events for stress-test replay. An admin selects which + * connected sessions (sockets) to record; each selected socket gets its own + * recording, so one capture per participant. Selection is fixed at start — + * sessions connecting later are not added to a running recording. + * + * @type {RecorderSocket} + * @class RecorderSocket + */ +class RecorderSocket extends Socket { + + constructor(server, io, socket) { + super(server, io, socket); + this.incomingHandler = null; + this.outgoingHandler = null; + } + + /** + * Build a trace-capturing listener for one direction. + * @param {boolean} direction - true for client->server, false for server->client + * @returns {Function} An onAny/onAnyOutgoing listener + */ + makeTraceHandler(direction) { + return async (eventName, ...args) => { + const entry = this.server.activeRecordings && this.server.activeRecordings[this.socket.id]; + if (!entry) return; + if (RECORDER_CONTROL_EVENTS.includes(eventName)) return; + if (entry.excludeEvents && entry.excludeEvents.includes(eventName)) return; + // An ack callback isn't data and can't be stored or replayed. + const payload = typeof args[0] === "function" || args[0] === undefined ? null : args[0]; + try { + await this.models["trace"].add({ + recordingId: entry.recordingId, + userId: this.userId, + socketId: this.socket.id, + action: eventName, + payload, + direction, + startTime: new Date(), + endTime: new Date(), + }); + } catch (err) { + this.logger.error("Failed to save trace: " + err.message); + } + }; + } + + /** + * Attach the capture listeners to this socket, once. + * @returns {void} + */ + attachListeners() { + if (this.incomingHandler || this.outgoingHandler) return; + this.incomingHandler = this.makeTraceHandler(true); + this.outgoingHandler = this.makeTraceHandler(false); + this.socket.onAny(this.incomingHandler); + this.socket.onAnyOutgoing(this.outgoingHandler); + } + + /** + * Remove this socket's capture listeners, if attached. + * @returns {void} + */ + detachListeners() { + if (this.incomingHandler) { + this.socket.offAny(this.incomingHandler); + this.incomingHandler = null; + } + if (this.outgoingHandler) { + this.socket.offAnyOutgoing(this.outgoingHandler); + this.outgoingHandler = null; + } + } + + /** + * Start recording the selected sessions. Each selected socket gets its own + * recording row, so one capture per participant. + * @param {Object} data - {participantSocketIds: string[], name?: string, excludeEvents?: string[]} + * @param {Object} options - Handler options; carries the transaction + * @returns {Promise} + * @throws {Error} If the caller is not an admin, no sessions are selected, + * a session is already recording, or a session is offline + */ + async startRecording(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + if (!this.server.activeRecordings) { + this.server.activeRecordings = {}; + } + + const participantSocketIds = Array.isArray(data?.participantSocketIds) && data.participantSocketIds.length > 0 + ? data.participantSocketIds + : null; + + if (!participantSocketIds) { + throw new Error("At least one session must be selected"); + } + + // Claim the sockets synchronously, before any await: two admins starting + // at once would otherwise both pass this check and the second activation + // would orphan the first's recording. A claim that never becomes a real + // recording (its transaction rolled back) expires on its own, since + // Sequelize offers no rollback hook to release it explicitly. + const now = Date.now(); + const taken = participantSocketIds.filter(id => { + const entry = this.server.activeRecordings[id]; + if (!entry) { + return false; + } + if (entry.claimedAt && now - entry.claimedAt > RECORDING_CLAIM_TIMEOUT_MS) { + delete this.server.activeRecordings[id]; + return false; + } + return true; + }); + if (taken.length > 0) { + throw new Error("One or more selected sessions are already being recorded"); + } + + // A socketId from a stale session list has no live socket to attach to, + // so it would produce a recording that stays open and captures nothing. + // availSockets can retain ghosts after a disconnect, so check the live + // socket too — the same test getOnlineSessions uses to build the list. + const offline = participantSocketIds.filter(id => !( + this.server.availSockets[id] + && this.server.availSockets[id]["RecorderSocket"] + && this.server.io.sockets.sockets.get(id) + )); + if (offline.length > 0) { + throw new Error("One or more selected sessions are no longer connected"); + } + + for (const socketId of participantSocketIds) { + this.server.activeRecordings[socketId] = { + claimedAt: now, + ownerSocketId: this.socket.id, + }; + } + + const excludeEvents = Array.isArray(data?.excludeEvents) && data.excludeEvents.length > 0 + ? data.excludeEvents + : null; + + const baseName = data.name || "Recording " + new Date().toLocaleString(); + const started = []; + + for (const socketId of participantSocketIds) { + const recorder = this.server.availSockets[socketId]["RecorderSocket"]; + + const recording = await this.models["recording"].add({ + // One recording per participant, so the name has to say which. + name: participantSocketIds.length > 1 ? `${baseName} — ${socketId}` : baseName, + status: "recording", + startTime: new Date(), + userId: recorder.userId, + participantSocketIds: [socketId], + excludeEvents, + }, options); + + started.push({ socketId, recorder, recordingId: recording.id }); + } + + // Only start capturing once the rows are committed: a rollback would + // otherwise leave listeners writing traces against recordings that + // don't exist. This also replaces the claims above with real entries. + const activate = () => { + for (const s of started) { + this.server.activeRecordings[s.socketId] = { + recordingId: s.recordingId, + ownerSocketId: this.socket.id, + excludeEvents, + }; + s.recorder.attachListeners(); + } + }; + + if (options && options.transaction) { + options.transaction.afterCommit(activate); + } else { + activate(); + } + } + + /** + * Stop one or more active recordings and return each one's captured traces. + * @param {Object} data - {socketId?: string, status?: string}; socketId stops + * just that session, otherwise the caller's whole batch + * @param {Object} options - Handler options; options.internal bypasses the admin check + * @returns {Promise<{stopped: Array}>} Each stopped recording with its traces + * @throws {Error} If the caller is not an admin (unless internal) or nothing is recording + */ + async stopRecording(data, options) { + // Internal callers (e.g. disconnect cleanup in Server.js) pass + // options.internal to bypass the admin check, since the triggering + // socket isn't an admin. User-initiated stops via recorderStop are + // not internal and must be admin-gated. + if (!(options && options.internal) && !(await this.isAdmin())) { + throw new Error("Admin access required"); + } + + if (!this.server.activeRecordings) { + this.server.activeRecordings = {}; + } + + // Allow callers to override the terminal status (e.g. "disconnected" + // when a participant's socket drops). Normal user-initiated stops use + // "finished". + const finalStatus = (data && data.status) || "finished"; + + // Determine which sockets to stop: + // - data.socketId given (e.g. disconnect path): stop only that socket. + // - otherwise: stop every recording started by this caller (their batch), + // so one admin stopping doesn't end another admin's recordings. + // A claim (see startRecording) has an ownerSocketId but no recordingId + // yet, so it must never be treated as stoppable — its real entry lands + // when the start transaction commits. + const isStoppable = (sid) => Boolean(this.server.activeRecordings[sid]?.recordingId); + + let socketIdsToStop; + if (data && data.socketId) { + socketIdsToStop = isStoppable(data.socketId) ? [data.socketId] : []; + } else { + socketIdsToStop = Object.keys(this.server.activeRecordings) + .filter(sid => isStoppable(sid) && this.server.activeRecordings[sid].ownerSocketId === this.socket.id); + } + + if (socketIdsToStop.length === 0) { + throw new Error("No active recording"); + } + + const stopped = []; + + for (const socketId of socketIdsToStop) { + const entry = this.server.activeRecordings[socketId]; + const recordingId = entry.recordingId; + + const recorder = this.server.availSockets[socketId] && this.server.availSockets[socketId]["RecorderSocket"]; + + await this.models["recording"].updateById( + recordingId, + { status: finalStatus, endTime: new Date() }, + options + ); + + // Callers without a transaction (e.g. disconnect cleanup) get no + // automatic table broadcast, so push the updated row to + // subscribers here. Under a transaction, createSocket's + // afterCommit hook broadcasts the change instead. + if (!options || !options.transaction) { + try { + const updatedRow = await this.models["recording"].getById(recordingId, options); + if (updatedRow) { + await this.broadcastTable("recording", [updatedRow]); + } + } catch (e) { + this.logger.warn("Failed to broadcast stopped recording: " + e); + } + } + + // Detaching listeners and dropping the in-memory entry are only + // safe once the status write is durable — a rollback would + // otherwise leave the server treating the recording as stopped + // while the row still says "recording". + const applyStopSideEffects = () => { + if (recorder) { + recorder.detachListeners(); + } + delete this.server.activeRecordings[socketId]; + }; + + if (options && options.transaction) { + options.transaction.afterCommit(applyStopSideEffects); + } else { + applyStopSideEffects(); + } + + const traces = (await this.models["trace"].getAllByKey("recordingId", recordingId, options)) + .sort((a, b) => a.id - b.id); + + stopped.push({ + id: recordingId, + socketId, + traces: traces.map(t => ({ + id: t.id, + recordingId: t.recordingId, + userId: t.userId, + socketId: t.socketId, + action: t.action, + direction: t.direction, + startTime: t.startTime, + endTime: t.endTime, + })), + }); + } + + return { stopped }; + } + + /** + * Return every trace of one recording, oldest first. Feeds the results + * table and the export payload. + * @param {Object} data - {id: number} recording id + * @param {Object} options - Handler options + * @returns {Promise>} The recording's traces + * @throws {Error} If the caller is not an admin or no id is given + */ + async getTraces(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + if (!data || !data.id) throw new Error("Recording ID required"); + return (await this.models["trace"].getAllByKey("recordingId", data.id, options)) + .sort((a, b) => a.id - b.id); + } + + /** + * Return one entry per live socket connection (= session), for the Start + * Recording modal's session list. Offline users have no sessions and are + * not returned. + * @param {Object} data + * @param {Object} options - Handler options + * @returns {Promise>} Sessions with socketId, userId, userName, connectedAt + * @throws {Error} If the caller is not an admin + */ + async getOnlineSessions(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + const userIds = new Set(); + const sessions = []; + for (const socketId of Object.keys(this.server.availSockets)) { + const bucket = this.server.availSockets[socketId]; + const userSocket = bucket["UserSocket"]; + const rawSocket = this.server.io.sockets.sockets.get(socketId); + // Skip ghost entries: a socket may linger in availSockets after + // disconnecting if its cleanup didn't fully run. socket.io removes + // disconnected sockets from io.sockets.sockets immediately, so a + // missing rawSocket means this session is stale and shouldn't be + // listed as online. + if (rawSocket && userSocket && userSocket.userId) { + userIds.add(userSocket.userId); + sessions.push({ + socketId, + userId: userSocket.userId, + connectedAt: rawSocket.connectedAt || null, + }); + } + } + + // Resolve userNames in one query + const userMap = {}; + if (userIds.size > 0) { + const users = await this.models["user"].getAllByKeyValues("id", Array.from(userIds), options); + for (const u of users) { + userMap[u.id] = u.userName; + } + } + + return sessions.map(s => ({ + ...s, + userName: userMap[s.userId] || "Unknown", + })); + + } + + /** + * Return a snapshot of backend process vitals for perf metric sampling. + * Admin-only. Used by the perf tool to detect memory/connection leaks and + * event-loop pressure during load tests. + * @param {Object} data + * @param {Object} options + * @returns {Promise} process vitals (memory, socket/recording counts, uptime) + * @throws {Error} if the caller is not an admin + */ + async getPerfHealth(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + const mem = process.memoryUsage(); + return { + rss: mem.rss, + heapUsed: mem.heapUsed, + heapTotal: mem.heapTotal, + socketCount: Object.keys(this.server.availSockets || {}).length, + activeRecordings: Object.keys(this.server.activeRecordings || {}).length, + uptime: process.uptime(), + }; + } + + /** + * Return a snapshot of PostgreSQL runtime stats (connection counts, Sequelize + * pool usage incl. waiting, DB counters, locks) for perf metric sampling. + * Admin-only. Delegates to the shared db/stats.js snapshot(). + * @param {Object} data + * @param {Object} options + * @returns {Promise} pg_stat snapshot + * @throws {Error} if the caller is not an admin + */ + async getPerfStats(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + return await snapshot(this.server.db.sequelize, this.logger); + } + + /** + * Import a previously exported recording and all of its traces in one + * transaction. Replaces the frontend's per-trace appDataUpdate loop: one + * round trip instead of N, and a mid-import failure rolls the whole thing + * back rather than leaving a half-imported recording behind. + * + * The original userId is dropped — it's meaningless on this server — and + * the importing admin becomes the owner. Original socketIds are kept as + * opaque grouping keys so replay can reconstruct the sessions. + * @param {Object} data - Import payload + * @param {Object} data.recording - Recording row from the export file (name, status, startTime, endTime, excludeEvents) + * @param {Array} data.traces - Trace rows to re-create under the new recording + * @param {Object} options - Socket options; carries the transaction + * @returns {Promise<{recordingId: number, traceCount: number}>} The new recording's id and how many traces were written + * @throws {Error} if the caller is not an admin or the payload is malformed + */ + async importRecording(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + + const source = data && data.recording; + const traces = data && data.traces; + + if (!source || typeof source !== "object") { + throw new Error("Missing recording object"); + } + if (!Array.isArray(traces)) { + throw new Error("Missing traces array"); + } + + // The client validates too, for fast feedback before upload, but this + // handler is reachable directly so the payload can't be trusted. + for (const t of traces) { + if (!t.action) { + throw new Error("A trace is missing 'action'"); + } + if (t.direction !== true && t.direction !== false) { + throw new Error("A trace is missing a valid 'direction'"); + } + if (!t.startTime) { + throw new Error("A trace is missing 'startTime'"); + } + } + + // Sessions are reconstructed from the distinct socketIds, mirroring how + // a normally recorded row stores them. + const participantSocketIds = [...new Set( + traces.map(t => t.socketId).filter(Boolean) + )]; + + const recording = await this.models["recording"].add({ + name: source.name ? `${source.name} (imported)` : `Imported recording ${Date.now()}`, + status: source.status || "finished", + startTime: source.startTime || new Date(), + endTime: source.endTime || null, + userId: this.userId, + participantSocketIds: participantSocketIds.length > 0 ? participantSocketIds : null, + excludeEvents: source.excludeEvents || null, + }, options); + + for (const trace of traces) { + await this.models["trace"].add({ + recordingId: recording.id, + userId: this.userId, + socketId: trace.socketId || null, + action: trace.action, + payload: trace.payload || null, + direction: trace.direction, + startTime: trace.startTime, + endTime: trace.endTime, + }, options); + } + + return { recordingId: recording.id, traceCount: traces.length }; + } + + /** + * Register this socket's event handlers. + * @returns {void} + */ + init() { + this.createSocket("recorderStart", this.startRecording, {}, true); + this.createSocket("recorderStop", this.stopRecording, {}, true); + this.createSocket("recordingGetTraces", this.getTraces, {}, false); + this.createSocket("recordingGetOnlineSessions", this.getOnlineSessions, {}, false); + this.createSocket("recordingGetPerfHealth", this.getPerfHealth, {}, false); + this.createSocket("recordingGetPerfStats", this.getPerfStats, {}, false); + this.createSocket("recorderImport", this.importRecording, {}, true); + } +} + +module.exports = RecorderSocket; \ No newline at end of file diff --git a/backend/webserver/sockets/replayer.js b/backend/webserver/sockets/replayer.js new file mode 100644 index 000000000..6cb5189a9 --- /dev/null +++ b/backend/webserver/sockets/replayer.js @@ -0,0 +1,468 @@ +'use strict'; + +const Socket = require('../Socket.js'); +const { replayUserTraces } = require('../../utils/replay-worker'); +const { groupTracesBySocket, buildActiveSessions, reviveBuffers, extractRecordedHashes} = require('../../utils/replay-sessions'); +const throttle = require('lodash/throttle'); + +// Ceilings on caller-supplied load parameters. Replay opens real sockets +// against this server, so an unbounded value is a self-inflicted outage rather +// than a test. +const MAX_ITERATIONS = 100; +const MAX_CONCURRENCY = 500; + +/** + * Handles replaying recorded socket events for stress testing. + * + * Scaling mode (pooled): all selected recordings' sessions are combined + * into one pool of N sessions. Iteration K runs K * N parallel sockets, + * cycling through the pool with wraparound (linear add per iteration). + * + * Example: recording A=[a1, a2], recording B=[b3], maxIterations=3 + * Iteration 1: [a1, a2, b3] (3 sockets) + * Iteration 2: [a1, a2, b3, a1, a2, b3] (6 sockets) + * Iteration 3: [a1, a2, b3, a1, a2, b3, a1, a2, b3] (9 sockets) + * + * @type {ReplayerSocket} + * @class ReplayerSocket + */ +class ReplayerSocket extends Socket { + + /** + * Pool sessions and run a scaling test across the combined pool. Input is + * either recordingIds (loaded from the DB) or sessions (supplied from + * exported recording files, so the CLI can replay without importing) — + * exactly one of the two. + * + * @param {Object} data - Input data from the caller (frontend or perf CLI) + * @param {boolean} [data.sequential=false] - Replay sessions one at a time instead of in parallel + * @param {Array} [data.recordingIds] - Recordings to pool from the DB + * @param {Array} [data.sessions] - Sessions from exported files; each is {sessionKey?, recordingName?, traces} + * @param {string} [data.timingMode="fast"] - "realtime" preserves original delays, "fast" skips them + * @param {boolean} [data.continueOnFailure=false] - If true, scaling continues past failed iterations + * @param {number} [data.maxIterations] - Scaling iterations to run; required unless singleLevel is set + * @param {number} [data.ackTimeout=2000] - Max ms to wait for the server to ack each trace + * @param {string} [data.progressId=null] - Id to emit progressUpdate against; null disables progress + * @param {number} [data.latencyThreshold=Infinity] - Stop if a level's p95 latency exceeds this (ms) + * @param {number} [data.singleLevel=null] - Run one level at this concurrency instead of scaling + * @param {Object} options - Additional configuration parameter + * @returns {Promise|Object>} Iteration results, or one level's result when singleLevel is set + * @throws {Error} If the caller is not an admin, if neither or both of recordingIds/sessions are given, if maxIterations is invalid, or if the pool is empty + */ + async replayRun(data, options) { + if (!(await this.isAdmin())) { + throw new Error("Admin access required"); + } + const { + recordingIds, + sessions, + timingMode = 'fast', + continueOnFailure = false, + maxIterations, + ackTimeout = 2000, + progressId = null, + latencyThreshold = Infinity, + singleLevel = null, + sequential = false, + } = data; + + const hasIds = Array.isArray(recordingIds) && recordingIds.length > 0; + const hasSessions = Array.isArray(sessions) && sessions.length > 0; + if (hasIds && hasSessions) { + throw new Error('Provide either recordingIds or sessions, not both'); + } + if (!hasIds && !hasSessions) { + throw new Error('Provide recordingIds (DB replay) or sessions (file replay)'); + } + if (singleLevel !== null && !Number.isInteger(singleLevel)) { + throw new Error('singleLevel must be an integer'); + } + if (Number.isInteger(singleLevel) && (singleLevel < 1 || singleLevel > MAX_CONCURRENCY)) { + throw new Error(`singleLevel must be between 1 and ${MAX_CONCURRENCY}`); + } + if (singleLevel === null && (!Number.isInteger(maxIterations) || maxIterations < 1 || maxIterations > MAX_ITERATIONS)) { + throw new Error(`maxIterations must be an integer between 1 and ${MAX_ITERATIONS}`); + } + + // Pool from the DB (recordingIds) or straight from a file payload + // (sessions). Both return the same {sessions, userMap} shape. + const pool = hasSessions + ? await this.buildSessionPoolFromPayload(sessions) + : await this.buildSessionPool(recordingIds); + + if (pool.sessions.length === 0) { + throw new Error('No replayable sessions found in selected recordings'); + } + + // The scaling path runs level * N concurrent sockets at its peak, so + // MAX_CONCURRENCY (enforced per-level in runOneLevel) can be blown past + // here even when maxIterations is within MAX_ITERATIONS. Reject up front + // rather than open thousands of sockets against the server. + if (singleLevel === null) { + const peakConcurrency = maxIterations * pool.sessions.length; + if (peakConcurrency > MAX_CONCURRENCY) { + throw new Error( + `Peak concurrency ${peakConcurrency} (${maxIterations} iterations x ${pool.sessions.length} sessions) exceeds the limit of ${MAX_CONCURRENCY}. Reduce --max-iterations or use fewer recordings.` + ); + } + } + + // Replay-target URL. Defaults to the local content server, but can be + // overridden via REPLAY_TARGET_URL for deployments where the content + // server isn't on localhost or uses a non-standard host/port. + const serverUrl = process.env.REPLAY_TARGET_URL + || `http://localhost:${process.env.CONTENT_SERVER_PORT || 3001}`; + + if (Number.isInteger(singleLevel) && singleLevel > 0) { + return await this.runOneLevel(pool, serverUrl, timingMode, singleLevel, ackTimeout, progressId); + } + + const iterations = await this.runScalingTest( + pool, serverUrl, timingMode, continueOnFailure, maxIterations, ackTimeout, progressId, latencyThreshold, sequential + ); + + return iterations; + } + + /** + * Load all selected recordings' traces and combine them into one pool of + * sessions. Each session keeps a reference to its source recording so we + * can label results with the recording name. + * + * @param {Array} recordingIds - Recordings to pool + * @returns {Promise<{sessions: Array, userMap: Map}>} Pooled sessions and the user lookup needed for replay + */ + async buildSessionPool(recordingIds) { + const sessions = []; + const userIdSet = new Set(); + + // Fetch all recordings up front (one query) and index by id, rather + // than a findByPk per id inside the loop. + const recordings = await this.models['recording'].getAllByKeyValues('id', recordingIds); + const recordingById = new Map(recordings.map(r => [r.id, r])); + + for (const recordingId of recordingIds) { + const recording = recordingById.get(recordingId); + if (!recording) { + this.logger.warn(`Replay: recording ${recordingId} not found or deleted — skipped`); + continue; + } + + // Only client->server traces are replayable; server pushes are + // captured for diagnostics but must not be emitted back. + // Postgres has no binary type inside JSONB, so a captured Buffer + // comes back as a plain {type:'Buffer', data:[…]} object. Restore + // it here so handlers expecting file bytes get a real Buffer. + const allTraces = (await this.models['trace'].getAllByKey('recordingId', recordingId)) + .map(t => ({ ...t, payload: reviveBuffers(t.payload) })); + const traces = allTraces + .filter(t => t.direction === true) + .sort((a, b) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime()); + if (traces.length === 0) continue; + + const sessionMap = groupTracesBySocket(traces); + for (const [key, session] of sessionMap) { + sessions.push({ + sessionKey: key, + userId: session.userId, + traces: session.traces, + recordingId, + recordingName: recording.name, + }); + userIdSet.add(session.userId); + } + } + + const users = await this.models['user'].getAllByKeyValues('id', Array.from(userIdSet)); + const userMap = new Map(users.map(u => [u.id, u])); + + // A recorded user may have been deleted since capture. Those sessions + // can't be authenticated, so drop them rather than let a missing user + // crash the whole run in the replay worker. + const replayable = sessions.filter(s => { + if (userMap.has(s.userId)) { + return true; + } + this.logger.warn(`Replay: user ${s.userId} no longer exists — session ${s.sessionKey} skipped`); + return false; + }); + + return { sessions: replayable, userMap }; + } + + /** + * Build the same {sessions, userMap} pool from exported recording files + * instead of the DB, so the CLI can replay without importing. + * + * Each session replays as the user it was recorded under, resolved by id + * against this database — the same treatment the DB path gives its own + * sessions. Sessions whose recorded user does not exist here are dropped. + * The recording data itself never touches the DB. + * + * @param {Array} payloadSessions - Sessions from files; each is {sessionKey?, recordingName?, traces: Array} + * @returns {Promise<{sessions: Array, userMap: Map}>} Pooled sessions and the user lookup needed for replay + */ + async buildSessionPoolFromPayload(payloadSessions) { + const sessions = []; + const userIdSet = new Set(); + + for (const incoming of payloadSessions) { + const rawTraces = Array.isArray(incoming.traces) ? incoming.traces : []; + // File contents are unvalidated input: a trace without a usable + // action name would be emitted as-is by the replay worker. + // Incoming Refresh traces carry each row as it existed at capture + // time, hash included. They aren't replayable, but they're the only + // record of what hash a row had then — the replay generates new + // ones, so this is what lets the worker map old to new. + const recordedHashes = extractRecordedHashes(rawTraces); + + const traces = rawTraces + .filter(t => t && t.direction === true && typeof t.action === 'string' && t.action.length > 0) + .sort((a, b) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime()); + if (traces.length === 0) continue; + + const sessionMap = groupTracesBySocket(traces); + const multiSession = sessionMap.size > 1; + for (const [key, session] of sessionMap) { + sessions.push({ + // The file's own key only identifies the file, so it can't + // label more than one session from it. + sessionKey: (!multiSession && incoming.sessionKey) ? incoming.sessionKey : key, + userId: session.userId, + traces: session.traces, + recordingId: null, + recordingName: incoming.recordingName || 'file', + recordedHashes, + }); + userIdSet.add(session.userId); + } + } + + const users = await this.models['user'].getAllByKeyValues('id', Array.from(userIdSet)); + const userMap = new Map(users.map(u => [u.id, u])); + + // A recorded user may not exist on this database. Those sessions can't + // be authenticated, so drop them rather than let a missing user surface + // as an auth failure mid-replay. + const replayable = []; + for (const s of sessions) { + if (userMap.has(s.userId)) { + replayable.push(s); + continue; + } + this.logger.warn(`Replay: user ${s.userId} from file not found on this database — session ${s.sessionKey} skipped`); + } + + return { sessions: replayable, userMap }; + } + + /** + * Build a throttled per-trace progress reporter. Emits at most once per + * 500ms and only on whole-percent changes, so a large run doesn't flood the + * socket with thousands of events. (Throttle per Dennis's suggestion.) + * @param {string|null} progressId - Id to emit against; null disables reporting + * @param {number} totalTraces - Denominator for the percentage + * @returns {{onTraceProgress: Function, flush: Function}} Reporter handles + */ + makeProgressReporter(progressId, totalTraces) { + let completed = 0; + let lastPct = -1; + const emit = () => { + if (!progressId) { + return; + } + this.socket.emit('progressUpdate', { + id: progressId, + current: completed, + total: totalTraces, + }); + }; + const emitProgress = throttle(emit, 500); + const onTraceProgress = () => { + completed++; + if (!progressId || totalTraces === 0) { + return; + } + const pct = Math.floor((completed / totalTraces) * 100); + if (pct !== lastPct) { + lastPct = pct; + emitProgress(); + } + }; + // Cancel the throttle and emit directly: flush() only fires when a + // trailing call is pending, which it isn't if the last trace didn't + // change the whole percent — so the bar would stop short of its end. + return { + onTraceProgress, + flush: () => { + emitProgress.cancel(); + emit(); + }, + }; + } + + /** + * Replay one list of sessions, labelling each result with its source + * session. Parallel by default; sequential when `sequential` is true, which + * regression uses so stories that create rows get predictable ids. + * @param {Array} activeSessions - Sessions to run + * @param {Map} userMap - Maps a session's userId to its user row + * @param {string} serverUrl - Replay target URL + * @param {string} timingMode - "realtime" or "fast" + * @param {number} ackTimeout - Max ms to wait for each trace's ack + * @param {Function} onTraceProgress - Called once per completed trace + * @param {boolean} [sequential=false] - Run sessions one at a time instead of in parallel + * @returns {Promise>} One result per session + */ + async runSessions(activeSessions, userMap, serverUrl, timingMode, ackTimeout, onTraceProgress, sequential = false) { + // Shared across every session in the run: a story that looks a row up + // by hash usually isn't the story that created it, so the new hash has + // to survive past the session that observed it. + const observedHashes = new Map(); + + const replayOne = async (session) => { + const user = userMap.get(session.userId); + const result = await replayUserTraces(this.server, user, session.traces, serverUrl, timingMode, ackTimeout, onTraceProgress, session.recordedHashes, observedHashes); + return { + ...result, + sessionKey: session.sessionKey, + recordingId: session.recordingId, + recordingName: session.recordingName, + }; + }; + + if (sequential) { + const results = []; + for (const session of activeSessions) { + results.push(await replayOne(session)); + } + return results; + } + + return await Promise.all(activeSessions.map(replayOne)); + } + + /** + * Run one level of `concurrency` parallel sessions once and return its + * results. Used by the client-driven ceiling finder (open-ended escalation). + * @param {{sessions: Array, userMap: Map}} pool - Session pool + * @param {string} serverUrl - Replay target URL + * @param {string} timingMode - "realtime" or "fast" + * @param {number} concurrency - How many parallel sessions to run + * @param {number} ackTimeout - Max ms to wait for each trace's ack + * @param {string} [progressId=null] - Id to emit progressUpdate against + * @returns {Promise<{sessions: number, results: Array, duration: number}>} The level's result + * @throws {Error} If concurrency is not an integer between 1 and MAX_CONCURRENCY + */ + async runOneLevel(pool, serverUrl, timingMode, concurrency, ackTimeout, progressId = null) { + // replayRun validates this too, but runOneLevel is callable on its own + // and opens `concurrency` real sockets, so it guards itself. + if (!Number.isInteger(concurrency) || concurrency < 1 || concurrency > MAX_CONCURRENCY) { + throw new Error(`concurrency must be an integer between 1 and ${MAX_CONCURRENCY}`); + } + const activeSessions = buildActiveSessions(pool, concurrency); + // Sum the sessions actually picked: with wraparound over unequal session + // sizes, concurrency * average would not match what gets replayed. + const totalTraces = activeSessions.reduce((sum, s) => sum + s.traces.length, 0); + const progress = this.makeProgressReporter(progressId, totalTraces); + + const start = Date.now(); + const results = await this.runSessions( + activeSessions, pool.userMap, serverUrl, timingMode, ackTimeout, progress.onTraceProgress + ); + progress.flush(); + return { sessions: concurrency, results, duration: Date.now() - start }; + } + + /** + * Execute the scaling loop on the pooled session list. Iteration K runs + * K * N parallel sockets, cycling through the pool with wraparound (linear + * add: each iteration adds one full copy of the pool to the previous count). + * Stops at the first failing level unless continueOnFailure is true. + * + * @param {{sessions: Array, userMap: Map}} pool - Combined session pool + * @param {string} serverUrl - Replay target URL + * @param {string} timingMode - "realtime" or "fast" + * @param {boolean} continueOnFailure - If true, scaling continues past failed iterations + * @param {number} maxIterations - Number of iterations to run + * @param {number} ackTimeout - Max ms to wait for each trace's ack + * @param {string} [progressId=null] - Id to emit progressUpdate against + * @param {number} [latencyThreshold=Infinity] - Stop if a level's p95 exceeds this (ms) + * @param {boolean} [sequential=false] - Replay sessions one at a time within each level + * @returns {Promise>} One entry per iteration run + */ + async runScalingTest(pool, serverUrl, timingMode, continueOnFailure, maxIterations, ackTimeout, progressId = null, latencyThreshold = Infinity, sequential = false) { + const allResults = []; + const N = pool.sessions.length; + + // Total traces replayed across the whole run, for fine-grained progress. + // One pool pass replays the sum of every session's traces; iteration K + // runs K passes, so the grand total is that sum times (1+2+...+max). + const tracesPerPass = pool.sessions.reduce((sum, s) => sum + s.traces.length, 0); + const totalTraces = tracesPerPass * (maxIterations * (maxIterations + 1) / 2); + + const progress = this.makeProgressReporter(progressId, totalTraces); + + for (let level = 1; level <= maxIterations; level++) { + // Iteration K runs K full copies of the pool. Total sockets = K * N. + // Sessions are picked with wraparound, so iteration K's list is + // pool[0], pool[1], ..., pool[N-1], pool[0], pool[1], ... (K times). + const totalSockets = level * N; + const activeSessions = buildActiveSessions(pool, totalSockets); + + const levelStart = Date.now(); + const levelResults = await this.runSessions( + activeSessions, pool.userMap, serverUrl, timingMode, ackTimeout, progress.onTraceProgress, sequential + ); + const levelDuration = Date.now() - levelStart; + + const levelFailed = levelResults.some(r => r.failed > 0); + + // p95 latency across all this level's traces — the "too much delay" + // stop signal. Catches degradation (pool pressure) before hard + // failures. Off by default (Infinity); the perf tool opts in. + const levelLatencies = []; + for (const r of levelResults) { + for (const l of (r.latencies || [])) levelLatencies.push(l.latency); + } + levelLatencies.sort((a, b) => a - b); + const p95 = levelLatencies.length + ? levelLatencies[Math.min(levelLatencies.length - 1, Math.floor(0.95 * levelLatencies.length))] + : 0; + const latencyExceeded = p95 > latencyThreshold; + + allResults.push({ + level, + sessions: totalSockets, + results: levelResults, + passed: !levelFailed, + duration: levelDuration, + p95, + }); + + if ((levelFailed || latencyExceeded) && !continueOnFailure) { + const reason = levelFailed + ? 'trace failure' + : `p95 latency ${p95}ms exceeded threshold ${latencyThreshold}ms`; + // TODO: the perf CLI drives replayRun too and has no browser to + // show this, so the toast is emitted to a socket nobody watches. + // The CLI reads the same outcome from the returned results. + this.sendToast(`Replay stopped at iteration ${level} (${reason})`, 'Replay', 'danger'); + break; + } + } + + // Force out the final throttled update so the bar lands on its true + // end value instead of being left one throttle-window short. Runs on + // both normal completion and early-failure break above. + progress.flush(); + + return allResults; + } + + init() { + this.createSocket('replayRun', this.replayRun, {}, false); + } +} + +module.exports = ReplayerSocket; \ No newline at end of file diff --git a/backend/webserver/sockets/study.js b/backend/webserver/sockets/study.js index a5e9c18be..0aac6e466 100644 --- a/backend/webserver/sockets/study.js +++ b/backend/webserver/sockets/study.js @@ -37,7 +37,7 @@ class StudySocket extends Socket { if (data.onlyTemplate && data.templateData) { const templateData = { ...data.templateData, - userId: this.socket.user.id, + userId: this.userId, template: true, }; diff --git a/docs/source/for_developers/backend/socket_profiler.rst b/docs/source/for_developers/backend/socket_profiler.rst new file mode 100644 index 000000000..4537d0591 --- /dev/null +++ b/docs/source/for_developers/backend/socket_profiler.rst @@ -0,0 +1,463 @@ +Socket Profiler +=============== + +The Socket Profiler records the WebSocket traffic of a live CARE session and replays it later against +a running server. It exists to answer two questions that otherwise require manual clicking: + +- **Does this build still work?** Replay a suite of recorded user stories and see which ones break. +- **How does the server behave under load?** Replay the same sessions repeatedly and concurrently, + and observe latency, memory, the database connection pool and Postgres counters. + +The feature has two halves: an admin dashboard page for capturing and managing recordings, and a +command line tool for replaying them. + +Recordings are stored in the database and can be exported to JSON, which makes them portable between +installations and suitable for checking into the repository as regression fixtures. + +Recording +--------- + +Starting a recording +~~~~~~~~~~~~~~~~~~~~ + +The Socket Profiler page is located in the admin section of the dashboard. Recording is server-wide: +the recorder attaches catch-all listeners across sockets rather than to a single connection. + +To capture a session, the administrator opens the Socket Profiler page, starts a recording, names it +and selects the active session to capture. A recording bar is displayed across the dashboard for as +long as the capture runs. + +.. note:: + + Because capture is server-wide, the administrator normally works in two browser tabs: one driving + the application, one holding the Socket Profiler page. The session selected in the dialog is the + one whose traffic is captured, not the tab the profiler is open in. + +Stopping a recording +~~~~~~~~~~~~~~~~~~~~ + +Stopping the capture opens a review dialog. The recording is already stopped at that point — the +dialog is a review and naming step, not a confirmation step. + +In the dialog the administrator can rename the recording and deselect individual traces, which +soft-deletes them. The *recorderStart* and *recorderStop* traces are deselected by default, since +they are artefacts of the recording process rather than application behaviour. + +Exporting and importing +~~~~~~~~~~~~~~~~~~~~~~~ + +A recording can be exported to a JSON file from the recordings table. The exported file contains the +full trace list, including any file bytes uploaded during the session. This makes each recording +self-contained, at the cost of size: a story containing a PDF upload can reach several megabytes. + +Import is handled by the *recorderImport* socket event, which runs inside a transaction so that a +partially imported recording cannot be left behind. + +What a trace contains +~~~~~~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Field + - Description + * - **action** + - The socket event name, for example *documentAdd* + * - **payload** + - The event payload, stored as JSONB + * - **direction** + - *true* for frontend to backend, *false* for backend to frontend + * - **startTime** / **endTime** + - Capture timestamps + * - **recordingId** + - The owning recording + +Only incoming traces are replayed. Outgoing traces are captured for diagnosis — they are what makes +it possible to observe, for example, that a view tears down subscriptions it never established. + +.. note:: + + Buffers do not survive a JSON round trip intact. The *reviveBuffers* helper in + ``backend/utils/replay-sessions.js`` restores them before replay, which is what makes recorded + file uploads replayable. + +The command line tool +--------------------- + +The tool is run from the ``backend`` directory: + +.. code-block:: bash + + npm run perf -- --mode [options] + +Everything after ``--`` is passed to ``backend/scripts/perf/cli.js``. + +Authentication +~~~~~~~~~~~~~~ + +The tool logs in as an administrator over HTTP, then opens a Socket.IO connection using the resulting +session cookie. A password is mandatory; the run aborts before contacting the server if none is +found. The password is resolved from ``--password``, then *PERF_ADMIN_PASSWORD*, then *ADMIN_PWD*. + +The user defaults to *admin* and can be overridden with ``--user`` or *PERF_ADMIN_USER*. + +.. note:: + + In a standard local setup *ADMIN_PWD* is already present in the **.env** file in the root + directory, so no additional configuration is required. + +Choosing what to replay +~~~~~~~~~~~~~~~~~~~~~~~ + +Every run requires at least one source: + +.. list-table:: + :header-rows: 1 + + * - Option + - Source + * - ``--recordings 12,15`` + - Recordings already present in the target database, by id + * - ``--files a.json,b.json`` + - Exported JSON files, by path + * - ``--dir stories/`` + - Every JSON file in a folder + +File-based sources are read directly and do not need to be imported into the database first. + +When replaying files, each session is executed as the user who was recorded, resolved against the +target database — not as the administrator running the tool. A session whose recorded user cannot be +found in the target database is reported as a failure rather than silently skipped. + +Modes +~~~~~ + +Five modes are available, selected with ``--mode``. The default is *ramp*. + +**regression** replays each session once, sequentially, and requires every trace to succeed. This is +the mode used before a deployment. + +.. code-block:: bash + + npm run perf -- --mode regression --dir tests/regression_stories/ + +Sequential replay is what makes the ids assigned during a run deterministic, so that a story creating +a document and a later story referencing it remain consistent. + +Results are grouped per story, followed by a trace breakdown across the whole run. Traces that +received no acknowledgement are reported separately from traces the server actively rejected; the two +are indistinguishable at the socket level but mean very different things. + +**inspect** reads recordings without replaying them and reports what they contain. Nothing is emitted +to the server and no database state changes. + +.. code-block:: bash + + npm run perf -- --mode inspect --files tests/regression_stories/030-upload-document.json + +The distribution is reported plainly over every action present. No trace type is filtered out and the +mode reaches no verdict about whether a recording is useful — that judgement belongs to the developer +reading it. + +The distinction that matters when reviewing a newly captured story is incoming against outgoing. Only +incoming traces are replayed; a recording whose incoming traces consist solely of telemetry and +subscription events contains no behaviour and should not be added to the regression suite. + +**ramp** replays the sessions repeatedly with increasing concurrency and reports latency, memory, +database pool and Postgres statistics at each step. + +.. code-block:: bash + + npm run perf -- --mode ramp --recordings 12,15 --max-iterations 30 + +**ceiling** increases concurrency until a stop condition trips, then reports the highest concurrency +the server sustained. + +.. code-block:: bash + + npm run perf -- --mode ceiling --recordings 12 --step 5 --latency-threshold 1000 + +**soak** holds a fixed concurrency for a fixed duration and watches for drift: memory growth, pool +exhaustion, rising latency. + +.. code-block:: bash + + npm run perf -- --mode soak --recordings 12 --concurrency 10 --duration 30m + +Soak additionally correlates memory growth against the trace types active in each sampling window. + +.. note:: + + The memory correlation is a lead, not proof. True per-trace memory attribution requires heap + snapshots, which distort the measurement they are taken from. + +Option reference +~~~~~~~~~~~~~~~~ + +.. list-table:: + :header-rows: 1 + + * - Option + - Default + - Modes + - Description + * - ``--mode`` + - *ramp* + - all + - One of *ramp*, *ceiling*, *soak*, *regression*, *inspect* + * - ``--recordings`` + - — + - all + - Comma-separated recording ids from the database + * - ``--files`` + - — + - all + - Comma-separated paths to exported JSON files + * - ``--dir`` + - — + - all + - Folder of exported JSON files + * - ``--server`` + - *http://localhost:3001* + - all + - Target server + * - ``--user`` + - *admin* + - all + - Administrator login + * - ``--password`` + - — + - all + - Administrator password + * - ``--timing-mode`` + - *fast* + - all + - *fast* replays without the original gaps, *realtime* preserves them + * - ``--ack-timeout`` + - *2000* + - ramp, ceiling, soak, regression + - Milliseconds to wait for a trace acknowledgement + * - ``--latency-threshold`` + - *1000* + - ramp, ceiling + - Latency in ms treated as a breach + * - ``--max-iterations`` + - *10* + - ramp, ceiling + - Iteration limit + * - ``--continue-on-failure`` + - *false* + - ramp + - Keep replaying after a failing trace + * - ``--step`` + - *5* + - ceiling + - Concurrency increment per level + * - ``--max-failures`` + - *0* + - ceiling + - Absolute failure count tolerated per level + * - ``--fail-threshold`` + - *5* + - ceiling + - Failure percentage tolerated per level + * - ``--concurrency`` + - *10* + - soak + - Sessions replayed in parallel + * - ``--duration`` + - *60s* + - soak + - Run length, accepts *30s*, *5m*, *1h* + * - ``--sample-interval`` + - *0* + - soak + - Gap between iterations, *0* means back-to-back + +The *inspect* mode reads no options beyond the source flags, since it does not replay. + +.. note:: + + The *regression* mode always replays every story and reports each result rather than stopping at + the first failure. This is deliberate and not configurable: a run that aborts early reports one + broken story and says nothing about the rest. + +Ceiling has two failure conditions that work together. ``--max-failures`` is an absolute count and +``--fail-threshold`` a percentage; a level trips if either is exceeded. With the default +``--max-failures 0`` any failure stops the run, so the percentage never applies. The rate condition +becomes meaningful once some failures are tolerated, for example ``--max-failures 5 +--fail-threshold 2``, which allows up to five failures per level but stops early if more than two +percent of traces fail. + +Reading the output +~~~~~~~~~~~~~~~~~~ + +Every run prints a per-action breakdown: + +.. code-block:: text + + action count fail ok% minMs p50 avgMs p95Ms maxMs totalMs dbW + +.. list-table:: + :header-rows: 1 + + * - Column + - Description + * - **action** + - Socket event name + * - **count** + - Times this action was replayed + * - **fail** + - How many of those failed + * - **ok%** + - Success percentage + * - **minMs, p50, avgMs, p95Ms, maxMs** + - Latency distribution + * - **totalMs** + - Cumulative time spent in this action + * - **dbW** + - Database writes attributed to this action + +.. note:: + + The 95th percentile is usually more informative than the average. An average hides a small number + of very slow calls, which are exactly the ones users notice. + +Saved results +~~~~~~~~~~~~~ + +Each run writes two files to ``backend/logs/perf/``: a timestamped **.json** file containing raw +machine-readable data, and a **.txt** file containing the terminal output verbatim. The text file is +byte-identical to what appeared on screen, so a run can be attached to an issue without repeating it. + +The regression suite +-------------------- + +The suite is a folder of exported recordings, one per user story, located at +``backend/tests/regression_stories/`` and replayed in order: + +.. code-block:: bash + + npm run perf -- --mode regression --dir tests/regression_stories/ + +.. note:: + + The stories are stored alongside CARE's Jest tests but are not part of them. The ``make test`` + target matches ``*.test.js`` and recreates its own test database; it neither reads nor runs these + files. The suite is a separate pre-deployment check against a running server. + +Each file is named so that alphabetical order is replay order, numbered in tens so that further +stories can be inserted without renaming the whole set: + +.. code-block:: text + + 010-... first + 020-... + ... + 990-delete-document last + +Rules for a replayable story +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Self-contained.** A story should create whatever it needs rather than referencing something an +earlier story produced, wherever that is practical. Cross-story dependencies work but are fragile. + +**Fresh database.** The suite is single-use per database. Stories create rows; replaying them a +second time produces unique constraint violations, revision limits and "already exists" errors. The +database is rebuilt before each run with ``make clean`` followed by ``make init``. + +**Stable references only.** Only seeded ids are safe to reference: + +.. list-table:: + :header-rows: 1 + + * - Entity + - Id + * - Bot, guest and admin users + - 2, 3, 4 + * - Showcase Document + - 1 + * - Workflows + - 1 to 8 + * - Workflow steps + - 1 to 19 + +**Destructive stories sort last.** A story that deletes a record is numbered so that it runs after +everything depending on that record. + +**Record against the state the story will replay into.** The most common cause of a story that passes +when recorded and fails on replay is that it was captured against a database holding far more rows +than a replay produces. Recording against a freshly replayed database avoids this. + +Adding a story +~~~~~~~~~~~~~~ + +1. Rebuild the database and replay the existing suite, so that the state matches what the new story + will encounter at its position in the run. +2. Record the story through the dashboard. +3. Inspect it and confirm it contains a real mutation. +4. Place it in the suite folder with a number that positions it correctly. +5. Rebuild the database and run the whole suite. + +Architecture +------------ + +.. list-table:: + :header-rows: 1 + + * - Component + - Path + - Role + * - Recorder socket + - ``backend/webserver/sockets/recorder.js`` + - Catch-all listeners, writes traces + * - Replayer socket + - ``backend/webserver/sockets/replayer.js`` + - Drives replay from the server side + * - Replay authentication + - ``backend/utils/replay-auth.js`` + - Establishes a session for the recorded user + * - Session helpers + - ``backend/utils/replay-sessions.js`` + - Trace grouping, session building, buffer revival + * - Replay worker + - ``backend/utils/replay-worker.js`` + - Emits traces and collects acknowledgements + * - Command line entry point + - ``backend/scripts/perf/cli.js`` + - Argument parsing, configuration validation, mode dispatch + * - Mode handlers + - ``backend/scripts/perf/`` + - One file per mode + * - Shared helpers + - ``backend/scripts/perf/utils/`` + - Metric sampling, reporting, trace statistics + * - Dashboard + - ``frontend/src/components/dashboard/socketprofiler/`` + - Recording and replay interface + +Recording uses the Socket.IO *onAny* and *onAnyOutgoing* hooks, which is why capture is server-wide +rather than per-connection. + +Limitations +----------- + +**Hashes are regenerated on insert.** ``MetaModel.add`` assigns a fresh UUID hash to every inserted +row, so a trace referencing a hash captured during recording will not locate the same row on replay. +The replayer remaps hashes observed during a run, but a story that writes a recorded hash back — a +rename, for example — can still overwrite a valid pointer with a stale value. + +**Numeric ids are not remapped.** Unlike hashes, ids contained in a payload are replayed as captured. +A story referencing a document by id only succeeds if that id exists at that point in the run. + +**Recording is server-wide.** One recording is active at a time across the whole server. If any +participating socket disconnects, the recording stops and is flagged as disconnected. + +**Recording ownership is not tracked.** The recording table stores the recorded user, not the +administrator who started the capture. + +**Some events are never acknowledged.** A frontend event with no corresponding backend handler +produces no acknowledgement and is reported in a separate category rather than as a failure. + +**Stories carrying dates have a limited lifetime.** A story that sets a deadline embeds that date, and +may begin failing once it passes for reasons unrelated to the platform. diff --git a/frontend/src/basic/navigation/Topbar.vue b/frontend/src/basic/navigation/Topbar.vue index c4889116e..d5720d29f 100644 --- a/frontend/src/basic/navigation/Topbar.vue +++ b/frontend/src/basic/navigation/Topbar.vue @@ -26,13 +26,30 @@ :height="30" /> -
-
+
+
@@ -38,6 +39,7 @@ import { defineAsyncComponent } from "vue"; import Loading from "@/basic/Loading.vue"; import NotFoundPage from "@/auth/NotFound.vue"; + const dashboardModules = import.meta.glob("./dashboard/*.vue"); export default { diff --git a/frontend/src/components/dashboard/SocketProfiler.vue b/frontend/src/components/dashboard/SocketProfiler.vue new file mode 100644 index 000000000..6a2d96a6b --- /dev/null +++ b/frontend/src/components/dashboard/SocketProfiler.vue @@ -0,0 +1,432 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/dashboard/socketprofiler/ImportRecordingModal.vue b/frontend/src/components/dashboard/socketprofiler/ImportRecordingModal.vue new file mode 100644 index 000000000..ae8d5a2cd --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/ImportRecordingModal.vue @@ -0,0 +1,253 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/dashboard/socketprofiler/IterationSessionsModal.vue b/frontend/src/components/dashboard/socketprofiler/IterationSessionsModal.vue new file mode 100644 index 000000000..492a4ca5b --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/IterationSessionsModal.vue @@ -0,0 +1,137 @@ + + + diff --git a/frontend/src/components/dashboard/socketprofiler/RecordingModal.vue b/frontend/src/components/dashboard/socketprofiler/RecordingModal.vue new file mode 100644 index 000000000..346649908 --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/RecordingModal.vue @@ -0,0 +1,223 @@ + + + \ No newline at end of file diff --git a/frontend/src/components/dashboard/socketprofiler/ReplayResultsModal.vue b/frontend/src/components/dashboard/socketprofiler/ReplayResultsModal.vue new file mode 100644 index 000000000..f76f68bcc --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/ReplayResultsModal.vue @@ -0,0 +1,223 @@ + + + diff --git a/frontend/src/components/dashboard/socketprofiler/SessionTracesModal.vue b/frontend/src/components/dashboard/socketprofiler/SessionTracesModal.vue new file mode 100644 index 000000000..aee59cc52 --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/SessionTracesModal.vue @@ -0,0 +1,150 @@ + + + diff --git a/frontend/src/components/dashboard/socketprofiler/StartRecordingModal.vue b/frontend/src/components/dashboard/socketprofiler/StartRecordingModal.vue new file mode 100644 index 000000000..9e9c4ede0 --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/StartRecordingModal.vue @@ -0,0 +1,260 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/dashboard/socketprofiler/StartReplayModal.vue b/frontend/src/components/dashboard/socketprofiler/StartReplayModal.vue new file mode 100644 index 000000000..85a0188dc --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/StartReplayModal.vue @@ -0,0 +1,233 @@ + + + \ No newline at end of file diff --git a/frontend/src/components/dashboard/socketprofiler/TraceDbChangesModal.vue b/frontend/src/components/dashboard/socketprofiler/TraceDbChangesModal.vue new file mode 100644 index 000000000..762417860 --- /dev/null +++ b/frontend/src/components/dashboard/socketprofiler/TraceDbChangesModal.vue @@ -0,0 +1,98 @@ + + +