generate-ai-audio 1.0.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.
- package/README.md +64 -0
- package/admin/src/components/GenerateAudioButton.tsx +188 -0
- package/admin/src/components/Initializer/index.tsx +18 -0
- package/admin/src/components/PluginIcon/index.tsx +6 -0
- package/admin/src/index.tsx +56 -0
- package/admin/src/pluginId.ts +5 -0
- package/admin/src/translations/en.json +4 -0
- package/admin/src/translations/es.json +4 -0
- package/dist/server/bootstrap.js +5 -0
- package/dist/server/config/index.js +10 -0
- package/dist/server/content-types/index.js +3 -0
- package/dist/server/controllers/audio-controller.js +30 -0
- package/dist/server/controllers/index.js +9 -0
- package/dist/server/destroy.js +5 -0
- package/dist/server/index.js +27 -0
- package/dist/server/middlewares/index.js +3 -0
- package/dist/server/policies/index.js +3 -0
- package/dist/server/register.js +11 -0
- package/dist/server/routes/index.js +12 -0
- package/dist/server/services/index.js +9 -0
- package/dist/server/services/tts-service.js +215 -0
- package/dist/tsconfig.server.tsbuildinfo +1 -0
- package/package.json +46 -0
- package/strapi-admin.js +3 -0
- package/strapi-server.js +3 -0
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# strapi-generate-ai-audio
|
|
2
|
+
|
|
3
|
+
Strapi plugin to generate audio narrations from content (e.g. blog posts, devotionals) using [ElevenLabs](https://elevenlabs.io) Text-to-Speech.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Generate MP3 narration from richtext content with one click in the admin panel
|
|
8
|
+
- Supports Blog and Devotional content types (configurable)
|
|
9
|
+
- Uses ElevenLabs API for natural-sounding voice
|
|
10
|
+
- Formatted output for devotionals (date, verse, content, prayer, action)
|
|
11
|
+
- Bible verse formatting (e.g. "1:1" → "1, versículo 1")
|
|
12
|
+
- Version abbreviations (NTV, RVR, NVI) spoken in full
|
|
13
|
+
|
|
14
|
+
## Requirements
|
|
15
|
+
|
|
16
|
+
- Strapi 4.x
|
|
17
|
+
- ElevenLabs API key
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install strapi-generate-ai-audio
|
|
23
|
+
# or from git
|
|
24
|
+
npm install git+https://github.com/CodeBridge-Labs/strapi-generate-ai-audio.git
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
### 1. Enable the plugin
|
|
30
|
+
|
|
31
|
+
In `config/plugins.js`:
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
module.exports = ({ env }) => ({
|
|
35
|
+
'generate-ai-audio': {
|
|
36
|
+
enabled: true,
|
|
37
|
+
resolve: './src/plugins/generate-ai-audio', // or omit if installed from npm
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 2. Environment variables
|
|
43
|
+
|
|
44
|
+
Set these in your `.env` (no defaults for API key or voice – required for security):
|
|
45
|
+
|
|
46
|
+
| Variable | Required | Description |
|
|
47
|
+
|----------|----------|-------------|
|
|
48
|
+
| `ELEVENLABS_API_KEY` | Yes | Your ElevenLabs API key |
|
|
49
|
+
| `ELEVENLABS_VOICE_ID` | Yes | ElevenLabs voice ID (from voice library) |
|
|
50
|
+
| `ELEVENLABS_MODEL` | No | Model ID (default: `eleven_multilingual_v2`) |
|
|
51
|
+
| `ELEVENLABS_STABILITY` | No | 0–1 (default: 0.30) |
|
|
52
|
+
| `ELEVENLABS_SIMILARITY` | No | 0–1 (default: 0.85) |
|
|
53
|
+
| `ELEVENLABS_STYLE` | No | 0–1 (default: 0.30) |
|
|
54
|
+
|
|
55
|
+
### 3. Content types
|
|
56
|
+
|
|
57
|
+
Add the custom field and media field to your schemas (e.g. Blog, Devotional):
|
|
58
|
+
|
|
59
|
+
- `narration_audio` (type: media, single, allowedTypes: audios, files)
|
|
60
|
+
- `generate_audio` (customField: `plugin::generate-ai-audio.ai-audio-generator`)
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
MIT
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { Button, Box, Typography, Loader, Status } from "@strapi/design-system";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
|
4
|
+
|
|
5
|
+
interface GenerateAudioButtonProps {
|
|
6
|
+
name: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
onChange: any;
|
|
10
|
+
value: any;
|
|
11
|
+
intlLabel?: string;
|
|
12
|
+
attribute?: any;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default function GenerateAudioButton({
|
|
16
|
+
name,
|
|
17
|
+
error,
|
|
18
|
+
description,
|
|
19
|
+
onChange,
|
|
20
|
+
value,
|
|
21
|
+
intlLabel,
|
|
22
|
+
attribute,
|
|
23
|
+
}: GenerateAudioButtonProps) {
|
|
24
|
+
const [jwtToken, setJwtToken] = useState("");
|
|
25
|
+
const [loading, setLoading] = useState(false);
|
|
26
|
+
const [status, setStatus] = useState<'idle' | 'success' | 'error'>('idle');
|
|
27
|
+
const [message, setMessage] = useState("");
|
|
28
|
+
|
|
29
|
+
const { modifiedData, slug, initialData } = useCMEditViewDataManager();
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const sessionToken = sessionStorage.getItem("jwtToken");
|
|
33
|
+
if (sessionToken) {
|
|
34
|
+
const token = sessionToken.slice(1, sessionToken.length - 1);
|
|
35
|
+
if (token) {
|
|
36
|
+
setJwtToken(token);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, []);
|
|
40
|
+
|
|
41
|
+
const getContentType = (): string => {
|
|
42
|
+
if (slug.includes('blog')) return 'api::blog.blog';
|
|
43
|
+
if (slug.includes('devotional')) return 'api::devotional.devotional';
|
|
44
|
+
return slug;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const hasContent = (): boolean => {
|
|
48
|
+
if (slug.includes('blog')) {
|
|
49
|
+
return !!(modifiedData.content && modifiedData.content.trim());
|
|
50
|
+
}
|
|
51
|
+
if (slug.includes('devotional')) {
|
|
52
|
+
return !!(
|
|
53
|
+
modifiedData.content ||
|
|
54
|
+
modifiedData.bible_verse ||
|
|
55
|
+
modifiedData.prayer ||
|
|
56
|
+
modifiedData.action
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const handleGenerateAudio = async () => {
|
|
63
|
+
if (!initialData.id) {
|
|
64
|
+
setStatus('error');
|
|
65
|
+
setMessage('Please save the content first before generating audio.');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (!hasContent()) {
|
|
70
|
+
setStatus('error');
|
|
71
|
+
setMessage('No content available to generate audio from.');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
setLoading(true);
|
|
76
|
+
setStatus('idle');
|
|
77
|
+
setMessage('');
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
const response = await fetch(`/generate-ai-audio/generate`, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
headers: {
|
|
83
|
+
"Content-Type": "application/json",
|
|
84
|
+
"Authorization": `Bearer ${jwtToken}`
|
|
85
|
+
},
|
|
86
|
+
body: JSON.stringify({
|
|
87
|
+
contentType: getContentType(),
|
|
88
|
+
entityId: initialData.id,
|
|
89
|
+
})
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
if (!response.ok) {
|
|
93
|
+
const errorData = await response.json().catch(() => ({}));
|
|
94
|
+
throw new Error(errorData.error?.message || 'Failed to generate audio');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const result = await response.json();
|
|
98
|
+
|
|
99
|
+
setStatus('success');
|
|
100
|
+
setMessage(`Audio generated successfully! (${result.characterCount} characters, ${result.chunksProcessed} chunk(s)). Reloading...`);
|
|
101
|
+
|
|
102
|
+
onChange({
|
|
103
|
+
target: {
|
|
104
|
+
name,
|
|
105
|
+
value: result.audioFile?.id?.toString() || 'generated',
|
|
106
|
+
type: attribute?.type
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
setTimeout(() => {
|
|
111
|
+
window.location.reload();
|
|
112
|
+
}, 1500);
|
|
113
|
+
|
|
114
|
+
} catch (err: any) {
|
|
115
|
+
console.error('Error generating audio:', err);
|
|
116
|
+
setStatus('error');
|
|
117
|
+
setMessage(err.message || 'An error occurred while generating audio');
|
|
118
|
+
} finally {
|
|
119
|
+
setLoading(false);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const hasExistingAudio = !!(initialData.narration_audio);
|
|
124
|
+
|
|
125
|
+
return (
|
|
126
|
+
<Box padding={4} background="neutral100" borderRadius="4px">
|
|
127
|
+
<Box paddingBottom={2}>
|
|
128
|
+
<Typography variant="pi" fontWeight="bold">
|
|
129
|
+
AI Audio Narration
|
|
130
|
+
</Typography>
|
|
131
|
+
</Box>
|
|
132
|
+
|
|
133
|
+
<Box paddingBottom={3}>
|
|
134
|
+
<Typography variant="pi" textColor="neutral600">
|
|
135
|
+
Generate an audio narration of this content.
|
|
136
|
+
{hasExistingAudio && ' This will replace the existing audio.'}
|
|
137
|
+
</Typography>
|
|
138
|
+
</Box>
|
|
139
|
+
|
|
140
|
+
{!initialData.id && (
|
|
141
|
+
<Box paddingBottom={3}>
|
|
142
|
+
<Status variant="secondary" size="S" showBullet={false}>
|
|
143
|
+
<Typography variant="pi">Save the content first to enable audio generation.</Typography>
|
|
144
|
+
</Status>
|
|
145
|
+
</Box>
|
|
146
|
+
)}
|
|
147
|
+
|
|
148
|
+
{status === 'success' && (
|
|
149
|
+
<Box paddingBottom={3}>
|
|
150
|
+
<Status variant="success" size="S" showBullet={false}>
|
|
151
|
+
<Typography variant="pi">{message}</Typography>
|
|
152
|
+
</Status>
|
|
153
|
+
</Box>
|
|
154
|
+
)}
|
|
155
|
+
|
|
156
|
+
{status === 'error' && (
|
|
157
|
+
<Box paddingBottom={3}>
|
|
158
|
+
<Status variant="danger" size="S" showBullet={false}>
|
|
159
|
+
<Typography variant="pi">{message}</Typography>
|
|
160
|
+
</Status>
|
|
161
|
+
</Box>
|
|
162
|
+
)}
|
|
163
|
+
|
|
164
|
+
<Button
|
|
165
|
+
onClick={handleGenerateAudio}
|
|
166
|
+
loading={loading}
|
|
167
|
+
disabled={loading || !initialData.id}
|
|
168
|
+
variant={hasExistingAudio ? "secondary" : "default"}
|
|
169
|
+
startIcon={loading ? <Loader small /> : null}
|
|
170
|
+
>
|
|
171
|
+
{loading
|
|
172
|
+
? 'Generating audio...'
|
|
173
|
+
: hasExistingAudio
|
|
174
|
+
? 'Regenerate Audio'
|
|
175
|
+
: 'Generate Audio'
|
|
176
|
+
}
|
|
177
|
+
</Button>
|
|
178
|
+
|
|
179
|
+
{loading && (
|
|
180
|
+
<Box paddingTop={2}>
|
|
181
|
+
<Typography variant="pi" textColor="neutral600">
|
|
182
|
+
This may take a moment depending on content length...
|
|
183
|
+
</Typography>
|
|
184
|
+
</Box>
|
|
185
|
+
)}
|
|
186
|
+
</Box>
|
|
187
|
+
);
|
|
188
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import pluginId from '../../pluginId';
|
|
3
|
+
|
|
4
|
+
type InitializerProps = {
|
|
5
|
+
setPlugin: (id: string) => void;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const Initializer = ({ setPlugin }: InitializerProps) => {
|
|
9
|
+
const ref = useRef(setPlugin);
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
ref.current(pluginId);
|
|
13
|
+
}, []);
|
|
14
|
+
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default Initializer;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { prefixPluginTranslations } from '@strapi/helper-plugin';
|
|
2
|
+
|
|
3
|
+
import pluginPkg from '../../package.json';
|
|
4
|
+
import pluginId from './pluginId';
|
|
5
|
+
import Initializer from './components/Initializer';
|
|
6
|
+
import PluginIcon from './components/PluginIcon';
|
|
7
|
+
|
|
8
|
+
const name = pluginPkg.strapi.name;
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
register(app: any) {
|
|
12
|
+
app.customFields.register({
|
|
13
|
+
name: "ai-audio-generator",
|
|
14
|
+
pluginId: pluginId,
|
|
15
|
+
type: "string",
|
|
16
|
+
intlLabel: {
|
|
17
|
+
id: "generate-ai-audio.ai-audio-generator.label",
|
|
18
|
+
defaultMessage: "AI Audio Generator"
|
|
19
|
+
},
|
|
20
|
+
intlDescription: {
|
|
21
|
+
id: "generate-ai-audio.ai-audio-generator.description",
|
|
22
|
+
defaultMessage: "Generate audio narration from content using OpenAI TTS"
|
|
23
|
+
},
|
|
24
|
+
icon: PluginIcon,
|
|
25
|
+
components: {
|
|
26
|
+
Input: async () => import("./components/GenerateAudioButton")
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
bootstrap(app: any) {},
|
|
32
|
+
|
|
33
|
+
async registerTrads(app: any) {
|
|
34
|
+
const { locales } = app;
|
|
35
|
+
|
|
36
|
+
const importedTrads = await Promise.all(
|
|
37
|
+
(locales as any[]).map((locale) => {
|
|
38
|
+
return import(`./translations/${locale}.json`)
|
|
39
|
+
.then(({ default: data }) => {
|
|
40
|
+
return {
|
|
41
|
+
data: prefixPluginTranslations(data, pluginId),
|
|
42
|
+
locale,
|
|
43
|
+
};
|
|
44
|
+
})
|
|
45
|
+
.catch(() => {
|
|
46
|
+
return {
|
|
47
|
+
data: {},
|
|
48
|
+
locale,
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
})
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
return Promise.resolve(importedTrads);
|
|
55
|
+
},
|
|
56
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const controller = ({ strapi }) => ({
|
|
4
|
+
async generate(ctx) {
|
|
5
|
+
try {
|
|
6
|
+
const { contentType, entityId, locale } = ctx.request.body;
|
|
7
|
+
if (!contentType || !entityId) {
|
|
8
|
+
ctx.throw(400, 'Missing required fields: contentType and entityId');
|
|
9
|
+
}
|
|
10
|
+
const allowedContentTypes = ['api::blog.blog', 'api::devotional.devotional'];
|
|
11
|
+
if (!allowedContentTypes.includes(contentType)) {
|
|
12
|
+
ctx.throw(400, `Content type not supported: ${contentType}`);
|
|
13
|
+
}
|
|
14
|
+
const result = await strapi
|
|
15
|
+
.plugin('generate-ai-audio')
|
|
16
|
+
.service('ttsService')
|
|
17
|
+
.generateAudioFromContent({
|
|
18
|
+
contentType,
|
|
19
|
+
entityId: parseInt(entityId, 10),
|
|
20
|
+
locale,
|
|
21
|
+
});
|
|
22
|
+
ctx.body = result;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error('Error in audio generation controller:', error);
|
|
26
|
+
ctx.throw(500, error.message || 'Failed to generate audio');
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
exports.default = controller;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const audio_controller_1 = __importDefault(require("./audio-controller"));
|
|
7
|
+
exports.default = {
|
|
8
|
+
audioController: audio_controller_1.default,
|
|
9
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const register_1 = __importDefault(require("./register"));
|
|
7
|
+
const bootstrap_1 = __importDefault(require("./bootstrap"));
|
|
8
|
+
const destroy_1 = __importDefault(require("./destroy"));
|
|
9
|
+
const config_1 = __importDefault(require("./config"));
|
|
10
|
+
const content_types_1 = __importDefault(require("./content-types"));
|
|
11
|
+
const controllers_1 = __importDefault(require("./controllers"));
|
|
12
|
+
const routes_1 = __importDefault(require("./routes"));
|
|
13
|
+
const middlewares_1 = __importDefault(require("./middlewares"));
|
|
14
|
+
const policies_1 = __importDefault(require("./policies"));
|
|
15
|
+
const services_1 = __importDefault(require("./services"));
|
|
16
|
+
exports.default = {
|
|
17
|
+
register: register_1.default,
|
|
18
|
+
bootstrap: bootstrap_1.default,
|
|
19
|
+
destroy: destroy_1.default,
|
|
20
|
+
config: config_1.default,
|
|
21
|
+
controllers: controllers_1.default,
|
|
22
|
+
routes: routes_1.default,
|
|
23
|
+
services: services_1.default,
|
|
24
|
+
contentTypes: content_types_1.default,
|
|
25
|
+
policies: policies_1.default,
|
|
26
|
+
middlewares: middlewares_1.default,
|
|
27
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = ({ strapi }) => {
|
|
4
|
+
strapi.customFields.register({
|
|
5
|
+
name: 'ai-audio-generator',
|
|
6
|
+
pluginId: 'generate-ai-audio',
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
plugin: 'generate-ai-audio',
|
|
9
|
+
type: 'string'
|
|
10
|
+
});
|
|
11
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tts_service_1 = __importDefault(require("./tts-service"));
|
|
7
|
+
exports.default = {
|
|
8
|
+
ttsService: tts_service_1.default,
|
|
9
|
+
};
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const html_to_text_1 = require("html-to-text");
|
|
27
|
+
const fs = __importStar(require("fs"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
const os = __importStar(require("os"));
|
|
30
|
+
const getElevenLabsConfig = () => {
|
|
31
|
+
const voiceId = process.env.ELEVENLABS_VOICE_ID;
|
|
32
|
+
if (!voiceId) {
|
|
33
|
+
throw new Error('ELEVENLABS_VOICE_ID environment variable is required');
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
voiceId,
|
|
37
|
+
model: process.env.ELEVENLABS_MODEL || 'eleven_multilingual_v2',
|
|
38
|
+
stability: parseFloat(process.env.ELEVENLABS_STABILITY || '0.30'),
|
|
39
|
+
similarity: parseFloat(process.env.ELEVENLABS_SIMILARITY || '0.85'),
|
|
40
|
+
style: parseFloat(process.env.ELEVENLABS_STYLE || '0.30'),
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
const htmlToPlainText = (html) => {
|
|
44
|
+
return (0, html_to_text_1.convert)(html, {
|
|
45
|
+
wordwrap: false,
|
|
46
|
+
selectors: [
|
|
47
|
+
{ selector: 'a', options: { ignoreHref: true } },
|
|
48
|
+
{ selector: 'img', format: 'skip' },
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const formatBibleVerse = (text) => {
|
|
53
|
+
return text
|
|
54
|
+
.replace(/(\d+):(\d+)/g, '$1, versículo $2')
|
|
55
|
+
.replace(/\bNTV\b/g, 'Nueva Traducción Viviente')
|
|
56
|
+
.replace(/\bRVR\b/g, 'Reina Valera Revisada')
|
|
57
|
+
.replace(/\bNVI\b/g, 'Nueva Versión Internacional');
|
|
58
|
+
};
|
|
59
|
+
const buildTextForBlog = (title, content) => {
|
|
60
|
+
const cleanTitle = htmlToPlainText(title || '');
|
|
61
|
+
const cleanContent = htmlToPlainText(content || '');
|
|
62
|
+
let text = '';
|
|
63
|
+
if (cleanTitle) {
|
|
64
|
+
text += cleanTitle + '.\n\n';
|
|
65
|
+
}
|
|
66
|
+
if (cleanContent) {
|
|
67
|
+
text += cleanContent;
|
|
68
|
+
}
|
|
69
|
+
return formatBibleVerse(text);
|
|
70
|
+
};
|
|
71
|
+
const buildTextForDevotional = (title, bibleVerse, content, prayer, action, publishedAt) => {
|
|
72
|
+
const cleanTitle = htmlToPlainText(title || '');
|
|
73
|
+
const cleanVerse = htmlToPlainText(bibleVerse || '');
|
|
74
|
+
const cleanContent = htmlToPlainText(content || '');
|
|
75
|
+
const cleanPrayer = htmlToPlainText(prayer || '');
|
|
76
|
+
const cleanAction = htmlToPlainText(action || '');
|
|
77
|
+
const dateToUse = publishedAt ? new Date(publishedAt) : new Date();
|
|
78
|
+
const dateStr = dateToUse.toLocaleDateString('es-ES', {
|
|
79
|
+
weekday: 'long',
|
|
80
|
+
day: 'numeric',
|
|
81
|
+
month: 'long'
|
|
82
|
+
});
|
|
83
|
+
const capitalizedDate = dateStr.charAt(0).toUpperCase() + dateStr.slice(1);
|
|
84
|
+
let text = `${capitalizedDate}: ${cleanTitle}.\n\n`;
|
|
85
|
+
if (cleanVerse) {
|
|
86
|
+
text += formatBibleVerse(cleanVerse) + '\n\n';
|
|
87
|
+
}
|
|
88
|
+
if (cleanContent) {
|
|
89
|
+
text += formatBibleVerse(cleanContent) + '\n\n';
|
|
90
|
+
}
|
|
91
|
+
if (cleanPrayer) {
|
|
92
|
+
text += 'Oremos:\n\n' + cleanPrayer + '\n\n';
|
|
93
|
+
}
|
|
94
|
+
if (cleanAction) {
|
|
95
|
+
text += 'Acción del día:\n\n' + cleanAction;
|
|
96
|
+
}
|
|
97
|
+
return text;
|
|
98
|
+
};
|
|
99
|
+
const generateAudioWithElevenLabs = async (text) => {
|
|
100
|
+
const apiKey = process.env.ELEVENLABS_API_KEY;
|
|
101
|
+
if (!apiKey) {
|
|
102
|
+
throw new Error('ELEVENLABS_API_KEY environment variable not set');
|
|
103
|
+
}
|
|
104
|
+
const config = getElevenLabsConfig();
|
|
105
|
+
const response = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${config.voiceId}`, {
|
|
106
|
+
method: 'POST',
|
|
107
|
+
headers: {
|
|
108
|
+
'Accept': 'audio/mpeg',
|
|
109
|
+
'Content-Type': 'application/json',
|
|
110
|
+
'xi-api-key': apiKey,
|
|
111
|
+
},
|
|
112
|
+
body: JSON.stringify({
|
|
113
|
+
text: text,
|
|
114
|
+
model_id: config.model,
|
|
115
|
+
voice_settings: {
|
|
116
|
+
stability: config.stability,
|
|
117
|
+
similarity_boost: config.similarity,
|
|
118
|
+
style: config.style,
|
|
119
|
+
use_speaker_boost: true,
|
|
120
|
+
},
|
|
121
|
+
}),
|
|
122
|
+
});
|
|
123
|
+
if (!response.ok) {
|
|
124
|
+
const errorText = await response.text();
|
|
125
|
+
throw new Error(`ElevenLabs API error: ${response.status} - ${errorText}`);
|
|
126
|
+
}
|
|
127
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
128
|
+
return Buffer.from(arrayBuffer);
|
|
129
|
+
};
|
|
130
|
+
const service = ({ strapi }) => ({
|
|
131
|
+
async generateAudioFromContent({ contentType, entityId, locale }) {
|
|
132
|
+
var _a, _b;
|
|
133
|
+
try {
|
|
134
|
+
const uid = contentType;
|
|
135
|
+
const entity = await strapi.db.query(uid).findOne({
|
|
136
|
+
where: { id: entityId },
|
|
137
|
+
populate: ['narration_audio'],
|
|
138
|
+
});
|
|
139
|
+
if (!entity) {
|
|
140
|
+
throw new Error(`Entity not found: ${contentType} with id ${entityId}`);
|
|
141
|
+
}
|
|
142
|
+
let text = '';
|
|
143
|
+
let characterCount = 0;
|
|
144
|
+
if (contentType === 'api::blog.blog') {
|
|
145
|
+
text = buildTextForBlog(entity.title || '', entity.content || '');
|
|
146
|
+
characterCount = text.length;
|
|
147
|
+
}
|
|
148
|
+
else if (contentType === 'api::devotional.devotional') {
|
|
149
|
+
const publishedAt = (_b = (_a = entity.publishedAt) !== null && _a !== void 0 ? _a : entity.published_at) !== null && _b !== void 0 ? _b : null;
|
|
150
|
+
text = buildTextForDevotional(entity.title || '', entity.bible_verse || '', entity.content || '', entity.prayer || '', entity.action || '', publishedAt);
|
|
151
|
+
characterCount = text.length;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
throw new Error(`Unsupported content type: ${contentType}`);
|
|
155
|
+
}
|
|
156
|
+
if (characterCount === 0) {
|
|
157
|
+
throw new Error('No content available to generate audio');
|
|
158
|
+
}
|
|
159
|
+
console.log(`Generating audio for ${characterCount} characters using ElevenLabs`);
|
|
160
|
+
console.log(`Text preview: ${text.substring(0, 300)}...`);
|
|
161
|
+
const audioBuffer = await generateAudioWithElevenLabs(text);
|
|
162
|
+
console.log(`Audio generated: ${audioBuffer.length} bytes`);
|
|
163
|
+
const title = entity.title || `content-${entityId}`;
|
|
164
|
+
const safeTitle = title
|
|
165
|
+
.toLowerCase()
|
|
166
|
+
.replace(/[^a-z0-9]/g, '-')
|
|
167
|
+
.replace(/-+/g, '-')
|
|
168
|
+
.substring(0, 50);
|
|
169
|
+
const fileName = `narration-${safeTitle}-${Date.now()}.mp3`;
|
|
170
|
+
const tempDir = os.tmpdir();
|
|
171
|
+
const tempFilePath = path.join(tempDir, fileName);
|
|
172
|
+
fs.writeFileSync(tempFilePath, audioBuffer);
|
|
173
|
+
console.log(`Temp file written to: ${tempFilePath}`);
|
|
174
|
+
const uploadService = strapi.plugin('upload').service('upload');
|
|
175
|
+
const stats = fs.statSync(tempFilePath);
|
|
176
|
+
const fileStream = fs.createReadStream(tempFilePath);
|
|
177
|
+
const fileData = {
|
|
178
|
+
path: tempFilePath,
|
|
179
|
+
name: fileName,
|
|
180
|
+
type: 'audio/mpeg',
|
|
181
|
+
size: stats.size,
|
|
182
|
+
stream: fileStream,
|
|
183
|
+
};
|
|
184
|
+
let uploadedFile;
|
|
185
|
+
try {
|
|
186
|
+
[uploadedFile] = await uploadService.upload({
|
|
187
|
+
data: {},
|
|
188
|
+
files: fileData,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
fs.unlinkSync(tempFilePath);
|
|
193
|
+
console.log(`Temp file deleted: ${tempFilePath}`);
|
|
194
|
+
}
|
|
195
|
+
console.log(`Audio uploaded: ${uploadedFile.id}`);
|
|
196
|
+
await strapi.entityService.update(uid, entityId, {
|
|
197
|
+
data: {
|
|
198
|
+
narration_audio: uploadedFile.id,
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
console.log(`Entity updated with audio file`);
|
|
202
|
+
return {
|
|
203
|
+
success: true,
|
|
204
|
+
audioFile: uploadedFile,
|
|
205
|
+
characterCount,
|
|
206
|
+
chunksProcessed: 1,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
console.error('Error generating audio:', error);
|
|
211
|
+
throw error;
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
exports.default = service;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"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.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.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.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/base.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/biginteger.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/boolean.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/component.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/decimal.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/dynamic-zone.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/enumeration.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/float.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/integer.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/json.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/media.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/password.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/relation.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/richtext.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/string.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/text.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/uid.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/email.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/date.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/date-time.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/timestamp.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/time.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/common.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/utils.d.ts","../node_modules/@strapi/strapi/lib/types/core/attributes/index.d.ts","../node_modules/@strapi/strapi/lib/types/core/schemas/index.d.ts","../node_modules/@strapi/strapi/lib/types/core/plugins/index.d.ts","../node_modules/@types/node/ts5.6/compatibility/float16array.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/ts5.6/globals.typedarray.d.ts","../node_modules/@types/node/ts5.6/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/blob.d.ts","../node_modules/@types/node/web-globals/console.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/encoding.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.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-stats.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/round-robin-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.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/snapshot-agent.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/cache-interceptor.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/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/importmeta.d.ts","../node_modules/@types/node/web-globals/messaging.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/performance.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/web-globals/timers.d.ts","../node_modules/@types/node/web-globals/url.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/inspector/promises.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/path/posix.d.ts","../node_modules/@types/node/path/win32.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/quic.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/consumers.d.ts","../node_modules/@types/node/stream/promises.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/test/reporters.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/util/types.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/ts5.6/index.d.ts","../node_modules/tarn/dist/promiseinspection.d.ts","../node_modules/tarn/dist/utils.d.ts","../node_modules/tarn/dist/pendingoperation.d.ts","../node_modules/tarn/dist/resource.d.ts","../node_modules/tarn/dist/pool.d.ts","../node_modules/tarn/dist/timeouterror.d.ts","../node_modules/tarn/dist/tarn.d.ts","../node_modules/knex/types/result.d.ts","../node_modules/knex/types/tables.d.ts","../node_modules/knex/types/index.d.ts","../node_modules/@strapi/database/lib/schema/index.d.ts","../node_modules/@strapi/database/lib/lifecycles/subscribers/index.d.ts","../node_modules/@strapi/database/lib/lifecycles/index.d.ts","../node_modules/@strapi/database/lib/migrations/index.d.ts","../node_modules/@strapi/database/lib/index.d.ts","../node_modules/@strapi/strapi/lib/types/core/strapi/index.d.ts","../node_modules/@strapi/strapi/lib/types/core/common/controller.d.ts","../node_modules/@strapi/strapi/lib/types/core/common/service.d.ts","../node_modules/@strapi/strapi/lib/types/core/common/schema.d.ts","../node_modules/@strapi/strapi/lib/types/core/common/uid.d.ts","../node_modules/@strapi/strapi/lib/types/core/common/index.d.ts","../node_modules/@strapi/strapi/lib/types/utils/array.d.ts","../node_modules/@strapi/strapi/lib/types/utils/guard.d.ts","../node_modules/@strapi/strapi/lib/types/utils/object.d.ts","../node_modules/@strapi/strapi/lib/types/utils/string.d.ts","../node_modules/@strapi/strapi/lib/types/utils/tuple.d.ts","../node_modules/@strapi/strapi/lib/types/utils/expression.d.ts","../node_modules/@strapi/strapi/lib/types/utils/index.d.ts","../node_modules/@strapi/strapi/lib/types/core/namespace.d.ts","../node_modules/@strapi/strapi/lib/types/core/uid.d.ts","../node_modules/@strapi/strapi/lib/types/core/registry.d.ts","../node_modules/@strapi/strapi/lib/types/core/index.d.ts","../node_modules/@strapi/strapi/lib/global.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/result.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/sort.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/pagination.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/fields.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/filters/operators.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/attributes.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/filters/index.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/populate.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/publication-state.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/data.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/search.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/params/index.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/plugin.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/types/index.d.ts","../node_modules/@strapi/strapi/lib/services/entity-service/index.d.ts","../node_modules/@strapi/strapi/lib/types/core-api/controller.d.ts","../node_modules/@strapi/strapi/lib/types/core-api/service.d.ts","../node_modules/@strapi/strapi/lib/types/core-api/router.d.ts","../node_modules/@strapi/strapi/lib/types/core-api/index.d.ts","../node_modules/@strapi/strapi/lib/types/shared/registries.d.ts","../node_modules/@strapi/strapi/lib/types/shared/entity-service.d.ts","../node_modules/@strapi/strapi/lib/types/shared/plugins.d.ts","../node_modules/@strapi/strapi/lib/types/shared/index.d.ts","../node_modules/@strapi/strapi/lib/types/index.d.ts","../node_modules/@strapi/strapi/lib/factories.d.ts","../node_modules/@strapi/strapi/lib/index.d.ts","../server/bootstrap.ts","../server/destroy.ts","../server/register.ts","../server/config/index.ts","../server/content-types/index.ts","../server/controllers/audio-controller.ts","../server/controllers/index.ts","../server/routes/index.ts","../server/middlewares/index.ts","../server/policies/index.ts","../server/services/tts-service.ts","../server/services/index.ts","../server/index.ts","../node_modules/@types/argparse/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/bonjour/index.d.ts","../node_modules/keyv/src/index.d.ts","../node_modules/@types/http-cache-semantics/index.d.ts","../node_modules/@types/responselike/index.d.ts","../node_modules/@types/cacheable-request/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/connect-history-api-fallback/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/fined/index.d.ts","../node_modules/@types/formidable/formidable.d.ts","../node_modules/@types/formidable/parsers/index.d.ts","../node_modules/@types/formidable/persistentfile.d.ts","../node_modules/@types/formidable/volatilefile.d.ts","../node_modules/@types/formidable/formidableerror.d.ts","../node_modules/@types/formidable/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/glob/index.d.ts","../node_modules/@types/react/global.d.ts","../node_modules/csstype/index.d.ts","../node_modules/@types/prop-types/index.d.ts","../node_modules/@types/react/index.d.ts","../node_modules/@types/hoist-non-react-statics/index.d.ts","../node_modules/@types/html-minifier-terser/index.d.ts","../node_modules/@types/http-proxy/index.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/subscription.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/types.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/subscriber.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/operator.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/iif.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/throwerror.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/subject.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/connectableobservable.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/operators/groupby.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/symbol/observable.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/behaviorsubject.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/replaysubject.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/asyncsubject.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/action.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/asyncscheduler.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/asyncaction.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/asapscheduler.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/asap.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/async.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/queuescheduler.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/queue.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/animationframescheduler.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/animationframe.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/notification.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/pipe.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/noop.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/identity.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/isobservable.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/argumentoutofrangeerror.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/emptyerror.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/objectunsubscribederror.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/unsubscriptionerror.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/util/timeouterror.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/bindcallback.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/bindnodecallback.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/innersubscriber.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/outersubscriber.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/combinelatest.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/concat.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/defer.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/empty.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/forkjoin.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/from.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/fromevent.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/fromeventpattern.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/generate.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/interval.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/merge.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/never.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/of.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/onerrorresumenext.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/pairs.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/partition.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/race.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/range.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/timer.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/using.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/observable/zip.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/scheduled/scheduled.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/internal/config.d.ts","../node_modules/@types/inquirer/node_modules/rxjs/index.d.ts","../node_modules/@types/through/index.d.ts","../node_modules/@types/inquirer/lib/objects/choice.d.ts","../node_modules/@types/inquirer/lib/objects/separator.d.ts","../node_modules/@types/inquirer/lib/objects/choices.d.ts","../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","../node_modules/@types/inquirer/lib/prompts/base.d.ts","../node_modules/@types/inquirer/lib/utils/paginator.d.ts","../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","../node_modules/@types/inquirer/lib/prompts/confirm.d.ts","../node_modules/@types/inquirer/lib/prompts/editor.d.ts","../node_modules/@types/inquirer/lib/prompts/expand.d.ts","../node_modules/@types/inquirer/lib/prompts/input.d.ts","../node_modules/@types/inquirer/lib/prompts/list.d.ts","../node_modules/@types/inquirer/lib/prompts/number.d.ts","../node_modules/@types/inquirer/lib/prompts/password.d.ts","../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","../node_modules/@types/inquirer/lib/ui/baseui.d.ts","../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","../node_modules/@types/inquirer/lib/ui/prompt.d.ts","../node_modules/@types/inquirer/lib/utils/events.d.ts","../node_modules/@types/inquirer/lib/utils/readline.d.ts","../node_modules/@types/inquirer/lib/utils/utils.d.ts","../node_modules/@types/inquirer/index.d.ts","../node_modules/@types/interpret/index.d.ts","../node_modules/@types/keyv/index.d.ts","../node_modules/@types/liftoff/index.d.ts","../node_modules/@types/lodash/common/common.d.ts","../node_modules/@types/lodash/common/array.d.ts","../node_modules/@types/lodash/common/collection.d.ts","../node_modules/@types/lodash/common/date.d.ts","../node_modules/@types/lodash/common/function.d.ts","../node_modules/@types/lodash/common/lang.d.ts","../node_modules/@types/lodash/common/math.d.ts","../node_modules/@types/lodash/common/number.d.ts","../node_modules/@types/lodash/common/object.d.ts","../node_modules/@types/lodash/common/seq.d.ts","../node_modules/@types/lodash/common/string.d.ts","../node_modules/@types/lodash/common/util.d.ts","../node_modules/@types/lodash/index.d.ts","../node_modules/@types/node-forge/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/react-transition-group/config.d.ts","../node_modules/@types/react-transition-group/transition.d.ts","../node_modules/@types/react-transition-group/csstransition.d.ts","../node_modules/@types/react-transition-group/switchtransition.d.ts","../node_modules/@types/react-transition-group/transitiongroup.d.ts","../node_modules/@types/react-transition-group/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/serve-index/index.d.ts","../node_modules/@types/sockjs/index.d.ts","../node_modules/@types/triple-beam/index.d.ts","../node_modules/@types/use-sync-external-store/index.d.ts","../node_modules/@types/ws/index.d.ts","../../../../node_modules/@types/cors/index.d.ts","../../../../node_modules/@types/follow-redirects/index.d.ts","../../../../node_modules/@types/is-hotkey/index.d.ts","../../../../node_modules/@types/ms/index.d.ts","../../../../node_modules/@types/jsonwebtoken/index.d.ts","../../../../node_modules/form-data/index.d.ts","../../../../node_modules/@types/node-fetch/externals.d.ts","../../../../node_modules/@types/node-fetch/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/phoenix/index.d.ts","../../../../node_modules/@types/progress-stream/index.d.ts","../../../../node_modules/@types/uuid/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"e1913f656c156a9e4245aa111fbb436d357d9e1fe0379b9a802da7fe3f03d736","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"b529ae55a9048c83e2b398d419332589f6af25b3a12f1296b900cc07dd9bd45d","b89bcbc0471e623388a870b9c7040310bf07dd93b53f7d4d0e91ef38a6c37a63","9c92161559f19c68c51e96bb975769e225f6a5c7113feef701c875d909ab4126","d2403a89355f00dab906924f8ae6a859fee2f49cba380208d9c617effc20820f","e23aab6f06763135562c889d88b823fdd3702b06cbeff479b6d6b3d09ca51a28","f6e2c511e459db6d53aedb62225c0b00481a42dafb0ed3cd8017f7af34b5748e","80b0af59d29ec7279c43feea3aa39ce0396e7f2c2320942cafd9c0713d5e52b3","5c0bd5af2177ec9cebb18b88a681b7aece1528adf754c8a6402ee8484cbdd346","e8d2e3b90e9160c1bb98155d0adf9ba689d48d2abd240457373f172ab4c30551","75805b05599403110c04b23838585f69528a5ea39904c950dd9c34482d2216c0","74206bc868f1c3f6e67bdb6de6579e34f9cad2d2a89489a7b5d0fffb986ca41a","4854953b66976cbdbdd1eedd048ec17e5eb5a2dfc30cb8fc5eec6123c248a87b","bcf8a78326ddc7cc7b26ae545b4a041e1f1df1fd10393d011c76351df3ce7404","5f49758abf14875ed9d82fb4796e801b8fe66ebd079fa5523ed0f99e117b42c0","f6e5217d81f6eab8f2ad727ce3037f6b13db380d7690108d369839da035a8013","58d5217b78b2b9320d0829cdad8616f7a1d8e7484831d570c98f12f0004c414b","67d8e986c155cc3fb37696bd04eab4ad870e18b3b506e1fc2d89fc01b403a63c","62d77a56ba14f92ef0d4438e46c5fbbe9fd409760b430e6682db9923f086230d","56d86213e9e82f5dd637aeab2cf65bc9cac8749f14bb7c2d99b3fabefa490b92","6fb863487cb152993dd7709593188ba6dd5687f63b70f7f6a198c74fa71ca10e","4de905aaac5470164307cc7a255dab7097d0372832c82ec681f7b4a61c4195d1","34dbfe6f60a7c65c724671ae1cd5e2e0fe59316710470fd75dcf98fd8addca17","2480274eb127e69a3c5fb2d827b3adecdfc734e336e061615c2e8d9830dff9a2","1127e96a6e3094073ebdc033032c8d9bf628aa08a0d1f903d23b391471f6a719","950e3cda9c2f8d382d0f0d4f7cbe1d46dcda44290e7134d409d226ad14b2186e","b99211100c058d57bbf9bb662fd6aed0a9532c9cfba551fe354e71fc58a8b6f3","683af5da6a4857be6ae4e7f561e94a5edc3ca2f3b49ab41c84e902bf152cb0df",{"version":"394fda71d5d6bd00a372437dff510feab37b92f345861e592f956d6995e9c1ce","affectsGlobalScope":true},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true},{"version":"6f2442c0ca5e7fcb9d51ebbd7d43079844bcbfd947bb679b9419900745f871d5","affectsGlobalScope":true},{"version":"903f7d218c85fc92fae02ba14efc9a8df9da4467b9ded26da203193ead10f4b4","affectsGlobalScope":true},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true},"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f",{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true},"3fad5618174d74a34ee006406d4eb37e8d07dd62eb1315dbf52f48d31a337547","7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc",{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true},"8b50a819485ffe0d237bf0d131e92178d14d11e2aa873d73615a9ec578b341f5","9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e",{"version":"12d602a8fe4c2f2ba4f7804f5eda8ba07e0c83bf5cf0cda8baffa2e9967bfb77","affectsGlobalScope":true},"a856ab781967b62b288dfd85b860bef0e62f005ed4b1b8fa25c53ce17856acaf","cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","8db46b61a690f15b245cf16270db044dc047dce9f93b103a59f50262f677ea1f","01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","959d0327c96dd9bb5521f3ed6af0c435996504cc8dd46baa8e12cb3b3518cef1","e1c1a0b4d1ead0de9eca52203aeb1f771f21e6238d6fcd15aa56ac2a02f1b7bf","101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22",{"version":"266bee0a41e9c3ba335583e21e9277ae03822402cf5e8e1d99f5196853613b98","affectsGlobalScope":true},"386606f8a297988535cb1401959041cfa7f59d54b8a9ed09738e65c98684c976","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95",{"version":"ce8653341224f8b45ff46d2a06f2cacb96f841f768a886c9d8dd8ec0878b11bd","affectsGlobalScope":true},"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","90a278f5fab7557e69e97056c0841adf269c42697194f0bd5c5e69152637d4b3","69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","f263485c9ca90df9fe7bb3a906db9701997dc6cae86ace1f8106ac8d2f7f677b",{"version":"1edcf2f36fc332615846bde6dcc71a8fe526065505bc5e3dcfd65a14becdf698","affectsGlobalScope":true},"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","1dbca38aa4b0db1f4f9e6edacc2780af7e028b733d2a98dd3598cd235ca0c97d","a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69",{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true},"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","19143c930aef7ccf248549f3e78992f2f1049118ec5d4622e95025057d8e392b","4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","cca8917838a876e2d7016c9b6af57cbf11fdf903c5fdd8e613fa31840b2957bf","d91ae55e4282c22b9c21bc26bd3ef637d3fe132507b10529ae68bf76f5de785b","b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","7e8a671604329e178bb479c8f387715ebd40a091fc4a7552a0a75c2f3a21c65c","41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","4c5e90ddbcd177ad3f2ffc909ae217c87820f1e968f6959e4b6ba38a8cec935e","b70dd9a44e1ac42f030bb12e7d79117eac7cb74170d72d381a1e7913320af23a","c28690b16de19870684ec3b78b87d9198e3c2bf5171b66ab3f353dfa935483ec","7c54c4b7f7752b0315f14b9ae63f00d7a3f39308e598c670d8a96afdcb8e0a4e","9f559e612c27cce4bc181decc88ba90b00e5be42b6ed7fe9316d6c61476d7439","03dfcf3d00c60a769e705eb5b080c3674cd59ae830ee7ad82aed8f1883f60f06","ca8cec5a09c4323e1fcd9e0f0f84727c9b0818802fabae4ecf7f42a380483037","92d06124389a259ec6f17fa490dd2da4a8aff8fd9055047036e63211793a556b","aa8c0e10f176c156cfea40f5acdbc08cb44a43ba5411c743be645743ed3b1c02","b1bf7de0413303c8bd9424cf4955b433606e90eb31339202c8bffdb1dec982e9","4d3dbd2452166fcdd12b710b48e94c98d9fd9a7139224d463ca453d2c6469d08","7d287e218096794119bb5efaf874cc4f14a9433b335d65ee04497bff2dc19a01","cded33ec25ece8f3746baf528caf277a45ca031eee8661b92b852218b6eb4a96","4fcfc6ec9d3381eb98e406468d79b21f7ccd5b32cbfd29d764100a579778c15d","c658af0639b8d9d0c55a3305ea7b4040c7406fd7afec18602d8da84d60bcd790","564ab54b128b0cfb2155b70685ccb47970a6151b9b69d8784cfd303144a737d0","b77cb7e2944de8093bcbc7ba648385062376a3c4cd0d31d79310424d43c83796","73a831013f4e0e34484b01142056f95e6a43dbca474968904e5759495cf1932d","3b254b1ad613433e15fc475f99d2823747e168eecefc5e480bb7d2f02570833f","225e21c5f5eff58902ce26eae2073d42e80b776ab3bdb39611a5158565fc0d9d","a2adbf35320020fb2888bdde468cc231086365b5ba0735e983e5c840c0edb738","3a5cb0226f376ef1e87d5271aa3f0a1cf39cdae348082d50d232456bfd82c128","7241b2010c6b1e7d861833b322cb91444250b73c31a37a41c3a043116d2362c2","4dbecd62a8bbd39bfd296fb6bf64c1a521e5925d396e55d9ae8584c686d5e028","261751ccd9847d735c950dbf9e52759b98e7ce72095b4253961df2891834c48a","10edf8a04c618ee603b87a1598b0bdfac4d9173fbd5fd92027c712dd0c26909b","412ef5f141ff1ff0d855e301293c01a3e8ca4386c8f2703bcfb58718df094f83","00f1971b3c5843c24a9f6276858cffe1116ea52daa9ec4cd233acc922a29dd22","ab9fde1e2fab346098410ba9827f8ffa4eb97abb07b28c4c138848e15da4274c","210e8d945e7926d6b6f20214bab95745c1260a8347ecd4c6963cf40cc4f4d904","8cacf3ccedffd98e749d1a22ddce433d44cbfc8fe2e5fbe813efb5c4fc2e9bf9","dbbbc67450ac290ef618dae211d0f62026f5b8b2ddbd0e8f8c70c6939990163d","d4755133d028a65f7c20bebc614bdeb18d8a4033fbb805251532af7e3cad3570","dda1ea393990738df0981c9791cb235cce9e5fd4ed3d93ad6cc904383dac2c12","11592b028dbde8d59affb4f90c0918337a9042ef1e367a27b9854668d06ef4b2",{"version":"328d3d43c5c12bb5412da3e6b392b1fc877720dd1664feff96289801db31e081","affectsGlobalScope":true},"addc695ba51eebb4a8bffccc170523b557953862856587020765f84006beaeb2","090e90364d5199295abf1ae9b1fd2d3df9f5d2bf12760fe517b7e5d5b5d7bd35","894ffa998353f12b1a78a2bd22e31e482ddd1ec3a33ac270855e9b46bc5db3f1","b5133bc92a61ff63d7fd65fd5f9d0393a00f90d77cc436d8b8541627db4e47bb","ac97dcc8d84921cea8a75c3424856bce1de0ab9b354914d711db61d2536620fd","b64c511d20abe43373fc5cb70e89826547c2e1d0ed28473a5f77dbaaaae80599","c77f6f10f1be5e589a4a89aabf89978c39510d0133b17903632107b5f558248f","d44b6d17e1bb9ba6af4e379a787ee85b3580083b9f810352f4aa77b125c9fa06","6225f7353b855f36837b90dbe229c7bf2cdd3268265205630585915d77146f6d","2c4a77bf8bde081dd7c1a15a243eee503acfed8ac27bf26c62c9ee90254ba119","62519b55ca3ad825b412aa440f49d06323488068ba05e8e22827bc3a6fb172fb","e53a3504190dcbe2c35de94e3a5e3bd72eb9b8e960c54249aaa1456307674065","59861417311f9f7d000767d0584170525b99e6ab26f3e3a3e72262e43bfc5070","d928c9e0a33471dd9e75d1fb1631579911419197a8b13ae3e033342ddc3d1434","d5c19655468e29f60c871b21e73af8ebc653f736e7123ade916f22c4a5f80ce5","1a1284b1e1bc61eb71d7822fd82f3ed2611b58e5b79cea88e74adf448c15afa9","84fa9940656d7596d6caf9f5b485d0290542f5b784c62dd8eb79691cbf849d66","ab38f58c333912120c1f9961c0c2b8d6347386c73d1e459c9ff3d3f0f8904cd4","b811f741325447b7dd02ad638794131090d37287f07aaad1a61b6efb54a47aa3","b7f7f80b0ca16f2e64c162d566d8e1e381dc86a765a234cd0ec1f432020c067a","1b5142fd6e426dd380461c3f7b7e147fa499ac46b28c72ea8c8d1f651b445593","0a8b2fa19dcbbd88dd32421823deb22d01a31dbb951d045f0665d2993c4b2721","c91910fa1f86a2c73028bab243f4e85653cec3ddb8aae8370313937703f743b7","1702c2129030f55b956f0b4af4005d1db91e3ad4022fe0b9ae1cb80290599fa6","f62f614c6ac7fd24ae83ea899f85b0ecb1d5cd5adff4e594ea4f2def077f7268","2604479104c34ee1852cbcd5eff7ce76cca2c95658ee83efea6d73eb8a5b9ac4",{"version":"63a279506d27609ffd3b72a76646923ffce6a0ea4577c4051c1cdaecaa593e57","signature":"7f75af6fd9fe41f24ed619ba3c797aa42f3ec3bed0f1e865a326727c6d913f1a"},{"version":"9d130b0dfe4375c38c402bffba8a3b7624112cb9e9b4f975d67f0314d570ce52","signature":"7f75af6fd9fe41f24ed619ba3c797aa42f3ec3bed0f1e865a326727c6d913f1a"},{"version":"73b2a460d9af1759f22165356a05da95aebc17b69048463caeea6ca7347b69d1","signature":"7f75af6fd9fe41f24ed619ba3c797aa42f3ec3bed0f1e865a326727c6d913f1a"},{"version":"e2ab84edb978cbe821093c27bd677ef86bbb0a38f20ccb7648ee601c5b887dbd","signature":"1cb4f7716d23765823615fbdedd92d50ebe20dbd713c0656f35e781674dafd93"},{"version":"450f0af4f4c1ecc4c7180f2e364c8a59bfed69dd350fb6b47bce8641c2a37786","signature":"d889ca31ecf859432c9e675cf056009a227f839856a8cac58a70875e2d619a8b"},{"version":"e928b41e76d18fa05f15715ea8b26a6e2764c9c71da36ca786c39aee9d225a50","signature":"f0fe70066d80a4dfe2cebe40f49354147241debccc8d06c6f91734d4509f4964"},{"version":"33bbfc88981d565383eb345b22158bc661636cdaad032e4816f78e95768d129e","signature":"40670c22538e00326c80b8cbe4e62ad4bcb0765e12ca81b52f1a7114b55c7af9"},{"version":"7d37da2678c9a80ad86f7b3f44f2d6060029a16f92660928ea22c0e89403bdd3","signature":"08bd5ad04bcd8d17b9e4251c948c1e29bb375cc8d24bcdf8a775d750d7790a76"},{"version":"450f0af4f4c1ecc4c7180f2e364c8a59bfed69dd350fb6b47bce8641c2a37786","signature":"d889ca31ecf859432c9e675cf056009a227f839856a8cac58a70875e2d619a8b"},{"version":"450f0af4f4c1ecc4c7180f2e364c8a59bfed69dd350fb6b47bce8641c2a37786","signature":"d889ca31ecf859432c9e675cf056009a227f839856a8cac58a70875e2d619a8b"},{"version":"e32d2d3de99e9eb6a8569c02e771e978ee815901583095a03827deeea6f9d6d1","signature":"2905f96d0bb44dfc04e6d4afecafc5fb36bb9a36cf09e5f2ea103eabd3450661"},{"version":"62ad6fa80d00f091343ee1c9e9b8a1013ed9761508c8107f2e0a21f333150a80","signature":"197321112f0d3ff787e9e272b7d2998a422cd7d1c46e37426a90105214926824"},{"version":"adc26aea50111aafdb513b9485769d392e8823f81975a461a8ddc1e5de746506","signature":"b96e6ef652849c17e07c2eca86feae0e6573cce0345339161eea235028d792bb"},"dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","f9e22729fa06ed20f8b1fe60670b7c74933fdfd44d869ddfb1919c15a5cf12fb","42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","4f6ae308c5f2901f2988c817e1511520619e9025b9b12cc7cce2ab2e6ffed78a","8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true},"689be50b735f145624c6f391042155ae2ff6b90a93bac11ca5712bc866f6010c","151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311",{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true},"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","037817934c90357f71eea18fb643b1fd7e6763fec011f5da1f0fb17acad09d62","f346a76dbcae3b99e70c60864e7fee4cfcfc426fb0f71118693eaff10b914726","5a08c5b7b4a9e7a649c8b1e62cc35ed6fb7f10db4379aa905237cfc3a10e9e57","1c55ee4b5d547aa4390b96df6a4d2c10753b2ee2feded87529c5b7962eef7e52","b6e465de1852a328392b432b13ee8334b209f3493053e85aa8f0b5f78368d634","e9b16b70ab0ddc251e2b2fe6f6434947d740eade52f97da7422d162d262d1aca","dd881bea8b6fbef302ea21e97bda30e6a1a3048c4b19dcb0e668872d2f928eea","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33",{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true},"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc",{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true},"b2d0630483bf337ef9dac326c3334a245aa4946e9f60f12baf7da5be44beafbb","ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","26b7d0cd4b41ab557ef9e3bfeec42dcf24252843633e3d29f38d2c0b13aaa528","6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",{"version":"369dd7668d0e6c91550bce0c325f37ce6402e5dd40ecfca66fbb5283e23e559d","affectsGlobalScope":true},"2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b","4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa","0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9","5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a","a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819","84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29","7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb","63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77","80da0f61195385d22b666408f6cccbc261c066d401611a286f07dfddf7764017","06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776","ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056","18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0","e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084","76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2","d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1","5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9","0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9","7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4","4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d","8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af","20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4","7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2","5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2","23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630","f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329","ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65","71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749","0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654","f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848","3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b","fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe","f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a","ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a","09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a","3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f","2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8","88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d","b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6","d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8","74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420","b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19","4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0","ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31","5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d","40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9","208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961","b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390","c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d","30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc","c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9","6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae","a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f","08323a8971cb5b2632b532cba1636ad4ca0d76f9f7d0b8d1a0c706fdf5c77b45","5d2651c679f59706bf484e7d423f0ec2d9c79897e2e68c91a3f582f21328d193","30d49e69cb62f350ff0bc5dda1c557429c425014955c19c557f101c0de9272e7","d3747dbed45540212e9a906c2fb8b5beb691f2cd0861af58a66dc01871004f38","05a21cbb7cbe1ec502e7baca1f4846a4e860d96bad112f3e316b995ba99715b7","1eaee2b52f1c0e1848845a79050c1d06ae554d8050c35e3bf479f13d6ee19dd5","fd219904eea67c470dfebbaf44129b0db858207c3c3b55514bdc84de547b1687","4de232968f584b960b4101b4cdae593456aff149c5d0c70c2389248e9eb9fbac","933c42f6ed2768265dfb42faa817ce8d902710c57a21a1859a9c3fe5e985080e","c5430542eeebb207d651e8b00a08e4bb680c47ecb73dd388d8fa597a1fc5de5b","a6c5c9906262cf10549989c0061e5a44afdc1f61da77d5e09418a9ecea0018fe","bc6e433cb982bf63eaa523dbbbd30fe12960a09861b352d77baf77ad6dd8886d","9af64ab00918f552388252977c1569fe31890686ca1fdb8e20f58d3401c9a50c","3d3cc03b5c6e056c24aac76789f4bc67caee98a4f0774ab82bc8ba34d16be916","747ce36fa27a750a05096f3610e59c9b5a55e13defec545c01a75fd13d67b620","1a8f503c64bdb36308f245960d9e4acac4cf65d8b6bd0534f88230ebf0be7883","a2c1f4012459547d62116d724e7ec820bb2e6848da40ea0747bf160ffd99b283","0dc197e52512a7cbea4823cc33c23b0337af97bd59b38bf83be047f37cd8c9a8","492c93ade227fe4545fabb3035b9dd5d57d8b4fde322e5217fdaef20aa1b80a8","83c54a3b3e836d1773b8c23ff76ce6e0aae1a2209fc772b75e9de173fec9eac0","475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","5573ce7aa683a81c9a727294ffdb47d82d7715a148bfe9f4ddcf2f6cdfef1f0a","2cd9edbb4a6411a9f5258237dd73323db978d7aa9ebf1d1b0ac79771ac233e24","f3415e87a60a8c6851ad90b8f70dd24f38821448ebbc487404c5f39744905a0b","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","81af781a1d9eb264b8955538935874d6e60944e6285127d43ac07c6320d1d98f","380b919bfa0516118edaf25b99e45f855e7bc3fd75ce4163a1cfe4a666388804","40de86ced5175a6ffe84a52abe6ac59ac0efbc604a5975a8c6476c3ddc682ff1","fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","5a0b15210129310cee9fa6af9200714bb4b12af4a04d890e15f34dbea1cf1852","0244119dbcbcf34faf3ffdae72dab1e9bc2bc9efc3c477b2240ffa94af3bca56","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","7fadb2778688ebf3fd5b8d04f63d5bf27a43a3e420bc80732d3c6239067d1a4b","916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","7c52a6d05a6e68269e63bc63fad6e869368a141ad23a20e2350c831dc499c5f2","2e7ebdc7d8af978c263890bbde991e88d6aa31cc29d46735c9c5f45f0a41243b","b57fd1c0a680d220e714b76d83eff51a08670f56efcc5d68abc82f5a2684f0c0","8cf121e98669f724256d06bebafec912b92bb042a06d4944f7fb27a56c545109","1084565c68b2aed5d6d5cea394799bd688afdf4dc99f4e3615957857c15bb231","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","ddef25f825320de051dcb0e62ffce621b41c67712b5b4105740c32fd83f4c449","1b3dffaa4ca8e38ac434856843505af767a614d187fb3a5ef4fcebb023c355aa","908217c4f2244ec402b73533ebfcc46d6dcd34fc1c807ff403d7f98702abb3bc","61f41da9aaa809e5142b1d849d4e70f3e09913a5cb32c629bf6e61ef27967ff7","1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","3937b50a4de68f6d21614461e9d47af0d8421ca80fc2a72b667ca2151f492120","fc235bce306cfc1b1a1a0848d551501709389ecd8fa12baa6bc156904763315a","0112a7f3c11fc4792e70f5d0d5c9f80ee6a1c5c548723714433da6a03307e87b","fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","818e7c86776c67f49dbd781d445e13297b59aa7262e54b065b1332d7dcc6f59a","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","b70c7ea83a7d0de17a791d9b5283f664033a96362c42cc4d2b2e0bdaa65ef7d1","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","f4ae5546352701fd6932fdd86419438bb51253e4627a44808489742035bac644","e195b919d24087d178526e00fdb26e8a6060bc7820c021eb8777483c9163dcdc","f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b"],"root":[[255,267]],"options":{"esModuleInterop":true,"module":1,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"strict":false,"target":6},"fileIdsList":[[75,138,146,150,152,153,155,156,157,170,195],[75,138,146,150,152,153,154,155,156,157,170,175,187,195],[75,138,146,150,153,155,156,157,170],[75,138,143,146,150,153,155,156,157,170,195,428],[75,138,146,150,152,153,155,156,157,170,187,195,430,431],[75,138,146,150,153,155,156,157,170,175,195],[75,138,146,150,152,153,155,156,157,170,175,195],[75,138,146,150,153,155,156,157,170,205,206,208,209],[75,138,146,150,153,155,156,157,170,206,207,210],[75,138,146,150,153,155,156,157,170,208],[75,138,146,150,153,155,156,157,170,210],[75,138,146,150,153,155,156,157,170,208,210],[75,138,146,150,153,155,156,157,170,254],[75,138,146,150,153,155,156,157,170,227],[75,138,146,150,153,155,156,157,170,228,252,253],[75,138,146,150,153,155,156,157,170,242],[75,138,146,150,153,155,156,157,170,229,240,241,254],[75,138,146,150,153,155,156,157,170,234,254],[75,138,146,150,153,155,156,157,170,233,234,240,254],[75,138,146,150,153,155,156,157,170,230,231,232,234,235,236,237,238,239,254],[75,138,146,150,153,155,156,157,170,240,254],[75,138,146,150,153,155,156,157,170,244,245,246],[45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,75,138,146,150,153,155,156,157,170],[75,138,146,150,153,155,156,157,170,212,213,214,215,254],[69,70,71,75,138,146,150,153,155,156,157,170,211,216,224,225,226],[75,138,146,150,153,155,156,157,170,223],[75,138,146,150,153,155,156,157,170,225],[75,138,146,150,153,155,156,157,170,210,254],[75,138,146,150,153,155,156,157,170,223,224],[75,138,146,150,153,155,156,157,170,223,227,243,247,251],[75,138,146,150,153,155,156,157,170,248,249,250],[75,138,146,150,153,155,156,157,170,217,218,219,220,221,222],[75,138,146,150,153,155,156,157,170,220],[75,138,146,150,152,153,155,156,157,170,195,269],[75,138,144,146,150,153,155,156,157,170,195],[75,138,146,149,150,152,153,155,156,157,170,187,195,272,273,274],[75,138,146,150,153,155,156,157,170,187,195,279],[75,138,146,150,153,155,156,157,170,281,284],[75,138,146,150,153,155,156,157,170,281,282,283],[75,138,146,150,153,155,156,157,170,284],[75,138,146,149,150,152,153,155,156,157,170,195,276,277,278],[75,138,146,150,153,155,156,157,170,270,277,279,289,290],[75,138,146,150,152,153,155,156,157,170,298],[75,138,146,150,153,155,156,157,170,175,195,293,294,295,296,297],[75,138,146,150,153,155,156,157,170,175,298],[75,138,146,149,150,153,155,156,157,170,298],[75,138,146,150,153,155,156,157,170,295],[75,138,146,149,150,153,155,156,157,170,195,299],[75,138,146,150,153,155,156,157,170,304],[75,138,146,149,150,152,153,154,155,156,157,159,170,175,187,195],[75,138,146,150,153,155,156,157,170,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,389,390,391,392,393],[75,138,146,150,153,155,156,157,170,394],[75,138,146,150,153,155,156,157,170,373,374,394],[75,138,146,150,153,155,156,157,170,371,376,394],[75,138,146,150,153,155,156,157,170,377,378,394],[75,138,146,150,153,155,156,157,170,377,394],[75,138,146,150,153,155,156,157,170,371,377,394],[75,138,146,150,153,155,156,157,170,383,394],[75,138,146,150,153,155,156,157,170,372,388,394],[75,138,146,150,153,155,156,157,170,371,388,394],[75,138,146,150,153,155,156,157,170,371],[75,138,146,150,153,155,156,157,170,376],[75,138,146,150,153,155,156,157,170,371,394],[75,138,146,150,153,155,156,157,170,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,327,328,330,332,333,334,335,336,337,338,339,340,341,342,343,344,345,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370],[75,138,146,150,153,155,156,157,170,308,310,315],[75,138,146,150,153,155,156,157,170,310,347],[75,138,146,150,153,155,156,157,170,309,314],[75,138,146,150,153,155,156,157,170,308,309,310,311,312,313],[75,138,146,150,153,155,156,157,170,309,310,311,314,347],[75,138,146,150,153,155,156,157,170,308,310,314,315],[75,138,146,150,153,155,156,157,170,314],[75,138,146,150,153,155,156,157,170,314,354],[75,138,146,150,153,155,156,157,170,308,309,310,314],[75,138,146,150,153,155,156,157,170,309,310,311,314],[75,138,146,150,153,155,156,157,170,309,310],[75,138,146,150,153,155,156,157,170,308,309,310,314,315],[75,138,146,150,153,155,156,157,170,310,346],[75,138,146,150,153,155,156,157,170,308,309,310,315],[75,138,146,150,153,155,156,157,170,308,309,323],[75,138,146,150,153,155,156,157,170,308,309,322],[75,138,146,150,153,155,156,157,170,331],[75,138,146,150,153,155,156,157,170,324,325],[75,138,146,150,153,155,156,157,170,326],[75,138,146,150,153,155,156,157,170,324],[75,138,146,150,153,155,156,157,170,308,309,323,324],[75,138,146,150,153,155,156,157,170,308,309,322,323,325],[75,138,146,150,153,155,156,157,170,329],[75,138,146,150,153,155,156,157,170,308,309,324,325],[75,138,146,150,153,155,156,157,170,308,309,310,311,314],[75,138,146,150,153,155,156,157,170,308,309],[75,138,146,150,153,155,156,157,170,309],[75,138,146,150,153,155,156,157,170,308,314],[75,138,146,150,153,155,156,157,170,195],[75,138,146,149,150,153,155,156,157,170,195],[75,138,146,149,150,153,155,156,157,170,195,292,395],[75,138,146,150,153,155,156,157,170,398,400,401,402,403,404,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,401,402,403,404,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,399,400,401,402,403,404,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,402,403,404,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,403,404,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,404,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,405,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,404,406,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,404,405,407,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,404,405,406,408,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,404,405,406,407,409,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,404,405,406,407,408,410],[75,138,146,150,153,155,156,157,170,398,399,400,401,402,403,404,405,406,407,408,409],[75,135,136,138,146,150,153,155,156,157,170],[75,137,138,146,150,153,155,156,157,170],[75,138,146,150,153,155,156,157,170,178],[75,138,139,144,146,149,150,153,155,156,157,159,170,175,187],[75,138,139,140,146,149,150,153,155,156,157,170],[75,138,141,146,150,153,155,156,157,170,188],[75,138,142,143,146,150,153,155,156,157,161,170],[75,138,143,146,150,153,155,156,157,170,175,184],[75,138,144,146,149,150,153,155,156,157,159,170],[75,137,138,145,146,150,153,155,156,157,170],[75,138,146,147,150,153,155,156,157,170],[75,138,146,148,149,150,153,155,156,157,170],[75,137,138,146,149,150,153,155,156,157,170],[75,138,146,149,150,151,153,155,156,157,170,175,187],[75,138,146,149,150,151,153,155,156,157,170,175,178],[75,125,138,146,149,150,152,153,155,156,157,159,170,175,187],[75,138,146,149,150,152,153,155,156,157,159,170,175,184,187],[75,138,146,150,152,153,154,155,156,157,170,175,184,187],[75,138,146,149,150,153,155,156,157,170],[75,138,146,150,153,155,157,170],[75,138,146,150,153,155,156,157,158,170,187],[75,138,146,149,150,153,155,156,157,159,170,175],[75,138,146,150,153,155,156,157,161,170],[75,138,146,150,153,155,156,157,162,170],[75,138,146,149,150,153,155,156,157,165,170],[75,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,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],[75,138,146,150,153,155,156,157,167,170],[75,138,146,150,153,155,156,157,168,170],[75,138,143,146,150,153,155,156,157,159,170,178],[75,138,146,149,150,153,155,156,157,170,171],[75,138,146,150,153,155,156,157,170,172,188,191],[75,138,146,149,150,153,155,156,157,170,175,177,178],[75,138,146,150,153,155,156,157,170,176,178],[75,138,146,150,153,155,156,157,170,178,188],[75,138,146,150,153,155,156,157,170,179],[75,135,138,146,150,153,155,156,157,170,175,181,187],[75,138,146,150,153,155,156,157,170,175,180],[75,138,146,149,150,153,155,156,157,170,182,183],[75,138,146,150,153,155,156,157,170,182,183],[75,138,143,146,150,153,155,156,157,159,170,175,184],[75,138,146,150,153,155,156,157,170,185],[138,146,150,153,155,156,157,170],[72,73,74,75,76,77,78,79,80,81,82,83,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,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],[75,138,146,150,153,155,156,157,159,170,186],[75,138,146,150,152,153,155,156,157,168,170,187],[75,138,146,150,153,155,156,157,170,188,189],[75,138,143,146,150,153,155,156,157,170,189],[75,138,146,150,153,155,156,157,170,175,190],[75,138,146,150,153,155,156,157,158,170,191],[75,138,146,150,153,155,156,157,170,192],[75,138,141,146,150,153,155,156,157,170],[75,138,143,146,150,153,155,156,157,170],[75,138,146,150,153,155,156,157,170,188],[75,125,138,146,150,153,155,156,157,170],[75,138,146,150,153,155,156,157,170,187],[75,138,146,150,153,155,156,157,170,193],[75,138,146,150,153,155,156,157,165,170],[75,138,146,150,153,155,156,157,170,183],[75,125,138,146,149,150,151,153,155,156,157,165,170,175,178,187,190,191,193],[75,138,146,150,153,155,156,157,170,175,194],[75,138,146,150,153,155,156,157,170,304,414],[75,138,146,150,153,155,156,157,170,413,414,415,416,417],[75,138,146,150,153,155,156,157,170,301,302,303],[75,138,146,150,153,155,156,157,170,291],[75,138,146,150,152,153,155,156,157,170,195,286,288],[75,138,146,150,153,155,156,157,170,175,195,287],[75,138,146,149,150,152,153,154,155,156,157,159,170,175,184,187,194,195],[75,138,146,149,150,153,155,156,157,170,175,184,202,203,204],[75,138,146,150,153,155,156,157,170,197],[75,138,146,149,150,153,155,156,157,170,195,196,198,199],[75,138,146,150,153,155,156,157,170,200,201],[75,138,146,150,153,155,156,157,170,196],[75,90,93,96,97,138,146,150,153,155,156,157,170,187],[75,93,138,146,150,153,155,156,157,170,175,187],[75,93,97,138,146,150,153,155,156,157,170,187],[75,138,146,150,153,155,156,157,170,175],[75,87,138,146,150,153,155,156,157,170],[75,91,138,146,150,153,155,156,157,170],[75,89,90,93,138,146,150,153,155,156,157,170,187],[75,138,146,150,153,155,156,157,159,170,184],[75,87,138,146,150,153,155,156,157,170,195],[75,89,93,138,146,150,153,155,156,157,159,170,187],[75,84,85,86,88,92,138,146,149,150,153,155,156,157,170,175,187],[75,93,102,110,138,146,150,153,155,156,157,170],[75,85,91,138,146,150,153,155,156,157,170],[75,93,119,120,138,146,150,153,155,156,157,170],[75,85,88,93,138,146,150,153,155,156,157,170,178,187,195],[75,93,138,146,150,153,155,156,157,170],[75,89,93,138,146,150,153,155,156,157,170,187],[75,84,138,146,150,153,155,156,157,170],[75,87,88,89,91,92,93,94,95,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,138,146,150,153,155,156,157,170],[75,93,112,115,138,146,150,153,155,156,157,170],[75,93,102,103,104,138,146,150,153,155,156,157,170],[75,91,93,103,105,138,146,150,153,155,156,157,170],[75,92,138,146,150,153,155,156,157,170],[75,85,87,93,138,146,150,153,155,156,157,170],[75,93,97,103,105,138,146,150,153,155,156,157,170],[75,97,138,146,150,153,155,156,157,170],[75,91,93,96,138,146,150,153,155,156,157,170,187],[75,85,89,93,102,138,146,150,153,155,156,157,170],[75,93,112,138,146,150,153,155,156,157,170],[75,105,138,146,150,153,155,156,157,170],[75,87,93,119,138,146,150,153,155,156,157,170,178,193,195],[75,138,146,150,153,155,156,157,170,260],[75,138,146,150,153,155,156,157,170,255,256,257,258,259,261,262,263,264,266],[75,138,146,150,153,155,156,157,170,265],[75,138,146,150,153,155,156,157,161,162,170,254],[254]],"referencedMap":[[425,1],[426,2],[427,3],[429,4],[299,3],[428,3],[431,3],[432,5],[433,3],[434,3],[435,6],[436,3],[430,7],[210,8],[208,9],[207,10],[209,11],[206,12],[253,13],[228,14],[254,15],[243,16],[242,17],[234,13],[238,18],[232,13],[235,19],[233,3],[240,20],[231,13],[236,21],[237,13],[239,3],[230,13],[241,13],[229,13],[244,13],[247,22],[246,13],[245,13],[45,3],[46,13],[47,13],[67,13],[48,13],[64,13],[63,13],[49,13],[50,13],[62,13],[51,13],[52,13],[69,23],[53,13],[54,13],[55,13],[56,13],[57,13],[58,13],[59,13],[60,13],[66,13],[65,13],[61,13],[68,13],[212,3],[216,24],[214,13],[213,3],[215,13],[227,25],[224,26],[71,13],[226,27],[70,13],[211,28],[225,29],[252,30],[249,3],[251,31],[250,3],[248,13],[217,13],[222,13],[218,13],[223,32],[219,3],[220,13],[221,33],[268,3],[270,34],[271,35],[275,36],[280,37],[269,1],[285,38],[284,39],[283,40],[281,3],[279,41],[291,42],[290,41],[292,3],[293,43],[297,3],[298,44],[294,45],[295,46],[296,47],[300,48],[305,49],[306,3],[273,3],[286,3],[307,50],[394,51],[373,52],[375,53],[374,52],[377,54],[379,55],[380,56],[381,57],[382,55],[383,56],[384,55],[385,58],[386,56],[387,55],[388,52],[389,59],[390,60],[391,61],[378,62],[392,3],[376,3],[393,63],[371,64],[321,65],[319,65],[370,3],[346,66],[334,67],[314,68],[344,67],[345,67],[348,69],[349,67],[316,70],[350,67],[351,67],[352,67],[353,67],[354,71],[355,72],[356,67],[312,67],[357,67],[358,67],[359,71],[360,67],[361,67],[362,73],[363,67],[364,69],[365,67],[313,67],[366,67],[367,67],[368,74],[311,75],[317,76],[347,77],[320,78],[369,61],[322,79],[323,80],[332,81],[331,82],[327,83],[326,82],[328,84],[325,85],[324,86],[330,87],[329,84],[333,88],[315,89],[310,90],[308,91],[318,3],[309,92],[339,3],[340,3],[337,3],[338,71],[336,3],[341,3],[335,91],[343,3],[342,3],[395,93],[282,3],[396,94],[397,95],[399,96],[400,97],[398,98],[401,99],[402,100],[403,101],[404,102],[405,103],[406,104],[407,105],[408,106],[409,107],[410,108],[287,3],[411,93],[135,109],[136,109],[137,110],[138,111],[139,112],[140,113],[73,3],[141,114],[142,115],[143,116],[144,117],[145,118],[146,119],[147,119],[148,120],[149,121],[150,122],[151,123],[76,3],[152,124],[153,125],[154,126],[155,127],[156,128],[157,127],[158,129],[159,130],[161,131],[162,132],[163,132],[164,132],[165,133],[166,134],[167,135],[168,136],[169,137],[170,138],[171,138],[172,139],[173,3],[174,3],[175,140],[176,141],[177,140],[178,142],[179,143],[180,144],[181,145],[182,146],[183,147],[184,148],[185,149],[75,150],[72,3],[74,3],[195,151],[186,152],[187,153],[188,154],[189,155],[190,156],[191,157],[192,158],[77,127],[78,3],[79,159],[80,160],[81,3],[82,161],[83,3],[126,162],[127,163],[128,164],[129,164],[130,165],[131,3],[132,111],[133,166],[134,163],[193,167],[194,168],[412,3],[303,3],[277,3],[278,3],[413,3],[415,169],[418,170],[416,49],[414,49],[417,169],[301,3],[304,171],[274,7],[419,3],[276,6],[420,172],[289,173],[288,174],[421,1],[372,6],[422,3],[423,3],[424,175],[160,3],[302,3],[272,127],[205,176],[203,3],[204,3],[198,177],[200,178],[196,3],[199,177],[202,179],[201,3],[197,180],[43,3],[44,3],[9,3],[8,3],[2,3],[10,3],[11,3],[12,3],[13,3],[14,3],[15,3],[16,3],[17,3],[3,3],[4,3],[18,3],[22,3],[19,3],[20,3],[21,3],[23,3],[24,3],[25,3],[5,3],[26,3],[27,3],[28,3],[29,3],[6,3],[33,3],[30,3],[31,3],[32,3],[34,3],[7,3],[35,3],[40,3],[41,3],[36,3],[37,3],[38,3],[39,3],[1,3],[42,3],[102,181],[114,182],[99,183],[115,184],[124,185],[90,186],[91,187],[89,188],[123,93],[118,189],[122,190],[93,191],[111,192],[92,193],[121,194],[87,195],[88,189],[94,196],[95,3],[101,197],[98,196],[85,198],[125,199],[116,200],[105,201],[104,196],[106,202],[109,203],[103,204],[107,205],[119,93],[96,206],[97,207],[110,208],[86,184],[113,209],[112,196],[100,207],[108,210],[117,3],[84,3],[120,211],[255,13],[258,3],[259,3],[260,13],[261,212],[256,13],[267,213],[263,3],[264,3],[257,13],[262,3],[266,214],[265,215]],"exportedModulesMap":[[425,1],[426,2],[427,3],[429,4],[299,3],[428,3],[431,3],[432,5],[433,3],[434,3],[435,6],[436,3],[430,7],[210,8],[208,9],[207,10],[209,11],[206,12],[253,13],[228,14],[254,15],[243,16],[242,17],[234,13],[238,18],[232,13],[235,19],[233,3],[240,20],[231,13],[236,21],[237,13],[239,3],[230,13],[241,13],[229,13],[244,13],[247,22],[246,13],[245,13],[45,3],[46,13],[47,13],[67,13],[48,13],[64,13],[63,13],[49,13],[50,13],[62,13],[51,13],[52,13],[69,23],[53,13],[54,13],[55,13],[56,13],[57,13],[58,13],[59,13],[60,13],[66,13],[65,13],[61,13],[68,13],[212,3],[216,24],[214,13],[213,3],[215,13],[227,25],[224,26],[71,13],[226,27],[70,13],[211,28],[225,29],[252,30],[249,3],[251,31],[250,3],[248,13],[217,13],[222,13],[218,13],[223,32],[219,3],[220,13],[221,33],[268,3],[270,34],[271,35],[275,36],[280,37],[269,1],[285,38],[284,39],[283,40],[281,3],[279,41],[291,42],[290,41],[292,3],[293,43],[297,3],[298,44],[294,45],[295,46],[296,47],[300,48],[305,49],[306,3],[273,3],[286,3],[307,50],[394,51],[373,52],[375,53],[374,52],[377,54],[379,55],[380,56],[381,57],[382,55],[383,56],[384,55],[385,58],[386,56],[387,55],[388,52],[389,59],[390,60],[391,61],[378,62],[392,3],[376,3],[393,63],[371,64],[321,65],[319,65],[370,3],[346,66],[334,67],[314,68],[344,67],[345,67],[348,69],[349,67],[316,70],[350,67],[351,67],[352,67],[353,67],[354,71],[355,72],[356,67],[312,67],[357,67],[358,67],[359,71],[360,67],[361,67],[362,73],[363,67],[364,69],[365,67],[313,67],[366,67],[367,67],[368,74],[311,75],[317,76],[347,77],[320,78],[369,61],[322,79],[323,80],[332,81],[331,82],[327,83],[326,82],[328,84],[325,85],[324,86],[330,87],[329,84],[333,88],[315,89],[310,90],[308,91],[318,3],[309,92],[339,3],[340,3],[337,3],[338,71],[336,3],[341,3],[335,91],[343,3],[342,3],[395,93],[282,3],[396,94],[397,95],[399,96],[400,97],[398,98],[401,99],[402,100],[403,101],[404,102],[405,103],[406,104],[407,105],[408,106],[409,107],[410,108],[287,3],[411,93],[135,109],[136,109],[137,110],[138,111],[139,112],[140,113],[73,3],[141,114],[142,115],[143,116],[144,117],[145,118],[146,119],[147,119],[148,120],[149,121],[150,122],[151,123],[76,3],[152,124],[153,125],[154,126],[155,127],[156,128],[157,127],[158,129],[159,130],[161,131],[162,132],[163,132],[164,132],[165,133],[166,134],[167,135],[168,136],[169,137],[170,138],[171,138],[172,139],[173,3],[174,3],[175,140],[176,141],[177,140],[178,142],[179,143],[180,144],[181,145],[182,146],[183,147],[184,148],[185,149],[75,150],[72,3],[74,3],[195,151],[186,152],[187,153],[188,154],[189,155],[190,156],[191,157],[192,158],[77,127],[78,3],[79,159],[80,160],[81,3],[82,161],[83,3],[126,162],[127,163],[128,164],[129,164],[130,165],[131,3],[132,111],[133,166],[134,163],[193,167],[194,168],[412,3],[303,3],[277,3],[278,3],[413,3],[415,169],[418,170],[416,49],[414,49],[417,169],[301,3],[304,171],[274,7],[419,3],[276,6],[420,172],[289,173],[288,174],[421,1],[372,6],[422,3],[423,3],[424,175],[160,3],[302,3],[272,127],[205,176],[203,3],[204,3],[198,177],[200,178],[196,3],[199,177],[202,179],[201,3],[197,180],[43,3],[44,3],[9,3],[8,3],[2,3],[10,3],[11,3],[12,3],[13,3],[14,3],[15,3],[16,3],[17,3],[3,3],[4,3],[18,3],[22,3],[19,3],[20,3],[21,3],[23,3],[24,3],[25,3],[5,3],[26,3],[27,3],[28,3],[29,3],[6,3],[33,3],[30,3],[31,3],[32,3],[34,3],[7,3],[35,3],[40,3],[41,3],[36,3],[37,3],[38,3],[39,3],[1,3],[42,3],[102,181],[114,182],[99,183],[115,184],[124,185],[90,186],[91,187],[89,188],[123,93],[118,189],[122,190],[93,191],[111,192],[92,193],[121,194],[87,195],[88,189],[94,196],[95,3],[101,197],[98,196],[85,198],[125,199],[116,200],[105,201],[104,196],[106,202],[109,203],[103,204],[107,205],[119,93],[96,206],[97,207],[110,208],[86,184],[113,209],[112,196],[100,207],[108,210],[117,3],[84,3],[120,211],[255,216],[260,216],[261,216],[256,216],[267,216],[257,216],[266,216],[265,216]],"semanticDiagnosticsPerFile":[425,426,427,429,299,428,431,432,433,434,435,436,430,210,208,207,209,206,253,228,254,243,242,234,238,232,235,233,240,231,236,237,239,230,241,229,244,247,246,245,45,46,47,67,48,64,63,49,50,62,51,52,69,53,54,55,56,57,58,59,60,66,65,61,68,212,216,214,213,215,227,224,71,226,70,211,225,252,249,251,250,248,217,222,218,223,219,220,221,268,270,271,275,280,269,285,284,283,281,279,291,290,292,293,297,298,294,295,296,300,305,306,273,286,307,394,373,375,374,377,379,380,381,382,383,384,385,386,387,388,389,390,391,378,392,376,393,371,321,319,370,346,334,314,344,345,348,349,316,350,351,352,353,354,355,356,312,357,358,359,360,361,362,363,364,365,313,366,367,368,311,317,347,320,369,322,323,332,331,327,326,328,325,324,330,329,333,315,310,308,318,309,339,340,337,338,336,341,335,343,342,395,282,396,397,399,400,398,401,402,403,404,405,406,407,408,409,410,287,411,135,136,137,138,139,140,73,141,142,143,144,145,146,147,148,149,150,151,76,152,153,154,155,156,157,158,159,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,75,72,74,195,186,187,188,189,190,191,192,77,78,79,80,81,82,83,126,127,128,129,130,131,132,133,134,193,194,412,303,277,278,413,415,418,416,414,417,301,304,274,419,276,420,289,288,421,372,422,423,424,160,302,272,205,203,204,198,200,196,199,202,201,197,43,44,9,8,2,10,11,12,13,14,15,16,17,3,4,18,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,102,114,99,115,124,90,91,89,123,118,122,93,111,92,121,87,88,94,95,101,98,85,125,116,105,104,106,109,103,107,119,96,97,110,86,113,112,100,108,117,84,120,255,258,259,260,261,256,267,263,264,257,262,266,265]},"version":"5.2.2"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "generate-ai-audio",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Generate audio narration from content using ElevenLabs TTS",
|
|
5
|
+
"strapi": {
|
|
6
|
+
"name": "generate-ai-audio",
|
|
7
|
+
"displayName": "Generate AI Audio Narration",
|
|
8
|
+
"description": "Generate audio narration from blog and devotional content using ElevenLabs TTS",
|
|
9
|
+
"kind": "plugin"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"html-to-text": "^9.0.5"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"admin",
|
|
17
|
+
"strapi-server.js",
|
|
18
|
+
"strapi-admin.js"
|
|
19
|
+
],
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"@strapi/strapi": "4.13.6"
|
|
22
|
+
},
|
|
23
|
+
"author": {
|
|
24
|
+
"name": "Emanuel Sosa",
|
|
25
|
+
"email": "emanuelesausosa@gmail.com"
|
|
26
|
+
},
|
|
27
|
+
"maintainers": [
|
|
28
|
+
{
|
|
29
|
+
"name": "Codebridge labs"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=16.0.0 <=20.x.x",
|
|
34
|
+
"npm": ">=6.0.0"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"develop": "tsc -p tsconfig.server.json -w",
|
|
38
|
+
"build": "tsc -p tsconfig.server.json",
|
|
39
|
+
"prepare": "npm run build"
|
|
40
|
+
},
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/CodeBridge-Labs/strapi-generate-ai-audio.git"
|
|
45
|
+
}
|
|
46
|
+
}
|
package/strapi-admin.js
ADDED
package/strapi-server.js
ADDED