@aquera/ngx-smart-table 0.0.17-patch-0.1 → 0.0.17-patch-0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/editors/index.mjs +2 -1
- package/esm2020/lib/editors/nile-code-editor.mjs +619 -0
- package/esm2020/lib/editors/nile-select-editor.mjs +16 -5
- package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +19 -6
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +15 -2
- package/esm2020/lib/renderer/models/cell.class.mjs +30 -2
- package/fesm2015/aquera-ngx-smart-table.mjs +713 -12
- package/fesm2015/aquera-ngx-smart-table.mjs.map +1 -1
- package/fesm2020/aquera-ngx-smart-table.mjs +696 -12
- package/fesm2020/aquera-ngx-smart-table.mjs.map +1 -1
- package/lib/editors/index.d.ts +1 -0
- package/lib/editors/nile-code-editor.d.ts +154 -0
- package/lib/renderer/components/st-cell/st-cell.component.d.ts +4 -2
- package/lib/renderer/models/cell.class.d.ts +18 -1
- package/package.json +1 -1
|
@@ -284,10 +284,38 @@ export class Cell {
|
|
|
284
284
|
return this.rowIndex;
|
|
285
285
|
}
|
|
286
286
|
/**
|
|
287
|
-
*
|
|
287
|
+
* Link this cell to its replacement so future state mutations forward.
|
|
288
|
+
*/
|
|
289
|
+
setReplacement(replacement) {
|
|
290
|
+
this.replacementCell = replacement;
|
|
291
|
+
}
|
|
292
|
+
onStateChange(callback) {
|
|
293
|
+
this.stateChangeCallback = callback;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Set loading state. Forwards to replacement cell if this cell was replaced.
|
|
288
297
|
*/
|
|
289
298
|
setLoading(isLoading) {
|
|
299
|
+
if (this.replacementCell) {
|
|
300
|
+
this.replacementCell.setLoading(isLoading);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
290
303
|
this.state.isLoading = isLoading;
|
|
304
|
+
try {
|
|
305
|
+
this.stateChangeCallback?.();
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
this.stateChangeCallback = undefined;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Set cell value (public API, forwards to replacement if replaced).
|
|
313
|
+
*/
|
|
314
|
+
setValueExternal(value) {
|
|
315
|
+
if (this.replacementCell) {
|
|
316
|
+
return this.replacementCell.setValueExternal(value);
|
|
317
|
+
}
|
|
318
|
+
return this.setValue(value, true);
|
|
291
319
|
}
|
|
292
320
|
/**
|
|
293
321
|
* Set disabled state
|
|
@@ -386,4 +414,4 @@ export class Cell {
|
|
|
386
414
|
this.state.metadata = undefined;
|
|
387
415
|
}
|
|
388
416
|
}
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvbW9kZWxzL2NlbGwuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBR0gsT0FBTyxFQUFhLGVBQWUsRUFBb0IsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvSSxPQUFPLEVBQW9CLGtCQUFrQixFQUFhLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBHOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sSUFBSTtJQW9DZixZQUNFLFlBQTZCLEVBQzdCLFlBQWUsRUFDZixPQUFhLEVBQ2IsUUFBaUI7UUFuQm5COztXQUVHO1FBQ0ssWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFNUM7O1dBRUc7UUFDSyxpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBRWxDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFRM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFRLEVBQUUsaUJBQTBCLEtBQUs7UUFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxL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LENBQUMsWUFBWSxDQUFDLEdBQUc7WUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbGwgY2xhc3MgLSByZXByZXNlbnRzIGluZGl2aWR1YWwgY2VsbCBpbnN0YW5jZXNcbiAqIENvbWJpbmVzIENvbHVtbkNvbmZpZyAoRmx5d2VpZ2h0KSB3aXRoIENlbGxTdGF0ZSAodW5pcXVlIHBlciBpbnN0YW5jZSlcbiAqL1xuXG5pbXBvcnQgeyBDb2x1bW5Db25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbFN0YXRlLCBjcmVhdGVDZWxsU3RhdGUsIENlbGxTdGF0ZU1lbWVudG8sIGNyZWF0ZU1lbWVudG8sIHJlc3RvcmVGcm9tTWVtZW50bywgY2FuRWRpdCwgaXNDZWxsVmFsaWQgfSBmcm9tICcuL2NlbGwtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25SZXN1bHQsIENlbGxMaWZlY3ljbGVTdGF0ZSwgQ2VsbEV2ZW50LCBFZGl0TW9kZSB9IGZyb20gJy4uLy4uL21vZGVscy9jZWxsLXR5cGVzJztcblxuLyoqXG4gKiBDZWxsIGNsYXNzIGltcGxlbWVudGluZyB0aGUgRmx5d2VpZ2h0IHBhdHRlcm5cbiAqIC0gUmVmZXJlbmNlcyBzaGFyZWQgQ29sdW1uQ29uZmlnIChGbHl3ZWlnaHQpXG4gKiAtIE93bnMgdW5pcXVlIENlbGxTdGF0ZSAoRmx5d2VpZ2h0IENvbnRleHQpXG4gKi9cbmV4cG9ydCBjbGFzcyBDZWxsPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFNoYXJlZCBjb2x1bW4gY29uZmlndXJhdGlvbiAoRmx5d2VpZ2h0IC0gcmVmZXJlbmNlIG9ubHksIG5vdCBvd25lZClcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sdW1uQ29uZmlnOiBDb2x1bW5Db25maWc8VD47XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBjZWxsIHN0YXRlIChvd25lZCBieSB0aGlzIGluc3RhbmNlKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZTogQ2VsbFN0YXRlPFQ+O1xuXG4gIC8qKlxuICAgKiBSb3cgZGF0YSBjb250ZXh0IChyZWZlcmVuY2UgdG8gcGFyZW50IHJvdyBkYXRhKVxuICAgKi9cbiAgcHJpdmF0ZSByb3dEYXRhPzogYW55O1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXggaW4gdGFibGVcbiAgICovXG4gIHByaXZhdGUgcm93SW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGUgbWVtZW50b3MgZm9yIHVuZG8vcmVkb1xuICAgKi9cbiAgcHJpdmF0ZSBoaXN0b3J5OiBDZWxsU3RhdGVNZW1lbnRvPFQ+W10gPSBbXTtcblxuICAvKipcbiAgICogQ3VycmVudCBwb3NpdGlvbiBpbiBoaXN0b3J5XG4gICAqL1xuICBwcml2YXRlIGhpc3RvcnlJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gaGlzdG9yeSBzaXplXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG1heEhpc3RvcnlTaXplOiBudW1iZXIgPSAxMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb2x1bW5Db25maWc6IENvbHVtbkNvbmZpZzxUPixcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgcm93RGF0YT86IGFueSxcbiAgICByb3dJbmRleD86IG51bWJlclxuICApIHtcbiAgICB0aGlzLmNvbHVtbkNvbmZpZyA9IGNvbHVtbkNvbmZpZztcbiAgICB0aGlzLnN0YXRlID0gY3JlYXRlQ2VsbFN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gICAgdGhpcy5yb3dEYXRhID0gcm93RGF0YTtcbiAgICB0aGlzLnJvd0luZGV4ID0gcm93SW5kZXg7XG4gICAgXG4gICAgLy8gU2F2ZSBpbml0aWFsIHN0YXRlIHRvIGhpc3RvcnlcbiAgICB0aGlzLnNhdmVUb0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjZWxsIHZhbHVlXG4gICAqL1xuICBnZXRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlXG4gICAqIEBwYXJhbSBza2lwVmFsaWRhdGlvbiBTa2lwIHZhbGlkYXRpb24gKHVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljIHNldHMpXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVCwgc2tpcFZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSB0aGlzLnN0YXRlLnZhbHVlO1xuXG4gICAgLy8gQ2FsbCBiZWZvcmUgY2hhbmdlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5vbkNoYW5nZSh0aGlzLmNyZWF0ZUV2ZW50KHZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGUuaXNEaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gVmFsaWRhdGUgaWYgbm90IHNraXBwZWRcbiAgICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNhdmVUb0hpc3RvcnkoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgY2VsbCB2YWx1ZSBhcyBmb3JtYXR0ZWQgc3RyaW5nIChkZWxlZ2F0ZXMgdG8gZm9ybWF0dGVyIHN0cmF0ZWd5KVxuICAgKi9cbiAgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbmZpZy5mb3JtYXR0ZXIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodGhpcy5zdGF0ZS52YWx1ZSA/PyAnJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dChcbiAgICAgICAgdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgdGhpcy5yb3dEYXRhLFxuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5rZXlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGZvcm1hdCBtZXRob2QgZXhpc3RzIGJlZm9yZSBjYWxsaW5nIGl0XG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZy5mb3JtYXR0ZXIuZm9ybWF0KHRoaXMuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGlmIGZvcm1hdHRlciBleGlzdHMgYnV0IGhhcyBubyBtZXRob2RzXG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnN0YXRlLnZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBjZWxsIHZhbHVlIChkZWxlZ2F0ZXMgdG8gdmFsaWRhdG9yIHN0cmF0ZWd5KVxuICAgKi9cbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgLy8gQ2xlYXIgcHJldmlvdXMgZXJyb3JzXG4gICAgdGhpcy5zdGF0ZS5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlLmVycm9ycyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlLmxhc3RWYWxpZGF0ZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbmZpZy52YWxpZGF0b3IpIHtcbiAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHRcbiAgICAgID8gdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQoXG4gICAgICAgICAgdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgICB0aGlzLnJvd0RhdGEsXG4gICAgICAgICAgdGhpcy5jb2x1bW5Db25maWcua2V5XG4gICAgICAgIClcbiAgICAgIDogdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMuc3RhdGUudmFsdWUpO1xuXG4gICAgaWYgKCFyZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSByZXN1bHQuZXJyb3I7XG4gICAgICB0aGlzLnN0YXRlLmVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgICB0aGlzLnN0YXRlLmxpZmVjeWNsZVN0YXRlID0gQ2VsbExpZmVjeWNsZVN0YXRlLkVSUk9SO1xuXG4gICAgICAvLyBDYWxsIHZhbGlkYXRpb24gZXJyb3IgaG9va1xuICAgICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzPy5vblZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5vblZhbGlkYXRpb25FcnJvcih0aGlzLmNyZWF0ZUV2ZW50KHRoaXMuc3RhdGUudmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGVkaXQgbW9kZVxuICAgKi9cbiAgc3RhcnRFZGl0KCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIGNlbGwgY2FuIGJlIGVkaXRlZFxuICAgIGlmICghdGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZSBlZGl0IGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/LmJlZm9yZUVkaXQpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmJlZm9yZUVkaXQodGhpcy5jcmVhdGVFdmVudCh0aGlzLnN0YXRlLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBjdXJyZW50IHZhbHVlIGFzIHByZXZpb3VzXG4gICAgdGhpcy5zdGF0ZS5wcmV2aW91c1ZhbHVlID0gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5FRElUSU5HO1xuXG4gICAgLy8gQ2FsbCBvbiBlZGl0IGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uRWRpdCkge1xuICAgICAgdGhpcy5jb2x1bW5Db25maWcuaG9va3Mub25FZGl0KHRoaXMuY3JlYXRlRXZlbnQodGhpcy5zdGF0ZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgZWRpdGVkIHZhbHVlXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIGZyb20gZWRpdG9yXG4gICAqL1xuICBzYXZlRWRpdChuZXdWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zdGF0ZS5pc0VkaXRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZSBzYXZlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/LmJlZm9yZVNhdmUpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmJlZm9yZVNhdmUodGhpcy5jcmVhdGVFdmVudChuZXdWYWx1ZSwgdGhpcy5zdGF0ZS5wcmV2aW91c1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdmFsdWUgaWYgcGFyc2VyIGlzIHByb3ZpZGVkXG4gICAgbGV0IHBhcnNlZFZhbHVlID0gbmV3VmFsdWU7XG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLnBhcnNlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkVmFsdWUgPSB0aGlzLmNvbHVtbkNvbmZpZy5wYXJzZXIucGFyc2UobmV3VmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IGBGYWlsZWQgdG8gcGFyc2UgdmFsdWU6ICR7ZXJyb3J9YDtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc3RhdGUudmFsdWU7XG4gICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHBhcnNlZFZhbHVlO1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnZhbGlkYXRlKCk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RhdGUudmFsdWUgPSBwcmV2aW91c1ZhbHVlOyAvLyBSZXZlcnQgb24gdmFsaWRhdGlvbiBmYWlsdXJlXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTWFyayBhcyBkaXJ0eSBpZiB2YWx1ZSBjaGFuZ2VkXG4gICAgdGhpcy5zdGF0ZS5pc0RpcnR5ID0gdGhpcy5zdGF0ZS52YWx1ZSAhPT0gdGhpcy5zdGF0ZS5vcmlnaW5hbFZhbHVlO1xuICAgIHRoaXMuc3RhdGUuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5ESVNQTEFZO1xuICAgIHRoaXMuc3RhdGUubGFzdE1vZGlmaWVkID0gbmV3IERhdGUoKTtcblxuICAgIC8vIFNhdmUgdG8gaGlzdG9yeVxuICAgIHRoaXMuc2F2ZVRvSGlzdG9yeSgpO1xuXG4gICAgLy8gQ2FsbCBhZnRlciBzYXZlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uU2F2ZSkge1xuICAgICAgdGhpcy5jb2x1bW5Db25maWcuaG9va3Mub25TYXZlKHRoaXMuY3JlYXRlRXZlbnQocGFyc2VkVmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGFmdGVyIGVkaXQgaG9va1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbmZpZy5ob29rcz8uYWZ0ZXJFZGl0KSB7XG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5hZnRlckVkaXQodGhpcy5jcmVhdGVFdmVudChwYXJzZWRWYWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBlZGl0IGFuZCByZXZlcnQgdG8gcHJldmlvdXMgdmFsdWVcbiAgICovXG4gIGNhbmNlbEVkaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmlzRWRpdGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJldmVydCB0byBwcmV2aW91cyB2YWx1ZVxuICAgIGlmICh0aGlzLnN0YXRlLnByZXZpb3VzVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHRoaXMuc3RhdGUucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGUubGlmZWN5Y2xlU3RhdGUgPSBDZWxsTGlmZWN5Y2xlU3RhdGUuRElTUExBWTtcbiAgICB0aGlzLnN0YXRlLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RhdGUuZXJyb3JzID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gQ2FsbCBjYW5jZWwgaG9va1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbmZpZy5ob29rcz8ub25DYW5jZWwpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLm9uQ2FuY2VsKHRoaXMuY3JlYXRlRXZlbnQodGhpcy5zdGF0ZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIC8vIENhbGwgYWZ0ZXIgZWRpdCBob29rXG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzPy5hZnRlckVkaXQpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmFmdGVyRWRpdCh0aGlzLmNyZWF0ZUV2ZW50KHRoaXMuc3RhdGUudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgY2VsbCB0byBvcmlnaW5hbCB2YWx1ZVxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUub3JpZ2luYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnZhbHVlID0gdGhpcy5zdGF0ZS5vcmlnaW5hbFZhbHVlO1xuICAgICAgdGhpcy5zdGF0ZS5pc0RpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlLmVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdGF0ZS5lcnJvcnMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5ESVNQTEFZO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjZWxsIGNhbiBiZSBlZGl0ZWRcbiAgICovXG4gIGNhbkVkaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmVkaXRhYmxlID09PSB0cnVlICYmXG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5lZGl0TW9kZSAhPT0gRWRpdE1vZGUuTk9ORSAmJlxuICAgICAgY2FuRWRpdCh0aGlzLnN0YXRlKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDZWxsVmFsaWQodGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyBkaXJ0eSAobW9kaWZpZWQpXG4gICAqL1xuICBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRGlydHk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyBpbiBlZGl0IG1vZGVcbiAgICovXG4gIGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc0VkaXRpbmc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGZvY3VzIHN0YXRlIG9uIHRoaXMgY2VsbFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG4gIFxuICAvKipcbiAgICogUmVtb3ZlIGZvY3VzIGZyb20gdGhpcyBjZWxsXG4gICAqL1xuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuaXNGb2N1c2VkID0gZmFsc2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIGNlbGwgaXMgZm9jdXNlZFxuICAgKi9cbiAgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRm9jdXNlZCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjZWxsIHN0YXRlIChNZW1lbnRvIHBhdHRlcm4pXG4gICAqL1xuICBnZXRTdGF0ZSgpOiBDZWxsU3RhdGU8VD4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlIGNlbGwgc3RhdGUgZnJvbSBzbmFwc2hvdCAoTWVtZW50byBwYXR0ZXJuKVxuICAgKi9cbiAgcmVzdG9yZVN0YXRlKHN0YXRlOiBDZWxsU3RhdGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0geyAuLi5zdGF0ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb2x1bW4gY29uZmlndXJhdGlvbiAocmVhZG9ubHkgYWNjZXNzKVxuICAgKi9cbiAgZ2V0Q29sdW1uQ29uZmlnKCk6IFJlYWRvbmx5PENvbHVtbkNvbmZpZzxUPj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcm93IGRhdGEgY29udGV4dFxuICAgKi9cbiAgZ2V0Um93RGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJvd0RhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJvdyBpbmRleFxuICAgKi9cbiAgZ2V0Um93SW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yb3dJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgc2V0TG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZWQgc3RhdGVcbiAgICovXG4gIHNldERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZWFkb25seSBzdGF0ZVxuICAgKi9cbiAgc2V0UmVhZG9ubHkoaXNSZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuaXNSZWFkb25seSA9IGlzUmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBjdXJyZW50IHN0YXRlIHRvIGhpc3RvcnlcbiAgICovXG4gIHByaXZhdGUgc2F2ZVRvSGlzdG9yeSgpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgYW55IHN0YXRlcyBhZnRlciBjdXJyZW50IHBvc2l0aW9uIChmb3IgcmVkbyBpbnZhbGlkYXRpb24pXG4gICAgdGhpcy5oaXN0b3J5ID0gdGhpcy5oaXN0b3J5LnNsaWNlKDAsIHRoaXMuaGlzdG9yeUluZGV4ICsgMSk7XG5cbiAgICAvLyBBZGQgY3VycmVudCBzdGF0ZVxuICAgIHRoaXMuaGlzdG9yeS5wdXNoKGNyZWF0ZU1lbWVudG8odGhpcy5zdGF0ZSkpO1xuICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDE7XG5cbiAgICAvLyBMaW1pdCBoaXN0b3J5IHNpemVcbiAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IHRoaXMubWF4SGlzdG9yeVNpemUpIHtcbiAgICAgIHRoaXMuaGlzdG9yeS5zaGlmdCgpO1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgtLTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5kbyBsYXN0IGNoYW5nZVxuICAgKi9cbiAgdW5kbygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPiAwKSB7XG4gICAgICB0aGlzLmhpc3RvcnlJbmRleC0tO1xuICAgICAgY29uc3QgbWVtZW50byA9IHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnlJbmRleF07XG4gICAgICB0aGlzLnN0YXRlID0gcmVzdG9yZUZyb21NZW1lbnRvKHRoaXMuc3RhdGUsIG1lbWVudG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRvIGxhc3QgdW5kb25lIGNoYW5nZVxuICAgKi9cbiAgcmVkbygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKztcbiAgICAgIGNvbnN0IG1lbWVudG8gPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgICAgdGhpcy5zdGF0ZSA9IHJlc3RvcmVGcm9tTWVtZW50byh0aGlzLnN0YXRlLCBtZW1lbnRvKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdW5kbyBpcyBhdmFpbGFibGVcbiAgICovXG4gIGNhblVuZG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeUluZGV4ID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiByZWRvIGlzIGF2YWlsYWJsZVxuICAgKi9cbiAgY2FuUmVkbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY2VsbCBldmVudCBmb3IgaG9va3NcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQodmFsdWU6IFQsIHByZXZpb3VzVmFsdWU/OiBUKTogQ2VsbEV2ZW50PFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlID8/IHRoaXMuc3RhdGUucHJldmlvdXNWYWx1ZSxcbiAgICAgIHJvd0RhdGE6IHRoaXMucm93RGF0YSxcbiAgICAgIGNvbHVtbktleTogdGhpcy5jb2x1bW5Db25maWcua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXhcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIG1ldGFkYXRhXG4gICAqL1xuICBnZXRNZXRhZGF0YShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubWV0YWRhdGE/LltrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjZWxsIG1ldGFkYXRhXG4gICAqL1xuICBzZXRNZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGF0ZS5tZXRhZGF0YSkge1xuICAgICAgdGhpcy5zdGF0ZS5tZXRhZGF0YSA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLm1ldGFkYXRhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgbWV0YWRhdGFcbiAgICovXG4gIGNsZWFyTWV0YWRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5tZXRhZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4iXX0=
|
|
417
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvbW9kZWxzL2NlbGwuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBR0gsT0FBTyxFQUFhLGVBQWUsRUFBb0IsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvSSxPQUFPLEVBQW9CLGtCQUFrQixFQUFhLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBHOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sSUFBSTtJQW9DZixZQUNFLFlBQTZCLEVBQzdCLFlBQWUsRUFDZixPQUFhLEVBQ2IsUUFBaUI7UUFuQm5COztXQUVHO1FBQ0ssWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFNUM7O1dBRUc7UUFDSyxpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBRWxDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFRM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFRLEVBQUUsaUJBQTBCLEtBQUs7UUFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxL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LENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbGwgY2xhc3MgLSByZXByZXNlbnRzIGluZGl2aWR1YWwgY2VsbCBpbnN0YW5jZXNcbiAqIENvbWJpbmVzIENvbHVtbkNvbmZpZyAoRmx5d2VpZ2h0KSB3aXRoIENlbGxTdGF0ZSAodW5pcXVlIHBlciBpbnN0YW5jZSlcbiAqL1xuXG5pbXBvcnQgeyBDb2x1bW5Db25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbFN0YXRlLCBjcmVhdGVDZWxsU3RhdGUsIENlbGxTdGF0ZU1lbWVudG8sIGNyZWF0ZU1lbWVudG8sIHJlc3RvcmVGcm9tTWVtZW50bywgY2FuRWRpdCwgaXNDZWxsVmFsaWQgfSBmcm9tICcuL2NlbGwtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25SZXN1bHQsIENlbGxMaWZlY3ljbGVTdGF0ZSwgQ2VsbEV2ZW50LCBFZGl0TW9kZSB9IGZyb20gJy4uLy4uL21vZGVscy9jZWxsLXR5cGVzJztcblxuLyoqXG4gKiBDZWxsIGNsYXNzIGltcGxlbWVudGluZyB0aGUgRmx5d2VpZ2h0IHBhdHRlcm5cbiAqIC0gUmVmZXJlbmNlcyBzaGFyZWQgQ29sdW1uQ29uZmlnIChGbHl3ZWlnaHQpXG4gKiAtIE93bnMgdW5pcXVlIENlbGxTdGF0ZSAoRmx5d2VpZ2h0IENvbnRleHQpXG4gKi9cbmV4cG9ydCBjbGFzcyBDZWxsPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFNoYXJlZCBjb2x1bW4gY29uZmlndXJhdGlvbiAoRmx5d2VpZ2h0IC0gcmVmZXJlbmNlIG9ubHksIG5vdCBvd25lZClcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sdW1uQ29uZmlnOiBDb2x1bW5Db25maWc8VD47XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBjZWxsIHN0YXRlIChvd25lZCBieSB0aGlzIGluc3RhbmNlKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZTogQ2VsbFN0YXRlPFQ+O1xuXG4gIC8qKlxuICAgKiBSb3cgZGF0YSBjb250ZXh0IChyZWZlcmVuY2UgdG8gcGFyZW50IHJvdyBkYXRhKVxuICAgKi9cbiAgcHJpdmF0ZSByb3dEYXRhPzogYW55O1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXggaW4gdGFibGVcbiAgICovXG4gIHByaXZhdGUgcm93SW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGUgbWVtZW50b3MgZm9yIHVuZG8vcmVkb1xuICAgKi9cbiAgcHJpdmF0ZSBoaXN0b3J5OiBDZWxsU3RhdGVNZW1lbnRvPFQ+W10gPSBbXTtcblxuICAvKipcbiAgICogQ3VycmVudCBwb3NpdGlvbiBpbiBoaXN0b3J5XG4gICAqL1xuICBwcml2YXRlIGhpc3RvcnlJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gaGlzdG9yeSBzaXplXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG1heEhpc3RvcnlTaXplOiBudW1iZXIgPSAxMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb2x1bW5Db25maWc6IENvbHVtbkNvbmZpZzxUPixcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgcm93RGF0YT86IGFueSxcbiAgICByb3dJbmRleD86IG51bWJlclxuICApIHtcbiAgICB0aGlzLmNvbHVtbkNvbmZpZyA9IGNvbHVtbkNvbmZpZztcbiAgICB0aGlzLnN0YXRlID0gY3JlYXRlQ2VsbFN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gICAgdGhpcy5yb3dEYXRhID0gcm93RGF0YTtcbiAgICB0aGlzLnJvd0luZGV4ID0gcm93SW5kZXg7XG4gICAgXG4gICAgLy8gU2F2ZSBpbml0aWFsIHN0YXRlIHRvIGhpc3RvcnlcbiAgICB0aGlzLnNhdmVUb0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjZWxsIHZhbHVlXG4gICAqL1xuICBnZXRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlXG4gICAqIEBwYXJhbSBza2lwVmFsaWRhdGlvbiBTa2lwIHZhbGlkYXRpb24gKHVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljIHNldHMpXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVCwgc2tpcFZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSB0aGlzLnN0YXRlLnZhbHVlO1xuXG4gICAgLy8gQ2FsbCBiZWZvcmUgY2hhbmdlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5vbkNoYW5nZSh0aGlzLmNyZWF0ZUV2ZW50KHZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGUuaXNEaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gVmFsaWRhdGUgaWYgbm90IHNraXBwZWRcbiAgICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNhdmVUb0hpc3RvcnkoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgY2VsbCB2YWx1ZSBhcyBmb3JtYXR0ZWQgc3RyaW5nIChkZWxlZ2F0ZXMgdG8gZm9ybWF0dGVyIHN0cmF0ZWd5KVxuICAgKi9cbiAgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbmZpZy5mb3JtYXR0ZXIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodGhpcy5zdGF0ZS52YWx1ZSA/PyAnJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dChcbiAgICAgICAgdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgdGhpcy5yb3dEYXRhLFxuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5rZXlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGZvcm1hdCBtZXRob2QgZXhpc3RzIGJlZm9yZSBjYWxsaW5nIGl0XG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZy5mb3JtYXR0ZXIuZm9ybWF0KHRoaXMuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGlmIGZvcm1hdHRlciBleGlzdHMgYnV0IGhhcyBubyBtZXRob2RzXG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnN0YXRlLnZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBjZWxsIHZhbHVlIChkZWxlZ2F0ZXMgdG8gdmFsaWRhdG9yIHN0cmF0ZWd5KVxuICAgKi9cbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgLy8gQ2xlYXIgcHJldmlvdXMgZXJyb3JzXG4gICAgdGhpcy5zdGF0ZS5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlLmVycm9ycyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlLmxhc3RWYWxpZGF0ZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbmZpZy52YWxpZGF0b3IpIHtcbiAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHRcbiAgICAgID8gdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQoXG4gICAgICAgICAgdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgICB0aGlzLnJvd0RhdGEsXG4gICAgICAgICAgdGhpcy5jb2x1bW5Db25maWcua2V5XG4gICAgICAgIClcbiAgICAgIDogdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMuc3RhdGUudmFsdWUpO1xuXG4gICAgaWYgKCFyZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSByZXN1bHQuZXJyb3I7XG4gICAgICB0aGlzLnN0YXRlLmVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgICB0aGlzLnN0YXRlLmxpZmVjeWNsZVN0YXRlID0gQ2VsbExpZmVjeWNsZVN0YXRlLkVSUk9SO1xuXG4gICAgICAvLyBDYWxsIHZhbGlkYXRpb24gZXJyb3IgaG9va1xuICAgICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzPy5vblZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5vblZhbGlkYXRpb25FcnJvcih0aGlzLmNyZWF0ZUV2ZW50KHRoaXMuc3RhdGUudmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGVkaXQgbW9kZVxuICAgKi9cbiAgc3RhcnRFZGl0KCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIGNlbGwgY2FuIGJlIGVkaXRlZFxuICAgIGlmICghdGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZSBlZGl0IGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/LmJlZm9yZUVkaXQpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmJlZm9yZUVkaXQodGhpcy5jcmVhdGVFdmVudCh0aGlzLnN0YXRlLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBjdXJyZW50IHZhbHVlIGFzIHByZXZpb3VzXG4gICAgdGhpcy5zdGF0ZS5wcmV2aW91c1ZhbHVlID0gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5FRElUSU5HO1xuXG4gICAgLy8gQ2FsbCBvbiBlZGl0IGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uRWRpdCkge1xuICAgICAgdGhpcy5jb2x1bW5Db25maWcuaG9va3Mub25FZGl0KHRoaXMuY3JlYXRlRXZlbnQodGhpcy5zdGF0ZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgZWRpdGVkIHZhbHVlXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIGZyb20gZWRpdG9yXG4gICAqL1xuICBzYXZlRWRpdChuZXdWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zdGF0ZS5pc0VkaXRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZSBzYXZlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/LmJlZm9yZVNhdmUpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmJlZm9yZVNhdmUodGhpcy5jcmVhdGVFdmVudChuZXdWYWx1ZSwgdGhpcy5zdGF0ZS5wcmV2aW91c1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdmFsdWUgaWYgcGFyc2VyIGlzIHByb3ZpZGVkXG4gICAgbGV0IHBhcnNlZFZhbHVlID0gbmV3VmFsdWU7XG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLnBhcnNlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkVmFsdWUgPSB0aGlzLmNvbHVtbkNvbmZpZy5wYXJzZXIucGFyc2UobmV3VmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IGBGYWlsZWQgdG8gcGFyc2UgdmFsdWU6ICR7ZXJyb3J9YDtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc3RhdGUudmFsdWU7XG4gICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHBhcnNlZFZhbHVlO1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnZhbGlkYXRlKCk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RhdGUudmFsdWUgPSBwcmV2aW91c1ZhbHVlOyAvLyBSZXZlcnQgb24gdmFsaWRhdGlvbiBmYWlsdXJlXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTWFyayBhcyBkaXJ0eSBpZiB2YWx1ZSBjaGFuZ2VkXG4gICAgdGhpcy5zdGF0ZS5pc0RpcnR5ID0gdGhpcy5zdGF0ZS52YWx1ZSAhPT0gdGhpcy5zdGF0ZS5vcmlnaW5hbFZhbHVlO1xuICAgIHRoaXMuc3RhdGUuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5ESVNQTEFZO1xuICAgIHRoaXMuc3RhdGUubGFzdE1vZGlmaWVkID0gbmV3IERhdGUoKTtcblxuICAgIC8vIFNhdmUgdG8gaGlzdG9yeVxuICAgIHRoaXMuc2F2ZVRvSGlzdG9yeSgpO1xuXG4gICAgLy8gQ2FsbCBhZnRlciBzYXZlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uU2F2ZSkge1xuICAgICAgdGhpcy5jb2x1bW5Db25maWcuaG9va3Mub25TYXZlKHRoaXMuY3JlYXRlRXZlbnQocGFyc2VkVmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGFmdGVyIGVkaXQgaG9va1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbmZpZy5ob29rcz8uYWZ0ZXJFZGl0KSB7XG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5hZnRlckVkaXQodGhpcy5jcmVhdGVFdmVudChwYXJzZWRWYWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBlZGl0IGFuZCByZXZlcnQgdG8gcHJldmlvdXMgdmFsdWVcbiAgICovXG4gIGNhbmNlbEVkaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmlzRWRpdGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJldmVydCB0byBwcmV2aW91cyB2YWx1ZVxuICAgIGlmICh0aGlzLnN0YXRlLnByZXZpb3VzVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHRoaXMuc3RhdGUucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGUubGlmZWN5Y2xlU3RhdGUgPSBDZWxsTGlmZWN5Y2xlU3RhdGUuRElTUExBWTtcbiAgICB0aGlzLnN0YXRlLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RhdGUuZXJyb3JzID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gQ2FsbCBjYW5jZWwgaG9va1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbmZpZy5ob29rcz8ub25DYW5jZWwpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLm9uQ2FuY2VsKHRoaXMuY3JlYXRlRXZlbnQodGhpcy5zdGF0ZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIC8vIENhbGwgYWZ0ZXIgZWRpdCBob29rXG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzPy5hZnRlckVkaXQpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmFmdGVyRWRpdCh0aGlzLmNyZWF0ZUV2ZW50KHRoaXMuc3RhdGUudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgY2VsbCB0byBvcmlnaW5hbCB2YWx1ZVxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUub3JpZ2luYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnZhbHVlID0gdGhpcy5zdGF0ZS5vcmlnaW5hbFZhbHVlO1xuICAgICAgdGhpcy5zdGF0ZS5pc0RpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlLmVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdGF0ZS5lcnJvcnMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5ESVNQTEFZO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjZWxsIGNhbiBiZSBlZGl0ZWRcbiAgICovXG4gIGNhbkVkaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmVkaXRhYmxlID09PSB0cnVlICYmXG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5lZGl0TW9kZSAhPT0gRWRpdE1vZGUuTk9ORSAmJlxuICAgICAgY2FuRWRpdCh0aGlzLnN0YXRlKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDZWxsVmFsaWQodGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyBkaXJ0eSAobW9kaWZpZWQpXG4gICAqL1xuICBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRGlydHk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyBpbiBlZGl0IG1vZGVcbiAgICovXG4gIGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc0VkaXRpbmc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGZvY3VzIHN0YXRlIG9uIHRoaXMgY2VsbFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG4gIFxuICAvKipcbiAgICogUmVtb3ZlIGZvY3VzIGZyb20gdGhpcyBjZWxsXG4gICAqL1xuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuaXNGb2N1c2VkID0gZmFsc2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIGNlbGwgaXMgZm9jdXNlZFxuICAgKi9cbiAgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRm9jdXNlZCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjZWxsIHN0YXRlIChNZW1lbnRvIHBhdHRlcm4pXG4gICAqL1xuICBnZXRTdGF0ZSgpOiBDZWxsU3RhdGU8VD4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlIGNlbGwgc3RhdGUgZnJvbSBzbmFwc2hvdCAoTWVtZW50byBwYXR0ZXJuKVxuICAgKi9cbiAgcmVzdG9yZVN0YXRlKHN0YXRlOiBDZWxsU3RhdGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0geyAuLi5zdGF0ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb2x1bW4gY29uZmlndXJhdGlvbiAocmVhZG9ubHkgYWNjZXNzKVxuICAgKi9cbiAgZ2V0Q29sdW1uQ29uZmlnKCk6IFJlYWRvbmx5PENvbHVtbkNvbmZpZzxUPj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcm93IGRhdGEgY29udGV4dFxuICAgKi9cbiAgZ2V0Um93RGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJvd0RhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJvdyBpbmRleFxuICAgKi9cbiAgZ2V0Um93SW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yb3dJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGVDaGFuZ2VDYWxsYmFjaz86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIGRhdGEgc291cmNlIHJlZnJlc2hlcywgdGhlIHRhYmxlIHJlY3JlYXRlcyBDZWxsIG9iamVjdHMuXG4gICAqIFRoaXMgZmllbGQgbGV0cyB0aGUgb2xkIChzdGFsZSkgQ2VsbCBmb3J3YXJkIGNhbGxzIHRvIGl0cyByZXBsYWNlbWVudFxuICAgKiBzbyB0aGF0IGFzeW5jIG9wZXJhdGlvbnMgKGUuZy4gc2V0TG9hZGluZyBmcm9tIGFuIEFQSSBjYWxsYmFjaylcbiAgICogc3RpbGwgcmVhY2ggdGhlIGxpdmUgY29tcG9uZW50LlxuICAgKi9cbiAgcHJpdmF0ZSByZXBsYWNlbWVudENlbGw/OiBDZWxsPGFueT47XG5cbiAgLyoqXG4gICAqIExpbmsgdGhpcyBjZWxsIHRvIGl0cyByZXBsYWNlbWVudCBzbyBmdXR1cmUgc3RhdGUgbXV0YXRpb25zIGZvcndhcmQuXG4gICAqL1xuICBzZXRSZXBsYWNlbWVudChyZXBsYWNlbWVudDogQ2VsbDxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yZXBsYWNlbWVudENlbGwgPSByZXBsYWNlbWVudDtcbiAgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbG9hZGluZyBzdGF0ZS4gRm9yd2FyZHMgdG8gcmVwbGFjZW1lbnQgY2VsbCBpZiB0aGlzIGNlbGwgd2FzIHJlcGxhY2VkLlxuICAgKi9cbiAgc2V0TG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXBsYWNlbWVudENlbGwpIHtcbiAgICAgIHRoaXMucmVwbGFjZW1lbnRDZWxsLnNldExvYWRpbmcoaXNMb2FkaW5nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5pc0xvYWRpbmcgPSBpc0xvYWRpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VDYWxsYmFjaz8uKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlQ2FsbGJhY2sgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjZWxsIHZhbHVlIChwdWJsaWMgQVBJLCBmb3J3YXJkcyB0byByZXBsYWNlbWVudCBpZiByZXBsYWNlZCkuXG4gICAqL1xuICBzZXRWYWx1ZUV4dGVybmFsKHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucmVwbGFjZW1lbnRDZWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBsYWNlbWVudENlbGwuc2V0VmFsdWVFeHRlcm5hbCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNldFZhbHVlKHZhbHVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZWQgc3RhdGVcbiAgICovXG4gIHNldERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZWFkb25seSBzdGF0ZVxuICAgKi9cbiAgc2V0UmVhZG9ubHkoaXNSZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuaXNSZWFkb25seSA9IGlzUmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBjdXJyZW50IHN0YXRlIHRvIGhpc3RvcnlcbiAgICovXG4gIHByaXZhdGUgc2F2ZVRvSGlzdG9yeSgpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgYW55IHN0YXRlcyBhZnRlciBjdXJyZW50IHBvc2l0aW9uIChmb3IgcmVkbyBpbnZhbGlkYXRpb24pXG4gICAgdGhpcy5oaXN0b3J5ID0gdGhpcy5oaXN0b3J5LnNsaWNlKDAsIHRoaXMuaGlzdG9yeUluZGV4ICsgMSk7XG5cbiAgICAvLyBBZGQgY3VycmVudCBzdGF0ZVxuICAgIHRoaXMuaGlzdG9yeS5wdXNoKGNyZWF0ZU1lbWVudG8odGhpcy5zdGF0ZSkpO1xuICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDE7XG5cbiAgICAvLyBMaW1pdCBoaXN0b3J5IHNpemVcbiAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IHRoaXMubWF4SGlzdG9yeVNpemUpIHtcbiAgICAgIHRoaXMuaGlzdG9yeS5zaGlmdCgpO1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgtLTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5kbyBsYXN0IGNoYW5nZVxuICAgKi9cbiAgdW5kbygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPiAwKSB7XG4gICAgICB0aGlzLmhpc3RvcnlJbmRleC0tO1xuICAgICAgY29uc3QgbWVtZW50byA9IHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnlJbmRleF07XG4gICAgICB0aGlzLnN0YXRlID0gcmVzdG9yZUZyb21NZW1lbnRvKHRoaXMuc3RhdGUsIG1lbWVudG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRvIGxhc3QgdW5kb25lIGNoYW5nZVxuICAgKi9cbiAgcmVkbygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKztcbiAgICAgIGNvbnN0IG1lbWVudG8gPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgICAgdGhpcy5zdGF0ZSA9IHJlc3RvcmVGcm9tTWVtZW50byh0aGlzLnN0YXRlLCBtZW1lbnRvKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdW5kbyBpcyBhdmFpbGFibGVcbiAgICovXG4gIGNhblVuZG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeUluZGV4ID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiByZWRvIGlzIGF2YWlsYWJsZVxuICAgKi9cbiAgY2FuUmVkbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY2VsbCBldmVudCBmb3IgaG9va3NcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQodmFsdWU6IFQsIHByZXZpb3VzVmFsdWU/OiBUKTogQ2VsbEV2ZW50PFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlID8/IHRoaXMuc3RhdGUucHJldmlvdXNWYWx1ZSxcbiAgICAgIHJvd0RhdGE6IHRoaXMucm93RGF0YSxcbiAgICAgIGNvbHVtbktleTogdGhpcy5jb2x1bW5Db25maWcua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXhcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIG1ldGFkYXRhXG4gICAqL1xuICBnZXRNZXRhZGF0YShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubWV0YWRhdGE/LltrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjZWxsIG1ldGFkYXRhXG4gICAqL1xuICBzZXRNZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGF0ZS5tZXRhZGF0YSkge1xuICAgICAgdGhpcy5zdGF0ZS5tZXRhZGF0YSA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLm1ldGFkYXRhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgbWV0YWRhdGFcbiAgICovXG4gIGNsZWFyTWV0YWRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5tZXRhZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4iXX0=
|