@sitecore-content-sdk/analytics-core 2.1.0-canary.10 → 2.1.0-canary.11

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.
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/sitecore/content-sdk/issues"
8
8
  },
9
9
  "dependencies": {
10
- "@sitecore-content-sdk/core": "2.1.0-canary.10",
10
+ "@sitecore-content-sdk/core": "2.1.0-canary.11",
11
11
  "debug": "^4.4.3",
12
12
  "isbot": "^5.1.39"
13
13
  },
@@ -74,6 +74,6 @@
74
74
  "api-extractor": "npm run build && api-extractor run --local --verbose",
75
75
  "api-extractor:verify": "api-extractor run"
76
76
  },
77
- "version": "2.1.0-canary.10",
78
- "gitHead": "f4f6bb8a4ac09e5d721e8a4a361c8ad980997e6c"
77
+ "version": "2.1.0-canary.11",
78
+ "gitHead": "c9e3b397b4f0402f6044dafd3dfd300070cd9dc1"
79
79
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBot = exports.BOT_DETECTION_COOKIE = void 0;
3
+ exports.isBotServerSide = exports.isBotClientSide = exports.isBot = exports.BOT_DETECTION_COOKIE = void 0;
4
4
  exports.getBotCookieClientSide = getBotCookieClientSide;
5
5
  exports.getBotCookieServerSide = getBotCookieServerSide;
6
6
  const isbot_1 = require("isbot");
@@ -12,6 +12,7 @@ const utils_1 = require("../utils");
12
12
  exports.BOT_DETECTION_COOKIE = 'sc_bot';
