tempmail-sdk 1.2.1 → 1.2.2-dev
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 +4 -2
- package/dist/index.js +10 -2
- package/dist/providers/tempmailg.d.ts +7 -0
- package/dist/providers/tempmailg.js +202 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +8 -1
- package/src/providers/tempmailg.ts +208 -0
- package/src/types.ts +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/tempmail-sdk)
|
|
4
4
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
5
5
|
|
|
6
|
-
临时邮箱 SDK(TypeScript/Node.js),支持 **
|
|
6
|
+
临时邮箱 SDK(TypeScript/Node.js),支持 **27** 个邮箱服务提供商,所有渠道返回**统一标准化格式**。
|
|
7
7
|
|
|
8
8
|
## 安装
|
|
9
9
|
|
|
@@ -17,15 +17,17 @@ npm install @XxxXTeam/tempmail-sdk --registry=https://npm.pkg.github.com
|
|
|
17
17
|
|
|
18
18
|
## 支持的渠道
|
|
19
19
|
|
|
20
|
-
共 **
|
|
20
|
+
共 **27** 个,顺序与 `listChannels()` / 随机尝试顺序一致(与 `src/index.ts` 中 `allChannels` 相同,并与 Go / Rust / Python / C 对齐)。
|
|
21
21
|
|
|
22
22
|
| 渠道 | 服务商 | 需要 Token | 说明 |
|
|
23
23
|
|------|--------|:----------:|------|
|
|
24
24
|
| `tempmail` | tempmail.ing | - | 支持自定义有效期 |
|
|
25
25
|
| `tempmail-cn` | tempmail.cn | - | Socket.IO:`request shortid` / `set shortid` / `mail`;`domain` 可指定 `tempmail.cn` 或自定义接入域名 |
|
|
26
26
|
| `tmpmails` | tmpmails.com | ✅ | 首页 Cookie + Next.js Server Action;`domain` 可选语言路径(`zh`/`en`) |
|
|
27
|
+
| `tempmailg` | tempmailg.com | ✅ | `GET /public/{locale}` + `POST /public/get_messages`;Token 为 `tmg1:` + Base64(JSON);`domain` 可选语言路径;独立 fetch 会话,避免 Cookie 污染 |
|
|
27
28
|
| `ta-easy` | ta-easy.com | ✅ | REST 创建 + 收件箱列表;`expiresAt` 毫秒时间戳 |
|
|
28
29
|
| `10mail-wangtz` | 10mail.wangtz.cn | - | REST `/api/tempMail`、`/api/emailList`;**默认 `fetchWithInsecureTLS` 跳过证书校验** |
|
|
30
|
+
| `10minute-one` | 10minutemail.one | ✅ | SSR / JWT + Web API;`domain` 可选 |
|
|
29
31
|
| `linshi-email` | linshi-email.com | - | |
|
|
30
32
|
| `linshiyou` | linshiyou.com | ✅ | `NEXUS_TOKEN` + `tmail-emails` 等 Cookie;HTML 分段解析 |
|
|
31
33
|
| `mffac` | mffac.com | ✅ | `POST /api/mailboxes`;token 为 mailbox `id`;24h |
|
package/dist/index.js
CHANGED
|
@@ -41,6 +41,7 @@ exports.getEmails = getEmails;
|
|
|
41
41
|
const tempmail = __importStar(require("./providers/tempmail"));
|
|
42
42
|
const tempmailCn = __importStar(require("./providers/tempmail-cn"));
|
|
43
43
|
const tmpmails = __importStar(require("./providers/tmpmails"));
|
|
44
|
+
const tempmailg = __importStar(require("./providers/tempmailg"));
|
|
44
45
|
const taEasy = __importStar(require("./providers/ta-easy"));
|
|
45
46
|
const tenmailWangtz = __importStar(require("./providers/10mail-wangtz"));
|
|
46
47
|
const linshiEmail = __importStar(require("./providers/linshi-email"));
|
|
@@ -98,12 +99,13 @@ Object.defineProperty(exports, "randomSyntheticLinshiKey", { enumerable: true, g
|
|
|
98
99
|
Object.defineProperty(exports, "randomBrowserLikeProfile", { enumerable: true, get: function () { return linshi_token_1.randomBrowserLikeProfile; } });
|
|
99
100
|
Object.defineProperty(exports, "syntheticVisitorIdFromProfile", { enumerable: true, get: function () { return linshi_token_1.syntheticVisitorIdFromProfile; } });
|
|
100
101
|
/** 所有支持的渠道列表,用于随机选择和遍历 */
|
|
101
|
-
const allChannels = ['tempmail', 'tempmail-cn', 'tmpmails', 'ta-easy', '10mail-wangtz', '10minute-one', 'linshi-email', 'linshiyou', 'mffac', 'tempmail-lol', 'chatgpt-org-uk', 'temp-mail-io', 'awamail', 'temporary-email-org', 'mail-tm', 'mail-cx', 'dropmail', 'guerrillamail', 'maildrop', 'smail-pw', 'boomlify', 'minmail', 'vip-215', 'anonbox', 'fake-legal', 'moakt'];
|
|
102
|
+
const allChannels = ['tempmail', 'tempmail-cn', 'tmpmails', 'tempmailg', 'ta-easy', '10mail-wangtz', '10minute-one', 'linshi-email', 'linshiyou', 'mffac', 'tempmail-lol', 'chatgpt-org-uk', 'temp-mail-io', 'awamail', 'temporary-email-org', 'mail-tm', 'mail-cx', 'dropmail', 'guerrillamail', 'maildrop', 'smail-pw', 'boomlify', 'minmail', 'vip-215', 'anonbox', 'fake-legal', 'moakt'];
|
|
102
103
|
/** 渠道信息映射表 */
|
|
103
104
|
const channelInfoMap = {
|
|
104
105
|
'tempmail': { channel: 'tempmail', name: 'TempMail', website: 'tempmail.ing' },
|
|
105
106
|
'tempmail-cn': { channel: 'tempmail-cn', name: 'TempMail CN', website: 'tempmail.cn' },
|
|
106
107
|
'tmpmails': { channel: 'tmpmails', name: 'TmpMails', website: 'tmpmails.com' },
|
|
108
|
+
'tempmailg': { channel: 'tempmailg', name: 'TempMailG', website: 'tempmailg.com' },
|
|
107
109
|
'ta-easy': { channel: 'ta-easy', name: 'TA Easy', website: 'ta-easy.com' },
|
|
108
110
|
'10mail-wangtz': { channel: '10mail-wangtz', name: '10mail Wangtz', website: '10mail.wangtz.cn' },
|
|
109
111
|
'10minute-one': { channel: '10minute-one', name: '10 Minute Email', website: '10minutemail.one' },
|
|
@@ -235,6 +237,8 @@ async function generateEmailOnce(channel, options) {
|
|
|
235
237
|
return tempmailCn.generateEmail(options.domain ?? null);
|
|
236
238
|
case 'tmpmails':
|
|
237
239
|
return tmpmails.generateEmail(options.domain ?? null);
|
|
240
|
+
case 'tempmailg':
|
|
241
|
+
return tempmailg.generateEmail(options.domain ?? null);
|
|
238
242
|
case 'ta-easy':
|
|
239
243
|
return taEasy.generateEmail();
|
|
240
244
|
case '10mail-wangtz':
|
|
@@ -357,6 +361,10 @@ async function getEmailsOnce(channel, email, token) {
|
|
|
357
361
|
if (!token)
|
|
358
362
|
throw new Error('internal error: token missing for tmpmails');
|
|
359
363
|
return tmpmails.getEmails(email, token);
|
|
364
|
+
case 'tempmailg':
|
|
365
|
+
if (!token)
|
|
366
|
+
throw new Error('internal error: token missing for tempmailg');
|
|
367
|
+
return tempmailg.getEmails(email, token);
|
|
360
368
|
case 'ta-easy':
|
|
361
369
|
if (!token)
|
|
362
370
|
throw new Error('internal error: token missing for ta-easy');
|
|
@@ -504,4 +512,4 @@ exports.default = {
|
|
|
504
512
|
setConfig: config_1.setConfig,
|
|
505
513
|
getConfig: config_1.getConfig,
|
|
506
514
|
};
|
|
507
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0dBLG9DQUVDO0FBUUQsd0NBRUM7QUFvQkQsc0NBd0NDO0FBc0dELDhCQXVDQztBQXBVRCwrREFBaUQ7QUFDakQsb0VBQXNEO0FBQ3RELCtEQUFpRDtBQUNqRCw0REFBOEM7QUFDOUMseUVBQTJEO0FBQzNELHNFQUF3RDtBQUN4RCxpRUFBbUQ7QUFDbkQseURBQTJDO0FBQzNDLHNFQUF3RDtBQUN4RCx5RUFBMkQ7QUFDM0QscUVBQXVEO0FBQ3ZELDZEQUErQztBQUMvQyxtRkFBcUU7QUFDckUsNERBQThDO0FBQzlDLDREQUE4QztBQUM5QywrREFBaUQ7QUFDakQseUVBQTJEO0FBQzNELHVFQUF5RDtBQUN6RCw4REFBZ0Q7QUFDaEQsK0RBQWlEO0FBQ2pELDZEQUErQztBQUMvQyw0REFBOEM7QUFDOUMsNkRBQStDO0FBQy9DLGtFQUFvRDtBQUNwRCx5REFBMkM7QUFDM0MsdUVBQXlEO0FBRXpELG1DQUEyRDtBQUMzRCwyQ0FBOEM7QUFDOUMscUNBQWtDO0FBQ2xDLHFDQUFnRDtBQUloRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBQ3BELHlDQUE2QztBQUFwQywyR0FBQSxjQUFjLE9BQUE7QUFDdkIsaUNBQTJGO0FBQWxGLGtHQUFBLFNBQVMsT0FBQTtBQUFFLDhHQUFBLHFCQUFxQixPQUFBO0FBQUUseUdBQUEsZ0JBQWdCLE9BQUE7QUFFM0QsbUNBQTZGO0FBQXBGLGtHQUFBLFFBQVEsT0FBQTtBQUFjLHFHQUFBLFdBQVcsT0FBQTtBQUFFLHFHQUFBLFdBQVcsT0FBQTtBQUFFLG1HQUFBLFNBQVMsT0FBQTtBQUFFLGdHQUFBLE1BQU0sT0FBQTtBQUMxRSxtQ0FBMkQ7QUFBdkMsbUdBQUEsU0FBUyxPQUFBO0FBQUUsbUdBQUEsU0FBUyxPQUFBO0FBQ3hDLHFDQUEwQztBQUFqQyx3R0FBQSxhQUFhLE9BQUE7QUFFdEIseURBS2tDO0FBSmhDLHNIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLHdIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLHdIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLDZIQUFBLDZCQUE2QixPQUFBO0FBRy9CLDBCQUEwQjtBQUMxQixNQUFNLFdBQVcsR0FBYyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFjNVgsY0FBYztBQUNkLE1BQU0sY0FBYyxHQUFpQztJQUNuRCxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtJQUM5RSxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUN0RixVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtJQUM5RSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUMxRSxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO0lBQ2pHLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRTtJQUNqRyxjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO0lBQ3RGLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFO0lBQzVFLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO0lBQzFGLGdCQUFnQixFQUFFLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFO0lBQ3JHLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO0lBQzFGLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFO0lBQzFFLHFCQUFxQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7SUFDbEgsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7SUFDdEUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7SUFDdEUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7SUFDN0UsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO0lBQ25HLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFO0lBQzdFLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0lBQzFFLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO0lBQzlFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFO0lBQzFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0lBQ2xFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0lBQ3pFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFO0lBQzFFLFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0lBQ2xGLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0NBQ25FLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsWUFBWTtJQUMxQixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZ0I7SUFDN0MsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsVUFBZ0MsRUFBRTtJQUNwRTs7OztPQUlHO0lBQ0gsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGVBQWUsS0FBSyxLQUFLLENBQUM7SUFDeEQsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUVuRSxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDdEIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLEtBQUssTUFBTSxFQUFFLElBQUksUUFBUSxFQUFFLENBQUM7UUFDMUIsYUFBYSxJQUFJLENBQUMsQ0FBQztRQUNuQixlQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUEsNkJBQXFCLEVBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNULE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDekIsZUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLFFBQVEsQ0FBQyxLQUFLLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyRCxJQUFBLDJCQUFlLEVBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUUzRSwyQkFBMkI7WUFDM0IsTUFBTSxVQUFVLEdBQWM7Z0JBQzVCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUzthQUM5QixDQUFDO1lBQ0YsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25CLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNkLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLElBQUEsMkJBQWUsRUFBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsaUJBQWlCLENBQUMsU0FBbUIsRUFBRSxhQUFhLEdBQUcsSUFBSTtJQUNsRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNyRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLE9BQTZCO0lBQzlFLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzFELEtBQUssVUFBVTtZQUNiLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hELEtBQUssU0FBUztZQUNaLE9BQU8sTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLEtBQUssZUFBZTtZQUNsQixPQUFPLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM3RCxLQUFLLGNBQWM7WUFDakIsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7UUFDNUQsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLEtBQUssV0FBVztZQUNkLE9BQU8sU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25DLEtBQUssY0FBYztZQUNqQixPQUFPLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMzRCxLQUFLLGdCQUFnQjtZQUNuQixPQUFPLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxLQUFLLGNBQWM7WUFDakIsT0FBTyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsS0FBSyxxQkFBcUI7WUFDeEIsT0FBTyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxLQUFLLFNBQVM7WUFDWixPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoQyxLQUFLLFVBQVU7WUFDYixPQUFPLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsQyxLQUFLLGVBQWU7WUFDbEIsT0FBTyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsS0FBSyxVQUFVO1lBQ2IsT0FBTyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNoRSxLQUFLLFVBQVU7WUFDYixPQUFPLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqQyxLQUFLLFVBQVU7WUFDYixPQUFPLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsQyxLQUFLLE9BQU87WUFDVixPQUFPLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvQixLQUFLLFNBQVM7WUFDWixPQUFPLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqQyxLQUFLLFNBQVM7WUFDWixPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoQyxLQUFLLFNBQVM7WUFDWixPQUFPLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqQyxLQUFLLFlBQVk7WUFDZixPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN6RCxLQUFLLE9BQU87WUFDVixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNyRDtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0ksS0FBSyxVQUFVLFNBQVMsQ0FBQyxJQUFlLEVBQUUsT0FBMEI7SUFDekUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsSUFBQSwyQkFBZSxFQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsbURBQW1ELENBQUMsQ0FBQztRQUNwRyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsSUFBQSwyQkFBZSxFQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLElBQUEsMkJBQWUsRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsT0FBTyxTQUFTLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDZCQUFxQixFQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNWLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxhQUFhLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixlQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBQSwyQkFBZSxFQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFZLENBQUM7SUFDNUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0M7OztPQUdHO0lBQ0gsZUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLE9BQU8sU0FBUyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELElBQUEsMkJBQWUsRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGFBQWEsQ0FBQyxPQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFjO0lBQzFFLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLEtBQUssYUFBYTtZQUNoQixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsS0FBSyxVQUFVO1lBQ2IsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsS0FBSyxlQUFlO1lBQ2xCLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxLQUFLLGNBQWM7WUFDakIsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsS0FBSyxjQUFjO1lBQ2pCLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztZQUM5RSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLEtBQUssV0FBVztZQUNkLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUMzRSxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLEtBQUssY0FBYztZQUNqQixJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDOUUsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QyxLQUFLLGdCQUFnQjtZQUNuQixJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDaEYsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxLQUFLLGNBQWM7WUFDakIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLEtBQUssU0FBUztZQUNaLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUN6RSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLEtBQUsscUJBQXFCO1lBQ3hCLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztZQUNyRixPQUFPLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsS0FBSyxVQUFVO1lBQ2IsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsS0FBSyxlQUFlO1lBQ2xCLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUMvRSxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLEtBQUssVUFBVTtZQUNiLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUMxRSxPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsS0FBSyxVQUFVO1lBQ2IsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLEtBQUssT0FBTztZQUNWLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsS0FBSyxZQUFZO1lBQ2YsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLEtBQUssT0FBTztZQUNWLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUN2RSxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSxlQUFlO0lBQTVCO1FBQ1UsY0FBUyxHQUFxQixJQUFJLENBQUM7SUFrQzdDLENBQUM7SUFoQ0M7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBZ0MsRUFBRTtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQTBCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBQSwyQkFBZSxFQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsNENBQTRDLENBQUMsQ0FBQztZQUM3RixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBbkNELDBDQW1DQztBQUVELGtCQUFlO0lBQ2IsWUFBWTtJQUNaLGNBQWM7SUFDZCxhQUFhO0lBQ2IsU0FBUztJQUNULGVBQWU7SUFDZixTQUFTLEVBQVQsa0JBQVM7SUFDVCxTQUFTLEVBQVQsa0JBQVM7Q0FDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGVtcG1haWwgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG1haWwnO1xuaW1wb3J0ICogYXMgdGVtcG1haWxDbiBmcm9tICcuL3Byb3ZpZGVycy90ZW1wbWFpbC1jbic7XG5pbXBvcnQgKiBhcyB0bXBtYWlscyBmcm9tICcuL3Byb3ZpZGVycy90bXBtYWlscyc7XG5pbXBvcnQgKiBhcyB0YUVhc3kgZnJvbSAnLi9wcm92aWRlcnMvdGEtZWFzeSc7XG5pbXBvcnQgKiBhcyB0ZW5tYWlsV2FuZ3R6IGZyb20gJy4vcHJvdmlkZXJzLzEwbWFpbC13YW5ndHonO1xuaW1wb3J0ICogYXMgbGluc2hpRW1haWwgZnJvbSAnLi9wcm92aWRlcnMvbGluc2hpLWVtYWlsJztcbmltcG9ydCAqIGFzIGxpbnNoaXlvdSBmcm9tICcuL3Byb3ZpZGVycy9saW5zaGl5b3UnO1xuaW1wb3J0ICogYXMgbWZmYWMgZnJvbSAnLi9wcm92aWRlcnMvbWZmYWMnO1xuaW1wb3J0ICogYXMgdGVtcG1haWxMb2wgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG1haWwtbG9sJztcbmltcG9ydCAqIGFzIGNoYXRncHRPcmdVayBmcm9tICcuL3Byb3ZpZGVycy9jaGF0Z3B0LW9yZy11ayc7XG5pbXBvcnQgKiBhcyB0ZW1wTWFpbElPIGZyb20gJy4vcHJvdmlkZXJzL3RlbXAtbWFpbC1pbyc7XG5pbXBvcnQgKiBhcyBhd2FtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2F3YW1haWwnO1xuaW1wb3J0ICogYXMgdGVtcG9yYXJ5RW1haWxPcmcgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG9yYXJ5LWVtYWlsLW9yZyc7XG5pbXBvcnQgKiBhcyBtYWlsVG0gZnJvbSAnLi9wcm92aWRlcnMvbWFpbC10bSc7XG5pbXBvcnQgKiBhcyBtYWlsQ3ggZnJvbSAnLi9wcm92aWRlcnMvbWFpbC1jeCc7XG5pbXBvcnQgKiBhcyBkcm9wbWFpbCBmcm9tICcuL3Byb3ZpZGVycy9kcm9wbWFpbCc7XG5pbXBvcnQgKiBhcyBndWVycmlsbGFtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2d1ZXJyaWxsYW1haWwnO1xuaW1wb3J0ICogYXMgbWFpbGRyb3BQcm92aWRlciBmcm9tICcuL3Byb3ZpZGVycy9tYWlsZHJvcCc7XG5pbXBvcnQgKiBhcyBzbWFpbFB3IGZyb20gJy4vcHJvdmlkZXJzL3NtYWlsLXB3JztcbmltcG9ydCAqIGFzIGJvb21saWZ5IGZyb20gJy4vcHJvdmlkZXJzL2Jvb21saWZ5JztcbmltcG9ydCAqIGFzIG1pbm1haWwgZnJvbSAnLi9wcm92aWRlcnMvbWlubWFpbCc7XG5pbXBvcnQgKiBhcyB2aXAyMTUgZnJvbSAnLi9wcm92aWRlcnMvdmlwLTIxNSc7XG5pbXBvcnQgKiBhcyBhbm9uYm94IGZyb20gJy4vcHJvdmlkZXJzL2Fub25ib3gnO1xuaW1wb3J0ICogYXMgZmFrZUxlZ2FsIGZyb20gJy4vcHJvdmlkZXJzL2Zha2UtbGVnYWwnO1xuaW1wb3J0ICogYXMgbW9ha3QgZnJvbSAnLi9wcm92aWRlcnMvbW9ha3QnO1xuaW1wb3J0ICogYXMgdGVubWludXRlT25lIGZyb20gJy4vcHJvdmlkZXJzLzEwbWludXRlLW9uZSc7XG5pbXBvcnQgeyBDaGFubmVsLCBFbWFpbEluZm8sIEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgR2V0RW1haWxzUmVzdWx0LCBHZW5lcmF0ZUVtYWlsT3B0aW9ucywgR2V0RW1haWxzT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFJldHJ5LCB3aXRoUmV0cnlXaXRoQXR0ZW1wdHMgfSBmcm9tICcuL3JldHJ5JztcbmltcG9ydCB7IHJlcG9ydFRlbGVtZXRyeSB9IGZyb20gJy4vdGVsZW1ldHJ5JztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHNldENvbmZpZywgZ2V0Q29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG5leHBvcnQgeyBDaGFubmVsLCBFbWFpbEluZm8sIEVtYWlsLCBFbWFpbEF0dGFjaG1lbnQsIEdldEVtYWlsc1Jlc3VsdCwgR2VuZXJhdGVFbWFpbE9wdGlvbnMsIEdldEVtYWlsc09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTREsg5YaF6YOoIHRva2VuIOWtmOWCqFxuICog5L2/55SoIFdlYWtNYXAg5bCGIEVtYWlsSW5mbyDlr7nosaHmmKDlsITliLDlr7nlupTnmoQgdG9rZW5cbiAqIOeUqOaIt+aXoOazleebtOaOpeiuv+mXriB0b2tlbu+8jOeUsSBTREsg6Ieq5Yqo566h55CGXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgdG9rZW5TdG9yZSA9IG5ldyBXZWFrTWFwPEVtYWlsSW5mbywgc3RyaW5nPigpO1xuZXhwb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuL25vcm1hbGl6ZSc7XG5leHBvcnQgeyB3aXRoUmV0cnksIHdpdGhSZXRyeVdpdGhBdHRlbXB0cywgZmV0Y2hXaXRoVGltZW91dCwgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi9yZXRyeSc7XG5leHBvcnQgdHlwZSB7IFJldHJ5V2l0aEF0dGVtcHRzUmVzdWx0LCBGZXRjaFdpdGhUaW1lb3V0T3B0aW9ucyB9IGZyb20gJy4vcmV0cnknO1xuZXhwb3J0IHsgTG9nTGV2ZWwsIExvZ0hhbmRsZXIsIHNldExvZ0xldmVsLCBnZXRMb2dMZXZlbCwgc2V0TG9nZ2VyLCBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5leHBvcnQgeyBTREtDb25maWcsIHNldENvbmZpZywgZ2V0Q29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0IHsgZ2V0U2RrVmVyc2lvbiB9IGZyb20gJy4vdmVyc2lvbic7XG5leHBvcnQgdHlwZSB7IFN5bnRoZXRpY0Jyb3dzZXJQcm9maWxlIH0gZnJvbSAnLi9wcm92aWRlcnMvbGluc2hpLXRva2VuJztcbmV4cG9ydCB7XG4gIGRlcml2ZUxpbnNoaUFwaVBhdGhLZXksXG4gIHJhbmRvbVN5bnRoZXRpY0xpbnNoaUtleSxcbiAgcmFuZG9tQnJvd3Nlckxpa2VQcm9maWxlLFxuICBzeW50aGV0aWNWaXNpdG9ySWRGcm9tUHJvZmlsZSxcbn0gZnJvbSAnLi9wcm92aWRlcnMvbGluc2hpLXRva2VuJztcblxuLyoqIOaJgOacieaUr+aMgeeahOa4oOmBk+WIl+ihqO+8jOeUqOS6jumaj+acuumAieaLqeWSjOmBjeWOhiAqL1xuY29uc3QgYWxsQ2hhbm5lbHM6IENoYW5uZWxbXSA9IFsndGVtcG1haWwnLCAndGVtcG1haWwtY24nLCAndG1wbWFpbHMnLCAndGEtZWFzeScsICcxMG1haWwtd2FuZ3R6JywgJzEwbWludXRlLW9uZScsICdsaW5zaGktZW1haWwnLCAnbGluc2hpeW91JywgJ21mZmFjJywgJ3RlbXBtYWlsLWxvbCcsICdjaGF0Z3B0LW9yZy11aycsICd0ZW1wLW1haWwtaW8nLCAnYXdhbWFpbCcsICd0ZW1wb3JhcnktZW1haWwtb3JnJywgJ21haWwtdG0nLCAnbWFpbC1jeCcsICdkcm9wbWFpbCcsICdndWVycmlsbGFtYWlsJywgJ21haWxkcm9wJywgJ3NtYWlsLXB3JywgJ2Jvb21saWZ5JywgJ21pbm1haWwnLCAndmlwLTIxNScsICdhbm9uYm94JywgJ2Zha2UtbGVnYWwnLCAnbW9ha3QnXTtcblxuLyoqXG4gKiDmuKDpgZPkv6Hmga/vvIzljIXlkKvmuKDpgZPmoIfor4bjgIHmmL7npLrlkI3np7Dlkozlr7nlupTnvZHnq5lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFubmVsSW5mbyB7XG4gIC8qKiDmuKDpgZPmoIfor4YgKi9cbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgLyoqIOa4oOmBk+aYvuekuuWQjeensCAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiDlr7nlupTnmoTkuLTml7bpgq7nrrHmnI3liqHnvZHnq5kgKi9cbiAgd2Vic2l0ZTogc3RyaW5nO1xufVxuXG4vKiog5rig6YGT5L+h5oGv5pig5bCE6KGoICovXG5jb25zdCBjaGFubmVsSW5mb01hcDogUmVjb3JkPENoYW5uZWwsIENoYW5uZWxJbmZvPiA9IHtcbiAgJ3RlbXBtYWlsJzogeyBjaGFubmVsOiAndGVtcG1haWwnLCBuYW1lOiAnVGVtcE1haWwnLCB3ZWJzaXRlOiAndGVtcG1haWwuaW5nJyB9LFxuICAndGVtcG1haWwtY24nOiB7IGNoYW5uZWw6ICd0ZW1wbWFpbC1jbicsIG5hbWU6ICdUZW1wTWFpbCBDTicsIHdlYnNpdGU6ICd0ZW1wbWFpbC5jbicgfSxcbiAgJ3RtcG1haWxzJzogeyBjaGFubmVsOiAndG1wbWFpbHMnLCBuYW1lOiAnVG1wTWFpbHMnLCB3ZWJzaXRlOiAndG1wbWFpbHMuY29tJyB9LFxuICAndGEtZWFzeSc6IHsgY2hhbm5lbDogJ3RhLWVhc3knLCBuYW1lOiAnVEEgRWFzeScsIHdlYnNpdGU6ICd0YS1lYXN5LmNvbScgfSxcbiAgJzEwbWFpbC13YW5ndHonOiB7IGNoYW5uZWw6ICcxMG1haWwtd2FuZ3R6JywgbmFtZTogJzEwbWFpbCBXYW5ndHonLCB3ZWJzaXRlOiAnMTBtYWlsLndhbmd0ei5jbicgfSxcbiAgJzEwbWludXRlLW9uZSc6IHsgY2hhbm5lbDogJzEwbWludXRlLW9uZScsIG5hbWU6ICcxMCBNaW51dGUgRW1haWwnLCB3ZWJzaXRlOiAnMTBtaW51dGVtYWlsLm9uZScgfSxcbiAgJ2xpbnNoaS1lbWFpbCc6IHsgY2hhbm5lbDogJ2xpbnNoaS1lbWFpbCcsIG5hbWU6ICfkuLTml7bpgq7nrrEnLCB3ZWJzaXRlOiAnbGluc2hpLWVtYWlsLmNvbScgfSxcbiAgJ2xpbnNoaXlvdSc6IHsgY2hhbm5lbDogJ2xpbnNoaXlvdScsIG5hbWU6ICfkuLTml7bpgq4nLCB3ZWJzaXRlOiAnbGluc2hpeW91LmNvbScgfSxcbiAgJ3RlbXBtYWlsLWxvbCc6IHsgY2hhbm5lbDogJ3RlbXBtYWlsLWxvbCcsIG5hbWU6ICdUZW1wTWFpbCBMT0wnLCB3ZWJzaXRlOiAndGVtcG1haWwubG9sJyB9LFxuICAnY2hhdGdwdC1vcmctdWsnOiB7IGNoYW5uZWw6ICdjaGF0Z3B0LW9yZy11aycsIG5hbWU6ICdDaGF0R1BUIE1haWwnLCB3ZWJzaXRlOiAnbWFpbC5jaGF0Z3B0Lm9yZy51aycgfSxcbiAgJ3RlbXAtbWFpbC1pbyc6IHsgY2hhbm5lbDogJ3RlbXAtbWFpbC1pbycsIG5hbWU6ICdUZW1wIE1haWwgSU8nLCB3ZWJzaXRlOiAndGVtcC1tYWlsLmlvJyB9LFxuICAnYXdhbWFpbCc6IHsgY2hhbm5lbDogJ2F3YW1haWwnLCBuYW1lOiAnQXdhTWFpbCcsIHdlYnNpdGU6ICdhd2FtYWlsLmNvbScgfSxcbiAgJ3RlbXBvcmFyeS1lbWFpbC1vcmcnOiB7IGNoYW5uZWw6ICd0ZW1wb3JhcnktZW1haWwtb3JnJywgbmFtZTogJ1RlbXBvcmFyeSBFbWFpbCcsIHdlYnNpdGU6ICd0ZW1wb3JhcnktZW1haWwub3JnJyB9LFxuICAnbWFpbC10bSc6IHsgY2hhbm5lbDogJ21haWwtdG0nLCBuYW1lOiAnTWFpbC50bScsIHdlYnNpdGU6ICdtYWlsLnRtJyB9LFxuICAnbWFpbC1jeCc6IHsgY2hhbm5lbDogJ21haWwtY3gnLCBuYW1lOiAnTWFpbC5jeCcsIHdlYnNpdGU6ICdtYWlsLmN4JyB9LFxuICAnZHJvcG1haWwnOiB7IGNoYW5uZWw6ICdkcm9wbWFpbCcsIG5hbWU6ICdEcm9wTWFpbCcsIHdlYnNpdGU6ICdkcm9wbWFpbC5tZScgfSxcbiAgJ2d1ZXJyaWxsYW1haWwnOiB7IGNoYW5uZWw6ICdndWVycmlsbGFtYWlsJywgbmFtZTogJ0d1ZXJyaWxsYSBNYWlsJywgd2Vic2l0ZTogJ2d1ZXJyaWxsYW1haWwuY29tJyB9LFxuICAnbWFpbGRyb3AnOiB7IGNoYW5uZWw6ICdtYWlsZHJvcCcsIG5hbWU6ICdNYWlsZHJvcCcsIHdlYnNpdGU6ICdtYWlsZHJvcC5jeCcgfSxcbiAgJ3NtYWlsLXB3JzogeyBjaGFubmVsOiAnc21haWwtcHcnLCBuYW1lOiAnU21haWwucHcnLCB3ZWJzaXRlOiAnc21haWwucHcnIH0sXG4gICdib29tbGlmeSc6IHsgY2hhbm5lbDogJ2Jvb21saWZ5JywgbmFtZTogJ0Jvb21saWZ5Jywgd2Vic2l0ZTogJ2Jvb21saWZ5LmNvbScgfSxcbiAgJ21pbm1haWwnOiB7IGNoYW5uZWw6ICdtaW5tYWlsJywgbmFtZTogJ01pbk1haWwnLCB3ZWJzaXRlOiAnbWlubWFpbC5hcHAnIH0sXG4gICdtZmZhYyc6IHsgY2hhbm5lbDogJ21mZmFjJywgbmFtZTogJ01GRkFDJywgd2Vic2l0ZTogJ21mZmFjLmNvbScgfSxcbiAgJ3ZpcC0yMTUnOiB7IGNoYW5uZWw6ICd2aXAtMjE1JywgbmFtZTogJ1ZJUCAyMTUnLCB3ZWJzaXRlOiAndmlwLjIxNS5pbScgfSxcbiAgJ2Fub25ib3gnOiB7IGNoYW5uZWw6ICdhbm9uYm94JywgbmFtZTogJ0Fub25ib3gnLCB3ZWJzaXRlOiAnYW5vbmJveC5uZXQnIH0sXG4gICdmYWtlLWxlZ2FsJzogeyBjaGFubmVsOiAnZmFrZS1sZWdhbCcsIG5hbWU6ICdGYWtlIExlZ2FsJywgd2Vic2l0ZTogJ2Zha2UubGVnYWwnIH0sXG4gICdtb2FrdCc6IHsgY2hhbm5lbDogJ21vYWt0JywgbmFtZTogJ01vYWt0Jywgd2Vic2l0ZTogJ21vYWt0LmNvbScgfSxcbn07XG5cbi8qKlxuICog6I635Y+W5omA5pyJ5pSv5oyB55qE5rig6YGT5YiX6KGoXG4gKlxuICogQHJldHVybnMg5omA5pyJ5rig6YGT55qE5L+h5oGv5pWw57uEXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBjaGFubmVscyA9IGxpc3RDaGFubmVscygpO1xuICogY2hhbm5lbHMuZm9yRWFjaChjaCA9PiBjb25zb2xlLmxvZyhgJHtjaC5uYW1lfSAoJHtjaC53ZWJzaXRlfSlgKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RDaGFubmVscygpOiBDaGFubmVsSW5mb1tdIHtcbiAgcmV0dXJuIGFsbENoYW5uZWxzLm1hcChjaCA9PiBjaGFubmVsSW5mb01hcFtjaF0pO1xufVxuXG4vKipcbiAqIOiOt+WPluaMh+Wumua4oOmBk+eahOivpue7huS/oeaBr1xuICpcbiAqIEBwYXJhbSBjaGFubmVsIC0g5rig6YGT5qCH6K+GXG4gKiBAcmV0dXJucyDmuKDpgZPkv6Hmga/vvIzkuI3lrZjlnKjml7bov5Tlm54gdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFubmVsSW5mbyhjaGFubmVsOiBDaGFubmVsKTogQ2hhbm5lbEluZm8gfCB1bmRlZmluZWQge1xuICByZXR1cm4gY2hhbm5lbEluZm9NYXBbY2hhbm5lbF07XG59XG5cbi8qKlxuICog5Yib5bu65Li05pe26YKu566xXG4gKlxuICog6ZSZ6K+v5aSE55CG562W55Wl77yaXG4gKiAtIOaMh+Wumua4oOmBk+Wksei0peaXtu+8jOm7mOiupOiHquWKqOWwneivleWFtuS7luWPr+eUqOa4oOmBk++8iOaJk+S5semhuuW6j+mAkOS4quWwneivle+8iVxuICogLSBgY2hhbm5lbEZhbGxiYWNrOiBmYWxzZWAg5LiU5oyH5a6a5LqGIGBjaGFubmVsYCDml7bvvIzku4XlsJ3or5Xor6XmuKDpgZPvvIzlpLHotKXljbPov5Tlm54gbnVsbFxuICogLSDmnKrmjIflrprmuKDpgZPml7bvvIzmiZPkubHlhajpg6jmuKDpgZPpgJDkuKrlsJ3or5XvvIznm7TliLDmiJDlip9cbiAqIC0g5omA5pyJ5rig6YGT5Z2H5LiN5Y+v55So5pe26L+U5ZueIG51bGzvvIjkuI3mipvlh7rlvILluLjvvIlcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIOWIm+W7uumAiemhue+8jOWPr+aMh+Wumua4oOmBk+OAgeacieaViOaXtumVv+OAgeWfn+WQjeetiVxuICogQHJldHVybnMg6YKu566x5L+h5oGv77yM5omA5pyJ5rig6YGT5Z2H5LiN5Y+v55So5pe26L+U5ZueIG51bGxcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGVtYWlsSW5mbyA9IGF3YWl0IGdlbmVyYXRlRW1haWwoeyBjaGFubmVsOiAndGVtcC1tYWlsLWlvJyB9KTtcbiAqIGlmIChlbWFpbEluZm8pIGNvbnNvbGUubG9nKGVtYWlsSW5mby5lbWFpbCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwob3B0aW9uczogR2VuZXJhdGVFbWFpbE9wdGlvbnMgPSB7fSk6IFByb21pc2U8RW1haWxJbmZvIHwgbnVsbD4ge1xuICAvKlxuICAgKiDmnoTlu7rlsJ3or5Xpobrluo/vvJpcbiAgICogLSDmjIflrprmuKDpgZMg4oaSIOS8mOWFiOWwneivleivpea4oOmBk++8jOWksei0peWQjumaj+acuuWwneivleWFtuS7lua4oOmBk1xuICAgKiAtIOacquaMh+WumiDihpIg5omT5Lmx5YWo6YOo5rig6YGT6YCQ5Liq5bCd6K+VXG4gICAqL1xuICBjb25zdCBhbGxvd0ZhbGxiYWNrID0gb3B0aW9ucy5jaGFubmVsRmFsbGJhY2sgIT09IGZhbHNlO1xuICBjb25zdCB0cnlPcmRlciA9IGJ1aWxkQ2hhbm5lbE9yZGVyKG9wdGlvbnMuY2hhbm5lbCwgYWxsb3dGYWxsYmFjayk7XG5cbiAgbGV0IGNoYW5uZWxzVHJpZWQgPSAwO1xuICBsZXQgbGFzdEVyciA9ICcnO1xuICBmb3IgKGNvbnN0IGNoIG9mIHRyeU9yZGVyKSB7XG4gICAgY2hhbm5lbHNUcmllZCArPSAxO1xuICAgIGxvZ2dlci5pbmZvKGDliJvlu7rkuLTml7bpgq7nrrEsIOa4oOmBkzogJHtjaH1gKTtcbiAgICBjb25zdCByID0gYXdhaXQgd2l0aFJldHJ5V2l0aEF0dGVtcHRzKCgpID0+IGdlbmVyYXRlRW1haWxPbmNlKGNoLCBvcHRpb25zKSwgb3B0aW9ucy5yZXRyeSk7XG4gICAgaWYgKHIub2spIHtcbiAgICAgIGNvbnN0IGludGVybmFsID0gci52YWx1ZTtcbiAgICAgIGxvZ2dlci5pbmZvKGDpgq7nrrHliJvlu7rmiJDlip86ICR7aW50ZXJuYWwuZW1haWx9ICjmuKDpgZM6ICR7Y2h9KWApO1xuICAgICAgcmVwb3J0VGVsZW1ldHJ5KCdnZW5lcmF0ZV9lbWFpbCcsIGNoLCB0cnVlLCByLmF0dGVtcHRzLCBjaGFubmVsc1RyaWVkLCAnJyk7XG5cbiAgICAgIC8qIOWwhiB0b2tlbiDlrZjlhaXlhoXpg6jlrZjlgqjvvIzkuI3mmrTpnLLnu5nnlKjmiLcgKi9cbiAgICAgIGNvbnN0IHB1YmxpY0luZm86IEVtYWlsSW5mbyA9IHtcbiAgICAgICAgY2hhbm5lbDogaW50ZXJuYWwuY2hhbm5lbCxcbiAgICAgICAgZW1haWw6IGludGVybmFsLmVtYWlsLFxuICAgICAgICBleHBpcmVzQXQ6IGludGVybmFsLmV4cGlyZXNBdCxcbiAgICAgICAgY3JlYXRlZEF0OiBpbnRlcm5hbC5jcmVhdGVkQXQsXG4gICAgICB9O1xuICAgICAgaWYgKGludGVybmFsLnRva2VuKSB7XG4gICAgICAgIHRva2VuU3RvcmUuc2V0KHB1YmxpY0luZm8sIGludGVybmFsLnRva2VuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwdWJsaWNJbmZvO1xuICAgIH1cbiAgICBjb25zdCBtc2cgPSAoci5lcnJvciBhcyBhbnkpPy5tZXNzYWdlIHx8IFN0cmluZyhyLmVycm9yKTtcbiAgICBsYXN0RXJyID0gbXNnO1xuICAgIGxvZ2dlci53YXJuKGDmuKDpgZMgJHtjaH0g5LiN5Y+v55SoOiAke21zZ33vvIzlsJ3or5XkuIvkuIDkuKrmuKDpgZNgKTtcbiAgfVxuXG4gIGxvZ2dlci5lcnJvcign5omA5pyJ5rig6YGT5Z2H5LiN5Y+v55So77yM5Yib5bu66YKu566x5aSx6LSlJyk7XG4gIHJlcG9ydFRlbGVtZXRyeSgnZ2VuZXJhdGVfZW1haWwnLCAnJywgZmFsc2UsIDAsIGNoYW5uZWxzVHJpZWQsIGxhc3RFcnIpO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiDmnoTlu7rmuKDpgZPlsJ3or5Xpobrluo9cbiAqIOaMh+Wumua4oOmBk+aXtuS8mOWFiOWwneivleivpea4oOmBk++8jOWFtuS9mea4oOmBk+aJk+S5sei/veWKoFxuICog5pyq5oyH5a6a5pe25omT5Lmx5YWo6YOo5rig6YGTXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ2hhbm5lbE9yZGVyKHByZWZlcnJlZD86IENoYW5uZWwsIGFsbG93RmFsbGJhY2sgPSB0cnVlKTogQ2hhbm5lbFtdIHtcbiAgY29uc3Qgc2h1ZmZsZWQgPSBbLi4uYWxsQ2hhbm5lbHNdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG4gIGlmICghcHJlZmVycmVkKSB7XG4gICAgcmV0dXJuIHNodWZmbGVkO1xuICB9XG4gIGlmICghYWxsb3dGYWxsYmFjaykge1xuICAgIHJldHVybiBbcHJlZmVycmVkXTtcbiAgfVxuICBjb25zdCByZXN0ID0gc2h1ZmZsZWQuZmlsdGVyKGNoID0+IGNoICE9PSBwcmVmZXJyZWQpO1xuICByZXR1cm4gW3ByZWZlcnJlZCwgLi4ucmVzdF07XG59XG5cbi8qKlxuICog5Y2V5qyh5Yib5bu66YKu566x77yI5LiN5ZCr6YeN6K+V6YC76L6R77yJXG4gKiDmoLnmja7muKDpgZPnsbvlnovliIblj5HliLDlr7nlupTnmoQgcHJvdmlkZXIg5a6e546wXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWxPbmNlKGNoYW5uZWw6IENoYW5uZWwsIG9wdGlvbnM6IEdlbmVyYXRlRW1haWxPcHRpb25zKTogUHJvbWlzZTxJbnRlcm5hbEVtYWlsSW5mbz4ge1xuICBzd2l0Y2ggKGNoYW5uZWwpIHtcbiAgICBjYXNlICd0ZW1wbWFpbCc6XG4gICAgICByZXR1cm4gdGVtcG1haWwuZ2VuZXJhdGVFbWFpbChvcHRpb25zLmR1cmF0aW9uIHx8IDMwKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1jbic6XG4gICAgICByZXR1cm4gdGVtcG1haWxDbi5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZG9tYWluID8/IG51bGwpO1xuICAgIGNhc2UgJ3RtcG1haWxzJzpcbiAgICAgIHJldHVybiB0bXBtYWlscy5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZG9tYWluID8/IG51bGwpO1xuICAgIGNhc2UgJ3RhLWVhc3knOlxuICAgICAgcmV0dXJuIHRhRWFzeS5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnMTBtYWlsLXdhbmd0eic6XG4gICAgICByZXR1cm4gdGVubWFpbFdhbmd0ei5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZG9tYWluID8/IG51bGwpO1xuICAgIGNhc2UgJzEwbWludXRlLW9uZSc6XG4gICAgICByZXR1cm4gdGVubWludXRlT25lLmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gPz8gbnVsbCk7XG4gICAgY2FzZSAnbGluc2hpLWVtYWlsJzpcbiAgICAgIHJldHVybiBsaW5zaGlFbWFpbC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnbGluc2hpeW91JzpcbiAgICAgIHJldHVybiBsaW5zaGl5b3UuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ3RlbXBtYWlsLWxvbCc6XG4gICAgICByZXR1cm4gdGVtcG1haWxMb2wuZ2VuZXJhdGVFbWFpbChvcHRpb25zLmRvbWFpbiB8fCBudWxsKTtcbiAgICBjYXNlICdjaGF0Z3B0LW9yZy11ayc6XG4gICAgICByZXR1cm4gY2hhdGdwdE9yZ1VrLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICd0ZW1wLW1haWwtaW8nOlxuICAgICAgcmV0dXJuIHRlbXBNYWlsSU8uZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2F3YW1haWwnOlxuICAgICAgcmV0dXJuIGF3YW1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ3RlbXBvcmFyeS1lbWFpbC1vcmcnOlxuICAgICAgcmV0dXJuIHRlbXBvcmFyeUVtYWlsT3JnLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdtYWlsLXRtJzpcbiAgICAgIHJldHVybiBtYWlsVG0uZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2Ryb3BtYWlsJzpcbiAgICAgIHJldHVybiBkcm9wbWFpbC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnZ3VlcnJpbGxhbWFpbCc6XG4gICAgICByZXR1cm4gZ3VlcnJpbGxhbWFpbC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnbWFpbGRyb3AnOlxuICAgICAgcmV0dXJuIG1haWxkcm9wUHJvdmlkZXIuZ2VuZXJhdGVFbWFpbChvcHRpb25zLmRvbWFpbiA/PyBudWxsKTtcbiAgICBjYXNlICdzbWFpbC1wdyc6XG4gICAgICByZXR1cm4gc21haWxQdy5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnYm9vbWxpZnknOlxuICAgICAgcmV0dXJuIGJvb21saWZ5LmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdtZmZhYyc6XG4gICAgICByZXR1cm4gbWZmYWMuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ21pbm1haWwnOlxuICAgICAgcmV0dXJuIG1pbm1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ3ZpcC0yMTUnOlxuICAgICAgcmV0dXJuIHZpcDIxNS5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnYW5vbmJveCc6XG4gICAgICByZXR1cm4gYW5vbmJveC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnZmFrZS1sZWdhbCc6XG4gICAgICByZXR1cm4gZmFrZUxlZ2FsLmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gPz8gbnVsbCk7XG4gICAgY2FzZSAnbW9ha3QnOlxuICAgICAgcmV0dXJuIG1vYWt0LmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gPz8gbnVsbCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiDojrflj5bpgq7ku7bliJfooahcbiAqIENoYW5uZWwvRW1haWwvVG9rZW4g562J55SxIFNESyDku44gRW1haWxJbmZvIOS4reiHquWKqOiOt+WPlu+8jOeUqOaIt+aXoOmcgOaJi+WKqOS8oOmAklxuICpcbiAqIOmUmeivr+WkhOeQhuetlueVpe+8mlxuICogLSDnvZHnu5zplJnor6/jgIHotoXml7bjgIE0MjnjgIHmnI3liqHnq68gNXh4IOmUmeivryDihpIg6Ieq5Yqo6YeN6K+V77yI6buY6K6kIDIg5qyh77yJXG4gKiAtIOmHjeivleiAl+WwveWQjui/lOWbniB7IHN1Y2Nlc3M6IGZhbHNlLCBlbWFpbHM6IFtdIH3vvIzkuI3mipvlvILluLhcbiAqIC0g5Y+C5pWw5qCh6aqM6ZSZ6K+v77yI57y65bCRIEVtYWlsSW5mb++8ieebtOaOpeaKm+WHulxuICpcbiAqIEBwYXJhbSBpbmZvIC0gR2VuZXJhdGVFbWFpbCgpIOi/lOWbnueahOmCrueuseS/oeaBr1xuICogQHBhcmFtIG9wdGlvbnMgLSDlj6/pgInphY3nva7vvIjph43or5XnrYnvvIlcbiAqIEByZXR1cm5zIOmCruS7tue7k+aenO+8jOWMheWQqyBzdWNjZXNzIOagh+iusOWSjOmCruS7tuWIl+ihqFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgaW5mbyA9IGF3YWl0IGdlbmVyYXRlRW1haWwoeyBjaGFubmVsOiAnbWFpbC10bScgfSk7XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRFbWFpbHMoaW5mbyk7XG4gKiBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmVtYWlscy5sZW5ndGggPiAwKSB7XG4gKiAgIGNvbnNvbGUubG9nKCfmlLbliLDpgq7ku7Y6JywgcmVzdWx0LmVtYWlsc1swXS5zdWJqZWN0KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKGluZm86IEVtYWlsSW5mbywgb3B0aW9ucz86IEdldEVtYWlsc09wdGlvbnMpOiBQcm9taXNlPEdldEVtYWlsc1Jlc3VsdD4ge1xuICBpZiAoIWluZm8pIHtcbiAgICByZXBvcnRUZWxlbWV0cnkoJ2dldF9lbWFpbHMnLCAnJywgZmFsc2UsIDAsIDAsICdFbWFpbEluZm8gaXMgcmVxdWlyZWQsIGNhbGwgZ2VuZXJhdGVFbWFpbCgpIGZpcnN0Jyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbWFpbEluZm8gaXMgcmVxdWlyZWQsIGNhbGwgZ2VuZXJhdGVFbWFpbCgpIGZpcnN0Jyk7XG4gIH1cblxuICBjb25zdCB7IGNoYW5uZWwsIGVtYWlsIH0gPSBpbmZvO1xuICBjb25zdCB0b2tlbiA9IHRva2VuU3RvcmUuZ2V0KGluZm8pO1xuXG4gIGlmICghY2hhbm5lbCkge1xuICAgIHJlcG9ydFRlbGVtZXRyeSgnZ2V0X2VtYWlscycsICcnLCBmYWxzZSwgMCwgMCwgJ0NoYW5uZWwgaXMgcmVxdWlyZWQnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgaXMgcmVxdWlyZWQnKTtcbiAgfVxuICBpZiAoIWVtYWlsICYmIGNoYW5uZWwgIT09ICd0ZW1wbWFpbC1sb2wnKSB7XG4gICAgcmVwb3J0VGVsZW1ldHJ5KCdnZXRfZW1haWxzJywgY2hhbm5lbCwgZmFsc2UsIDAsIDAsICdFbWFpbCBpcyByZXF1aXJlZCcpO1xuICAgIHRocm93IG5ldyBFcnJvcignRW1haWwgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1Zyhg6I635Y+W6YKu5Lu2LCDmuKDpgZM6ICR7Y2hhbm5lbH0sIOmCrueusTogJHtlbWFpbH1gKTtcbiAgY29uc3QgZ3IgPSBhd2FpdCB3aXRoUmV0cnlXaXRoQXR0ZW1wdHMoKCkgPT4gZ2V0RW1haWxzT25jZShjaGFubmVsLCBlbWFpbCwgdG9rZW4pLCBvcHRpb25zPy5yZXRyeSk7XG4gIGlmIChnci5vaykge1xuICAgIGNvbnN0IGVtYWlscyA9IGdyLnZhbHVlO1xuICAgIGlmIChlbWFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYOiOt+WPluWIsCAke2VtYWlscy5sZW5ndGh9IOWwgemCruS7tiwg5rig6YGTOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5kZWJ1Zyhg5pqC5peg6YKu5Lu2LCDmuKDpgZM6ICR7Y2hhbm5lbH1gKTtcbiAgICB9XG4gICAgcmVwb3J0VGVsZW1ldHJ5KCdnZXRfZW1haWxzJywgY2hhbm5lbCwgdHJ1ZSwgZ3IuYXR0ZW1wdHMsIDAsICcnKTtcbiAgICByZXR1cm4geyBjaGFubmVsLCBlbWFpbCwgZW1haWxzLCBzdWNjZXNzOiB0cnVlIH07XG4gIH1cbiAgY29uc3QgZXJyID0gZ3IuZXJyb3IgYXMgYW55O1xuICBjb25zdCBlcnJNc2cgPSBlcnI/Lm1lc3NhZ2UgfHwgU3RyaW5nKGVycik7XG4gIC8qXG4gICAqIOmHjeivleiAl+WwveWQjuS7jeeEtuWksei0pSDihpIg6L+U5Zue56m657uT5p6c6ICM6Z2e5oqb5byC5bi4XG4gICAqIOi/meagt+iwg+eUqOaWueWcqOi9ruivouWcuuaZr+S4i+S4jeS8muWboOS4uuS4gOasoee9kee7nOazouWKqOiAjOS4reaWreaVtOS4qua1geeoi1xuICAgKi9cbiAgbG9nZ2VyLmVycm9yKGDojrflj5bpgq7ku7blpLHotKUsIOa4oOmBkzogJHtjaGFubmVsfSwg6ZSZ6K+vOiAke2Vyck1zZ31gKTtcbiAgcmVwb3J0VGVsZW1ldHJ5KCdnZXRfZW1haWxzJywgY2hhbm5lbCwgZmFsc2UsIGdyLmF0dGVtcHRzLCAwLCBlcnJNc2cpO1xuICByZXR1cm4geyBjaGFubmVsLCBlbWFpbCwgZW1haWxzOiBbXSwgc3VjY2VzczogZmFsc2UgfTtcbn1cblxuLyoqXG4gKiDljZXmrKHojrflj5bpgq7ku7bvvIjkuI3lkKvph43or5XpgLvovpHvvIlcbiAqIOagueaNrua4oOmBk+exu+Wei+WIhuWPkeWIsOWvueW6lOeahCBwcm92aWRlciDlrp7njrDvvIzlubbmoKHpqozlv4XpnIDnmoQgdG9rZW4g5Y+C5pWwXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEVtYWlsc09uY2UoY2hhbm5lbDogQ2hhbm5lbCwgZW1haWw6IHN0cmluZywgdG9rZW4/OiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgc3dpdGNoIChjaGFubmVsKSB7XG4gICAgY2FzZSAndGVtcG1haWwnOlxuICAgICAgcmV0dXJuIHRlbXBtYWlsLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAndGVtcG1haWwtY24nOlxuICAgICAgcmV0dXJuIHRlbXBtYWlsQ24uZ2V0RW1haWxzKGVtYWlsKTtcbiAgICBjYXNlICd0bXBtYWlscyc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciB0bXBtYWlscycpO1xuICAgICAgcmV0dXJuIHRtcG1haWxzLmdldEVtYWlscyhlbWFpbCwgdG9rZW4pO1xuICAgIGNhc2UgJ3RhLWVhc3knOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdGEtZWFzeScpO1xuICAgICAgcmV0dXJuIHRhRWFzeS5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICcxMG1haWwtd2FuZ3R6JzpcbiAgICAgIHJldHVybiB0ZW5tYWlsV2FuZ3R6LmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAnMTBtaW51dGUtb25lJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIDEwbWludXRlLW9uZScpO1xuICAgICAgcmV0dXJuIHRlbm1pbnV0ZU9uZS5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICdsaW5zaGktZW1haWwnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgbGluc2hpLWVtYWlsJyk7XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2V0RW1haWxzKGVtYWlsLCB0b2tlbik7XG4gICAgY2FzZSAnbGluc2hpeW91JzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGxpbnNoaXlvdScpO1xuICAgICAgcmV0dXJuIGxpbnNoaXlvdS5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sb2wnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdGVtcG1haWwtbG9sJyk7XG4gICAgICByZXR1cm4gdGVtcG1haWxMb2wuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnY2hhdGdwdC1vcmctdWsnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgY2hhdGdwdC1vcmctdWsnKTtcbiAgICAgIHJldHVybiBjaGF0Z3B0T3JnVWsuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAndGVtcC1tYWlsLWlvJzpcbiAgICAgIHJldHVybiB0ZW1wTWFpbElPLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAnYXdhbWFpbCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBhd2FtYWlsJyk7XG4gICAgICByZXR1cm4gYXdhbWFpbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wb3JhcnktZW1haWwtb3JnJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIHRlbXBvcmFyeS1lbWFpbC1vcmcnKTtcbiAgICAgIHJldHVybiB0ZW1wb3JhcnlFbWFpbE9yZy5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICdtYWlsLXRtJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1haWwtdG0nKTtcbiAgICAgIHJldHVybiBtYWlsVG0uZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnbWFpbC1jeCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBtYWlsLWN4Jyk7XG4gICAgICByZXR1cm4gbWFpbEN4LmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ2Ryb3BtYWlsJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGRyb3BtYWlsJyk7XG4gICAgICByZXR1cm4gZHJvcG1haWwuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnZ3VlcnJpbGxhbWFpbCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBndWVycmlsbGFtYWlsJyk7XG4gICAgICByZXR1cm4gZ3VlcnJpbGxhbWFpbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdtYWlsZHJvcCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBtYWlsZHJvcCcpO1xuICAgICAgcmV0dXJuIG1haWxkcm9wUHJvdmlkZXIuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnc21haWwtcHcnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3Igc21haWwtcHcnKTtcbiAgICAgIHJldHVybiBzbWFpbFB3LmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ2Jvb21saWZ5JzpcbiAgICAgIHJldHVybiBib29tbGlmeS5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ21mZmFjJzpcbiAgICAgIHJldHVybiBtZmZhYy5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICdtaW5tYWlsJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1pbm1haWwnKTtcbiAgICAgIHJldHVybiBtaW5tYWlsLmdldEVtYWlscyhlbWFpbCwgdG9rZW4pO1xuICAgIGNhc2UgJ3ZpcC0yMTUnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdmlwLTIxNScpO1xuICAgICAgcmV0dXJuIHZpcDIxNS5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdhbm9uYm94JzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGFub25ib3gnKTtcbiAgICAgIHJldHVybiBhbm9uYm94LmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ2Zha2UtbGVnYWwnOlxuICAgICAgcmV0dXJuIGZha2VMZWdhbC5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ21vYWt0JzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1vYWt0Jyk7XG4gICAgICByZXR1cm4gbW9ha3QuZ2V0RW1haWxzKGVtYWlsLCB0b2tlbik7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiDkuLTml7bpgq7nrrHlrqLmiLfnq69cbiAqIOWwgeijheS6humCrueuseWIm+W7uuWSjOmCruS7tuiOt+WPlueahOWujOaVtOa1geeoi++8jOiHquWKqOeuoeeQhumCrueuseS/oeaBr+WSjOiupOivgeS7pOeJjFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgY2xpZW50ID0gbmV3IFRlbXBFbWFpbENsaWVudCgpO1xuICogY29uc3QgZW1haWxJbmZvID0gYXdhaXQgY2xpZW50LmdlbmVyYXRlKHsgY2hhbm5lbDogJ21haWwtdG0nIH0pO1xuICogY29uc29sZS5sb2coJ+mCrueusTonLCBlbWFpbEluZm8uZW1haWwpO1xuICpcbiAqIC8vIOi9ruivouiOt+WPlumCruS7tlxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LmdldEVtYWlscygpO1xuICogaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gKiAgIGNvbnNvbGUubG9nKCfpgq7ku7bmlbA6JywgcmVzdWx0LmVtYWlscy5sZW5ndGgpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wRW1haWxDbGllbnQge1xuICBwcml2YXRlIGVtYWlsSW5mbzogRW1haWxJbmZvIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIOWIm+W7uuS4tOaXtumCrueuseW5tue8k+WtmOmCrueuseS/oeaBr1xuICAgKiDlkI7nu63osIPnlKggZ2V0RW1haWxzKCkg5pe26Ieq5Yqo5L2/55So5q2k6YKu566x55qE5rig6YGT44CB5Zyw5Z2A5ZKM5Luk54mMXG4gICAqIOaJgOaciea4oOmBk+Wdh+S4jeWPr+eUqOaXtui/lOWbniBudWxsXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZShvcHRpb25zOiBHZW5lcmF0ZUVtYWlsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFbWFpbEluZm8gfCBudWxsPiB7XG4gICAgdGhpcy5lbWFpbEluZm8gPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmVtYWlsSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3pgq7nrrHnmoTpgq7ku7bliJfooahcbiAgICog5b+F6aG75YWI6LCD55SoIGdlbmVyYXRlKCkg5Yib5bu66YKu566xXG4gICAqXG4gICAqIEB0aHJvd3Mg5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe25oqb5Ye65byC5bi4XG4gICAqL1xuICBhc3luYyBnZXRFbWFpbHMob3B0aW9ucz86IEdldEVtYWlsc09wdGlvbnMpOiBQcm9taXNlPEdldEVtYWlsc1Jlc3VsdD4ge1xuICAgIGlmICghdGhpcy5lbWFpbEluZm8pIHtcbiAgICAgIHJlcG9ydFRlbGVtZXRyeSgnZ2V0X2VtYWlscycsICcnLCBmYWxzZSwgMCwgMCwgJ05vIGVtYWlsIGdlbmVyYXRlZC4gQ2FsbCBnZW5lcmF0ZSgpIGZpcnN0LicpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBlbWFpbCBnZW5lcmF0ZWQuIENhbGwgZ2VuZXJhdGUoKSBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RW1haWxzKHRoaXMuZW1haWxJbmZvLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3nvJPlrZjnmoTpgq7nrrHkv6Hmga9cbiAgICog5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe26L+U5ZueIG51bGxcbiAgICovXG4gIGdldEVtYWlsSW5mbygpOiBFbWFpbEluZm8gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbWFpbEluZm87XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBsaXN0Q2hhbm5lbHMsXG4gIGdldENoYW5uZWxJbmZvLFxuICBnZW5lcmF0ZUVtYWlsLFxuICBnZXRFbWFpbHMsXG4gIFRlbXBFbWFpbENsaWVudCxcbiAgc2V0Q29uZmlnLFxuICBnZXRDb25maWcsXG59O1xuIl19
|
|
515
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUhBLG9DQUVDO0FBUUQsd0NBRUM7QUFvQkQsc0NBd0NDO0FBd0dELDhCQXVDQztBQXhVRCwrREFBaUQ7QUFDakQsb0VBQXNEO0FBQ3RELCtEQUFpRDtBQUNqRCxpRUFBbUQ7QUFDbkQsNERBQThDO0FBQzlDLHlFQUEyRDtBQUMzRCxzRUFBd0Q7QUFDeEQsaUVBQW1EO0FBQ25ELHlEQUEyQztBQUMzQyxzRUFBd0Q7QUFDeEQseUVBQTJEO0FBQzNELHFFQUF1RDtBQUN2RCw2REFBK0M7QUFDL0MsbUZBQXFFO0FBQ3JFLDREQUE4QztBQUM5Qyw0REFBOEM7QUFDOUMsK0RBQWlEO0FBQ2pELHlFQUEyRDtBQUMzRCx1RUFBeUQ7QUFDekQsOERBQWdEO0FBQ2hELCtEQUFpRDtBQUNqRCw2REFBK0M7QUFDL0MsNERBQThDO0FBQzlDLDZEQUErQztBQUMvQyxrRUFBb0Q7QUFDcEQseURBQTJDO0FBQzNDLHVFQUF5RDtBQUV6RCxtQ0FBMkQ7QUFDM0QsMkNBQThDO0FBQzlDLHFDQUFrQztBQUNsQyxxQ0FBZ0Q7QUFJaEQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUNwRCx5Q0FBNkM7QUFBcEMsMkdBQUEsY0FBYyxPQUFBO0FBQ3ZCLGlDQUEyRjtBQUFsRixrR0FBQSxTQUFTLE9BQUE7QUFBRSw4R0FBQSxxQkFBcUIsT0FBQTtBQUFFLHlHQUFBLGdCQUFnQixPQUFBO0FBRTNELG1DQUE2RjtBQUFwRixrR0FBQSxRQUFRLE9BQUE7QUFBYyxxR0FBQSxXQUFXLE9BQUE7QUFBRSxxR0FBQSxXQUFXLE9BQUE7QUFBRSxtR0FBQSxTQUFTLE9BQUE7QUFBRSxnR0FBQSxNQUFNLE9BQUE7QUFDMUUsbUNBQTJEO0FBQXZDLG1H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LGVBQWU7SUFBNUI7UUFDVSxjQUFTLEdBQXFCLElBQUksQ0FBQztJQWtDN0MsQ0FBQztJQWhDQzs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFnQyxFQUFFO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBMEI7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixJQUFBLDJCQUFlLEVBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzdGLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUFuQ0QsMENBbUNDO0FBRUQsa0JBQWU7SUFDYixZQUFZO0lBQ1osY0FBYztJQUNkLGFBQWE7SUFDYixTQUFTO0lBQ1QsZUFBZTtJQUNmLFNBQVMsRUFBVCxrQkFBUztJQUNULFNBQVMsRUFBVCxrQkFBUztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0ZW1wbWFpbCBmcm9tICcuL3Byb3ZpZGVycy90ZW1wbWFpbCc7XG5pbXBvcnQgKiBhcyB0ZW1wbWFpbENuIGZyb20gJy4vcHJvdmlkZXJzL3RlbXBtYWlsLWNuJztcbmltcG9ydCAqIGFzIHRtcG1haWxzIGZyb20gJy4vcHJvdmlkZXJzL3RtcG1haWxzJztcbmltcG9ydCAqIGFzIHRlbXBtYWlsZyBmcm9tICcuL3Byb3ZpZGVycy90ZW1wbWFpbGcnO1xuaW1wb3J0ICogYXMgdGFFYXN5IGZyb20gJy4vcHJvdmlkZXJzL3RhLWVhc3knO1xuaW1wb3J0ICogYXMgdGVubWFpbFdhbmd0eiBmcm9tICcuL3Byb3ZpZGVycy8xMG1haWwtd2FuZ3R6JztcbmltcG9ydCAqIGFzIGxpbnNoaUVtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2xpbnNoaS1lbWFpbCc7XG5pbXBvcnQgKiBhcyBsaW5zaGl5b3UgZnJvbSAnLi9wcm92aWRlcnMvbGluc2hpeW91JztcbmltcG9ydCAqIGFzIG1mZmFjIGZyb20gJy4vcHJvdmlkZXJzL21mZmFjJztcbmltcG9ydCAqIGFzIHRlbXBtYWlsTG9sIGZyb20gJy4vcHJvdmlkZXJzL3RlbXBtYWlsLWxvbCc7XG5pbXBvcnQgKiBhcyBjaGF0Z3B0T3JnVWsgZnJvbSAnLi9wcm92aWRlcnMvY2hhdGdwdC1vcmctdWsnO1xuaW1wb3J0ICogYXMgdGVtcE1haWxJTyBmcm9tICcuL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8nO1xuaW1wb3J0ICogYXMgYXdhbWFpbCBmcm9tICcuL3Byb3ZpZGVycy9hd2FtYWlsJztcbmltcG9ydCAqIGFzIHRlbXBvcmFyeUVtYWlsT3JnIGZyb20gJy4vcHJvdmlkZXJzL3RlbXBvcmFyeS1lbWFpbC1vcmcnO1xuaW1wb3J0ICogYXMgbWFpbFRtIGZyb20gJy4vcHJvdmlkZXJzL21haWwtdG0nO1xuaW1wb3J0ICogYXMgbWFpbEN4IGZyb20gJy4vcHJvdmlkZXJzL21haWwtY3gnO1xuaW1wb3J0ICogYXMgZHJvcG1haWwgZnJvbSAnLi9wcm92aWRlcnMvZHJvcG1haWwnO1xuaW1wb3J0ICogYXMgZ3VlcnJpbGxhbWFpbCBmcm9tICcuL3Byb3ZpZGVycy9ndWVycmlsbGFtYWlsJztcbmltcG9ydCAqIGFzIG1haWxkcm9wUHJvdmlkZXIgZnJvbSAnLi9wcm92aWRlcnMvbWFpbGRyb3AnO1xuaW1wb3J0ICogYXMgc21haWxQdyBmcm9tICcuL3Byb3ZpZGVycy9zbWFpbC1wdyc7XG5pbXBvcnQgKiBhcyBib29tbGlmeSBmcm9tICcuL3Byb3ZpZGVycy9ib29tbGlmeSc7XG5pbXBvcnQgKiBhcyBtaW5tYWlsIGZyb20gJy4vcHJvdmlkZXJzL21pbm1haWwnO1xuaW1wb3J0ICogYXMgdmlwMjE1IGZyb20gJy4vcHJvdmlkZXJzL3ZpcC0yMTUnO1xuaW1wb3J0ICogYXMgYW5vbmJveCBmcm9tICcuL3Byb3ZpZGVycy9hbm9uYm94JztcbmltcG9ydCAqIGFzIGZha2VMZWdhbCBmcm9tICcuL3Byb3ZpZGVycy9mYWtlLWxlZ2FsJztcbmltcG9ydCAqIGFzIG1vYWt0IGZyb20gJy4vcHJvdmlkZXJzL21vYWt0JztcbmltcG9ydCAqIGFzIHRlbm1pbnV0ZU9uZSBmcm9tICcuL3Byb3ZpZGVycy8xMG1pbnV0ZS1vbmUnO1xuaW1wb3J0IHsgQ2hhbm5lbCwgRW1haWxJbmZvLCBJbnRlcm5hbEVtYWlsSW5mbywgRW1haWwsIEdldEVtYWlsc1Jlc3VsdCwgR2VuZXJhdGVFbWFpbE9wdGlvbnMsIEdldEVtYWlsc09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHdpdGhSZXRyeSwgd2l0aFJldHJ5V2l0aEF0dGVtcHRzIH0gZnJvbSAnLi9yZXRyeSc7XG5pbXBvcnQgeyByZXBvcnRUZWxlbWV0cnkgfSBmcm9tICcuL3RlbGVtZXRyeSc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBzZXRDb25maWcsIGdldENvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IHsgQ2hhbm5lbCwgRW1haWxJbmZvLCBFbWFpbCwgRW1haWxBdHRhY2htZW50LCBHZXRFbWFpbHNSZXN1bHQsIEdlbmVyYXRlRW1haWxPcHRpb25zLCBHZXRFbWFpbHNPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU0RLIOWGhemDqCB0b2tlbiDlrZjlgqhcbiAqIOS9v+eUqCBXZWFrTWFwIOWwhiBFbWFpbEluZm8g5a+56LGh5pig5bCE5Yiw5a+55bqU55qEIHRva2VuXG4gKiDnlKjmiLfml6Dms5Xnm7TmjqXorr/pl64gdG9rZW7vvIznlLEgU0RLIOiHquWKqOeuoeeQhlxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IHRva2VuU3RvcmUgPSBuZXcgV2Vha01hcDxFbWFpbEluZm8sIHN0cmluZz4oKTtcbmV4cG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi9ub3JtYWxpemUnO1xuZXhwb3J0IHsgd2l0aFJldHJ5LCB3aXRoUmV0cnlXaXRoQXR0ZW1wdHMsIGZldGNoV2l0aFRpbWVvdXQsIFJldHJ5T3B0aW9ucyB9IGZyb20gJy4vcmV0cnknO1xuZXhwb3J0IHR5cGUgeyBSZXRyeVdpdGhBdHRlbXB0c1Jlc3VsdCwgRmV0Y2hXaXRoVGltZW91dE9wdGlvbnMgfSBmcm9tICcuL3JldHJ5JztcbmV4cG9ydCB7IExvZ0xldmVsLCBMb2dIYW5kbGVyLCBzZXRMb2dMZXZlbCwgZ2V0TG9nTGV2ZWwsIHNldExvZ2dlciwgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuZXhwb3J0IHsgU0RLQ29uZmlnLCBzZXRDb25maWcsIGdldENvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCB7IGdldFNka1ZlcnNpb24gfSBmcm9tICcuL3ZlcnNpb24nO1xuZXhwb3J0IHR5cGUgeyBTeW50aGV0aWNCcm93c2VyUHJvZmlsZSB9IGZyb20gJy4vcHJvdmlkZXJzL2xpbnNoaS10b2tlbic7XG5leHBvcnQge1xuICBkZXJpdmVMaW5zaGlBcGlQYXRoS2V5LFxuICByYW5kb21TeW50aGV0aWNMaW5zaGlLZXksXG4gIHJhbmRvbUJyb3dzZXJMaWtlUHJvZmlsZSxcbiAgc3ludGhldGljVmlzaXRvcklkRnJvbVByb2ZpbGUsXG59IGZyb20gJy4vcHJvdmlkZXJzL2xpbnNoaS10b2tlbic7XG5cbi8qKiDmiYDmnInmlK/mjIHnmoTmuKDpgZPliJfooajvvIznlKjkuo7pmo/mnLrpgInmi6nlkozpgY3ljoYgKi9cbmNvbnN0IGFsbENoYW5uZWxzOiBDaGFubmVsW10gPSBbJ3RlbXBtYWlsJywgJ3RlbXBtYWlsLWNuJywgJ3RtcG1haWxzJywgJ3RlbXBtYWlsZycsICd0YS1lYXN5JywgJzEwbWFpbC13YW5ndHonLCAnMTBtaW51dGUtb25lJywgJ2xpbnNoaS1lbWFpbCcsICdsaW5zaGl5b3UnLCAnbWZmYWMnLCAndGVtcG1haWwtbG9sJywgJ2NoYXRncHQtb3JnLXVrJywgJ3RlbXAtbWFpbC1pbycsICdhd2FtYWlsJywgJ3RlbXBvcmFyeS1lbWFpbC1vcmcnLCAnbWFpbC10bScsICdtYWlsLWN4JywgJ2Ryb3BtYWlsJywgJ2d1ZXJyaWxsYW1haWwnLCAnbWFpbGRyb3AnLCAnc21haWwtcHcnLCAnYm9vbWxpZnknLCAnbWlubWFpbCcsICd2aXAtMjE1JywgJ2Fub25ib3gnLCAnZmFrZS1sZWdhbCcsICdtb2FrdCddO1xuXG4vKipcbiAqIOa4oOmBk+S/oeaBr++8jOWMheWQq+a4oOmBk+agh+ivhuOAgeaYvuekuuWQjeensOWSjOWvueW6lOe9keermVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWxJbmZvIHtcbiAgLyoqIOa4oOmBk+agh+ivhiAqL1xuICBjaGFubmVsOiBDaGFubmVsO1xuICAvKiog5rig6YGT5pi+56S65ZCN56ewICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIOWvueW6lOeahOS4tOaXtumCrueuseacjeWKoee9keermSAqL1xuICB3ZWJzaXRlOiBzdHJpbmc7XG59XG5cbi8qKiDmuKDpgZPkv6Hmga/mmKDlsITooaggKi9cbmNvbnN0IGNoYW5uZWxJbmZvTWFwOiBSZWNvcmQ8Q2hhbm5lbCwgQ2hhbm5lbEluZm8+ID0ge1xuICAndGVtcG1haWwnOiB7IGNoYW5uZWw6ICd0ZW1wbWFpbCcsIG5hbWU6ICdUZW1wTWFpbCcsIHdlYnNpdGU6ICd0ZW1wbWFpbC5pbmcnIH0sXG4gICd0ZW1wbWFpbC1jbic6IHsgY2hhbm5lbDogJ3RlbXBtYWlsLWNuJywgbmFtZTogJ1RlbXBNYWlsIENOJywgd2Vic2l0ZTogJ3RlbXBtYWlsLmNuJyB9LFxuICAndG1wbWFpbHMnOiB7IGNoYW5uZWw6ICd0bXBtYWlscycsIG5hbWU6ICdUbXBNYWlscycsIHdlYnNpdGU6ICd0bXBtYWlscy5jb20nIH0sXG4gICd0ZW1wbWFpbGcnOiB7IGNoYW5uZWw6ICd0ZW1wbWFpbGcnLCBuYW1lOiAnVGVtcE1haWxHJywgd2Vic2l0ZTogJ3RlbXBtYWlsZy5jb20nIH0sXG4gICd0YS1lYXN5JzogeyBjaGFubmVsOiAndGEtZWFzeScsIG5hbWU6ICdUQSBFYXN5Jywgd2Vic2l0ZTogJ3RhLWVhc3kuY29tJyB9LFxuICAnMTBtYWlsLXdhbmd0eic6IHsgY2hhbm5lbDogJzEwbWFpbC13YW5ndHonLCBuYW1lOiAnMTBtYWlsIFdhbmd0eicsIHdlYnNpdGU6ICcxMG1haWwud2FuZ3R6LmNuJyB9LFxuICAnMTBtaW51dGUtb25lJzogeyBjaGFubmVsOiAnMTBtaW51dGUtb25lJywgbmFtZTogJzEwIE1pbnV0ZSBFbWFpbCcsIHdlYnNpdGU6ICcxMG1pbnV0ZW1haWwub25lJyB9LFxuICAnbGluc2hpLWVtYWlsJzogeyBjaGFubmVsOiAnbGluc2hpLWVtYWlsJywgbmFtZTogJ+S4tOaXtumCrueusScsIHdlYnNpdGU6ICdsaW5zaGktZW1haWwuY29tJyB9LFxuICAnbGluc2hpeW91JzogeyBjaGFubmVsOiAnbGluc2hpeW91JywgbmFtZTogJ+S4tOaXtumCricsIHdlYnNpdGU6ICdsaW5zaGl5b3UuY29tJyB9LFxuICAndGVtcG1haWwtbG9sJzogeyBjaGFubmVsOiAndGVtcG1haWwtbG9sJywgbmFtZTogJ1RlbXBNYWlsIExPTCcsIHdlYnNpdGU6ICd0ZW1wbWFpbC5sb2wnIH0sXG4gICdjaGF0Z3B0LW9yZy11ayc6IHsgY2hhbm5lbDogJ2NoYXRncHQtb3JnLXVrJywgbmFtZTogJ0NoYXRHUFQgTWFpbCcsIHdlYnNpdGU6ICdtYWlsLmNoYXRncHQub3JnLnVrJyB9LFxuICAndGVtcC1tYWlsLWlvJzogeyBjaGFubmVsOiAndGVtcC1tYWlsLWlvJywgbmFtZTogJ1RlbXAgTWFpbCBJTycsIHdlYnNpdGU6ICd0ZW1wLW1haWwuaW8nIH0sXG4gICdhd2FtYWlsJzogeyBjaGFubmVsOiAnYXdhbWFpbCcsIG5hbWU6ICdBd2FNYWlsJywgd2Vic2l0ZTogJ2F3YW1haWwuY29tJyB9LFxuICAndGVtcG9yYXJ5LWVtYWlsLW9yZyc6IHsgY2hhbm5lbDogJ3RlbXBvcmFyeS1lbWFpbC1vcmcnLCBuYW1lOiAnVGVtcG9yYXJ5IEVtYWlsJywgd2Vic2l0ZTogJ3RlbXBvcmFyeS1lbWFpbC5vcmcnIH0sXG4gICdtYWlsLXRtJzogeyBjaGFubmVsOiAnbWFpbC10bScsIG5hbWU6ICdNYWlsLnRtJywgd2Vic2l0ZTogJ21haWwudG0nIH0sXG4gICdtYWlsLWN4JzogeyBjaGFubmVsOiAnbWFpbC1jeCcsIG5hbWU6ICdNYWlsLmN4Jywgd2Vic2l0ZTogJ21haWwuY3gnIH0sXG4gICdkcm9wbWFpbCc6IHsgY2hhbm5lbDogJ2Ryb3BtYWlsJywgbmFtZTogJ0Ryb3BNYWlsJywgd2Vic2l0ZTogJ2Ryb3BtYWlsLm1lJyB9LFxuICAnZ3VlcnJpbGxhbWFpbCc6IHsgY2hhbm5lbDogJ2d1ZXJyaWxsYW1haWwnLCBuYW1lOiAnR3VlcnJpbGxhIE1haWwnLCB3ZWJzaXRlOiAnZ3VlcnJpbGxhbWFpbC5jb20nIH0sXG4gICdtYWlsZHJvcCc6IHsgY2hhbm5lbDogJ21haWxkcm9wJywgbmFtZTogJ01haWxkcm9wJywgd2Vic2l0ZTogJ21haWxkcm9wLmN4JyB9LFxuICAnc21haWwtcHcnOiB7IGNoYW5uZWw6ICdzbWFpbC1wdycsIG5hbWU6ICdTbWFpbC5wdycsIHdlYnNpdGU6ICdzbWFpbC5wdycgfSxcbiAgJ2Jvb21saWZ5JzogeyBjaGFubmVsOiAnYm9vbWxpZnknLCBuYW1lOiAnQm9vbWxpZnknLCB3ZWJzaXRlOiAnYm9vbWxpZnkuY29tJyB9LFxuICAnbWlubWFpbCc6IHsgY2hhbm5lbDogJ21pbm1haWwnLCBuYW1lOiAnTWluTWFpbCcsIHdlYnNpdGU6ICdtaW5tYWlsLmFwcCcgfSxcbiAgJ21mZmFjJzogeyBjaGFubmVsOiAnbWZmYWMnLCBuYW1lOiAnTUZGQUMnLCB3ZWJzaXRlOiAnbWZmYWMuY29tJyB9LFxuICAndmlwLTIxNSc6IHsgY2hhbm5lbDogJ3ZpcC0yMTUnLCBuYW1lOiAnVklQIDIxNScsIHdlYnNpdGU6ICd2aXAuMjE1LmltJyB9LFxuICAnYW5vbmJveCc6IHsgY2hhbm5lbDogJ2Fub25ib3gnLCBuYW1lOiAnQW5vbmJveCcsIHdlYnNpdGU6ICdhbm9uYm94Lm5ldCcgfSxcbiAgJ2Zha2UtbGVnYWwnOiB7IGNoYW5uZWw6ICdmYWtlLWxlZ2FsJywgbmFtZTogJ0Zha2UgTGVnYWwnLCB3ZWJzaXRlOiAnZmFrZS5sZWdhbCcgfSxcbiAgJ21vYWt0JzogeyBjaGFubmVsOiAnbW9ha3QnLCBuYW1lOiAnTW9ha3QnLCB3ZWJzaXRlOiAnbW9ha3QuY29tJyB9LFxufTtcblxuLyoqXG4gKiDojrflj5bmiYDmnInmlK/mjIHnmoTmuKDpgZPliJfooahcbiAqXG4gKiBAcmV0dXJucyDmiYDmnInmuKDpgZPnmoTkv6Hmga/mlbDnu4RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNoYW5uZWxzID0gbGlzdENoYW5uZWxzKCk7XG4gKiBjaGFubmVscy5mb3JFYWNoKGNoID0+IGNvbnNvbGUubG9nKGAke2NoLm5hbWV9ICgke2NoLndlYnNpdGV9KWApKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdENoYW5uZWxzKCk6IENoYW5uZWxJbmZvW10ge1xuICByZXR1cm4gYWxsQ2hhbm5lbHMubWFwKGNoID0+IGNoYW5uZWxJbmZvTWFwW2NoXSk7XG59XG5cbi8qKlxuICog6I635Y+W5oyH5a6a5rig6YGT55qE6K+m57uG5L+h5oGvXG4gKlxuICogQHBhcmFtIGNoYW5uZWwgLSDmuKDpgZPmoIfor4ZcbiAqIEByZXR1cm5zIOa4oOmBk+S/oeaBr++8jOS4jeWtmOWcqOaXtui/lOWbniB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYW5uZWxJbmZvKGNoYW5uZWw6IENoYW5uZWwpOiBDaGFubmVsSW5mbyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjaGFubmVsSW5mb01hcFtjaGFubmVsXTtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqXG4gKiDplJnor6/lpITnkIbnrZbnlaXvvJpcbiAqIC0g5oyH5a6a5rig6YGT5aSx6LSl5pe277yM6buY6K6k6Ieq5Yqo5bCd6K+V5YW25LuW5Y+v55So5rig6YGT77yI5omT5Lmx6aG65bqP6YCQ5Liq5bCd6K+V77yJXG4gKiAtIGBjaGFubmVsRmFsbGJhY2s6IGZhbHNlYCDkuJTmjIflrprkuoYgYGNoYW5uZWxgIOaXtu+8jOS7heWwneivleivpea4oOmBk++8jOWksei0peWNs+i/lOWbniBudWxsXG4gKiAtIOacquaMh+Wumua4oOmBk+aXtu+8jOaJk+S5seWFqOmDqOa4oOmBk+mAkOS4quWwneivle+8jOebtOWIsOaIkOWKn1xuICogLSDmiYDmnInmuKDpgZPlnYfkuI3lj6/nlKjml7bov5Tlm54gbnVsbO+8iOS4jeaKm+WHuuW8guW4uO+8iVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0g5Yib5bu66YCJ6aG577yM5Y+v5oyH5a6a5rig6YGT44CB5pyJ5pWI5pe26ZW/44CB5Z+f5ZCN562JXG4gKiBAcmV0dXJucyDpgq7nrrHkv6Hmga/vvIzmiYDmnInmuKDpgZPlnYfkuI3lj6/nlKjml7bov5Tlm54gbnVsbFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgZW1haWxJbmZvID0gYXdhaXQgZ2VuZXJhdGVFbWFpbCh7IGNoYW5uZWw6ICd0ZW1wLW1haWwtaW8nIH0pO1xuICogaWYgKGVtYWlsSW5mbykgY29uc29sZS5sb2coZW1haWxJbmZvLmVtYWlsKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbChvcHRpb25zOiBHZW5lcmF0ZUVtYWlsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFbWFpbEluZm8gfCBudWxsPiB7XG4gIC8qXG4gICAqIOaehOW7uuWwneivlemhuuW6j++8mlxuICAgKiAtIOaMh+Wumua4oOmBkyDihpIg5LyY5YWI5bCd6K+V6K+l5rig6YGT77yM5aSx6LSl5ZCO6ZqP5py65bCd6K+V5YW25LuW5rig6YGTXG4gICAqIC0g5pyq5oyH5a6aIOKGkiDmiZPkubHlhajpg6jmuKDpgZPpgJDkuKrlsJ3or5VcbiAgICovXG4gIGNvbnN0IGFsbG93RmFsbGJhY2sgPSBvcHRpb25zLmNoYW5uZWxGYWxsYmFjayAhPT0gZmFsc2U7XG4gIGNvbnN0IHRyeU9yZGVyID0gYnVpbGRDaGFubmVsT3JkZXIob3B0aW9ucy5jaGFubmVsLCBhbGxvd0ZhbGxiYWNrKTtcblxuICBsZXQgY2hhbm5lbHNUcmllZCA9IDA7XG4gIGxldCBsYXN0RXJyID0gJyc7XG4gIGZvciAoY29uc3QgY2ggb2YgdHJ5T3JkZXIpIHtcbiAgICBjaGFubmVsc1RyaWVkICs9IDE7XG4gICAgbG9nZ2VyLmluZm8oYOWIm+W7uuS4tOaXtumCrueusSwg5rig6YGTOiAke2NofWApO1xuICAgIGNvbnN0IHIgPSBhd2FpdCB3aXRoUmV0cnlXaXRoQXR0ZW1wdHMoKCkgPT4gZ2VuZXJhdGVFbWFpbE9uY2UoY2gsIG9wdGlvbnMpLCBvcHRpb25zLnJldHJ5KTtcbiAgICBpZiAoci5vaykge1xuICAgICAgY29uc3QgaW50ZXJuYWwgPSByLnZhbHVlO1xuICAgICAgbG9nZ2VyLmluZm8oYOmCrueuseWIm+W7uuaIkOWKnzogJHtpbnRlcm5hbC5lbWFpbH0gKOa4oOmBkzogJHtjaH0pYCk7XG4gICAgICByZXBvcnRUZWxlbWV0cnkoJ2dlbmVyYXRlX2VtYWlsJywgY2gsIHRydWUsIHIuYXR0ZW1wdHMsIGNoYW5uZWxzVHJpZWQsICcnKTtcblxuICAgICAgLyog5bCGIHRva2VuIOWtmOWFpeWGhemDqOWtmOWCqO+8jOS4jeaatOmcsue7meeUqOaItyAqL1xuICAgICAgY29uc3QgcHVibGljSW5mbzogRW1haWxJbmZvID0ge1xuICAgICAgICBjaGFubmVsOiBpbnRlcm5hbC5jaGFubmVsLFxuICAgICAgICBlbWFpbDogaW50ZXJuYWwuZW1haWwsXG4gICAgICAgIGV4cGlyZXNBdDogaW50ZXJuYWwuZXhwaXJlc0F0LFxuICAgICAgICBjcmVhdGVkQXQ6IGludGVybmFsLmNyZWF0ZWRBdCxcbiAgICAgIH07XG4gICAgICBpZiAoaW50ZXJuYWwudG9rZW4pIHtcbiAgICAgICAgdG9rZW5TdG9yZS5zZXQocHVibGljSW5mbywgaW50ZXJuYWwudG9rZW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHB1YmxpY0luZm87XG4gICAgfVxuICAgIGNvbnN0IG1zZyA9IChyLmVycm9yIGFzIGFueSk/Lm1lc3NhZ2UgfHwgU3RyaW5nKHIuZXJyb3IpO1xuICAgIGxhc3RFcnIgPSBtc2c7XG4gICAgbG9nZ2VyLndhcm4oYOa4oOmBkyAke2NofSDkuI3lj6/nlKg6ICR7bXNnfe+8jOWwneivleS4i+S4gOS4qua4oOmBk2ApO1xuICB9XG5cbiAgbG9nZ2VyLmVycm9yKCfmiYDmnInmuKDpgZPlnYfkuI3lj6/nlKjvvIzliJvlu7rpgq7nrrHlpLHotKUnKTtcbiAgcmVwb3J0VGVsZW1ldHJ5KCdnZW5lcmF0ZV9lbWFpbCcsICcnLCBmYWxzZSwgMCwgY2hhbm5lbHNUcmllZCwgbGFzdEVycik7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIOaehOW7uua4oOmBk+WwneivlemhuuW6j1xuICog5oyH5a6a5rig6YGT5pe25LyY5YWI5bCd6K+V6K+l5rig6YGT77yM5YW25L2Z5rig6YGT5omT5Lmx6L+95YqgXG4gKiDmnKrmjIflrprml7bmiZPkubHlhajpg6jmuKDpgZNcbiAqL1xuZnVuY3Rpb24gYnVpbGRDaGFubmVsT3JkZXIocHJlZmVycmVkPzogQ2hhbm5lbCwgYWxsb3dGYWxsYmFjayA9IHRydWUpOiBDaGFubmVsW10ge1xuICBjb25zdCBzaHVmZmxlZCA9IFsuLi5hbGxDaGFubmVsc10uc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KTtcbiAgaWYgKCFwcmVmZXJyZWQpIHtcbiAgICByZXR1cm4gc2h1ZmZsZWQ7XG4gIH1cbiAgaWYgKCFhbGxvd0ZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIFtwcmVmZXJyZWRdO1xuICB9XG4gIGNvbnN0IHJlc3QgPSBzaHVmZmxlZC5maWx0ZXIoY2ggPT4gY2ggIT09IHByZWZlcnJlZCk7XG4gIHJldHVybiBbcHJlZmVycmVkLCAuLi5yZXN0XTtcbn1cblxuLyoqXG4gKiDljZXmrKHliJvlu7rpgq7nrrHvvIjkuI3lkKvph43or5XpgLvovpHvvIlcbiAqIOagueaNrua4oOmBk+exu+Wei+WIhuWPkeWIsOWvueW6lOeahCBwcm92aWRlciDlrp7njrBcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbE9uY2UoY2hhbm5lbDogQ2hhbm5lbCwgb3B0aW9uczogR2VuZXJhdGVFbWFpbE9wdGlvbnMpOiBQcm9taXNlPEludGVybmFsRW1haWxJbmZvPiB7XG4gIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgIGNhc2UgJ3RlbXBtYWlsJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbC5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZHVyYXRpb24gfHwgMzApO1xuICAgIGNhc2UgJ3RlbXBtYWlsLWNuJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbENuLmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gPz8gbnVsbCk7XG4gICAgY2FzZSAndG1wbWFpbHMnOlxuICAgICAgcmV0dXJuIHRtcG1haWxzLmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gPz8gbnVsbCk7XG4gICAgY2FzZSAndGVtcG1haWxnJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbGcuZ2VuZXJhdGVFbWFpbChvcHRpb25zLmRvbWFpbiA/PyBudWxsKTtcbiAgICBjYXNlICd0YS1lYXN5JzpcbiAgICAgIHJldHVybiB0YUVhc3kuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJzEwbWFpbC13YW5ndHonOlxuICAgICAgcmV0dXJuIHRlbm1haWxXYW5ndHouZ2VuZXJhdGVFbWFpbChvcHRpb25zLmRvbWFpbiA/PyBudWxsKTtcbiAgICBjYXNlICcxMG1pbnV0ZS1vbmUnOlxuICAgICAgcmV0dXJuIHRlbm1pbnV0ZU9uZS5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZG9tYWluID8/IG51bGwpO1xuICAgIGNhc2UgJ2xpbnNoaS1lbWFpbCc6XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2xpbnNoaXlvdSc6XG4gICAgICByZXR1cm4gbGluc2hpeW91LmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sb2wnOlxuICAgICAgcmV0dXJuIHRlbXBtYWlsTG9sLmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gfHwgbnVsbCk7XG4gICAgY2FzZSAnY2hhdGdwdC1vcmctdWsnOlxuICAgICAgcmV0dXJuIGNoYXRncHRPcmdVay5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAndGVtcC1tYWlsLWlvJzpcbiAgICAgIHJldHVybiB0ZW1wTWFpbElPLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdhd2FtYWlsJzpcbiAgICAgIHJldHVybiBhd2FtYWlsLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICd0ZW1wb3JhcnktZW1haWwtb3JnJzpcbiAgICAgIHJldHVybiB0ZW1wb3JhcnlFbWFpbE9yZy5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnbWFpbC10bSc6XG4gICAgICByZXR1cm4gbWFpbFRtLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdkcm9wbWFpbCc6XG4gICAgICByZXR1cm4gZHJvcG1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2d1ZXJyaWxsYW1haWwnOlxuICAgICAgcmV0dXJuIGd1ZXJyaWxsYW1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ21haWxkcm9wJzpcbiAgICAgIHJldHVybiBtYWlsZHJvcFByb3ZpZGVyLmdlbmVyYXRlRW1haWwob3B0aW9ucy5kb21haW4gPz8gbnVsbCk7XG4gICAgY2FzZSAnc21haWwtcHcnOlxuICAgICAgcmV0dXJuIHNtYWlsUHcuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2Jvb21saWZ5JzpcbiAgICAgIHJldHVybiBib29tbGlmeS5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnbWZmYWMnOlxuICAgICAgcmV0dXJuIG1mZmFjLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdtaW5tYWlsJzpcbiAgICAgIHJldHVybiBtaW5tYWlsLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICd2aXAtMjE1JzpcbiAgICAgIHJldHVybiB2aXAyMTUuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2Fub25ib3gnOlxuICAgICAgcmV0dXJuIGFub25ib3guZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2Zha2UtbGVnYWwnOlxuICAgICAgcmV0dXJuIGZha2VMZWdhbC5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZG9tYWluID8/IG51bGwpO1xuICAgIGNhc2UgJ21vYWt0JzpcbiAgICAgIHJldHVybiBtb2FrdC5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZG9tYWluID8/IG51bGwpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY2hhbm5lbDogJHtjaGFubmVsfWApO1xuICB9XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBDaGFubmVsL0VtYWlsL1Rva2VuIOetieeUsSBTREsg5LuOIEVtYWlsSW5mbyDkuK3oh6rliqjojrflj5bvvIznlKjmiLfml6DpnIDmiYvliqjkvKDpgJJcbiAqXG4gKiDplJnor6/lpITnkIbnrZbnlaXvvJpcbiAqIC0g572R57uc6ZSZ6K+v44CB6LaF5pe244CBNDI544CB5pyN5Yqh56uvIDV4eCDplJnor68g4oaSIOiHquWKqOmHjeivle+8iOm7mOiupCAyIOasoe+8iVxuICogLSDph43or5XogJflsL3lkI7ov5Tlm54geyBzdWNjZXNzOiBmYWxzZSwgZW1haWxzOiBbXSB977yM5LiN5oqb5byC5bi4XG4gKiAtIOWPguaVsOagoemqjOmUmeivr++8iOe8uuWwkSBFbWFpbEluZm/vvInnm7TmjqXmipvlh7pcbiAqXG4gKiBAcGFyYW0gaW5mbyAtIEdlbmVyYXRlRW1haWwoKSDov5Tlm57nmoTpgq7nrrHkv6Hmga9cbiAqIEBwYXJhbSBvcHRpb25zIC0g5Y+v6YCJ6YWN572u77yI6YeN6K+V562J77yJXG4gKiBAcmV0dXJucyDpgq7ku7bnu5PmnpzvvIzljIXlkKsgc3VjY2VzcyDmoIforrDlkozpgq7ku7bliJfooahcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGluZm8gPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKHsgY2hhbm5lbDogJ21haWwtdG0nIH0pO1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0RW1haWxzKGluZm8pO1xuICogaWYgKHJlc3VsdC5zdWNjZXNzICYmIHJlc3VsdC5lbWFpbHMubGVuZ3RoID4gMCkge1xuICogICBjb25zb2xlLmxvZygn5pS25Yiw6YKu5Lu2OicsIHJlc3VsdC5lbWFpbHNbMF0uc3ViamVjdCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhpbmZvOiBFbWFpbEluZm8sIG9wdGlvbnM/OiBHZXRFbWFpbHNPcHRpb25zKTogUHJvbWlzZTxHZXRFbWFpbHNSZXN1bHQ+IHtcbiAgaWYgKCFpbmZvKSB7XG4gICAgcmVwb3J0VGVsZW1ldHJ5KCdnZXRfZW1haWxzJywgJycsIGZhbHNlLCAwLCAwLCAnRW1haWxJbmZvIGlzIHJlcXVpcmVkLCBjYWxsIGdlbmVyYXRlRW1haWwoKSBmaXJzdCcpO1xuICAgIHRocm93IG5ldyBFcnJvcignRW1haWxJbmZvIGlzIHJlcXVpcmVkLCBjYWxsIGdlbmVyYXRlRW1haWwoKSBmaXJzdCcpO1xuICB9XG5cbiAgY29uc3QgeyBjaGFubmVsLCBlbWFpbCB9ID0gaW5mbztcbiAgY29uc3QgdG9rZW4gPSB0b2tlblN0b3JlLmdldChpbmZvKTtcblxuICBpZiAoIWNoYW5uZWwpIHtcbiAgICByZXBvcnRUZWxlbWV0cnkoJ2dldF9lbWFpbHMnLCAnJywgZmFsc2UsIDAsIDAsICdDaGFubmVsIGlzIHJlcXVpcmVkJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgaWYgKCFlbWFpbCAmJiBjaGFubmVsICE9PSAndGVtcG1haWwtbG9sJykge1xuICAgIHJlcG9ydFRlbGVtZXRyeSgnZ2V0X2VtYWlscycsIGNoYW5uZWwsIGZhbHNlLCAwLCAwLCAnRW1haWwgaXMgcmVxdWlyZWQnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtYWlsIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoYOiOt+WPlumCruS7tiwg5rig6YGTOiAke2NoYW5uZWx9LCDpgq7nrrE6ICR7ZW1haWx9YCk7XG4gIGNvbnN0IGdyID0gYXdhaXQgd2l0aFJldHJ5V2l0aEF0dGVtcHRzKCgpID0+IGdldEVtYWlsc09uY2UoY2hhbm5lbCwgZW1haWwsIHRva2VuKSwgb3B0aW9ucz8ucmV0cnkpO1xuICBpZiAoZ3Iub2spIHtcbiAgICBjb25zdCBlbWFpbHMgPSBnci52YWx1ZTtcbiAgICBpZiAoZW1haWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxvZ2dlci5pbmZvKGDojrflj5bliLAgJHtlbWFpbHMubGVuZ3RofSDlsIHpgq7ku7YsIOa4oOmBkzogJHtjaGFubmVsfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuZGVidWcoYOaaguaXoOmCruS7tiwg5rig6YGTOiAke2NoYW5uZWx9YCk7XG4gICAgfVxuICAgIHJlcG9ydFRlbGVtZXRyeSgnZ2V0X2VtYWlscycsIGNoYW5uZWwsIHRydWUsIGdyLmF0dGVtcHRzLCAwLCAnJyk7XG4gICAgcmV0dXJuIHsgY2hhbm5lbCwgZW1haWwsIGVtYWlscywgc3VjY2VzczogdHJ1ZSB9O1xuICB9XG4gIGNvbnN0IGVyciA9IGdyLmVycm9yIGFzIGFueTtcbiAgY29uc3QgZXJyTXNnID0gZXJyPy5tZXNzYWdlIHx8IFN0cmluZyhlcnIpO1xuICAvKlxuICAgKiDph43or5XogJflsL3lkI7ku43nhLblpLHotKUg4oaSIOi/lOWbnuepuue7k+aenOiAjOmdnuaKm+W8guW4uFxuICAgKiDov5nmoLfosIPnlKjmlrnlnKjova7or6LlnLrmma/kuIvkuI3kvJrlm6DkuLrkuIDmrKHnvZHnu5zms6LliqjogIzkuK3mlq3mlbTkuKrmtYHnqItcbiAgICovXG4gIGxvZ2dlci5lcnJvcihg6I635Y+W6YKu5Lu25aSx6LSlLCDmuKDpgZM6ICR7Y2hhbm5lbH0sIOmUmeivrzogJHtlcnJNc2d9YCk7XG4gIHJlcG9ydFRlbGVtZXRyeSgnZ2V0X2VtYWlscycsIGNoYW5uZWwsIGZhbHNlLCBnci5hdHRlbXB0cywgMCwgZXJyTXNnKTtcbiAgcmV0dXJuIHsgY2hhbm5lbCwgZW1haWwsIGVtYWlsczogW10sIHN1Y2Nlc3M6IGZhbHNlIH07XG59XG5cbi8qKlxuICog5Y2V5qyh6I635Y+W6YKu5Lu277yI5LiN5ZCr6YeN6K+V6YC76L6R77yJXG4gKiDmoLnmja7muKDpgZPnsbvlnovliIblj5HliLDlr7nlupTnmoQgcHJvdmlkZXIg5a6e546w77yM5bm25qCh6aqM5b+F6ZyA55qEIHRva2VuIOWPguaVsFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRFbWFpbHNPbmNlKGNoYW5uZWw6IENoYW5uZWwsIGVtYWlsOiBzdHJpbmcsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgIGNhc2UgJ3RlbXBtYWlsJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbC5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ3RlbXBtYWlsLWNuJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbENuLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAndG1wbWFpbHMnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdG1wbWFpbHMnKTtcbiAgICAgIHJldHVybiB0bXBtYWlscy5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICd0ZW1wbWFpbGcnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdGVtcG1haWxnJyk7XG4gICAgICByZXR1cm4gdGVtcG1haWxnLmdldEVtYWlscyhlbWFpbCwgdG9rZW4pO1xuICAgIGNhc2UgJ3RhLWVhc3knOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdGEtZWFzeScpO1xuICAgICAgcmV0dXJuIHRhRWFzeS5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICcxMG1haWwtd2FuZ3R6JzpcbiAgICAgIHJldHVybiB0ZW5tYWlsV2FuZ3R6LmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAnMTBtaW51dGUtb25lJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIDEwbWludXRlLW9uZScpO1xuICAgICAgcmV0dXJuIHRlbm1pbnV0ZU9uZS5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICdsaW5zaGktZW1haWwnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgbGluc2hpLWVtYWlsJyk7XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2V0RW1haWxzKGVtYWlsLCB0b2tlbik7XG4gICAgY2FzZSAnbGluc2hpeW91JzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGxpbnNoaXlvdScpO1xuICAgICAgcmV0dXJuIGxpbnNoaXlvdS5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sb2wnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdGVtcG1haWwtbG9sJyk7XG4gICAgICByZXR1cm4gdGVtcG1haWxMb2wuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnY2hhdGdwdC1vcmctdWsnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgY2hhdGdwdC1vcmctdWsnKTtcbiAgICAgIHJldHVybiBjaGF0Z3B0T3JnVWsuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAndGVtcC1tYWlsLWlvJzpcbiAgICAgIHJldHVybiB0ZW1wTWFpbElPLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAnYXdhbWFpbCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBhd2FtYWlsJyk7XG4gICAgICByZXR1cm4gYXdhbWFpbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wb3JhcnktZW1haWwtb3JnJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIHRlbXBvcmFyeS1lbWFpbC1vcmcnKTtcbiAgICAgIHJldHVybiB0ZW1wb3JhcnlFbWFpbE9yZy5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICdtYWlsLXRtJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1haWwtdG0nKTtcbiAgICAgIHJldHVybiBtYWlsVG0uZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnbWFpbC1jeCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBtYWlsLWN4Jyk7XG4gICAgICByZXR1cm4gbWFpbEN4LmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ2Ryb3BtYWlsJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGRyb3BtYWlsJyk7XG4gICAgICByZXR1cm4gZHJvcG1haWwuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnZ3VlcnJpbGxhbWFpbCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBndWVycmlsbGFtYWlsJyk7XG4gICAgICByZXR1cm4gZ3VlcnJpbGxhbWFpbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdtYWlsZHJvcCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBtYWlsZHJvcCcpO1xuICAgICAgcmV0dXJuIG1haWxkcm9wUHJvdmlkZXIuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnc21haWwtcHcnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3Igc21haWwtcHcnKTtcbiAgICAgIHJldHVybiBzbWFpbFB3LmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ2Jvb21saWZ5JzpcbiAgICAgIHJldHVybiBib29tbGlmeS5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ21mZmFjJzpcbiAgICAgIHJldHVybiBtZmZhYy5nZXRFbWFpbHMoZW1haWwsIHRva2VuKTtcbiAgICBjYXNlICdtaW5tYWlsJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1pbm1haWwnKTtcbiAgICAgIHJldHVybiBtaW5tYWlsLmdldEVtYWlscyhlbWFpbCwgdG9rZW4pO1xuICAgIGNhc2UgJ3ZpcC0yMTUnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdmlwLTIxNScpO1xuICAgICAgcmV0dXJuIHZpcDIxNS5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdhbm9uYm94JzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGFub25ib3gnKTtcbiAgICAgIHJldHVybiBhbm9uYm94LmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ2Zha2UtbGVnYWwnOlxuICAgICAgcmV0dXJuIGZha2VMZWdhbC5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ21vYWt0JzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1vYWt0Jyk7XG4gICAgICByZXR1cm4gbW9ha3QuZ2V0RW1haWxzKGVtYWlsLCB0b2tlbik7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiDkuLTml7bpgq7nrrHlrqLmiLfnq69cbiAqIOWwgeijheS6humCrueuseWIm+W7uuWSjOmCruS7tuiOt+WPlueahOWujOaVtOa1geeoi++8jOiHquWKqOeuoeeQhumCrueuseS/oeaBr+WSjOiupOivgeS7pOeJjFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgY2xpZW50ID0gbmV3IFRlbXBFbWFpbENsaWVudCgpO1xuICogY29uc3QgZW1haWxJbmZvID0gYXdhaXQgY2xpZW50LmdlbmVyYXRlKHsgY2hhbm5lbDogJ21haWwtdG0nIH0pO1xuICogY29uc29sZS5sb2coJ+mCrueusTonLCBlbWFpbEluZm8uZW1haWwpO1xuICpcbiAqIC8vIOi9ruivouiOt+WPlumCruS7tlxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LmdldEVtYWlscygpO1xuICogaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gKiAgIGNvbnNvbGUubG9nKCfpgq7ku7bmlbA6JywgcmVzdWx0LmVtYWlscy5sZW5ndGgpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wRW1haWxDbGllbnQge1xuICBwcml2YXRlIGVtYWlsSW5mbzogRW1haWxJbmZvIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIOWIm+W7uuS4tOaXtumCrueuseW5tue8k+WtmOmCrueuseS/oeaBr1xuICAgKiDlkI7nu63osIPnlKggZ2V0RW1haWxzKCkg5pe26Ieq5Yqo5L2/55So5q2k6YKu566x55qE5rig6YGT44CB5Zyw5Z2A5ZKM5Luk54mMXG4gICAqIOaJgOaciea4oOmBk+Wdh+S4jeWPr+eUqOaXtui/lOWbniBudWxsXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZShvcHRpb25zOiBHZW5lcmF0ZUVtYWlsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFbWFpbEluZm8gfCBudWxsPiB7XG4gICAgdGhpcy5lbWFpbEluZm8gPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmVtYWlsSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3pgq7nrrHnmoTpgq7ku7bliJfooahcbiAgICog5b+F6aG75YWI6LCD55SoIGdlbmVyYXRlKCkg5Yib5bu66YKu566xXG4gICAqXG4gICAqIEB0aHJvd3Mg5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe25oqb5Ye65byC5bi4XG4gICAqL1xuICBhc3luYyBnZXRFbWFpbHMob3B0aW9ucz86IEdldEVtYWlsc09wdGlvbnMpOiBQcm9taXNlPEdldEVtYWlsc1Jlc3VsdD4ge1xuICAgIGlmICghdGhpcy5lbWFpbEluZm8pIHtcbiAgICAgIHJlcG9ydFRlbGVtZXRyeSgnZ2V0X2VtYWlscycsICcnLCBmYWxzZSwgMCwgMCwgJ05vIGVtYWlsIGdlbmVyYXRlZC4gQ2FsbCBnZW5lcmF0ZSgpIGZpcnN0LicpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBlbWFpbCBnZW5lcmF0ZWQuIENhbGwgZ2VuZXJhdGUoKSBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RW1haWxzKHRoaXMuZW1haWxJbmZvLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3nvJPlrZjnmoTpgq7nrrHkv6Hmga9cbiAgICog5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe26L+U5ZueIG51bGxcbiAgICovXG4gIGdldEVtYWlsSW5mbygpOiBFbWFpbEluZm8gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbWFpbEluZm87XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBsaXN0Q2hhbm5lbHMsXG4gIGdldENoYW5uZWxJbmZvLFxuICBnZW5lcmF0ZUVtYWlsLFxuICBnZXRFbWFpbHMsXG4gIFRlbXBFbWFpbENsaWVudCxcbiAgc2V0Q29uZmlnLFxuICBnZXRDb25maWcsXG59O1xuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tempmailg.com:无 Cookie 罐 GET /public/{locale} 拿会话,POST /public/get_messages 建邮与收信。
|
|
3
|
+
* Token 为 tmg1: + base64(JSON{locale,cookieHdr,csrf})。
|
|
4
|
+
*/
|
|
5
|
+
import { InternalEmailInfo, Email } from '../types';
|
|
6
|
+
export declare function generateEmail(domain?: string | null): Promise<InternalEmailInfo>;
|
|
7
|
+
export declare function getEmails(email: string, token: string): Promise<Email[]>;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
6
|
+
const retry_1 = require("../retry");
|
|
7
|
+
const CHANNEL = 'tempmailg';
|
|
8
|
+
const ORIGIN = 'https://tempmailg.com';
|
|
9
|
+
const TOK_PREFIX = 'tmg1:';
|
|
10
|
+
const CSRF_META_RE = /<meta\s+name="csrf-token"\s+content="([^"]+)"/i;
|
|
11
|
+
const BROWSER_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0';
|
|
12
|
+
function localeFromDomain(domain) {
|
|
13
|
+
const s = String(domain ?? '').trim();
|
|
14
|
+
if (!s || /[/?#\\]/.test(s))
|
|
15
|
+
return 'zh';
|
|
16
|
+
return s;
|
|
17
|
+
}
|
|
18
|
+
function setCookieLines(headers) {
|
|
19
|
+
const h = headers;
|
|
20
|
+
if (typeof h.getSetCookie === 'function') {
|
|
21
|
+
return h.getSetCookie();
|
|
22
|
+
}
|
|
23
|
+
const one = headers.get('set-cookie');
|
|
24
|
+
return one ? [one] : [];
|
|
25
|
+
}
|
|
26
|
+
function cookieMap(cookieHdr) {
|
|
27
|
+
const m = new Map();
|
|
28
|
+
for (const part of cookieHdr.split(';')) {
|
|
29
|
+
const p = part.trim();
|
|
30
|
+
if (!p)
|
|
31
|
+
continue;
|
|
32
|
+
const i = p.indexOf('=');
|
|
33
|
+
if (i <= 0 || i >= p.length - 1)
|
|
34
|
+
continue;
|
|
35
|
+
const k = p.slice(0, i).trim();
|
|
36
|
+
const v = p.slice(i + 1).trim();
|
|
37
|
+
if (k)
|
|
38
|
+
m.set(k, v);
|
|
39
|
+
}
|
|
40
|
+
return m;
|
|
41
|
+
}
|
|
42
|
+
function mergeCookies(prev, setCookieLinesFromResp) {
|
|
43
|
+
const m = cookieMap(prev);
|
|
44
|
+
for (const line of setCookieLinesFromResp) {
|
|
45
|
+
const nv = line.split(';')[0]?.trim();
|
|
46
|
+
if (!nv)
|
|
47
|
+
continue;
|
|
48
|
+
const i = nv.indexOf('=');
|
|
49
|
+
if (i <= 0)
|
|
50
|
+
continue;
|
|
51
|
+
const k = nv.slice(0, i).trim();
|
|
52
|
+
const v = nv.slice(i + 1).trim();
|
|
53
|
+
if (k)
|
|
54
|
+
m.set(k, v);
|
|
55
|
+
}
|
|
56
|
+
return [...m.entries()]
|
|
57
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
58
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
59
|
+
.join('; ');
|
|
60
|
+
}
|
|
61
|
+
function xsrfFromCookies(cookieHdr) {
|
|
62
|
+
const m = cookieMap(cookieHdr);
|
|
63
|
+
for (const name of ['XSRF-TOKEN', 'xsrf-token']) {
|
|
64
|
+
const v = m.get(name);
|
|
65
|
+
if (v)
|
|
66
|
+
return v;
|
|
67
|
+
}
|
|
68
|
+
for (const [k, v] of m) {
|
|
69
|
+
if (k.toLowerCase() === 'xsrf-token' && v)
|
|
70
|
+
return v;
|
|
71
|
+
}
|
|
72
|
+
return '';
|
|
73
|
+
}
|
|
74
|
+
function parseCsrf(html) {
|
|
75
|
+
const m = html.match(CSRF_META_RE);
|
|
76
|
+
const t = m?.[1]?.trim() ?? '';
|
|
77
|
+
if (!t)
|
|
78
|
+
throw new Error('tempmailg: csrf-token not found in page');
|
|
79
|
+
return t;
|
|
80
|
+
}
|
|
81
|
+
function b64EncodeJson(obj) {
|
|
82
|
+
const json = JSON.stringify(obj);
|
|
83
|
+
if (typeof Buffer !== 'undefined') {
|
|
84
|
+
return TOK_PREFIX + Buffer.from(json, 'utf8').toString('base64');
|
|
85
|
+
}
|
|
86
|
+
return TOK_PREFIX + btoa(unescape(encodeURIComponent(json)));
|
|
87
|
+
}
|
|
88
|
+
function decodeToken(tok) {
|
|
89
|
+
if (!tok.startsWith(TOK_PREFIX)) {
|
|
90
|
+
throw new Error('tempmailg: invalid session token');
|
|
91
|
+
}
|
|
92
|
+
const raw = tok.slice(TOK_PREFIX.length);
|
|
93
|
+
let json;
|
|
94
|
+
if (typeof Buffer !== 'undefined') {
|
|
95
|
+
json = Buffer.from(raw, 'base64').toString('utf8');
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
json = decodeURIComponent(escape(atob(raw)));
|
|
99
|
+
}
|
|
100
|
+
const o = JSON.parse(json);
|
|
101
|
+
if (!o.c || !o.s)
|
|
102
|
+
throw new Error('tempmailg: invalid session token');
|
|
103
|
+
return { l: o.l || 'zh', c: o.c, s: o.s };
|
|
104
|
+
}
|
|
105
|
+
function pageHeaders(referer) {
|
|
106
|
+
return {
|
|
107
|
+
'User-Agent': BROWSER_UA,
|
|
108
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
109
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
110
|
+
'Cache-Control': 'no-cache',
|
|
111
|
+
DNT: '1',
|
|
112
|
+
Pragma: 'no-cache',
|
|
113
|
+
Referer: referer,
|
|
114
|
+
'Upgrade-Insecure-Requests': '1',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function apiHeaders(referer, cookieHdr, xsrf) {
|
|
118
|
+
const h = {
|
|
119
|
+
'User-Agent': BROWSER_UA,
|
|
120
|
+
Accept: 'application/json, text/plain, */*',
|
|
121
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
122
|
+
'Content-Type': 'application/json',
|
|
123
|
+
Origin: ORIGIN,
|
|
124
|
+
Referer: referer,
|
|
125
|
+
'Cache-Control': 'no-cache',
|
|
126
|
+
Pragma: 'no-cache',
|
|
127
|
+
DNT: '1',
|
|
128
|
+
Cookie: cookieHdr,
|
|
129
|
+
};
|
|
130
|
+
if (xsrf)
|
|
131
|
+
h['X-XSRF-TOKEN'] = xsrf;
|
|
132
|
+
return h;
|
|
133
|
+
}
|
|
134
|
+
async function generateEmail(domain) {
|
|
135
|
+
const locale = localeFromDomain(domain);
|
|
136
|
+
const pageURL = `${ORIGIN}/public/${encodeURIComponent(locale)}`;
|
|
137
|
+
const res = await (0, retry_1.fetchWithTimeout)(pageURL, { headers: pageHeaders(pageURL) });
|
|
138
|
+
if (!res.ok) {
|
|
139
|
+
throw new Error(`tempmailg page: ${res.status}`);
|
|
140
|
+
}
|
|
141
|
+
const html = await res.text();
|
|
142
|
+
const csrf = parseCsrf(html);
|
|
143
|
+
let cookieHdr = mergeCookies('', setCookieLines(res.headers));
|
|
144
|
+
let xsrf = xsrfFromCookies(cookieHdr);
|
|
145
|
+
if (!xsrf) {
|
|
146
|
+
throw new Error('tempmailg: missing XSRF-TOKEN cookie');
|
|
147
|
+
}
|
|
148
|
+
const postURL = `${ORIGIN}/public/get_messages`;
|
|
149
|
+
const res2 = await (0, retry_1.fetchWithTimeout)(postURL, {
|
|
150
|
+
method: 'POST',
|
|
151
|
+
headers: apiHeaders(pageURL, cookieHdr, xsrf),
|
|
152
|
+
body: JSON.stringify({ _token: csrf }),
|
|
153
|
+
});
|
|
154
|
+
if (!res2.ok) {
|
|
155
|
+
throw new Error(`tempmailg get_messages: ${res2.status}`);
|
|
156
|
+
}
|
|
157
|
+
const wrap = (await res2.json());
|
|
158
|
+
if (!wrap.status || !wrap.mailbox) {
|
|
159
|
+
throw new Error('tempmailg: create mailbox failed');
|
|
160
|
+
}
|
|
161
|
+
cookieHdr = mergeCookies(cookieHdr, setCookieLines(res2.headers));
|
|
162
|
+
const xsrf2 = xsrfFromCookies(cookieHdr);
|
|
163
|
+
if (xsrf2)
|
|
164
|
+
xsrf = xsrf2;
|
|
165
|
+
const token = b64EncodeJson({ l: locale, c: cookieHdr, s: csrf });
|
|
166
|
+
return {
|
|
167
|
+
channel: CHANNEL,
|
|
168
|
+
email: wrap.mailbox,
|
|
169
|
+
token,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
async function getEmails(email, token) {
|
|
173
|
+
const sess = decodeToken(token);
|
|
174
|
+
const locale = sess.l || 'zh';
|
|
175
|
+
const pageURL = `${ORIGIN}/public/${encodeURIComponent(locale)}`;
|
|
176
|
+
const postURL = `${ORIGIN}/public/get_messages`;
|
|
177
|
+
const xsrf = xsrfFromCookies(sess.c);
|
|
178
|
+
const res = await (0, retry_1.fetchWithTimeout)(postURL, {
|
|
179
|
+
method: 'POST',
|
|
180
|
+
headers: apiHeaders(pageURL, sess.c, xsrf),
|
|
181
|
+
body: JSON.stringify({ _token: sess.s }),
|
|
182
|
+
});
|
|
183
|
+
if (!res.ok) {
|
|
184
|
+
throw new Error(`tempmailg get_messages: ${res.status}`);
|
|
185
|
+
}
|
|
186
|
+
const wrap = (await res.json());
|
|
187
|
+
if (!wrap.status) {
|
|
188
|
+
throw new Error('tempmailg: get_messages failed');
|
|
189
|
+
}
|
|
190
|
+
if (wrap.mailbox && wrap.mailbox.trim().toLowerCase() !== email.trim().toLowerCase()) {
|
|
191
|
+
throw new Error('tempmailg: mailbox mismatch');
|
|
192
|
+
}
|
|
193
|
+
const rawList = Array.isArray(wrap.messages) ? wrap.messages : [];
|
|
194
|
+
const out = [];
|
|
195
|
+
for (const rm of rawList) {
|
|
196
|
+
if (rm && typeof rm === 'object') {
|
|
197
|
+
out.push((0, normalize_1.normalizeEmail)(rm, email));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return out;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWxnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbGcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3SUEsc0NBdUNDO0FBRUQsOEJBOEJDO0FBMU1ELDRDQUE4QztBQUM5QyxvQ0FBNEM7QUFFNUMsTUFBTSxPQUFPLEdBQVksV0FBVyxDQUFDO0FBQ3JDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLFlBQVksR0FBRyxnREFBZ0QsQ0FBQztBQUV0RSxNQUFNLFVBQVUsR0FDZCwrSEFBK0gsQ0FBQztBQUVsSSxTQUFTLGdCQUFnQixDQUFDLE1BQXNCO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQWdCO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQXNELENBQUM7SUFDakUsSUFBSSxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsU0FBaUI7SUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENB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QUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRSxNQUFNLEdBQUcsR0FBWSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixJQUFJLEVBQUUsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUEsMEJBQWMsRUFBQyxFQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHRlbXBtYWlsZy5jb23vvJrml6AgQ29va2llIOe9kCBHRVQgL3B1YmxpYy97bG9jYWxlfSDmi7/kvJror53vvIxQT1NUIC9wdWJsaWMvZ2V0X21lc3NhZ2VzIOW7uumCruS4juaUtuS/oeOAglxuICogVG9rZW4g5Li6IHRtZzE6ICsgYmFzZTY0KEpTT057bG9jYWxlLGNvb2tpZUhkcixjc3JmfSnjgIJcbiAqL1xuaW1wb3J0IHsgSW50ZXJuYWxFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuLi9ub3JtYWxpemUnO1xuaW1wb3J0IHsgZmV0Y2hXaXRoVGltZW91dCB9IGZyb20gJy4uL3JldHJ5JztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICd0ZW1wbWFpbGcnO1xuY29uc3QgT1JJR0lOID0gJ2h0dHBzOi8vdGVtcG1haWxnLmNvbSc7XG5jb25zdCBUT0tfUFJFRklYID0gJ3RtZzE6JztcblxuY29uc3QgQ1NSRl9NRVRBX1JFID0gLzxtZXRhXFxzK25hbWU9XCJjc3JmLXRva2VuXCJcXHMrY29udGVudD1cIihbXlwiXSspXCIvaTtcblxuY29uc3QgQlJPV1NFUl9VQSA9XG4gICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ2LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0Ni4wLjAuMCc7XG5cbmZ1bmN0aW9uIGxvY2FsZUZyb21Eb21haW4oZG9tYWluPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gIGNvbnN0IHMgPSBTdHJpbmcoZG9tYWluID8/ICcnKS50cmltKCk7XG4gIGlmICghcyB8fCAvWy8/I1xcXFxdLy50ZXN0KHMpKSByZXR1cm4gJ3poJztcbiAgcmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHNldENvb2tpZUxpbmVzKGhlYWRlcnM6IEhlYWRlcnMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGggPSBoZWFkZXJzIGFzIEhlYWRlcnMgJiB7IGdldFNldENvb2tpZT86ICgpID0+IHN0cmluZ1tdIH07XG4gIGlmICh0eXBlb2YgaC5nZXRTZXRDb29raWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaC5nZXRTZXRDb29raWUoKTtcbiAgfVxuICBjb25zdCBvbmUgPSBoZWFkZXJzLmdldCgnc2V0LWNvb2tpZScpO1xuICByZXR1cm4gb25lID8gW29uZV0gOiBbXTtcbn1cblxuZnVuY3Rpb24gY29va2llTWFwKGNvb2tpZUhkcjogc3RyaW5nKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IG0gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHBhcnQgb2YgY29va2llSGRyLnNwbGl0KCc7JykpIHtcbiAgICBjb25zdCBwID0gcGFydC50cmltKCk7XG4gICAgaWYgKCFwKSBjb250aW51ZTtcbiAgICBjb25zdCBpID0gcC5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKGkgPD0gMCB8fCBpID49IHAubGVuZ3RoIC0gMSkgY29udGludWU7XG4gICAgY29uc3QgayA9IHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgIGNvbnN0IHYgPSBwLnNsaWNlKGkgKyAxKS50cmltKCk7XG4gICAgaWYgKGspIG0uc2V0KGssIHYpO1xuICB9XG4gIHJldHVybiBtO1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvb2tpZXMocHJldjogc3RyaW5nLCBzZXRDb29raWVMaW5lc0Zyb21SZXNwOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IG0gPSBjb29raWVNYXAocHJldik7XG4gIGZvciAoY29uc3QgbGluZSBvZiBzZXRDb29raWVMaW5lc0Zyb21SZXNwKSB7XG4gICAgY29uc3QgbnYgPSBsaW5lLnNwbGl0KCc7JylbMF0/LnRyaW0oKTtcbiAgICBpZiAoIW52KSBjb250aW51ZTtcbiAgICBjb25zdCBpID0gbnYuaW5kZXhPZignPScpO1xuICAgIGlmIChpIDw9IDApIGNvbnRpbnVlO1xuICAgIGNvbnN0IGsgPSBudi5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgY29uc3QgdiA9IG52LnNsaWNlKGkgKyAxKS50cmltKCk7XG4gICAgaWYgKGspIG0uc2V0KGssIHYpO1xuICB9XG4gIHJldHVybiBbLi4ubS5lbnRyaWVzKCldXG4gICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfT0ke3Z9YClcbiAgICAuam9pbignOyAnKTtcbn1cblxuZnVuY3Rpb24geHNyZkZyb21Db29raWVzKGNvb2tpZUhkcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbSA9IGNvb2tpZU1hcChjb29raWVIZHIpO1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgWydYU1JGLVRPS0VOJywgJ3hzcmYtdG9rZW4nXSkge1xuICAgIGNvbnN0IHYgPSBtLmdldChuYW1lKTtcbiAgICBpZiAodikgcmV0dXJuIHY7XG4gIH1cbiAgZm9yIChjb25zdCBbaywgdl0gb2YgbSkge1xuICAgIGlmIChrLnRvTG93ZXJDYXNlKCkgPT09ICd4c3JmLXRva2VuJyAmJiB2KSByZXR1cm4gdjtcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ3NyZihodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtID0gaHRtbC5tYXRjaChDU1JGX01FVEFfUkUpO1xuICBjb25zdCB0ID0gbT8uWzFdPy50cmltKCkgPz8gJyc7XG4gIGlmICghdCkgdGhyb3cgbmV3IEVycm9yKCd0ZW1wbWFpbGc6IGNzcmYtdG9rZW4gbm90IGZvdW5kIGluIHBhZ2UnKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIGI2NEVuY29kZUpzb24ob2JqOiB7IGw6IHN0cmluZzsgYzogc3RyaW5nOyBzOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShvYmopO1xuICBpZiAodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gVE9LX1BSRUZJWCArIEJ1ZmZlci5mcm9tKGpzb24sICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG4gIHJldHVybiBUT0tfUFJFRklYICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoanNvbikpKTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlVG9rZW4odG9rOiBzdHJpbmcpOiB7IGw6IHN0cmluZzsgYzogc3RyaW5nOyBzOiBzdHJpbmcgfSB7XG4gIGlmICghdG9rLnN0YXJ0c1dpdGgoVE9LX1BSRUZJWCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbXBtYWlsZzogaW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3QgcmF3ID0gdG9rLnNsaWNlKFRPS19QUkVGSVgubGVuZ3RoKTtcbiAgbGV0IGpzb246IHN0cmluZztcbiAgaWYgKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAganNvbiA9IEJ1ZmZlci5mcm9tKHJhdywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSB7XG4gICAganNvbiA9IGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoYXRvYihyYXcpKSk7XG4gIH1cbiAgY29uc3QgbyA9IEpTT04ucGFyc2UoanNvbikgYXMgeyBsPzogc3RyaW5nOyBjPzogc3RyaW5nOyBzPzogc3RyaW5nIH07XG4gIGlmICghby5jIHx8ICFvLnMpIHRocm93IG5ldyBFcnJvcigndGVtcG1haWxnOiBpbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgcmV0dXJuIHsgbDogby5sIHx8ICd6aCcsIGM6IG8uYywgczogby5zIH07XG59XG5cbmZ1bmN0aW9uIHBhZ2VIZWFkZXJzKHJlZmVyZXI6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4ge1xuICAgICdVc2VyLUFnZW50JzogQlJPV1NFUl9VQSxcbiAgICBBY2NlcHQ6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgnLFxuICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnemgtQ04semg7cT0wLjksZW47cT0wLjgnLFxuICAgICdDYWNoZS1Db250cm9sJzogJ25vLWNhY2hlJyxcbiAgICBETlQ6ICcxJyxcbiAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgUmVmZXJlcjogcmVmZXJlcixcbiAgICAnVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyc6ICcxJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXBpSGVhZGVycyhyZWZlcmVyOiBzdHJpbmcsIGNvb2tpZUhkcjogc3RyaW5nLCB4c3JmOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgaDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnVXNlci1BZ2VudCc6IEJST1dTRVJfVUEsXG4gICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyxcbiAgICAnQWNjZXB0LUxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44JyxcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIE9yaWdpbjogT1JJR0lOLFxuICAgIFJlZmVyZXI6IHJlZmVyZXIsXG4gICAgJ0NhY2hlLUNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICBETlQ6ICcxJyxcbiAgICBDb29raWU6IGNvb2tpZUhkcixcbiAgfTtcbiAgaWYgKHhzcmYpIGhbJ1gtWFNSRi1UT0tFTiddID0geHNyZjtcbiAgcmV0dXJuIGg7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGRvbWFpbj86IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPEludGVybmFsRW1haWxJbmZvPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZUZyb21Eb21haW4oZG9tYWluKTtcbiAgY29uc3QgcGFnZVVSTCA9IGAke09SSUdJTn0vcHVibGljLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGxvY2FsZSl9YDtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KHBhZ2VVUkwsIHsgaGVhZGVyczogcGFnZUhlYWRlcnMocGFnZVVSTCkgfSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0ZW1wbWFpbGcgcGFnZTogJHtyZXMuc3RhdHVzfWApO1xuICB9XG4gIGNvbnN0IGh0bWwgPSBhd2FpdCByZXMudGV4dCgpO1xuICBjb25zdCBjc3JmID0gcGFyc2VDc3JmKGh0bWwpO1xuICBsZXQgY29va2llSGRyID0gbWVyZ2VDb29raWVzKCcnLCBzZXRDb29raWVMaW5lcyhyZXMuaGVhZGVycykpO1xuICBsZXQgeHNyZiA9IHhzcmZGcm9tQ29va2llcyhjb29raWVIZHIpO1xuICBpZiAoIXhzcmYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbXBtYWlsZzogbWlzc2luZyBYU1JGLVRPS0VOIGNvb2tpZScpO1xuICB9XG5cbiAgY29uc3QgcG9zdFVSTCA9IGAke09SSUdJTn0vcHVibGljL2dldF9tZXNzYWdlc2A7XG4gIGNvbnN0IHJlczIgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KHBvc3RVUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBhcGlIZWFkZXJzKHBhZ2VVUkwsIGNvb2tpZUhkciwgeHNyZiksXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBfdG9rZW46IGNzcmYgfSksXG4gIH0pO1xuICBpZiAoIXJlczIub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRlbXBtYWlsZyBnZXRfbWVzc2FnZXM6ICR7cmVzMi5zdGF0dXN9YCk7XG4gIH1cbiAgY29uc3Qgd3JhcCA9IChhd2FpdCByZXMyLmpzb24oKSkgYXMgeyBzdGF0dXM/OiBib29sZWFuOyBtYWlsYm94Pzogc3RyaW5nOyBtZXNzYWdlcz86IHVua25vd25bXSB9O1xuICBpZiAoIXdyYXAuc3RhdHVzIHx8ICF3cmFwLm1haWxib3gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbXBtYWlsZzogY3JlYXRlIG1haWxib3ggZmFpbGVkJyk7XG4gIH1cbiAgY29va2llSGRyID0gbWVyZ2VDb29raWVzKGNvb2tpZUhkciwgc2V0Q29va2llTGluZXMocmVzMi5oZWFkZXJzKSk7XG4gIGNvbnN0IHhzcmYyID0geHNyZkZyb21Db29raWVzKGNvb2tpZUhkcik7XG4gIGlmICh4c3JmMikgeHNyZiA9IHhzcmYyO1xuXG4gIGNvbnN0IHRva2VuID0gYjY0RW5jb2RlSnNvbih7IGw6IGxvY2FsZSwgYzogY29va2llSGRyLCBzOiBjc3JmIH0pO1xuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IHdyYXAubWFpbGJveCxcbiAgICB0b2tlbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IHNlc3MgPSBkZWNvZGVUb2tlbih0b2tlbik7XG4gIGNvbnN0IGxvY2FsZSA9IHNlc3MubCB8fCAnemgnO1xuICBjb25zdCBwYWdlVVJMID0gYCR7T1JJR0lOfS9wdWJsaWMvJHtlbmNvZGVVUklDb21wb25lbnQobG9jYWxlKX1gO1xuICBjb25zdCBwb3N0VVJMID0gYCR7T1JJR0lOfS9wdWJsaWMvZ2V0X21lc3NhZ2VzYDtcbiAgY29uc3QgeHNyZiA9IHhzcmZGcm9tQ29va2llcyhzZXNzLmMpO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQocG9zdFVSTCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IGFwaUhlYWRlcnMocGFnZVVSTCwgc2Vzcy5jLCB4c3JmKSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IF90b2tlbjogc2Vzcy5zIH0pLFxuICB9KTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRlbXBtYWlsZyBnZXRfbWVzc2FnZXM6ICR7cmVzLnN0YXR1c31gKTtcbiAgfVxuICBjb25zdCB3cmFwID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIHsgc3RhdHVzPzogYm9vbGVhbjsgbWFpbGJveD86IHN0cmluZzsgbWVzc2FnZXM/OiB1bmtub3duW10gfTtcbiAgaWYgKCF3cmFwLnN0YXR1cykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGVtcG1haWxnOiBnZXRfbWVzc2FnZXMgZmFpbGVkJyk7XG4gIH1cbiAgaWYgKHdyYXAubWFpbGJveCAmJiB3cmFwLm1haWxib3gudHJpbSgpLnRvTG93ZXJDYXNlKCkgIT09IGVtYWlsLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0ZW1wbWFpbGc6IG1haWxib3ggbWlzbWF0Y2gnKTtcbiAgfVxuICBjb25zdCByYXdMaXN0ID0gQXJyYXkuaXNBcnJheSh3cmFwLm1lc3NhZ2VzKSA/IHdyYXAubWVzc2FnZXMgOiBbXTtcbiAgY29uc3Qgb3V0OiBFbWFpbFtdID0gW107XG4gIGZvciAoY29uc3Qgcm0gb2YgcmF3TGlzdCkge1xuICAgIGlmIChybSAmJiB0eXBlb2Ygcm0gPT09ICdvYmplY3QnKSB7XG4gICAgICBvdXQucHVzaChub3JtYWxpemVFbWFpbChybSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZW1haWwpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 支持的临时邮箱渠道标识
|
|
3
3
|
* 每个渠道对应一个第三方临时邮箱服务商
|
|
4
4
|
*/
|
|
5
|
-
export type Channel = 'tempmail' | 'tempmail-cn' | 'tmpmails' | 'ta-easy' | '10mail-wangtz' | '10minute-one' | 'linshi-email' | 'linshiyou' | 'mffac' | 'tempmail-lol' | 'chatgpt-org-uk' | 'temp-mail-io' | 'awamail' | 'temporary-email-org' | 'mail-tm' | 'mail-cx' | 'dropmail' | 'guerrillamail' | 'maildrop' | 'smail-pw' | 'boomlify' | 'minmail' | 'vip-215' | 'anonbox' | 'fake-legal' | 'moakt';
|
|
5
|
+
export type Channel = 'tempmail' | 'tempmail-cn' | 'tmpmails' | 'tempmailg' | 'ta-easy' | '10mail-wangtz' | '10minute-one' | 'linshi-email' | 'linshiyou' | 'mffac' | 'tempmail-lol' | 'chatgpt-org-uk' | 'temp-mail-io' | 'awamail' | 'temporary-email-org' | 'mail-tm' | 'mail-cx' | 'dropmail' | 'guerrillamail' | 'maildrop' | 'smail-pw' | 'boomlify' | 'minmail' | 'vip-215' | 'anonbox' | 'fake-legal' | 'moakt';
|
|
6
6
|
/**
|
|
7
7
|
* 创建临时邮箱后返回的邮箱信息
|
|
8
8
|
* Token 等认证信息由 SDK 内部维护,不对外暴露
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5pSv5oyB55qE5Li05pe26YKu566x5rig6YGT5qCH6K+GXG4gKiDmr4/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5pSv5oyB55qE5Li05pe26YKu566x5rig6YGT5qCH6K+GXG4gKiDmr4/kuKrmuKDpgZPlr7nlupTkuIDkuKrnrKzkuInmlrnkuLTml7bpgq7nrrHmnI3liqHllYZcbiAqL1xuZXhwb3J0IHR5cGUgQ2hhbm5lbCA9ICd0ZW1wbWFpbCcgfCAndGVtcG1haWwtY24nIHwgJ3RtcG1haWxzJyB8ICd0ZW1wbWFpbGcnIHwgJ3RhLWVhc3knIHwgJzEwbWFpbC13YW5ndHonIHwgJzEwbWludXRlLW9uZScgfCAnbGluc2hpLWVtYWlsJyB8ICdsaW5zaGl5b3UnIHwgJ21mZmFjJyB8ICd0ZW1wbWFpbC1sb2wnIHwgJ2NoYXRncHQtb3JnLXVrJyB8ICd0ZW1wLW1haWwtaW8nIHwgJ2F3YW1haWwnIHwgJ3RlbXBvcmFyeS1lbWFpbC1vcmcnIHwgJ21haWwtdG0nIHwgJ21haWwtY3gnIHwgJ2Ryb3BtYWlsJyB8ICdndWVycmlsbGFtYWlsJyB8ICdtYWlsZHJvcCcgfCAnc21haWwtcHcnIHwgJ2Jvb21saWZ5JyB8ICdtaW5tYWlsJyB8ICd2aXAtMjE1JyB8ICdhbm9uYm94JyB8ICdmYWtlLWxlZ2FsJyB8ICdtb2FrdCc7XG5cbi8qKlxuICog5Yib5bu65Li05pe26YKu566x5ZCO6L+U5Zue55qE6YKu566x5L+h5oGvXG4gKiBUb2tlbiDnrYnorqTor4Hkv6Hmga/nlLEgU0RLIOWGhemDqOe7tOaKpO+8jOS4jeWvueWkluaatOmcslxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsSW5mbyB7XG4gIC8qKiDliJvlu7ror6Xpgq7nrrHmiYDkvb/nlKjnmoTmuKDpgZMgKi9cbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgLyoqIOS4tOaXtumCrueuseWcsOWdgCAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiog6YKu566x6L+H5pyf5pe26Ze077yISVNPIDg2MDEg5a2X56ym5Liy5oiWIFVuaXgg5pe26Ze05oiz77yJICovXG4gIGV4cGlyZXNBdD86IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIOmCrueuseWIm+W7uuaXtumXtO+8iElTTyA4NjAxIOWtl+espuS4su+8iSAqL1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU0RLIOWGhemDqOS9v+eUqOeahOmCrueuseS/oeaBr++8jOWMheWQqyB0b2tlbiDnrYnorqTor4HmlbDmja5cbiAqIOS4jeWvueWkluWvvOWHuu+8jOeUqOaIt+aXoOazleiuv+mXrlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxFbWFpbEluZm8gZXh0ZW5kcyBFbWFpbEluZm8ge1xuICAvKiog6K6k6K+B5Luk54mM77yM55SxIFNESyDlhoXpg6jnu7TmiqQgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICog5qCH5YeG5YyW6YKu5Lu26ZmE5Lu2XG4gKiDkuI3lkIzmuKDpgZPnmoTpmYTku7blrZfmrrXlkI3kuI3lkIzvvIxTREsg57uf5LiA5b2S5LiA5YyW5Li65q2k57uT5p6EXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxBdHRhY2htZW50IHtcbiAgLyoqIOmZhOS7tuaWh+S7tuWQjSAqL1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICAvKiog6ZmE5Lu25aSn5bCP77yI5a2X6IqC77yJICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBNSU1FIOexu+Wei++8jOWmgiBhcHBsaWNhdGlvbi9wZGYgKi9cbiAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gIC8qKiDpmYTku7bkuIvovb3lnLDlnYAgKi9cbiAgdXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIOagh+WHhuWMlumCruS7tuagvOW8jyAtIOaJgOacieaPkOS+m+WVhui/lOWbnue7n+S4gOe7k+aehFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsIHtcbiAgLyoqIOmCruS7tuWUr+S4gOagh+ivhiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiog5Y+R5Lu25Lq66YKu566x5Zyw5Z2AICovXG4gIGZyb206IHN0cmluZztcbiAgLyoqIOaUtuS7tuS6uumCrueuseWcsOWdgCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiog6YKu5Lu25Li76aKYICovXG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIOe6r+aWh+acrOWGheWuuSAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBIVE1MIOWGheWuuSAqL1xuICBodG1sOiBzdHJpbmc7XG4gIC8qKiBJU08gODYwMSDmoLzlvI/nmoTml6XmnJ/lrZfnrKbkuLIgKi9cbiAgZGF0ZTogc3RyaW5nO1xuICAvKiog5piv5ZCm5bey6K+7ICovXG4gIGlzUmVhZDogYm9vbGVhbjtcbiAgLyoqIOmZhOS7tuWIl+ihqCAqL1xuICBhdHRhY2htZW50czogRW1haWxBdHRhY2htZW50W107XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGo55qE6L+U5Zue57uT5p6cXG4gKiBzdWNjZXNzIOS4uiBmYWxzZSDml7booajnpLror7fmsYLlpLHotKXvvIjph43or5XogJflsL3vvInvvIxlbWFpbHMg5Li656m65pWw57uEXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1haWxzUmVzdWx0IHtcbiAgLyoqIOaJgOS9v+eUqOeahOa4oOmBkyAqL1xuICBjaGFubmVsOiBDaGFubmVsO1xuICAvKiog5p+l6K+i55qE6YKu566x5Zyw5Z2AICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiDpgq7ku7bliJfooajvvIzlpLHotKXml7bkuLrnqbrmlbDnu4QgKi9cbiAgZW1haWxzOiBFbWFpbFtdO1xuICAvKiog6K+35rGC5piv5ZCm5oiQ5Yqf77yMZmFsc2Ug6KGo56S66YeN6K+V6ICX5bC95ZCO5LuN5aSx6LSlICovXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG59XG5cbi8qKlxuICog6YeN6K+V6YWN572uXG4gKiBTREsg5YaF6YOo5a+5572R57uc6ZSZ6K+v44CB6LaF5pe244CBNXh4IOacjeWKoeerr+mUmeivr+iHquWKqOmHjeivlVxuICogNHh4IOWuouaIt+err+mUmeivr++8iOWmguWPguaVsOmUmeivr++8ieS4jeS8mumHjeivlVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8g6Ieq5a6a5LmJ6YeN6K+V562W55Wl77ya5pyA5aSa6YeN6K+VIDMg5qyh77yM6aaW5qyh5bu26L+fIDIg56eSXG4gKiBjb25zdCBlbWFpbCA9IGF3YWl0IGdlbmVyYXRlRW1haWwoe1xuICogICBjaGFubmVsOiAnbWFpbC10bScsXG4gKiAgIHJldHJ5OiB7IG1heFJldHJpZXM6IDMsIGluaXRpYWxEZWxheTogMjAwMCB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeUNvbmZpZyB7XG4gIC8qKiDmnIDlpKfph43or5XmrKHmlbDvvIjkuI3lkKvpppbmrKHor7fmsYLvvInvvIzpu5jorqQgMiAqL1xuICBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICAvKiog5Yid5aeL6YeN6K+V5bu26L+f77yI5q+r56eS77yJ77yM6YeH55So5oyH5pWw6YCA6YG/562W55Wl77yM6buY6K6kIDEwMDAgKi9cbiAgaW5pdGlhbERlbGF5PzogbnVtYmVyO1xuICAvKiog5pyA5aSn6YeN6K+V5bu26L+f5LiK6ZmQ77yI5q+r56eS77yJ77yM6buY6K6kIDUwMDAgKi9cbiAgbWF4RGVsYXk/OiBudW1iZXI7XG4gIC8qKiDljZXmrKHor7fmsYLotoXml7bml7bpl7TvvIjmr6vnp5LvvInvvIzpu5jorqQgMTUwMDAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrHnmoTpgInpoblcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIOS9v+eUqOaMh+Wumua4oOmBk+WIm+W7uumCrueusVxuICogY29uc3QgZW1haWwgPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKHsgY2hhbm5lbDogJ21haWwtdG0nIH0pO1xuICpcbiAqIC8vIOmaj+acuumAieaLqea4oOmBk1xuICogY29uc3QgZW1haWwgPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZUVtYWlsT3B0aW9ucyB7XG4gIC8qKiDmjIflrprmuKDpgZPvvIzkuI3kvKDliJnpmo/mnLrpgInmi6kgKi9cbiAgY2hhbm5lbD86IENoYW5uZWw7XG4gIC8qKlxuICAgKiDkuLogZmFsc2Ug5pe25LuF5bCd6K+VIGBjaGFubmVsYCDmjIflrprnmoTmuKDpgZPvvIzlpLHotKXljbPov5Tlm54gbnVsbO+8jOS4jSBGYWxsYmFjayDliLDlhbbku5bmuKDpgZPjgIJcbiAgICog55So5LqO5oyJ5rig6YGT5o6i5rWL5Y+v55So5oCn44CC6buY6K6kIHRydWXvvIjkv53mjIHljp/mnInjgIzkvJjlhYjmjIflrprmuKDpgZPjgIHlpLHotKXlkI7or5Xlhbbku5bjgI3ooYzkuLrvvInjgIJcbiAgICovXG4gIGNoYW5uZWxGYWxsYmFjaz86IGJvb2xlYW47XG4gIC8qKiDpgq7nrrHmnInmlYjml7bplb8gKi9cbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiDmjIflrprpgq7nrrHln5/lkI3miJbmjqXlhaXln5/lkI3vvIjlpoIgYHRlbXBtYWlsLWNuYCDoh6rlrprkuYnln5/lkI3vvIkgKi9cbiAgZG9tYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIOmHjeivlemFjee9ru+8jOS4jeS8oOWImeS9v+eUqOm7mOiupOWAvO+8iOacgOWkmumHjeivlSAyIOasoe+8iSAqL1xuICByZXRyeT86IFJldHJ5Q29uZmlnO1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqOeahOmAiemhuVxuICogQ2hhbm5lbC9FbWFpbC9Ub2tlbiDnrYnnlLEgU0RLIOS7jiBFbWFpbEluZm8g5Lit6Ieq5Yqo6I635Y+W77yM55So5oi35peg6ZyA5omL5Yqo5Lyg6YCSXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBpbmZvID0gYXdhaXQgZ2VuZXJhdGVFbWFpbCh7IGNoYW5uZWw6ICdtYWlsLXRtJyB9KTtcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEVtYWlscyhpbmZvKTtcbiAqIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZW1haWxzLmxlbmd0aCA+IDApIHtcbiAqICAgY29uc29sZS5sb2coJ+aUtuWIsOmCruS7tjonLCByZXN1bHQuZW1haWxzKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEVtYWlsc09wdGlvbnMge1xuICAvKiog6YeN6K+V6YWN572u77yM5LiN5Lyg5YiZ5L2/55So6buY6K6k5YC877yI5pyA5aSa6YeN6K+VIDIg5qyh77yJICovXG4gIHJldHJ5PzogUmV0cnlDb25maWc7XG59XG4iXX0=
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as tempmail from './providers/tempmail';
|
|
2
2
|
import * as tempmailCn from './providers/tempmail-cn';
|
|
3
3
|
import * as tmpmails from './providers/tmpmails';
|
|
4
|
+
import * as tempmailg from './providers/tempmailg';
|
|
4
5
|
import * as taEasy from './providers/ta-easy';
|
|
5
6
|
import * as tenmailWangtz from './providers/10mail-wangtz';
|
|
6
7
|
import * as linshiEmail from './providers/linshi-email';
|
|
@@ -54,7 +55,7 @@ export {
|
|
|
54
55
|
} from './providers/linshi-token';
|
|
55
56
|
|
|
56
57
|
/** 所有支持的渠道列表,用于随机选择和遍历 */
|
|
57
|
-
const allChannels: Channel[] = ['tempmail', 'tempmail-cn', 'tmpmails', 'ta-easy', '10mail-wangtz', '10minute-one', 'linshi-email', 'linshiyou', 'mffac', 'tempmail-lol', 'chatgpt-org-uk', 'temp-mail-io', 'awamail', 'temporary-email-org', 'mail-tm', 'mail-cx', 'dropmail', 'guerrillamail', 'maildrop', 'smail-pw', 'boomlify', 'minmail', 'vip-215', 'anonbox', 'fake-legal', 'moakt'];
|
|
58
|
+
const allChannels: Channel[] = ['tempmail', 'tempmail-cn', 'tmpmails', 'tempmailg', 'ta-easy', '10mail-wangtz', '10minute-one', 'linshi-email', 'linshiyou', 'mffac', 'tempmail-lol', 'chatgpt-org-uk', 'temp-mail-io', 'awamail', 'temporary-email-org', 'mail-tm', 'mail-cx', 'dropmail', 'guerrillamail', 'maildrop', 'smail-pw', 'boomlify', 'minmail', 'vip-215', 'anonbox', 'fake-legal', 'moakt'];
|
|
58
59
|
|
|
59
60
|
/**
|
|
60
61
|
* 渠道信息,包含渠道标识、显示名称和对应网站
|
|
@@ -73,6 +74,7 @@ const channelInfoMap: Record<Channel, ChannelInfo> = {
|
|
|
73
74
|
'tempmail': { channel: 'tempmail', name: 'TempMail', website: 'tempmail.ing' },
|
|
74
75
|
'tempmail-cn': { channel: 'tempmail-cn', name: 'TempMail CN', website: 'tempmail.cn' },
|
|
75
76
|
'tmpmails': { channel: 'tmpmails', name: 'TmpMails', website: 'tmpmails.com' },
|
|
77
|
+
'tempmailg': { channel: 'tempmailg', name: 'TempMailG', website: 'tempmailg.com' },
|
|
76
78
|
'ta-easy': { channel: 'ta-easy', name: 'TA Easy', website: 'ta-easy.com' },
|
|
77
79
|
'10mail-wangtz': { channel: '10mail-wangtz', name: '10mail Wangtz', website: '10mail.wangtz.cn' },
|
|
78
80
|
'10minute-one': { channel: '10minute-one', name: '10 Minute Email', website: '10minutemail.one' },
|
|
@@ -212,6 +214,8 @@ async function generateEmailOnce(channel: Channel, options: GenerateEmailOptions
|
|
|
212
214
|
return tempmailCn.generateEmail(options.domain ?? null);
|
|
213
215
|
case 'tmpmails':
|
|
214
216
|
return tmpmails.generateEmail(options.domain ?? null);
|
|
217
|
+
case 'tempmailg':
|
|
218
|
+
return tempmailg.generateEmail(options.domain ?? null);
|
|
215
219
|
case 'ta-easy':
|
|
216
220
|
return taEasy.generateEmail();
|
|
217
221
|
case '10mail-wangtz':
|
|
@@ -337,6 +341,9 @@ async function getEmailsOnce(channel: Channel, email: string, token?: string): P
|
|
|
337
341
|
case 'tmpmails':
|
|
338
342
|
if (!token) throw new Error('internal error: token missing for tmpmails');
|
|
339
343
|
return tmpmails.getEmails(email, token);
|
|
344
|
+
case 'tempmailg':
|
|
345
|
+
if (!token) throw new Error('internal error: token missing for tempmailg');
|
|
346
|
+
return tempmailg.getEmails(email, token);
|
|
340
347
|
case 'ta-easy':
|
|
341
348
|
if (!token) throw new Error('internal error: token missing for ta-easy');
|
|
342
349
|
return taEasy.getEmails(email, token);
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tempmailg.com:无 Cookie 罐 GET /public/{locale} 拿会话,POST /public/get_messages 建邮与收信。
|
|
3
|
+
* Token 为 tmg1: + base64(JSON{locale,cookieHdr,csrf})。
|
|
4
|
+
*/
|
|
5
|
+
import { InternalEmailInfo, Email, Channel } from '../types';
|
|
6
|
+
import { normalizeEmail } from '../normalize';
|
|
7
|
+
import { fetchWithTimeout } from '../retry';
|
|
8
|
+
|
|
9
|
+
const CHANNEL: Channel = 'tempmailg';
|
|
10
|
+
const ORIGIN = 'https://tempmailg.com';
|
|
11
|
+
const TOK_PREFIX = 'tmg1:';
|
|
12
|
+
|
|
13
|
+
const CSRF_META_RE = /<meta\s+name="csrf-token"\s+content="([^"]+)"/i;
|
|
14
|
+
|
|
15
|
+
const BROWSER_UA =
|
|
16
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0';
|
|
17
|
+
|
|
18
|
+
function localeFromDomain(domain?: string | null): string {
|
|
19
|
+
const s = String(domain ?? '').trim();
|
|
20
|
+
if (!s || /[/?#\\]/.test(s)) return 'zh';
|
|
21
|
+
return s;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function setCookieLines(headers: Headers): string[] {
|
|
25
|
+
const h = headers as Headers & { getSetCookie?: () => string[] };
|
|
26
|
+
if (typeof h.getSetCookie === 'function') {
|
|
27
|
+
return h.getSetCookie();
|
|
28
|
+
}
|
|
29
|
+
const one = headers.get('set-cookie');
|
|
30
|
+
return one ? [one] : [];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function cookieMap(cookieHdr: string): Map<string, string> {
|
|
34
|
+
const m = new Map<string, string>();
|
|
35
|
+
for (const part of cookieHdr.split(';')) {
|
|
36
|
+
const p = part.trim();
|
|
37
|
+
if (!p) continue;
|
|
38
|
+
const i = p.indexOf('=');
|
|
39
|
+
if (i <= 0 || i >= p.length - 1) continue;
|
|
40
|
+
const k = p.slice(0, i).trim();
|
|
41
|
+
const v = p.slice(i + 1).trim();
|
|
42
|
+
if (k) m.set(k, v);
|
|
43
|
+
}
|
|
44
|
+
return m;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function mergeCookies(prev: string, setCookieLinesFromResp: string[]): string {
|
|
48
|
+
const m = cookieMap(prev);
|
|
49
|
+
for (const line of setCookieLinesFromResp) {
|
|
50
|
+
const nv = line.split(';')[0]?.trim();
|
|
51
|
+
if (!nv) continue;
|
|
52
|
+
const i = nv.indexOf('=');
|
|
53
|
+
if (i <= 0) continue;
|
|
54
|
+
const k = nv.slice(0, i).trim();
|
|
55
|
+
const v = nv.slice(i + 1).trim();
|
|
56
|
+
if (k) m.set(k, v);
|
|
57
|
+
}
|
|
58
|
+
return [...m.entries()]
|
|
59
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
60
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
61
|
+
.join('; ');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function xsrfFromCookies(cookieHdr: string): string {
|
|
65
|
+
const m = cookieMap(cookieHdr);
|
|
66
|
+
for (const name of ['XSRF-TOKEN', 'xsrf-token']) {
|
|
67
|
+
const v = m.get(name);
|
|
68
|
+
if (v) return v;
|
|
69
|
+
}
|
|
70
|
+
for (const [k, v] of m) {
|
|
71
|
+
if (k.toLowerCase() === 'xsrf-token' && v) return v;
|
|
72
|
+
}
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function parseCsrf(html: string): string {
|
|
77
|
+
const m = html.match(CSRF_META_RE);
|
|
78
|
+
const t = m?.[1]?.trim() ?? '';
|
|
79
|
+
if (!t) throw new Error('tempmailg: csrf-token not found in page');
|
|
80
|
+
return t;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function b64EncodeJson(obj: { l: string; c: string; s: string }): string {
|
|
84
|
+
const json = JSON.stringify(obj);
|
|
85
|
+
if (typeof Buffer !== 'undefined') {
|
|
86
|
+
return TOK_PREFIX + Buffer.from(json, 'utf8').toString('base64');
|
|
87
|
+
}
|
|
88
|
+
return TOK_PREFIX + btoa(unescape(encodeURIComponent(json)));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function decodeToken(tok: string): { l: string; c: string; s: string } {
|
|
92
|
+
if (!tok.startsWith(TOK_PREFIX)) {
|
|
93
|
+
throw new Error('tempmailg: invalid session token');
|
|
94
|
+
}
|
|
95
|
+
const raw = tok.slice(TOK_PREFIX.length);
|
|
96
|
+
let json: string;
|
|
97
|
+
if (typeof Buffer !== 'undefined') {
|
|
98
|
+
json = Buffer.from(raw, 'base64').toString('utf8');
|
|
99
|
+
} else {
|
|
100
|
+
json = decodeURIComponent(escape(atob(raw)));
|
|
101
|
+
}
|
|
102
|
+
const o = JSON.parse(json) as { l?: string; c?: string; s?: string };
|
|
103
|
+
if (!o.c || !o.s) throw new Error('tempmailg: invalid session token');
|
|
104
|
+
return { l: o.l || 'zh', c: o.c, s: o.s };
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function pageHeaders(referer: string): Record<string, string> {
|
|
108
|
+
return {
|
|
109
|
+
'User-Agent': BROWSER_UA,
|
|
110
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
111
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
112
|
+
'Cache-Control': 'no-cache',
|
|
113
|
+
DNT: '1',
|
|
114
|
+
Pragma: 'no-cache',
|
|
115
|
+
Referer: referer,
|
|
116
|
+
'Upgrade-Insecure-Requests': '1',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function apiHeaders(referer: string, cookieHdr: string, xsrf: string): Record<string, string> {
|
|
121
|
+
const h: Record<string, string> = {
|
|
122
|
+
'User-Agent': BROWSER_UA,
|
|
123
|
+
Accept: 'application/json, text/plain, */*',
|
|
124
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
125
|
+
'Content-Type': 'application/json',
|
|
126
|
+
Origin: ORIGIN,
|
|
127
|
+
Referer: referer,
|
|
128
|
+
'Cache-Control': 'no-cache',
|
|
129
|
+
Pragma: 'no-cache',
|
|
130
|
+
DNT: '1',
|
|
131
|
+
Cookie: cookieHdr,
|
|
132
|
+
};
|
|
133
|
+
if (xsrf) h['X-XSRF-TOKEN'] = xsrf;
|
|
134
|
+
return h;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export async function generateEmail(domain?: string | null): Promise<InternalEmailInfo> {
|
|
138
|
+
const locale = localeFromDomain(domain);
|
|
139
|
+
const pageURL = `${ORIGIN}/public/${encodeURIComponent(locale)}`;
|
|
140
|
+
|
|
141
|
+
const res = await fetchWithTimeout(pageURL, { headers: pageHeaders(pageURL) });
|
|
142
|
+
if (!res.ok) {
|
|
143
|
+
throw new Error(`tempmailg page: ${res.status}`);
|
|
144
|
+
}
|
|
145
|
+
const html = await res.text();
|
|
146
|
+
const csrf = parseCsrf(html);
|
|
147
|
+
let cookieHdr = mergeCookies('', setCookieLines(res.headers));
|
|
148
|
+
let xsrf = xsrfFromCookies(cookieHdr);
|
|
149
|
+
if (!xsrf) {
|
|
150
|
+
throw new Error('tempmailg: missing XSRF-TOKEN cookie');
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const postURL = `${ORIGIN}/public/get_messages`;
|
|
154
|
+
const res2 = await fetchWithTimeout(postURL, {
|
|
155
|
+
method: 'POST',
|
|
156
|
+
headers: apiHeaders(pageURL, cookieHdr, xsrf),
|
|
157
|
+
body: JSON.stringify({ _token: csrf }),
|
|
158
|
+
});
|
|
159
|
+
if (!res2.ok) {
|
|
160
|
+
throw new Error(`tempmailg get_messages: ${res2.status}`);
|
|
161
|
+
}
|
|
162
|
+
const wrap = (await res2.json()) as { status?: boolean; mailbox?: string; messages?: unknown[] };
|
|
163
|
+
if (!wrap.status || !wrap.mailbox) {
|
|
164
|
+
throw new Error('tempmailg: create mailbox failed');
|
|
165
|
+
}
|
|
166
|
+
cookieHdr = mergeCookies(cookieHdr, setCookieLines(res2.headers));
|
|
167
|
+
const xsrf2 = xsrfFromCookies(cookieHdr);
|
|
168
|
+
if (xsrf2) xsrf = xsrf2;
|
|
169
|
+
|
|
170
|
+
const token = b64EncodeJson({ l: locale, c: cookieHdr, s: csrf });
|
|
171
|
+
return {
|
|
172
|
+
channel: CHANNEL,
|
|
173
|
+
email: wrap.mailbox,
|
|
174
|
+
token,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export async function getEmails(email: string, token: string): Promise<Email[]> {
|
|
179
|
+
const sess = decodeToken(token);
|
|
180
|
+
const locale = sess.l || 'zh';
|
|
181
|
+
const pageURL = `${ORIGIN}/public/${encodeURIComponent(locale)}`;
|
|
182
|
+
const postURL = `${ORIGIN}/public/get_messages`;
|
|
183
|
+
const xsrf = xsrfFromCookies(sess.c);
|
|
184
|
+
|
|
185
|
+
const res = await fetchWithTimeout(postURL, {
|
|
186
|
+
method: 'POST',
|
|
187
|
+
headers: apiHeaders(pageURL, sess.c, xsrf),
|
|
188
|
+
body: JSON.stringify({ _token: sess.s }),
|
|
189
|
+
});
|
|
190
|
+
if (!res.ok) {
|
|
191
|
+
throw new Error(`tempmailg get_messages: ${res.status}`);
|
|
192
|
+
}
|
|
193
|
+
const wrap = (await res.json()) as { status?: boolean; mailbox?: string; messages?: unknown[] };
|
|
194
|
+
if (!wrap.status) {
|
|
195
|
+
throw new Error('tempmailg: get_messages failed');
|
|
196
|
+
}
|
|
197
|
+
if (wrap.mailbox && wrap.mailbox.trim().toLowerCase() !== email.trim().toLowerCase()) {
|
|
198
|
+
throw new Error('tempmailg: mailbox mismatch');
|
|
199
|
+
}
|
|
200
|
+
const rawList = Array.isArray(wrap.messages) ? wrap.messages : [];
|
|
201
|
+
const out: Email[] = [];
|
|
202
|
+
for (const rm of rawList) {
|
|
203
|
+
if (rm && typeof rm === 'object') {
|
|
204
|
+
out.push(normalizeEmail(rm as Record<string, unknown>, email));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return out;
|
|
208
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 支持的临时邮箱渠道标识
|
|
3
3
|
* 每个渠道对应一个第三方临时邮箱服务商
|
|
4
4
|
*/
|
|
5
|
-
export type Channel = 'tempmail' | 'tempmail-cn' | 'tmpmails' | 'ta-easy' | '10mail-wangtz' | '10minute-one' | 'linshi-email' | 'linshiyou' | 'mffac' | 'tempmail-lol' | 'chatgpt-org-uk' | 'temp-mail-io' | 'awamail' | 'temporary-email-org' | 'mail-tm' | 'mail-cx' | 'dropmail' | 'guerrillamail' | 'maildrop' | 'smail-pw' | 'boomlify' | 'minmail' | 'vip-215' | 'anonbox' | 'fake-legal' | 'moakt';
|
|
5
|
+
export type Channel = 'tempmail' | 'tempmail-cn' | 'tmpmails' | 'tempmailg' | 'ta-easy' | '10mail-wangtz' | '10minute-one' | 'linshi-email' | 'linshiyou' | 'mffac' | 'tempmail-lol' | 'chatgpt-org-uk' | 'temp-mail-io' | 'awamail' | 'temporary-email-org' | 'mail-tm' | 'mail-cx' | 'dropmail' | 'guerrillamail' | 'maildrop' | 'smail-pw' | 'boomlify' | 'minmail' | 'vip-215' | 'anonbox' | 'fake-legal' | 'moakt';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* 创建临时邮箱后返回的邮箱信息
|