@mj-biz-apps/committees-entities 1.0.0
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/custom/MeetingEntity.d.ts +19 -0
- package/dist/custom/MeetingEntity.d.ts.map +1 -0
- package/dist/custom/MeetingEntity.js +39 -0
- package/dist/custom/MeetingEntity.js.map +1 -0
- package/dist/custom/MembershipEntity.d.ts +32 -0
- package/dist/custom/MembershipEntity.d.ts.map +1 -0
- package/dist/custom/MembershipEntity.js +89 -0
- package/dist/custom/MembershipEntity.js.map +1 -0
- package/dist/demo/demoContactEntitySubclass.d.ts +11 -0
- package/dist/demo/demoContactEntitySubclass.d.ts.map +1 -0
- package/dist/demo/demoContactEntitySubclass.js +35 -0
- package/dist/demo/demoContactEntitySubclass.js.map +1 -0
- package/dist/generated/entity_subclasses.d.ts +2914 -0
- package/dist/generated/entity_subclasses.d.ts.map +1 -0
- package/dist/generated/entity_subclasses.js +4199 -0
- package/dist/generated/entity_subclasses.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
2
|
+
import { mjBizAppsCommitteesMeetingEntity } from '../generated/entity_subclasses.js';
|
|
3
|
+
/**
|
|
4
|
+
* Custom Meeting entity.
|
|
5
|
+
*
|
|
6
|
+
* Validation rules:
|
|
7
|
+
* - EndDateTime, if set, must be after StartDateTime
|
|
8
|
+
* - Virtual/Hybrid meetings should have a VideoProviderID or VideoJoinURL
|
|
9
|
+
*
|
|
10
|
+
* Note: Auto-provisioning of VideoJoinURL via the video provider API is handled
|
|
11
|
+
* server-side by VideoProviderService / ProvisionVideoMeeting GraphQL mutation,
|
|
12
|
+
* not in this client-safe entity class.
|
|
13
|
+
*/
|
|
14
|
+
export declare class MeetingEntityCustom extends mjBizAppsCommitteesMeetingEntity {
|
|
15
|
+
Validate(): ValidationResult;
|
|
16
|
+
private validateEndDateAfterStart;
|
|
17
|
+
}
|
|
18
|
+
export declare function LoadCustomMeetingEntity(): void;
|
|
19
|
+
//# sourceMappingURL=MeetingEntity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeetingEntity.d.ts","sourceRoot":"","sources":["../../src/custom/MeetingEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAA4C,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF;;;;;;;;;;GAUG;AACH,qBACa,mBAAoB,SAAQ,gCAAgC;IAErD,QAAQ,IAAI,gBAAgB;IAS5C,OAAO,CAAC,yBAAyB;CAUpC;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAAG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseEntity, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { mjBizAppsCommitteesMeetingEntity } from '../generated/entity_subclasses.js';
|
|
10
|
+
/**
|
|
11
|
+
* Custom Meeting entity.
|
|
12
|
+
*
|
|
13
|
+
* Validation rules:
|
|
14
|
+
* - EndDateTime, if set, must be after StartDateTime
|
|
15
|
+
* - Virtual/Hybrid meetings should have a VideoProviderID or VideoJoinURL
|
|
16
|
+
*
|
|
17
|
+
* Note: Auto-provisioning of VideoJoinURL via the video provider API is handled
|
|
18
|
+
* server-side by VideoProviderService / ProvisionVideoMeeting GraphQL mutation,
|
|
19
|
+
* not in this client-safe entity class.
|
|
20
|
+
*/
|
|
21
|
+
let MeetingEntityCustom = class MeetingEntityCustom extends mjBizAppsCommitteesMeetingEntity {
|
|
22
|
+
Validate() {
|
|
23
|
+
const result = super.Validate();
|
|
24
|
+
this.validateEndDateAfterStart(result);
|
|
25
|
+
result.Success = result.Success && result.Errors.length === 0;
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
validateEndDateAfterStart(result) {
|
|
29
|
+
if (this.EndDateTime && this.StartDateTime && this.EndDateTime <= this.StartDateTime) {
|
|
30
|
+
result.Errors.push(new ValidationErrorInfo('EndDateTime', 'End date/time must be after start date/time.', this.EndDateTime, ValidationErrorType.Failure));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
MeetingEntityCustom = __decorate([
|
|
35
|
+
RegisterClass(BaseEntity, 'Meetings', 1)
|
|
36
|
+
], MeetingEntityCustom);
|
|
37
|
+
export { MeetingEntityCustom };
|
|
38
|
+
export function LoadCustomMeetingEntity() { }
|
|
39
|
+
//# sourceMappingURL=MeetingEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeetingEntity.js","sourceRoot":"","sources":["../../src/custom/MeetingEntity.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAoB,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAElF;;;;;;;;;;GAUG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,gCAAgC;IAErD,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEhC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAEvC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,yBAAyB,CAAC,MAAwB;QACtD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACnF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,aAAa,EACb,8CAA8C,EAC9C,IAAI,CAAC,WAAW,EAChB,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ,CAAA;AArBY,mBAAmB;IAD/B,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;GAC5B,mBAAmB,CAqB/B;;AAED,MAAM,UAAU,uBAAuB,KAAU,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
2
|
+
import { mjBizAppsCommitteesMembershipEntity } from '../generated/entity_subclasses.js';
|
|
3
|
+
/**
|
|
4
|
+
* Custom Membership entity with business rule validation:
|
|
5
|
+
* - No duplicate active memberships (same person + same term)
|
|
6
|
+
* - End date must be after start date
|
|
7
|
+
* - Status='Active' requires a Role to be assigned
|
|
8
|
+
* - Auto-sets EndDate when Status changes to 'Ended'
|
|
9
|
+
*
|
|
10
|
+
* Registered with priority 1 to override the generated class.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MembershipEntityCustom extends mjBizAppsCommitteesMembershipEntity {
|
|
13
|
+
get Status(): mjBizAppsCommitteesMembershipEntity['Status'];
|
|
14
|
+
set Status(value: mjBizAppsCommitteesMembershipEntity['Status']);
|
|
15
|
+
Validate(): ValidationResult;
|
|
16
|
+
ValidateAsync(): Promise<ValidationResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Validates that EndDate, if provided, is after StartDate.
|
|
19
|
+
*/
|
|
20
|
+
private ValidateEndDateAfterStartDate;
|
|
21
|
+
/**
|
|
22
|
+
* Validates that Active memberships always have a Role assigned.
|
|
23
|
+
*/
|
|
24
|
+
private ValidateRoleRequiredForActive;
|
|
25
|
+
/**
|
|
26
|
+
* Validates that no other Active membership exists for the same person + term.
|
|
27
|
+
* Skipped on updates where PersonID and TermID have not changed.
|
|
28
|
+
*/
|
|
29
|
+
private ValidateNoDuplicateActiveMembership;
|
|
30
|
+
}
|
|
31
|
+
export declare function LoadCustomMembershipEntity(): void;
|
|
32
|
+
//# sourceMappingURL=MembershipEntity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MembershipEntity.d.ts","sourceRoot":"","sources":["../../src/custom/MembershipEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,gBAAgB,EAAqD,MAAM,sBAAsB,CAAC;AAEzI,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF;;;;;;;;GAQG;AACH,qBACa,sBAAuB,SAAQ,mCAAmC;IAK3E,IAAa,MAAM,IAAI,mCAAmC,CAAC,QAAQ,CAAC,CAEnE;IACD,IAAa,MAAM,CAAC,KAAK,EAAE,mCAAmC,CAAC,QAAQ,CAAC,EAKvE;IAEe,QAAQ,IAAI,gBAAgB;IAUtB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAShE;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAWrC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAWrC;;;OAGG;YACW,mCAAmC;CAyBpD;AAED,wBAAgB,0BAA0B,SAAM"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseEntity, ValidationErrorInfo, ValidationErrorType, RunView } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { mjBizAppsCommitteesMembershipEntity } from '../generated/entity_subclasses.js';
|
|
10
|
+
/**
|
|
11
|
+
* Custom Membership entity with business rule validation:
|
|
12
|
+
* - No duplicate active memberships (same person + same term)
|
|
13
|
+
* - End date must be after start date
|
|
14
|
+
* - Status='Active' requires a Role to be assigned
|
|
15
|
+
* - Auto-sets EndDate when Status changes to 'Ended'
|
|
16
|
+
*
|
|
17
|
+
* Registered with priority 1 to override the generated class.
|
|
18
|
+
*/
|
|
19
|
+
let MembershipEntityCustom = class MembershipEntityCustom extends mjBizAppsCommitteesMembershipEntity {
|
|
20
|
+
// Override Status setter to auto-set EndDate when membership is ended.
|
|
21
|
+
// Get/Set here mirror the generated accessor implementation — using the
|
|
22
|
+
// typed property inside its own override would recurse.
|
|
23
|
+
get Status() {
|
|
24
|
+
return this.Get('Status');
|
|
25
|
+
}
|
|
26
|
+
set Status(value) {
|
|
27
|
+
this.Set('Status', value);
|
|
28
|
+
if (value === 'Ended' && !this.EndDate) {
|
|
29
|
+
this.EndDate = new Date();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
Validate() {
|
|
33
|
+
const result = super.Validate();
|
|
34
|
+
this.ValidateEndDateAfterStartDate(result);
|
|
35
|
+
this.ValidateRoleRequiredForActive(result);
|
|
36
|
+
result.Success = result.Success && (result.Errors.length === 0);
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
async ValidateAsync() {
|
|
40
|
+
const result = await super.ValidateAsync();
|
|
41
|
+
await this.ValidateNoDuplicateActiveMembership(result);
|
|
42
|
+
result.Success = result.Success && (result.Errors.length === 0);
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validates that EndDate, if provided, is after StartDate.
|
|
47
|
+
*/
|
|
48
|
+
ValidateEndDateAfterStartDate(result) {
|
|
49
|
+
if (this.EndDate && this.StartDate && this.EndDate < this.StartDate) {
|
|
50
|
+
result.Errors.push(new ValidationErrorInfo('EndDate', 'End date must be after start date.', this.EndDate, ValidationErrorType.Failure));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validates that Active memberships always have a Role assigned.
|
|
55
|
+
*/
|
|
56
|
+
ValidateRoleRequiredForActive(result) {
|
|
57
|
+
if (this.Status === 'Active' && !this.RoleID) {
|
|
58
|
+
result.Errors.push(new ValidationErrorInfo('RoleID', 'A role must be assigned before setting membership to Active.', this.RoleID, ValidationErrorType.Failure));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Validates that no other Active membership exists for the same person + term.
|
|
63
|
+
* Skipped on updates where PersonID and TermID have not changed.
|
|
64
|
+
*/
|
|
65
|
+
async ValidateNoDuplicateActiveMembership(result) {
|
|
66
|
+
if (this.Status !== 'Active' || !this.PersonID || !this.TermID) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// This entity owns a provider — route the query through it and carry the
|
|
70
|
+
// entity's user context (MJ rule: never reach for the global provider here).
|
|
71
|
+
// The concrete provider implements both interfaces; the cast bridges the
|
|
72
|
+
// disjoint IEntityDataProvider/IRunViewProvider declarations.
|
|
73
|
+
const rv = new RunView(this.ProviderToUse);
|
|
74
|
+
const dupeCheck = await rv.RunView({
|
|
75
|
+
EntityName: 'Committees: Memberships',
|
|
76
|
+
ExtraFilter: `PersonID='${this.PersonID}' AND TermID='${this.TermID}' AND Status='Active' AND ID<>'${this.ID}'`,
|
|
77
|
+
ResultType: 'simple',
|
|
78
|
+
}, this.ContextCurrentUser);
|
|
79
|
+
if (dupeCheck.Success && dupeCheck.Results.length > 0) {
|
|
80
|
+
result.Errors.push(new ValidationErrorInfo('PersonID', 'This person already has an active membership for the selected term.', this.PersonID, ValidationErrorType.Failure));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
MembershipEntityCustom = __decorate([
|
|
85
|
+
RegisterClass(BaseEntity, 'Memberships', 1)
|
|
86
|
+
], MembershipEntityCustom);
|
|
87
|
+
export { MembershipEntityCustom };
|
|
88
|
+
export function LoadCustomMembershipEntity() { }
|
|
89
|
+
//# sourceMappingURL=MembershipEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MembershipEntity.js","sourceRoot":"","sources":["../../src/custom/MembershipEntity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseEntity } from "@memberjunction/core";
|
|
2
|
+
declare class ContactBaseEntityStub extends BaseEntity {
|
|
3
|
+
get FirstName(): string;
|
|
4
|
+
set FirstName(value: string);
|
|
5
|
+
}
|
|
6
|
+
export declare class ContactDemoEntity extends ContactBaseEntityStub {
|
|
7
|
+
get FirstName(): string;
|
|
8
|
+
set FirstName(value: string);
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=demoContactEntitySubclass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demoContactEntitySubclass.d.ts","sourceRoot":"","sources":["../../src/demo/demoContactEntitySubclass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKlD,cAAM,qBAAsB,SAAQ,UAAU;IAC1C,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAC1B;CACJ;AAKD,qBACa,iBAAkB,SAAQ,qBAAqB;IACxD,IAAI,SAAS,IAAI,MAAM,CAGtB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAG1B;CACJ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
//import { ContactBaseEntity } from "../generated/entity_subclasses.js";
|
|
8
|
+
import { BaseEntity } from "@memberjunction/core";
|
|
9
|
+
import { RegisterClass } from "@memberjunction/global";
|
|
10
|
+
// STUB base class- you would DELETE this and use a real base class from ../generated/entity_subclasses instead
|
|
11
|
+
class ContactBaseEntityStub extends BaseEntity {
|
|
12
|
+
get FirstName() {
|
|
13
|
+
return "";
|
|
14
|
+
}
|
|
15
|
+
set FirstName(value) {
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Super simple example of a sub-class for an example Contacts entity doesn't do anything but you can see here you can do stuff with sub-class overrides
|
|
19
|
+
// Also, important, if you're going to override the getter/setter for a property, you MUST call super.propertyName in the getter/setter AND you must also
|
|
20
|
+
// override BOTH the getter and setter, otherwise you'll get a runtime error! This is because the getter/setter is actually a single property on the object
|
|
21
|
+
let ContactDemoEntity = class ContactDemoEntity extends ContactBaseEntityStub /*here you would change this to sub-class the real base class from ../generated/entity_subclasses */ {
|
|
22
|
+
get FirstName() {
|
|
23
|
+
console.log("I'm getting the FirstName property from the sub-class!");
|
|
24
|
+
return super.FirstName;
|
|
25
|
+
}
|
|
26
|
+
set FirstName(value) {
|
|
27
|
+
super.FirstName = value;
|
|
28
|
+
console.log("I'm setting the FirstName property from the sub-class!");
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
ContactDemoEntity = __decorate([
|
|
32
|
+
RegisterClass(BaseEntity, 'Contacts', 1)
|
|
33
|
+
], ContactDemoEntity);
|
|
34
|
+
export { ContactDemoEntity };
|
|
35
|
+
//# sourceMappingURL=demoContactEntitySubclass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demoContactEntitySubclass.js","sourceRoot":"","sources":["../../src/demo/demoContactEntitySubclass.ts"],"names":[],"mappings":";;;;;;AAAA,qEAAqE;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,gHAAgH;AAChH,MAAM,qBAAsB,SAAQ,UAAU;IAC1C,IAAI,SAAS;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,SAAS,CAAC,KAAa;IAC3B,CAAC;CACJ;AAED,yJAAyJ;AACzJ,yJAAyJ;AACzJ,2JAA2J;AAEpJ,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,qBAAqB,CAAC,oGAAoG;IAC7J,IAAI,SAAS;QACT,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;QACrE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,IAAI,SAAS,CAAC,KAAa;QACvB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;IACzE,CAAC;CACJ,CAAA;AATY,iBAAiB;IAD7B,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;GAC5B,iBAAiB,CAS7B"}
|