13
13
  /**
14
14
  * A function that checks if visitor is a bot.
15
+ * Performs a check based on the user agent.
15
16
  * @param {string} userAgent - The user agent of the visitor
16
17
  * @returns {boolean} True if the visitor is a bot, false otherwise
17
18
  * @internal
@@ -20,6 +21,30 @@ const isBot = (userAgent) => {
20
21
  return (0, isbot_1.isbot)(userAgent);
21
22
  };
22
23
  exports.isBot = isBot;
24
+ /**
25
+ * A function that checks if visitor is a bot.
26
+ * Performs a check based on the bot cookie and the user agent.
27
+ * Only available on the client-side.
28
+ * @returns {boolean} True if the visitor is a bot, false otherwise
29
+ * @internal
30
+ */
31
+ const isBotClientSide = () => {
32
+ return !!getBotCookieClientSide() || (0, isbot_1.isbot)(navigator.userAgent);
33
+ };
34
+ exports.isBotClientSide = isBotClientSide;
35
+ /**
36
+ * A function that checks if visitor is a bot.
37
+ * Performs a check based on the bot cookie and the user agent.
38
+ * Only available on the server-side.
39
+ * @param {string} cookie - The cookie string.
40
+ * @param {string} userAgent - The user agent of the visitor
41
+ * @returns {boolean} True if the visitor is a bot, false otherwise
42
+ * @internal
43
+ */
44
+ const isBotServerSide = (cookie, userAgent) => {
45
+ return !!getBotCookieServerSide(cookie) || (0, isbot_1.isbot)(userAgent);
46
+ };
47
+ exports.isBotServerSide = isBotServerSide;
23
48
  /**
24
49
  * A function that gets the bot cookie.
25
50
  * @returns {string | undefined} The value of the bot cookie, or undefined if the cookie is not found.
@@ -18,8 +18,7 @@ function analyticsBrowserAdapter() {
18
18
  return {
19
19
  type: 'browser',
20
20
  isBot: () => {
21
- const botCookie = (0, bot_detection_1.getBotCookieClientSide)();
22
- return !!botCookie || (0, bot_detection_1.isBot)(navigator.userAgent);
21
+ return (0, bot_detection_1.isBotClientSide)();
23
22
  },
24
23
  getClientId: () => {
25
24
  return (0, utils_1.getCookieValueClientSide)((0, plugin_1.getAnalyticsPlugin)().options.cookies.name);
@@ -21,8 +21,7 @@ function analyticsServerAdapter(request, response) {
21
21
  return {
22
22
  type: 'server',
23
23
  isBot: () => {
24
- const botCookie = (0, bot_detection_1.getBotCookieServerSide)(request.headers.cookie);
25
- return !!botCookie || (0, bot_detection_1.isBot)(request.headers['user-agent']);
24
+ return (0, bot_detection_1.isBotServerSide)(request.headers.cookie, request.headers['user-agent']);
26
25
  },
27
26
  getClientId: () => {
28
27
  return getClientId(request);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BOT_DETECTION_COOKIE = exports.getBotCookieClientSide = exports.getBotCookieServerSide = exports.isBot = exports.ANALYTICS_PLUGIN_NAME = exports.getAnalyticsPlugin = exports.fetchClientIdFromEdgeProxy = exports.CLIENT_ID_COOKIE_NAME = exports.CORRELATION_ID_HEADER = exports.LIBRARY_VERSION = exports.DEFAULT_COOKIE_EXPIRY_DAYS = exports.DAILY_SECONDS = exports.COOKIE_NAME_PREFIX = exports.API_VERSION = exports.generateCorrelationId = exports.pageName = exports.language = exports.getDefaultCookieAttributes = void 0;
3
+ exports.BOT_DETECTION_COOKIE = exports.isBotServerSide = exports.isBotClientSide = exports.isBot = exports.ANALYTICS_PLUGIN_NAME = exports.getAnalyticsPlugin = exports.fetchClientIdFromEdgeProxy = exports.CLIENT_ID_COOKIE_NAME = exports.CORRELATION_ID_HEADER = exports.LIBRARY_VERSION = exports.DEFAULT_COOKIE_EXPIRY_DAYS = exports.DAILY_SECONDS = exports.COOKIE_NAME_PREFIX = exports.API_VERSION = exports.generateCorrelationId = exports.pageName = exports.language = exports.getDefaultCookieAttributes = void 0;
4
4
  var get_default_cookie_attributes_1 = require("./cookie/get-default-cookie-attributes");
5
5
  Object.defineProperty(exports, "getDefaultCookieAttributes", { enumerable: true, get: function () { return get_default_cookie_attributes_1.getDefaultCookieAttributes; } });
6
6
  var infer_1 = require("./infer/infer");
@@ -24,6 +24,6 @@ var const_1 = require("./initialization/const");
24
24
  Object.defineProperty(exports, "ANALYTICS_PLUGIN_NAME", { enumerable: true, get: function () { return const_1.ANALYTICS_PLUGIN_NAME; } });
25
25
  var bot_detection_1 = require("./bot-detection/bot-detection");
26
26
  Object.defineProperty(exports, "isBot", { enumerable: true, get: function () { return bot_detection_1.isBot; } });
27
- Object.defineProperty(exports, "getBotCookieServerSide", { enumerable: true, get: function () { return bot_detection_1.getBotCookieServerSide; } });
28
- Object.defineProperty(exports, "getBotCookieClientSide", { enumerable: true, get: function () { return bot_detection_1.getBotCookieClientSide; } });
27
+ Object.defineProperty(exports, "isBotClientSide", { enumerable: true, get: function () { return bot_detection_1.isBotClientSide; } });
28
+ Object.defineProperty(exports, "isBotServerSide", { enumerable: true, get: function () { return bot_detection_1.isBotServerSide; } });
29
29
  Object.defineProperty(exports, "BOT_DETECTION_COOKIE", { enumerable: true, get: function () { return bot_detection_1.BOT_DETECTION_COOKIE; } });
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/sitecore/content-sdk/issues"
8
8
  },
9
9
  "dependencies": {
10
- "@sitecore-content-sdk/core": "2.1.0-canary.10",
10
+ "@sitecore-content-sdk/core": "2.1.0-canary.11",
11
11
  "debug": "^4.4.3",
12
12
  "isbot": "^5.1.39"
13
13
  },
@@ -74,6 +74,6 @@
74
74
  "api-extractor": "npm run build && api-extractor run --local --verbose",
75
75
  "api-extractor:verify": "api-extractor run"
76
76
  },
77
- "version": "2.1.0-canary.10",
78
- "gitHead": "f4f6bb8a4ac09e5d721e8a4a361c8ad980997e6c"
77
+ "version": "2.1.0-canary.11",
78
+ "gitHead": "c9e3b397b4f0402f6044dafd3dfd300070cd9dc1"
79
79
  }
@@ -7,6 +7,7 @@ import { getCookieServerSide, getCookieValueClientSide } from '../utils';
7
7
  export const BOT_DETECTION_COOKIE = 'sc_bot';
8
8
  /**
9
9
  * A function that checks if visitor is a bot.
10
+ * Performs a check based on the user agent.
10
11
  * @param {string} userAgent - The user agent of the visitor
11
12
  * @returns {boolean} True if the visitor is a bot, false otherwise
12
13
  * @internal
@@ -14,6 +15,28 @@ export const BOT_DETECTION_COOKIE = 'sc_bot';
14
15
  export const isBot = (userAgent) => {
15
16
  return isbot(userAgent);
16
17
  };
18
+ /**
19
+ * A function that checks if visitor is a bot.
20
+ * Performs a check based on the bot cookie and the user agent.
21
+ * Only available on the client-side.
22
+ * @returns {boolean} True if the visitor is a bot, false otherwise
23
+ * @internal
24
+ */
25
+ export const isBotClientSide = () => {
26
+ return !!getBotCookieClientSide() || isbot(navigator.userAgent);
27
+ };
28
+ /**
29
+ * A function that checks if visitor is a bot.
30
+ * Performs a check based on the bot cookie and the user agent.
31
+ * Only available on the server-side.
32
+ * @param {string} cookie - The cookie string.
33
+ * @param {string} userAgent - The user agent of the visitor
34
+ * @returns {boolean} True if the visitor is a bot, false otherwise
35
+ * @internal
36
+ */
37
+ export const isBotServerSide = (cookie, userAgent) => {
38
+ return !!getBotCookieServerSide(cookie) || isbot(userAgent);
39
+ };
17
40
  /**
18
41
  * A function that gets the bot cookie.
19
42
  * @returns {string | undefined} The value of the bot cookie, or undefined if the cookie is not found.
@@ -1,4 +1,4 @@
1
- import { getBotCookieClientSide, isBot } from '../bot-detection/bot-detection';
1
+ import { isBotClientSide } from '../bot-detection/bot-detection';
2
2
  import { COOKIE_NAME_PREFIX, fetchClientIdFromEdgeProxy, getDefaultCookieAttributes, } from '../internal';
3
3
  import { createCookieString, getCookieValueClientSide } from '../utils';
4
4
  import { deleteCookie } from '../utils/cookies/delete-cookie';
@@ -15,8 +15,7 @@ export function analyticsBrowserAdapter() {
15
15
  return {
16
16
  type: 'browser',
17
17
  isBot: () => {
18
- const botCookie = getBotCookieClientSide();
19
- return !!botCookie || isBot(navigator.userAgent);
18
+ return isBotClientSide();
20
19
  },
21
20
  getClientId: () => {
22
21
  return getCookieValueClientSide(getAnalyticsPlugin().options.cookies.name);
@@ -1,4 +1,4 @@
1
- import { getBotCookieServerSide, isBot } from '../bot-detection/bot-detection';
1
+ import { isBotServerSide } from '../bot-detection/bot-detection';
2
2
  import { COOKIE_NAME_PREFIX, fetchClientIdFromEdgeProxy, getDefaultCookieAttributes, } from '../internal';
3
3
  import { createCookieString, getCookieServerSide } from '../utils';
4
4
  import { getAnalyticsPlugin } from './plugin';
@@ -18,8 +18,7 @@ export function analyticsServerAdapter(request, response) {
18
18
  return {
19
19
  type: 'server',
20
20
  isBot: () => {
21
- const botCookie = getBotCookieServerSide(request.headers.cookie);
22
- return !!botCookie || isBot(request.headers['user-agent']);
21
+ return isBotServerSide(request.headers.cookie, request.headers['user-agent']);
23
22
  },
24
23
  getClientId: () => {
25
24
  return getClientId(request);
@@ -5,4 +5,4 @@ export { API_VERSION, COOKIE_NAME_PREFIX, DAILY_SECONDS, DEFAULT_COOKIE_EXPIRY_D
5
5
  export { fetchClientIdFromEdgeProxy } from './client-id/fetch-client-id-from-edge-proxy';
6
6
  export { getAnalyticsPlugin } from './initialization/plugin';
7
7
  export { ANALYTICS_PLUGIN_NAME } from './initialization/const';
8
- export { isBot, getBotCookieServerSide, getBotCookieClientSide, BOT_DETECTION_COOKIE } from './bot-detection/bot-detection';
8
+ export { isBot, isBotClientSide, isBotServerSide, BOT_DETECTION_COOKIE } from './bot-detection/bot-detection';
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/sitecore/content-sdk/issues"
8
8
  },
9
9
  "dependencies": {
10
- "@sitecore-content-sdk/core": "2.1.0-canary.10",
10
+ "@sitecore-content-sdk/core": "2.1.0-canary.11",
11
11
  "debug": "^4.4.3",
12
12
  "isbot": "^5.1.39"
13
13
  },
@@ -74,6 +74,6 @@
74
74
  "api-extractor": "npm run build && api-extractor run --local --verbose",
75
75
  "api-extractor:verify": "api-extractor run"
76
76
  },
77
- "version": "2.1.0-canary.10",
78
- "gitHead": "f4f6bb8a4ac09e5d721e8a4a361c8ad980997e6c"
77
+ "version": "2.1.0-canary.11",
78
+ "gitHead": "c9e3b397b4f0402f6044dafd3dfd300070cd9dc1"
79
79
  }
@@ -5,11 +5,30 @@
5
5
  export declare const BOT_DETECTION_COOKIE = "sc_bot";
6
6
  /**
7
7
  * A function that checks if visitor is a bot.
8
+ * Performs a check based on the user agent.
8
9
  * @param {string} userAgent - The user agent of the visitor
9
10
  * @returns {boolean} True if the visitor is a bot, false otherwise
10
11
  * @internal
11
12
  */
