Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pragma-schema

Package Overview
Dependencies
Maintainers
1
Versions
75
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pragma-schema - npm Package Compare versions

Comparing version 1.0.31 to 1.0.32

40

amd/src/schema.js

@@ -53,3 +53,2 @@ define(["exports"], function (exports) {

this.remote = remote;
this.preview = {};
}

@@ -60,7 +59,2 @@

}
addPreview(remote, idField) {
this.preview["remote"] = remote;
this.preview["id-field"] = idField;
}
};

@@ -155,6 +149,6 @@ let Column = exports.Column = class Column {

constructor(name, lookup, peek) {
constructor(name, lookup, preview) {
this.name = name;
this.lookup = lookup;
this.peek = peek;
this.preview = preview;
this.validations = ValidationCollection.createInstance();

@@ -170,4 +164,4 @@ }

add(name, lookup, peek) {
const itemToAdd = new Field(name, lookup, peek);
add(name, lookup, preview) {
const itemToAdd = new Field(name, lookup, preview);
this.push(itemToAdd);

@@ -233,2 +227,25 @@ return itemToAdd;

};
let Preview = exports.Preview = class Preview extends IdObject {
constructor(id, remote, lookupField, datasetField) {
super(id);
this.remote = remote;
this["lookup-field"] = lookupField;
this["dataset-field"] = datasetField;
}
};
let PreviewCollection = exports.PreviewCollection = class PreviewCollection extends Array {
static createInstance() {
const result = new PreviewCollection();
result.__proto__ = PreviewCollection.prototype;
return result;
}
add(remote, lookupField, datasetField) {
const id = this.length;
const itemToAdd = new Preview(id, remote, lookupField, datasetField);
this.push(itemToAdd);
return itemToAdd;
}
};
let ResourceDataSource = exports.ResourceDataSource = class ResourceDataSource {

@@ -284,2 +301,3 @@

this.datasets = DatasetCollection.createInstance();
this.previews = PreviewCollection.createInstance();
this.datasources = DataSourceCollection.createInstance();

@@ -415,2 +433,2 @@ this.templates = TemplateCollection.createInstance();

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVtYS5qcyJdLCJuYW1lcyI6WyJJZE9iamVjdCIsImNvbnN0cnVjdG9yIiwiaWQiLCJQZXJzcGVjdGl2ZSIsIm5hbWUiLCJpZEZpZWxkIiwiY2FjaGUiLCJhZ2dyZWdhdGUiLCJncm91cGluZyIsInNvcnRpbmciLCJkYXRhIiwiUGVyc3BlY3RpdmVEYXRhIiwidmlld3MiLCJWaWV3Q29sbGVjdGlvbiIsImNyZWF0ZUluc3RhbmNlIiwiUGVyc3BlY3RpdmVDb2xsZWN0aW9uIiwiQXJyYXkiLCJyZXN1bHQiLCJfX3Byb3RvX18iLCJwcm90b3R5cGUiLCJhZGQiLCJsZW5ndGgiLCJpdGVtVG9BZGQiLCJwdXNoIiwiTG9va3VwIiwicGVyc3BlY3RpdmUiLCJ2aWV3IiwicmVtb3RlIiwibWFwcGluZyIsInByZXZpZXciLCJhZGRNYXBwaW5nIiwidGFyZ2V0Iiwic291cmNlIiwiYWRkUHJldmlldyIsIkNvbHVtbiIsImZpZWxkIiwidGl0bGUiLCJ3aWR0aCIsIkNvbHVtbkNvbGxlY3Rpb24iLCJWaWV3IiwidHlwZSIsImNvbHVtbnMiLCJMb29rdXBDb2xsZWN0aW9uIiwiVmFsaWRhdGlvbiIsInJ1bGVzIiwiYWRkUnVsZSIsInJ1bGUiLCJ2YWx1ZSIsInJlbW92ZVJ1bGUiLCJWYWxpZGF0aW9uQ29sbGVjdGlvbiIsIkZpZWxkIiwibG9va3VwIiwicGVlayIsInZhbGlkYXRpb25zIiwiRmllbGRDb2xsZWN0aW9uIiwiYnlOYW1lIiwiZmluZCIsIml0ZW0iLCJEYXRhc2V0IiwiZmllbGRzIiwiRGF0YXNldENvbGxlY3Rpb24iLCJkc0lkIiwidW5kZWZpbmVkIiwiZHNOYW1lIiwiVGVtcGxhdGUiLCJlbGVtZW50cyIsIlRlbXBsYXRlQ29sbGVjdGlvbiIsInRlbXBsYXRlSWQiLCJEYXRhU291cmNlIiwicmVmZXJlbmNlIiwiUmVzb3VyY2VEYXRhU291cmNlIiwicmVzb3VyY2UiLCJSZXNvdXJjZURhdGFTb3VyY2VJdGVtIiwiRGF0YVNvdXJjZUNvbGxlY3Rpb24iLCJhZGRUeXBlIiwiYWRkUmVzb3VyY2UiLCJTY2hlbWEiLCJwZXJzcGVjdGl2ZXMiLCJsb29rdXBzIiwiZGF0YXNldHMiLCJkYXRhc291cmNlcyIsInRlbXBsYXRlcyIsImJvZHkiLCJTY2hlbWFFbGVtZW50RmFjdG9yeSIsImdyb3VwIiwiY2hlY2tib3giLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiYWRkQXR0cmlidXRlcyIsImFkZFN0eWxlcyIsImlucHV0IiwicmVhZG9ubHkiLCJzZWxlY3QiLCJkYXRhU291cmNlSWQiLCJtZW1vIiwidGVtcGxhdGUiLCJjYXJkIiwiaHRtbEVsZW1lbnQiLCJodG1sVGFnIiwiY29udGVudCIsInZpc3VhbGl6YXRpb24iLCJkYXRhc291cmNlIiwib2JqIl0sIm1hcHBpbmdzIjoiOzs7O1FBQU1BLFEsR0FBTixNQUFNQSxRQUFOLENBQWU7O0FBR1hDLG9CQUFZQyxFQUFaLEVBQWdCO0FBQ1osaUJBQUtBLEVBQUwsR0FBVUEsRUFBVjtBQUNIO0FBTFUsSztRQVFGQyxXLFdBQUFBLFcsR0FBTixNQUFNQSxXQUFOLFNBQTBCSCxRQUExQixDQUFtQzs7QUFLdENDLG9CQUFZQyxFQUFaLEVBQWdCRSxJQUFoQixFQUFzQkMsT0FBdEIsRUFBK0JDLEtBQS9CLEVBQXNDQyxTQUF0QyxFQUFpREMsUUFBakQsRUFBMkRDLE9BQTNELEVBQW9FO0FBQ2hFLGtCQUFNUCxFQUFOO0FBQ0EsaUJBQUtFLElBQUwsR0FBWUEsSUFBWjtBQUNBLGlCQUFLLFVBQUwsSUFBbUJDLE9BQW5CO0FBQ0EsaUJBQUtLLElBQUwsR0FBWSxJQUFJQyxlQUFKLENBQW9CTCxLQUFwQixFQUEyQkMsU0FBM0IsRUFBc0NDLFFBQXRDLEVBQWdEQyxPQUFoRCxDQUFaO0FBQ0EsaUJBQUtHLEtBQUwsR0FBYUMsZUFBZUMsY0FBZixFQUFiO0FBQ0g7QUFYcUMsSztRQWM3QkMscUIsV0FBQUEscUIsR0FBTixNQUFNQSxxQkFBTixTQUFvQ0MsS0FBcEMsQ0FBMEM7QUFDN0MsZUFBT0YsY0FBUCxHQUF3QjtBQUNwQixr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Z0JBQUlBLFVBQVV6QixTQUFkLEVBQXlCO0FBQ3JCd0Msb0JBQUlmLE1BQUosR0FBYUEsTUFBYjtBQUNIO0FBQ0o7QUF6SDZCLEsiLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSWRPYmplY3Qge1xyXG4gICAgaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzcGVjdGl2ZSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICBkYXRhO1xyXG4gICAgdmlld3M7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpc1snaWQtZmllbGQnXSA9IGlkRmllbGQ7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBlcnNwZWN0aXZlRGF0YShjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZyk7XHJcbiAgICAgICAgdGhpcy52aWV3cyA9IFZpZXdDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFBlcnNwZWN0aXZlQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgUGVyc3BlY3RpdmUoaWQsIG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc3BlY3RpdmVEYXRhIHtcclxuICAgIGNhY2hlO1xyXG4gICAgYWdncmVnYXRlO1xyXG4gICAgZ3JvdXBpbmc7XHJcbiAgICBzb3J0aW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRlID0gYWdncmVnYXRlO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBpbmcgPSBncm91cGluZztcclxuICAgICAgICB0aGlzLnNvcnRpbmcgPSBzb3J0aW5nO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTG9va3VwIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIG1hcHBpbmc7XHJcbiAgICBwZXJzcGVjdGl2ZTtcclxuICAgIHZpZXc7XHJcbiAgICByZW1vdGU7XHJcbiAgICBwcmV2aWV3O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lLCBwZXJzcGVjdGl2ZSwgdmlldywgcmVtb3RlKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5tYXBwaW5nID0ge307XHJcbiAgICAgICAgdGhpcy5wZXJzcGVjdGl2ZSA9IHBlcnNwZWN0aXZlO1xyXG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XHJcbiAgICAgICAgdGhpcy5yZW1vdGUgPSByZW1vdGU7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTWFwcGluZyh0YXJnZXQsIHNvdXJjZSkge1xyXG4gICAgICAgIHRoaXMubWFwcGluZ1t0YXJnZXRdID0gc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFByZXZpZXcocmVtb3RlLCBpZEZpZWxkKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3W1wicmVtb3RlXCJdID0gcmVtb3RlO1xyXG4gICAgICAgIHRoaXMucHJldmlld1tcImlkLWZpZWxkXCJdID0gaWRGaWVsZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtbiB7XHJcbiAgICBmaWVsZDtcclxuICAgIHRpdGxlO1xyXG4gICAgd2lkdGg7XHJcblxyXG4gICAgY29uc3RydWN0b3IoZmllbGQsIHRpdGxlLCB3aWR0aCkge1xyXG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDtcclxuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgQ29sdW1uQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBDb2x1bW5Db2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChmaWVsZCwgdGl0bGUsIHdpZHRoKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IENvbHVtbihmaWVsZCwgdGl0bGUsIHdpZHRoKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmlldyBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICB0eXBlO1xyXG4gICAgY29sdW1ucztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgbmFtZSwgdHlwZSkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gQ29sdW1uQ29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmlld0NvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFZpZXdDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IFZpZXdDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChuYW1lLCB0eXBlKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgVmlldyhpZCwgbmFtZSwgdHlwZSk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExvb2t1cENvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IExvb2t1cENvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gTG9va3VwQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQobmFtZSwgcGVyc3BlY3RpdmUsIHZpZXcsIHJlbW90ZSkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5sZW5ndGggKyAxO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBMb29rdXAoaWQsIG5hbWUsIHBlcnNwZWN0aXZlLCB2aWV3LCByZW1vdGUpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uIHtcclxuICAgIHR5cGU7XHJcbiAgICBydWxlcztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih0eXBlKSB7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgICAgICB0aGlzLnJ1bGVzID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUnVsZShydWxlLCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMucnVsZXNbcnVsZV0gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVSdWxlKHJ1bGUpIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5ydWxlc1tydWxlXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Db2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBWYWxpZGF0aW9uQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBWYWxpZGF0aW9uQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQodHlwZSkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBWYWxpZGF0aW9uKHR5cGUpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWVsZCB7XHJcbiAgICBuYW1lO1xyXG4gICAgbG9va3VwO1xyXG4gICAgcGVlaztcclxuICAgIHZhbGlkYXRpb25zO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG5hbWUsIGxvb2t1cCwgcGVlaykge1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5sb29rdXAgPSBsb29rdXA7XHJcbiAgICAgICAgdGhpcy5wZWVrID0gcGVlaztcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25zID0gVmFsaWRhdGlvbkNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmllbGRDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IEZpZWxkQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQobmFtZSwgbG9va3VwLCBwZWVrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IEZpZWxkKG5hbWUsIGxvb2t1cCwgcGVlayk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxuXHJcbiAgICBieU5hbWUobmFtZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT0gbmFtZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhc2V0IGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIGZpZWxkcztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgbmFtZSkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuZmllbGRzID0gRmllbGRDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhc2V0Q29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0YXNldENvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gRGF0YXNldENvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKGlkLCBuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZHNJZCA9IGlkID09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoICsgMSA6IGlkO1xyXG4gICAgICAgIGNvbnN0IGRzTmFtZSA9IG5hbWUgPT0gdW5kZWZpbmVkID8gYGRhdGFzZXQgJHtkc0lkfWAgOiBuYW1lO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBEYXRhc2V0KGRzSWQsIGRzTmFtZSk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIGVsZW1lbnRzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IFtdO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBUZW1wbGF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gVGVtcGxhdGVDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChpZCkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlSWQgPSBpZCA9PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGlkO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBUZW1wbGF0ZSh0ZW1wbGF0ZUlkKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIGlkO1xyXG4gICAgcmVmZXJlbmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMucmVmZXJlbmNlID0gXCJcIjtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlRGF0YVNvdXJjZSB7XHJcbiAgICBpZDtcclxuICAgIHJlc291cmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnJlc291cmNlLmxlbmd0aCArIDE7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IFJlc291cmNlRGF0YVNvdXJjZUl0ZW0oaWQpO1xyXG4gICAgICAgIHRoaXMucmVzb3VyY2UucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZURhdGFTb3VyY2VJdGVtIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgaWQ7XHJcbiAgICB0aXRsZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLnRpdGxlID0gYEl0ZW0gJHtpZH1gO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGFTb3VyY2VDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IERhdGFTb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRUeXBlKERhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFJlc291cmNlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFR5cGUoUmVzb3VyY2VEYXRhU291cmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRUeXBlKHR5cGUpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHRoaXMubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyB0eXBlKGlkKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZW1hIHtcclxuICAgIHR5cGU7XHJcbiAgICBwZXJzcGVjdGl2ZXM7XHJcbiAgICBsb29rdXBzO1xyXG4gICAgZGF0YXNldHM7XHJcbiAgICBkYXRhc291cmNlcztcclxuICAgIGJvZHk7XHJcbiAgICB0ZW1wbGF0ZXM7XHJcblxyXG4gICAgY29uc3RydWN0b3IodHlwZSkge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5wZXJzcGVjdGl2ZXMgPSBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLmxvb2t1cHMgPSBMb29rdXBDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhc2V0cyA9IERhdGFzZXRDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhc291cmNlcyA9IERhdGFTb3VyY2VDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBUZW1wbGF0ZUNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLmJvZHkgPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhc2V0cy5hZGQoMCwgXCJtb2RlbFwiKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYUVsZW1lbnRGYWN0b3J5IHtcclxuICAgIHN0YXRpYyBncm91cCh0aXRsZSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcImdyb3VwXCIsXHJcbiAgICAgICAgICAgIFwidGl0bGVcIjogdGl0bGUsXHJcbiAgICAgICAgICAgIFwiZWxlbWVudHNcIjogW11cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNoZWNrYm94KHRpdGxlLCBmaWVsZCwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJjaGVja2JveFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlucHV0KHRpdGxlLCBmaWVsZCwgdHlwZSwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJpbnB1dFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJlc3VsdC5hdHRyaWJ1dGVzLnB1c2goe1xyXG4gICAgICAgICAgICBcInR5cGVcIjogdHlwZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWFkb25seSh0aXRsZSwgZmllbGQsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwicmVhZG9ubHlcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNlbGVjdCh0aXRsZSwgZmllbGQsIGRhdGFTb3VyY2VJZCwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJzZWxlY3RcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZCxcclxuICAgICAgICAgICAgXCJkYXRhc291cmNlXCI6IGRhdGFTb3VyY2VJZCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRBdHRyaWJ1dGVzKHJlc3VsdCwgYXR0cmlidXRlcyk7XHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkU3R5bGVzKHJlc3VsdCwgc3R5bGVzKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbWVtbyh0aXRsZSwgZmllbGQsIGF0dHJpYnV0ZXMsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwibWVtb1wiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHRlbXBsYXRlKHRlbXBsYXRlSWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJ0ZW1wbGF0ZVwiLFxyXG4gICAgICAgICAgICBcInRlbXBsYXRlXCI6IHRlbXBsYXRlSWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNhcmQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwiY2FyZFwiLFxyXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaHRtbEVsZW1lbnQoaHRtbFRhZywgY29udGVudCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBodG1sVGFnLFxyXG4gICAgICAgICAgICBcImNvbnRlbnRcIjogY29udGVudFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHZpc3VhbGl6YXRpb24oZGF0YXNvdXJjZSwgcGVyc3BlY3RpdmUsIHZpZXcpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJ2aXN1YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgIFwiZGF0YXNvdXJjZVwiOiBkYXRhc291cmNlLFxyXG4gICAgICAgICAgICBcInBlcnNwZWN0aXZlXCI6IHBlcnNwZWN0aXZlLFxyXG4gICAgICAgICAgICBcInZpZXdcIjogdmlld1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWRkQXR0cmlidXRlcyhvYmosIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBpZiAoYXR0cmlidXRlcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZFN0eWxlcyhvYmosIHN0eWxlcykge1xyXG4gICAgICAgIGlmIChzdHlsZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIG9iai5zdHlsZXMgPSBzdHlsZXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVtYS5qcyJdLCJuYW1lcyI6WyJJZE9iamVjdCIsImNvbnN0cnVjdG9yIiwiaWQiLCJQZXJzcGVjdGl2ZSIsIm5hbWUiLCJpZEZpZWxkIiwiY2FjaGUiLCJhZ2dyZWdhdGUiLCJncm91cGluZyIsInNvcnRpbmciLCJkYXRhIiwiUGVyc3BlY3RpdmVEYXRhIiwidmlld3MiLCJWaWV3Q29sbGVjdGlvbiIsImNyZWF0ZUluc3RhbmNlIiwiUGVyc3BlY3RpdmVDb2xsZWN0aW9uIiwiQXJyYXkiLCJyZXN1bHQiLCJfX3Byb3RvX18iLCJwcm90b3R5cGUiLCJhZGQiLCJsZW5ndGgiLCJpdGVtVG9BZGQiLCJwdXNoIiwiTG9va3VwIiwicGVyc3BlY3RpdmUiLCJ2aWV3IiwicmVtb3RlIiwibWFwcGluZyIsImFkZE1hcHBpbmciLCJ0YXJnZXQiLCJzb3VyY2UiLCJDb2x1bW4iLCJmaWVsZCIsInRpdGxlIiwid2lkdGgiLCJDb2x1bW5Db2xsZWN0aW9uIiwiVmlldyIsInR5cGUiLCJjb2x1bW5zIiwiTG9va3VwQ29sbGVjdGlvbiIsIlZhbGlkYXRpb24iLCJydWxlcyIsImFkZFJ1bGUiLCJydWxlIiwidmFsdWUiLCJyZW1vdmVSdWxlIiwiVmFsaWRhdGlvbkNvbGxlY3Rpb24iLCJGaWVsZCIsImxvb2t1cCIsInByZXZpZXciLCJ2YWxpZGF0aW9ucyIsIkZpZWxkQ29sbGVjdGlvbiIsImJ5TmFtZSIsImZpbmQiLCJpdGVtIiwiRGF0YXNldCIsImZpZWxkcyIsIkRhdGFzZXRDb2xsZWN0aW9uIiwiZHNJZCIsInVuZGVmaW5lZCIsImRzTmFtZSIsIlRlbXBsYXRlIiwiZWxlbWVudHMiLCJUZW1wbGF0ZUNvbGxlY3Rpb24iLCJ0ZW1wbGF0ZUlkIiwiRGF0YVNvdXJjZSIsInJlZmVyZW5jZSIsIlByZXZpZXciLCJsb29rdXBGaWVsZCIsImRhdGFzZXRGaWVsZCIsIlByZXZpZXdDb2xsZWN0aW9uIiwiUmVzb3VyY2VEYXRhU291cmNlIiwicmVzb3VyY2UiLCJSZXNvdXJjZURhdGFTb3VyY2VJdGVtIiwiRGF0YVNvdXJjZUNvbGxlY3Rpb24iLCJhZGRUeXBlIiwiYWRkUmVzb3VyY2UiLCJTY2hlbWEiLCJwZXJzcGVjdGl2ZXMiLCJsb29rdXBzIiwiZGF0YXNldHMiLCJwcmV2aWV3cyIsImRhdGFzb3VyY2VzIiwidGVtcGxhdGVzIiwiYm9keSIsIlNjaGVtYUVsZW1lbnRGYWN0b3J5IiwiZ3JvdXAiLCJjaGVja2JveCIsImF0dHJpYnV0ZXMiLCJzdHlsZXMiLCJhZGRBdHRyaWJ1dGVzIiwiYWRkU3R5bGVzIiwiaW5wdXQiLCJyZWFkb25seSIsInNlbGVjdCIsImRhdGFTb3VyY2VJZCIsIm1lbW8iLCJ0ZW1wbGF0ZSIsImNhcmQiLCJodG1sRWxlbWVudCIsImh0bWxUYWciLCJjb250ZW50IiwidmlzdWFsaXphdGlvbiIsImRhdGFzb3VyY2UiLCJvYmoiXSwibWFwcGluZ3MiOiI7Ozs7UUFBTUEsUSxHQUFOLE1BQU1BLFFBQU4sQ0FBZTs7QUFHWEMsb0JBQVlDLEVBQVosRUFBZ0I7QUFDWixpQkFBS0EsRUFBTCxHQUFVQSxFQUFWO0FBQ0g7QUFMVSxLO1FBUUZDLFcsV0FBQUEsVyxHQUFOLE1BQU1BLFdBQU4sU0FBMEJILFFBQTFCLENBQW1DOztBQUt0Q0Msb0JBQVlDLEVBQVosRUFBZ0JFLElBQWhCLEVBQXNCQyxPQUF0QixFQUErQkMsS0FBL0IsRUFBc0NDLFNBQXRDLEVBQWlEQyxRQUFqRCxFQUEyREMsT0FBM0QsRUFBb0U7QUFDaEUsa0JBQU1QLEVBQU47QUFDQSxpQkFBS0UsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsaUJBQUssVUFBTCxJQUFtQkMsT0FBbkI7QUFDQSxpQkFBS0ssSUFBTCxHQUFZLElBQUlDLGVBQUosQ0FBb0JMLEtBQXBCLEVBQTJCQyxTQUEzQixFQUFzQ0MsUUFBdEMsRUFBZ0RDLE9BQWhELENBQVo7QUFDQSxpQkFBS0csS0FBTCxHQUFhQyxlQUFlQyxjQUFmLEVBQWI7QUFDSDtBQVhxQyxLO1FBYzdCQyxxQixXQUFBQSxxQixHQUFOLE1BQU1BLHFCQUFO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QkFBWUE7QUFGVCxhQUFQO0FBSUg7O0FBRUQsZUFBT2tDLElBQVAsR0FBYztBQUNWLG1CQUFPO0FBQ0gsMkJBQVcsTUFEUjtBQUVILDRCQUFZO0FBRlQsYUFBUDtBQUlIOztBQUVELGVBQU9DLFdBQVAsQ0FBbUJDLE9BQW5CLEVBQTRCQyxPQUE1QixFQUFxQztBQUNqQyxtQkFBTztBQUNILDJCQUFXRCxPQURSO0FBRUgsMkJBQVdDO0FBRlIsYUFBUDtBQUlIOztBQUVELGVBQU9DLGFBQVAsQ0FBcUJDLFVBQXJCLEVBQWlDL0UsV0FBakMsRUFBOENDLElBQTlDLEVBQW9EO0FBQ2hELG1CQUFPO0FBQ0gsMkJBQVcsZUFEUjtBQUVILDhCQUFjOEUsVUFGWDtBQUdILCtCQUFlL0UsV0FIWjtBQUlILHdCQUFRQztBQUpMLGFBQVA7QUFNSDs7QUFFRCxlQUFPaUUsYUFBUCxDQUFxQmMsR0FBckIsRUFBMEJoQixVQUExQixFQUFzQztBQUNsQyxnQkFBSUEsY0FBYzdCLFNBQWxCLEVBQTZCO0FBQ3pCNkMsb0JBQUloQixVQUFKLEdBQWlCQSxVQUFqQjtBQUNILGFBRkQsTUFHSztBQUNEZ0Isb0JBQUloQixVQUFKLEdBQWlCLEVBQWpCO0FBQ0g7QUFDSjs7QUFFRCxlQUFPRyxTQUFQLENBQWlCYSxHQUFqQixFQUFzQmYsTUFBdEIsRUFBOEI7QUFDMUIsZ0JBQUlBLFVBQVU5QixTQUFkLEVBQXlCO0FBQ3JCNkMsb0JBQUlmLE1BQUosR0FBYUEsTUFBYjtBQUNIO0FBQ0o7QUF6SDZCLEsiLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSWRPYmplY3Qge1xyXG4gICAgaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzcGVjdGl2ZSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICBkYXRhO1xyXG4gICAgdmlld3M7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpc1snaWQtZmllbGQnXSA9IGlkRmllbGQ7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBlcnNwZWN0aXZlRGF0YShjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZyk7XHJcbiAgICAgICAgdGhpcy52aWV3cyA9IFZpZXdDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFBlcnNwZWN0aXZlQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgUGVyc3BlY3RpdmUoaWQsIG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc3BlY3RpdmVEYXRhIHtcclxuICAgIGNhY2hlO1xyXG4gICAgYWdncmVnYXRlO1xyXG4gICAgZ3JvdXBpbmc7XHJcbiAgICBzb3J0aW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRlID0gYWdncmVnYXRlO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBpbmcgPSBncm91cGluZztcclxuICAgICAgICB0aGlzLnNvcnRpbmcgPSBzb3J0aW5nO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTG9va3VwIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIG1hcHBpbmc7XHJcbiAgICBwZXJzcGVjdGl2ZTtcclxuICAgIHZpZXc7XHJcbiAgICByZW1vdGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUsIHBlcnNwZWN0aXZlLCB2aWV3LCByZW1vdGUpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLm1hcHBpbmcgPSB7fTtcclxuICAgICAgICB0aGlzLnBlcnNwZWN0aXZlID0gcGVyc3BlY3RpdmU7XHJcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcclxuICAgICAgICB0aGlzLnJlbW90ZSA9IHJlbW90ZTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRNYXBwaW5nKHRhcmdldCwgc291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5tYXBwaW5nW3RhcmdldF0gPSBzb3VyY2U7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW4ge1xyXG4gICAgZmllbGQ7XHJcbiAgICB0aXRsZTtcclxuICAgIHdpZHRoO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGZpZWxkLCB0aXRsZSwgd2lkdGgpIHtcclxuICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlO1xyXG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtbkNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IENvbHVtbkNvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gQ29sdW1uQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoZmllbGQsIHRpdGxlLCB3aWR0aCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBDb2x1bW4oZmllbGQsIHRpdGxlLCB3aWR0aCk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXcgZXh0ZW5kcyBJZE9iamVjdCB7XHJcbiAgICBuYW1lO1xyXG4gICAgdHlwZTtcclxuICAgIGNvbHVtbnM7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUsIHR5cGUpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IENvbHVtbkNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBWaWV3Q29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBWaWV3Q29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQobmFtZSwgdHlwZSkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IFZpZXcoaWQsIG5hbWUsIHR5cGUpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMb29rdXBDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBMb29rdXBDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IExvb2t1cENvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKG5hbWUsIHBlcnNwZWN0aXZlLCB2aWV3LCByZW1vdGUpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHRoaXMubGVuZ3RoICsgMTtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgTG9va3VwKGlkLCBuYW1lLCBwZXJzcGVjdGl2ZSwgdmlldywgcmVtb3RlKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbiB7XHJcbiAgICB0eXBlO1xyXG4gICAgcnVsZXM7XHJcblxyXG4gICAgY29uc3RydWN0b3IodHlwZSkge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5ydWxlcyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFJ1bGUocnVsZSwgdmFsdWUpIHtcclxuICAgICAgICB0aGlzLnJ1bGVzW3J1bGVdID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUnVsZShydWxlKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMucnVsZXNbcnVsZV07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgVmFsaWRhdGlvbkNvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gVmFsaWRhdGlvbkNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKHR5cGUpIHtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgVmFsaWRhdGlvbih0eXBlKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmllbGQge1xyXG4gICAgbmFtZTtcclxuICAgIGxvb2t1cDtcclxuICAgIHByZXZpZXc7XHJcbiAgICB2YWxpZGF0aW9ucztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBsb29rdXAsIHByZXZpZXcpIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMubG9va3VwID0gbG9va3VwO1xyXG4gICAgICAgIHRoaXMucHJldmlldyA9IHByZXZpZXc7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9ucyA9IFZhbGlkYXRpb25Db2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWVsZENvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEZpZWxkQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBGaWVsZENvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKG5hbWUsIGxvb2t1cCwgcHJldmlldykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBGaWVsZChuYW1lLCBsb29rdXAsIHByZXZpZXcpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcblxyXG4gICAgYnlOYW1lKG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maW5kKGl0ZW0gPT4gaXRlbS5uYW1lID09IG5hbWUpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YXNldCBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICBmaWVsZHM7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmZpZWxkcyA9IEZpZWxkQ29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YXNldENvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGFzZXRDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IERhdGFzZXRDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChpZCwgbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGRzSWQgPSBpZCA9PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCArIDEgOiBpZDtcclxuICAgICAgICBjb25zdCBkc05hbWUgPSBuYW1lID09IHVuZGVmaW5lZCA/IGBkYXRhc2V0ICR7ZHNJZH1gIDogbmFtZTtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgRGF0YXNldChkc0lkLCBkc05hbWUpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICBlbGVtZW50cztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgbmFtZSkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudHMgPSBbXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgVGVtcGxhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IFRlbXBsYXRlQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoaWQpIHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZUlkID0gaWQgPT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBpZDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgVGVtcGxhdGUodGVtcGxhdGVJZCk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2UgZXh0ZW5kcyBJZE9iamVjdCB7XHJcbiAgICBpZDtcclxuICAgIHJlZmVyZW5jZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IFwiXCI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQcmV2aWV3IGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgcmVtb3RlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCByZW1vdGUsIGxvb2t1cEZpZWxkLCBkYXRhc2V0RmllbGQpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdGUgPSByZW1vdGU7XHJcbiAgICAgICAgdGhpc1tcImxvb2t1cC1maWVsZFwiXSA9IGxvb2t1cEZpZWxkO1xyXG4gICAgICAgIHRoaXNbXCJkYXRhc2V0LWZpZWxkXCJdID0gZGF0YXNldEZpZWxkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJldmlld0NvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFByZXZpZXdDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IFByZXZpZXdDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChyZW1vdGUsIGxvb2t1cEZpZWxkLCBkYXRhc2V0RmllbGQpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHRoaXMubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBQcmV2aWV3KGlkLCByZW1vdGUsIGxvb2t1cEZpZWxkLCBkYXRhc2V0RmllbGQpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZURhdGFTb3VyY2Uge1xyXG4gICAgaWQ7XHJcbiAgICByZXNvdXJjZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCkge1xyXG4gICAgICAgIHRoaXMuaWQgPSBpZDtcclxuICAgICAgICB0aGlzLnJlc291cmNlID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKCkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5yZXNvdXJjZS5sZW5ndGggKyAxO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBSZXNvdXJjZURhdGFTb3VyY2VJdGVtKGlkKTtcclxuICAgICAgICB0aGlzLnJlc291cmNlLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VEYXRhU291cmNlSXRlbSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIGlkO1xyXG4gICAgdGl0bGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IGBJdGVtICR7aWR9YDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRhU291cmNlQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBEYXRhU291cmNlQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVHlwZShEYXRhU291cmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRSZXNvdXJjZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRUeXBlKFJlc291cmNlRGF0YVNvdXJjZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVHlwZSh0eXBlKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgdHlwZShpZCk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYSB7XHJcbiAgICB0eXBlO1xyXG4gICAgcGVyc3BlY3RpdmVzO1xyXG4gICAgbG9va3VwcztcclxuICAgIHByZXZpZXdzO1xyXG4gICAgZGF0YXNldHM7XHJcbiAgICBkYXRhc291cmNlcztcclxuICAgIGJvZHk7XHJcbiAgICB0ZW1wbGF0ZXM7XHJcblxyXG4gICAgY29uc3RydWN0b3IodHlwZSkge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5wZXJzcGVjdGl2ZXMgPSBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLmxvb2t1cHMgPSBMb29rdXBDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhc2V0cyA9IERhdGFzZXRDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3cyA9IFByZXZpZXdDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhc291cmNlcyA9IERhdGFTb3VyY2VDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBUZW1wbGF0ZUNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLmJvZHkgPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhc2V0cy5hZGQoMCwgXCJtb2RlbFwiKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYUVsZW1lbnRGYWN0b3J5IHtcclxuICAgIHN0YXRpYyBncm91cCh0aXRsZSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcImdyb3VwXCIsXHJcbiAgICAgICAgICAgIFwidGl0bGVcIjogdGl0bGUsXHJcbiAgICAgICAgICAgIFwiZWxlbWVudHNcIjogW11cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNoZWNrYm94KHRpdGxlLCBmaWVsZCwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJjaGVja2JveFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlucHV0KHRpdGxlLCBmaWVsZCwgdHlwZSwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJpbnB1dFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJlc3VsdC5hdHRyaWJ1dGVzLnB1c2goe1xyXG4gICAgICAgICAgICBcInR5cGVcIjogdHlwZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWFkb25seSh0aXRsZSwgZmllbGQsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwicmVhZG9ubHlcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNlbGVjdCh0aXRsZSwgZmllbGQsIGRhdGFTb3VyY2VJZCwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJzZWxlY3RcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZCxcclxuICAgICAgICAgICAgXCJkYXRhc291cmNlXCI6IGRhdGFTb3VyY2VJZCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRBdHRyaWJ1dGVzKHJlc3VsdCwgYXR0cmlidXRlcyk7XHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkU3R5bGVzKHJlc3VsdCwgc3R5bGVzKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbWVtbyh0aXRsZSwgZmllbGQsIGF0dHJpYnV0ZXMsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwibWVtb1wiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHRlbXBsYXRlKHRlbXBsYXRlSWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJ0ZW1wbGF0ZVwiLFxyXG4gICAgICAgICAgICBcInRlbXBsYXRlXCI6IHRlbXBsYXRlSWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNhcmQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwiY2FyZFwiLFxyXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaHRtbEVsZW1lbnQoaHRtbFRhZywgY29udGVudCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBodG1sVGFnLFxyXG4gICAgICAgICAgICBcImNvbnRlbnRcIjogY29udGVudFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHZpc3VhbGl6YXRpb24oZGF0YXNvdXJjZSwgcGVyc3BlY3RpdmUsIHZpZXcpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJ2aXN1YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgIFwiZGF0YXNvdXJjZVwiOiBkYXRhc291cmNlLFxyXG4gICAgICAgICAgICBcInBlcnNwZWN0aXZlXCI6IHBlcnNwZWN0aXZlLFxyXG4gICAgICAgICAgICBcInZpZXdcIjogdmlld1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWRkQXR0cmlidXRlcyhvYmosIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBpZiAoYXR0cmlidXRlcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZFN0eWxlcyhvYmosIHN0eWxlcykge1xyXG4gICAgICAgIGlmIChzdHlsZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIG9iai5zdHlsZXMgPSBzdHlsZXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19

@@ -52,3 +52,2 @@ "use strict";

this.remote = remote;
this.preview = {};
}

@@ -59,7 +58,2 @@

}
addPreview(remote, idField) {
this.preview["remote"] = remote;
this.preview["id-field"] = idField;
}
};

@@ -154,6 +148,6 @@ let Column = exports.Column = class Column {

constructor(name, lookup, peek) {
constructor(name, lookup, preview) {
this.name = name;
this.lookup = lookup;
this.peek = peek;
this.preview = preview;
this.validations = ValidationCollection.createInstance();

@@ -169,4 +163,4 @@ }

add(name, lookup, peek) {
const itemToAdd = new Field(name, lookup, peek);
add(name, lookup, preview) {
const itemToAdd = new Field(name, lookup, preview);
this.push(itemToAdd);

@@ -232,2 +226,25 @@ return itemToAdd;

};
let Preview = exports.Preview = class Preview extends IdObject {
constructor(id, remote, lookupField, datasetField) {
super(id);
this.remote = remote;
this["lookup-field"] = lookupField;
this["dataset-field"] = datasetField;
}
};
let PreviewCollection = exports.PreviewCollection = class PreviewCollection extends Array {
static createInstance() {
const result = new PreviewCollection();
result.__proto__ = PreviewCollection.prototype;
return result;
}
add(remote, lookupField, datasetField) {
const id = this.length;
const itemToAdd = new Preview(id, remote, lookupField, datasetField);
this.push(itemToAdd);
return itemToAdd;
}
};
let ResourceDataSource = exports.ResourceDataSource = class ResourceDataSource {

@@ -283,2 +300,3 @@

this.datasets = DatasetCollection.createInstance();
this.previews = PreviewCollection.createInstance();
this.datasources = DataSourceCollection.createInstance();

@@ -413,2 +431,2 @@ this.templates = TemplateCollection.createInstance();

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVtYS5qcyJdLCJuYW1lcyI6WyJJZE9iamVjdCIsImNvbnN0cnVjdG9yIiwiaWQiLCJQZXJzcGVjdGl2ZSIsIm5hbWUiLCJpZEZpZWxkIiwiY2FjaGUiLCJhZ2dyZWdhdGUiLCJncm91cGluZyIsInNvcnRpbmciLCJkYXRhIiwiUGVyc3BlY3RpdmVEYXRhIiwidmlld3MiLCJWaWV3Q29sbGVjdGlvbiIsImNyZWF0ZUluc3RhbmNlIiwiUGVyc3BlY3RpdmVDb2xsZWN0aW9uIiwiQXJyYXkiLCJyZXN1bHQiLCJfX3Byb3RvX18iLCJwcm90b3R5cGUiLCJhZGQiLCJsZW5ndGgiLCJpdGVtVG9BZGQiLCJwdXNoIiwiTG9va3VwIiwicGVyc3BlY3RpdmUiLCJ2aWV3IiwicmVtb3RlIiwibWFwcGluZyIsInByZXZpZXciLCJhZGRNYXBwaW5nIiwidGFyZ2V0Iiwic291cmNlIiwiYWRkUHJldmlldyIsIkNvbHVtbiIsImZpZWxkIiwidGl0bGUiLCJ3aWR0aCIsIkNvbHVtbkNvbGxlY3Rpb24iLCJWaWV3IiwidHlwZSIsImNvbHVtbnMiLCJMb29rdXBDb2xsZWN0aW9uIiwiVmFsaWRhdGlvbiIsInJ1bGVzIiwiYWRkUnVsZSIsInJ1bGUiLCJ2YWx1ZSIsInJlbW92ZVJ1bGUiLCJWYWxpZGF0aW9uQ29sbGVjdGlvbiIsIkZpZWxkIiwibG9va3VwIiwicGVlayIsInZhbGlkYXRpb25zIiwiRmllbGRDb2xsZWN0aW9uIiwiYnlOYW1lIiwiZmluZCIsIml0ZW0iLCJEYXRhc2V0IiwiZmllbGRzIiwiRGF0YXNldENvbGxlY3Rpb24iLCJkc0lkIiwidW5kZWZpbmVkIiwiZHNOYW1lIiwiVGVtcGxhdGUiLCJlbGVtZW50cyIsIlRlbXBsYXRlQ29sbGVjdGlvbiIsInRlbXBsYXRlSWQiLCJEYXRhU291cmNlIiwicmVmZXJlbmNlIiwiUmVzb3VyY2VEYXRhU291cmNlIiwicmVzb3VyY2UiLCJSZXNvdXJjZURhdGFTb3VyY2VJdGVtIiwiRGF0YVNvdXJjZUNvbGxlY3Rpb24iLCJhZGRUeXBlIiwiYWRkUmVzb3VyY2UiLCJTY2hlbWEiLCJwZXJzcGVjdGl2ZXMiLCJsb29rdXBzIiwiZGF0YXNldHMiLCJkYXRhc291cmNlcyIsInRlbXBsYXRlcyIsImJvZHkiLCJTY2hlbWFFbGVtZW50RmFjdG9yeSIsImdyb3VwIiwiY2hlY2tib3giLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiYWRkQXR0cmlidXRlcyIsImFkZFN0eWxlcyIsImlucHV0IiwicmVhZG9ubHkiLCJzZWxlY3QiLCJkYXRhU291cmNlSWQiLCJtZW1vIiwidGVtcGxhdGUiLCJjYXJkIiwiaHRtbEVsZW1lbnQiLCJodG1sVGFnIiwiY29udGVudCIsInZpc3VhbGl6YXRpb24iLCJkYXRhc291cmNlIiwib2JqIl0sIm1hcHBpbmdzIjoiOzs7SUFBTUEsUSxHQUFOLE1BQU1BLFFBQU4sQ0FBZTs7QUFHWEMsZ0JBQVlDLEVBQVosRUFBZ0I7QUFDWixhQUFLQSxFQUFMLEdBQVVBLEVBQVY7QUFDSDtBQUxVLEM7SUFRRkMsVyxXQUFBQSxXLEdBQU4sTUFBTUEsV0FBTixTQUEwQkgsUUFBMUIsQ0FBbUM7O0FBS3RDQyxnQkFBWUMsRUFBWixFQUFnQkUsSUFBaEIsRUFBc0JDLE9BQXRCLEVBQStCQyxLQUEvQixFQUFzQ0MsU0FBdEMsRUFBaURDLFFBQWpELEVBQTJEQyxPQUEzRCxFQUFvRTtBQUNoRSxjQUFNUCxFQUFOO0FBQ0EsYUFBS0UsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsYUFBSyxVQUFMLElBQW1CQyxPQUFuQjtBQUNBLGFBQUtLLElBQUwsR0FBWSxJQUFJQyxlQUFKLENBQW9CTCxLQUFwQixFQUEyQkMsU0FBM0IsRUFBc0NDLFFBQXRDLEVBQWdEQyxPQUFoRCxDQUFaO0FBQ0EsYUFBS0csS0FBTCxHQUFhQyxlQUFlQyxjQUFmLEVBQWI7QUFDSDtBQVhxQyxDO0lBYzdCQyxxQixXQUFBQSxxQixHQUFOLE1BQU1BLHFCQUFOLFNBQW9DQyxLQUFwQyxDQUEwQztBQUM3QyxXQUFPRixjQUFQLEdBQXdCO0FBQ3BCLGNBQU1HLFNB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XG4gICAgY29uc3RydWN0b3IoaWQpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzcGVjdGl2ZSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICBkYXRhO1xyXG4gICAgdmlld3M7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpc1snaWQtZmllbGQnXSA9IGlkRmllbGQ7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBlcnNwZWN0aXZlRGF0YShjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZyk7XHJcbiAgICAgICAgdGhpcy52aWV3cyA9IFZpZXdDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFBlcnNwZWN0aXZlQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgUGVyc3BlY3RpdmUoaWQsIG5hbWUsIGlkRmllbGQsIGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc3BlY3RpdmVEYXRhIHtcclxuICAgIGNhY2hlO1xyXG4gICAgYWdncmVnYXRlO1xyXG4gICAgZ3JvdXBpbmc7XHJcbiAgICBzb3J0aW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGNhY2hlLCBhZ2dyZWdhdGUsIGdyb3VwaW5nLCBzb3J0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRlID0gYWdncmVnYXRlO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBpbmcgPSBncm91cGluZztcclxuICAgICAgICB0aGlzLnNvcnRpbmcgPSBzb3J0aW5nO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTG9va3VwIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIG1hcHBpbmc7XHJcbiAgICBwZXJzcGVjdGl2ZTtcclxuICAgIHZpZXc7XHJcbiAgICByZW1vdGU7XHJcbiAgICBwcmV2aWV3O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lLCBwZXJzcGVjdGl2ZSwgdmlldywgcmVtb3RlKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5tYXBwaW5nID0ge307XHJcbiAgICAgICAgdGhpcy5wZXJzcGVjdGl2ZSA9IHBlcnNwZWN0aXZlO1xyXG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XHJcbiAgICAgICAgdGhpcy5yZW1vdGUgPSByZW1vdGU7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTWFwcGluZyh0YXJnZXQsIHNvdXJjZSkge1xyXG4gICAgICAgIHRoaXMubWFwcGluZ1t0YXJnZXRdID0gc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFByZXZpZXcocmVtb3RlLCBpZEZpZWxkKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3W1wicmVtb3RlXCJdID0gcmVtb3RlO1xyXG4gICAgICAgIHRoaXMucHJldmlld1tcImlkLWZpZWxkXCJdID0gaWRGaWVsZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtbiB7XHJcbiAgICBmaWVsZDtcclxuICAgIHRpdGxlO1xyXG4gICAgd2lkdGg7XHJcblxyXG4gICAgY29uc3RydWN0b3IoZmllbGQsIHRpdGxlLCB3aWR0aCkge1xyXG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDtcclxuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgQ29sdW1uQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBDb2x1bW5Db2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChmaWVsZCwgdGl0bGUsIHdpZHRoKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IENvbHVtbihmaWVsZCwgdGl0bGUsIHdpZHRoKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmlldyBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICB0eXBlO1xyXG4gICAgY29sdW1ucztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgbmFtZSwgdHlwZSkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gQ29sdW1uQ29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmlld0NvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFZpZXdDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IFZpZXdDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChuYW1lLCB0eXBlKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgVmlldyhpZCwgbmFtZSwgdHlwZSk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExvb2t1cENvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IExvb2t1cENvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gTG9va3VwQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQobmFtZSwgcGVyc3BlY3RpdmUsIHZpZXcsIHJlbW90ZSkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5sZW5ndGggKyAxO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBMb29rdXAoaWQsIG5hbWUsIHBlcnNwZWN0aXZlLCB2aWV3LCByZW1vdGUpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uIHtcclxuICAgIHR5cGU7XHJcbiAgICBydWxlcztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih0eXBlKSB7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgICAgICB0aGlzLnJ1bGVzID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUnVsZShydWxlLCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMucnVsZXNbcnVsZV0gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVSdWxlKHJ1bGUpIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5ydWxlc1tydWxlXTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Db2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBWYWxpZGF0aW9uQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBWYWxpZGF0aW9uQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQodHlwZSkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBWYWxpZGF0aW9uKHR5cGUpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWVsZCB7XHJcbiAgICBuYW1lO1xyXG4gICAgbG9va3VwO1xyXG4gICAgcGVlaztcclxuICAgIHZhbGlkYXRpb25zO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG5hbWUsIGxvb2t1cCwgcGVlaykge1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5sb29rdXAgPSBsb29rdXA7XHJcbiAgICAgICAgdGhpcy5wZWVrID0gcGVlaztcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25zID0gVmFsaWRhdGlvbkNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmllbGRDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IEZpZWxkQ29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQobmFtZSwgbG9va3VwLCBwZWVrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IEZpZWxkKG5hbWUsIGxvb2t1cCwgcGVlayk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxuXHJcbiAgICBieU5hbWUobmFtZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT0gbmFtZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhc2V0IGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIGZpZWxkcztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgbmFtZSkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuZmllbGRzID0gRmllbGRDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhc2V0Q29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0YXNldENvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gRGF0YXNldENvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKGlkLCBuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZHNJZCA9IGlkID09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoICsgMSA6IGlkO1xyXG4gICAgICAgIGNvbnN0IGRzTmFtZSA9IG5hbWUgPT0gdW5kZWZpbmVkID8gYGRhdGFzZXQgJHtkc0lkfWAgOiBuYW1lO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBEYXRhc2V0KGRzSWQsIGRzTmFtZSk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIGVsZW1lbnRzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IFtdO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBUZW1wbGF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gVGVtcGxhdGVDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChpZCkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlSWQgPSBpZCA9PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGlkO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBUZW1wbGF0ZSh0ZW1wbGF0ZUlkKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZSBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIGlkO1xyXG4gICAgcmVmZXJlbmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMucmVmZXJlbmNlID0gXCJcIjtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlRGF0YVNvdXJjZSB7XHJcbiAgICBpZDtcclxuICAgIHJlc291cmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnJlc291cmNlLmxlbmd0aCArIDE7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IFJlc291cmNlRGF0YVNvdXJjZUl0ZW0oaWQpO1xyXG4gICAgICAgIHRoaXMucmVzb3VyY2UucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZURhdGFTb3VyY2VJdGVtIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgaWQ7XHJcbiAgICB0aXRsZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCkge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLnRpdGxlID0gYEl0ZW0gJHtpZH1gO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGFTb3VyY2VDb2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IERhdGFTb3VyY2VDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRUeXBlKERhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFJlc291cmNlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFR5cGUoUmVzb3VyY2VEYXRhU291cmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRUeXBlKHR5cGUpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHRoaXMubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyB0eXBlKGlkKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZW1hIHtcclxuICAgIHR5cGU7XHJcbiAgICBwZXJzcGVjdGl2ZXM7XHJcbiAgICBsb29rdXBzO1xyXG4gICAgZGF0YXNldHM7XHJcbiAgICBkYXRhc291cmNlcztcclxuICAgIGJvZHk7XHJcbiAgICB0ZW1wbGF0ZXM7XHJcblxyXG4gICAgY29uc3RydWN0b3IodHlwZSkge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5wZXJzcGVjdGl2ZXMgPSBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLmxvb2t1cHMgPSBMb29rdXBDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhc2V0cyA9IERhdGFzZXRDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5kYXRhc291cmNlcyA9IERhdGFTb3VyY2VDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBUZW1wbGF0ZUNvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLmJvZHkgPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhc2V0cy5hZGQoMCwgXCJtb2RlbFwiKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYUVsZW1lbnRGYWN0b3J5IHtcclxuICAgIHN0YXRpYyBncm91cCh0aXRsZSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcImdyb3VwXCIsXHJcbiAgICAgICAgICAgIFwidGl0bGVcIjogdGl0bGUsXHJcbiAgICAgICAgICAgIFwiZWxlbWVudHNcIjogW11cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNoZWNrYm94KHRpdGxlLCBmaWVsZCwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJjaGVja2JveFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlucHV0KHRpdGxlLCBmaWVsZCwgdHlwZSwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJpbnB1dFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJlc3VsdC5hdHRyaWJ1dGVzLnB1c2goe1xyXG4gICAgICAgICAgICBcInR5cGVcIjogdHlwZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWFkb25seSh0aXRsZSwgZmllbGQsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwicmVhZG9ubHlcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNlbGVjdCh0aXRsZSwgZmllbGQsIGRhdGFTb3VyY2VJZCwgYXR0cmlidXRlcywgc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJzZWxlY3RcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZCxcclxuICAgICAgICAgICAgXCJkYXRhc291cmNlXCI6IGRhdGFTb3VyY2VJZCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRBdHRyaWJ1dGVzKHJlc3VsdCwgYXR0cmlidXRlcyk7XHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkU3R5bGVzKHJlc3VsdCwgc3R5bGVzKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbWVtbyh0aXRsZSwgZmllbGQsIGF0dHJpYnV0ZXMsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwibWVtb1wiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImZpZWxkXCI6IGZpZWxkXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHRlbXBsYXRlKHRlbXBsYXRlSWQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJ0ZW1wbGF0ZVwiLFxyXG4gICAgICAgICAgICBcInRlbXBsYXRlXCI6IHRlbXBsYXRlSWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNhcmQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwiY2FyZFwiLFxyXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaHRtbEVsZW1lbnQoaHRtbFRhZywgY29udGVudCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBodG1sVGFnLFxyXG4gICAgICAgICAgICBcImNvbnRlbnRcIjogY29udGVudFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHZpc3VhbGl6YXRpb24oZGF0YXNvdXJjZSwgcGVyc3BlY3RpdmUsIHZpZXcpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJ2aXN1YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgIFwiZGF0YXNvdXJjZVwiOiBkYXRhc291cmNlLFxyXG4gICAgICAgICAgICBcInBlcnNwZWN0aXZlXCI6IHBlcnNwZWN0aXZlLFxyXG4gICAgICAgICAgICBcInZpZXdcIjogdmlld1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWRkQXR0cmlidXRlcyhvYmosIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBpZiAoYXR0cmlidXRlcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgb2JqLmF0dHJpYnV0ZXMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZFN0eWxlcyhvYmosIHN0eWxlcykge1xyXG4gICAgICAgIGlmIChzdHlsZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIG9iai5zdHlsZXMgPSBzdHlsZXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVtYS5qcyJdLCJuYW1lcyI6WyJJZE9iamVjdCIsImNvbnN0cnVjdG9yIiwiaWQiLCJQZXJzcGVjdGl2ZSIsIm5hbWUiLCJpZEZpZWxkIiwiY2FjaGUiLCJhZ2dyZWdhdGUiLCJncm91cGluZyIsInNvcnRpbmciLCJkYXRhIiwiUGVyc3BlY3RpdmVEYXRhIiwidmlld3MiLCJWaWV3Q29sbGVjdGlvbiIsImNyZWF0ZUluc3RhbmNlIiwiUGVyc3BlY3RpdmVDb2xsZWN0aW9uIiwiQXJyYXkiLCJyZXN1bHQiLCJfX3Byb3RvX18iLCJwcm90b3R5cGUiLCJhZGQiLCJsZW5ndGgiLCJpdGVtVG9BZGQiLCJwdXNoIiwiTG9va3VwIiwicGVyc3BlY3RpdmUiLCJ2aWV3IiwicmVtb3RlIiwibWFwcGluZyIsImFkZE1hcHBpbmciLCJ0YXJnZXQiLCJzb3VyY2UiLCJDb2x1bW4iLCJmaWVsZCIsInRpdGxlIiwid2lkdGgiLCJDb2x1bW5Db2xsZWN0aW9uIiwiVmlldyIsInR5cGUiLCJjb2x1bW5zIiwiTG9va3VwQ29sbGVjdGlvbiIsIlZhbGlkYXRpb24iLCJydWxlcyIsImFkZFJ1bGUiLCJydWxlIiwidmFsdWUiLCJyZW1vdmVSdWxlIiwiVmFsaWRhdGlvbkNvbGxlY3Rpb24iLCJGaWVsZCIsImxvb2t1cCIsInByZXZpZXciLCJ2YWxpZGF0aW9ucyIsIkZpZWxkQ29sbGVjdGlvbiIsImJ5TmFtZSIsImZpbmQiLCJpdGVtIiwiRGF0YXNldCIsImZpZWxkcyIsIkRhdGFzZXRDb2xsZWN0aW9uIiwiZHNJZCIsInVuZGVmaW5lZCIsImRzTmFtZSIsIlRlbXBsYXRlIiwiZWxlbWVudHMiLCJUZW1wbGF0ZUNvbGxlY3Rpb24iLCJ0ZW1wbGF0ZUlkIiwiRGF0YVNvdXJjZSIsInJlZmVyZW5jZSIsIlByZXZpZXciLCJsb29rdXBGaWVsZCIsImRhdGFzZXRGaWVsZCIsIlByZXZpZXdDb2xsZWN0aW9uIiwiUmVzb3VyY2VEYXRhU291cmNlIiwicmVzb3VyY2UiLCJSZXNvdXJjZURhdGFTb3VyY2VJdGVtIiwiRGF0YVNvdXJjZUNvbGxlY3Rpb24iLCJhZGRUeXBlIiwiYWRkUmVzb3VyY2UiLCJTY2hlbWEiLCJwZXJzcGVjdGl2ZXMiLCJsb29rdXBzIiwiZGF0YXNldHMiLCJwcmV2aWV3cyIsImRhdGFzb3VyY2VzIiwidGVtcGxhdGVzIiwiYm9keSIsIlNjaGVtYUVsZW1lbnRGYWN0b3J5IiwiZ3JvdXAiLCJjaGVja2JveCIsImF0dHJpYnV0ZXMiLCJzdHlsZXMiLCJhZGRBdHRyaWJ1dGVzIiwiYWRkU3R5bGVzIiwiaW5wdXQiLCJyZWFkb25seSIsInNlbGVjdCIsImRhdGFTb3VyY2VJZCIsIm1lbW8iLCJ0ZW1wbGF0ZSIsImNhcmQiLCJodG1sRWxlbWVudCIsImh0bWxUYWciLCJjb250ZW50IiwidmlzdWFsaXphdGlvbiIsImRhdGFzb3VyY2UiLCJvYmoiXSwibWFwcGluZ3MiOiI7OztJQUFNQSxRLEdBQU4sTUFBTUEsUUFBTixDQUFlOztBQUdYQyxnQkFBWUMsRUFBWixFQUFnQjtBQUNaLGFBQUtBLEVBQUwsR0FBVUEsRUFBVjtBQUNIO0FBTFUsQztJQVFGQyxXLFdBQUFBLFcsR0FBTixNQUFNQSxXQUFOLFNBQTBCSCxRQUExQixDQUFtQzs7QUFLdENDLGdCQUFZQyxFQUFaLEVBQWdCRSxJQUFoQixFQUFzQkMsT0FBdEIsRUFBK0JDLEtBQS9CLEVBQXNDQyxTQUF0QyxFQUFpREMsUUFBakQsRUFBMkRDLE9BQTNELEVBQW9FO0FBQ2hFLGNBQU1QLEVBQU47QUFDQSxhQUFLRSxJQUFMLEdBQVlBLElBQVo7QUFDQSxhQUFLLFVBQUwsSUFBbUJDLE9BQW5CO0FBQ0EsYUFBS0ssSUFBTCxHQUFZLElBQUlDLGVBQUosQ0FBb0JMLEtBQXBCLEVBQTJCQyxTQUEzQixFQUFzQ0MsUUFBdEMsRUFBZ0RDLE9BQWhELENBQVo7QUFDQSxhQUFLRyxLQUFMLEdBQWFDLGVBQWVDLGNBQWYsRUFBYjtBQUNIO0FBWHFDLEM7SUFjN0JDLHFCLFdBQUFBLHFCLEdBQU4sTUFBTUEscUJBQU4sU0FBb0ND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LGVBQU87QUFDSCx1QkFBV0QsT0FEUjtBQUVILHVCQUFXQztBQUZSLFNBQVA7QUFJSDs7QUFFRCxXQUFPQyxhQUFQLENBQXFCQyxVQUFyQixFQUFpQy9FLFdBQWpDLEVBQThDQyxJQUE5QyxFQUFvRDtBQUNoRCxlQUFPO0FBQ0gsdUJBQVcsZUFEUjtBQUVILDBCQUFjOEUsVUFGWDtBQUdILDJCQUFlL0UsV0FIWjtBQUlILG9CQUFRQztBQUpMLFNBQVA7QUFNSDs7QUFFRCxXQUFPaUUsYUFBUCxDQUFxQmMsR0FBckIsRUFBMEJoQixVQUExQixFQUFzQztBQUNsQyxZQUFJQSxjQUFjN0IsU0FBbEIsRUFBNkI7QUFDekI2QyxnQkFBSWhCLFVBQUosR0FBaUJBLFVBQWpCO0FBQ0gsU0FGRCxNQUdLO0FBQ0RnQixnQkFBSWhCLFVBQUosR0FBaUIsRUFBakI7QUFDSDtBQUNKOztBQUVELFdBQU9HLFNBQVAsQ0FBaUJhLEdBQWpCLEVBQXNCZixNQUF0QixFQUE4QjtBQUMxQixZQUFJQSxVQUFVOUIsU0FBZCxFQUF5QjtBQUNyQjZDLGdCQUFJZixNQUFKLEdBQWFBLE1BQWI7QUFDSDtBQUNKO0FBekg2QixDIiwiZmlsZSI6InNjaGVtYS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIElkT2JqZWN0IHtcclxuICAgIGlkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc3BlY3RpdmUgZXh0ZW5kcyBJZE9iamVjdCB7XHJcbiAgICBuYW1lO1xyXG4gICAgZGF0YTtcclxuICAgIHZpZXdzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lLCBpZEZpZWxkLCBjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZykge1xyXG4gICAgICAgIHN1cGVyKGlkKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXNbJ2lkLWZpZWxkJ10gPSBpZEZpZWxkO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBQZXJzcGVjdGl2ZURhdGEoY2FjaGUsIGFnZ3JlZ2F0ZSwgZ3JvdXBpbmcsIHNvcnRpbmcpO1xyXG4gICAgICAgIHRoaXMudmlld3MgPSBWaWV3Q29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc3BlY3RpdmVDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBQZXJzcGVjdGl2ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gUGVyc3BlY3RpdmVDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChuYW1lLCBpZEZpZWxkLCBjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZykge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IFBlcnNwZWN0aXZlKGlkLCBuYW1lLCBpZEZpZWxkLCBjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZyk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBlcnNwZWN0aXZlRGF0YSB7XHJcbiAgICBjYWNoZTtcclxuICAgIGFnZ3JlZ2F0ZTtcclxuICAgIGdyb3VwaW5nO1xyXG4gICAgc29ydGluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSwgYWdncmVnYXRlLCBncm91cGluZywgc29ydGluZykge1xyXG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZSA9IGFnZ3JlZ2F0ZTtcclxuICAgICAgICB0aGlzLmdyb3VwaW5nID0gZ3JvdXBpbmc7XHJcbiAgICAgICAgdGhpcy5zb3J0aW5nID0gc29ydGluZztcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExvb2t1cCBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIG5hbWU7XHJcbiAgICBtYXBwaW5nO1xyXG4gICAgcGVyc3BlY3RpdmU7XHJcbiAgICB2aWV3O1xyXG4gICAgcmVtb3RlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lLCBwZXJzcGVjdGl2ZSwgdmlldywgcmVtb3RlKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5tYXBwaW5nID0ge307XHJcbiAgICAgICAgdGhpcy5wZXJzcGVjdGl2ZSA9IHBlcnNwZWN0aXZlO1xyXG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XHJcbiAgICAgICAgdGhpcy5yZW1vdGUgPSByZW1vdGU7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTWFwcGluZyh0YXJnZXQsIHNvdXJjZSkge1xyXG4gICAgICAgIHRoaXMubWFwcGluZ1t0YXJnZXRdID0gc291cmNlO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uIHtcclxuICAgIGZpZWxkO1xyXG4gICAgdGl0bGU7XHJcbiAgICB3aWR0aDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihmaWVsZCwgdGl0bGUsIHdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSB0aXRsZTtcclxuICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5Db2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBDb2x1bW5Db2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IENvbHVtbkNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKGZpZWxkLCB0aXRsZSwgd2lkdGgpIHtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgQ29sdW1uKGZpZWxkLCB0aXRsZSwgd2lkdGgpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBWaWV3IGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgbmFtZTtcclxuICAgIHR5cGU7XHJcbiAgICBjb2x1bW5zO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lLCB0eXBlKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgICAgICB0aGlzLmNvbHVtbnMgPSBDb2x1bW5Db2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBWaWV3Q29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgVmlld0NvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gVmlld0NvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKG5hbWUsIHR5cGUpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHRoaXMubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Ub0FkZCA9IG5ldyBWaWV3KGlkLCBuYW1lLCB0eXBlKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTG9va3VwQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTG9va3VwQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBMb29rdXBDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChuYW1lLCBwZXJzcGVjdGl2ZSwgdmlldywgcmVtb3RlKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aCArIDE7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IExvb2t1cChpZCwgbmFtZSwgcGVyc3BlY3RpdmUsIHZpZXcsIHJlbW90ZSk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb24ge1xyXG4gICAgdHlwZTtcclxuICAgIHJ1bGVzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHR5cGUpIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgICAgIHRoaXMucnVsZXMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRSdWxlKHJ1bGUsIHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5ydWxlc1tydWxlXSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVJ1bGUocnVsZSkge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnJ1bGVzW3J1bGVdO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFZhbGlkYXRpb25Db2xsZWN0aW9uKCk7XHJcbiAgICAgICAgcmVzdWx0Ll9fcHJvdG9fXyA9IFZhbGlkYXRpb25Db2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCh0eXBlKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IFZhbGlkYXRpb24odHlwZSk7XHJcbiAgICAgICAgdGhpcy5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkIHtcclxuICAgIG5hbWU7XHJcbiAgICBsb29rdXA7XHJcbiAgICBwcmV2aWV3O1xyXG4gICAgdmFsaWRhdGlvbnM7XHJcblxyXG4gICAgY29uc3RydWN0b3IobmFtZSwgbG9va3VwLCBwcmV2aWV3KSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmxvb2t1cCA9IGxvb2t1cDtcclxuICAgICAgICB0aGlzLnByZXZpZXcgPSBwcmV2aWV3O1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbnMgPSBWYWxpZGF0aW9uQ29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmllbGRDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGaWVsZENvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gRmllbGRDb2xsZWN0aW9uLnByb3RvdHlwZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChuYW1lLCBsb29rdXAsIHByZXZpZXcpIHtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgRmllbGQobmFtZSwgbG9va3VwLCBwcmV2aWV3KTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG5cclxuICAgIGJ5TmFtZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZChpdGVtID0+IGl0ZW0ubmFtZSA9PSBuYW1lKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFzZXQgZXh0ZW5kcyBJZE9iamVjdCB7XHJcbiAgICBuYW1lO1xyXG4gICAgZmllbGRzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkLCBuYW1lKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5maWVsZHMgPSBGaWVsZENvbGxlY3Rpb24uY3JlYXRlSW5zdGFuY2UoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFzZXRDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRhc2V0Q29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBEYXRhc2V0Q29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoaWQsIG5hbWUpIHtcclxuICAgICAgICBjb25zdCBkc0lkID0gaWQgPT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggKyAxIDogaWQ7XHJcbiAgICAgICAgY29uc3QgZHNOYW1lID0gbmFtZSA9PSB1bmRlZmluZWQgPyBgZGF0YXNldCAke2RzSWR9YCA6IG5hbWU7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IERhdGFzZXQoZHNJZCwgZHNOYW1lKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBJZE9iamVjdCB7XHJcbiAgICBuYW1lO1xyXG4gICAgZWxlbWVudHM7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQsIG5hbWUpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmVsZW1lbnRzID0gW107XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUNvbGxlY3Rpb24gZXh0ZW5kcyBBcnJheSB7XHJcbiAgICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFRlbXBsYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBUZW1wbGF0ZUNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKGlkKSB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGVJZCA9IGlkID09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogaWQ7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IFRlbXBsYXRlKHRlbXBsYXRlSWQpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlIGV4dGVuZHMgSWRPYmplY3Qge1xyXG4gICAgaWQ7XHJcbiAgICByZWZlcmVuY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQpIHtcclxuICAgICAgICBzdXBlcihpZCk7XHJcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJldmlldyBleHRlbmRzIElkT2JqZWN0IHtcclxuICAgIHJlbW90ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgcmVtb3RlLCBsb29rdXBGaWVsZCwgZGF0YXNldEZpZWxkKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMucmVtb3RlID0gcmVtb3RlO1xyXG4gICAgICAgIHRoaXNbXCJsb29rdXAtZmllbGRcIl0gPSBsb29rdXBGaWVsZDtcclxuICAgICAgICB0aGlzW1wiZGF0YXNldC1maWVsZFwiXSA9IGRhdGFzZXRGaWVsZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFByZXZpZXdDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXkge1xyXG4gICAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBQcmV2aWV3Q29sbGVjdGlvbigpO1xyXG4gICAgICAgIHJlc3VsdC5fX3Byb3RvX18gPSBQcmV2aWV3Q29sbGVjdGlvbi5wcm90b3R5cGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhZGQocmVtb3RlLCBsb29rdXBGaWVsZCwgZGF0YXNldEZpZWxkKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgUHJldmlldyhpZCwgcmVtb3RlLCBsb29rdXBGaWVsZCwgZGF0YXNldEZpZWxkKTtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbVRvQWRkKTtcclxuICAgICAgICByZXR1cm4gaXRlbVRvQWRkO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VEYXRhU291cmNlIHtcclxuICAgIGlkO1xyXG4gICAgcmVzb3VyY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQpIHtcclxuICAgICAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICAgICAgdGhpcy5yZXNvdXJjZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCgpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHRoaXMucmVzb3VyY2UubGVuZ3RoICsgMTtcclxuICAgICAgICBjb25zdCBpdGVtVG9BZGQgPSBuZXcgUmVzb3VyY2VEYXRhU291cmNlSXRlbShpZCk7XHJcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5wdXNoKGl0ZW1Ub0FkZCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0FkZDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlRGF0YVNvdXJjZUl0ZW0gZXh0ZW5kcyBJZE9iamVjdCB7XHJcbiAgICBpZDtcclxuICAgIHRpdGxlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGlkKSB7XHJcbiAgICAgICAgc3VwZXIoaWQpO1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSBgSXRlbSAke2lkfWA7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHtcclxuICAgIHN0YXRpYyBjcmVhdGVJbnN0YW5jZSgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0YVNvdXJjZUNvbGxlY3Rpb24oKTtcclxuICAgICAgICByZXN1bHQuX19wcm90b19fID0gRGF0YVNvdXJjZUNvbGxlY3Rpb24ucHJvdG90eXBlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFR5cGUoRGF0YVNvdXJjZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUmVzb3VyY2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVHlwZShSZXNvdXJjZURhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFR5cGUodHlwZSkge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gbmV3IHR5cGUoaWQpO1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtVG9BZGQpO1xyXG4gICAgICAgIHJldHVybiBpdGVtVG9BZGQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTY2hlbWEge1xyXG4gICAgdHlwZTtcclxuICAgIHBlcnNwZWN0aXZlcztcclxuICAgIGxvb2t1cHM7XHJcbiAgICBwcmV2aWV3cztcclxuICAgIGRhdGFzZXRzO1xyXG4gICAgZGF0YXNvdXJjZXM7XHJcbiAgICBib2R5O1xyXG4gICAgdGVtcGxhdGVzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHR5cGUpIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgICAgIHRoaXMucGVyc3BlY3RpdmVzID0gUGVyc3BlY3RpdmVDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5sb29rdXBzID0gTG9va3VwQ29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgICAgIHRoaXMuZGF0YXNldHMgPSBEYXRhc2V0Q29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgICAgIHRoaXMucHJldmlld3MgPSBQcmV2aWV3Q29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZXMgPSBEYXRhU291cmNlQ29sbGVjdGlvbi5jcmVhdGVJbnN0YW5jZSgpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0gVGVtcGxhdGVDb2xsZWN0aW9uLmNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy5ib2R5ID0ge307XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YXNldHMuYWRkKDAsIFwibW9kZWxcIik7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTY2hlbWFFbGVtZW50RmFjdG9yeSB7XHJcbiAgICBzdGF0aWMgZ3JvdXAodGl0bGUpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogXCJncm91cFwiLFxyXG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxyXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaGVja2JveCh0aXRsZSwgZmllbGQsIGF0dHJpYnV0ZXMsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwiY2hlY2tib3hcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZEF0dHJpYnV0ZXMocmVzdWx0LCBhdHRyaWJ1dGVzKTtcclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRTdHlsZXMocmVzdWx0LCBzdHlsZXMpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpbnB1dCh0aXRsZSwgZmllbGQsIHR5cGUsIGF0dHJpYnV0ZXMsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwiaW5wdXRcIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZEF0dHJpYnV0ZXMocmVzdWx0LCBhdHRyaWJ1dGVzKTtcclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRTdHlsZXMocmVzdWx0LCBzdHlsZXMpO1xyXG5cclxuICAgICAgICByZXN1bHQuYXR0cmlidXRlcy5wdXNoKHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IHR5cGVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkodGl0bGUsIGZpZWxkLCBzdHlsZXMpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcInJlYWRvbmx5XCIsXHJcbiAgICAgICAgICAgIFwidGl0bGVcIjogdGl0bGUsXHJcbiAgICAgICAgICAgIFwiZmllbGRcIjogZmllbGRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRTdHlsZXMocmVzdWx0LCBzdHlsZXMpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzZWxlY3QodGl0bGUsIGZpZWxkLCBkYXRhU291cmNlSWQsIGF0dHJpYnV0ZXMsIHN0eWxlcykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwic2VsZWN0XCIsXHJcbiAgICAgICAgICAgIFwidGl0bGVcIjogdGl0bGUsXHJcbiAgICAgICAgICAgIFwiZmllbGRcIjogZmllbGQsXHJcbiAgICAgICAgICAgIFwiZGF0YXNvdXJjZVwiOiBkYXRhU291cmNlSWQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgU2NoZW1hRWxlbWVudEZhY3RvcnkuYWRkQXR0cmlidXRlcyhyZXN1bHQsIGF0dHJpYnV0ZXMpO1xyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZFN0eWxlcyhyZXN1bHQsIHN0eWxlcyk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1lbW8odGl0bGUsIGZpZWxkLCBhdHRyaWJ1dGVzLCBzdHlsZXMpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcIm1lbW9cIixcclxuICAgICAgICAgICAgXCJ0aXRsZVwiOiB0aXRsZSxcclxuICAgICAgICAgICAgXCJmaWVsZFwiOiBmaWVsZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIFNjaGVtYUVsZW1lbnRGYWN0b3J5LmFkZEF0dHJpYnV0ZXMocmVzdWx0LCBhdHRyaWJ1dGVzKTtcclxuICAgICAgICBTY2hlbWFFbGVtZW50RmFjdG9yeS5hZGRTdHlsZXMocmVzdWx0LCBzdHlsZXMpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB0ZW1wbGF0ZSh0ZW1wbGF0ZUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwidGVtcGxhdGVcIixcclxuICAgICAgICAgICAgXCJ0ZW1wbGF0ZVwiOiB0ZW1wbGF0ZUlkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjYXJkKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcImNhcmRcIixcclxuICAgICAgICAgICAgXCJlbGVtZW50c1wiOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGh0bWxFbGVtZW50KGh0bWxUYWcsIGNvbnRlbnQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcImVsZW1lbnRcIjogaHRtbFRhZyxcclxuICAgICAgICAgICAgXCJjb250ZW50XCI6IGNvbnRlbnRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2aXN1YWxpemF0aW9uKGRhdGFzb3VyY2UsIHBlcnNwZWN0aXZlLCB2aWV3KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgXCJlbGVtZW50XCI6IFwidmlzdWFsaXphdGlvblwiLFxyXG4gICAgICAgICAgICBcImRhdGFzb3VyY2VcIjogZGF0YXNvdXJjZSxcclxuICAgICAgICAgICAgXCJwZXJzcGVjdGl2ZVwiOiBwZXJzcGVjdGl2ZSxcclxuICAgICAgICAgICAgXCJ2aWV3XCI6IHZpZXdcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZEF0dHJpYnV0ZXMob2JqLCBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIG9iai5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG9iai5hdHRyaWJ1dGVzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhZGRTdHlsZXMob2JqLCBzdHlsZXMpIHtcclxuICAgICAgICBpZiAoc3R5bGVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBvYmouc3R5bGVzID0gc3R5bGVzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
{
"name": "pragma-schema",
"version": "1.0.31",
"version": "1.0.32",
"description": "utility for building pragma schema structures",

@@ -5,0 +5,0 @@ "main": "commonjs/src/schema.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc