@webex/internal-plugin-encryption 3.0.0-beta.2 → 3.0.0-beta.200
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 +1 -3
- package/dist/config.js +0 -9
- package/dist/config.js.map +1 -1
- package/dist/encryption.js +25 -74
- package/dist/encryption.js.map +1 -1
- package/dist/ensure-buffer.browser.js +0 -12
- package/dist/ensure-buffer.browser.js.map +1 -1
- package/dist/ensure-buffer.js +5 -12
- package/dist/ensure-buffer.js.map +1 -1
- package/dist/index.js +7 -33
- package/dist/index.js.map +1 -1
- package/dist/kms-batcher.js +6 -30
- package/dist/kms-batcher.js.map +1 -1
- package/dist/kms-certificate-validation.js +24 -90
- package/dist/kms-certificate-validation.js.map +1 -1
- package/dist/kms-dry-error-interceptor.js +1 -23
- package/dist/kms-dry-error-interceptor.js.map +1 -1
- package/dist/kms-errors.js +9 -50
- package/dist/kms-errors.js.map +1 -1
- package/dist/kms.js +88 -218
- package/dist/kms.js.map +1 -1
- package/package.json +15 -15
- package/src/config.js +3 -3
- package/src/encryption.js +74 -57
- package/src/ensure-buffer.browser.js +0 -1
- package/src/ensure-buffer.js +5 -5
- package/src/index.js +120 -96
- package/src/kms-batcher.js +50 -44
- package/src/kms-certificate-validation.js +48 -50
- package/src/kms-dry-error-interceptor.js +8 -4
- package/src/kms-errors.js +27 -16
- package/src/kms.js +219 -212
- package/test/integration/spec/encryption.js +313 -231
- package/test/integration/spec/kms.js +532 -405
- package/test/integration/spec/payload-transfom.js +69 -69
- package/test/unit/spec/encryption.js +21 -18
- package/test/unit/spec/kms-certificate-validation.js +76 -34
- package/test/unit/spec/kms.js +103 -0
package/dist/kms-errors.js
CHANGED
|
@@ -1,54 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
|
|
5
4
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
6
|
-
|
|
7
5
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
8
|
-
|
|
9
6
|
_Object$defineProperty(exports, "__esModule", {
|
|
10
7
|
value: true
|
|
11
8
|
});
|
|
12
|
-
|
|
13
9
|
exports.KmsTimeoutError = exports.KmsError = exports.DryError = void 0;
|
|
14
|
-
|
|
15
10
|
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-properties"));
|
|
16
|
-
|
|
17
11
|
var _apply = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/apply"));
|
|
18
|
-
|
|
19
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
20
|
-
|
|
21
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
22
|
-
|
|
23
14
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
24
|
-
|
|
25
15
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
26
|
-
|
|
27
16
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
28
|
-
|
|
29
17
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
30
|
-
|
|
31
18
|
var _common = require("@webex/common");
|
|
32
|
-
|
|
33
19
|
var _webexCore = require("@webex/webex-core");
|
|
34
|
-
|
|
35
20
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
36
|
-
|
|
37
21
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
38
|
-
|
|
39
22
|
/**
|
|
40
23
|
* Error class for KMS errors
|
|
41
24
|
*/
|
|
42
25
|
var KmsError = /*#__PURE__*/function (_Exception) {
|
|
43
26
|
(0, _inherits2.default)(KmsError, _Exception);
|
|
44
|
-
|
|
45
27
|
var _super = _createSuper(KmsError);
|
|
46
|
-
|
|
47
28
|
function KmsError() {
|
|
48
29
|
(0, _classCallCheck2.default)(this, KmsError);
|
|
49
30
|
return _super.apply(this, arguments);
|
|
50
31
|
}
|
|
51
|
-
|
|
52
32
|
(0, _createClass2.default)(KmsError, [{
|
|
53
33
|
key: "parse",
|
|
54
34
|
value:
|
|
@@ -77,19 +57,21 @@ var KmsError = /*#__PURE__*/function (_Exception) {
|
|
|
77
57
|
}
|
|
78
58
|
});
|
|
79
59
|
var message = typeof body === 'string' ? body : body.reason;
|
|
80
|
-
|
|
81
60
|
if (!message) {
|
|
82
61
|
message = this.constructor.defaultMessage;
|
|
83
62
|
}
|
|
84
|
-
|
|
85
63
|
if (body.status) {
|
|
86
64
|
message += "\nKMS_RESPONSE_STATUS: ".concat(body.status);
|
|
87
65
|
}
|
|
88
|
-
|
|
89
66
|
if (body.requestId) {
|
|
90
67
|
message += "\nKMS_REQUEST_ID: ".concat(body.requestId);
|
|
91
68
|
}
|
|
92
|
-
|
|
69
|
+
if (body.statusCode) {
|
|
70
|
+
message += "\nKMS_STATUS_CODE: ".concat(body.statusCode);
|
|
71
|
+
}
|
|
72
|
+
if (body.errorCode) {
|
|
73
|
+
message += "\nKMS_ErrorCode: ".concat(body.errorCode);
|
|
74
|
+
}
|
|
93
75
|
return message;
|
|
94
76
|
}
|
|
95
77
|
}]);
|
|
@@ -98,21 +80,15 @@ var KmsError = /*#__PURE__*/function (_Exception) {
|
|
|
98
80
|
/**
|
|
99
81
|
* Thrown when an expected KMSResponse is not received in a timely manner
|
|
100
82
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
83
|
exports.KmsError = KmsError;
|
|
104
84
|
(0, _defineProperty2.default)(KmsError, "defaultMessage", 'An unknown error occurred while communicating with the kms. This implies we received an error response without a body.');
|
|
105
|
-
|
|
106
85
|
var KmsTimeoutError = /*#__PURE__*/function (_KmsError) {
|
|
107
86
|
(0, _inherits2.default)(KmsTimeoutError, _KmsError);
|
|
108
|
-
|
|
109
87
|
var _super2 = _createSuper(KmsTimeoutError);
|
|
110
|
-
|
|
111
88
|
function KmsTimeoutError() {
|
|
112
89
|
(0, _classCallCheck2.default)(this, KmsTimeoutError);
|
|
113
90
|
return _super2.apply(this, arguments);
|
|
114
91
|
}
|
|
115
|
-
|
|
116
92
|
(0, _createClass2.default)(KmsTimeoutError, [{
|
|
117
93
|
key: "parse",
|
|
118
94
|
value:
|
|
@@ -123,22 +99,18 @@ var KmsTimeoutError = /*#__PURE__*/function (_KmsError) {
|
|
|
123
99
|
*/
|
|
124
100
|
function parse() {
|
|
125
101
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
102
|
+
_ref$request = _ref.request,
|
|
103
|
+
request = _ref$request === void 0 ? {} : _ref$request,
|
|
104
|
+
timeout = _ref.timeout;
|
|
130
105
|
var message = "The KMS did not respond within ".concat(timeout ? "".concat(timeout, " milliseconds") : 'a timely fashion');
|
|
131
|
-
|
|
132
106
|
if (request) {
|
|
133
107
|
if (request.method && request.uri) {
|
|
134
108
|
message += "\nKMS_REQUEST: ".concat(request.method, " ").concat(request.uri);
|
|
135
109
|
}
|
|
136
|
-
|
|
137
110
|
if (request.requestId) {
|
|
138
111
|
message += "\nKMS_REQUEST_ID: ".concat(request.requestId);
|
|
139
112
|
}
|
|
140
113
|
}
|
|
141
|
-
|
|
142
114
|
return message;
|
|
143
115
|
}
|
|
144
116
|
}]);
|
|
@@ -147,20 +119,14 @@ var KmsTimeoutError = /*#__PURE__*/function (_KmsError) {
|
|
|
147
119
|
/**
|
|
148
120
|
* Emitted when a REST request includes an encrypter error
|
|
149
121
|
*/
|
|
150
|
-
|
|
151
|
-
|
|
152
122
|
exports.KmsTimeoutError = KmsTimeoutError;
|
|
153
|
-
|
|
154
123
|
var DryError = /*#__PURE__*/function (_WebexHttpError) {
|
|
155
124
|
(0, _inherits2.default)(DryError, _WebexHttpError);
|
|
156
|
-
|
|
157
125
|
var _super3 = _createSuper(DryError);
|
|
158
|
-
|
|
159
126
|
function DryError() {
|
|
160
127
|
(0, _classCallCheck2.default)(this, DryError);
|
|
161
128
|
return _super3.apply(this, arguments);
|
|
162
129
|
}
|
|
163
|
-
|
|
164
130
|
(0, _createClass2.default)(DryError, [{
|
|
165
131
|
key: "parse",
|
|
166
132
|
value:
|
|
@@ -172,11 +138,9 @@ var DryError = /*#__PURE__*/function (_WebexHttpError) {
|
|
|
172
138
|
(0, _apply.default)(_webexCore.WebexHttpError.prototype.parse, this, [reason._res]);
|
|
173
139
|
var body = reason._res.body.message;
|
|
174
140
|
var message = body.reason || body;
|
|
175
|
-
|
|
176
141
|
if (!message) {
|
|
177
142
|
message = this.constructor.defaultMessage;
|
|
178
143
|
}
|
|
179
|
-
|
|
180
144
|
if (this.options.url) {
|
|
181
145
|
message += "\n".concat(this.options.method, " ").concat(this.options.url);
|
|
182
146
|
} else if (this.options.uri) {
|
|
@@ -184,17 +148,13 @@ var DryError = /*#__PURE__*/function (_WebexHttpError) {
|
|
|
184
148
|
} else {
|
|
185
149
|
message += "\n".concat(this.options.method, " ").concat(this.options.service.toUpperCase(), "/").concat(this.options.resource);
|
|
186
150
|
}
|
|
187
|
-
|
|
188
151
|
message += "\nWEBEX_TRACKING_ID: ".concat(this.options.headers.trackingid);
|
|
189
|
-
|
|
190
152
|
if (body.status) {
|
|
191
153
|
message += "\nKMS_RESPONSE_STATUS: ".concat(body.status);
|
|
192
154
|
}
|
|
193
|
-
|
|
194
155
|
if (body.requestId) {
|
|
195
156
|
message += "\nKMS_REQUEST_ID: ".concat(body.requestId);
|
|
196
157
|
}
|
|
197
|
-
|
|
198
158
|
(0, _defineProperties.default)(this, {
|
|
199
159
|
reason: {
|
|
200
160
|
enumerable: false,
|
|
@@ -214,7 +174,6 @@ var DryError = /*#__PURE__*/function (_WebexHttpError) {
|
|
|
214
174
|
}]);
|
|
215
175
|
return DryError;
|
|
216
176
|
}(_webexCore.WebexHttpError);
|
|
217
|
-
|
|
218
177
|
exports.DryError = DryError;
|
|
219
178
|
(0, _defineProperty2.default)(DryError, "defaultMessage", 'An unknown error was received from a service that proxies to the KMS');
|
|
220
179
|
//# sourceMappingURL=kms-errors.js.map
|
package/dist/kms-errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KmsError","body","enumerable","value","reason","requestId","status","message","constructor","defaultMessage","Exception","KmsTimeoutError","request","timeout","method","uri","DryError","WebexHttpError","prototype","parse","_res","options","url","service","toUpperCase","resource","headers","trackingid"],"sources":["kms-errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Exception} from '@webex/common';\nimport {WebexHttpError} from '@webex/webex-core';\n\n/**\n * Error class for KMS errors\n */\nexport class KmsError extends Exception {\n static defaultMessage
|
|
1
|
+
{"version":3,"names":["KmsError","body","enumerable","value","reason","requestId","status","message","constructor","defaultMessage","statusCode","errorCode","Exception","KmsTimeoutError","request","timeout","method","uri","DryError","WebexHttpError","prototype","parse","_res","options","url","service","toUpperCase","resource","headers","trackingid"],"sources":["kms-errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Exception} from '@webex/common';\nimport {WebexHttpError} from '@webex/webex-core';\n\n/**\n * Error class for KMS errors\n */\nexport class KmsError extends Exception {\n static defaultMessage =\n 'An unknown error occurred while communicating with the kms. This implies we received an error response without a body.';\n\n /**\n * @param {HttpResponse} body\n * @returns {string}\n */\n parse(body) {\n body = body.body || body;\n\n Object.defineProperties(this, {\n body: {\n enumerable: false,\n value: body,\n },\n reason: {\n enumerable: false,\n value: body.reason,\n },\n requestId: {\n enumerable: false,\n value: body.requestId,\n },\n status: {\n enumerable: false,\n value: body.status,\n },\n });\n\n let message = typeof body === 'string' ? body : body.reason;\n\n if (!message) {\n message = this.constructor.defaultMessage;\n }\n if (body.status) {\n message += `\\nKMS_RESPONSE_STATUS: ${body.status}`;\n }\n if (body.requestId) {\n message += `\\nKMS_REQUEST_ID: ${body.requestId}`;\n }\n\n if (body.statusCode) {\n message += `\\nKMS_STATUS_CODE: ${body.statusCode}`;\n }\n\n if (body.errorCode) {\n message += `\\nKMS_ErrorCode: ${body.errorCode}`;\n }\n\n return message;\n }\n}\n\n/**\n * Thrown when an expected KMSResponse is not received in a timely manner\n */\nexport class KmsTimeoutError extends KmsError {\n /**\n * @param {KmsRequest} options.request\n * @param {KmsRequest} options.timeout\n * @returns {string}\n */\n parse({request = {}, timeout} = {}) {\n let message = `The KMS did not respond within ${\n timeout ? `${timeout} milliseconds` : 'a timely fashion'\n }`;\n\n if (request) {\n if (request.method && request.uri) {\n message += `\\nKMS_REQUEST: ${request.method} ${request.uri}`;\n }\n\n if (request.requestId) {\n message += `\\nKMS_REQUEST_ID: ${request.requestId}`;\n }\n }\n\n return message;\n }\n}\n\n/**\n * Emitted when a REST request includes an encrypter error\n */\nexport class DryError extends WebexHttpError {\n static defaultMessage = 'An unknown error was received from a service that proxies to the KMS';\n\n /**\n * @param {WebexHttpError} reason\n * @returns {string}\n */\n parse(reason) {\n Reflect.apply(WebexHttpError.prototype.parse, this, [reason._res]);\n const body = reason._res.body.message;\n\n let message = body.reason || body;\n\n if (!message) {\n message = this.constructor.defaultMessage;\n }\n if (this.options.url) {\n message += `\\n${this.options.method} ${this.options.url}`;\n } else if (this.options.uri) {\n message += `\\n${this.options.method} ${this.options.uri}`;\n } else {\n message += `\\n${this.options.method} ${this.options.service.toUpperCase()}/${\n this.options.resource\n }`;\n }\n message += `\\nWEBEX_TRACKING_ID: ${this.options.headers.trackingid}`;\n\n if (body.status) {\n message += `\\nKMS_RESPONSE_STATUS: ${body.status}`;\n }\n if (body.requestId) {\n message += `\\nKMS_REQUEST_ID: ${body.requestId}`;\n }\n\n Object.defineProperties(this, {\n reason: {\n enumerable: false,\n value: body.reason,\n },\n requestId: {\n enumerable: false,\n value: body.requestId,\n },\n status: {\n enumerable: false,\n value: body.status,\n },\n });\n\n return message;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAIA;AACA;AAAiD;AAAA;AAEjD;AACA;AACA;AAFA,IAGaA,QAAQ;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAInB;AACF;AACA;AACA;IACE,eAAMC,IAAI,EAAE;MACVA,IAAI,GAAGA,IAAI,CAACA,IAAI,IAAIA,IAAI;MAExB,+BAAwB,IAAI,EAAE;QAC5BA,IAAI,EAAE;UACJC,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF;QACT,CAAC;QACDG,MAAM,EAAE;UACNF,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF,IAAI,CAACG;QACd,CAAC;QACDC,SAAS,EAAE;UACTH,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF,IAAI,CAACI;QACd,CAAC;QACDC,MAAM,EAAE;UACNJ,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF,IAAI,CAACK;QACd;MACF,CAAC,CAAC;MAEF,IAAIC,OAAO,GAAG,OAAON,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGA,IAAI,CAACG,MAAM;MAE3D,IAAI,CAACG,OAAO,EAAE;QACZA,OAAO,GAAG,IAAI,CAACC,WAAW,CAACC,cAAc;MAC3C;MACA,IAAIR,IAAI,CAACK,MAAM,EAAE;QACfC,OAAO,qCAA8BN,IAAI,CAACK,MAAM,CAAE;MACpD;MACA,IAAIL,IAAI,CAACI,SAAS,EAAE;QAClBE,OAAO,gCAAyBN,IAAI,CAACI,SAAS,CAAE;MAClD;MAEA,IAAIJ,IAAI,CAACS,UAAU,EAAE;QACnBH,OAAO,iCAA0BN,IAAI,CAACS,UAAU,CAAE;MACpD;MAEA,IAAIT,IAAI,CAACU,SAAS,EAAE;QAClBJ,OAAO,+BAAwBN,IAAI,CAACU,SAAS,CAAE;MACjD;MAEA,OAAOJ,OAAO;IAChB;EAAC;EAAA;AAAA,EAnD2BK,iBAAS;AAsDvC;AACA;AACA;AAFA;AAAA,8BAtDaZ,QAAQ,oBAEjB,wHAAwH;AAAA,IAuD/Ga,eAAe;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAC1B;AACF;AACA;AACA;AACA;IACE,iBAAoC;MAAA,+EAAJ,CAAC,CAAC;QAAA,oBAA3BC,OAAO;QAAPA,OAAO,6BAAG,CAAC,CAAC;QAAEC,OAAO,QAAPA,OAAO;MAC1B,IAAIR,OAAO,4CACTQ,OAAO,aAAMA,OAAO,qBAAkB,kBAAkB,CACxD;MAEF,IAAID,OAAO,EAAE;QACX,IAAIA,OAAO,CAACE,MAAM,IAAIF,OAAO,CAACG,GAAG,EAAE;UACjCV,OAAO,6BAAsBO,OAAO,CAACE,MAAM,cAAIF,OAAO,CAACG,GAAG,CAAE;QAC9D;QAEA,IAAIH,OAAO,CAACT,SAAS,EAAE;UACrBE,OAAO,gCAAyBO,OAAO,CAACT,SAAS,CAAE;QACrD;MACF;MAEA,OAAOE,OAAO;IAChB;EAAC;EAAA;AAAA,EAtBkCP,QAAQ;AAyB7C;AACA;AACA;AAFA;AAAA,IAGakB,QAAQ;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAGnB;AACF;AACA;AACA;IACE,eAAMd,MAAM,EAAE;MACZ,oBAAce,yBAAc,CAACC,SAAS,CAACC,KAAK,EAAE,IAAI,EAAE,CAACjB,MAAM,CAACkB,IAAI,CAAC,CAAC;MAClE,IAAMrB,IAAI,GAAGG,MAAM,CAACkB,IAAI,CAACrB,IAAI,CAACM,OAAO;MAErC,IAAIA,OAAO,GAAGN,IAAI,CAACG,MAAM,IAAIH,IAAI;MAEjC,IAAI,CAACM,OAAO,EAAE;QACZA,OAAO,GAAG,IAAI,CAACC,WAAW,CAACC,cAAc;MAC3C;MACA,IAAI,IAAI,CAACc,OAAO,CAACC,GAAG,EAAE;QACpBjB,OAAO,gBAAS,IAAI,CAACgB,OAAO,CAACP,MAAM,cAAI,IAAI,CAACO,OAAO,CAACC,GAAG,CAAE;MAC3D,CAAC,MAAM,IAAI,IAAI,CAACD,OAAO,CAACN,GAAG,EAAE;QAC3BV,OAAO,gBAAS,IAAI,CAACgB,OAAO,CAACP,MAAM,cAAI,IAAI,CAACO,OAAO,CAACN,GAAG,CAAE;MAC3D,CAAC,MAAM;QACLV,OAAO,gBAAS,IAAI,CAACgB,OAAO,CAACP,MAAM,cAAI,IAAI,CAACO,OAAO,CAACE,OAAO,CAACC,WAAW,EAAE,cACvE,IAAI,CAACH,OAAO,CAACI,QAAQ,CACrB;MACJ;MACApB,OAAO,mCAA4B,IAAI,CAACgB,OAAO,CAACK,OAAO,CAACC,UAAU,CAAE;MAEpE,IAAI5B,IAAI,CAACK,MAAM,EAAE;QACfC,OAAO,qCAA8BN,IAAI,CAACK,MAAM,CAAE;MACpD;MACA,IAAIL,IAAI,CAACI,SAAS,EAAE;QAClBE,OAAO,gCAAyBN,IAAI,CAACI,SAAS,CAAE;MAClD;MAEA,+BAAwB,IAAI,EAAE;QAC5BD,MAAM,EAAE;UACNF,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF,IAAI,CAACG;QACd,CAAC;QACDC,SAAS,EAAE;UACTH,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF,IAAI,CAACI;QACd,CAAC;QACDC,MAAM,EAAE;UACNJ,UAAU,EAAE,KAAK;UACjBC,KAAK,EAAEF,IAAI,CAACK;QACd;MACF,CAAC,CAAC;MAEF,OAAOC,OAAO;IAChB;EAAC;EAAA;AAAA,EAlD2BY,yBAAc;AAAA;AAAA,8BAA/BD,QAAQ,oBACK,sEAAsE"}
|