angular-odata
Version:
Client side OData typescript library for Angular
204 lines • 24 kB
JavaScript
import { CsdlAnnotable } from './csdl-annotation';
export const BINDING_PARAMETER_NAME = 'bindingParameter';
export class CsdlCallable {
schema;
Name;
ReturnType;
IsBound;
EntitySetPath;
Parameter;
constructor(schema, { Name, ReturnType, IsBound, EntitySetPath, Parameter, }) {
this.schema = schema;
this.Name = Name;
this.ReturnType = ReturnType ? new CsdlReturnType(ReturnType) : undefined;
this.IsBound = IsBound;
this.EntitySetPath = EntitySetPath;
this.Parameter = Parameter?.map((p) => new CsdlParameter(p));
}
toJson() {
const json = {
Name: this.Name,
};
if (this.ReturnType !== undefined) {
json['ReturnType'] = this.ReturnType.toJson();
}
if (this.IsBound !== undefined) {
json['IsBound'] = this.IsBound;
}
if (this.EntitySetPath !== undefined) {
json['EntitySetPath'] = this.EntitySetPath;
}
if (Array.isArray(this.Parameter) && this.Parameter.length > 0) {
json['Parameter'] = this.Parameter.map((p) => p.toJson());
}
return json;
}
name() {
return `${this.Name}`;
}
namespace() {
return `${this.schema.Namespace}`;
}
fullName() {
return `${this.namespace()}.${this.Name}`;
}
}
export class CsdlFunction extends CsdlCallable {
IsComposable;
constructor(schema, { Name, ReturnType, IsBound, EntitySetPath, IsComposable, Parameter, }) {
super(schema, { Name, ReturnType, IsBound, EntitySetPath, Parameter });
this.IsComposable = IsComposable;
}
toJson() {
return {
...super.toJson(),
IsComposable: this.IsComposable,
};
}
toConfig(base) {
return {
name: this.Name,
entitySetPath: this.EntitySetPath,
bound: this.IsBound,
composable: this.IsComposable,
parameters: this.Parameter?.map((p) => p.toConfig()),
return: this.ReturnType?.toConfig(),
};
}
}
export class CsdlAction extends CsdlCallable {
constructor(schema, { Name, ReturnType, IsBound, EntitySetPath, Parameter, }) {
super(schema, { Name, ReturnType, IsBound, EntitySetPath, Parameter });
}
toJson() {
return {
...super.toJson(),
};
}
toConfig(base) {
return {
name: this.Name,
entitySetPath: this.EntitySetPath,
bound: this.IsBound,
parameters: this.Parameter?.map((p) => p.toConfig()),
return: this.ReturnType?.toConfig(),
};
}
}
export class CsdlFunctionImport {
container;
Name;
FunctionName;
EntitySet;
IncludeInServiceDocument;
constructor(container, { Name, FunctionName, EntitySet, IncludeInServiceDocument, }) {
this.container = container;
this.Name = Name;
this.FunctionName = FunctionName;
this.EntitySet = EntitySet;
this.IncludeInServiceDocument = IncludeInServiceDocument;
}
toJson() {
return {
Name: this.Name,
FunctionName: this.FunctionName,
EntitySet: this.EntitySet,
IncludeInServiceDocument: this.IncludeInServiceDocument,
};
}
}
export class CsdlActionImport {
container;
Name;
Action;
EntitySet;
constructor(container, { Name, Action, EntitySet, }) {
this.container = container;
this.Name = Name;
this.Action = Action;
this.EntitySet = EntitySet;
}
toJson() {
return {
Name: this.Name,
Action: this.Action,
EntitySet: this.EntitySet,
};
}
}
export class CsdlParameter extends CsdlAnnotable {
Name;
Type;
Collection;
Nullable;
MaxLength;
Precision;
Scale;
SRID;
constructor({ Name, Type, Nullable, MaxLength, Precision, Scale, SRID, Annotation, }) {
super({ Annotation });
this.Name = Name;
this.Collection = Type.startsWith('Collection(');
this.Type = this.Collection ? Type.substring(11, Type.length - 1) : Type;
this.Nullable = Nullable;
this.MaxLength = MaxLength;
this.Precision = Precision;
this.Scale = Scale;
this.SRID = SRID;
}
toJson() {
return {
...super.toJson(),
Name: this.Name,
Type: this.Collection ? `Collection(${this.Type})` : this.Type,
Nullable: this.Nullable,
MaxLength: this.MaxLength,
Precision: this.Precision,
Scale: this.Scale,
SRID: this.SRID,
};
}
toConfig() {
return {
...super.toConfig(),
type: this.Type,
nullable: this.Nullable,
collection: false,
};
}
}
export class CsdlReturnType {
Type;
Collection;
Nullable;
MaxLength;
Precision;
Scale;
SRID;
constructor({ Type, Nullable, MaxLength, Precision, Scale, SRID, }) {
this.Collection = Type.startsWith('Collection(');
this.Type = this.Collection ? Type.substring(11, Type.length - 1) : Type;
this.Nullable = Nullable;
this.MaxLength = MaxLength;
this.Precision = Precision;
this.Scale = Scale;
this.SRID = SRID;
}
toJson() {
return {
Type: this.Collection ? `Collection(${this.Type})` : this.Type,
Nullable: this.Nullable,
MaxLength: this.MaxLength,
Precision: this.Precision,
Scale: this.Scale,
SRID: this.SRID,
};
}
toConfig() {
return {
type: this.Type,
collection: false,
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1mdW5jdGlvbi1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvbWV0YWRhdGEvY3NkbC9jc2RsLWZ1bmN0aW9uLWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJbEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQVcsa0JBQWtCLENBQUM7QUFFakUsTUFBTSxPQUFPLFlBQVk7SUFRYjtJQVBWLElBQUksQ0FBUztJQUNiLFVBQVUsQ0FBa0I7SUFDNUIsT0FBTyxDQUFXO0lBQ2xCLGFBQWEsQ0FBVTtJQUN2QixTQUFTLENBQW1CO0lBRTVCLFlBQ1UsTUFBa0IsRUFDMUIsRUFDRSxJQUFJLEVBQ0osVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxHQU9WO1FBYk8sV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQWUxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLElBQUksR0FBMkI7WUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFV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QUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDOUQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbGxhYmxlQ29uZmlnLCBQYXJhbWV0ZXJDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBDc2RsQW5ub3RhYmxlIH0gZnJvbSAnLi9jc2RsLWFubm90YXRpb24nO1xuaW1wb3J0IHR5cGUgeyBDc2RsRW50aXR5Q29udGFpbmVyIH0gZnJvbSAnLi9jc2RsLWVudGl0eS1jb250YWluZXInO1xuaW1wb3J0IHR5cGUgeyBDc2RsU2NoZW1hIH0gZnJvbSAnLi9jc2RsLXNjaGVtYSc7XG5cbmV4cG9ydCBjb25zdCBCSU5ESU5HX1BBUkFNRVRFUl9OQU1FOiBzdHJpbmcgPSAnYmluZGluZ1BhcmFtZXRlcic7XG5cbmV4cG9ydCBjbGFzcyBDc2RsQ2FsbGFibGUge1xuICBOYW1lOiBzdHJpbmc7XG4gIFJldHVyblR5cGU/OiBDc2RsUmV0dXJuVHlwZTtcbiAgSXNCb3VuZD86IGJvb2xlYW47XG4gIEVudGl0eVNldFBhdGg/OiBzdHJpbmc7XG4gIFBhcmFtZXRlcj86IENzZGxQYXJhbWV0ZXJbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjaGVtYTogQ3NkbFNjaGVtYSxcbiAgICB7XG4gICAgICBOYW1lLFxuICAgICAgUmV0dXJuVHlwZSxcbiAgICAgIElzQm91bmQsXG4gICAgICBFbnRpdHlTZXRQYXRoLFxuICAgICAgUGFyYW1ldGVyLFxuICAgIH06IHtcbiAgICAgIE5hbWU6IHN0cmluZztcbiAgICAgIFJldHVyblR5cGU/OiBhbnk7XG4gICAgICBJc0JvdW5kPzogYm9vbGVhbjtcbiAgICAgIEVudGl0eVNldFBhdGg/OiBzdHJpbmc7XG4gICAgICBQYXJhbWV0ZXI/OiBhbnlbXTtcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLk5hbWUgPSBOYW1lO1xuICAgIHRoaXMuUmV0dXJuVHlwZSA9IFJldHVyblR5cGUgPyBuZXcgQ3NkbFJldHVyblR5cGUoUmV0dXJuVHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5Jc0JvdW5kID0gSXNCb3VuZDtcbiAgICB0aGlzLkVudGl0eVNldFBhdGggPSBFbnRpdHlTZXRQYXRoO1xuICAgIHRoaXMuUGFyYW1ldGVyID0gUGFyYW1ldGVyPy5tYXAoKHApID0+IG5ldyBDc2RsUGFyYW1ldGVyKHApKTtcbiAgfVxuXG4gIHRvSnNvbigpIHtcbiAgICBjb25zdCBqc29uOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgTmFtZTogdGhpcy5OYW1lLFxuICAgIH07XG4gICAgaWYgKHRoaXMuUmV0dXJuVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBqc29uWydSZXR1cm5UeXBlJ10gPSB0aGlzLlJldHVyblR5cGUudG9Kc29uKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLklzQm91bmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnSXNCb3VuZCddID0gdGhpcy5Jc0JvdW5kO1xuICAgIH1cbiAgICBpZiAodGhpcy5FbnRpdHlTZXRQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ0VudGl0eVNldFBhdGgnXSA9IHRoaXMuRW50aXR5U2V0UGF0aDtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5QYXJhbWV0ZXIpICYmIHRoaXMuUGFyYW1ldGVyLmxlbmd0aCA+IDApIHtcbiAgICAgIGpzb25bJ1BhcmFtZXRlciddID0gdGhpcy5QYXJhbWV0ZXIubWFwKChwKSA9PiBwLnRvSnNvbigpKTtcbiAgICB9XG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBuYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLk5hbWV9YDtcbiAgfVxuICBuYW1lc3BhY2UoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuc2NoZW1hLk5hbWVzcGFjZX1gO1xuICB9XG4gIGZ1bGxOYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWVzcGFjZSgpfS4ke3RoaXMuTmFtZX1gO1xuICB9XG59XG5leHBvcnQgY2xhc3MgQ3NkbEZ1bmN0aW9uIGV4dGVuZHMgQ3NkbENhbGxhYmxlIHtcbiAgSXNDb21wb3NhYmxlPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY2hlbWE6IENzZGxTY2hlbWEsXG4gICAge1xuICAgICAgTmFtZSxcbiAgICAgIFJldHVyblR5cGUsXG4gICAgICBJc0JvdW5kLFxuICAgICAgRW50aXR5U2V0UGF0aCxcbiAgICAgIElzQ29tcG9zYWJsZSxcbiAgICAgIFBhcmFtZXRlcixcbiAgICB9OiB7XG4gICAgICBOYW1lOiBzdHJpbmc7XG4gICAgICBSZXR1cm5UeXBlOiBhbnk7XG4gICAgICBJc0JvdW5kPzogYm9vbGVhbjtcbiAgICAgIEVudGl0eVNldFBhdGg/OiBzdHJpbmc7XG4gICAgICBJc0NvbXBvc2FibGU/OiBib29sZWFuO1xuICAgICAgUGFyYW1ldGVyPzogYW55W107XG4gICAgfSxcbiAgKSB7XG4gICAgc3VwZXIoc2NoZW1hLCB7IE5hbWUsIFJldHVyblR5cGUsIElzQm91bmQsIEVudGl0eVNldFBhdGgsIFBhcmFtZXRlciB9KTtcbiAgICB0aGlzLklzQ29tcG9zYWJsZSA9IElzQ29tcG9zYWJsZTtcbiAgfVxuXG4gIG92ZXJyaWRlIHRvSnNvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIudG9Kc29uKCksXG4gICAgICBJc0NvbXBvc2FibGU6IHRoaXMuSXNDb21wb3NhYmxlLFxuICAgIH07XG4gIH1cblxuICB0b0NvbmZpZyhiYXNlPzogUGFydGlhbDxDYWxsYWJsZUNvbmZpZz4pOiBDYWxsYWJsZUNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMuTmFtZSxcbiAgICAgIGVudGl0eVNldFBhdGg6IHRoaXMuRW50aXR5U2V0UGF0aCxcbiAgICAgIGJvdW5kOiB0aGlzLklzQm91bmQsXG4gICAgICBjb21wb3NhYmxlOiB0aGlzLklzQ29tcG9zYWJsZSxcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMuUGFyYW1ldGVyPy5tYXAoKHApID0+IHAudG9Db25maWcoKSksXG4gICAgICByZXR1cm46IHRoaXMuUmV0dXJuVHlwZT8udG9Db25maWcoKSxcbiAgICB9IGFzIENhbGxhYmxlQ29uZmlnO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsQWN0aW9uIGV4dGVuZHMgQ3NkbENhbGxhYmxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NoZW1hOiBDc2RsU2NoZW1hLFxuICAgIHtcbiAgICAgIE5hbWUsXG4gICAgICBSZXR1cm5UeXBlLFxuICAgICAgSXNCb3VuZCxcbiAgICAgIEVudGl0eVNldFBhdGgsXG4gICAgICBQYXJhbWV0ZXIsXG4gICAgfToge1xuICAgICAgTmFtZTogc3RyaW5nO1xuICAgICAgUmV0dXJuVHlwZT86IGFueTtcbiAgICAgIElzQm91bmQ/OiBib29sZWFuO1xuICAgICAgRW50aXR5U2V0UGF0aD86IHN0cmluZztcbiAgICAgIFBhcmFtZXRlcj86IGFueVtdO1xuICAgIH0sXG4gICkge1xuICAgIHN1cGVyKHNjaGVtYSwgeyBOYW1lLCBSZXR1cm5UeXBlLCBJc0JvdW5kLCBFbnRpdHlTZXRQYXRoLCBQYXJhbWV0ZXIgfSk7XG4gIH1cblxuICBvdmVycmlkZSB0b0pzb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvSnNvbigpLFxuICAgIH07XG4gIH1cblxuICB0b0NvbmZpZyhiYXNlPzogUGFydGlhbDxDYWxsYWJsZUNvbmZpZz4pOiBDYWxsYWJsZUNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMuTmFtZSxcbiAgICAgIGVudGl0eVNldFBhdGg6IHRoaXMuRW50aXR5U2V0UGF0aCxcbiAgICAgIGJvdW5kOiB0aGlzLklzQm91bmQsXG4gICAgICBwYXJhbWV0ZXJzOiB0aGlzLlBhcmFtZXRlcj8ubWFwKChwKSA9PiBwLnRvQ29uZmlnKCkpLFxuICAgICAgcmV0dXJuOiB0aGlzLlJldHVyblR5cGU/LnRvQ29uZmlnKCksXG4gICAgfSBhcyBDYWxsYWJsZUNvbmZpZztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbEZ1bmN0aW9uSW1wb3J0IHtcbiAgTmFtZTogc3RyaW5nO1xuICBGdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgRW50aXR5U2V0Pzogc3RyaW5nO1xuICBJbmNsdWRlSW5TZXJ2aWNlRG9jdW1lbnQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGFpbmVyOiBDc2RsRW50aXR5Q29udGFpbmVyLFxuICAgIHtcbiAgICAgIE5hbWUsXG4gICAgICBGdW5jdGlvbk5hbWUsXG4gICAgICBFbnRpdHlTZXQsXG4gICAgICBJbmNsdWRlSW5TZXJ2aWNlRG9jdW1lbnQsXG4gICAgfToge1xuICAgICAgTmFtZTogc3RyaW5nO1xuICAgICAgRnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgICBFbnRpdHlTZXQ/OiBzdHJpbmc7XG4gICAgICBJbmNsdWRlSW5TZXJ2aWNlRG9jdW1lbnQ/OiBib29sZWFuO1xuICAgIH0sXG4gICkge1xuICAgIHRoaXMuTmFtZSA9IE5hbWU7XG4gICAgdGhpcy5GdW5jdGlvbk5hbWUgPSBGdW5jdGlvbk5hbWU7XG4gICAgdGhpcy5FbnRpdHlTZXQgPSBFbnRpdHlTZXQ7XG4gICAgdGhpcy5JbmNsdWRlSW5TZXJ2aWNlRG9jdW1lbnQgPSBJbmNsdWRlSW5TZXJ2aWNlRG9jdW1lbnQ7XG4gIH1cblxuICB0b0pzb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIE5hbWU6IHRoaXMuTmFtZSxcbiAgICAgIEZ1bmN0aW9uTmFtZTogdGhpcy5GdW5jdGlvbk5hbWUsXG4gICAgICBFbnRpdHlTZXQ6IHRoaXMuRW50aXR5U2V0LFxuICAgICAgSW5jbHVkZUluU2VydmljZURvY3VtZW50OiB0aGlzLkluY2x1ZGVJblNlcnZpY2VEb2N1bWVudCxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsQWN0aW9uSW1wb3J0IHtcbiAgTmFtZTogc3RyaW5nO1xuICBBY3Rpb246IHN0cmluZztcbiAgRW50aXR5U2V0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGFpbmVyOiBDc2RsRW50aXR5Q29udGFpbmVyLFxuICAgIHtcbiAgICAgIE5hbWUsXG4gICAgICBBY3Rpb24sXG4gICAgICBFbnRpdHlTZXQsXG4gICAgfToge1xuICAgICAgTmFtZTogc3RyaW5nO1xuICAgICAgQWN0aW9uOiBzdHJpbmc7XG4gICAgICBFbnRpdHlTZXQ/OiBzdHJpbmc7XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5OYW1lID0gTmFtZTtcbiAgICB0aGlzLkFjdGlvbiA9IEFjdGlvbjtcbiAgICB0aGlzLkVudGl0eVNldCA9IEVudGl0eVNldDtcbiAgfVxuXG4gIHRvSnNvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgTmFtZTogdGhpcy5OYW1lLFxuICAgICAgQWN0aW9uOiB0aGlzLkFjdGlvbixcbiAgICAgIEVudGl0eVNldDogdGhpcy5FbnRpdHlTZXQsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbFBhcmFtZXRlciBleHRlbmRzIENzZGxBbm5vdGFibGUge1xuICBOYW1lOiBzdHJpbmc7XG4gIFR5cGU6IHN0cmluZztcbiAgQ29sbGVjdGlvbjogYm9vbGVhbjtcbiAgTnVsbGFibGU/OiBib29sZWFuO1xuICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gIFByZWNpc2lvbj86IG51bWJlcjtcbiAgU2NhbGU/OiBudW1iZXI7XG4gIFNSSUQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIE5hbWUsXG4gICAgVHlwZSxcbiAgICBOdWxsYWJsZSxcbiAgICBNYXhMZW5ndGgsXG4gICAgUHJlY2lzaW9uLFxuICAgIFNjYWxlLFxuICAgIFNSSUQsXG4gICAgQW5ub3RhdGlvbixcbiAgfToge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgTnVsbGFibGU/OiBib29sZWFuO1xuICAgIE1heExlbmd0aD86IG51bWJlcjtcbiAgICBQcmVjaXNpb24/OiBudW1iZXI7XG4gICAgU2NhbGU/OiBudW1iZXI7XG4gICAgU1JJRD86IHN0cmluZztcbiAgICBBbm5vdGF0aW9uPzogYW55W107XG4gIH0pIHtcbiAgICBzdXBlcih7IEFubm90YXRpb24gfSk7XG4gICAgdGhpcy5OYW1lID0gTmFtZTtcbiAgICB0aGlzLkNvbGxlY3Rpb24gPSBUeXBlLnN0YXJ0c1dpdGgoJ0NvbGxlY3Rpb24oJyk7XG4gICAgdGhpcy5UeXBlID0gdGhpcy5Db2xsZWN0aW9uID8gVHlwZS5zdWJzdHJpbmcoMTEsIFR5cGUubGVuZ3RoIC0gMSkgOiBUeXBlO1xuICAgIHRoaXMuTnVsbGFibGUgPSBOdWxsYWJsZTtcbiAgICB0aGlzLk1heExlbmd0aCA9IE1heExlbmd0aDtcbiAgICB0aGlzLlByZWNpc2lvbiA9IFByZWNpc2lvbjtcbiAgICB0aGlzLlNjYWxlID0gU2NhbGU7XG4gICAgdGhpcy5TUklEID0gU1JJRDtcbiAgfVxuXG4gIG92ZXJyaWRlIHRvSnNvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIudG9Kc29uKCksXG4gICAgICBOYW1lOiB0aGlzLk5hbWUsXG4gICAgICBUeXBlOiB0aGlzLkNvbGxlY3Rpb24gPyBgQ29sbGVjdGlvbigke3RoaXMuVHlwZX0pYCA6IHRoaXMuVHlwZSxcbiAgICAgIE51bGxhYmxlOiB0aGlzLk51bGxhYmxlLFxuICAgICAgTWF4TGVuZ3RoOiB0aGlzLk1heExlbmd0aCxcbiAgICAgIFByZWNpc2lvbjogdGhpcy5QcmVjaXNpb24sXG4gICAgICBTY2FsZTogdGhpcy5TY2FsZSxcbiAgICAgIFNSSUQ6IHRoaXMuU1JJRCxcbiAgICB9O1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Db25maWcoKTogUGFyYW1ldGVyQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIudG9Db25maWcoKSxcbiAgICAgIHR5cGU6IHRoaXMuVHlwZSxcbiAgICAgIG51bGxhYmxlOiB0aGlzLk51bGxhYmxlLFxuICAgICAgY29sbGVjdGlvbjogZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbFJldHVyblR5cGUge1xuICBUeXBlOiBzdHJpbmc7XG4gIENvbGxlY3Rpb246IGJvb2xlYW47XG4gIE51bGxhYmxlPzogYm9vbGVhbjtcbiAgTWF4TGVuZ3RoPzogbnVtYmVyO1xuICBQcmVjaXNpb24/OiBudW1iZXI7XG4gIFNjYWxlPzogbnVtYmVyO1xuICBTUklEPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBUeXBlLFxuICAgIE51bGxhYmxlLFxuICAgIE1heExlbmd0aCxcbiAgICBQcmVjaXNpb24sXG4gICAgU2NhbGUsXG4gICAgU1JJRCxcbiAgfToge1xuICAgIFR5cGU6IHN0cmluZztcbiAgICBOdWxsYWJsZT86IGJvb2xlYW47XG4gICAgTWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIFByZWNpc2lvbj86IG51bWJlcjtcbiAgICBTY2FsZT86IG51bWJlcjtcbiAgICBTUklEPzogc3RyaW5nO1xuICB9KSB7XG4gICAgdGhpcy5Db2xsZWN0aW9uID0gVHlwZS5zdGFydHNXaXRoKCdDb2xsZWN0aW9uKCcpO1xuICAgIHRoaXMuVHlwZSA9IHRoaXMuQ29sbGVjdGlvbiA/IFR5cGUuc3Vic3RyaW5nKDExLCBUeXBlLmxlbmd0aCAtIDEpIDogVHlwZTtcbiAgICB0aGlzLk51bGxhYmxlID0gTnVsbGFibGU7XG4gICAgdGhpcy5NYXhMZW5ndGggPSBNYXhMZW5ndGg7XG4gICAgdGhpcy5QcmVjaXNpb24gPSBQcmVjaXNpb247XG4gICAgdGhpcy5TY2FsZSA9IFNjYWxlO1xuICAgIHRoaXMuU1JJRCA9IFNSSUQ7XG4gIH1cblxuICB0b0pzb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFR5cGU6IHRoaXMuQ29sbGVjdGlvbiA/IGBDb2xsZWN0aW9uKCR7dGhpcy5UeXBlfSlgIDogdGhpcy5UeXBlLFxuICAgICAgTnVsbGFibGU6IHRoaXMuTnVsbGFibGUsXG4gICAgICBNYXhMZW5ndGg6IHRoaXMuTWF4TGVuZ3RoLFxuICAgICAgUHJlY2lzaW9uOiB0aGlzLlByZWNpc2lvbixcbiAgICAgIFNjYWxlOiB0aGlzLlNjYWxlLFxuICAgICAgU1JJRDogdGhpcy5TUklELFxuICAgIH07XG4gIH1cblxuICB0b0NvbmZpZygpOiB7IHR5cGU6IHN0cmluZzsgY29sbGVjdGlvbj86IGJvb2xlYW4gfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuVHlwZSxcbiAgICAgIGNvbGxlY3Rpb246IGZhbHNlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==