UNPKG

angular-odata

Version:

Client side OData typescript library for Angular

87 lines 18 kB
import { CsdlTerm, CsdlAnnotations } from './csdl-annotation'; import { CsdlTypeDefinition } from './csdl-type-definition'; import { CsdlEnumType } from './csdl-enum-type'; import { CsdlEntityType, CsdlComplexType } from './csdl-structured-type'; import { CsdlFunction, CsdlAction } from './csdl-function-action'; import { CsdlEntityContainer } from './csdl-entity-container'; export class CsdlSchema { Namespace; Alias; EnumType; ComplexType; EntityType; Function; Action; EntityContainer; TypeDefinition; Term; Annotations; constructor({ Namespace, Alias, EnumType, ComplexType, EntityType, Function, Action, EntityContainer, TypeDefinition, Term, Annotations, }) { this.Namespace = Namespace; this.Alias = Alias; this.EnumType = EnumType?.map((e) => new CsdlEnumType(this, e)); this.ComplexType = ComplexType?.map((c) => new CsdlComplexType(this, c)); this.EntityType = EntityType?.map((e) => new CsdlEntityType(this, e)); this.Function = Function?.map((f) => new CsdlFunction(this, f)); this.Action = Action?.map((a) => new CsdlAction(this, a)); this.EntityContainer = EntityContainer?.map((e) => new CsdlEntityContainer(this, e)); this.TypeDefinition = TypeDefinition?.map((t) => new CsdlTypeDefinition(this, t)); this.Term = Term?.map((t) => new CsdlTerm(this, t)); this.Annotations = Annotations?.map((a) => new CsdlAnnotations(this, a)); } toJson() { const json = { Namespace: this.Namespace, }; if (this.Alias !== undefined) { json['Alias'] = this.Alias; } if (Array.isArray(this.EntityContainer) && this.EntityContainer.length > 0) { json['EntityContainer'] = this.EntityContainer.map((a) => a.toJson()); } if (Array.isArray(this.EntityType) && this.EntityType.length > 0) { json['EntityType'] = this.EntityType.map((a) => a.toJson()); } if (Array.isArray(this.ComplexType) && this.ComplexType.length > 0) { json['ComplexType'] = this.ComplexType.map((a) => a.toJson()); } if (Array.isArray(this.EnumType) && this.EnumType.length > 0) { json['EnumType'] = this.EnumType.map((a) => a.toJson()); } if (Array.isArray(this.TypeDefinition) && this.TypeDefinition.length > 0) { json['TypeDefinition'] = this.TypeDefinition.map((a) => a.toJson()); } if (Array.isArray(this.Term) && this.Term.length > 0) { json['Term'] = this.Term.map((a) => a.toJson()); } if (Array.isArray(this.Annotations) && this.Annotations.length > 0) { json['Annotations'] = this.Annotations.map((a) => a.toJson()); } if (Array.isArray(this.Action) && this.Action.length > 0) { json['Action'] = this.Action.map((a) => a.toJson()); } if (Array.isArray(this.Function) && this.Function.length > 0) { json['Function'] = this.Function.map((a) => a.toJson()); } return json; } toConfig(base) { return { namespace: this.Namespace, alias: base?.alias ?? this.Alias, annotations: this.Annotations?.map((t) => t.toConfig()), enums: this.EnumType?.map((t) => t.toConfig(base?.enums?.find((cs) => cs.name === t.Name))), entities: [ ...(this.ComplexType ?? []).map((t) => t.toConfig(base?.entities?.find((cs) => cs.name === t.Name))), ...(this.EntityType ?? []).map((t) => t.toConfig(base?.entities?.find((cs) => cs.name === t.Name))), ], callables: [ ...(this.Function ?? []).map((t) => t.toConfig(base?.callables?.find((cs) => cs.name === t.Name))), ...(this.Action ?? []).map((t) => t.toConfig(base?.callables?.find((cs) => cs.name === t.Name))), ], containers: this.EntityContainer?.map((t) => t.toConfig(base?.containers?.find((cs) => cs.name === t.Name))), }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvbWV0YWRhdGEvY3NkbC9jc2RsLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHOUQsTUFBTSxPQUFPLFVBQVU7SUFDckIsU0FBUyxDQUFTO0lBQ2xCLEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBa0I7SUFDMUIsV0FBVyxDQUFxQjtJQUNoQyxVQUFVLENBQW9CO0lBQzlCLFFBQVEsQ0FBa0I7SUFDMUIsTUFBTSxDQUFnQjtJQUN0QixlQUFlLENBQXlCO0lBQ3hDLGNBQWMsQ0FBd0I7SUFDdEMsSUFBSSxDQUFjO0lBQ2xCLFdBQVcsQ0FBcUI7SUFDaEMsWUFBWSxFQUNWLFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixlQUFlLEVBQ2YsY0FBYyxFQUNkLElBQUksRUFDSixXQUFXLEdBYVo7UUFDQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLEVBQUUsR0FBRyxDQUN6QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3hDLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsRUFBRSxHQUFHLENBQ3ZDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDdkMsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sSUFBSSxHQUEyQjtZQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFDRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUMvQixDQUFDO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBNEI7UUFDbkMsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSztZQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMxRDtZQUNELFFBQVEsRUFBRTtnQkFDUixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNwQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM3RDtnQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM3RDthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlEO2dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlEO2FBQ0Y7WUFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUMxQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMvRDtTQUNjLENBQUM7SUFDcEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3NkbFRlcm0sIENzZGxBbm5vdGF0aW9ucyB9IGZyb20gJy4vY3NkbC1hbm5vdGF0aW9uJztcbmltcG9ydCB7IENzZGxUeXBlRGVmaW5pdGlvbiB9IGZyb20gJy4vY3NkbC10eXBlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgQ3NkbEVudW1UeXBlIH0gZnJvbSAnLi9jc2RsLWVudW0tdHlwZSc7XG5pbXBvcnQgeyBDc2RsRW50aXR5VHlwZSwgQ3NkbENvbXBsZXhUeXBlIH0gZnJvbSAnLi9jc2RsLXN0cnVjdHVyZWQtdHlwZSc7XG5pbXBvcnQgeyBDc2RsRnVuY3Rpb24sIENzZGxBY3Rpb24gfSBmcm9tICcuL2NzZGwtZnVuY3Rpb24tYWN0aW9uJztcbmltcG9ydCB7IENzZGxFbnRpdHlDb250YWluZXIgfSBmcm9tICcuL2NzZGwtZW50aXR5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBTY2hlbWFDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBDc2RsU2NoZW1hIHtcbiAgTmFtZXNwYWNlOiBzdHJpbmc7XG4gIEFsaWFzPzogc3RyaW5nO1xuICBFbnVtVHlwZT86IENzZGxFbnVtVHlwZVtdO1xuICBDb21wbGV4VHlwZT86IENzZGxDb21wbGV4VHlwZVtdO1xuICBFbnRpdHlUeXBlPzogQ3NkbEVudGl0eVR5cGVbXTtcbiAgRnVuY3Rpb24/OiBDc2RsRnVuY3Rpb25bXTtcbiAgQWN0aW9uPzogQ3NkbEFjdGlvbltdO1xuICBFbnRpdHlDb250YWluZXI/OiBDc2RsRW50aXR5Q29udGFpbmVyW107XG4gIFR5cGVEZWZpbml0aW9uPzogQ3NkbFR5cGVEZWZpbml0aW9uW107XG4gIFRlcm0/OiBDc2RsVGVybVtdO1xuICBBbm5vdGF0aW9ucz86IENzZGxBbm5vdGF0aW9uc1tdO1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgTmFtZXNwYWNlLFxuICAgIEFsaWFzLFxuICAgIEVudW1UeXBlLFxuICAgIENvbXBsZXhUeXBlLFxuICAgIEVudGl0eVR5cGUsXG4gICAgRnVuY3Rpb24sXG4gICAgQWN0aW9uLFxuICAgIEVudGl0eUNvbnRhaW5lcixcbiAgICBUeXBlRGVmaW5pdGlvbixcbiAgICBUZXJtLFxuICAgIEFubm90YXRpb25zLFxuICB9OiB7XG4gICAgTmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgQWxpYXM/OiBzdHJpbmc7XG4gICAgRW51bVR5cGU/OiBhbnlbXTtcbiAgICBDb21wbGV4VHlwZT86IGFueVtdO1xuICAgIEVudGl0eVR5cGU/OiBhbnlbXTtcbiAgICBGdW5jdGlvbj86IGFueVtdO1xuICAgIEFjdGlvbj86IGFueVtdO1xuICAgIEVudGl0eUNvbnRhaW5lcj86IGFueVtdO1xuICAgIFR5cGVEZWZpbml0aW9uPzogYW55W107XG4gICAgVGVybT86IGFueVtdO1xuICAgIEFubm90YXRpb25zPzogYW55W107XG4gIH0pIHtcbiAgICB0aGlzLk5hbWVzcGFjZSA9IE5hbWVzcGFjZTtcbiAgICB0aGlzLkFsaWFzID0gQWxpYXM7XG4gICAgdGhpcy5FbnVtVHlwZSA9IEVudW1UeXBlPy5tYXAoKGUpID0+IG5ldyBDc2RsRW51bVR5cGUodGhpcywgZSkpO1xuICAgIHRoaXMuQ29tcGxleFR5cGUgPSBDb21wbGV4VHlwZT8ubWFwKChjKSA9PiBuZXcgQ3NkbENvbXBsZXhUeXBlKHRoaXMsIGMpKTtcbiAgICB0aGlzLkVudGl0eVR5cGUgPSBFbnRpdHlUeXBlPy5tYXAoKGUpID0+IG5ldyBDc2RsRW50aXR5VHlwZSh0aGlzLCBlKSk7XG4gICAgdGhpcy5GdW5jdGlvbiA9IEZ1bmN0aW9uPy5tYXAoKGYpID0+IG5ldyBDc2RsRnVuY3Rpb24odGhpcywgZikpO1xuICAgIHRoaXMuQWN0aW9uID0gQWN0aW9uPy5tYXAoKGEpID0+IG5ldyBDc2RsQWN0aW9uKHRoaXMsIGEpKTtcbiAgICB0aGlzLkVudGl0eUNvbnRhaW5lciA9IEVudGl0eUNvbnRhaW5lcj8ubWFwKFxuICAgICAgKGUpID0+IG5ldyBDc2RsRW50aXR5Q29udGFpbmVyKHRoaXMsIGUpLFxuICAgICk7XG4gICAgdGhpcy5UeXBlRGVmaW5pdGlvbiA9IFR5cGVEZWZpbml0aW9uPy5tYXAoXG4gICAgICAodCkgPT4gbmV3IENzZGxUeXBlRGVmaW5pdGlvbih0aGlzLCB0KSxcbiAgICApO1xuICAgIHRoaXMuVGVybSA9IFRlcm0/Lm1hcCgodCkgPT4gbmV3IENzZGxUZXJtKHRoaXMsIHQpKTtcbiAgICB0aGlzLkFubm90YXRpb25zID0gQW5ub3RhdGlvbnM/Lm1hcCgoYSkgPT4gbmV3IENzZGxBbm5vdGF0aW9ucyh0aGlzLCBhKSk7XG4gIH1cblxuICB0b0pzb24oKSB7XG4gICAgY29uc3QganNvbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcbiAgICAgIE5hbWVzcGFjZTogdGhpcy5OYW1lc3BhY2UsXG4gICAgfTtcbiAgICBpZiAodGhpcy5BbGlhcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBqc29uWydBbGlhcyddID0gdGhpcy5BbGlhcztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLkVudGl0eUNvbnRhaW5lcikgJiZcbiAgICAgIHRoaXMuRW50aXR5Q29udGFpbmVyLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGpzb25bJ0VudGl0eUNvbnRhaW5lciddID0gdGhpcy5FbnRpdHlDb250YWluZXIubWFwKChhKSA9PiBhLnRvSnNvbigpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5FbnRpdHlUeXBlKSAmJiB0aGlzLkVudGl0eVR5cGUubGVuZ3RoID4gMCkge1xuICAgICAganNvblsnRW50aXR5VHlwZSddID0gdGhpcy5FbnRpdHlUeXBlLm1hcCgoYSkgPT4gYS50b0pzb24oKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuQ29tcGxleFR5cGUpICYmIHRoaXMuQ29tcGxleFR5cGUubGVuZ3RoID4gMCkge1xuICAgICAganNvblsnQ29tcGxleFR5cGUnXSA9IHRoaXMuQ29tcGxleFR5cGUubWFwKChhKSA9PiBhLnRvSnNvbigpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5FbnVtVHlwZSkgJiYgdGhpcy5FbnVtVHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBqc29uWydFbnVtVHlwZSddID0gdGhpcy5FbnVtVHlwZS5tYXAoKGEpID0+IGEudG9Kc29uKCkpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLlR5cGVEZWZpbml0aW9uKSAmJiB0aGlzLlR5cGVEZWZpbml0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIGpzb25bJ1R5cGVEZWZpbml0aW9uJ10gPSB0aGlzLlR5cGVEZWZpbml0aW9uLm1hcCgoYSkgPT4gYS50b0pzb24oKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuVGVybSkgJiYgdGhpcy5UZXJtLmxlbmd0aCA+IDApIHtcbiAgICAgIGpzb25bJ1Rlcm0nXSA9IHRoaXMuVGVybS5tYXAoKGEpID0+IGEudG9Kc29uKCkpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLkFubm90YXRpb25zKSAmJiB0aGlzLkFubm90YXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGpzb25bJ0Fubm90YXRpb25zJ10gPSB0aGlzLkFubm90YXRpb25zLm1hcCgoYSkgPT4gYS50b0pzb24oKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuQWN0aW9uKSAmJiB0aGlzLkFjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICBqc29uWydBY3Rpb24nXSA9IHRoaXMuQWN0aW9uLm1hcCgoYSkgPT4gYS50b0pzb24oKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuRnVuY3Rpb24pICYmIHRoaXMuRnVuY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAganNvblsnRnVuY3Rpb24nXSA9IHRoaXMuRnVuY3Rpb24ubWFwKChhKSA9PiBhLnRvSnNvbigpKTtcbiAgICB9XG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICB0b0NvbmZpZyhiYXNlPzogUGFydGlhbDxTY2hlbWFDb25maWc+KTogU2NoZW1hQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZXNwYWNlOiB0aGlzLk5hbWVzcGFjZSxcbiAgICAgIGFsaWFzOiBiYXNlPy5hbGlhcyA/PyB0aGlzLkFsaWFzLFxuICAgICAgYW5ub3RhdGlvbnM6IHRoaXMuQW5ub3RhdGlvbnM/Lm1hcCgodCkgPT4gdC50b0NvbmZpZygpKSxcbiAgICAgIGVudW1zOiB0aGlzLkVudW1UeXBlPy5tYXAoKHQpID0+XG4gICAgICAgIHQudG9Db25maWcoYmFzZT8uZW51bXM/LmZpbmQoKGNzKSA9PiBjcy5uYW1lID09PSB0Lk5hbWUpKSxcbiAgICAgICksXG4gICAgICBlbnRpdGllczogW1xuICAgICAgICAuLi4odGhpcy5Db21wbGV4VHlwZSA/PyBbXSkubWFwKCh0KSA9PlxuICAgICAgICAgIHQudG9Db25maWcoYmFzZT8uZW50aXRpZXM/LmZpbmQoKGNzKSA9PiBjcy5uYW1lID09PSB0Lk5hbWUpKSxcbiAgICAgICAgKSxcbiAgICAgICAgLi4uKHRoaXMuRW50aXR5VHlwZSA/PyBbXSkubWFwKCh0KSA9PlxuICAgICAgICAgIHQudG9Db25maWcoYmFzZT8uZW50aXRpZXM/LmZpbmQoKGNzKSA9PiBjcy5uYW1lID09PSB0Lk5hbWUpKSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgICBjYWxsYWJsZXM6IFtcbiAgICAgICAgLi4uKHRoaXMuRnVuY3Rpb24gPz8gW10pLm1hcCgodCkgPT5cbiAgICAgICAgICB0LnRvQ29uZmlnKGJhc2U/LmNhbGxhYmxlcz8uZmluZCgoY3MpID0+IGNzLm5hbWUgPT09IHQuTmFtZSkpLFxuICAgICAgICApLFxuICAgICAgICAuLi4odGhpcy5BY3Rpb24gPz8gW10pLm1hcCgodCkgPT5cbiAgICAgICAgICB0LnRvQ29uZmlnKGJhc2U/LmNhbGxhYmxlcz8uZmluZCgoY3MpID0+IGNzLm5hbWUgPT09IHQuTmFtZSkpLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICAgIGNvbnRhaW5lcnM6IHRoaXMuRW50aXR5Q29udGFpbmVyPy5tYXAoKHQpID0+XG4gICAgICAgIHQudG9Db25maWcoYmFzZT8uY29udGFpbmVycz8uZmluZCgoY3MpID0+IGNzLm5hbWUgPT09IHQuTmFtZSkpLFxuICAgICAgKSxcbiAgICB9IGFzIFNjaGVtYUNvbmZpZztcbiAgfVxufVxuIl19