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 CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://badge.fury.io/js/tempmail-sdk.svg)](https://www.npmjs.com/package/tempmail-sdk)
4
4
  [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
5
5
 
6
- 临时邮箱 SDK(TypeScript/Node.js),支持 **25** 个邮箱服务提供商,所有渠道返回**统一标准化格式**。
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
- 共 **25** 个,顺序与 `listChannels()` / 随机尝试顺序一致(与 `src/index.ts` 中 `allChannels` 相同;无 `tempmailg`,与 Rust/Python/C 一致)。
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0dBLG9DQUVDO0FBUUQsd0NBRUM7QUFvQkQsc0NBd0NDO0FBc0dELDhCQXVDQztBQXBVRCwrREFBaUQ7QUFDakQsb0VBQXNEO0FBQ3RELCtEQUFpRDtBQUNqRCw0REFBOEM7QUFDOUMseUVBQTJEO0FBQzNELHNFQUF3RDtBQUN4RCxpRUFBbUQ7QUFDbkQseURBQTJDO0FBQzNDLHNFQUF3RDtBQUN4RCx5RUFBMkQ7QUFDM0QscUVBQXVEO0FBQ3ZELDZEQUErQztBQUMvQyxtRkFBcUU7QUFDckUsNERBQThDO0FBQzlDLDREQUE4QztBQUM5QywrREFBaUQ7QUFDakQseUVBQTJEO0FBQzNELHVFQUF5RDtBQUN6RCw4REFBZ0Q7QUFDaEQsK0RBQWlEO0FBQ2pELDZEQUErQztBQUMvQyw0REFBOEM7QUFDOUMsNkRBQStDO0FBQy9DLGtFQUFvRDtBQUNwRCx5REFBMkM7QUFDM0MsdUVBQXlEO0FBRXpELG1DQUEyRDtBQUMzRCwyQ0FBOEM7QUFDOUMscUNBQWtDO0FBQ2xDLHFDQUFnRDtBQUloRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBQ3BELHlDQUE2QztBQUFwQywyR0FBQSxjQUFjLE9BQUE7QUFDdkIsaUNBQTJGO0FBQWxGLGtHQUFBLFNBQVMsT0FBQTtBQUFFLDhHQUFBLHFCQUFxQixPQUFBO0FBQUUseUdBQUEsZ0JBQWdCLE9BQUE7QUFFM0QsbUNBQTZGO0FBQXBGLGtHQUFBLFFBQVEsT0FBQTtBQUFjLHFHQUFBLFdBQVcsT0FBQTtBQUFFLHFHQUFBLFdBQVcsT0FBQTtBQUFFLG1HQUFBLFNBQVMsT0FBQTtBQUFFLGdHQUFBLE1BQU0sT0FBQTtBQUMxRSxtQ0FBMkQ7QUFBdkMsbUdBQUEsU0FBUyxPQUFB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LEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsNENBQTRDLENBQUMsQ0FBQztZQUM3RixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBbkNELDBDQW1DQztBQUVELGtCQUFlO0lBQ2IsWUFBWTtJQUNaLGNBQWM7SUFDZCxhQUFhO0lBQ2IsU0FBUztJQUNULGVBQWU7SUFDZixTQUFTLEVBQVQsa0JBQVM7SUFDVCxTQUFTLEVBQVQsa0JBQVM7Q0FDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGVtcG1haWwgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG1haWwnO1xuaW1wb3J0ICogYXMgdGVtcG1haWxDbiBmcm9tICcuL3Byb3ZpZGVycy90ZW1wbWFpbC1jbic7XG5pbXBvcnQgKiBhcyB0bXBtYWlscyBmcm9tICcuL3Byb3ZpZGVycy90bXBtYWlscyc7XG5pbXBvcnQgKiBhcyB0YUVhc3kgZnJvbSAnLi9wcm92aWRlcnMvdGEtZWFzeSc7XG5pbXBvcnQgKiBhcyB0ZW5tYWlsV2FuZ3R6IGZyb20gJy4vcHJvdmlkZXJzLzEwbWFpbC13YW5ndHonO1xuaW1wb3J0ICogYXMgbGluc2hpRW1haWwgZnJvbSAnLi9wcm92aWRlcnMvbGluc2hpLWVtYWlsJztcbmltcG9ydCAqIGFzIGxpbnNoaXlvdSBmcm9tICcuL3Byb3ZpZGVycy9saW5zaGl5b3UnO1xuaW1wb3J0ICogYXMgbWZmYWMgZnJvbSAnLi9wcm92aWRlcnMvbWZmYWMnO1xuaW1wb3J0ICogYXMgdGVtcG1haWxMb2wgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG1haWwtbG9sJztcbmltcG9ydCAqIGFzIGNoYXRncHRPcmdVayBmcm9tICcuL3Byb3ZpZGVycy9jaGF0Z3B0LW9yZy11ayc7XG5pbXBvcnQgKiBhcyB0ZW1wTWFpbElPIGZyb20gJy4vcHJvdmlkZXJzL3RlbXAtbWFpbC1pbyc7XG5pbXBvcnQgKiBhcyBhd2FtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2F3YW1haWwnO1xuaW1wb3J0ICogYXMgdGVtcG9yYXJ5RW1haWxPcmcgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG9yYXJ5LWVtYWlsLW9yZyc7XG5pbXBvcnQgKiBhcyBtYWlsVG0gZnJvbSAnLi9wcm92aWRlcnMvbWFpbC10bSc7XG5pbXBvcnQgKiBhcyBtYWlsQ3ggZnJvbSAnLi9wcm92aWRlcnMvbWFpbC1jeCc7XG5pbXBvcnQgKiBhcyBkcm9wbWFpbCBmcm9tICcuL3Byb3ZpZGVycy9kcm9wbWFpbCc7XG5pbXBvcnQgKiBhcyBndWVycmlsbGFtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2d1ZXJyaWxsYW1haWwnO1xuaW1wb3J0ICogYXMgbWFpbGRyb3BQcm92aWRlciBmcm9tICcuL3Byb3ZpZGVycy9tYWlsZHJvcCc7XG5pbXBvcnQgKiBhcyBzbWFpbFB3IGZyb20gJy4vcHJvdmlkZXJzL3NtYWlsLXB3JztcbmltcG9ydCAqIGFzIGJvb21saWZ5IGZyb20gJy4vcHJvdmlkZXJzL2Jvb21saWZ5JztcbmltcG9ydCAqIGFzIG1pbm1haWwgZnJvbSAnLi9wcm92aWRlcnMvbWlubWFpbCc7XG5pbXBvcnQgKiBhcyB2aXAyMTUgZnJvbSAnLi9wcm92aWRlcnMvdmlwLTIxNSc7XG5pbXBvcnQgKiBhcyBhbm9uYm94IGZyb20gJy4vcHJvdmlkZXJzL2Fub25ib3gnO1xuaW1wb3J0ICogYXMgZmFrZUxlZ2FsIGZyb20gJy4vcHJvdmlkZXJzL2Zha2UtbGVnYWwnO1xuaW1wb3J0ICogYXMgbW9ha3QgZnJvbSAnLi9wcm92aWRlcnMvbW9ha3QnO1xuaW1wb3J0ICogYXMgdGVubWludXRlT25lIGZyb20gJy4vcHJvdmlkZXJzLzEwbWludXRlLW9uZSc7XG5pbXBvcnQgeyBDaGFubmVsLCBFbWFpbEluZm8sIEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgR2V0RW1haWxzUmVzdWx0LCBHZW5lcmF0ZUVtYWlsT3B0aW9ucywgR2V0RW1haWxzT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFJldHJ5LCB3aXRoUmV0cnlXaXRoQXR0ZW1wdHMgfSBmcm9tICcuL3JldHJ5JztcbmltcG9ydCB7IHJlcG9ydFRlbGVtZXRyeSB9IGZyb20gJy4vdGVsZW1ldHJ5JztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHNldENvbmZpZywgZ2V0Q29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG5leHBvcnQgeyBDaGFubmVsLCBFbWFpbEluZm8sIEVtYWlsLCBFbWFpbEF0dGFjaG1lbnQsIEdldEVtYWlsc1Jlc3VsdCwgR2VuZXJhdGVFbWFpbE9wdGlvbnMsIEdldEVtYWlsc09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTREsg5YaF6YOoIHRva2VuIOWtmOWCqFxuICog5L2/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWxnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbGcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3SUEsc0NBdUNDO0FBRUQsOEJBOEJDO0FBMU1ELDRDQUE4QztBQUM5QyxvQ0FBNEM7QUFFNUMsTUFBTSxPQUFPLEdBQVksV0FBVyxDQUFDO0FBQ3JDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLFlBQVksR0FBRyxnREFBZ0QsQ0FBQztBQUV0RSxNQUFNLFVBQVUsR0FDZCwrSEFBK0gsQ0FBQztBQUVsSSxTQUFTLGdCQUFnQixDQUFDLE1BQXNCO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQWdCO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQXNELENBQUM7SUFDakUsSUFBSSxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsU0FBaUI7SUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsU0FBUztRQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUM7WUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBWSxFQUFFLHNCQUFnQztJQUNsRSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsS0FBSyxNQUFNLElBQUksSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEVBQUU7WUFBRSxTQUFTO1FBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQztZQUFFLFNBQVM7UUFDckIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDO1lBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsU0FBaUI7SUFDeEMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssWUFBWSxJQUFJLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBWTtJQUM3QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvQixJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUNuRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxHQUF3QztJQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDbEMsT0FBTyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxPQUFPLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBVztJQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsSUFBSSxJQUFZLENBQUM7SUFDakIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBMkMsQ0FBQztJQUNyRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3RFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsT0FBZTtJQUNsQyxPQUFPO1FBQ0wsWUFBWSxFQUFFLFVBQVU7UUFDeEIsTUFBTSxFQUFFLGlFQUFpRTtRQUN6RSxpQkFBaUIsRUFBRSx5QkFBeUI7UUFDNUMsZUFBZSxFQUFFLFVBQVU7UUFDM0IsR0FBRyxFQUFFLEdBQUc7UUFDUixNQUFNLEVBQUUsVUFBVTtRQUNsQixPQUFPLEVBQUUsT0FBTztRQUNoQiwyQkFBMkIsRUFBRSxHQUFHO0tBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsT0FBZSxFQUFFLFNBQWlCLEVBQUUsSUFBWTtJQUNsRSxNQUFNLENBQUMsR0FBMkI7UUFDaEMsWUFBWSxFQUFFLFVBQVU7UUFDeEIsTUFBTSxFQUFFLG1DQUFtQztRQUMzQyxpQkFBaUIsRUFBRSx5QkFBeUI7UUFDNUMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLGVBQWUsRUFBRSxVQUFVO1FBQzNCLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLEdBQUcsRUFBRSxHQUFHO1FBQ1IsTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FBQztJQUNGLElBQUksSUFBSTtRQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbkMsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBQyxNQUFzQjtJQUN4RCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sV0FBVyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBRWpFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSx3QkFBZ0IsRUFBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixJQUFJLFNBQVMsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLElBQUksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLE1BQU0sc0JBQXNCLENBQUM7SUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLHdCQUFnQixFQUFDLE9BQU8sRUFBRTtRQUMzQyxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUM7UUFDN0MsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDdkMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFpRSxDQUFDO0lBQ2pHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUs7UUFBRSxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRXhCLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRSxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ25CLEtBQUs7S0FDTixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDMUQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxXQUFXLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDakUsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLHNCQUFzQixDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLHdCQUFnQixFQUFDLE9BQU8sRUFBRTtRQUMxQyxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN6QyxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQWlFLENBQUM7SUFDaEcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ3JGLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRSxNQUFNLEdBQUcsR0FBWSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixJQUFJLEVBQUUsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUEsMEJBQWMsRUFBQyxFQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHRlbXBtYWlsZy5jb23vvJrml6AgQ29va2llIOe9kCBHRVQgL3B1YmxpYy97bG9jYWxlfSDmi7/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/kuKrmuKDpgZPlr7nlupTkuIDkuKrnrKzkuInmlrnkuLTml7bpgq7nrrHmnI3liqHllYZcbiAqL1xuZXhwb3J0IHR5cGUgQ2hhbm5lbCA9ICd0ZW1wbWFpbCcgfCAndGVtcG1haWwtY24nIHwgJ3RtcG1haWxzJyB8ICd0YS1lYXN5JyB8ICcxMG1haWwtd2FuZ3R6JyB8ICcxMG1pbnV0ZS1vbmUnIHwgJ2xpbnNoaS1lbWFpbCcgfCAnbGluc2hpeW91JyB8ICdtZmZhYycgfCAndGVtcG1haWwtbG9sJyB8ICdjaGF0Z3B0LW9yZy11aycgfCAndGVtcC1tYWlsLWlvJyB8ICdhd2FtYWlsJyB8ICd0ZW1wb3JhcnktZW1haWwtb3JnJyB8ICdtYWlsLXRtJyB8ICdtYWlsLWN4JyB8ICdkcm9wbWFpbCcgfCAnZ3VlcnJpbGxhbWFpbCcgfCAnbWFpbGRyb3AnIHwgJ3NtYWlsLXB3JyB8ICdib29tbGlmeScgfCAnbWlubWFpbCcgfCAndmlwLTIxNScgfCAnYW5vbmJveCcgfCAnZmFrZS1sZWdhbCcgfCAnbW9ha3QnO1xuXG4vKipcbiAqIOWIm+W7uuS4tOaXtumCrueuseWQjui/lOWbnueahOmCrueuseS/oeaBr1xuICogVG9rZW4g562J6K6k6K+B5L+h5oGv55SxIFNESyDlhoXpg6jnu7TmiqTvvIzkuI3lr7nlpJbmmrTpnLJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbEluZm8ge1xuICAvKiog5Yib5bu66K+l6YKu566x5omA5L2/55So55qE5rig6YGTICovXG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIC8qKiDkuLTml7bpgq7nrrHlnLDlnYAgKi9cbiAgZW1haWw6IHN0cmluZztcbiAgLyoqIOmCrueusei/h+acn+aXtumXtO+8iElTTyA4NjAxIOWtl+espuS4suaIliBVbml4IOaXtumXtOaIs++8iSAqL1xuICBleHBpcmVzQXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKiDpgq7nrrHliJvlu7rml7bpl7TvvIhJU08gODYwMSDlrZfnrKbkuLLvvIkgKi9cbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNESyDlhoXpg6jkvb/nlKjnmoTpgq7nrrHkv6Hmga/vvIzljIXlkKsgdG9rZW4g562J6K6k6K+B5pWw5o2uXG4gKiDkuI3lr7nlpJblr7zlh7rvvIznlKjmiLfml6Dms5Xorr/pl65cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsRW1haWxJbmZvIGV4dGVuZHMgRW1haWxJbmZvIHtcbiAgLyoqIOiupOivgeS7pOeJjO+8jOeUsSBTREsg5YaF6YOo57u05oqkICovXG4gIHRva2VuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIOagh+WHhuWMlumCruS7tumZhOS7tlxuICog5LiN5ZCM5rig6YGT55qE6ZmE5Lu25a2X5q615ZCN5LiN5ZCM77yMU0RLIOe7n+S4gOW9kuS4gOWMluS4uuatpOe7k+aehFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsQXR0YWNobWVudCB7XG4gIC8qKiDpmYTku7bmlofku7blkI0gKi9cbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgLyoqIOmZhOS7tuWkp+Wwj++8iOWtl+iKgu+8iSAqL1xuICBzaXplPzogbnVtYmVyO1xuICAvKiogTUlNRSDnsbvlnovvvIzlpoIgYXBwbGljYXRpb24vcGRmICovXG4gIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAvKiog6ZmE5Lu25LiL6L295Zyw5Z2AICovXG4gIHVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiDmoIflh4bljJbpgq7ku7bmoLzlvI8gLSDmiYDmnInmj5DkvpvllYbov5Tlm57nu5/kuIDnu5PmnoRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbCB7XG4gIC8qKiDpgq7ku7bllK/kuIDmoIfor4YgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIOWPkeS7tuS6uumCrueuseWcsOWdgCAqL1xuICBmcm9tOiBzdHJpbmc7XG4gIC8qKiDmlLbku7bkurrpgq7nrrHlnLDlnYAgKi9cbiAgdG86IHN0cmluZztcbiAgLyoqIOmCruS7tuS4u+mimCAqL1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIC8qKiDnuq/mlofmnKzlhoXlrrkgKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogSFRNTCDlhoXlrrkgKi9cbiAgaHRtbDogc3RyaW5nO1xuICAvKiogSVNPIDg2MDEg5qC85byP55qE5pel5pyf5a2X56ym5LiyICovXG4gIGRhdGU6IHN0cmluZztcbiAgLyoqIOaYr+WQpuW3suivuyAqL1xuICBpc1JlYWQ6IGJvb2xlYW47XG4gIC8qKiDpmYTku7bliJfooaggKi9cbiAgYXR0YWNobWVudHM6IEVtYWlsQXR0YWNobWVudFtdO1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqOeahOi/lOWbnue7k+aenFxuICogc3VjY2VzcyDkuLogZmFsc2Ug5pe26KGo56S66K+35rGC5aSx6LSl77yI6YeN6K+V6ICX5bC977yJ77yMZW1haWxzIOS4uuepuuaVsOe7hFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEVtYWlsc1Jlc3VsdCB7XG4gIC8qKiDmiYDkvb/nlKjnmoTmuKDpgZMgKi9cbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgLyoqIOafpeivoueahOmCrueuseWcsOWdgCAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiog6YKu5Lu25YiX6KGo77yM5aSx6LSl5pe25Li656m65pWw57uEICovXG4gIGVtYWlsczogRW1haWxbXTtcbiAgLyoqIOivt+axguaYr+WQpuaIkOWKn++8jGZhbHNlIOihqOekuumHjeivleiAl+WwveWQjuS7jeWksei0pSAqL1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIOmHjeivlemFjee9rlxuICogU0RLIOWGhemDqOWvuee9kee7nOmUmeivr+OAgei2heaXtuOAgTV4eCDmnI3liqHnq6/plJnor6/oh6rliqjph43or5VcbiAqIDR4eCDlrqLmiLfnq6/plJnor6/vvIjlpoLlj4LmlbDplJnor6/vvInkuI3kvJrph43or5VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIOiHquWumuS5iemHjeivleetlueVpe+8muacgOWkmumHjeivlSAzIOasoe+8jOmmluasoeW7tui/nyAyIOenklxuICogY29uc3QgZW1haWwgPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKHtcbiAqICAgY2hhbm5lbDogJ21haWwtdG0nLFxuICogICByZXRyeTogeyBtYXhSZXRyaWVzOiAzLCBpbml0aWFsRGVsYXk6IDIwMDAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlDb25maWcge1xuICAvKiog5pyA5aSn6YeN6K+V5qyh5pWw77yI5LiN5ZCr6aaW5qyh6K+35rGC77yJ77yM6buY6K6kIDIgKi9cbiAgbWF4UmV0cmllcz86IG51bWJlcjtcbiAgLyoqIOWIneWni+mHjeivleW7tui/n++8iOavq+enku+8ie+8jOmHh+eUqOaMh+aVsOmAgOmBv+etlueVpe+8jOm7mOiupCAxMDAwICovXG4gIGluaXRpYWxEZWxheT86IG51bWJlcjtcbiAgLyoqIOacgOWkp+mHjeivleW7tui/n+S4iumZkO+8iOavq+enku+8ie+8jOm7mOiupCA1MDAwICovXG4gIG1heERlbGF5PzogbnVtYmVyO1xuICAvKiog5Y2V5qyh6K+35rGC6LaF5pe25pe26Ze077yI5q+r56eS77yJ77yM6buY6K6kIDE1MDAwICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICog5Yib5bu65Li05pe26YKu566x55qE6YCJ6aG5XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyDkvb/nlKjmjIflrprmuKDpgZPliJvlu7rpgq7nrrFcbiAqIGNvbnN0IGVtYWlsID0gYXdhaXQgZ2VuZXJhdGVFbWFpbCh7IGNoYW5uZWw6ICdtYWlsLXRtJyB9KTtcbiAqXG4gKiAvLyDpmo/mnLrpgInmi6nmuKDpgZNcbiAqIGNvbnN0IGVtYWlsID0gYXdhaXQgZ2VuZXJhdGVFbWFpbCgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVFbWFpbE9wdGlvbnMge1xuICAvKiog5oyH5a6a5rig6YGT77yM5LiN5Lyg5YiZ6ZqP5py66YCJ5oupICovXG4gIGNoYW5uZWw/OiBDaGFubmVsO1xuICAvKipcbiAgICog5Li6IGZhbHNlIOaXtuS7heWwneivlSBgY2hhbm5lbGAg5oyH5a6a55qE5rig6YGT77yM5aSx6LSl5Y2z6L+U5ZueIG51bGzvvIzkuI0gRmFsbGJhY2sg5Yiw5YW25LuW5rig6YGT44CCXG4gICAqIOeUqOS6juaMiea4oOmBk+aOoua1i+WPr+eUqOaAp+OAgum7mOiupCB0cnVl77yI5L+d5oyB5Y6f5pyJ44CM5LyY5YWI5oyH5a6a5rig6YGT44CB5aSx6LSl5ZCO6K+V5YW25LuW44CN6KGM5Li677yJ44CCXG4gICAqL1xuICBjaGFubmVsRmFsbGJhY2s/OiBib29sZWFuO1xuICAvKiog6YKu566x5pyJ5pWI5pe26ZW/ICovXG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICAvKiog5oyH5a6a6YKu566x5Z+f5ZCN5oiW5o6l5YWl5Z+f5ZCN77yI5aaCIGB0ZW1wbWFpbC1jbmAg6Ieq5a6a5LmJ5Z+f5ZCN77yJICovXG4gIGRvbWFpbj86IHN0cmluZyB8IG51bGw7XG4gIC8qKiDph43or5XphY3nva7vvIzkuI3kvKDliJnkvb/nlKjpu5jorqTlgLzvvIjmnIDlpJrph43or5UgMiDmrKHvvIkgKi9cbiAgcmV0cnk/OiBSZXRyeUNvbmZpZztcbn1cblxuLyoqXG4gKiDojrflj5bpgq7ku7bliJfooajnmoTpgInpoblcbiAqIENoYW5uZWwvRW1haWwvVG9rZW4g562J55SxIFNESyDku44gRW1haWxJbmZvIOS4reiHquWKqOiOt+WPlu+8jOeUqOaIt+aXoOmcgOaJi+WKqOS8oOmAklxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgaW5mbyA9IGF3YWl0IGdlbmVyYXRlRW1haWwoeyBjaGFubmVsOiAnbWFpbC10bScgfSk7XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRFbWFpbHMoaW5mbyk7XG4gKiBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmVtYWlscy5sZW5ndGggPiAwKSB7XG4gKiAgIGNvbnNvbGUubG9nKCfmlLbliLDpgq7ku7Y6JywgcmVzdWx0LmVtYWlscyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRFbWFpbHNPcHRpb25zIHtcbiAgLyoqIOmHjeivlemFjee9ru+8jOS4jeS8oOWImeS9v+eUqOm7mOiupOWAvO+8iOacgOWkmumHjeivlSAyIOasoe+8iSAqL1xuICByZXRyeT86IFJldHJ5Q29uZmlnO1xufVxuIl19
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tempmail-sdk",
3
- "version": "1.2.1",
3
+ "version": "1.2.2-dev",
4
4
  "description": "临时邮箱 SDK - 支持 25 个临时邮箱服务商",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
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
  * 创建临时邮箱后返回的邮箱信息