@auxiora/research 1.0.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"brave-search.d.ts","sourceRoot":"","sources":["../src/brave-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,YAAY,CAAC;AAKtE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IAMjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiC3D,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA6B9C"}
1
+ {"version":3,"file":"brave-search.d.ts","sourceRoot":"","sources":["../src/brave-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,YAAY,CAAC;AAMtE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IAMjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiC3D,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiC9C"}
@@ -1,3 +1,4 @@
1
+ import { validateUrl } from '@auxiora/ssrf-guard';
1
2
  const BRAVE_SEARCH_URL = 'https://api.search.brave.com/res/v1/web/search';
2
3
  const USER_AGENT = 'Auxiora/1.0 (Research Engine)';
3
4
  export class BraveSearchClient {
@@ -39,6 +40,10 @@ export class BraveSearchClient {
39
40
  }
40
41
  }
41
42
  async fetchPage(url) {
43
+ const ssrfError = validateUrl(url);
44
+ if (ssrfError) {
45
+ return `[SSRF blocked: ${ssrfError}]`;
46
+ }
42
47
  const controller = new AbortController();
43
48
  const timer = setTimeout(() => controller.abort(), this.fetchTimeout);
44
49
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"brave-search.js","sourceRoot":"","sources":["../src/brave-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brave-search.js","sourceRoot":"","sources":["../src/brave-search.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auxiora/research",
3
- "version": "1.0.0",
3
+ "version": "1.3.0",
4
4
  "description": "Deep multi-source research agent with citation tracking and knowledge graph",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,12 +13,19 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "nanoid": "^5.1.2",
16
- "@auxiora/audit": "1.0.0",
17
- "@auxiora/logger": "1.0.0"
16
+ "@auxiora/logger": "1.3.0",
17
+ "@auxiora/ssrf-guard": "1.3.0",
18
+ "@auxiora/audit": "1.3.0"
18
19
  },
19
20
  "engines": {
20
21
  "node": ">=22.0.0"
21
22
  },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "files": [
27
+ "dist/"
28
+ ],
22
29
  "scripts": {
23
30
  "build": "tsc",
24
31
  "clean": "rm -rf dist",
@@ -1,130 +0,0 @@
1
- import type { BraveSearchResponse, BraveWebResult } from './types.js';
2
-
3
- const BRAVE_SEARCH_URL = 'https://api.search.brave.com/res/v1/web/search';
4
- const USER_AGENT = 'Auxiora/1.0 (Research Engine)';
5
-
6
- export interface BraveSearchOptions {
7
- apiKey: string;
8
- searchTimeout?: number;
9
- fetchTimeout?: number;
10
- }
11
-
12
- export class BraveSearchClient {
13
- private readonly apiKey: string;
14
- private readonly searchTimeout: number;
15
- private readonly fetchTimeout: number;
16
-
17
- constructor(options: BraveSearchOptions) {
18
- this.apiKey = options.apiKey;
19
- this.searchTimeout = options.searchTimeout ?? 10_000;
20
- this.fetchTimeout = options.fetchTimeout ?? 15_000;
21
- }
22
-
23
- async search(query: string, count = 5): Promise<BraveWebResult[]> {
24
- const url = new URL(BRAVE_SEARCH_URL);
25
- url.searchParams.set('q', query);
26
- url.searchParams.set('count', String(count));
27
-
28
- const controller = new AbortController();
29
- const timer = setTimeout(() => controller.abort(), this.searchTimeout);
30
-
31
- try {
32
- const response = await fetch(url.toString(), {
33
- headers: {
34
- 'Accept': 'application/json',
35
- 'X-Subscription-Token': this.apiKey,
36
- 'User-Agent': USER_AGENT,
37
- },
38
- signal: controller.signal,
39
- });
40
-
41
- if (!response.ok) {
42
- throw new Error(`Brave Search API error: ${response.status} ${response.statusText}`);
43
- }
44
-
45
- const data = (await response.json()) as BraveSearchResponse;
46
- return (data.web?.results ?? []).map((r) => ({
47
- ...r,
48
- description: stripHtml(r.description),
49
- extra_snippets: r.extra_snippets?.map(stripHtml),
50
- }));
51
- } finally {
52
- clearTimeout(timer);
53
- }
54
- }
55
-
56
- async fetchPage(url: string): Promise<string> {
57
- const controller = new AbortController();
58
- const timer = setTimeout(() => controller.abort(), this.fetchTimeout);
59
-
60
- try {
61
- const response = await fetch(url, {
62
- headers: { 'User-Agent': USER_AGENT },
63
- signal: controller.signal,
64
- redirect: 'follow',
65
- });
66
-
67
- if (!response.ok) {
68
- return '';
69
- }
70
-
71
- const contentType = response.headers.get('content-type') ?? '';
72
- if (!contentType.includes('text/html') && !contentType.includes('text/plain')) {
73
- return '';
74
- }
75
-
76
- const html = await response.text();
77
- const maxLength = 15_000;
78
- return htmlToMarkdown(html).slice(0, maxLength);
79
- } catch {
80
- return '';
81
- } finally {
82
- clearTimeout(timer);
83
- }
84
- }
85
- }
86
-
87
- /** Strip HTML tags and decode entities from short text (e.g. Brave snippets). */
88
- function stripHtml(text: string): string {
89
- return text
90
- .replace(/<[^>]+>/g, '')
91
- .replace(/&nbsp;/g, ' ')
92
- .replace(/&amp;/g, '&')
93
- .replace(/&lt;/g, '<')
94
- .replace(/&gt;/g, '>')
95
- .replace(/&quot;/g, '"')
96
- .replace(/&#39;/g, "'")
97
- .trim();
98
- }
99
-
100
- /**
101
- * Simple HTML to markdown conversion.
102
- * Local copy to avoid circular dependency with @auxiora/tools.
103
- */
104
- function htmlToMarkdown(html: string): string {
105
- let text = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
106
- text = text.replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, '');
107
-
108
- text = text.replace(/<h1[^>]*>(.*?)<\/h1>/gi, '\n# $1\n');
109
- text = text.replace(/<h2[^>]*>(.*?)<\/h2>/gi, '\n## $1\n');
110
- text = text.replace(/<h3[^>]*>(.*?)<\/h3>/gi, '\n### $1\n');
111
-
112
- text = text.replace(/<a[^>]*href="([^"]*)"[^>]*>(.*?)<\/a>/gi, '[$2]($1)');
113
- text = text.replace(/<li[^>]*>(.*?)<\/li>/gi, '- $1\n');
114
- text = text.replace(/<p[^>]*>(.*?)<\/p>/gi, '$1\n\n');
115
- text = text.replace(/<br\s*\/?>/gi, '\n');
116
-
117
- text = text.replace(/<[^>]+>/g, '');
118
-
119
- text = text.replace(/&nbsp;/g, ' ');
120
- text = text.replace(/&amp;/g, '&');
121
- text = text.replace(/&lt;/g, '<');
122
- text = text.replace(/&gt;/g, '>');
123
- text = text.replace(/&quot;/g, '"');
124
- text = text.replace(/&#39;/g, "'");
125
-
126
- text = text.replace(/\n{3,}/g, '\n\n');
127
- text = text.replace(/[ \t]{2,}/g, ' ');
128
-
129
- return text.trim();
130
- }
package/src/citation.ts DELETED
@@ -1,80 +0,0 @@
1
- import { nanoid } from 'nanoid';
2
- import type { Source, Finding } from './types.js';
3
-
4
- export class CitationTracker {
5
- private sources = new Map<string, Source>();
6
- private findings: Finding[] = [];
7
-
8
- addSource(url: string, title: string, credibilityScore?: number): Source {
9
- const parsed = new URL(url);
10
- const domain = parsed.hostname.replace(/^www\./, '');
11
-
12
- const source: Source = {
13
- id: nanoid(),
14
- url,
15
- title,
16
- domain,
17
- accessedAt: Date.now(),
18
- credibilityScore: credibilityScore ?? 0.5,
19
- };
20
-
21
- this.sources.set(source.id, source);
22
- return source;
23
- }
24
-
25
- addFinding(content: string, sourceId: string, relevance?: number, category?: string): Finding {
26
- const finding: Finding = {
27
- id: nanoid(),
28
- content,
29
- sourceId,
30
- relevance: relevance ?? 0.5,
31
- category: category ?? 'general',
32
- };
33
-
34
- this.findings.push(finding);
35
- return finding;
36
- }
37
-
38
- getSources(): Source[] {
39
- return Array.from(this.sources.values());
40
- }
41
-
42
- getFindings(sourceId?: string): Finding[] {
43
- if (sourceId) {
44
- return this.findings.filter((f) => f.sourceId === sourceId);
45
- }
46
- return [...this.findings];
47
- }
48
-
49
- formatCitations(style: 'inline' | 'footnote' | 'bibliography'): string {
50
- const sources = this.getSources();
51
-
52
- switch (style) {
53
- case 'inline':
54
- return sources
55
- .map((s, i) => `[${i + 1}] ${s.title} (${s.domain})`)
56
- .join('\n');
57
-
58
- case 'footnote':
59
- return sources
60
- .map((s, i) => {
61
- const date = new Date(s.accessedAt).toISOString().split('T')[0];
62
- return `^${i + 1} ${s.title}. ${s.url}. Accessed: ${date}`;
63
- })
64
- .join('\n');
65
-
66
- case 'bibliography':
67
- return sources
68
- .map(
69
- (s) =>
70
- `${s.title}. ${s.domain}. ${s.url}. Credibility: ${s.credibilityScore.toFixed(2)}`,
71
- )
72
- .join('\n');
73
- }
74
- }
75
-
76
- clear(): void {
77
- this.sources.clear();
78
- this.findings = [];
79
- }
80
- }
@@ -1,65 +0,0 @@
1
- import type { CredibilityFactors } from './types.js';
2
-
3
- const KNOWN_DOMAINS = new Map<string, number>([
4
- ['wikipedia.org', 0.95],
5
- ['arxiv.org', 0.95],
6
- ['nature.com', 0.95],
7
- ['science.org', 0.95],
8
- ['bbc.com', 0.9],
9
- ['reuters.com', 0.9],
10
- ['apnews.com', 0.9],
11
- ['nytimes.com', 0.8],
12
- ['washingtonpost.com', 0.8],
13
- ['theguardian.com', 0.8],
14
- ['techcrunch.com', 0.8],
15
- ['medium.com', 0.7],
16
- ['stackoverflow.com', 0.7],
17
- ['github.com', 0.7],
18
- ['reddit.com', 0.5],
19
- ['quora.com', 0.5],
20
- ['twitter.com', 0.3],
21
- ['facebook.com', 0.3],
22
- ]);
23
-
24
- export class CredibilityScorer {
25
- score(url: string, factors?: Partial<CredibilityFactors>): number {
26
- const domain = this.extractDomain(url);
27
- let score = this.getDomainReputation(domain);
28
-
29
- if (factors?.isHttps) {
30
- score += 0.05;
31
- }
32
- if (factors?.hasAuthor) {
33
- score += 0.05;
34
- }
35
- if (factors?.hasDate) {
36
- score += 0.05;
37
- }
38
- if (factors?.crossReferenced) {
39
- score += 0.1;
40
- }
41
-
42
- return Math.min(Math.max(score, 0), 1);
43
- }
44
-
45
- getDomainReputation(domain: string): number {
46
- const lookup = KNOWN_DOMAINS.get(domain);
47
- if (lookup !== undefined) {
48
- return lookup;
49
- }
50
-
51
- if (domain.endsWith('.gov')) {
52
- return 0.9;
53
- }
54
- if (domain.endsWith('.edu')) {
55
- return 0.9;
56
- }
57
-
58
- return 0.5;
59
- }
60
-
61
- extractDomain(url: string): string {
62
- const parsed = new URL(url);
63
- return parsed.hostname.replace(/^www\./, '');
64
- }
65
- }
package/src/engine.ts DELETED
@@ -1,244 +0,0 @@
1
- import { nanoid } from 'nanoid';
2
- import type { ResearchDepth, ResearchQuery, ResearchResult, Finding, Source, ResearchProvider } from './types.js';
3
- import { BraveSearchClient } from './brave-search.js';
4
- import { CredibilityScorer } from './credibility.js';
5
- import { CitationTracker } from './citation.js';
6
-
7
- export interface ResearchEngineConfig {
8
- maxConcurrentSources?: number;
9
- defaultDepth?: ResearchDepth;
10
- braveApiKey?: string;
11
- searchTimeout?: number;
12
- fetchTimeout?: number;
13
- provider?: ResearchProvider;
14
- }
15
-
16
- export class ResearchEngine {
17
- private readonly config: Required<Omit<ResearchEngineConfig, 'provider' | 'braveApiKey'>>;
18
- private readonly braveClient: BraveSearchClient;
19
- private readonly provider?: ResearchProvider;
20
- private readonly credibilityScorer = new CredibilityScorer();
21
-
22
- constructor(config?: ResearchEngineConfig) {
23
- const apiKey = config?.braveApiKey ?? process.env.AUXIORA_RESEARCH_BRAVE_API_KEY;
24
- if (!apiKey) {
25
- throw new Error('Research engine requires a Brave Search API key (braveApiKey or AUXIORA_RESEARCH_BRAVE_API_KEY)');
26
- }
27
-
28
- this.config = {
29
- maxConcurrentSources: config?.maxConcurrentSources ?? 5,
30
- defaultDepth: config?.defaultDepth ?? 'standard',
31
- searchTimeout: config?.searchTimeout ?? 10_000,
32
- fetchTimeout: config?.fetchTimeout ?? 15_000,
33
- };
34
-
35
- this.braveClient = new BraveSearchClient({
36
- apiKey,
37
- searchTimeout: this.config.searchTimeout,
38
- fetchTimeout: this.config.fetchTimeout,
39
- });
40
-
41
- this.provider = config?.provider;
42
- }
43
-
44
- async research(query: ResearchQuery): Promise<ResearchResult> {
45
- const startTime = Date.now();
46
- const depth = query.depth ?? this.config.defaultDepth;
47
- const maxSources = query.maxSources ?? this.getMaxSources(depth);
48
- const searchQueries = this.planResearch(query.topic, depth, query.focusAreas);
49
-
50
- const tracker = new CitationTracker();
51
- const findings: Finding[] = [];
52
-
53
- // Execute searches in parallel, limited to maxSources total results
54
- const searchPromises = searchQueries.map((q) => this.braveClient.search(q, 3));
55
- const searchResults = await Promise.all(searchPromises);
56
-
57
- // Flatten and deduplicate by URL, cap at maxSources
58
- const seenUrls = new Set<string>();
59
- const uniqueResults: { query: string; url: string; title: string; snippet: string }[] = [];
60
-
61
- for (let i = 0; i < searchResults.length; i++) {
62
- for (const result of searchResults[i]) {
63
- if (!seenUrls.has(result.url) && uniqueResults.length < maxSources) {
64
- seenUrls.add(result.url);
65
- uniqueResults.push({
66
- query: searchQueries[i],
67
- url: result.url,
68
- title: result.title,
69
- snippet: result.description,
70
- });
71
- }
72
- }
73
- }
74
-
75
- // Fetch pages in parallel
76
- const fetchPromises = uniqueResults.map((r) => this.braveClient.fetchPage(r.url));
77
- const pageContents = await Promise.all(fetchPromises);
78
-
79
- // Process each result
80
- for (let i = 0; i < uniqueResults.length; i++) {
81
- const r = uniqueResults[i];
82
- const credibility = this.credibilityScorer.score(r.url, {
83
- isHttps: r.url.startsWith('https'),
84
- });
85
- const source = tracker.addSource(r.url, r.title, credibility);
86
-
87
- const content = pageContents[i];
88
- if (this.provider && content) {
89
- // AI-powered extraction
90
- const extracted = await this.extractFindings(r.query, content, r.title);
91
- for (const text of extracted) {
92
- tracker.addFinding(text, source.id, credibility, 'general');
93
- }
94
- } else {
95
- // Fallback: use search snippet + first paragraph from fetched content
96
- let text = r.snippet;
97
- if (content) {
98
- const firstParagraph = content.split('\n\n').find((p) => p.trim().length > 50);
99
- if (firstParagraph) {
100
- text += ' ' + firstParagraph.trim();
101
- }
102
- }
103
- tracker.addFinding(text, source.id, credibility, 'general');
104
- }
105
- }
106
-
107
- const allFindings = tracker.getFindings();
108
- const deduplicated = this.deduplicateFindings(allFindings);
109
- const sources = tracker.getSources();
110
-
111
- // Synthesize summary
112
- let executiveSummary: string;
113
- if (this.provider && deduplicated.length > 0) {
114
- executiveSummary = await this.synthesizeWithAI(query.topic, deduplicated, sources);
115
- } else {
116
- executiveSummary = this.synthesize(deduplicated);
117
- }
118
-
119
- return {
120
- id: nanoid(),
121
- query,
122
- findings: deduplicated,
123
- executiveSummary,
124
- sources,
125
- confidence: Math.min(deduplicated.length / maxSources, 1),
126
- generatedAt: Date.now(),
127
- durationMs: Date.now() - startTime,
128
- };
129
- }
130
-
131
- planResearch(topic: string, depth: ResearchDepth, focusAreas?: string[]): string[] {
132
- let queries: string[];
133
- switch (depth) {
134
- case 'quick':
135
- queries = [topic];
136
- break;
137
- case 'standard':
138
- queries = [topic, `${topic} overview`, `${topic} analysis`];
139
- break;
140
- case 'deep':
141
- queries = [
142
- topic,
143
- `${topic} overview`,
144
- `${topic} analysis`,
145
- `${topic} comparison`,
146
- `${topic} best practices`,
147
- `${topic} research papers`,
148
- ];
149
- break;
150
- }
151
-
152
- if (focusAreas?.length) {
153
- for (const area of focusAreas) {
154
- queries.push(`${topic} ${area}`);
155
- }
156
- }
157
-
158
- return queries;
159
- }
160
-
161
- synthesize(findings: Finding[]): string {
162
- const sourceIds = new Set(findings.map((f) => f.sourceId));
163
- const topFindings = findings
164
- .sort((a, b) => b.relevance - a.relevance)
165
- .slice(0, 3)
166
- .map((f) => f.content);
167
-
168
- return `Based on ${findings.length} findings from ${sourceIds.size} sources: ${topFindings.join('. ')}`;
169
- }
170
-
171
- deduplicateFindings(findings: Finding[]): Finding[] {
172
- const seen = new Set<string>();
173
- return findings.filter((f) => {
174
- if (seen.has(f.content)) {
175
- return false;
176
- }
177
- seen.add(f.content);
178
- return true;
179
- });
180
- }
181
-
182
- private async extractFindings(query: string, content: string, title: string): Promise<string[]> {
183
- if (!this.provider) return [];
184
-
185
- try {
186
- const result = await this.provider.complete(
187
- [{ role: 'user', content: `Extract key findings from this source about "${query}".\n\nSource: ${title}\n\nContent:\n${content.slice(0, 8000)}` }],
188
- {
189
- systemPrompt: 'You are a research assistant. Extract 2-4 distinct factual findings from the source. Return each finding on a separate line, prefixed with "- ". Be concise and factual.',
190
- maxTokens: 500,
191
- temperature: 0.1,
192
- },
193
- );
194
-
195
- return result.content
196
- .split('\n')
197
- .filter((line) => line.startsWith('- '))
198
- .map((line) => line.slice(2).trim())
199
- .filter((line) => line.length > 10);
200
- } catch {
201
- return [];
202
- }
203
- }
204
-
205
- private async synthesizeWithAI(topic: string, findings: Finding[], sources: Source[]): Promise<string> {
206
- if (!this.provider) return this.synthesize(findings);
207
-
208
- try {
209
- const findingsText = findings
210
- .sort((a, b) => b.relevance - a.relevance)
211
- .slice(0, 10)
212
- .map((f, i) => `${i + 1}. ${f.content}`)
213
- .join('\n');
214
-
215
- const sourcesText = sources
216
- .map((s) => `- ${s.title} (${s.domain}, credibility: ${s.credibilityScore.toFixed(2)})`)
217
- .join('\n');
218
-
219
- const result = await this.provider.complete(
220
- [{ role: 'user', content: `Synthesize these research findings about "${topic}" into a concise executive summary.\n\nFindings:\n${findingsText}\n\nSources:\n${sourcesText}` }],
221
- {
222
- systemPrompt: 'You are a research analyst. Write a concise executive summary (2-4 paragraphs) synthesizing the findings. Mention source credibility where relevant. Be factual and balanced.',
223
- maxTokens: 800,
224
- temperature: 0.3,
225
- },
226
- );
227
-
228
- return result.content;
229
- } catch {
230
- return this.synthesize(findings);
231
- }
232
- }
233
-
234
- private getMaxSources(depth: ResearchDepth): number {
235
- switch (depth) {
236
- case 'quick':
237
- return 3;
238
- case 'standard':
239
- return 5;
240
- case 'deep':
241
- return 10;
242
- }
243
- }
244
- }
package/src/index.ts DELETED
@@ -1,18 +0,0 @@
1
- export type {
2
- ResearchDepth,
3
- ResearchQuery,
4
- ResearchResult,
5
- Finding,
6
- Source,
7
- CredibilityFactors,
8
- KnowledgeEntity,
9
- KnowledgeRelation,
10
- ResearchProvider,
11
- BraveWebResult,
12
- BraveSearchResponse,
13
- } from './types.js';
14
- export { ResearchEngine, type ResearchEngineConfig } from './engine.js';
15
- export { BraveSearchClient, type BraveSearchOptions } from './brave-search.js';
16
- export { CredibilityScorer } from './credibility.js';
17
- export { CitationTracker } from './citation.js';
18
- export { KnowledgeGraph } from './knowledge-graph.js';
@@ -1,87 +0,0 @@
1
- import { nanoid } from 'nanoid';
2
- import type { KnowledgeEntity, KnowledgeRelation } from './types.js';
3
-
4
- export class KnowledgeGraph {
5
- private entities = new Map<string, KnowledgeEntity>();
6
- private relations: KnowledgeRelation[] = [];
7
-
8
- addEntity(name: string, type: string, properties?: Record<string, string>): KnowledgeEntity {
9
- const entity: KnowledgeEntity = {
10
- id: nanoid(),
11
- name,
12
- type,
13
- properties: properties ?? {},
14
- };
15
-
16
- this.entities.set(entity.id, entity);
17
- return entity;
18
- }
19
-
20
- getEntity(id: string): KnowledgeEntity | undefined {
21
- return this.entities.get(id);
22
- }
23
-
24
- findByName(name: string): KnowledgeEntity | undefined {
25
- for (const entity of this.entities.values()) {
26
- if (entity.name === name) {
27
- return entity;
28
- }
29
- }
30
- return undefined;
31
- }
32
-
33
- findByType(type: string): KnowledgeEntity[] {
34
- const result: KnowledgeEntity[] = [];
35
- for (const entity of this.entities.values()) {
36
- if (entity.type === type) {
37
- result.push(entity);
38
- }
39
- }
40
- return result;
41
- }
42
-
43
- addRelation(fromId: string, toId: string, relation: string): void {
44
- this.relations.push({ fromId, toId, relation });
45
- }
46
-
47
- getRelated(entityId: string): Array<{ entity: KnowledgeEntity; relation: string; direction: 'from' | 'to' }> {
48
- const result: Array<{ entity: KnowledgeEntity; relation: string; direction: 'from' | 'to' }> = [];
49
-
50
- for (const rel of this.relations) {
51
- if (rel.fromId === entityId) {
52
- const entity = this.entities.get(rel.toId);
53
- if (entity) {
54
- result.push({ entity, relation: rel.relation, direction: 'from' });
55
- }
56
- }
57
- if (rel.toId === entityId) {
58
- const entity = this.entities.get(rel.fromId);
59
- if (entity) {
60
- result.push({ entity, relation: rel.relation, direction: 'to' });
61
- }
62
- }
63
- }
64
-
65
- return result;
66
- }
67
-
68
- removeEntity(id: string): boolean {
69
- const deleted = this.entities.delete(id);
70
- if (deleted) {
71
- this.relations = this.relations.filter((r) => r.fromId !== id && r.toId !== id);
72
- }
73
- return deleted;
74
- }
75
-
76
- toJSON(): { entities: KnowledgeEntity[]; relations: KnowledgeRelation[] } {
77
- return {
78
- entities: Array.from(this.entities.values()),
79
- relations: [...this.relations],
80
- };
81
- }
82
-
83
- clear(): void {
84
- this.entities.clear();
85
- this.relations = [];
86
- }
87
- }
package/src/types.ts DELETED
@@ -1,78 +0,0 @@
1
- export type ResearchDepth = 'quick' | 'standard' | 'deep';
2
-
3
- export interface ResearchQuery {
4
- topic: string;
5
- depth: ResearchDepth;
6
- maxSources?: number;
7
- focusAreas?: string[];
8
- }
9
-
10
- export interface ResearchResult {
11
- id: string;
12
- query: ResearchQuery;
13
- findings: Finding[];
14
- executiveSummary: string;
15
- sources: Source[];
16
- confidence: number; // 0-1
17
- generatedAt: number;
18
- durationMs: number;
19
- }
20
-
21
- export interface Finding {
22
- id: string;
23
- content: string;
24
- sourceId: string;
25
- relevance: number; // 0-1
26
- category: string;
27
- }
28
-
29
- export interface Source {
30
- id: string;
31
- url: string;
32
- title: string;
33
- domain: string;
34
- accessedAt: number;
35
- credibilityScore: number; // 0-1
36
- }
37
-
38
- export interface CredibilityFactors {
39
- domainReputation: number;
40
- hasAuthor: boolean;
41
- hasDate: boolean;
42
- isHttps: boolean;
43
- crossReferenced: boolean;
44
- }
45
-
46
- export interface KnowledgeEntity {
47
- id: string;
48
- name: string;
49
- type: string;
50
- properties: Record<string, string>;
51
- }
52
-
53
- export interface KnowledgeRelation {
54
- fromId: string;
55
- toId: string;
56
- relation: string;
57
- }
58
-
59
- /** Minimal provider interface — avoids hard dep on @auxiora/providers */
60
- export interface ResearchProvider {
61
- complete(
62
- messages: { role: 'user' | 'assistant' | 'system'; content: string }[],
63
- options?: { systemPrompt?: string; maxTokens?: number; temperature?: number },
64
- ): Promise<{ content: string }>;
65
- }
66
-
67
- export interface BraveWebResult {
68
- title: string;
69
- url: string;
70
- description: string;
71
- extra_snippets?: string[];
72
- }
73
-
74
- export interface BraveSearchResponse {
75
- web?: {
76
- results: BraveWebResult[];
77
- };
78
- }
@@ -1,72 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { CitationTracker } from '../src/citation.js';
3
-
4
- describe('CitationTracker', () => {
5
- it('addSource creates source with ID', () => {
6
- const tracker = new CitationTracker();
7
- const source = tracker.addSource('https://example.com/article', 'Test Article');
8
- expect(source.id).toBeDefined();
9
- expect(source.title).toBe('Test Article');
10
- expect(source.url).toBe('https://example.com/article');
11
- });
12
-
13
- it('addSource extracts domain', () => {
14
- const tracker = new CitationTracker();
15
- const source = tracker.addSource('https://www.example.com/article', 'Test');
16
- expect(source.domain).toBe('example.com');
17
- });
18
-
19
- it('addFinding links to source', () => {
20
- const tracker = new CitationTracker();
21
- const source = tracker.addSource('https://example.com', 'Source');
22
- const finding = tracker.addFinding('Important fact', source.id);
23
- expect(finding.sourceId).toBe(source.id);
24
- expect(finding.content).toBe('Important fact');
25
- });
26
-
27
- it('getFindings filters by sourceId', () => {
28
- const tracker = new CitationTracker();
29
- const s1 = tracker.addSource('https://a.com', 'A');
30
- const s2 = tracker.addSource('https://b.com', 'B');
31
- tracker.addFinding('Fact 1', s1.id);
32
- tracker.addFinding('Fact 2', s2.id);
33
- tracker.addFinding('Fact 3', s1.id);
34
-
35
- const filtered = tracker.getFindings(s1.id);
36
- expect(filtered).toHaveLength(2);
37
- expect(filtered.every((f) => f.sourceId === s1.id)).toBe(true);
38
- });
39
-
40
- it('formatCitations inline format', () => {
41
- const tracker = new CitationTracker();
42
- tracker.addSource('https://example.com/page', 'Example Page', 0.8);
43
- const output = tracker.formatCitations('inline');
44
- expect(output).toContain('[1]');
45
- expect(output).toContain('Example Page');
46
- expect(output).toContain('example.com');
47
- });
48
-
49
- it('formatCitations bibliography format', () => {
50
- const tracker = new CitationTracker();
51
- tracker.addSource('https://example.com/page', 'Example Page', 0.8);
52
- const output = tracker.formatCitations('bibliography');
53
- expect(output).toContain('Example Page');
54
- expect(output).toContain('Credibility: 0.80');
55
- });
56
-
57
- it('getSources returns all', () => {
58
- const tracker = new CitationTracker();
59
- tracker.addSource('https://a.com', 'A');
60
- tracker.addSource('https://b.com', 'B');
61
- expect(tracker.getSources()).toHaveLength(2);
62
- });
63
-
64
- it('clear empties everything', () => {
65
- const tracker = new CitationTracker();
66
- tracker.addSource('https://a.com', 'A');
67
- tracker.addFinding('fact', 'some-id');
68
- tracker.clear();
69
- expect(tracker.getSources()).toHaveLength(0);
70
- expect(tracker.getFindings()).toHaveLength(0);
71
- });
72
- });
@@ -1,53 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { CredibilityScorer } from '../src/credibility.js';
3
-
4
- describe('CredibilityScorer', () => {
5
- const scorer = new CredibilityScorer();
6
-
7
- it('wikipedia.org scores 0.95', () => {
8
- const score = scorer.score('https://wikipedia.org/wiki/Test');
9
- expect(score).toBe(0.95);
10
- });
11
-
12
- it('.gov domain scores 0.9', () => {
13
- const score = scorer.score('https://data.gov/dataset');
14
- expect(score).toBe(0.9);
15
- });
16
-
17
- it('.edu domain scores 0.9', () => {
18
- const score = scorer.score('https://mit.edu/research');
19
- expect(score).toBe(0.9);
20
- });
21
-
22
- it('unknown domain scores 0.5', () => {
23
- const score = scorer.score('https://randomsite.xyz/page');
24
- expect(score).toBe(0.5);
25
- });
26
-
27
- it('HTTPS bonus adds 0.05', () => {
28
- const base = scorer.score('https://randomsite.xyz/page');
29
- const withHttps = scorer.score('https://randomsite.xyz/page', { isHttps: true });
30
- expect(withHttps - base).toBeCloseTo(0.05);
31
- });
32
-
33
- it('crossReferenced adds 0.1', () => {
34
- const base = scorer.score('https://randomsite.xyz/page');
35
- const withCross = scorer.score('https://randomsite.xyz/page', { crossReferenced: true });
36
- expect(withCross - base).toBeCloseTo(0.1);
37
- });
38
-
39
- it('score clamped to max 1.0', () => {
40
- const score = scorer.score('https://wikipedia.org/wiki/Test', {
41
- isHttps: true,
42
- hasAuthor: true,
43
- hasDate: true,
44
- crossReferenced: true,
45
- });
46
- expect(score).toBeLessThanOrEqual(1.0);
47
- });
48
-
49
- it('extractDomain handles full URLs', () => {
50
- expect(scorer.extractDomain('https://www.example.com/path?q=1')).toBe('example.com');
51
- expect(scorer.extractDomain('https://sub.domain.org/page')).toBe('sub.domain.org');
52
- });
53
- });
@@ -1,104 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { ResearchEngine } from '../src/engine.js';
3
-
4
- const FAKE_KEY = 'test-brave-api-key';
5
-
6
- function createEngine() {
7
- return new ResearchEngine({ braveApiKey: FAKE_KEY });
8
- }
9
-
10
- describe('ResearchEngine', () => {
11
- it('throws when no API key is configured', () => {
12
- const original = process.env.AUXIORA_RESEARCH_BRAVE_API_KEY;
13
- delete process.env.AUXIORA_RESEARCH_BRAVE_API_KEY;
14
- try {
15
- expect(() => new ResearchEngine()).toThrow('Brave Search API key');
16
- } finally {
17
- if (original !== undefined) {
18
- process.env.AUXIORA_RESEARCH_BRAVE_API_KEY = original;
19
- }
20
- }
21
- });
22
-
23
- it('planResearch quick returns 1 query', () => {
24
- const engine = createEngine();
25
- const queries = engine.planResearch('TypeScript', 'quick');
26
- expect(queries).toHaveLength(1);
27
- expect(queries[0]).toBe('TypeScript');
28
- });
29
-
30
- it('planResearch standard returns 3 queries', () => {
31
- const engine = createEngine();
32
- const queries = engine.planResearch('TypeScript', 'standard');
33
- expect(queries).toHaveLength(3);
34
- expect(queries).toContain('TypeScript');
35
- expect(queries).toContain('TypeScript overview');
36
- expect(queries).toContain('TypeScript analysis');
37
- });
38
-
39
- it('planResearch deep returns 6 queries', () => {
40
- const engine = createEngine();
41
- const queries = engine.planResearch('TypeScript', 'deep');
42
- expect(queries).toHaveLength(6);
43
- expect(queries).toContain('TypeScript comparison');
44
- expect(queries).toContain('TypeScript best practices');
45
- expect(queries).toContain('TypeScript research papers');
46
- });
47
-
48
- it('planResearch with focusAreas appends extra queries', () => {
49
- const engine = createEngine();
50
- const queries = engine.planResearch('TypeScript', 'quick', ['performance', 'security']);
51
- expect(queries).toHaveLength(3);
52
- expect(queries).toContain('TypeScript');
53
- expect(queries).toContain('TypeScript performance');
54
- expect(queries).toContain('TypeScript security');
55
- });
56
-
57
- it('planResearch with focusAreas on standard depth', () => {
58
- const engine = createEngine();
59
- const queries = engine.planResearch('AI safety', 'standard', ['alignment']);
60
- expect(queries).toHaveLength(4);
61
- expect(queries).toContain('AI safety alignment');
62
- });
63
-
64
- it('synthesize formats findings', () => {
65
- const engine = createEngine();
66
- const findings = [
67
- { id: '1', content: 'Finding A', sourceId: 's1', relevance: 0.9, category: 'general' },
68
- { id: '2', content: 'Finding B', sourceId: 's2', relevance: 0.8, category: 'general' },
69
- ];
70
- const summary = engine.synthesize(findings);
71
- expect(summary).toContain('2 findings');
72
- expect(summary).toContain('2 sources');
73
- expect(summary).toContain('Finding A');
74
- expect(summary).toContain('Finding B');
75
- });
76
-
77
- it('deduplicateFindings removes duplicates', () => {
78
- const engine = createEngine();
79
- const findings = [
80
- { id: '1', content: 'Same content', sourceId: 's1', relevance: 0.9, category: 'general' },
81
- { id: '2', content: 'Same content', sourceId: 's2', relevance: 0.8, category: 'general' },
82
- { id: '3', content: 'Different content', sourceId: 's3', relevance: 0.7, category: 'general' },
83
- ];
84
- const result = engine.deduplicateFindings(findings);
85
- expect(result).toHaveLength(2);
86
- expect(result[0].content).toBe('Same content');
87
- expect(result[1].content).toBe('Different content');
88
- });
89
-
90
- it('accepts API key from environment variable', () => {
91
- const original = process.env.AUXIORA_RESEARCH_BRAVE_API_KEY;
92
- process.env.AUXIORA_RESEARCH_BRAVE_API_KEY = 'env-key';
93
- try {
94
- const engine = new ResearchEngine();
95
- expect(engine).toBeDefined();
96
- } finally {
97
- if (original !== undefined) {
98
- process.env.AUXIORA_RESEARCH_BRAVE_API_KEY = original;
99
- } else {
100
- delete process.env.AUXIORA_RESEARCH_BRAVE_API_KEY;
101
- }
102
- }
103
- });
104
- });
@@ -1,68 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { KnowledgeGraph } from '../src/knowledge-graph.js';
3
-
4
- describe('KnowledgeGraph', () => {
5
- it('addEntity creates with ID', () => {
6
- const graph = new KnowledgeGraph();
7
- const entity = graph.addEntity('TypeScript', 'language', { paradigm: 'multi' });
8
- expect(entity.id).toBeDefined();
9
- expect(entity.name).toBe('TypeScript');
10
- expect(entity.type).toBe('language');
11
- expect(entity.properties.paradigm).toBe('multi');
12
- });
13
-
14
- it('findByName finds entity', () => {
15
- const graph = new KnowledgeGraph();
16
- graph.addEntity('JavaScript', 'language');
17
- const found = graph.findByName('JavaScript');
18
- expect(found).toBeDefined();
19
- expect(found!.name).toBe('JavaScript');
20
- expect(graph.findByName('Python')).toBeUndefined();
21
- });
22
-
23
- it('findByType returns matching', () => {
24
- const graph = new KnowledgeGraph();
25
- graph.addEntity('TypeScript', 'language');
26
- graph.addEntity('JavaScript', 'language');
27
- graph.addEntity('React', 'framework');
28
- const languages = graph.findByType('language');
29
- expect(languages).toHaveLength(2);
30
- expect(languages.every((e) => e.type === 'language')).toBe(true);
31
- });
32
-
33
- it('addRelation links entities', () => {
34
- const graph = new KnowledgeGraph();
35
- const ts = graph.addEntity('TypeScript', 'language');
36
- const js = graph.addEntity('JavaScript', 'language');
37
- graph.addRelation(ts.id, js.id, 'compiles_to');
38
- const json = graph.toJSON();
39
- expect(json.relations).toHaveLength(1);
40
- expect(json.relations[0].relation).toBe('compiles_to');
41
- });
42
-
43
- it('getRelated returns connections', () => {
44
- const graph = new KnowledgeGraph();
45
- const ts = graph.addEntity('TypeScript', 'language');
46
- const js = graph.addEntity('JavaScript', 'language');
47
- const react = graph.addEntity('React', 'framework');
48
- graph.addRelation(ts.id, js.id, 'compiles_to');
49
- graph.addRelation(react.id, ts.id, 'uses');
50
-
51
- const related = graph.getRelated(ts.id);
52
- expect(related).toHaveLength(2);
53
- expect(related.some((r) => r.entity.name === 'JavaScript' && r.direction === 'from')).toBe(true);
54
- expect(related.some((r) => r.entity.name === 'React' && r.direction === 'to')).toBe(true);
55
- });
56
-
57
- it('removeEntity also removes relations', () => {
58
- const graph = new KnowledgeGraph();
59
- const ts = graph.addEntity('TypeScript', 'language');
60
- const js = graph.addEntity('JavaScript', 'language');
61
- graph.addRelation(ts.id, js.id, 'compiles_to');
62
-
63
- const removed = graph.removeEntity(ts.id);
64
- expect(removed).toBe(true);
65
- expect(graph.getEntity(ts.id)).toBeUndefined();
66
- expect(graph.toJSON().relations).toHaveLength(0);
67
- });
68
- });
package/tsconfig.json DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "./dist",
5
- "rootDir": "./src"
6
- },
7
- "include": ["src/**/*"],
8
- "references": [
9
- { "path": "../logger" },
10
- { "path": "../audit" }
11
- ]
12
- }
@@ -1 +0,0 @@
1
- {"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/types.ts","./src/brave-search.ts","../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/index.d.ts","./src/citation.ts","./src/credibility.ts","./src/engine.ts","./src/knowledge-graph.ts","./src/index.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/blob.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/console.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/crypto.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/encoding.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/importmeta.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/messaging.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/performance.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/streams.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/timers.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/url.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector/promises.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path/posix.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path/win32.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/quic.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/test/reporters.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/util/types.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/index.d.ts"],"fileIdsList":[[74,133,134,136,144,148,151,153,154,155,167],[74,135,136,144,148,151,153,154,155,167],[136,144,148,151,153,154,155,167],[74,136,144,148,151,153,154,155,167,175],[74,136,137,142,144,147,148,151,153,154,155,157,167,172,184],[74,136,137,138,144,147,148,151,153,154,155,167],[74,136,144,148,151,153,154,155,167],[74,136,139,144,148,151,153,154,155,167,185],[74,136,140,141,144,148,151,153,154,155,158,167],[74,136,141,144,148,151,153,154,155,167,172,181],[74,136,142,144,147,148,151,153,154,155,157,167],[74,135,136,143,144,148,151,153,154,155,167],[74,136,144,145,148,151,153,154,155,167],[74,136,144,146,147,148,151,153,154,155,167],[74,135,136,144,147,148,151,153,154,155,167],[74,136,144,147,148,149,151,153,154,155,167,172,184],[74,136,144,147,148,149,151,153,154,155,167,172,175],[74,123,136,144,147,148,150,151,153,154,155,157,167,172,184],[74,136,144,147,148,150,151,153,154,155,157,167,172,181,184],[74,136,144,148,150,151,152,153,154,155,167,172,181,184],[72,73,74,75,76,77,78,79,80,81,82,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,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],[74,136,144,147,148,151,153,154,155,167],[74,136,144,148,151,153,155,167],[74,136,144,148,151,153,154,155,156,167,184],[74,136,144,147,148,151,153,154,155,157,167,172],[74,136,144,148,151,153,154,155,158,167],[74,136,144,148,151,153,154,155,159,167],[74,136,144,147,148,151,153,154,155,162,167],[74,133,134,135,136,137,138,139,140,141,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],[74,136,144,148,151,153,154,155,164,167],[74,136,144,148,151,153,154,155,165,167],[74,136,141,144,148,151,153,154,155,157,167,175],[74,136,144,147,148,151,153,154,155,167,168],[74,136,144,148,151,153,154,155,167,169,185,188],[74,136,144,147,148,151,153,154,155,167,172,174,175],[74,136,144,148,151,153,154,155,167,173,175],[74,136,144,148,151,153,154,155,167,175,185],[74,136,144,148,151,153,154,155,167,176],[74,133,136,144,148,151,153,154,155,167,172,178],[74,136,144,148,151,153,154,155,167,172,177],[74,136,144,147,148,151,153,154,155,167,179,180],[74,136,144,148,151,153,154,155,167,179,180],[74,136,141,144,148,151,153,154,155,157,167,172,181],[74,136,144,148,151,153,154,155,167,182],[74,136,144,148,151,153,154,155,157,167,183],[74,136,144,148,150,151,153,154,155,165,167,184],[74,136,144,148,151,153,154,155,167,185,186],[74,136,141,144,148,151,153,154,155,167,186],[74,136,144,148,151,153,154,155,167,172,187],[74,136,144,148,151,153,154,155,156,167,188],[74,136,144,148,151,153,154,155,167,189],[74,136,139,144,148,151,153,154,155,167],[74,136,141,144,148,151,153,154,155,167],[74,136,144,148,151,153,154,155,167,185],[74,123,136,144,148,151,153,154,155,167],[74,136,144,148,151,153,154,155,167,184],[74,136,144,148,151,153,154,155,167,190],[74,136,144,148,151,153,154,155,162,167],[74,136,144,148,151,153,154,155,167,180],[74,123,136,144,147,148,149,151,153,154,155,162,167,172,175,184,187,188,190],[74,136,144,148,151,153,154,155,167,172,191],[74,89,92,95,96,136,144,148,151,153,154,155,167,184],[74,92,136,144,148,151,153,154,155,167,172,184],[74,92,96,136,144,148,151,153,154,155,167,184],[74,136,144,148,151,153,154,155,167,172],[74,86,136,144,148,151,153,154,155,167],[74,90,136,144,148,151,153,154,155,167],[74,88,89,92,136,144,148,151,153,154,155,167,184],[74,136,144,148,151,153,154,155,157,167,181],[74,136,144,148,151,153,154,155,167,192],[74,86,136,144,148,151,153,154,155,167,192],[74,88,92,136,144,148,151,153,154,155,157,167,184],[74,83,84,85,87,91,136,144,147,148,151,153,154,155,167,172,184],[74,92,100,108,136,144,148,151,153,154,155,167],[74,84,90,136,144,148,151,153,154,155,167],[74,92,117,118,136,144,148,151,153,154,155,167],[74,84,87,92,136,144,148,151,153,154,155,167,175,184,192],[74,92,136,144,148,151,153,154,155,167],[74,88,92,136,144,148,151,153,154,155,167,184],[74,83,136,144,148,151,153,154,155,167],[74,86,87,88,90,91,92,93,94,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,118,119,120,121,122,136,144,148,151,153,154,155,167],[74,92,110,113,136,144,148,151,153,154,155,167],[74,92,100,101,102,136,144,148,151,153,154,155,167],[74,90,92,101,103,136,144,148,151,153,154,155,167],[74,91,136,144,148,151,153,154,155,167],[74,84,86,92,136,144,148,151,153,154,155,167],[74,92,96,101,103,136,144,148,151,153,154,155,167],[74,96,136,144,148,151,153,154,155,167],[74,90,92,95,136,144,148,151,153,154,155,167,184],[74,84,88,92,100,136,144,148,151,153,154,155,167],[74,92,110,136,144,148,151,153,154,155,167],[74,103,136,144,148,151,153,154,155,167],[74,86,92,117,136,144,148,151,153,154,155,167,175,190,192],[64,74,136,144,148,151,153,154,155,167],[64,66,74,136,144,148,151,153,154,155,167],[64,65,66,67,68,74,136,144,148,151,153,154,155,167],[64,65,67,68,69,70,74,136,144,148,151,153,154,155,167]],"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":"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":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"f142ebb08f3d9a873eb3a9aeefc790558114d8cf80f05f0dd59d5af4597d8505","signature":"df4961b7c20df353f34673cef3491736f3b462d00fe98973eefe48f3b9f9358f","impliedFormat":99},{"version":"27c438b16df348223a2afd3f2d176da502cbddaee9eafb33f3ef4a529b6ffb71","signature":"fc52e5d72884755b20b5edf4bf0d9e8cb210b954bb84ff79b3ad89593763b30d","impliedFormat":99},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","impliedFormat":99},{"version":"f33516624e9d0fc51bfef14fb0d690c484cc3c77db31309e58421724ea64a9d5","signature":"6640d8410b9e0c9a454d3b614d02b01354d141d80a0ed29c90004b16dd37893e","impliedFormat":99},{"version":"72c1bfac3c207d6da706b579acfc8252a9e6d43f3f8f40ed11b5952654876dda","signature":"b1d8a38eac87ebd89adcdf346127bb1b613e20a09de50af5f649182f431d3145","impliedFormat":99},{"version":"d5e52d5f23d2e88bb41aaf14618278283349a394f2e152e38c88e8194d9f746f","signature":"1cd9e506cc868bb61f298fa03e3f53a35da361dbec96d33f8e15eae24a5108ec","impliedFormat":99},{"version":"144b2c25d868ed3a3c3722f87448e8c2c42ece336b06bf559f3c190a60ee2f08","signature":"95fbbb3636c2fd28bdafb0f8e7436a9b339404e28f3521cd5eb80d2d81c74976","impliedFormat":99},{"version":"28b7bd6535b2979f8885717db534dd33e6dd350a2715f368b19f2a9d86159824","signature":"b92cdaca2d9bce7198f9779ff8c9e01094d28eee50a82af24541af0918cf8941","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"dd0109710de4cd93e245121ab86d8c66d20f3ead80074b68e9c3e349c4f53342","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf83d90d5faf27b994c2e79af02e32b555dbfe42cd9bd1571445f2168d1f4e2d","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"0e28335ac43f4d94dd2fe6d9e6fa6813570640839addd10d309d7985f33a6308","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"e6f370b5c1d52edabb93ef055d0c0c396a98be77db8aa022fcc3670787b8b5f5","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"9d96a7ce809392ff2cb99691acf7c62e632fe56897356ba013b689277aca3619","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c0a08e343c6a0ae17bd13ba6d44a9758236dc904cd5e4b43456996cd51f520","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"6f80e51ba310608cd71bcdc09a171d7bbfb3b316048601c9ec215ce16a8dcfbc","impliedFormat":1},{"version":"10947bb49601aeec9ea1dddf61ef6e4f8442f949bd40a8008e12b129deb037be","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"1641d32611fc7aa82cdd9fa38ff18349aac4eda9e032ced76b21943673887f9a","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"586eaf66bace2e731cee0ddfbfac326ad74a83c1acfeac4afb2db85ad23226c7","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"d1a14d87cedcf4f0b8173720d6eb29cc02878bf2b6dabf9c9d9cee742f275368","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1}],"root":[64,65,[67,71]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":10},"referencedMap":[[133,1],[134,1],[135,2],[74,3],[136,4],[137,5],[138,6],[72,7],[139,8],[140,9],[141,10],[142,11],[143,12],[144,13],[145,13],[146,14],[147,15],[148,16],[149,17],[75,7],[73,7],[150,18],[151,19],[152,20],[192,21],[153,22],[154,23],[155,22],[156,24],[157,25],[158,26],[159,27],[160,27],[161,27],[162,28],[163,29],[164,30],[165,31],[166,32],[167,33],[168,33],[169,34],[170,7],[171,7],[172,35],[173,36],[174,35],[175,37],[176,38],[177,39],[178,40],[179,41],[180,42],[181,43],[182,44],[183,45],[184,46],[185,47],[186,48],[187,49],[188,50],[189,51],[76,22],[77,7],[78,52],[79,53],[80,7],[81,54],[82,7],[124,55],[125,56],[126,57],[127,57],[128,58],[129,7],[130,4],[131,59],[132,56],[190,60],[191,61],[66,7],[62,7],[63,7],[12,7],[11,7],[2,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[3,7],[21,7],[22,7],[4,7],[23,7],[27,7],[24,7],[25,7],[26,7],[28,7],[29,7],[30,7],[5,7],[31,7],[32,7],[33,7],[34,7],[6,7],[38,7],[35,7],[36,7],[37,7],[39,7],[7,7],[40,7],[45,7],[46,7],[41,7],[42,7],[43,7],[44,7],[8,7],[50,7],[47,7],[48,7],[49,7],[51,7],[9,7],[52,7],[53,7],[54,7],[56,7],[55,7],[57,7],[58,7],[10,7],[59,7],[1,7],[60,7],[61,7],[100,62],[112,63],[98,64],[113,65],[122,66],[89,67],[90,68],[88,69],[121,70],[116,71],[120,72],[92,73],[109,74],[91,75],[119,76],[86,77],[87,71],[93,78],[94,7],[99,79],[97,78],[84,80],[123,81],[114,82],[103,83],[102,78],[104,84],[107,85],[101,86],[105,87],[117,70],[95,88],[96,89],[108,90],[85,65],[111,91],[110,78],[106,92],[115,7],[83,7],[118,93],[65,94],[67,95],[68,94],[69,96],[71,97],[70,95],[64,7]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.9.3"}