@authme/core 2.2.0-rc.9 → 2.2.1-rc.1

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/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [2.2.1-rc.1](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.1-rc.0...v2.2.1-rc.1) (2022-12-28)
6
+
7
+ ## [2.2.1-rc.0](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0...v2.2.1-rc.0) (2022-12-22)
8
+
9
+ ### Features
10
+
11
+ - implement block fraud config ([6da235f](https://github.com/AuthMe01/web-client-sdk/commit/6da235fdefea62acdf7f0ef1e0c73583a11378f8))
12
+
13
+ ### Bug Fixes
14
+
15
+ - 1. fix lang packge initSDK loading error. 2. modify translate service extent method. 3. implement sdk-demo custom lang simple. ([db5f8b9](https://github.com/AuthMe01/web-client-sdk/commit/db5f8b99d50f0ddfd7a2645c9de9dacab7591458))
16
+
17
+ ## [2.2.0](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.13...v2.2.0) (2022-12-19)
18
+
19
+ ## [2.2.0-rc.13](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.12...v2.2.0-rc.13) (2022-12-19)
20
+
21
+ ## [2.2.0-rc.12](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.11...v2.2.0-rc.12) (2022-12-16)
22
+
23
+ ## [2.2.0-rc.11](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.10...v2.2.0-rc.11) (2022-12-16)
24
+
25
+ ## [2.2.0-rc.10](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.9...v2.2.0-rc.10) (2022-12-15)
26
+
5
27
  ## [2.2.0-rc.9](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.8...v2.2.0-rc.9) (2022-12-09)
6
28
 
7
29
  ### Bug Fixes
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@authme/core",
3
- "version": "2.2.0-rc.9",
3
+ "version": "2.2.1-rc.1",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@authme/util": "2.2.0-rc.9",
8
+ "@authme/util": "2.2.1-rc.1",
9
9
  "three": "^0.136.0",
10
+ "lottie-web": "^5.9.2",
10
11
  "tslib": "^2.3.0"
11
12
  }
12
13
  }
package/src/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export * from './lib/core';
2
2
  export * from './lib/model';
3
3
  export * from './lib/data-access';
4
4
  export * from './lib/translate';
5
+ export * from './lib/authme-log';
package/src/index.js CHANGED
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./lib/core"), exports);
5
5
  tslib_1.__exportStar(require("./lib/model"), exports);
6
6
  tslib_1.__exportStar(require("./lib/data-access"), exports);
7
7
  tslib_1.__exportStar(require("./lib/translate"), exports);
8
+ tslib_1.__exportStar(require("./lib/authme-log"), exports);
8
9
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,sDAA4B;AAC5B,4DAAkC;AAClC,0DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,sDAA4B;AAC5B,4DAAkC;AAClC,0DAAgC;AAChC,2DAAiC"}
@@ -0,0 +1 @@
1
+ export { debugLog } from '@authme/util';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debugLog = void 0;
4
+ var util_1 = require("@authme/util");
5
+ Object.defineProperty(exports, "debugLog", { enumerable: true, get: function () { return util_1.debugLog; } });
6
+ //# sourceMappingURL=authme-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authme-log.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/authme-log.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAA/B,gGAAA,QAAQ,OAAA"}
package/src/lib/core.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export declare function core(): string;
2
- export declare function debugLog(message?: any, ...others: any[]): void;
package/src/lib/core.js CHANGED
@@ -1,14 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.debugLog = exports.core = void 0;
3
+ exports.core = void 0;
4
4
  function core() {
5
5
  return 'core';
6
6
  }
7
7
  exports.core = core;
8
- function debugLog(message, ...others) {
9
- if (new URLSearchParams(location.search).get('authme-debug') === 'true') {
10
- console.log(message, ...others);
11
- }
12
- }
13
- exports.debugLog = debugLog;
14
8
  //# sourceMappingURL=core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/core.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAFD,oBAEC;AAED,SAAgB,QAAQ,CAAC,OAAa,EAAE,GAAG,MAAa;IACtD,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,MAAM,EAAE;QACvE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;KACjC;AACH,CAAC;AAJD,4BAIC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/core.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAFD,oBAEC"}
@@ -1,26 +1 @@
1
- export declare class AuthmeError {
2
- private _cause;
3
- private _code;
4
- constructor(code: ErrorCode, cause?: any);
5
- get message(): string;
6
- setCode(code: ErrorCode): void;
7
- get code(): ErrorCode;
8
- get cause(): any;
9
- }
10
- export declare enum ErrorCode {
11
- BROWSER_NOT_SUPPORT = 100,
12
- ENGINE_INIT_ERROR = 101,
13
- ENGINE_MODULE_IS_INITIALIZING = 102,
14
- ENGINE_MODULE_INIT_ERROR = 103,
15
- RECOGNITION_NOT_AVAILABLE = 104,
16
- RECOGNITION_ERROR = 105,
17
- INVALID_AUTH_ERROR = 106,
18
- LIVENESS_NOT_PASSED = 201,
19
- ID_RECOGNITION_CONFIRM_INFO_ERROR = 301,
20
- ANTI_FRAUD_TIMEOUT_ERROR = 401,
21
- SDK_INTERNAL_ERROR = 900,
22
- NETWORK_ERROR = 901,
23
- HTTP_ERROR_RESPONSE = 902,
24
- USER_CANCEL = 903,
25
- CAMERA_NOT_SUPPORT = 904
26
- }
1
+ export { AuthmeError, ErrorCode } from '@authme/util';
@@ -1,48 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ErrorCode = exports.AuthmeError = void 0;
4
- class AuthmeError {
5
- constructor(code, cause = null) {
6
- this._cause = null;
7
- this._code = null;
8
- this._code = code;
9
- this._cause = cause;
10
- }
11
- get message() {
12
- return '[Authme SDK Error] Code: ' + this.code;
13
- }
14
- setCode(code) {
15
- this._code = code;
16
- }
17
- get code() {
18
- return this._code;
19
- }
20
- get cause() {
21
- return this._cause;
22
- }
23
- }
24
- exports.AuthmeError = AuthmeError;
25
- var ErrorCode;
26
- (function (ErrorCode) {
27
- // 1XX for engine
28
- ErrorCode[ErrorCode["BROWSER_NOT_SUPPORT"] = 100] = "BROWSER_NOT_SUPPORT";
29
- ErrorCode[ErrorCode["ENGINE_INIT_ERROR"] = 101] = "ENGINE_INIT_ERROR";
30
- ErrorCode[ErrorCode["ENGINE_MODULE_IS_INITIALIZING"] = 102] = "ENGINE_MODULE_IS_INITIALIZING";
31
- ErrorCode[ErrorCode["ENGINE_MODULE_INIT_ERROR"] = 103] = "ENGINE_MODULE_INIT_ERROR";
32
- ErrorCode[ErrorCode["RECOGNITION_NOT_AVAILABLE"] = 104] = "RECOGNITION_NOT_AVAILABLE";
33
- ErrorCode[ErrorCode["RECOGNITION_ERROR"] = 105] = "RECOGNITION_ERROR";
34
- ErrorCode[ErrorCode["INVALID_AUTH_ERROR"] = 106] = "INVALID_AUTH_ERROR";
35
- // 2 for LIVENESS
36
- ErrorCode[ErrorCode["LIVENESS_NOT_PASSED"] = 201] = "LIVENESS_NOT_PASSED";
37
- // 3 for ID-Recognition
38
- ErrorCode[ErrorCode["ID_RECOGNITION_CONFIRM_INFO_ERROR"] = 301] = "ID_RECOGNITION_CONFIRM_INFO_ERROR";
39
- // 4 for Anti-fraud
40
- ErrorCode[ErrorCode["ANTI_FRAUD_TIMEOUT_ERROR"] = 401] = "ANTI_FRAUD_TIMEOUT_ERROR";
41
- // 9 for common
42
- ErrorCode[ErrorCode["SDK_INTERNAL_ERROR"] = 900] = "SDK_INTERNAL_ERROR";
43
- ErrorCode[ErrorCode["NETWORK_ERROR"] = 901] = "NETWORK_ERROR";
44
- ErrorCode[ErrorCode["HTTP_ERROR_RESPONSE"] = 902] = "HTTP_ERROR_RESPONSE";
45
- ErrorCode[ErrorCode["USER_CANCEL"] = 903] = "USER_CANCEL";
46
- ErrorCode[ErrorCode["CAMERA_NOT_SUPPORT"] = 904] = "CAMERA_NOT_SUPPORT";
47
- })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
4
+ var util_1 = require("@authme/util");
5
+ Object.defineProperty(exports, "AuthmeError", { enumerable: true, get: function () { return util_1.AuthmeError; } });
6
+ Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return util_1.ErrorCode; } });
48
7
  //# sourceMappingURL=authme-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authme-error.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/model/authme-error.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IAItB,YAAY,IAAe,EAAE,QAAa,IAAI;QAHtC,WAAM,GAAQ,IAAI,CAAC;QACnB,UAAK,GAAqB,IAAI,CAAC;QAGrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,2BAA2B,GAAG,IAAI,CAAC,IAAI,CAAC;IACjD,CAAC;IAEM,OAAO,CAAC,IAAe;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAvBD,kCAuBC;AAED,IAAY,SAyBX;AAzBD,WAAY,SAAS;IACnB,iBAAiB;IACjB,yEAAyB,CAAA;IACzB,qEAAuB,CAAA;IACvB,6FAAmC,CAAA;IACnC,mFAA8B,CAAA;IAC9B,qFAA+B,CAAA;IAC/B,qEAAuB,CAAA;IACvB,uEAAwB,CAAA;IAExB,iBAAiB;IACjB,yEAAyB,CAAA;IAEzB,uBAAuB;IACvB,qGAAuC,CAAA;IAEvC,mBAAmB;IACnB,mFAA8B,CAAA;IAE9B,eAAe;IACf,uEAAwB,CAAA;IACxB,6DAAmB,CAAA;IACnB,yEAAyB,CAAA;IACzB,yDAAiB,CAAA;IACjB,uEAAwB,CAAA;AAC1B,CAAC,EAzBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAyBpB"}
