topsyde-utils 1.0.53 → 1.0.55
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/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/server/bun/router/router.js +2 -2
- package/dist/server/bun/router/router.js.map +1 -1
- package/dist/server/bun/websocket/Channel.js +1 -16
- package/dist/server/bun/websocket/Channel.js.map +1 -1
- package/dist/server/bun/websocket/Websocket.js +4 -8
- package/dist/server/bun/websocket/Websocket.js.map +1 -1
- package/dist/singleton.d.ts +6 -18
- package/dist/singleton.js +14 -27
- package/dist/singleton.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
@@ -31,7 +31,6 @@ export { default as Guards } from "./utils/Guards";
|
|
31
31
|
export { default as Lib } from "./utils/Lib";
|
32
32
|
export { default as Console } from "./utils/Console";
|
33
33
|
export { ERROR_CODE, HTTP_ERROR_CODE, WS_ERROR_CODE } from "./errors";
|
34
|
-
export { Constructor } from "./singleton";
|
35
34
|
export { InitializableOptions, InitializableEvent } from "./initializable";
|
36
35
|
export { RESPONSE_INIT, RESPONSE_METHOD_OPTIONS } from "./application";
|
37
36
|
export { DEFAULT_FALSE_RESPONSE, LOG_COLORS, LOG_ICONS } from "./consts";
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,qBAAqB;AACrB,2CAAyB;AACzB,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,sDAAoC;AACpC,6DAA2C;AAC3C,6DAA2C;AAC3C,sEAAoD;AACpD,gEAA8C;AAC9C,mEAAiD;AACjD,yEAAuD;AACvD,iEAA+C;AAC/C,iDAA+B;AAC/B,8CAA4B;AAC5B,kDAAgC;AAEhC,yBAAyB;AACzB,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,kDAA4D;AAAnD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,iHAAA,OAAO,OAAU;AAC1B,uEAAiF;AAAxE,mIAAA,OAAO,OAAmB;AACnC,wDAAkE;AAAzD,iHAAA,OAAO,OAAU;AAC1B,8DAAwE;AAA/D,uHAAA,OAAO,OAAa;AAC7B,0DAAoE;AAA3D,mHAAA,OAAO,OAAW;AAC3B,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,mCAA6C;AAApC,2GAAA,OAAO,OAAO;AACvB,2CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAE3B,sDAAsD;AACtD,mCAAsE;AAA7D,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,qBAAqB;AACrB,2CAAyB;AACzB,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,sDAAoC;AACpC,6DAA2C;AAC3C,6DAA2C;AAC3C,sEAAoD;AACpD,gEAA8C;AAC9C,mEAAiD;AACjD,yEAAuD;AACvD,iEAA+C;AAC/C,iDAA+B;AAC/B,8CAA4B;AAC5B,kDAAgC;AAEhC,yBAAyB;AACzB,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,kDAA4D;AAAnD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,iHAAA,OAAO,OAAU;AAC1B,uEAAiF;AAAxE,mIAAA,OAAO,OAAmB;AACnC,wDAAkE;AAAzD,iHAAA,OAAO,OAAU;AAC1B,8DAAwE;AAA/D,uHAAA,OAAO,OAAa;AAC7B,0DAAoE;AAA3D,mHAAA,OAAO,OAAW;AAC3B,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,mCAA6C;AAApC,2GAAA,OAAO,OAAO;AACvB,2CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAE3B,sDAAsD;AACtD,mCAAsE;AAA7D,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA;AAEnD,6CAAuE;AAA9D,4GAAA,aAAa,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAC/C,mCAAyE;AAAhE,gHAAA,sBAAsB,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAEtD,iCAA+C;AAAtC,6FAAA,IAAI,OAAA;AAAE,uGAAA,cAAc,OAAA"}
|
@@ -25,10 +25,10 @@ class Router extends singleton_1.default {
|
|
25
25
|
return await method(request);
|
26
26
|
}
|
27
27
|
static SetRoutes(routes) {
|
28
|
-
|
28
|
+
this.GetInstance().setRoutes(routes);
|
29
29
|
}
|
30
30
|
static getMethodMap() {
|
31
|
-
const router =
|
31
|
+
const router = this.GetInstance();
|
32
32
|
return {
|
33
33
|
GET: async (req) => await router.internal.get(req),
|
34
34
|
POST: async (req) => await router.internal.post(req),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/server/bun/router/router.ts"],"names":[],"mappings":";;;;;AAAA,4CAA6C;AAC7C,mEAA2C;AAC3C,mEAA2C;AAC3C,wEAAgD;AAOhD,MAAM,MAAO,SAAQ,mBAAS;IAG7B,YAAmB,MAAe;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAI,OAAgB;QAC3C,IAAI,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,MAAM,mBAAU,CAAC,UAAU,CAAC;QACvD,MAAM,OAAO,GAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,mBAAU,CAAC,cAAc,CAAC;QAE1D,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,MAAc;QACrC,
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/server/bun/router/router.ts"],"names":[],"mappings":";;;;;AAAA,4CAA6C;AAC7C,mEAA2C;AAC3C,mEAA2C;AAC3C,wEAAgD;AAOhD,MAAM,MAAO,SAAQ,mBAAS;IAG7B,YAAmB,MAAe;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAI,OAAgB;QAC3C,IAAI,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,MAAM,mBAAU,CAAC,UAAU,CAAC;QACvD,MAAM,OAAO,GAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,mBAAU,CAAC,cAAc,CAAC;QAE1D,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,EAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,YAAY;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAU,CAAC;QAC1C,OAAO;YACN,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAClD,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;SACpD,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,OAAgB;QAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC,YAAY,CAAC;IACzB,CAAC;CACD;AAED,kBAAe,MAAM,CAAC"}
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const Websocket_1 = __importDefault(require("./Websocket"));
|
7
7
|
const Client_1 = __importDefault(require("./Client"));
|
8
|
-
const utils_1 = require("../../../utils");
|
9
8
|
class Channel {
|
10
9
|
constructor(id, name, limit, members, metadata) {
|
11
10
|
this.createdAt = new Date();
|
@@ -39,21 +38,7 @@ class Channel {
|
|
39
38
|
this.members.delete(entity.id);
|
40
39
|
}
|
41
40
|
broadcast(message, exclude) {
|
42
|
-
|
43
|
-
const websocketInstance = Websocket_1.default.GetInstance();
|
44
|
-
// Check if the server is set using getServer method
|
45
|
-
const server = websocketInstance.server;
|
46
|
-
if (!server) {
|
47
|
-
/* // If no server, send to individual clients instead
|
48
|
-
this.members.forEach(client => {
|
49
|
-
client.send(message);
|
50
|
-
});
|
51
|
-
return; */
|
52
|
-
utils_1.Lib.Warn("Websocket server not set");
|
53
|
-
return;
|
54
|
-
}
|
55
|
-
// Use the server to publish
|
56
|
-
server.publish(this.id, JSON.stringify(message));
|
41
|
+
Websocket_1.default.Broadcast(this.id, message);
|
57
42
|
}
|
58
43
|
hasMember(client) { }
|
59
44
|
getMember(client) { }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AAEpC,sDAA8B;
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AAEpC,sDAA8B;AAG9B,MAAqB,OAAO;IAQ3B,YAAY,EAAU,EAAE,IAAY,EAAE,KAAc,EAAE,OAA6B,EAAE,QAAiC;QAP5G,cAAS,GAAU,IAAI,IAAI,EAAE,CAAC;QAQvC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAChC,CAAC;IAEM,SAAS,CAAC,MAAyB;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO;QACjC,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,SAAS,CAAC;YACd,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE;gBACR,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE;aACxB;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,YAAY,CAAC,MAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAEM,SAAS,CAAC,OAAmC,EAAE,OAAwC;QAC7F,mBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,SAAS,CAAC,MAAkC,IAAG,CAAC;IAEhD,SAAS,CAAC,MAAkC,IAAG,CAAC;IAEhD,UAAU;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,WAAW;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,YAAY;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,CAAC,EAAE,CAAC;IAChB,CAAC;IAEM,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,OAAO;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,CAAC;IACO,YAAY;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACD;AA9ED,0BA8EC"}
|
@@ -1,9 +1,4 @@
|
|
1
1
|
"use strict";
|
2
|
-
/* Hey, we're working on a game, today we're going to implement the first few steps
|
3
|
-
|
4
|
-
we will start with a websocket implementation - an abstraction of bun's websocket functioanlity, here are the docs@https://bun.sh/docs/api/websockets
|
5
|
-
|
6
|
-
lets start simple, I want an abstraction interface for the handlers, suggest a strategy */
|
7
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
8
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
9
4
|
};
|
@@ -61,12 +56,13 @@ class Websocket extends singleton_1.default {
|
|
61
56
|
return this.GetInstance().server;
|
62
57
|
}
|
63
58
|
static Broadcast(channel, message) {
|
64
|
-
|
65
|
-
|
59
|
+
// Get the server from the singleton instance
|
60
|
+
const server = this.GetInstance().server;
|
61
|
+
if (!server) {
|
66
62
|
utils_1.Lib.Warn("Websocket server not set");
|
67
63
|
return;
|
68
64
|
}
|
69
|
-
|
65
|
+
server.publish(channel, JSON.stringify(message));
|
70
66
|
}
|
71
67
|
static Publish(message) {
|
72
68
|
const ws = this.GetInstance();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":"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"}
|
package/dist/singleton.d.ts
CHANGED
@@ -1,20 +1,8 @@
|
|
1
|
-
export
|
2
|
-
|
3
|
-
|
4
|
-
declare abstract class Singleton {
|
5
|
-
private static readonly instances;
|
6
|
-
private static readonly shareInstances;
|
1
|
+
export default abstract class Singleton {
|
2
|
+
private static readonly _instances;
|
3
|
+
protected timestamp: Date;
|
7
4
|
protected constructor();
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
* @param share Whether to share instances with the base class (default: true)
|
12
|
-
*/
|
13
|
-
static ShareInstanceWithBaseClass<T extends Singleton>(classRef: Constructor<T>, share?: boolean): void;
|
14
|
-
/**
|
15
|
-
* Get the instance for a class, respecting the sharing configuration
|
16
|
-
*/
|
17
|
-
static GetInstance<T extends Singleton>(this: Constructor<T>, ...args: any[]): T;
|
18
|
-
static GetInstanceCount(): number;
|
5
|
+
static GetInstance<T extends Singleton, Args extends any[] = ConstructorParameters<new (...args: any[]) => T>>(...args: Args): T;
|
6
|
+
static ResetInstances(): void;
|
7
|
+
static ResetInstance(className: string): void;
|
19
8
|
}
|
20
|
-
export default Singleton;
|
package/dist/singleton.js
CHANGED
@@ -1,38 +1,25 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
class Singleton {
|
4
|
-
constructor() {
|
5
|
-
|
6
|
-
* Configure a class to share instances with its base class
|
7
|
-
* @param classRef The class to configure
|
8
|
-
* @param share Whether to share instances with the base class (default: true)
|
9
|
-
*/
|
10
|
-
static ShareInstanceWithBaseClass(classRef, share = true) {
|
11
|
-
Singleton.shareInstances.set(classRef, share);
|
4
|
+
constructor() {
|
5
|
+
this.timestamp = new Date();
|
12
6
|
}
|
13
|
-
/**
|
14
|
-
* Get the instance for a class, respecting the sharing configuration
|
15
|
-
*/
|
16
7
|
static GetInstance(...args) {
|
17
|
-
const
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
return Singleton.instances.get(classReference);
|
8
|
+
const className = this.name;
|
9
|
+
const key = className.includes("Websocket") ? "Websocket" : className;
|
10
|
+
if (!Singleton._instances.has(key)) {
|
11
|
+
const instance = Reflect.construct(this, args);
|
12
|
+
Singleton._instances.set(key, instance);
|
23
13
|
}
|
24
|
-
|
25
|
-
const instance = new classReference(...args);
|
26
|
-
Singleton.instances.set(classReference, instance);
|
27
|
-
return instance;
|
14
|
+
return Singleton._instances.get(key);
|
28
15
|
}
|
29
|
-
static
|
30
|
-
|
16
|
+
static ResetInstances() {
|
17
|
+
Singleton._instances.clear();
|
18
|
+
}
|
19
|
+
static ResetInstance(className) {
|
20
|
+
Singleton._instances.delete(className);
|
31
21
|
}
|
32
22
|
}
|
33
|
-
|
34
|
-
Singleton.instances = new Map();
|
35
|
-
// Flag to determine if a class should share instances with its base class
|
36
|
-
Singleton.shareInstances = new Map();
|
23
|
+
Singleton._instances = new Map();
|
37
24
|
exports.default = Singleton;
|
38
25
|
//# sourceMappingURL=singleton.js.map
|
package/dist/singleton.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../src/singleton.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../src/singleton.ts"],"names":[],"mappings":";;AAAA,MAA8B,SAAS;IAKtC;QACC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,WAAW,CAA6F,GAAG,IAAU;QAClI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAM,CAAC;YACpD,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,cAAc;QAC3B,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAGM,MAAM,CAAC,aAAa,CAAC,SAAiB;QAC5C,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;;AA3BuB,oBAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;kBADrC,SAAS"}
|