diff --git a/src/app/admin/create-user/page.tsx b/src/app/admin/create-user/page.tsx index fc221d9..c84438d 100644 --- a/src/app/admin/create-user/page.tsx +++ b/src/app/admin/create-user/page.tsx @@ -42,6 +42,7 @@ export default function AdminUsersPage() { const [loginUser, setLoginUser] = useState('') const [loginDisplayName, setLoginDisplayName] = useState('') const [isAdmin, setIsAdmin] = useState(false) + const [syncingEmails, setSyncingEmails] = useState(false) const [showPwd, setShowPwd] = useState(false) const [generatedPwd, setGeneratedPwd] = useState('') const [pwdUser, setPwdUser] = useState('') @@ -109,6 +110,16 @@ export default function AdminUsersPage() { finally { setDeleting(null) } } + async function handleSyncEmails() { + setSyncingEmails(true) + try { + const res = await fetch('/api/admin/sync-emails', { method: 'POST' }) + const d = await res.json() + showResult(res.ok, res.ok ? `已同步 ${d.synced} 个用户邮箱至各站点` : (d.error || '同步失败')) + } catch { showResult(false, '网络错误') } + finally { setSyncingEmails(false) } + } + const tabItem = (t: string, label: string) => (
diff --git "a/src/app/api/admin/create-user/route.ts\"\"" "b/src/app/api/admin/create-user/route.ts\"\"" new file mode 100644 index 0000000..b6d3ad6 --- /dev/null +++ "b/src/app/api/admin/create-user/route.ts\"\"" @@ -0,0 +1,151 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' +import { sendSetupLinkEmail } from '@/lib/email' +import { signSetupToken } from '@/lib/setup-token' + +const execAsync = promisify(exec) + +const INTERNAL_KEY = 'oa-internal-key-tlyq-2026' + +function generatePassword(): string { + const upper = 'ABCDEFGHJKLMNPQRSTUVWXYZ' + const lower = 'abcdefghjkmnpqrstuvwxyz' + const digits = '23456789' + const special = '!@#$%&*' + const all = upper + lower + digits + special + const crypto = globalThis.crypto + const pick = (s: string) => s[crypto.getRandomValues(new Uint32Array(1))[0] % s.length] + // 确保每种类型至少一个,其余随机填充到 12 位 + let pwd = pick(upper) + pick(lower) + pick(digits) + pick(special) + for (let i = 4; i < 12; i++) pwd += pick(all) + // 打乱顺序 + return pwd.split('').sort(() => crypto.getRandomValues(new Uint32Array(1))[0] - 0x80000000).join('') +} + +async function fetchRoles(siteUrl: string): Promise { + try { + const res = await fetch(`${siteUrl}/api/internal/roles`, { + headers: { 'x-internal-key': INTERNAL_KEY }, + signal: AbortSignal.timeout(5000), + }) + const data = await res.json() + return (data.roles || []).map((r: { name: string }) => r.name) + } catch { + return [] + } +} + +async function syncToSite(siteUrl: string, username: string, password: string): Promise { + try { + const res = await fetch(`${siteUrl}/api/auth/login`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username, password }), + signal: AbortSignal.timeout(10000), + }) + return res.ok + } catch { + return false + } +} + +// 直接更新站点 SQLite 数据库中的用户角色 +function setRoleSQL(dbPath: string, username: string, role: string): string { + return `sqlite3 "${dbPath}" "UPDATE users SET role = '${role}', updated_at = datetime('now', '+8 hours') WHERE username = '${username}';"` +} + +export async function POST(request: Request) { + try { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + const session = verifySharedJwt(token) + if (!session || !(await isLldapAdmin(session.username))) { + return NextResponse.json({ error: '仅管理员可创建用户' }, { status: 403 }) + } + + const { username, displayName, assetsRole, issueRole, email } = await request.json() + if (!username) return NextResponse.json({ error: '用户名不能为空' }, { status: 400 }) + if (!/^[a-z][a-z0-9_.@-]*$/i.test(username)) return NextResponse.json({ error: '用户名格式不合法' }, { status: 400 }) + + const password = generatePassword() + + // 从各站点实时获取可用角色列表 + const [assetsRoles, issueRoles] = await Promise.all([ + fetchRoles('http://assets-ai:3000'), + fetchRoles('http://issue-ai:3000'), + ]) + + const ar = (assetsRole && assetsRoles.includes(assetsRole)) ? assetsRole : 'viewer' + const ir = (issueRole && issueRoles.includes(issueRole)) ? issueRole : 'viewer' + + const safeName = (displayName || username).replace(/'/g, "'\\''") + const safeUser = username.replace(/'/g, "'\\''") + const lldapEmail = email || '' + const d = new Date() + const now = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')} ${String(d.getHours()).padStart(2,'0')}:${String(d.getMinutes()).padStart(2,'0')}:${String(d.getSeconds()).padStart(2,'0')}` + const userUuid = crypto.randomUUID() + + // 1. LLDAP SQLite 插入用户 + const insertSQL = `INSERT OR IGNORE INTO users (user_id, email, display_name, creation_date, uuid, lowercase_email, modified_date, password_modified_date) VALUES ('${username}', '${lldapEmail}', '${safeName}', '${now}', '${userUuid}', LOWER('${lldapEmail}'), '${now}', '${now}');` + await execAsync(`docker exec lldap /bin/sh -c "cat > /tmp/iu.sql <<'EOSQL'\n${insertSQL}\nEOSQL\nsqlite3 /data/users.db < /tmp/iu.sql"`, { timeout: 5000 }) + + // 2. 从 LLDAP 容器动态获取 admin 密码(不硬编码,admin 改密码后无需改 OA 配置) + const { stdout: adminPassOut } = await execAsync('docker exec lldap printenv LLDAP_ADMIN_PASSWORD', { timeout: 3000 }) + const adminPass = (adminPassOut.trim() || 'admin123').replace(/'/g, "'\\''") + + // 3. LLDAP 设置密码 —— 通过 base64 传输避免 shell 特殊字符问题 + const b64Pass = Buffer.from(password).toString('base64') + await execAsync(`docker exec lldap /bin/sh -c "echo '${b64Pass}' | base64 -d > /tmp/userpwd.txt"`, { timeout: 3000 }) + const pwdCmd = `LLDAP_USER_PASSWORD=$(cat /tmp/userpwd.txt) ./lldap_set_password --base-url http://localhost:17170 --admin-username admin --admin-password '${adminPass}' --username '${safeUser}'` + await execAsync(`docker exec lldap /bin/sh -c '${pwdCmd}'`, { timeout: 10000 }) + + // 3. 自动登录各站点触发用户同步 + const [assetsOk, issueOk] = await Promise.all([ + syncToSite('http://assets-ai:3000', username, password), + syncToSite('http://issue-ai:3000', username, password), + ]) + + // 4. 直接更新各站点 SQLite 的角色(覆盖 viewer 默认值) + const assetsDb = process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db' + const issueDb = process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db' + const roleResults = { assets: false, issue: false } + if (assetsOk) { + try { await execAsync(setRoleSQL(assetsDb, username, ar), { timeout: 3000 }); roleResults.assets = true } catch {} + } + if (issueOk) { + try { await execAsync(setRoleSQL(issueDb, username, ir), { timeout: 3000 }); roleResults.issue = true } catch {} + } + + // 5. 如果提供了邮箱,发送密码设置链接(不再在邮件中发送明文密码) + let emailSent = false + if (email && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { + try { + const setupToken = signSetupToken(username) + const setupUrl = `https://oa.tlyq.ai/setup-password?token=${setupToken}` + await sendSetupLinkEmail(email, username, setupUrl, displayName || username) + emailSent = true + } catch (e) { + console.error('发送邮件失败:', e) + } + } + + return NextResponse.json({ + success: true, + password: emailSent ? undefined : password, + synced: { assets: assetsOk, issue: issueOk }, + roles: { assets: ar, issue: ir, applied: roleResults }, + emailSent, + message: emailSent + ? `用户已创建,密码设置链接已发送至 ${email}` + : '用户已创建并同步至所有站点', + }) + } catch (e) { + const msg = e instanceof Error ? e.message : '创建失败' + return NextResponse.json({ error: msg }, { status: 500 }) + } +} diff --git "a/src/app/api/admin/roles/route.ts\"\"" "b/src/app/api/admin/roles/route.ts\"\"" new file mode 100644 index 0000000..ae6c4f5 --- /dev/null +++ "b/src/app/api/admin/roles/route.ts\"\"" @@ -0,0 +1,32 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' + +const INTERNAL_KEY = 'oa-internal-key-tlyq-2026' + +async function fetchRoles(url: string): Promise<{ name: string; display_name: string }[]> { + try { + const res = await fetch(`${url}/api/internal/roles`, { + headers: { 'x-internal-key': INTERNAL_KEY }, + signal: AbortSignal.timeout(5000), + }) + const data = await res.json() + return data.roles || [] + } catch { return [] } +} + +export async function GET() { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + const session = verifySharedJwt(token) + if (!session || !(await isLldapAdmin(session.username))) return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) + + const [assetsRoles, issueRoles] = await Promise.all([ + fetchRoles('http://assets-ai:3000'), + fetchRoles('http://issue-ai:3000'), + ]) + + return NextResponse.json({ assets: assetsRoles, issue: issueRoles }) +} diff --git a/src/app/api/admin/sync-emails/route.ts b/src/app/api/admin/sync-emails/route.ts new file mode 100644 index 0000000..eb7cab9 --- /dev/null +++ b/src/app/api/admin/sync-emails/route.ts @@ -0,0 +1,48 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' + +const execAsync = promisify(exec) +const ASSETS_DB = process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db' +const ISSUE_DB = process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db' + +export async function POST() { + try { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + const session = verifySharedJwt(token) + if (!session || !(await isLldapAdmin(session.username))) { + return NextResponse.json({ error: '仅管理员可操作' }, { status: 403 }) + } + + const { stdout } = await execAsync( + `docker exec lldap sqlite3 /data/users.db "SELECT user_id, email FROM users WHERE email != '';"`, + { timeout: 5000 } + ) + const lines = stdout.trim().split('\n').filter(Boolean) + let synced = 0 + + for (const line of lines) { + const [user, mail] = line.split('|') + const su = user.replace(/'/g, "''") + const sm = (mail || '').replace(/'/g, "''") + for (const db of [ASSETS_DB, ISSUE_DB]) { + try { + await execAsync( + `sqlite3 "${db}" "UPDATE users SET email = '${sm}', updated_at = datetime('now', '+8 hours') WHERE username = '${su}';"`, + { timeout: 3000 } + ) + } catch {} + } + synced++ + } + + return NextResponse.json({ success: true, synced }) + } catch (e) { + return NextResponse.json({ error: '同步失败' }, { status: 500 }) + } +} diff --git "a/src/app/api/admin/sync-emails/route.ts\"\"" "b/src/app/api/admin/sync-emails/route.ts\"\"" new file mode 100644 index 0000000..eb7cab9 --- /dev/null +++ "b/src/app/api/admin/sync-emails/route.ts\"\"" @@ -0,0 +1,48 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' + +const execAsync = promisify(exec) +const ASSETS_DB = process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db' +const ISSUE_DB = process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db' + +export async function POST() { + try { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + const session = verifySharedJwt(token) + if (!session || !(await isLldapAdmin(session.username))) { + return NextResponse.json({ error: '仅管理员可操作' }, { status: 403 }) + } + + const { stdout } = await execAsync( + `docker exec lldap sqlite3 /data/users.db "SELECT user_id, email FROM users WHERE email != '';"`, + { timeout: 5000 } + ) + const lines = stdout.trim().split('\n').filter(Boolean) + let synced = 0 + + for (const line of lines) { + const [user, mail] = line.split('|') + const su = user.replace(/'/g, "''") + const sm = (mail || '').replace(/'/g, "''") + for (const db of [ASSETS_DB, ISSUE_DB]) { + try { + await execAsync( + `sqlite3 "${db}" "UPDATE users SET email = '${sm}', updated_at = datetime('now', '+8 hours') WHERE username = '${su}';"`, + { timeout: 3000 } + ) + } catch {} + } + synced++ + } + + return NextResponse.json({ success: true, synced }) + } catch (e) { + return NextResponse.json({ error: '同步失败' }, { status: 500 }) + } +} diff --git "a/src/app/api/admin/user-roles/route.ts\"\"" "b/src/app/api/admin/user-roles/route.ts\"\"" new file mode 100644 index 0000000..a0ff2e4 --- /dev/null +++ "b/src/app/api/admin/user-roles/route.ts\"\"" @@ -0,0 +1,104 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' + +const execAsync = promisify(exec) +const INTERNAL_KEY = 'oa-internal-key-tlyq-2026' + +async function fetchRoles(siteUrl: string): Promise { + try { + const res = await fetch(`${siteUrl}/api/internal/roles`, { + headers: { 'x-internal-key': INTERNAL_KEY }, + signal: AbortSignal.timeout(5000), + }) + const data = await res.json() + return (data.roles || []).map((r: { name: string }) => r.name) + } catch { return [] } +} + +function queryDb(dbPath: string, sql: string): Promise { + return execAsync(`sqlite3 "${dbPath}" "${sql.replace(/"/g, '\\"')}"`, { timeout: 3000 }).then(r => r.stdout).catch(() => '') +} + +async function getSiteUsers(dbPath: string, roles: string[]): Promise<{ username: string; display_name: string; role: string }[]> { + const out = await queryDb(dbPath, 'SELECT username, display_name, role FROM users WHERE is_active=1 ORDER BY username;') + return out.trim().split('\n').filter(Boolean).map(line => { + const [username, display_name, role] = line.split('|') + return { username, display_name: display_name || username, role: roles.includes(role) ? role : 'viewer' } + }) +} + +async function checkAdmin() { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return false + const session = verifySharedJwt(token) + return session ? isLldapAdmin(session.username) : false +} + +// GET — 列出各站点用户及其角色 +export async function GET() { + if (!(await checkAdmin())) return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) + + try { + const [assetsRoles, issueRoles] = await Promise.all([ + fetchRoles('http://assets-ai:3000'), + fetchRoles('http://issue-ai:3000'), + ]) + + const [assetsUsers, issueUsers] = await Promise.all([ + getSiteUsers(process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db', assetsRoles), + getSiteUsers(process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db', issueRoles), + ]) + + // 从 LLDAP 获取所有用户邮箱 + let emails: Record = {} + try { + const { stdout } = await execAsync( + `docker exec lldap /bin/sh -c "echo 'SELECT user_id, email FROM users;' | sqlite3 /data/users.db"`, + { timeout: 3000 } + ) + stdout.trim().split('\n').filter(Boolean).forEach(line => { + const [uid, e] = line.split('|') + emails[uid] = e || '' + }) + } catch {} + + return NextResponse.json({ + assetsRoles, + issueRoles, + users: { assets: assetsUsers, issue: issueUsers }, + emails, + }) + } catch (e) { + return NextResponse.json({ error: '查询失败' }, { status: 500 }) + } +} + +// PUT — 更新用户角色 +export async function PUT(request: Request) { + if (!(await checkAdmin())) return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) + + try { + const { username, site, role } = await request.json() + if (!username || !site || !role) return NextResponse.json({ error: '参数不完整' }, { status: 400 }) + if (username === 'admin' || username === 'localadmin') return NextResponse.json({ error: '不能修改系统保留用户角色' }, { status: 400 }) + + const dbPath = site === 'assets' + ? (process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db') + : (process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db') + + // 验证角色合法性 + const roles = await fetchRoles(`http://${site}-ai:3000`) + if (!roles.includes(role)) return NextResponse.json({ error: '无效的角色' }, { status: 400 }) + + await execAsync(`sqlite3 "${dbPath}" "UPDATE users SET role='${role}', updated_at=datetime('now', '+8 hours') WHERE username='${username}';"`, { timeout: 3000 }) + + return NextResponse.json({ success: true }) + } catch (e) { + return NextResponse.json({ error: '更新失败' }, { status: 500 }) + } +} diff --git "a/src/app/api/admin/users/route.ts\"\"" "b/src/app/api/admin/users/route.ts\"\"" new file mode 100644 index 0000000..8d621ee --- /dev/null +++ "b/src/app/api/admin/users/route.ts\"\"" @@ -0,0 +1,115 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' + +const execAsync = promisify(exec) + +function checkAdmin() { + return async () => { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return false + const session = verifySharedJwt(token) + return session ? isLldapAdmin(session.username) : false + } +} + +// GET — 列出 LLDAP 中所有用户 +export async function GET() { + const isAdmin = await checkAdmin()() + if (!isAdmin) return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) + + try { + const { stdout } = await execAsync( + `docker exec lldap /bin/sh -c "echo 'SELECT user_id, email, display_name, creation_date FROM users ORDER BY creation_date DESC;' | sqlite3 /data/users.db"`, + { timeout: 5000 } + ) + const users = stdout.trim().split('\n').filter(Boolean).map(line => { + const [user_id, email, display_name, creation_date] = line.split('|') + return { username: user_id, email, displayName: display_name || user_id, createdAt: creation_date } + }) + return NextResponse.json({ users }) + } catch (e) { + return NextResponse.json({ error: '查询失败' }, { status: 500 }) + } +} + +// DELETE — 删除用户(LLDAP + 各站点) +export async function DELETE(request: Request) { + const isAdmin = await checkAdmin()() + if (!isAdmin) return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) + + try { + const { username } = await request.json() + if (!username) return NextResponse.json({ error: '用户名不能为空' }, { status: 400 }) + if (username === 'admin' || username === 'localadmin') { + return NextResponse.json({ error: '不能删除系统保留用户' }, { status: 400 }) + } + + const safeUser = username.replace(/'/g, "''") + + // 删除 LLDAP 用户 + const lldapSQL = `DELETE FROM users WHERE user_id='${safeUser}';` + await execAsync( + `docker exec lldap /bin/sh -c "cat > /tmp/del.sql <<'EOSQL'\n${lldapSQL}\nEOSQL\nsqlite3 /data/users.db < /tmp/del.sql"`, + { timeout: 5000 } + ) + + // 删除各站点本地用户 + const results: Record = {} + for (const [site, dbPath] of Object.entries({ + assets: process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db', + issue: process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db', + })) { + try { + await execAsync(`sqlite3 "${dbPath}" "DELETE FROM users WHERE username='${safeUser}';"`, { timeout: 3000 }) + results[site] = true + } catch { results[site] = false } + } + + return NextResponse.json({ success: true, deleted: results }) + } catch (e) { + return NextResponse.json({ error: '删除失败' }, { status: 500 }) + } +} + +// PATCH — 修改用户邮箱(admin 权限) +export async function PATCH(request: Request) { + const isAdmin = await checkAdmin()() + if (!isAdmin) return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) + + try { + const { username, email } = await request.json() + if (!username) return NextResponse.json({ error: '用户名不能为空' }, { status: 400 }) + if (email !== '' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { + return NextResponse.json({ error: '邮箱格式不合法' }, { status: 400 }) + } + + const safeUser = username.replace(/'/g, "''") + const safeEmail = (email || '').replace(/'/g, "''") + const d = new Date() + const now = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')} ${String(d.getHours()).padStart(2,'0')}:${String(d.getMinutes()).padStart(2,'0')}:${String(d.getSeconds()).padStart(2,'0')}` + + const updateSQL = `UPDATE users SET email = '${safeEmail}', lowercase_email = LOWER('${safeEmail}'), modified_date = '${now}' WHERE user_id = '${safeUser}';` + await execAsync( + `docker exec lldap /bin/sh -c "cat > /tmp/uea.sql <<'EOSQL'\n${updateSQL}\nEOSQL\nsqlite3 /data/users.db < /tmp/uea.sql"`, + { timeout: 5000 } + ) + + // 同步更新 assets / issue 本地用户表 + const assetsDb = process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db' + const issueDb = process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db' + for (const dbPath of [assetsDb, issueDb]) { + try { + await execAsync(`sqlite3 "${dbPath}" "UPDATE users SET email = '${safeEmail}', updated_at = datetime('now', '+8 hours') WHERE username = '${safeUser}';"`, { timeout: 3000 }) + } catch {} + } + + return NextResponse.json({ success: true, username, email: email || '' }) + } catch (e) { + return NextResponse.json({ error: '修改失败' }, { status: 500 }) + } +} diff --git "a/src/app/api/auth/change-password/route.ts\"\"" "b/src/app/api/auth/change-password/route.ts\"\"" new file mode 100644 index 0000000..420b7c9 --- /dev/null +++ "b/src/app/api/auth/change-password/route.ts\"\"" @@ -0,0 +1,56 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' + +const execAsync = promisify(exec) + +export async function POST(request: Request) { + try { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + + const session = verifySharedJwt(token) + if (!session) return NextResponse.json({ error: '会话已过期' }, { status: 401 }) + + const { currentPassword, newPassword } = await request.json() + if (!currentPassword || !newPassword) { + return NextResponse.json({ error: '请输入当前密码和新密码' }, { status: 400 }) + } + if (newPassword.length < 8) { + return NextResponse.json({ error: '新密码至少 8 位' }, { status: 400 }) + } + // 密码复杂度:大写/小写/数字/特殊字符 4选3 + const hasUpper = /[A-Z]/.test(newPassword) + const hasLower = /[a-z]/.test(newPassword) + const hasDigit = /[0-9]/.test(newPassword) + const hasSpecial = /[^A-Za-z0-9]/.test(newPassword) + const complexityScore = [hasUpper, hasLower, hasDigit, hasSpecial].filter(Boolean).length + if (complexityScore < 3) { + return NextResponse.json({ error: '密码需包含大写字母、小写字母、数字、特殊字符中至少 3 种' }, { status: 400 }) + } + + // 从 LLDAP 容器动态获取 admin 密码(不硬编码,admin 改密码后无需改 OA 配置) + const { stdout: adminPassOut } = await execAsync('docker exec lldap printenv LLDAP_ADMIN_PASSWORD', { timeout: 3000 }) + const adminPass = (adminPassOut.trim() || 'admin123').replace(/'/g, "'\\''") + + const safeUser = session.username.replace(/'/g, "'\\''") + const safePass = newPassword.replace(/'/g, "'\\''") + const cmd = `docker exec lldap ./lldap_set_password --base-url http://localhost:17170 --admin-username admin --admin-password '${adminPass}' --username '${safeUser}' --password '${safePass}'` + + const { stdout, stderr } = await execAsync(cmd, { timeout: 10000 }) + if (stderr && !stderr.includes('Successfully')) { + return NextResponse.json({ error: stderr.trim() || '修改失败' }, { status: 500 }) + } + + return NextResponse.json({ success: true }) + } catch (err) { + const msg = err instanceof Error ? err.message : '修改失败' + if (msg.includes('command not found') || msg.includes('No such container')) { + return NextResponse.json({ error: '密码服务不可用' }, { status: 503 }) + } + return NextResponse.json({ error: msg }, { status: 500 }) + } +} diff --git "a/src/app/api/auth/login/route.ts\"\"" "b/src/app/api/auth/login/route.ts\"\"" new file mode 100644 index 0000000..95a5acf --- /dev/null +++ "b/src/app/api/auth/login/route.ts\"\"" @@ -0,0 +1,32 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { signSharedJwt, sharedCookieConfig } from '@/lib/jwt' +import { ldapAuth } from '@/lib/ldap' + +export async function POST(request: Request) { + try { + const { username, password } = await request.json() + if (!username || !password) { + return NextResponse.json({ error: '请输入用户名和密码' }, { status: 400 }) + } + + const result = await ldapAuth(username, password) + if (!result.success) { + if (result.unreachable) { + return NextResponse.json({ error: '认证服务暂时不可用,请稍后再试' }, { status: 503 }) + } + return NextResponse.json({ error: '用户名或密码错误' }, { status: 401 }) + } + + const token = signSharedJwt({ username: result.username!, displayName: result.displayName! }) + const cfg = sharedCookieConfig() + const cookieStore = await cookies() + cookieStore.set(cfg.name, token, cfg) + + return NextResponse.json({ + user: { username: result.username, displayName: result.displayName }, + }) + } catch { + return NextResponse.json({ error: '登录失败' }, { status: 500 }) + } +} diff --git "a/src/app/api/auth/logout/route.ts\"\"" "b/src/app/api/auth/logout/route.ts\"\"" new file mode 100644 index 0000000..0b6db2d --- /dev/null +++ "b/src/app/api/auth/logout/route.ts\"\"" @@ -0,0 +1,8 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' + +export async function POST() { + const cookieStore = await cookies() + cookieStore.set('tlyq_session', '', { maxAge: 0, path: '/' }) + return NextResponse.redirect(new URL('/login', process.env.NEXT_PUBLIC_URL || 'https://oa.tlyq.ai')) +} diff --git "a/src/app/api/auth/me/route.ts\"\"" "b/src/app/api/auth/me/route.ts\"\"" new file mode 100644 index 0000000..5ef8da0 --- /dev/null +++ "b/src/app/api/auth/me/route.ts\"\"" @@ -0,0 +1,82 @@ +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySharedJwt } from '@/lib/jwt' +import { isLldapAdmin } from '@/lib/ldap' + +const execAsync = promisify(exec) + +async function getLldapEmail(username: string): Promise { + try { + const safeUser = username.replace(/'/g, "''") + const { stdout } = await execAsync( + `docker exec lldap /bin/sh -c "echo 'SELECT email FROM users WHERE user_id='\\''${safeUser}'\\'';' | sqlite3 /data/users.db"`, + { timeout: 3000 } + ) + return stdout.trim() || '' + } catch { return '' } +} + +export async function GET() { + try { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + + const payload = verifySharedJwt(token) + if (!payload) return NextResponse.json({ error: '会话已过期' }, { status: 401 }) + + const [admin, email] = await Promise.all([ + isLldapAdmin(payload.username), + getLldapEmail(payload.username), + ]) + + return NextResponse.json({ + user: { username: payload.username, displayName: payload.displayName, email, isAdmin: admin }, + }) + } catch { + return NextResponse.json({ error: '获取用户信息失败' }, { status: 500 }) + } +} + +export async function PUT(request: Request) { + try { + const cookieStore = await cookies() + const token = cookieStore.get('tlyq_session')?.value + if (!token) return NextResponse.json({ error: '未登录' }, { status: 401 }) + + const payload = verifySharedJwt(token) + if (!payload) return NextResponse.json({ error: '会话已过期' }, { status: 401 }) + + const { email } = await request.json() + if (email !== '' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { + return NextResponse.json({ error: '邮箱格式不合法' }, { status: 400 }) + } + + const safeUser = payload.username.replace(/'/g, "''") + const safeEmail = (email || '').replace(/'/g, "''") + const d = new Date() + const now = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')} ${String(d.getHours()).padStart(2,'0')}:${String(d.getMinutes()).padStart(2,'0')}:${String(d.getSeconds()).padStart(2,'0')}` + + const updateSQL = `UPDATE users SET email = '${safeEmail}', lowercase_email = LOWER('${safeEmail}'), modified_date = '${now}' WHERE user_id = '${safeUser}';` + await execAsync( + `docker exec lldap /bin/sh -c "cat > /tmp/ue.sql <<'EOSQL'\n${updateSQL}\nEOSQL\nsqlite3 /data/users.db < /tmp/ue.sql"`, + { timeout: 5000 } + ) + + // 同步更新 assets / issue 本地用户表 + const assetsDb = process.env.ASSETS_DB_PATH || '/Users/niuniu/programs/docker/assets-ai/data/assets.db' + const issueDb = process.env.ISSUE_DB_PATH || '/Users/niuniu/programs/docker/issue-ai/data/issue.db' + for (const dbPath of [assetsDb, issueDb]) { + try { + await execAsync(`sqlite3 "${dbPath}" "UPDATE users SET email = '${safeEmail}', updated_at = datetime('now', '+8 hours') WHERE username = '${safeUser}';"`, { timeout: 3000 }) + } catch {} + } + + return NextResponse.json({ success: true, email: email || '' }) + } catch (e) { + const msg = e instanceof Error ? e.message : '修改失败' + return NextResponse.json({ error: msg }, { status: 500 }) + } +} diff --git "a/src/app/api/auth/setup-password/route.ts\"\"" "b/src/app/api/auth/setup-password/route.ts\"\"" new file mode 100644 index 0000000..312dfe2 --- /dev/null +++ "b/src/app/api/auth/setup-password/route.ts\"\"" @@ -0,0 +1,54 @@ +import { NextResponse } from 'next/server' +import { exec } from 'child_process' +import { promisify } from 'util' +import { verifySetupToken } from '@/lib/setup-token' + +const execAsync = promisify(exec) + +export async function POST(request: Request) { + try { + const { token, password } = await request.json() + if (!token || !password) { + return NextResponse.json({ error: '参数不完整' }, { status: 400 }) + } + + const payload = verifySetupToken(token) + if (!payload) { + return NextResponse.json({ error: '链接已过期或无效,请联系管理员重新创建账号' }, { status: 403 }) + } + + if (password.length < 8) { + return NextResponse.json({ error: '密码至少 8 位' }, { status: 400 }) + } + const hasUpper = /[A-Z]/.test(password) + const hasLower = /[a-z]/.test(password) + const hasDigit = /[0-9]/.test(password) + const hasSpecial = /[^A-Za-z0-9]/.test(password) + const score = [hasUpper, hasLower, hasDigit, hasSpecial].filter(Boolean).length + if (score < 3) { + return NextResponse.json({ error: '密码需包含大写字母、小写字母、数字、特殊字符中至少 3 种' }, { status: 400 }) + } + + const { stdout: adminPassOut } = await execAsync( + 'docker exec lldap printenv LLDAP_ADMIN_PASSWORD', { timeout: 3000 } + ) + const adminPass = (adminPassOut.trim() || 'admin123').replace(/'/g, "'\\''") + + const safeUser = payload.username.replace(/'/g, "'\\''") + const safePass = password.replace(/'/g, "'\\''") + const cmd = `docker exec lldap ./lldap_set_password --base-url http://localhost:17170 --admin-username admin --admin-password '${adminPass}' --username '${safeUser}' --password '${safePass}'` + + const { stderr } = await execAsync(cmd, { timeout: 10000 }) + if (stderr && !stderr.includes('Successfully')) { + return NextResponse.json({ error: stderr.trim() || '设置失败' }, { status: 500 }) + } + + return NextResponse.json({ success: true }) + } catch (err) { + const msg = err instanceof Error ? err.message : '设置失败' + if (msg.includes('command not found') || msg.includes('No such container')) { + return NextResponse.json({ error: '密码服务不可用' }, { status: 503 }) + } + return NextResponse.json({ error: msg }, { status: 500 }) + } +} diff --git "a/src/app/page.tsx\"\"" "b/src/app/page.tsx\"\"" new file mode 100644 index 0000000..895c993 --- /dev/null +++ "b/src/app/page.tsx\"\"" @@ -0,0 +1,109 @@ +import { cookies } from 'next/headers' +import { redirect } from 'next/navigation' +import { verifySharedJwt } from '@/lib/jwt' +import Header from '@/components/Header' + +function siteUrl(url: string, domain: string): string { + if (process.env.NODE_ENV === 'production') { + return `https://${domain}` + } + return url +} + +const CORE_SITES = [ + { name: '资产管理', url: 'https://assets.tlyq.ai', desc: 'GPU 服务器、存储服务器等硬件设备信息管理与实时监控', tag: 'CMDB', dot: '#2563eb', domain: 'assets.tlyq.ai' }, + { name: '工单跟踪', url: 'https://issue.tlyq.ai', desc: '故障工单全流程管理,SLA 自动计算,月度/周度报告导出', tag: 'ITS', dot: '#7c3aed', domain: 'issue.tlyq.ai' }, +] + +const OTHER_SITES = [ + { name: '官网', url: 'https://www.tlyq.ai', desc: 'tlyq.ai 企业官方网站', tag: 'WWW', dot: '#059669', domain: 'www.tlyq.ai' }, + { name: '云平台', url: 'https://cloud.tlyq.ai', desc: '云服务登录入口与资源概览', tag: 'CLOUD', dot: '#d97706', domain: 'cloud.tlyq.ai' }, + { name: 'Token 工厂', url: 'https://token.tlyq.ai', desc: 'Token 管理与发放平台', tag: 'TOKEN', dot: '#e11d48', domain: 'token.tlyq.ai' }, + { name: '代码仓库', url: 'https://git.tlyq.ai', desc: 'Gitea 代码托管与版本管理', tag: 'GIT', dot: '#db2777', domain: 'git.tlyq.ai' }, +] + +const COLORS: Record = { + '#2563eb': { light: 'rgba(37,99,235,0.08)', tag: '#2563eb' }, + '#7c3aed': { light: 'rgba(124,58,237,0.08)', tag: '#7c3aed' }, + '#059669': { light: 'rgba(5,150,105,0.08)', tag: '#059669' }, + '#d97706': { light: 'rgba(217,119,6,0.08)', tag: '#d97706' }, + '#e11d48': { light: 'rgba(225,29,72,0.08)', tag: '#e11d48' }, + '#db2777': { light: 'rgba(219,39,119,0.08)', tag: '#db2777' }, +} + +export default async function HomePage() { + const cookieStore = await cookies() + const sessionCookie = cookieStore.get('session')?.value + let username = '' + if (sessionCookie) { + try { username = JSON.parse(sessionCookie).username || '' } catch { } + } + if (!username) redirect('/login') + + const tlyqToken = cookieStore.get('tlyq_session')?.value + let displayName = username + if (tlyqToken) { + const shared = verifySharedJwt(tlyqToken) + if (shared && shared.displayName && shared.displayName !== shared.username) { + displayName = shared.displayName + } + } + + return ( +
+
+ +
+
+
tlyq.ai / OA PORTAL
+

欢迎回来,{displayName}

+
+ +
核心系统
+
+ {CORE_SITES.map(site => { + const c = COLORS[site.dot] + return ( + +
+
+
{site.name}
+ {site.tag} +
+
{site.desc}
+
{site.domain} →
+
+ ) + })} +
+ +
其他站点
+
+ {OTHER_SITES.map(site => { + const c = COLORS[site.dot] + return ( + +
+
+
{site.name}
+ {site.tag} +
+
{site.desc}
+
{site.domain} →
+
+ ) + })} +
+ +
+
+ ) +} diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo new file mode 100644 index 0000000..3005d00 --- /dev/null +++ b/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./.next/types/routes.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/@types/react/compiler-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/root-params.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./next.config.ts","./src/middleware.ts","./src/lib/jwt.ts","./node_modules/@types/asn1/index.d.ts","./node_modules/ldapts/controls/control.d.ts","./node_modules/ldapts/controls/entrychangenotificationcontrol.d.ts","./node_modules/ldapts/controls/pagedresultscontrol.d.ts","./node_modules/ldapts/controls/persistentsearchcontrol.d.ts","./node_modules/ldapts/controls/serversidesortingrequestcontrol.d.ts","./node_modules/ldapts/controls/index.d.ts","./node_modules/ldapts/dn/rdn.d.ts","./node_modules/ldapts/dn/dn.d.ts","./node_modules/ldapts/dn/index.d.ts","./node_modules/ldapts/errors/messageparsererror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/resultcodeerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/adminlimitexceedederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/affectsmultipledsaserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/aliasderefproblemerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/aliasproblemerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/alreadyexistserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/authmethodnotsupportederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/busyerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/confidentialityrequirederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/constraintviolationerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/inappropriateautherror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/inappropriatematchingerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/insufficientaccesserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/invalidcredentialserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/invaliddnsyntaxerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/invalidsyntaxerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/isleaferror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/loopdetecterror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/namingviolationerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/noobjectclassmodserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/nosuchattributeerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/nosuchobjecterror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/notallowedonnonleaferror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/notallowedonrdnerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/noresulterror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/objectclassviolationerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/operationserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/protocolerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/resultstoolargeerror.d.ts","./node_modules/ldapts/protocoloperation.d.ts","./node_modules/ldapts/messages/message.d.ts","./node_modules/ldapts/messages/messageresponse.d.ts","./node_modules/ldapts/messages/bindresponse.d.ts","./node_modules/ldapts/errors/resultcodeerrors/saslbindinprogresserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/sizelimitexceedederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/strongauthrequirederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/timelimitexceedederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/tlsnotsupportederror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/typeorvalueexistserror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/unavailablecriticalextensionerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/unavailableerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/undefinedtypeerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/unknownstatuscodeerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/unwillingtoperformerror.d.ts","./node_modules/ldapts/errors/resultcodeerrors/index.d.ts","./node_modules/ldapts/errors/index.d.ts","./node_modules/ldapts/searchfilter.d.ts","./node_modules/ldapts/filters/filter.d.ts","./node_modules/ldapts/filters/andfilter.d.ts","./node_modules/ldapts/filters/approximatefilter.d.ts","./node_modules/ldapts/filters/equalityfilter.d.ts","./node_modules/ldapts/filters/extensiblefilter.d.ts","./node_modules/ldapts/filters/greaterthanequalsfilter.d.ts","./node_modules/ldapts/filters/lessthanequalsfilter.d.ts","./node_modules/ldapts/filters/notfilter.d.ts","./node_modules/ldapts/filters/orfilter.d.ts","./node_modules/ldapts/filters/presencefilter.d.ts","./node_modules/ldapts/filters/substringfilter.d.ts","./node_modules/ldapts/filters/index.d.ts","./node_modules/ldapts/messages/abandonrequest.d.ts","./node_modules/ldapts/attribute.d.ts","./node_modules/ldapts/messages/addrequest.d.ts","./node_modules/ldapts/messages/addresponse.d.ts","./node_modules/ldapts/messages/bindrequest.d.ts","./node_modules/ldapts/messages/comparerequest.d.ts","./node_modules/ldapts/messages/compareresponse.d.ts","./node_modules/ldapts/messages/deleterequest.d.ts","./node_modules/ldapts/messages/deleteresponse.d.ts","./node_modules/ldapts/messages/extendedrequest.d.ts","./node_modules/ldapts/messages/extendedresponse.d.ts","./node_modules/ldapts/messages/modifydnrequest.d.ts","./node_modules/ldapts/messages/modifydnresponse.d.ts","./node_modules/ldapts/change.d.ts","./node_modules/ldapts/messages/modifyrequest.d.ts","./node_modules/ldapts/messages/modifyresponse.d.ts","./node_modules/ldapts/messages/searchentry.d.ts","./node_modules/ldapts/messages/searchreference.d.ts","./node_modules/ldapts/client.d.ts","./node_modules/ldapts/messages/searchrequest.d.ts","./node_modules/ldapts/messages/searchresponse.d.ts","./node_modules/ldapts/messages/unbindrequest.d.ts","./node_modules/ldapts/messages/index.d.ts","./node_modules/ldapts/controlparser.d.ts","./node_modules/ldapts/filterparser.d.ts","./node_modules/strict-event-emitter-types/types/src/index.d.ts","./node_modules/ldapts/messageparser.d.ts","./node_modules/ldapts/messageresponsestatus.d.ts","./node_modules/ldapts/statuscodeparser.d.ts","./node_modules/ldapts/index.d.ts","./src/lib/ldap.ts","./node_modules/resend/dist/index.d.mts","./src/lib/email.ts","./src/lib/setup-token.ts","./src/app/api/admin/create-user/route.ts","./src/app/api/admin/roles/route.ts","./src/app/api/admin/sync-emails/route.ts","./src/app/api/admin/user-roles/route.ts","./src/app/api/admin/users/route.ts","./src/app/api/auth/change-password/route.ts","./src/app/api/auth/login/route.ts","./src/app/api/auth/logout/route.ts","./src/app/api/auth/me/route.ts","./src/app/api/auth/setup-password/route.ts","./src/app/layout.tsx","./src/components/themetoggle.tsx","./src/components/headerui.tsx","./src/components/header.tsx","./src/app/page.tsx","./src/app/admin/create-user/role-manager.tsx","./src/app/admin/create-user/page.tsx","./src/app/login/page.tsx","./src/app/profile/change-password-form.tsx","./src/app/profile/email-editor.tsx","./src/app/profile/page.tsx","./src/app/settings/page.tsx","./src/app/setup-password/page.tsx","./.next/types/cache-life.d.ts","./.next/types/validator.ts","./.next/types/app/layout.ts","./.next/types/app/page.ts","./.next/types/app/admin/create-user/page.ts","./.next/types/app/api/admin/roles/route.ts","./.next/types/app/api/admin/user-roles/route.ts","./.next/types/app/api/admin/users/route.ts","./.next/types/app/api/auth/login/route.ts","./.next/types/app/api/auth/me/route.ts","./node_modules/@types/uuid/index.d.ts"],"fileIdsList":[[100,148,165,166,338,619],[100,148,165,166,489,604],[100,148,165,166,489,606],[100,148,165,166,489,607],[100,148,165,166,489,609],[100,148,165,166,489,611],[100,148,165,166,338,613],[100,148,165,166,338,617],[100,148,165,166,442,443,444,445],[100,148,165,166],[83,100,148,165,166,489,492,603,604,605,606,607,608,609,610,611,612,613,617,619,620,623,624,625],[83,100,148,165,166,493,494],[100,148,165,166,493],[100,148,165,166,198],[100,145,146,148,165,166],[100,147,148,165,166],[148,165,166],[100,148,153,165,166,183],[100,148,149,154,159,165,166,168,180,191],[100,148,149,150,159,165,166,168],[95,96,97,100,148,165,166],[100,148,151,165,166,192],[100,148,152,153,160,165,166,169],[100,148,153,165,166,180,188],[100,148,154,156,159,165,166,168],[100,147,148,155,165,166],[100,148,156,157,165,166],[100,148,158,159,165,166],[100,147,148,159,165,166],[100,148,159,160,161,165,166,180,191],[100,148,159,160,161,165,166,175,180,183],[100,141,148,156,159,162,165,166,168,180,191],[100,148,159,160,162,163,165,166,168,180,188,191],[100,148,162,164,165,166,180,188,191],[98,99,100,101,102,103,104,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[100,148,159,165,166],[100,148,165,166,167,191],[100,148,156,159,165,166,168,180],[100,148,165,166,169],[100,148,165,166,170],[100,147,148,165,166,171],[100,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[100,148,165,166,173],[100,148,165,166,174],[100,148,159,165,166,175,176],[100,148,165,166,175,177,192,194],[100,148,160,165,166],[100,148,159,165,166,180,181,183],[100,148,165,166,182,183],[100,148,165,166,180,181],[100,148,165,166,183],[100,148,165,166,184],[100,145,148,165,166,180,185,191],[100,148,159,165,166,186,187],[100,148,165,166,186,187],[100,148,153,165,166,168,180,188],[100,148,165,166,189],[100,148,165,166,168,190],[100,148,162,165,166,174,191],[100,148,153,165,166,192],[100,148,165,166,180,193],[100,148,165,166,167,194],[100,148,165,166,195],[100,141,148,165,166],[100,141,148,159,161,165,166,171,180,183,191,193,194,196],[100,148,165,166,180,197],[86,90,100,148,165,166,200,437,485],[86,90,100,148,165,166,199,437,485],[84,85,100,148,165,166],[86,100,148,165,166],[100,148,165,166,198,499],[100,148,165,166,499,570],[100,148,165,166,188,198,505,508,557,570,582,591],[100,148,165,166,499,505],[100,148,165,166,499],[100,148,165,166,499,500],[100,148,165,166,500,501,502,503,504],[100,148,165,166,198,499,500],[100,148,165,166,506],[100,148,165,166,506,507],[100,148,165,166,509,554],[100,148,165,166,510],[100,148,165,166,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,543,544,545,546,547,548,549,550,551,552,553],[100,148,165,166,510,542],[100,148,165,166,499,557],[100,148,165,166,499,556,557],[100,148,165,166,198,499,556,557],[100,148,165,166,198,499,556],[100,148,165,166,558,559,560,561,562,563,564,565,566,567],[100,148,165,166,505,508,539,555,556,568,570,582,587,591,592,593,595,596,597],[100,148,159,165,166,198,540,541,594],[100,148,165,166,499,539,540],[100,148,165,166,499,539,540,570],[100,148,165,166,539,541],[100,148,165,166,499,539,541],[100,148,165,166,198,499,539,540],[100,148,165,166,542,569,571,572,573,574,575,576,577,578,579,580,581,583,584,585,586,588,589,590],[100,148,165,166,198,499,505,539],[100,148,165,166,499,540],[100,148,165,166,499,539,540,582],[100,148,165,166,198,499,539,541,570],[100,148,165,166,499,539,540,557,587],[100,148,165,166,539,541,585,586],[100,148,165,166,539,540],[100,148,165,166,541,555],[92,100,148,165,166],[100,148,165,166,440],[100,148,165,166,447],[100,148,165,166,204,218,219,220,222,434],[100,148,165,166,204,243,245,247,248,251,434,436],[100,148,165,166,204,208,210,211,212,213,214,423,434,436],[100,148,165,166,434],[100,148,165,166,219,321,404,413,430],[100,148,165,166,204],[100,148,165,166,201,430],[100,148,165,166,255],[100,148,165,166,254,434,436],[100,148,162,165,166,303,321,350,491],[100,148,162,165,166,314,330,413,429],[100,148,162,165,166,365],[100,148,165,166,417],[100,148,165,166,416,417,418],[100,148,165,166,416],[94,100,148,162,165,166,201,204,208,211,215,216,217,219,223,231,232,358,383,414,434,437],[100,148,165,166,204,221,239,243,244,249,250,434,491],[100,148,165,166,221,491],[100,148,165,166,232,239,301,434,491],[100,148,165,166,491],[100,148,165,166,204,221,222,491],[100,148,165,166,246,491],[100,148,165,166,215,415,422],[100,148,165,166,174,263,430],[100,148,165,166,263,430],[86,100,148,165,166,263],[86,100,148,165,166,322],[100,148,165,166,318,363,430,473,474],[100,148,165,166,410,467,468,469,470,472],[100,148,165,166,409],[100,148,165,166,409,410],[100,148,165,166,212,359,360,361],[100,148,165,166,359,362,363],[100,148,165,166,471],[100,148,165,166,359,363],[86,100,148,165,166,205,461],[86,100,148,165,166,191],[86,100,148,165,166,221,291],[86,100,148,165,166,221],[100,148,165,166,289,293],[86,100,148,165,166,290,439],[86,90,100,148,162,165,166,198,199,200,437,483,484],[100,148,162,165,166],[100,148,162,165,166,208,270,359,369,384,404,419,420,434,435,491],[100,148,165,166,231,421],[100,148,165,166,437],[100,148,165,166,203],[86,100,148,165,166,303,317,329,339,341,429],[100,148,165,166,174,303,317,338,339,340,429,490],[100,148,165,166,332,333,334,335,336,337],[100,148,165,166,334],[100,148,165,166,338],[100,148,165,166,261,262,263,265],[86,100,148,165,166,256,257,258,264],[100,148,165,166,261,264],[100,148,165,166,259],[100,148,165,166,260],[86,100,148,165,166,263,290,439],[86,100,148,165,166,263,438,439],[86,100,148,165,166,263,439],[100,148,165,166,384,426],[100,148,165,166,426],[100,148,162,165,166,435,439],[100,148,165,166,326],[100,147,148,165,166,325],[100,148,165,166,233,271,309,311,313,314,315,316,356,359,429,432,435],[100,148,165,166,233,347,359,363],[100,148,165,166,314,429],[86,100,148,165,166,314,323,324,326,327,328,329,330,331,342,343,344,345,346,348,349,429,430,491],[100,148,165,166,308],[100,148,162,165,166,174,233,234,270,285,315,356,357,358,363,384,404,425,434,435,436,437,491],[100,148,165,166,429],[100,147,148,165,166,219,312,315,358,425,427,428,435],[100,148,165,166,314],[100,147,148,165,166,270,275,304,305,306,307,308,309,310,311,313,429,430],[100,148,162,165,166,275,276,304,435,436],[100,148,165,166,219,358,359,384,425,429,435],[100,148,162,165,166,434,436],[100,148,162,165,166,180,432,435,436],[100,148,162,165,166,174,191,201,208,221,233,234,236,271,272,277,282,285,311,315,359,369,371,374,376,379,380,381,382,383,404,424,425,430,432,434,435,436],[100,148,162,165,166,180],[100,148,165,166,204,205,206,208,213,216,221,239,424,432,433,437,439,491],[100,148,162,165,166,180,191,251,253,255,256,257,258,265,491],[100,148,165,166,174,191,201,243,253,281,282,283,284,311,359,374,383,384,390,393,394,404,425,430,432],[100,148,165,166,215,216,231,358,383,425,434],[100,148,162,165,166,191,205,208,311,388,432,434],[100,148,165,166,302],[100,148,162,165,166,391,392,401],[100,148,165,166,432,434],[100,148,165,166,309,312],[100,148,165,166,311,315,424,439],[100,148,162,165,166,174,237,243,284,374,384,390,393,396,432],[100,148,162,165,166,215,231,243,397],[100,148,165,166,204,236,399,424,434],[100,148,162,165,166,191,434],[100,148,162,165,166,221,235,236,237,248,266,398,400,424,434],[94,100,148,165,166,233,315,403,437,439],[100,148,162,165,166,174,191,208,215,223,231,234,271,277,281,282,283,284,285,311,359,371,384,385,387,389,404,424,425,430,431,432,439],[100,148,162,165,166,180,215,390,395,401,432],[100,148,165,166,226,227,228,229,230],[100,148,165,166,272,375],[100,148,165,166,377],[100,148,165,166,375],[100,148,165,166,377,378],[100,148,162,165,166,208,211,212,270,435],[100,148,162,165,166,174,203,205,233,271,285,315,367,368,404,432,436,437,439],[100,148,162,165,166,174,191,207,212,311,368,431,435],[100,148,165,166,304],[100,148,165,166,305],[100,148,165,166,306],[100,148,165,166,430],[100,148,165,166,252,268],[100,148,162,165,166,208,252,271],[100,148,165,166,267,268],[100,148,165,166,269],[100,148,165,166,252,253],[100,148,165,166,252,286],[100,148,165,166,252],[100,148,165,166,272,373,431],[100,148,165,166,372],[100,148,165,166,253,430,431],[100,148,165,166,370,431],[100,148,165,166,253,430],[100,148,165,166,356],[100,148,165,166,208,213,271,300,303,309,311,315,317,320,351,354,355,359,403,424,432,435],[100,148,165,166,294,297,298,299,318,319,363],[86,100,148,165,166,263,352,353],[100,148,165,166,412],[100,148,165,166,219,276,314,315,326,330,359,403,405,406,407,408,410,411,414,424,429,434],[100,148,165,166,363],[100,148,165,166,367],[100,148,162,165,166,271,287,364,366,369,403,432,437,439],[100,148,165,166,294,295,296,297,298,299,318,319,363,438],[94,100,148,162,165,166,174,191,234,252,253,285,311,315,401,402,404,424,425,434,435,437],[100,148,165,166,276,278,281,425],[100,148,162,165,166,272,434],[100,148,165,166,275,314],[100,148,165,166,274],[100,148,165,166,276,277],[100,148,165,166,273,275,434],[100,148,162,165,166,207,276,278,279,280,434,435],[86,100,148,165,166,359,360,362],[100,148,165,166,238],[86,100,148,165,166,205],[86,100,148,165,166,430],[86,94,100,148,165,166,285,315,437,439],[100,148,165,166,205,461,462],[86,100,148,165,166,293],[86,100,148,165,166,174,191,203,250,288,290,292,439],[100,148,165,166,221,430,435],[100,148,165,166,386,430],[100,148,165,166,359],[86,100,148,160,162,165,166,174,203,239,245,293,437,438],[86,100,148,165,166,199,200,437,485],[86,87,88,89,90,100,148,165,166],[100,148,153,165,166],[100,148,165,166,240,241,242],[100,148,165,166,240],[86,90,100,148,162,164,165,166,174,198,199,200,201,203,234,338,396,434,436,439,485],[100,148,165,166,449],[100,148,165,166,451],[100,148,165,166,453],[100,148,165,166,455],[100,148,165,166,457,458,459],[100,148,165,166,463],[91,93,100,148,165,166,441,446,448,450,452,454,456,460,464,466,476,477,479,489,490,491,492],[100,148,165,166,465],[100,148,165,166,475],[100,148,165,166,290],[100,148,165,166,478],[100,147,148,165,166,276,278,279,281,329,430,480,481,482,485,486,487,488],[100,148,165,166,180,198],[100,113,117,148,165,166,191],[100,113,148,165,166,180,191],[100,108,148,165,166],[100,110,113,148,165,166,188,191],[100,148,165,166,168,188],[100,108,148,165,166,198],[100,110,113,148,165,166,168,191],[100,105,106,109,112,148,159,165,166,180,191],[100,113,120,148,165,166],[100,105,111,148,165,166],[100,113,134,135,148,165,166],[100,109,113,148,165,166,183,191,198],[100,134,148,165,166,198],[100,107,108,148,165,166,198],[100,113,148,165,166],[100,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,140,148,165,166],[100,113,128,148,165,166],[100,113,120,121,148,165,166],[100,111,113,121,122,148,165,166],[100,112,148,165,166],[100,105,108,113,148,165,166],[100,113,117,121,122,148,165,166],[100,117,148,165,166],[100,111,113,116,148,165,166,191],[100,105,110,113,120,148,165,166],[100,148,165,166,180],[100,108,113,134,148,165,166,196,198],[86,100,148,165,166,615,618],[100,148,149,165,166,192,460,489,498,599,601,602],[100,148,165,166,460,489,498,599],[100,148,149,165,166,192,460,489,498,599],[100,148,149,165,166,192,460,489,498],[100,148,165,166,460,489],[100,148,149,165,166,192,489,602],[100,148,165,166,460,476,498,616],[100,148,165,166,460,476,498,616,621,622],[100,148,165,166,476],[86,100,148,165,166,476],[100,148,165,166,460,498,599,615],[100,148,165,166,614],[100,148,165,166,600],[100,148,149,165,166,598],[100,148,165,166,489]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba026e395bb08fa4b0a4b8c61e37423bbfb24f8de3be436dd8a1b7f025afb44c","affectsGlobalScope":true},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"0958335a19c90bf5e69e6654bac7dfb120e432558f8143263d8b2324bd85e61c","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"2beff543f6e9a9701df88daeee3cdd70a34b4a1c11cb4c734472195a5cb2af54","impliedFormat":1},{"version":"2e07abf27aa06353d46f4448c0bbac73431f6065eef7113128a5cd804d0c384d","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5f90b8c733a1bda63e42160b15a2301051e83a6f9d5332a59d16eb12f463270d","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"bd5f641cc4616eee49497a362c4cb401e9346265bc52670448c4452b4d9be401","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"e91f7b1344577a02f051b9b471f33044fef8334a76dc9e1de003d17595a5219b","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"c1de754ab5f3b0f4036d6893c74a0fc984c7fcb07936086f19bbe2974406775b","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"6e2261cd9836b2c25eecb13940d92c024ebed7f8efe23c4b084145cd3a13b8a6","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"cb8d8ef7b9ce8ed3e6f1c814fcbf3f90dab0cb8863079236784fc350746e27c4","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"85ae5aee75f011967cf2d25cbc342f62d69314e9d925f7f4aa3456fc2cffcca6","876c5d302ba70fc3ddde0514b69a4ea4167f3d2b4e20d9e4efcb14216282469a","c5097003168200486810728e40397fce5d57ef3261df9619d20011ab8b6a7194","ebe06b6670c57d9217c040556db0dab94f873cfb6e7f0aa1b8b29685b339d0fd",{"version":"21bfe934fb4e01d6270ce97f0b4a3c3a8c2e78b74d10eeb7101485e856f8bb26","impliedFormat":1},{"version":"92349c71d9b797c28d1828985973e879e47ce9d08a3a6d60437de642c44bcdbe","impliedFormat":1},{"version":"ee1635a6d6fc74d6c93c6c874513a176b2d022d1f04db6c90a9bb75f9d0de065","impliedFormat":1},{"version":"12aac3136ff9d42e27df82aef36da45d7806e075d72a0113917edf169cf13ae0","impliedFormat":1},{"version":"d1580b8b86733055b19256305295ec3664fd61277397fd0f2c97578f4b7d759a","impliedFormat":1},{"version":"28f475272483774a8891702c880a0828ecf94b690343e884dcee1d978974ba60","impliedFormat":1},{"version":"777baad26a8fce01936d4da920653d26e067898441cf8ba3655ec09d086c69a7","impliedFormat":1},{"version":"d51af83d040911f64b774d229524dad1253beb8d4b3f50b0b8f46411ae9fd737","impliedFormat":1},{"version":"23e0b9af3ed31d19c4ecfd0adb79f75db78ffbe7b4c124c63c6f6ab8dd12f639","impliedFormat":1},{"version":"28b4b8fe9829f6e439b4329b9d2927860457cff5b256a8e0d1271d88b440136b","impliedFormat":1},{"version":"9c3316f0d130fa2d46231050e68d96d7a01c884147b035fee433a7076c42189a","impliedFormat":1},{"version":"d7773c1de158f83bebcb0d73c5f164d394e500a52a355c7632ea8749c5c45267","impliedFormat":1},{"version":"f90337f27b7928437a98d0c6480570f83f32ba829e267d243c5cb699255c06ba","impliedFormat":1},{"version":"51cd723c056c76a7dbfac7d29068f518e2d8fd9bbf0d12664c12cd8f7a86aa51","impliedFormat":1},{"version":"3e8e6bf33329e96095d49aa57be4b6b6f17a4faf645fa2793ac7e6b6dc0b1f63","impliedFormat":1},{"version":"1830c964f94e2899da2b92a40021c02b7d20fe6dee96c4b2efa382c3bfb13931","impliedFormat":1},{"version":"eeabff252da22f582987ebb7e5d6ba9e4c082cae00d3c7ff85e0e04e1ab7c599","impliedFormat":1},{"version":"ce90e8851f84c7bd6fbd7dadd2fd5c1073e48c4951eda34d2f4794c93f6e4b87","impliedFormat":1},{"version":"ee449adf25ae065215f793d6bf1e5f5b3981b8a8b649c7e4ee668a7bc30a68e8","impliedFormat":1},{"version":"1380d3bff18e3fb4c6e09df0adb2a2461be33c90bc080e5e25112f7a841e3dca","impliedFormat":1},{"version":"a2a49e5b9f34d331f4aedc9e8f94e794248005706eb06bc19f491944e5177605","impliedFormat":1},{"version":"19dfab5d378dfd4b1418463cc7de7fa4317f2d15403dff0a212d4368416182fd","impliedFormat":1},{"version":"8ff890c9140b2f48995fdf1b51a1343dc5c3868ff87b3b36258b1c66c6acace0","impliedFormat":1},{"version":"f8ad4bc226cef9b535ea003f9b1244f2e71147bdbb7b5d7e16c8bd89e5ec8a0e","impliedFormat":1},{"version":"35f5088b58db585b91e5f43265e9a0f9ce5c84a2bdf54eeb23f38f39b6126fb1","impliedFormat":1},{"version":"b50eec3c4b587370284ee12433bb5f41cf72fe4fd23306f5be523830ed5af531","impliedFormat":1},{"version":"658e79ba21f16f5f3374d0e6dcf19f396f31bb58f2d2d07156a242fb5f7f9de6","impliedFormat":1},{"version":"be12e8359ea867a9bc3447b3f86ef15e9175e8695e1a4134b71f7a1196c2cdbc","impliedFormat":1},{"version":"b4cc1bb7c47ddb6f08836d94761557a59f7893cee604fdb8cb7327012bca6765","impliedFormat":1},{"version":"856a6c05a17693ecf7d2790f6462a1b8c143948d5f4d85c6c1adb1eac6acbc71","impliedFormat":1},{"version":"24388a9095fa3282165c58cbf4c177f7f53b36847d30f64d24f2ed3444a6c340","impliedFormat":1},{"version":"4ce3fdd54055bf7639d304dcc6f9ec34dc07ce9cf7d9c28f52be1f45b3692869","impliedFormat":1},{"version":"f53299c6381b86bcb557c7d5b7e29a7c322721716b08abeb55a2adc18faf941c","impliedFormat":1},{"version":"eacc4801a8295f7fb5b86267a496dd6cb4cf08c69224c7a2d53acc9faf9cf411","impliedFormat":1},{"version":"396eee09017a3c1e6d73e4c29cdc0151d3186db7c4c35d27c8df392384a51c58","impliedFormat":1},{"version":"8c57f384229bd3d9f94e45d4d334dad52271614b60daf152f6f754cc9eaf9398","impliedFormat":1},{"version":"64733ad35b02a2a2cbac621c82ae556354603df8547520adefd9b117c79b887f","impliedFormat":1},{"version":"c72e533440f4e3f70bd9f311ab76a75d4ddd2e548454ecf8773d78742352240f","impliedFormat":1},{"version":"b99a86eb8325cf795ee1e266d8818929917ce216b5a75f1f79b11b0d36c64325","impliedFormat":1},{"version":"df7df6d91a4c43f1900c373788596d45883f30e30de1aa3fd736751409f692ad","impliedFormat":1},{"version":"1a45d73a9112faf2ff685a0827dabf6d60d85af4080392d2b7cc1bb341c203db","impliedFormat":1},{"version":"c252fda182f8636dd2df9732eb54090561725512128d5c22a8272afed30bd0e3","impliedFormat":1},{"version":"55f2b58cd32f9a2605ffd498075163d9943e2f8d7728106b7000640287535c61","impliedFormat":1},{"version":"1424802ad5547e3dad09146266ecaf28f3ad6c85874db649ea40d4a3bf8eb5c7","impliedFormat":1},{"version":"c676d9c582ad73e524391d568a9f50f0afc40b116e7828759904b2ec2d613fa6","impliedFormat":1},{"version":"8c7cec9069a8aa03dc738ee5d8b44b5771cc190eab781b4cbbaa99f1b5caee40","impliedFormat":1},{"version":"8addf91a9ba1e4071de9caa70cb55c9f6cce6b1da54cdaa3583ad484aff07424","impliedFormat":1},{"version":"c3da0e19f1d2f337a3ed4a8fe15f8091d85398f510b7f98b269cdb6fbdd2c574","impliedFormat":1},{"version":"478ea2d2064bb0428cbb07c51fc61b9ec93d54e73c314c85657aaf906dba7b13","impliedFormat":1},{"version":"c38f9a8c38131409f7b68aac9a3f23aa81fa2d3f08d319bebb2e9040996b33f7","impliedFormat":1},{"version":"dbc2311cb09b65122f9b7505b358e65d2ae12e2b51a432f4bba5e300df76b8ad","impliedFormat":1},{"version":"f18679e4e48fe13e595016c4604b5bf2d7e33a9a0e99bf36d37e02b91ed52aad","impliedFormat":1},{"version":"52ed98b011c3cc6f1717fe3743c9fd8984dacd410987948acdc3f49e25acbfbd","impliedFormat":1},{"version":"3bc21cf46eb313b71abfb2ecbcafacfaf01de31bbd9124cb61142c062982a366","impliedFormat":1},{"version":"a20d4178f814d8aa1f44e030c3888eb923f3575fbd41227a1a96a53db1d4887d","impliedFormat":1},{"version":"afcd8144cbc58b71e9f7bee230e12a6b4201f8da07157213f63580b83cdafe9e","impliedFormat":1},{"version":"fb5f7d13999677d05184b867bfce9f2b486eae8b539aa2b5f1481bcb681043c4","impliedFormat":1},{"version":"113a057443973c47b8b210bcbec63ae7ea91ec6834535d8ef82bb35b5e905a6d","impliedFormat":1},{"version":"ffa7de033d926faf4cb28fefc447c0d7c3e1533a3e046a279c011c75635f9aa4","impliedFormat":1},{"version":"be9f0e50d3b87ee093d7ebc667f81bb57ed9e75dfe5600769296439e0fd4bf73","impliedFormat":1},{"version":"567ccfd1f94b8f4e60ab2c5bad6aef0ce1f2508fc8e2a2dfd825c42cd4337b94","impliedFormat":1},{"version":"5b689c76797f971cbc5b56fd72c4c3d1f75700eee6d886943c1080408c0fdabd","impliedFormat":1},{"version":"9b9d7aca27f3e801aa643266f31616e47838b62f4bcd412262f211c4bff6a2f8","impliedFormat":1},{"version":"3e5ee3fc3094e9414b15106088d183c70cd5ca9d38627db94e5e0e0681ff7fae","impliedFormat":1},{"version":"ac878f9fce04e99aa5ed63c02de9bc62af2b55850ac02457875f7b7d83e1d43a","impliedFormat":1},{"version":"18c8c03faef320073980166c5c44391ee3d75cc433419af90dd73317150d1fbc","impliedFormat":1},{"version":"aa20d896d2441d811b6d479fa5080d89de7283c1692b990405ce4c9aff784cef","impliedFormat":1},{"version":"413a8a7db19ae17082629e4ac6556f06b8d840828ebc7f27c1c2449e1aafca35","impliedFormat":1},{"version":"5515af99831db7fff768f294a789037d44fdde8be03540951ea539cc465e64b5","impliedFormat":1},{"version":"ae49294b431958da35f78f42174115ffa6652a900ca484a6e7d96c4a7860861c","impliedFormat":1},{"version":"4a5455769996dd6d11da6ddc3d6d16fe48074ec3b27f074847c22d94f13c1c64","impliedFormat":1},{"version":"84b9eeae52fc6a09375d50eef7458cd90e0e1f1b89da5b8059d2b2720d5e0c46","impliedFormat":1},{"version":"3d65f9b6aa848de4080647c674ef16de5e01f970f6c5079b8f0e8b3f4da10756","impliedFormat":1},{"version":"15aa2e2c7a888aab4a415a75f138e0d6fdd54e3a617f98da2a0d1175d44220c7","impliedFormat":1},{"version":"de6b2aacb05c33e7ceeb62e8ec067b9c1bf8cab1d41f39680cdd154d330b3659","impliedFormat":1},{"version":"17d3b1c8217a080dcf91d21a73b6eab0485b4a05a31d568e5c9db5fc3a49727c","impliedFormat":1},{"version":"6db9aef818846abda386d5087ca0d7cf1894f156f8e14eefbcaae6e2057bb0d8","impliedFormat":1},{"version":"a530876f0a3002869190b9940e1608350dbf6e44fa6d5daff7d97a7c614beb63","impliedFormat":1},{"version":"893b5d365d94baf476694491fc4f844895362f9b37eed58d8c8a8a50d5afe2f0","impliedFormat":1},{"version":"f66b2ef624f5b663365793121e3479c01ea92b5391a9587ea3bd07f41fc71e43","impliedFormat":1},{"version":"f25f3c453700e737ae8b54e9436999390ba96a8e337c894f51f00c8b3f788932","impliedFormat":1},{"version":"35362c33387c9ff58441d0c66d6930561aa78589cb734e51854d55b4a6788230","impliedFormat":1},{"version":"dfdf05c737d7ba1183604dafd8604b8d4851d67215054d9927f0bd3af4da0f16","impliedFormat":1},{"version":"dcc2aaa506f09d1635b43727066e489d36e938a2b8d428c1edf197ae917a59bc","impliedFormat":1},{"version":"788cc1b2fe88ba6d4eee5902bf0acc069f6ca885bd07a667dca26caf706609e5","impliedFormat":1},{"version":"8bbc81bf0fc573a6560546597d4d587a6974977a3aa28e020f219f8d4bf90b5f","impliedFormat":1},{"version":"fbac3673593695bba6143975486b277bd48ce0dc9a2071d338ad8f2271d7c43d","impliedFormat":1},{"version":"44a7e9afaa2b0632e1a882266a8ef974a020dbe0a3d36bbebd2984e214ef51e8","impliedFormat":1},{"version":"bf6486ac197787f8dd3a49d663b9a13347d071cd33ecb90144d9a20e89077760","impliedFormat":1},{"version":"209c5994e1207edf24f8248677222fe1fe61eb905a9ca3e7c2537649271a76db","impliedFormat":1},{"version":"4c3756ebc43e8a36099aa5d3fb726b610f6ef16c23324ab030e05b43ac759abb","impliedFormat":1},{"version":"9ba61eb8cf22ee2703ccf14cbc6b97893af9c78cb6613752dd52102f3db0497a","impliedFormat":1},{"version":"8cdfb5b8fa2f597ce9499d223acbd8f873409e9a9ec61cb85fa7bbc874401854","impliedFormat":1},{"version":"37143b8b3b539eafed4ef9d2f23cfdfd27c858f6fe9477cb907f803657e92904","impliedFormat":1},{"version":"58bb6c9fd54b1f51741a1401f65d7409b76df501271fc98fd866d9861d143aaf","impliedFormat":1},{"version":"9839c1851f1cf27325ec7dba80b236faa307203e886da5c2ddb763a7e7771e23","impliedFormat":1},{"version":"29c7588871a82a28eabdf060fb6285b367e38459affcced153efd8e11a612cbc","impliedFormat":1},{"version":"7d3131d3676a9af5369ab0c0e02ec57f29c521c257e8abc92d29f64c8d6c8cf4","impliedFormat":1},{"version":"1dac82a213c60016f0fcf693e5bd01ac8e94da76ced819ae70a6f7e6d47d5fdf","impliedFormat":1},{"version":"8c0f9f2817a1fe6e744deab34ad67991f298e89858d6c8ec1c61ecc0dff07b38","impliedFormat":1},"979e1381e8bbead94055138a4aec4e9d7c5b0c323027f16c12ce00de2d3f8d05",{"version":"a0f84603d4e5e032a43c1c0926bd2f257982dfc412af6eec570eac4ffe58a00f","impliedFormat":99},"87af26cf03960a9b76c294a879832e576b6145cca36f4cf45fbd255953650312","881bbaccc05f09f16594a8aae4c95daad0ba04658adf298a002e5019f994c25e","10fb2f166588cc3912e4a4e5a3f3177093ec76518ac7d6ab70fcc36a7be07215","8445214c2ec8f796edd600b906baa5c6750bc4b5dc470efd1847ae5814a962a4","cd33029a376c6f5496165171fcba4894b40558c382436bf16cbd1202619b05db","08cebd99a1da611418cb012aa3d8466b22a3577bd7029239756467e32a41df8c","64e92393c5470a750b1010312497ee542f290ba36281325c0c10abd4d94b7c41","2593029f9661f98c8c24e7567f56ec61e7dab350f98aee44a58543e5191c27fa","8dded954432b88de478bf60663f270910d196dc44da7f33eec34ba9880aaf7bc","0146e4640e7750cd58f5c50b2ca8bba0c1c3004b005fe9e0b6ae3a72a69e4c92","d9ea7d04a0cbd429ad777a787d654cbc853d0394aa3b19e1d98548a0e7af5f36","dd90c81ccce92f0badbdebf278e6c2ab2e60119ced18db716a8212adbeab7a20","c0181b2a2a1b8e8b9b7e02cca25c6b3f6647d100c774135d4ab8952b3fefaab6","ec0a8c1a741c38b3ab9ae583a5e4e560a5a7d097ecd36d08d2d46ad4e368495e","f7acf88f427d2fd6a9bd4f28a72f5deefff5804d8246eab93604c7f3e02a1a3c","8b5394284dcd186bb99817a8f060f71eaf7f2acf528fabf89db8706d3565efe4","81a237cd0dd93b2520b0bafa7d62dbd86b6defa56aa90c39458ec18313dc4887","f8e1b1c9d29178480440470a242038f16452be46d5ac3e994b312d475caa4696","52cae9a680f7a930d639756067f22c0c9d080d22ea008ad6d6a4f7df889acbd6","99c5f3b2bd2a67589e5a8e869aaeba886ea317fddf879e766ae6e21b306775b8","62b2f12501fc8d7ad76d928b3e480df8ef06a7b0efecb8bf3585d1cc6a45d991","23cbba24fdff696933333456cb42c7591c4f677100664eec1f0e30d148c7334a","2e3a33d29dc7547f9fd31904ed05f0db2da899edf603e594a9cc0c1aabbacb15","cdb96866156f51ee36ee387b5761dbf0154809cd2d1ff35302523b4f41858abd","2af380fa2d0b8b5c98301f0c5d9958fa80e81a54d66cb7a81bbb4226ade55025","2552a31fad45a9ed1bde87e51b038dc0e786cd364b597162263abbf57018949b","6f31b4c4e042e5f6aafc3f2d1ca00e3a62fd82ec0a10ce12ef8a411bf484dd9d","4d7b012c3a37bfb0862fe309dec29141b9768ecd7bc7f97306993eea724cf693","bb31680298d928ad24b857e3a2ef3392820494cbd3f6a42270610099a00b15dc","2ac217e5fa0026ea8a75224e64cf51d3f2e543e6581e66abb867a469981d25ab","49a11d63a679312622a728b5d86a668b6fd3fddd642ee8c329f47f900e527078","d49254f7d97572f842e30bd857ddd57d4ec84689188dd9b29c1fe02dbe6d925e","77809fe83f39bd7708ca2fa4b9068816f9d73323a245a774034a43389f2ac0e6","396ea2dfad66e6c962f3765565dbbbf2c599cfc8838ac7ae4bd62531c4939f0d","15341a2a09ed3c94075ded5900685618626d62245a94489e1acf860f6b2a21fd",{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1}],"root":[83,[495,498],599,[601,635]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[630,1],[631,2],[632,3],[633,4],[634,5],[635,6],[628,7],[629,8],[626,9],[83,10],[627,11],[495,12],[496,13],[245,10],[499,14],[145,15],[146,15],[147,16],[100,17],[148,18],[149,19],[150,20],[95,10],[98,21],[96,10],[97,10],[151,22],[152,23],[153,24],[154,25],[155,26],[156,27],[157,27],[158,28],[159,29],[160,30],[161,31],[101,10],[99,10],[162,32],[163,33],[164,34],[198,35],[165,36],[166,10],[167,37],[168,38],[169,39],[170,40],[171,41],[172,42],[173,43],[174,44],[175,45],[176,45],[177,46],[178,10],[179,47],[180,48],[182,49],[181,50],[183,51],[184,52],[185,53],[186,54],[187,55],[188,56],[189,57],[190,58],[191,59],[192,60],[193,61],[194,62],[195,63],[102,10],[103,10],[104,10],[142,64],[143,10],[144,10],[196,65],[197,66],[199,67],[353,10],[200,68],[84,10],[86,69],[352,70],[263,70],[636,10],[85,10],[570,71],[582,72],[587,73],[592,74],[500,75],[501,76],[505,77],[502,78],[503,76],[504,76],[507,79],[508,80],[506,10],[555,81],[509,10],[511,82],[512,82],[513,82],[514,82],[515,82],[516,82],[517,82],[518,82],[519,82],[520,82],[521,82],[554,83],[522,82],[523,82],[524,82],[525,82],[526,82],[527,82],[528,82],[529,82],[534,82],[530,82],[531,82],[532,82],[533,82],[535,82],[536,82],[537,82],[510,10],[538,82],[543,84],[544,82],[545,82],[546,82],[547,82],[548,82],[549,82],[550,82],[551,82],[552,82],[553,82],[593,85],[558,86],[559,86],[560,87],[561,86],[557,88],[562,86],[568,89],[563,86],[564,86],[565,86],[566,86],[567,86],[598,90],[595,91],[596,10],[569,92],[571,93],[572,94],[573,92],[542,95],[574,92],[575,94],[576,92],[577,94],[578,96],[579,95],[591,97],[540,98],[541,99],[580,92],[581,94],[583,100],[584,94],[585,101],[586,95],[588,102],[589,103],[590,104],[539,10],[556,10],[597,105],[93,106],[441,107],[446,9],[448,108],[221,109],[249,110],[424,111],[244,112],[232,10],[213,10],[219,10],[414,113],[280,114],[220,10],[383,115],[254,116],[255,117],[351,118],[411,119],[366,120],[418,121],[419,122],[417,123],[416,10],[415,124],[251,125],[222,126],[301,10],[302,127],[217,10],[233,128],[223,129],[285,128],[282,128],[206,128],[247,130],[246,10],[423,131],[433,10],[212,10],[327,132],[328,133],[322,70],[469,10],[330,10],[331,134],[323,135],[475,136],[473,137],[468,10],[410,138],[409,10],[467,139],[324,70],[362,140],[360,141],[470,10],[474,10],[472,142],[471,10],[361,143],[462,144],[465,145],[292,146],[291,147],[290,148],[478,70],[289,149],[274,10],[481,10],[484,10],[483,70],[485,150],[202,10],[420,151],[421,152],[422,153],[235,10],[211,154],[201,10],[343,70],[204,155],[342,156],[341,157],[332,10],[333,10],[340,10],[335,10],[338,158],[334,10],[336,159],[339,160],[337,159],[218,10],[209,10],[210,128],[264,161],[265,162],[262,163],[260,164],[261,165],[257,10],[349,134],[368,134],[440,166],[449,167],[453,168],[427,169],[426,10],[277,10],[486,170],[436,171],[325,172],[326,173],[317,174],[307,10],[348,175],[308,176],[350,177],[345,178],[344,10],[346,10],[359,179],[428,180],[429,181],[310,182],[314,183],[305,184],[406,185],[435,186],[284,187],[384,188],[207,189],[434,190],[203,112],[258,10],[266,191],[395,192],[256,10],[394,193],[94,10],[389,194],[234,10],[303,195],[385,10],[208,10],[267,10],[393,196],[216,10],[272,197],[313,198],[425,199],[312,10],[392,10],[259,10],[397,200],[398,201],[214,10],[400,202],[402,203],[401,204],[237,10],[391,189],[404,205],[390,206],[396,207],[225,10],[228,10],[226,10],[230,10],[227,10],[229,10],[231,208],[224,10],[376,209],[375,10],[381,210],[377,211],[380,212],[379,212],[382,210],[378,211],[271,213],[369,214],[432,215],[488,10],[457,216],[459,217],[309,10],[458,218],[430,180],[487,219],[329,180],[215,10],[311,220],[268,221],[269,222],[270,223],[300,224],[405,224],[286,224],[370,225],[287,225],[253,226],[252,10],[374,227],[373,228],[372,229],[371,230],[431,231],[321,232],[356,233],[320,234],[354,235],[355,235],[413,236],[412,237],[408,238],[365,239],[367,240],[364,241],[403,242],[358,10],[445,10],[357,243],[407,10],[273,244],[306,151],[304,245],[275,246],[278,247],[482,10],[276,248],[279,248],[443,10],[442,10],[444,10],[480,10],[281,249],[319,70],[92,10],[363,250],[250,10],[239,251],[315,10],[451,70],[461,252],[299,70],[455,134],[298,253],[438,254],[297,252],[205,10],[463,255],[295,70],[296,70],[288,10],[238,10],[294,256],[293,257],[236,258],[316,44],[283,44],[399,10],[387,259],[386,10],[447,10],[347,260],[318,70],[439,261],[87,70],[90,262],[91,263],[88,70],[89,10],[248,264],[243,265],[242,10],[241,266],[240,10],[437,267],[450,268],[452,269],[454,270],[456,271],[460,272],[494,273],[464,273],[493,274],[466,275],[476,276],[477,277],[479,278],[489,279],[492,154],[491,10],[490,14],[600,70],[388,280],[594,10],[81,10],[82,10],[13,10],[14,10],[16,10],[15,10],[2,10],[17,10],[18,10],[19,10],[20,10],[21,10],[22,10],[23,10],[24,10],[3,10],[25,10],[26,10],[4,10],[27,10],[31,10],[28,10],[29,10],[30,10],[32,10],[33,10],[34,10],[5,10],[35,10],[36,10],[37,10],[38,10],[6,10],[42,10],[39,10],[40,10],[41,10],[43,10],[7,10],[44,10],[49,10],[50,10],[45,10],[46,10],[47,10],[48,10],[8,10],[54,10],[51,10],[52,10],[53,10],[55,10],[9,10],[56,10],[57,10],[58,10],[60,10],[59,10],[61,10],[62,10],[10,10],[63,10],[64,10],[65,10],[11,10],[66,10],[67,10],[68,10],[69,10],[70,10],[1,10],[71,10],[72,10],[12,10],[76,10],[74,10],[79,10],[78,10],[73,10],[77,10],[75,10],[80,10],[120,281],[130,282],[119,281],[140,283],[111,284],[110,285],[139,14],[133,286],[138,287],[113,288],[127,289],[112,290],[136,291],[108,292],[107,14],[137,293],[109,294],[114,295],[115,10],[118,295],[105,10],[141,296],[131,297],[122,298],[123,299],[125,300],[121,301],[124,302],[134,14],[116,303],[117,304],[126,305],[106,306],[129,297],[128,295],[132,10],[135,307],[619,308],[618,70],[603,309],[604,310],[605,311],[606,311],[607,311],[608,312],[609,310],[610,313],[611,311],[612,314],[613,10],[620,70],[617,315],[621,70],[622,70],[623,316],[624,317],[625,318],[616,319],[615,320],[614,70],[601,321],[498,264],[599,322],[602,264],[497,323]],"affectedFilesPendingEmit":[630,631,632,633,634,635,628,629,627,496,619,618,603,604,605,606,607,608,609,610,611,612,613,620,617,621,622,623,624,625,616,615,614,601,498,599,602,497],"version":"5.9.3"} \ No newline at end of file