1
+ {"version":3,"file":"authme-error.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/model/authme-error.ts"],"names":[],"mappings":";;;AAAA,qCAAsD;AAA7C,mGAAA,WAAW,OAAA;AAAE,iGAAA,SAAS,OAAA"}
@@ -1,6 +1,7 @@
1
1
  import { AuthmeLanguage } from '../enum/language.enum';
2
2
  declare class TranslateService {
3
- private dict;
3
+ private originalDict;
4
+ private customDict;
4
5
  private languageOptions;
5
6
  private currentLang;
6
7
  fetchSource(path: string): Promise<boolean>;
@@ -5,7 +5,8 @@ const tslib_1 = require("tslib");
5
5
  const language_enum_1 = require("../enum/language.enum");
6
6
  class TranslateService {
7
7
  constructor() {
8
- this.dict = {};
8
+ this.originalDict = {};
9
+ this.customDict = {};
9
10
  this.languageOptions = [language_enum_1.AuthmeLanguage['zh-TW'], language_enum_1.AuthmeLanguage['en-US']];
10
11
  this.currentLang = language_enum_1.AuthmeLanguage['zh-TW'];
11
12
  }
@@ -14,7 +15,7 @@ class TranslateService {
14
15
  for (let i = 0; i < this.languageOptions.length; i++) {
15
16
  const resp = yield fetch(`${path}/${this.languageOptions[i]}.json`);
16
17
  if (resp.ok) {
17
- this.dict[this.languageOptions[i]] = yield resp.json();
18
+ this.originalDict[this.languageOptions[i]] = yield resp.json();
18
19
  }
19
20
  }
20
21
  return true;
@@ -24,7 +25,7 @@ class TranslateService {
24
25
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
26
  const resp = yield fetch(`${path}`);
26
27
  if (resp.ok) {
27
- this.dict[lang] = Object.assign(Object.assign({}, this.dict[lang]), (yield resp.json()));
28
+ this.customDict[lang] = yield resp.json();
28
29
  }
29
30
  return true;
30
31
  });
@@ -35,7 +36,8 @@ class TranslateService {
35
36
  });
36
37
  }