12
13
  export declare const isBot: (userAgent?: string | null) => boolean;
14
+ /**
15
+ * A function that checks if visitor is a bot.
16
+ * Performs a check based on the bot cookie and the user agent.
17
+ * Only available on the client-side.
18
+ * @returns {boolean} True if the visitor is a bot, false otherwise
19
+ * @internal
20
+ */
21
+ export declare const isBotClientSide: () => boolean;
22
+ /**
23
+ * A function that checks if visitor is a bot.
24
+ * Performs a check based on the bot cookie and the user agent.
25
+ * Only available on the server-side.
26
+ * @param {string} cookie - The cookie string.
27
+ * @param {string} userAgent - The user agent of the visitor
28
+ * @returns {boolean} True if the visitor is a bot, false otherwise
29
+ * @internal
30
+ */
31
+ export declare const isBotServerSide: (cookie?: string, userAgent?: string | null) => boolean;
13
32
  /**
14
33
  * A function that gets the bot cookie.
15
34
  * @returns {string | undefined} The value of the bot cookie, or undefined if the cookie is not found.
@@ -1 +1 @@
1
- {"version":3,"file":"bot-detection.d.ts","sourceRoot":"","sources":["../../../src/bot-detection/bot-detection.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,YAAY,MAAM,GAAG,IAAI,KAAG,OAEjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1E"}
1
+ {"version":3,"file":"bot-detection.d.ts","sourceRoot":"","sources":["../../../src/bot-detection/bot-detection.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,YAAY,MAAM,GAAG,IAAI,KAAG,OAEjD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QAAO,OAElC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,YAAY,MAAM,GAAG,IAAI,KAAG,OAE5E,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-adapter.d.ts","sourceRoot":"","sources":["../../../src/initialization/browser-adapter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,uBAAuB,CAkDjE"}
1
+ {"version":3,"file":"browser-adapter.d.ts","sourceRoot":"","sources":["../../../src/initialization/browser-adapter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,uBAAuB,CAiDjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-adapter.d.ts","sourceRoot":"","sources":["../../../src/initialization/server-adapter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,SAAS,eAAe,EAC/B,QAAQ,SAAS,eAAe,EAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,sBAAsB,CAqF9D"}
1
+ {"version":3,"file":"server-adapter.d.ts","sourceRoot":"","sources":["../../../src/initialization/server-adapter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,SAAS,eAAe,EAC/B,QAAQ,SAAS,eAAe,EAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,sBAAsB,CAoF9D"}
@@ -9,5 +9,5 @@ export { ANALYTICS_PLUGIN_NAME } from './initialization/const';
9
9
  export type { AnalyticsPlugin } from './initialization/types';
10
10
  export { AnalyticsAdapter, AnalyticsOptions } from './initialization/types';
11
11
  export type { VisitorIds } from './interfaces';
12
- export { isBot, getBotCookieServerSide, getBotCookieClientSide, BOT_DETECTION_COOKIE } from './bot-detection/bot-detection';
12
+ export { isBot, isBotClientSide, isBotServerSide, BOT_DETECTION_COOKIE } from './bot-detection/bot-detection';
13
13
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}