37
38
  translate(key, args = {}) {
38
- let str = this.dict[this.currentLang][key] || key;
39
+ var _a, _b, _c, _d;
40
+ let str = (_d = (_b = (_a = this.customDict[this.currentLang]) === null || _a === void 0 ? void 0 : _a[key]) !== null && _b !== void 0 ? _b : (_c = this.originalDict[this.currentLang]) === null || _c === void 0 ? void 0 : _c[key]) !== null && _d !== void 0 ? _d : key;
39
41
  if (Object.keys(args).length > 0) {
40
42
  Object.keys(args).forEach((key) => {
41
43
  str = str.replace(new RegExp(`{{${key}}}`, 'g'), args[key].toString());
@@ -1 +1 @@
1
- {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/translate/translate.ts"],"names":[],"mappings":";;;;AAAA,yDAAuD;AAEvD,MAAM,gBAAgB;IAAtB;QACU,SAAI,GAAiD,EAAE,CAAC;QAExD,oBAAe,GAAG,CAAC,8BAAc,CAAC,OAAO,CAAC,EAAE,8BAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,gBAAW,GAAG,8BAAc,CAAC,OAAO,CAAC,CAAC;IAqChD,CAAC;IAnCO,WAAW,CAAC,IAAY;;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACpE,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxD;aACF;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,YAAY,CAAC,IAAY,EAAE,IAAoB;;YACnD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAK,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAE,CAAC;aAClE;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,OAAO,CAAC,IAAoB;;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;KAAA;IAED,SAAS,CAAC,GAAW,EAAE,OAA2C,EAAE;QAClE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAElD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AAEM,yBAAQ,GAA4B,IAAI,CAAC;AAGlD,SAAS,oBAAoB;IAC3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAC9B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;KACpD;IACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;AACnC,CAAC;AAEQ,oDAAoB"}
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/translate/translate.ts"],"names":[],"mappings":";;;;AAAA,yDAAuD;AAGvD,MAAM,gBAAgB;IAAtB;QACU,iBAAY,GAAkB,EAAE,CAAC;QACjC,eAAU,GAAkB,EAAE,CAAC;QAE/B,oBAAe,GAAG,CAAC,8BAAc,CAAC,OAAO,CAAC,EAAE,8BAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,gBAAW,GAAG,8BAAc,CAAC,OAAO,CAAC,CAAC;IAyChD,CAAC;IAvCO,WAAW,CAAC,IAAY;;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACpE,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;iBAChE;aACF;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,YAAY,CAAC,IAAY,EAAE,IAAoB;;YACnD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;aAC3C;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,OAAO,CAAC,IAAoB;;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;KAAA;IAED,SAAS,CAAC,GAAW,EAAE,OAA2C,EAAE;;QAClE,IAAI,GAAG,GACL,MAAA,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,0CAAG,GAAG,CAAC,mCACxC,MAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,0CAAG,GAAG,CAAC,mCAC1C,GAAG,CAAC;QAEN,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AAEM,yBAAQ,GAA4B,IAAI,CAAC;AAGlD,SAAS,oBAAoB;IAC3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAC9B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;KACpD;IACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;AACnC,CAAC;AAEQ,oDAAoB"}