@trudb/tru-common-lib 0.0.432 → 0.0.437

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.
@@ -139,7 +139,8 @@ export class ViewConfig {
139
139
  this.isInvalid = false;
140
140
  this.componentName = undefined;
141
141
  this.windowConfig = null;
142
+ this.openAsDetaiView = false;
142
143
  }
143
144
  }
144
145
  ;
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS1kZXNrdG9wLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUF1QixNQUFNLE1BQU0sQ0FBQzs7QUFJNUQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVFOzs7Ozs7Ozs7V0FTRztRQUNJLGtCQUFhLEdBQUc7WUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM1QixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUE7S0FDRjs7OEdBZlksaUJBQWlCO2tIQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7QUFtQlg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUNFLFlBQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQUE7QUFBQSxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNFLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixrQkFBYSxHQUFHLFNBQVMsQ0FBQztRQUMxQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztDQUFBO0FBQUEsQ0FBQztBQUdGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ0UsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM3QixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFFOUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsWUFBTyxHQUFHLFNBQVMsQ0FBQztRQUNwQixXQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNuQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssRUFBYyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNaLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsbUJBQWMsR0FBNEIsRUFBRSxDQUFDO1FBRTdDLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZFLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FBQTtBQUFBLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUdyQixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBV0Q7UUFuQkEsWUFBTyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQVV2RSxhQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsU0FBUyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0lBR0wsQ0FBQztDQUNqQjtBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVDb250ZXh0RmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90cnUtY29udGV4dC1maWx0ZXInO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1RGVza3RvcFNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXHJcbiAgICogQG5hbWUgRGVza3RvcFNlcnZpY2UuY3JlYXRlRGVza3RvcFxyXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIENyZWF0ZXMgYSBuZXcgZGVza3RvcCBpbnN0YW5jZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IERlc2t0b3BcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlRGVza3RvcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBkZXNrdG9wID0gbmV3IERlc2t0b3AoKTtcclxuICAgIHJldHVybiBkZXNrdG9wO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBAdHJ1LmRlc2t0b3AuZG9jIGNsYXNzXHJcbiAqIEBuYW1lIERlc2t0b3BTZXJ2aWNlLkRlc2t0b3BcclxuICogQG1vZHVsZSB0cnUuZGVza3RvcFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb24gRGVza3RvcCBkZWZpbmVzIGEgbG9naWNhbCBkZXNrdG9wLiAgQW55IG5vbi1kb20gcHJvcGVydGllcyBhbmQgZWxlbWVudHMgbmVlZGVkIGJ5IHRoZSBkZXNrdG9wIHNob3VsZFxyXG4gKiBiZSBkZWZpbmVkIGluIHRoaXMgY2xhc3NcclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEZXNrdG9wIHtcclxuICBvcHRpb25zID0gbmV3IERlc2t0b3BPcHRpb25zKCk7XHJcbiAgd2luZG93Q29uZmlnID0gbmV3IFdpbmRvd0NvbmZpZygpO1xyXG4gIHZpZXdDb25maWcgPSBuZXcgVmlld0NvbmZpZygpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEB0cnUuZGVza3RvcC5kb2MgY2xhc3NcclxuICogQG5hbWUgRGVza3RvcFNlcnZpY2UuRGVza3RvcE9wdGlvbnNcclxuICogQG1vZHVsZSB0cnUuZGVza3RvcFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCBEZXNrdG9wT3B0aW9ucyBjbGFzcy4gIERlc2t0b3BPcHRpb25zIGFyZSBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIG92ZXJsYWlkXHJcbiAqIG92ZXIgdGhpcyBvYmplY3QuXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVza3RvcE9wdGlvbnMge1xyXG4gIGFsbG93RGlydHlDbG9zZSA9IGZhbHNlO1xyXG4gIGFsbG93SW52YWxpZENsb3NlID0gZmFsc2U7XHJcbiAgY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbiA9IGZhbHNlO1xyXG4gIGNhbkNsb3NlRm4gPSB1bmRlZmluZWQ7XHJcbiAgY2FuTmF2aWdhdGVGbiA9IHVuZGVmaW5lZDtcclxuICBkaXNwbGF5Vmlld3BvcnREaW1lbnNpb25zID0gZmFsc2U7XHJcbiAgZW5hYmxlQW5pbWF0aW9uID0gdHJ1ZTtcclxuICBlbmFibGVXaW5kb3dDYXNjYWRpbmcgPSB0cnVlO1xyXG4gIGxvZ29VcmwgPSB1bmRlZmluZWQ7XHJcbiAgbWVudWJhckhlaWdodCA9IDMyO1xyXG4gIG1lbnViYXJDb25maWcgPSB1bmRlZmluZWQ7XHJcbiAgc2hvd0xhdW5jaE1lbnUgPSBmYWxzZTtcclxufTtcclxuXHJcblxyXG4vKipcclxuICogQHRydS5kZXNrdG9wLmRvYyBjbGFzc1xyXG4gKiBAbmFtZSBEZXNrdG9wU2VydmljZS5XaW5kb3dDb25maWdcclxuICogQG1vZHVsZSB0cnUuZGVza3RvcFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogRGVmYXVsdCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYSB3aW5kb3cuIHdpbmRvd0NvbmZpZyBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIG92ZXJsYWlkXHJcbiAqIG92ZXIgdGhpcyBvYmplY3QuXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgV2luZG93Q29uZmlnIHtcclxuICB0YWJsZU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHRhYmxlUGx1cmFsTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgdGFibGVQbHVyYWxMYWJlbDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGFjdGl2ZSA9IHRydWU7XHJcbiAgYm90dG9tID0gJ2F1dG8nO1xyXG4gIGdsb2JhbHMgPSB1bmRlZmluZWQ7XHJcbiAgaGVpZ2h0ID0gJzQwMHB4JztcclxuICBpc0RpcnR5ID0gZmFsc2U7XHJcbiAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgbGVmdCA9IDA7XHJcbiAgbWF4aW1pemVkID0gdW5kZWZpbmVkO1xyXG4gIG1pbkhlaWdodCA9ICcyMDBweCc7XHJcbiAgbWluaW1pemVkID0gZmFsc2U7XHJcbiAgbWluV2lkdGggPSAnMjAwcHgnO1xyXG4gIG91dE9mQm91bmRzID0gZmFsc2U7XHJcbiAgc2F2ZWRQb3NpdGlvbiA9IHt9O1xyXG4gIHJpZ2h0ID0gJ2F1dG8nO1xyXG4gIHNjb3BlID0gdW5kZWZpbmVkO1xyXG4gIHRpdGxlID0gJyc7XHJcbiAgdG9wID0gMDtcclxuICB3aWR0aCA9ICc0MDBweCc7XHJcbiAgdmlld3MgPSBBcnJheTxWaWV3Q29uZmlnPigpO1xyXG4gIHpJbmRleCA9IC0xO1xyXG4gIGlzUmVhZE9ubHkgPSBmYWxzZTtcclxuICB1bnN1YnNjcmliZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICB3YXNSZWFkT25seSA9IGZhbHNlO1xyXG4gIGNvbnRleHRGaWx0ZXJzOiBBcnJheTxUcnVDb250ZXh0RmlsdGVyPiA9IFtdO1xyXG5cclxuICBkZXN0cm95ID0gKCkgPT4ge1xyXG4gICAgd2hpbGUgKHRoaXMudW5zdWJzY3JpYmVzLmxlbmd0aCkgdGhpcz8udW5zdWJzY3JpYmVzPy5zaGlmdCgpPy5jYWxsKCk7XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEB0cnUuZGVza3RvcC5kb2MgY2xhc3NcclxuICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5WaWV3Q29uZmlnXHJcbiAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGEgdmlldy4gdmlld0NvbmZpZyBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIG92ZXJsYWlkXHJcbiAqIG92ZXIgdGhpcyBvYmplY3QuXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlld0NvbmZpZyB7XHJcbiAgYWN0aXZlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgb25BY3RpdmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBlbnRpdGllcyA9IHVuZGVmaW5lZDtcclxuICBlbnRpdHlJbmRleCA9IDA7XHJcbiAgaXNEaXJ0eSA9IGZhbHNlO1xyXG4gIGlzRWRpdGluZyA9IGZhbHNlO1xyXG4gIGlzSW52YWxpZCA9IGZhbHNlO1xyXG4gIGNvbXBvbmVudE5hbWUgPSB1bmRlZmluZWQ7XHJcbiAgd2luZG93Q29uZmlnID0gbnVsbDtcclxuICB3aW5kb3chOiBXaW5kb3dDb25maWc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxufTtcclxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS1kZXNrdG9wLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUF1QixNQUFNLE1BQU0sQ0FBQzs7QUFJNUQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVFOzs7Ozs7Ozs7V0FTRztRQUNJLGtCQUFhLEdBQUc7WUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM1QixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUE7S0FDRjs7OEdBZlksaUJBQWlCO2tIQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7QUFtQlg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUNFLFlBQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQUE7QUFBQSxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNFLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixrQkFBYSxHQUFHLFNBQVMsQ0FBQztRQUMxQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztDQUFBO0FBQUEsQ0FBQztBQUdGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ0UsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM3QixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFFOUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsWUFBTyxHQUFHLFNBQVMsQ0FBQztRQUNwQixXQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNuQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssRUFBYyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNaLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBZSxFQUFFLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsbUJBQWMsR0FBNEIsRUFBRSxDQUFDO1FBRTdDLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZFLENBQUMsQ0FBQTtJQUNILENBQUM7Q0FBQTtBQUFBLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUdyQixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBWUQ7UUFwQkEsWUFBTyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQVV2RSxhQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsU0FBUyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBR1QsQ0FBQztDQUNqQjtBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVDb250ZXh0RmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90cnUtY29udGV4dC1maWx0ZXInO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1RGVza3RvcFNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXHJcbiAgICogQG5hbWUgRGVza3RvcFNlcnZpY2UuY3JlYXRlRGVza3RvcFxyXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIENyZWF0ZXMgYSBuZXcgZGVza3RvcCBpbnN0YW5jZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IERlc2t0b3BcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlRGVza3RvcCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBkZXNrdG9wID0gbmV3IERlc2t0b3AoKTtcclxuICAgIHJldHVybiBkZXNrdG9wO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBAdHJ1LmRlc2t0b3AuZG9jIGNsYXNzXHJcbiAqIEBuYW1lIERlc2t0b3BTZXJ2aWNlLkRlc2t0b3BcclxuICogQG1vZHVsZSB0cnUuZGVza3RvcFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb24gRGVza3RvcCBkZWZpbmVzIGEgbG9naWNhbCBkZXNrdG9wLiAgQW55IG5vbi1kb20gcHJvcGVydGllcyBhbmQgZWxlbWVudHMgbmVlZGVkIGJ5IHRoZSBkZXNrdG9wIHNob3VsZFxyXG4gKiBiZSBkZWZpbmVkIGluIHRoaXMgY2xhc3NcclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEZXNrdG9wIHtcclxuICBvcHRpb25zID0gbmV3IERlc2t0b3BPcHRpb25zKCk7XHJcbiAgd2luZG93Q29uZmlnID0gbmV3IFdpbmRvd0NvbmZpZygpO1xyXG4gIHZpZXdDb25maWcgPSBuZXcgVmlld0NvbmZpZygpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEB0cnUuZGVza3RvcC5kb2MgY2xhc3NcclxuICogQG5hbWUgRGVza3RvcFNlcnZpY2UuRGVza3RvcE9wdGlvbnNcclxuICogQG1vZHVsZSB0cnUuZGVza3RvcFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCBEZXNrdG9wT3B0aW9ucyBjbGFzcy4gIERlc2t0b3BPcHRpb25zIGFyZSBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIG92ZXJsYWlkXHJcbiAqIG92ZXIgdGhpcyBvYmplY3QuXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVza3RvcE9wdGlvbnMge1xyXG4gIGFsbG93RGlydHlDbG9zZSA9IGZhbHNlO1xyXG4gIGFsbG93SW52YWxpZENsb3NlID0gZmFsc2U7XHJcbiAgY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbiA9IGZhbHNlO1xyXG4gIGNhbkNsb3NlRm4gPSB1bmRlZmluZWQ7XHJcbiAgY2FuTmF2aWdhdGVGbiA9IHVuZGVmaW5lZDtcclxuICBkaXNwbGF5Vmlld3BvcnREaW1lbnNpb25zID0gZmFsc2U7XHJcbiAgZW5hYmxlQW5pbWF0aW9uID0gdHJ1ZTtcclxuICBlbmFibGVXaW5kb3dDYXNjYWRpbmcgPSB0cnVlO1xyXG4gIGxvZ29VcmwgPSB1bmRlZmluZWQ7XHJcbiAgbWVudWJhckhlaWdodCA9IDMyO1xyXG4gIG1lbnViYXJDb25maWcgPSB1bmRlZmluZWQ7XHJcbiAgc2hvd0xhdW5jaE1lbnUgPSBmYWxzZTtcclxufTtcclxuXHJcblxyXG4vKipcclxuICogQHRydS5kZXNrdG9wLmRvYyBjbGFzc1xyXG4gKiBAbmFtZSBEZXNrdG9wU2VydmljZS5XaW5kb3dDb25maWdcclxuICogQG1vZHVsZSB0cnUuZGVza3RvcFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogRGVmYXVsdCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYSB3aW5kb3cuIHdpbmRvd0NvbmZpZyBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIG92ZXJsYWlkXHJcbiAqIG92ZXIgdGhpcyBvYmplY3QuXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgV2luZG93Q29uZmlnIHtcclxuICB0YWJsZU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHRhYmxlUGx1cmFsTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgdGFibGVQbHVyYWxMYWJlbDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGFjdGl2ZSA9IHRydWU7XHJcbiAgYm90dG9tID0gJ2F1dG8nO1xyXG4gIGdsb2JhbHMgPSB1bmRlZmluZWQ7XHJcbiAgaGVpZ2h0ID0gJzQwMHB4JztcclxuICBpc0RpcnR5ID0gZmFsc2U7XHJcbiAgaXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgbGVmdCA9IDA7XHJcbiAgbWF4aW1pemVkID0gdW5kZWZpbmVkO1xyXG4gIG1pbkhlaWdodCA9ICcyMDBweCc7XHJcbiAgbWluaW1pemVkID0gZmFsc2U7XHJcbiAgbWluV2lkdGggPSAnMjAwcHgnO1xyXG4gIG91dE9mQm91bmRzID0gZmFsc2U7XHJcbiAgc2F2ZWRQb3NpdGlvbiA9IHt9O1xyXG4gIHJpZ2h0ID0gJ2F1dG8nO1xyXG4gIHNjb3BlID0gdW5kZWZpbmVkO1xyXG4gIHRpdGxlID0gJyc7XHJcbiAgdG9wID0gMDtcclxuICB3aWR0aCA9ICc0MDBweCc7XHJcbiAgdmlld3MgPSBBcnJheTxWaWV3Q29uZmlnPigpO1xyXG4gIHpJbmRleCA9IC0xO1xyXG4gIGlzUmVhZE9ubHkgPSBmYWxzZTtcclxuICB1bnN1YnNjcmliZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICB3YXNSZWFkT25seSA9IGZhbHNlO1xyXG4gIGNvbnRleHRGaWx0ZXJzOiBBcnJheTxUcnVDb250ZXh0RmlsdGVyPiA9IFtdO1xyXG5cclxuICBkZXN0cm95ID0gKCkgPT4ge1xyXG4gICAgd2hpbGUgKHRoaXMudW5zdWJzY3JpYmVzLmxlbmd0aCkgdGhpcz8udW5zdWJzY3JpYmVzPy5zaGlmdCgpPy5jYWxsKCk7XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEB0cnUuZGVza3RvcC5kb2MgY2xhc3NcclxuICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5WaWV3Q29uZmlnXHJcbiAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGEgdmlldy4gdmlld0NvbmZpZyBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIG92ZXJsYWlkXHJcbiAqIG92ZXIgdGhpcyBvYmplY3QuXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmlld0NvbmZpZyB7XHJcbiAgYWN0aXZlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgb25BY3RpdmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBlbnRpdGllcyA9IHVuZGVmaW5lZDtcclxuICBlbnRpdHlJbmRleCA9IDA7XHJcbiAgaXNEaXJ0eSA9IGZhbHNlO1xyXG4gIGlzRWRpdGluZyA9IGZhbHNlO1xyXG4gIGlzSW52YWxpZCA9IGZhbHNlO1xyXG4gIGNvbXBvbmVudE5hbWUgPSB1bmRlZmluZWQ7XHJcbiAgd2luZG93Q29uZmlnID0gbnVsbDtcclxuICBvcGVuQXNEZXRhaVZpZXcgPSBmYWxzZTtcclxuICB3aW5kb3chOiBXaW5kb3dDb25maWc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxufTtcclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { TruDesktopService } from './services/tru-desktop-service';
2
+ import { TruDesktopService, ViewConfig } from './services/tru-desktop-service';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "./services/tru-desktop-service";
5
5
  import * as i2 from "./services/tru-window-event-handler";
@@ -221,7 +221,7 @@ export class TruDesktop {
221
221
  }
222
222
  this.clearActive();
223
223
  let configuredWindow = this.configureWindow(windowConfigOverlays);
224
- //configuredWindow.views = this.configureViews(windowConfigOverlays, configuredWindow);
224
+ configuredWindow.views = this.configureViews(windowConfigOverlays, configuredWindow);
225
225
  if (!configuredWindow.isModal) {
226
226
  configuredWindow.cascadeWindow = false;
227
227
  this.savePosition(configuredWindow);
@@ -260,9 +260,16 @@ export class TruDesktop {
260
260
  this.configureViews = (windowConfigOverlays, configuredWindow) => {
261
261
  let configuredViews = [];
262
262
  windowConfigOverlays.views.forEach((view) => {
263
- let viewConfigInstance = Object.assign({}, this.desktop.viewConfig);
263
+ let configuredView = new ViewConfig();
264
+ configuredView.componentName = view.componentName;
265
+ configuredView.entities = view.entities;
266
+ configuredView.entityIndex = view.entityIndex;
267
+ configuredView.isDirty = view.isDirty;
268
+ configuredView.isEditing = view.isEditing;
269
+ configuredView.isInvalid = view.isValid;
270
+ configuredView.openAsDetaiView = view.openAsDetailView;
264
271
  //viewConfigInstance.globals = this.options.globals;
265
- let configuredView = Object.assign(viewConfigInstance, view);
272
+ //let configuredView = Object.assign(viewConfigInstance, view);
266
273
  configuredView.window = configuredWindow;
267
274
  configuredViews.push(configuredView);
268
275
  });
@@ -700,4 +707,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
700
707
  }], ctorParameters: function () { return [{ type: i1.TruDesktopService }, { type: i2.TruWindowEventHandler }]; }, propDecorators: { options: [{
701
708
  type: Input
702
709
  }] } });
703
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3RydS1kZXNrdG9wLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBUS9FLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1UsY0FBaUMsRUFDakMscUJBQTRDO1FBRDVDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBR3RELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUM5Qiw2QkFBd0IsR0FBRyxHQUFHLENBQUM7UUFDL0IsOEJBQXlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN4RyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFP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L2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEFyZ3MgfSBmcm9tICcuL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtYXJncyc7XHJcbmltcG9ydCB7IFRydVdpbmRvd0V2ZW50SGFuZGxlciB9IGZyb20gJy4vc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcbmltcG9ydCB7IFRydURlc2t0b3BTZXJ2aWNlLCBWaWV3Q29uZmlnIH0gZnJvbSAnLi9zZXJ2aWNlcy90cnUtZGVza3RvcC1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHJ1LWRlc2t0b3AnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRlc2t0b3AuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RydS1kZXNrdG9wLmNzcyddLFxuICBwcm92aWRlcnM6IFtUcnVEZXNrdG9wU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVHJ1RGVza3RvcCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlc2t0b3BTZXJ2aWNlOiBUcnVEZXNrdG9wU2VydmljZSxcbiAgICBwcml2YXRlIHRydVdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyKSB7XG4gIH1cclxuXG4gIG1pbmltaXplQWxsID0gZmFsc2U7XG4gIGRlc2t0b3AgPSB0aGlzLmRlc2t0b3BTZXJ2aWNlLmNyZWF0ZURlc2t0b3AoKTtcbiAgbWluV2luZG93Q2FzY2FkZVBvc2l0aW9uID0gNDA7XG4gIG1heFdpbmRvd0Nhc2NhZGVQb3NpdGlvbiA9IDEwMDtcbiAgbGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbiA9IHsgdG9wOiB0aGlzLm1pbldpbmRvd0Nhc2NhZGVQb3NpdGlvbiwgbGVmdDogdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb24gfTtcbiAgc2hpZnRQcmVzc2VkID0gZmFsc2U7XG4gIGFsdFByZXNzZWQgPSBmYWxzZTtcbiAgeFByZXNzZWQgPSBmYWxzZTtcbiAga2V5Ym9hcmRNYXAgPSBbXCJcIiwgXCJcIiwgXCJcIiwgXCJDQU5DRUxcIiwgXCJcIiwgXCJcIiwgXCJIRUxQXCIsIFwiXCIsIFwiQkFDS19TUEFDRVwiLCBcIlRBQlwiLCBcIlwiLCBcIlwiLCBcIkNMRUFSXCIsIFwiRU5URVJcIiwgXCJSRVRVUk5cIiwgXCJcIiwgXCJTSElGVFwiLCBcIkNPTlRST0xcIiwgXCJBTFRcIiwgXCJQQVVTRVwiLCBcIkNBUFNfTE9DS1wiLCBcIktBTkFcIiwgXCJFSVNVXCIsIFwiSlVOSkFcIiwgXCJGSU5BTFwiLCBcIkhBTkpBXCIsIFwiXCIsIFwiRVNDQVBFXCIsIFwiQ09OVkVSVFwiLCBcIk5PTkNPTlZFUlRcIiwgXCJBQ0NFUFRcIiwgXCJNT0RFQ0hBTkdFXCIsIFwiU1BBQ0VcIiwgXCJQQUdFX1VQXCIsIFwiUEFHRV9ET1dOXCIsIFwiRU5EXCIsIFwiSE9NRVwiLCBcIkxFRlRcIiwgXCJVUFwiLCBcIlJJR0hUXCIsIFwiRE9XTlwiLCBcIlNFTEVDVFwiLCBcIlBSSU5UXCIsIFwiRVhFQ1VURVwiLCBcIlBSSU5UU0NSRUVOXCIsIFwiSU5TRVJUXCIsIFwiREVMRVRFXCIsIFwiXCIsIFwiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIiwgXCI4XCIsIFwiOVwiLCBcIkNPTE9OXCIsIFwiU0VNSUNPTE9OXCIsIFwiTEVTU19USEFOXCIsIFwiRVFVQUxTXCIsIFwiR1JFQVRFUl9USEFOXCIsIFwiUVVFU1RJT05fTUFSS1wiLCBcIkFUXCIsIFwiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLCBcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIiwgXCJXSU5cIiwgXCJcIiwgXCJDT05URVhUX01FTlVcIiwgXCJcIiwgXCJTTEVFUFwiLCBcIk5VTVBBRDBcIiwgXCJOVU1QQUQxXCIsIFwiTlVNUEFEMlwiLCBcIk5VTVBBRDNcIiwgXCJOVU1QQUQ0XCIsIFwiTlVNUEFENVwiLCBcIk5VTVBBRDZcIiwgXCJOVU1QQUQ3XCIsIFwiTlVNUEFEOFwiLCBcIk5VTVBBRDlcIiwgXCJNVUxUSVBMWVwiLCBcIkFERFwiLCBcIlNFUEFSQVRPUlwiLCBcIlNVQlRSQUNUXCIsIFwiREVDSU1BTFwiLCBcIkRJVklERVwiLCBcIkYxXCIsIFwiRjJcIiwgXCJGM1wiLCBcIkY0XCIsIFwiRjVcIiwgXCJGNlwiLCBcIkY3XCIsIFwiRjhcIiwgXCJGOVwiLCBcIkYxMFwiLCBcIkYxMVwiLCBcIkYxMlwiLCBcIkYxM1wiLCBcIkYxNFwiLCBcIkYxNVwiLCBcIkYxNlwiLCBcIkYxN1wiLCBcIkYxOFwiLCBcIkYxOVwiLCBcIkYyMFwiLCBcIkYyMVwiLCBcIkYyMlwiLCBcIkYyM1wiLCBcIkYyNFwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIk5VTV9MT0NLXCIsIFwiU0NST0xMX0xPQ0tcIiwgXCJXSU5fT0VNX0ZKX0pJU0hPXCIsIFwiV0lOX09FTV9GSl9NQVNTSE9VXCIsIFwiV0lOX09FTV9GSl9UT1VST0tVXCIsIFwiV0lOX09FTV9GSl9MT1lBXCIsIFwiV0lOX09FTV9GSl9ST1lBXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiQ0lSQ1VNRkxFWFwiLCBcIkVYQ0xBTUFUSU9OXCIsIFwiRE9VQkxFX1FVT1RFXCIsIFwiSEFTSFwiLCBcIkRPTExBUlwiLCBcIlBFUkNFTlRcIiwgXCJBTVBFUlNBTkRcIiwgXCJVTkRFUlNDT1JFXCIsIFwiT1BFTl9QQVJFTlwiLCBcIkNMT1NFX1BBUkVOXCIsIFwiQVNURVJJU0tcIiwgXCJQTFVTXCIsIFwiUElQRVwiLCBcIkhZUEhFTl9NSU5VU1wiLCBcIk9QRU5fQ1VSTFlfQlJBQ0tFVFwiLCBcIkNMT1NFX0NVUkxZX0JSQUNLRVRcIiwgXCJUSUxERVwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlZPTFVNRV9NVVRFXCIsIFwiVk9MVU1FX0RPV05cIiwgXCJWT0xVTUVfVVBcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJDT01NQVwiLCBcIlwiLCBcIlBFUklPRFwiLCBcIlNMQVNIXCIsIFwiQkFDS19RVU9URVwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIk9QRU5fQlJBQ0tFVFwiLCBcIkJBQ0tfU0xBU0hcIiwgXCJDTE9TRV9CUkFDS0VUXCIsIFwiUVVPVEVcIiwgXCJcIiwgXCJNRVRBXCIsIFwiQUxUR1JcIiwgXCJcIiwgXCJXSU5fSUNPX0hFTFBcIiwgXCJXSU5fSUNPXzAwXCIsIFwiXCIsIFwiV0lOX0lDT19DTEVBUlwiLCBcIlwiLCBcIlwiLCBcIldJTl9PRU1fUkVTRVRcIiwgXCJXSU5fT0VNX0pVTVBcIiwgXCJXSU5fT0VNX1BBMVwiLCBcIldJTl9PRU1fUEEyXCIsIFwiV0lOX09FTV9QQTNcIiwgXCJXSU5fT0VNX1dTQ1RSTFwiLCBcIldJTl9PRU1fQ1VTRUxcIiwgXCJXSU5fT0VNX0FUVE5cIiwgXCJXSU5fT0VNX0ZJTklTSFwiLCBcIldJTl9PRU1fQ09QWVwiLCBcIldJTl9PRU1fQVVUT1wiLCBcIldJTl9PRU1fRU5MV1wiLCBcIldJTl9PRU1fQkFDS1RBQlwiLCBcIkFUVE5cIiwgXCJDUlNFTFwiLCBcIkVYU0VMXCIsIFwiRVJFT0ZcIiwgXCJQTEFZXCIsIFwiWk9PTVwiLCBcIlwiLCBcIlBBMVwiLCBcIldJTl9PRU1fQ0xFQVJcIiwgXCJcIl07XG4gIGxvZ29VcmwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldERlc2t0b3BcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJuIGFuIG9iamVjdCBvZiBkZXNrdG9wLlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBkZXNrdG9wLlxuICAgKi9cbiAgZ2V0RGVza3RvcCA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kZXNrdG9wO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldE9wdGlvbnNcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJuIGFuIG9iamVjdCBvZiBkZXNrdG9wIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IG9wdGlvbnMuXG4gICAqL1xuICBnZXRPcHRpb25zID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZ2V0V2luZG93c1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygd2luZG93cy5cbiAgICpcbiAgICogQHJldHVybnMge2FycmF5fSB3aW5kb3dzLlxuICAgKi9cbiAgZ2V0V2luZG93cyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3dzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldE5leHRNYXhaSW5kZXhcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwgd2luZG93IG9iamVjdHMgaW4gdGhlIHdpbmRvd3MgYXJyYXkgdG8gZmluZCB0aGUgbWF4IHotaW5kZXhcbiAgICogYW5kIGluY3JlYXNlcyB0aGUgdmFsdWUgZm91bmQgYnkgMS5cbiAgICpcbiAgICogQHJldHVybnMge2ludH1cbiAgICovXG4gIGdldE5leHRNYXhaSW5kZXggPSAoKSA9PiB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgdmFyIHRtcDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy53aW5kb3dzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0bXAgPSB0aGlzLndpbmRvd3NbaV0uekluZGV4O1xuICAgICAgaWYgKHRtcCA+IG1heCkgbWF4ID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gKyttYXg7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY2xlYXJBY3RpdmVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwgd2luZG93IG9iamVjdHMgaW4gdGhlIHdpbmRvd3NcbiAgICogYW5kIHNldHMgdGhlIGFjdGl2ZSBwcm9wZXJ0eSB0byBmYWxzZS5cbiAgICpcbiAgICovXG4gIGNsZWFyQWN0aXZlID0gKCkgPT4ge1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3aW5kb3c6IGFueSkgPT4ge1xuICAgICAgd2luZG93LmFjdGl2ZSA9IGZhbHNlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldEFjdGl2ZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZXRzIHRoZSBhY3RpdmUgd2luZG93LlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSB2aWV3IG9iamVjdC5cbiAgICovXG4gIGdldEFjdGl2ZVdpbmRvdyA9ICgpOiBhbnkgPT4ge1xuICAgIHZhciBhY3RpdmVXaW5kb3cgPSBudWxsO1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3ZHc6IGFueSkgPT4ge1xuICAgICAgaWYgKHdkdy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgICAgYWN0aXZlV2luZG93ID0gd2R3O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY3RpdmVXaW5kb3c7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZ2V0QWN0aXZlVmlld1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZXRzIHRoZSBhY3RpdmUgdmlldy5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gdmlldyBvYmplY3QuXG4gICAqL1xuICBnZXRBY3RpdmVWaWV3ID0gKHdkdzogYW55KSA9PiB7XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSBudWxsO1xuICAgIHdkdy52aWV3cy5mb3JFYWNoKCh2aWV3OiBhbnkpID0+IHtcbiAgICAgIGlmICh2aWV3LmFjdGl2ZSQuZ2V0VmFsdWUoKSA9PT0gdHJ1ZSkge1xuICAgICAgICBhY3RpdmVWaWV3ID0gdmlldztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlVmlldztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5hbGxXaW5kb3dzQXJlTWluaW1pemVkXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyB0byBkZXRlcm1pbmUgaWYgYWxsIGFyZSBtaW5pbWl6ZWQuXG4gICAqXG4gICAqL1xuICBhbGxXaW5kb3dzQXJlTWluaW1pemVkID0gKCkgPT4ge1xuICAgIHZhciBhbGxNaW5pbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3aW5kb3c6IGFueSkgPT4ge1xuICAgICAgaWYgKCF3aW5kb3cubWluaW1pemVkKSB7XG4gICAgICAgIGFsbE1pbmltaXplZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbGxNaW5pbWl6ZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuaGlkZVNob3dBbGxcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSGlkZXMvc2hvd3MgYWxsIHdpbmRvd3NcbiAgICpcbiAgICovXG4gIGhpZGVTaG93QWxsID0gKCkgPT4ge1xuICAgIHRoaXMubWluaW1pemVBbGwgPSB0aGlzLmFsbFdpbmRvd3NBcmVNaW5pbWl6ZWQoKSA/IGZhbHNlIDogIXRoaXMubWluaW1pemVBbGw7XG4gICAgdGhpcy53aW5kb3dzLmZvckVhY2goKHdkdzogYW55KSA9PiB7XG4gICAgICBpZiAod2R3Lm91dE9mQm91bmRzKSB0aGlzLnJlY292ZXIod2R3KTtcbiAgICAgIHdkdy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHdkdy5taW5pbWl6ZWQgPSB0aGlzLm1pbmltaXplQWxsO1xuICAgIH0pO1xuICAgIHRoaXMuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICAgIHJldHVybiB0aGlzLm1pbmltaXplQWxsO1xuICB9O1xuXG4gIC8qKlxyXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXHJcbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5maW5kV2luZG93Vmlld0RpcmVjdGl2ZVxyXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIExvb2tzIGZvciBwcmV2aW91c2x5IG9wZW4gd2luZG93IHdpdGggYSB2aWV3IGRpcmVjdGl2ZVxyXG4gICAqXHJcbiAgICovXHJcbiAgZmluZFdpbmRvd1ZpZXdEaXJlY3RpdmUgPSAod2luZG93Vmlld0RpcmVjdGl2ZTogYW55KSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMud2luZG93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMud2luZG93c1tpXS52aWV3cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmICh0aGlzLndpbmRvd3NbaV0udmlld3NbMF0udmlld0RpcmVjdGl2ZSA9PT0gd2luZG93Vmlld0RpcmVjdGl2ZSlcclxuICAgICAgICAgIHJldHVybiB0aGlzLndpbmRvd3NbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQub3BlbldpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNwbGF5cyBhIG5ldyB3aW5kb3cuIEFsbCB3aW5kb3cgcHJvcGVydGllcyBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgd2lsbCBiZVxuICAgKiBvdmVybGFpZCBoZXJlIGJlZm9yZSBkaXNwbGF5aW5nIHRoZSB3aW5kb3dcbiAgICpcbiAgICovXG4gIG9wZW5XaW5kb3cgPSAod2luZG93Q29uZmlnT3ZlcmxheXM6IGFueSwgc2luZ2xlSW5zdGFuY2U6IGFueSkgPT4ge1xuICAgIGxldCBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xyXG4gICAgaWYgKGFjdGl2ZVdpbmRvdyAmJiBhY3RpdmVXaW5kb3cuaXNNb2RhbCkge1xyXG4gICAgICBhY3RpdmVXaW5kb3cuaW52YWxpZE9wZXJhdGlvbiA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2luZ2xlSW5zdGFuY2UpIHtcclxuICAgICAgbGV0IHdpbmRvdyA9IHRoaXMuZmluZFdpbmRvd1ZpZXdEaXJlY3RpdmUod2luZG93Q29uZmlnT3ZlcmxheXMudmlld3NbMF0udmlld0RpcmVjdGl2ZSk7XHJcbiAgICAgIGlmICh3aW5kb3cpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVdpbmRvd1N0YXRlKHdpbmRvdyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd0NvbmZpZ092ZXJsYXlzLmlzTW9kYWwpIHtcclxuICAgICAgbGV0IGhlaWdodE9mZnNldCA9IChwYXJzZUludCh3aW5kb3dDb25maWdPdmVybGF5cy5oZWlnaHQsIDEwKSAvIDIpICsgMzA7XHJcbiAgICAgIGxldCB3aWR0aE9mZnNldCA9IChwYXJzZUludCh3aW5kb3dDb25maWdPdmVybGF5cy53aWR0aCwgMTApIC8gMik7XHJcbiAgICAgIHdpbmRvd0NvbmZpZ092ZXJsYXlzLnRvcCA9ICdjYWxjKDUwJSAtICcgKyBoZWlnaHRPZmZzZXQgKyAncHggKSc7XHJcbiAgICAgIHdpbmRvd0NvbmZpZ092ZXJsYXlzLmxlZnQgPSAnY2FsYyg1MCUgLSAnICsgd2lkdGhPZmZzZXQgKyAncHggKSc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgbGV0IGNvbmZpZ3VyZWRXaW5kb3cgPSB0aGlzLmNvbmZpZ3VyZVdpbmRvdyh3aW5kb3dDb25maWdPdmVybGF5cyk7XHJcbiAgICAvL2NvbmZpZ3VyZWRXaW5kb3cudmlld3MgPSB0aGlzLmNvbmZpZ3VyZVZpZXdzKHdpbmRvd0NvbmZpZ092ZXJsYXlzLCBjb25maWd1cmVkV2luZG93KTtcclxuICAgIGlmICghY29uZmlndXJlZFdpbmRvdy5pc01vZGFsKSB7XHJcbiAgICAgIGNvbmZpZ3VyZWRXaW5kb3cuY2FzY2FkZVdpbmRvdyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNhdmVQb3NpdGlvbihjb25maWd1cmVkV2luZG93KTtcclxuICAgICAgdGhpcy5tYXhpbWl6ZShjb25maWd1cmVkV2luZG93KTtcclxuICAgICAgdGhpcy53aW5kb3dzLnB1c2goY29uZmlndXJlZFdpbmRvdyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndpbmRvd3MucHVzaChjb25maWd1cmVkV2luZG93KTtcclxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5jb25maWd1cmVXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ3JlYXRlcyBhIG5ldyB3aW5kb3cgaW5zdGFuY2UuXG4gICAqXG4gICAqL1xuICBjb25maWd1cmVXaW5kb3cgPSAod2luZG93Q29uZmlnT3ZlcmxheXM6IGFueSkgPT4ge1xuICAgIHZhciB3aW5kb3dDb25maWdJbnN0YW5jZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVza3RvcC53aW5kb3dDb25maWcpO1xuICAgIHdpbmRvd0NvbmZpZ0luc3RhbmNlLnNhdmVkUG9zaXRpb24gPSBPYmplY3QuY3JlYXRlKHsgdG9wOiAwLCBsZWZ0OiAwLCByaWdodDogMCwgYm90dG9tOiAwLCBoZWlnaHQ6IDAsIHdpZHRoOiAwIH0pO1xuICAgIHdpbmRvd0NvbmZpZ0luc3RhbmNlLnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgIC8vd2luZG93Q29uZmlnSW5zdGFuY2UuZ2xvYmFscyA9IE9iamVjdC5hc3NpZ24oe30sICRyb290U2NvcGUuJGV2YWwodGhpcy5vcHRpb25zLmdsb2JhbHMpKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih3aW5kb3dDb25maWdJbnN0YW5jZSwgd2luZG93Q29uZmlnT3ZlcmxheXMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmNvbmZpZ3VyZVZpZXdzXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENyZWF0ZXMgb25lIG9yIG1vcmUgdmlldyBpbnN0YW5jZXNcbiAgICpcbiAgICovXG4gIGNvbmZpZ3VyZVZpZXdzID0gKHdpbmRvd0NvbmZpZ092ZXJsYXlzOiBhbnksIGNvbmZpZ3VyZWRXaW5kb3c6IGFueSk6IEFycmF5PGFueT4gPT4ge1xuICAgIGxldCBjb25maWd1cmVkVmlld3M6IEFycmF5PGFueT4gPSBbXTtcbiAgICB3aW5kb3dDb25maWdPdmVybGF5cy52aWV3cy5mb3JFYWNoKCh2aWV3OiBhbnkpID0+IHtcbiAgICAgIGxldCB2aWV3Q29uZmlnSW5zdGFuY2UgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlc2t0b3Audmlld0NvbmZpZyk7XG4gICAgICAvL3ZpZXdDb25maWdJbnN0YW5jZS5nbG9iYWxzID0gdGhpcy5vcHRpb25zLmdsb2JhbHM7XG4gICAgICBsZXQgY29uZmlndXJlZFZpZXcgPSBPYmplY3QuYXNzaWduKHZpZXdDb25maWdJbnN0YW5jZSwgdmlldyk7XG4gICAgICBjb25maWd1cmVkVmlldy53aW5kb3cgPSBjb25maWd1cmVkV2luZG93O1xuICAgICAgY29uZmlndXJlZFZpZXdzLnB1c2goY29uZmlndXJlZFZpZXcpO1xuICAgIH0pO1xuICAgIHJldHVybiBjb25maWd1cmVkVmlld3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY2xvc2VXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlIGEgd2luZG93IHtvYmplY3R9IGZyb20gdGhlIHdpbmRvd3MgYXJyYXkuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSByZXR1cm5zIHRydWUgaWYgd2luZG93IHdhcyBjbG9zZWQsIGZhbHNlIGlmIG5vdCBjbG9zZWQuXG4gICAqL1xuICBjbG9zZVdpbmRvdyA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93RGlydHlDbG9zZSAmJiB3ZHcuaXNEaXJ0eSkge1xuICAgICAgYWxlcnQoXCJVbnNhdmVkIENoYW5nZXMuIFNhdmUgY2hhbmdlcyBiZWZvcmUgY2xvc2luZyB3aW5kb3cuXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93SW52YWxpZENsb3NlICYmIHdkdy5pc0ludmFsaWQpIHtcbiAgICAgIGFsZXJ0KFwiRGF0YSBpcyBpbnZhbGlkLiBDb3JyZWN0IEludmFsaWQgZGF0YSBiZWZvcmUgY2xvc2luZyB3aW5kb3cuXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2FuQ2xvc2VGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNhbkNsb3NlRm4od2R3KSkge1xuICAgICAgICB0aGlzLndpbmRvd3Muc3BsaWNlKHRoaXMud2luZG93cy5pbmRleE9mKHdkdyksIDEpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpbmRvd3Muc3BsaWNlKHRoaXMud2luZG93cy5pbmRleE9mKHdkdyksIDEpO1xuICAgICAgdGhpcy5hY3RpdmF0ZUZvcmVtb3N0V2luZG93KCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmFjdGl2YXRlRm9yZW1vc3RXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSBmb3JlbW9zdCB3aW5kb3cgdG8gYW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqL1xuICBhY3RpdmF0ZUZvcmVtb3N0V2luZG93ID0gKCkgPT4ge1xuICAgIHZhciBmb3JlbW9zdCA9IHVuZGVmaW5lZDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMud2luZG93cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKChmb3JlbW9zdCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMud2luZG93c1tpXS56SW5kZXggPiBmb3JlbW9zdC56SW5kZXgpICYmICF0aGlzLndpbmRvd3NbaV0ubWluaW1pemVkICYmICF0aGlzLndpbmRvd3NbaV0ub3V0T2ZCb3VuZHMpXG4gICAgICAgIGZvcmVtb3N0ID0gdGhpcy53aW5kb3dzW2ldO1xuICAgIH1cbiAgICBpZiAoZm9yZW1vc3QpXG4gICAgICBmb3JlbW9zdC5hY3RpdmUgPSB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmFjdGl2YXRlTmV4dFdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGhlIG5leHQgd2luZG93IHRvIGFuIGFjdGl2ZSBzdGF0ZVxuICAgKlxuICAgKi9cbiAgYWN0aXZhdGVOZXh0V2luZG93ID0gKGFjdGl2ZVdpbmRvd0xvY2F0aW9uOiBhbnkpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3dzLmxlbmd0aCA8PSAxKSByZXR1cm47XG4gICAgdmFyIGJhY2tlbmQgPSB0aGlzLndpbmRvd3Muc2xpY2UoYWN0aXZlV2luZG93TG9jYXRpb24pO1xuICAgIHZhciBmcm9udGVuZCA9IHRoaXMud2luZG93cy5zbGljZSgwLCBhY3RpdmVXaW5kb3dMb2NhdGlvbiAtIDEpO1xuICAgIHZhciBzb3J0ZWQgPSBiYWNrZW5kLmNvbmNhdChmcm9udGVuZCk7XG4gICAgdmFyIG5leHRXaW5kb3cgPSB1bmRlZmluZWQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3J0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghc29ydGVkW2ldLm1pbmltaXplZCAmJiAhc29ydGVkW2ldLm91dE9mQm91bmRzICYmICFuZXh0V2luZG93KVxuICAgICAgICBuZXh0V2luZG93ID0gc29ydGVkW2ldO1xuICAgIH1cblxuICAgIGlmIChuZXh0V2luZG93KSB7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgICBuZXh0V2luZG93LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgICAgbmV4dFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5hY3RpdmF0ZVByZXZpb3VzV2luZG93XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldCB0aGUgcHJldmlvdXMgd2luZG93IHRvIGFuIGFjdGl2ZSBzdGF0ZVxuICAgKlxuICAgKi9cbiAgYWN0aXZhdGVQcmV2aW91c1dpbmRvdyA9IChhY3RpdmVXaW5kb3dMb2NhdGlvbjogYW55KSA9PiB7XG4gICAgaWYgKHRoaXMud2luZG93cy5sZW5ndGggPD0gMSkgcmV0dXJuO1xuICAgIHZhciBiYWNrZW5kID0gdGhpcy53aW5kb3dzLnNsaWNlKGFjdGl2ZVdpbmRvd0xvY2F0aW9uKTtcbiAgICB2YXIgZnJvbnRlbmQgPSB0aGlzLndpbmRvd3Muc2xpY2UoMCwgYWN0aXZlV2luZG93TG9jYXRpb24gLSAxKTtcbiAgICB2YXIgc29ydGVkID0gYmFja2VuZC5jb25jYXQoZnJvbnRlbmQpO1xuICAgIHZhciBuZXh0V2luZG93ID0gdW5kZWZpbmVkO1xuICAgIGZvciAodmFyIGkgPSBzb3J0ZWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICghc29ydGVkW2ldLm1pbmltaXplZCAmJiAhc29ydGVkW2ldLm91dE9mQm91bmRzICYmICFuZXh0V2luZG93KVxuICAgICAgICBuZXh0V2luZG93ID0gc29ydGVkW2ldO1xuICAgIH1cblxuICAgIGlmIChuZXh0V2luZG93KSB7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgICBuZXh0V2luZG93LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgICAgbmV4dFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5taW5pbWl6ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBWaXN1YWxseSByZW1vdmVzIHdpbmRvdyBmcm9tIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1pbmltaXplID0gKHdpbmRvdzogYW55KSA9PiB7XG4gICAgdGhpcy5zYXZlUG9zaXRpb24od2luZG93KTtcblxuICAgIHdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICB3aW5kb3cubWluaW1pemVkID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5tYXhpbWl6ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQb3NpdGlvbnMgd2luZG93IHN1Y2ggdGhhdCBpdCBmaWxscyB0aGUgd2hvbGUgdmlld3BvcnQuXG4gICAqXG4gICAqL1xuICBtYXhpbWl6ZSA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIHdpbmRvdy50b3AgPSAwO1xuICAgIHdpbmRvdy5sZWZ0ID0gMDtcbiAgICB3aW5kb3cucmlnaHQgPSAwO1xuICAgIHdpbmRvdy5ib3R0b20gPSAwO1xuICAgIHdpbmRvdy5oZWlnaHQgPSAnYXV0byc7XG4gICAgd2luZG93LndpZHRoID0gJzEwMCUnO1xuICAgIHdpbmRvdy5tYXhpbWl6ZWQgPSAnZmlsbCc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQubWF4aW1pemVMZWZ0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFBvc2l0aW9ucyB3aW5kb3cgc3VjaCB0aGF0IGl0IGZpbGxzIHRoZSBsZWZ0IHBvcnRpb24gdmlld3BvcnQuXG4gICAqXG4gICAqL1xuICBtYXhpbWl6ZUxlZnQgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB3aW5kb3cuc3BsaXQgPSB0cnVlO1xuICAgIHdpbmRvdy50b3AgPSAwO1xuICAgIHdpbmRvdy5sZWZ0ID0gMDtcbiAgICB3aW5kb3cuYm90dG9tID0gMDtcbiAgICB3aW5kb3cud2lkdGggPSAnNTAlJztcbiAgICB3aW5kb3cuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgIHdpbmRvdy5tYXhpbWl6ZWQgPSAnbGVmdCc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQubWF4aW1pemVSaWdodFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQb3NpdGlvbnMgd2luZG93IHN1Y2ggdGhhdCBpdCBmaWxscyB0aGUgcmlnaHQgcG9ydGlvbiB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1heGltaXplUmlnaHQgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB3aW5kb3cudG9wID0gMDtcbiAgICB3aW5kb3cubGVmdCA9ICc1MCUnO1xuICAgIHdpbmRvdy5yaWdodCA9IDA7XG4gICAgd2luZG93LmJvdHRvbSA9IDA7XG4gICAgd2luZG93LndpZHRoID0gJzUwJSc7XG4gICAgd2luZG93LmhlaWdodCA9ICdhdXRvJztcbiAgICB3aW5kb3cubWF4aW1pemVkID0gJ3JpZ2h0JztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5yZWNvdmVyXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJyaW5ncyB3aW5kb3cgYmFjayBpbnRvIHZpZXcgd2hlbiBpdCBoYXMgZXNjYXBlZCB0aGUgdmlld3BvcnQuXG4gICAqXG4gICAqL1xuICByZWNvdmVyID0gKHdpbmRvdzogYW55KSA9PiB7XG4gICAgd2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgd2luZG93Lm91dE9mQm91bmRzID0gZmFsc2U7XG4gICAgd2luZG93Lm1pbmltaXplZCA9IGZhbHNlO1xuICAgIHdpbmRvdy56SW5kZXggPSB0aGlzLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgICB0aGlzLmNhc2NhZGVXaW5kb3cod2luZG93KTtcbiAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgdGhpcy5hY3RpdmF0ZUZvcmVtb3N0V2luZG93KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQucmVzdG9yZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgcmVzdG9yZSA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIGlmICh3ZHcubWF4aW1pemVkID09PSAnZmlsbCcpIHtcbiAgICAgIHRoaXMubWF4aW1pemUod2R3KTtcbiAgICB9IGVsc2UgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdsZWZ0Jykge1xuICAgICAgdGhpcy5tYXhpbWl6ZUxlZnQod2R3KTtcbiAgICB9IGVsc2UgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdyaWdodCcpIHtcbiAgICAgIHRoaXMubWF4aW1pemVSaWdodCh3ZHcpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVdpbmRvd1N0YXRlKHdkdyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYnJpbmdUb0Zyb250XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICB1cGRhdGVXaW5kb3dTdGF0ZSA9ICh3ZHc6IGFueSkgPT4ge1xyXG4gICAgaWYgKHdkdy5vdXRPZkJvdW5kcykge1xyXG4gICAgICB0aGlzLnJlY292ZXIod2R3KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3ZHcubWF4aW1pemVkID09PSAnZmlsbCcpIHtcclxuICAgICAgdGhpcy5tYXhpbWl6ZSh3ZHcpO1xyXG4gICAgfSBlbHNlIGlmICh3ZHcubWF4aW1pemVkID09PSAnbGVmdCcpIHtcclxuICAgICAgdGhpcy5tYXhpbWl6ZUxlZnQod2R3KTtcclxuICAgIH0gZWxzZSBpZiAod2R3Lm1heGltaXplZCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICB0aGlzLm1heGltaXplUmlnaHQod2R3KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgIHdkdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgd2R3Lm1pbmltaXplZCA9IGZhbHNlO1xyXG4gICAgd2R3LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xyXG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQucmVzdG9yZVNhdmVkUG9zaXRpb25cbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSB3aW5kb3dzIGxhc3Qga25vdyBwb3NpdGlvbiB0byB0aGUgY3VycmVudCBwb3NpdGlvbi5cbiAgICpcbiAgICovXG4gIHJlc3RvcmVTYXZlZFBvc2l0aW9uID0gKHdkdzogYW55KSA9PiB7XG4gICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xuICAgIHdkdy50b3AgPSB3ZHcuc2F2ZWRQb3NpdGlvbi50b3A7XG4gICAgd2R3LmxlZnQgPSB3ZHcuc2F2ZWRQb3NpdGlvbi5sZWZ0O1xuICAgIHdkdy5yaWdodCA9IHdkdy5zYXZlZFBvc2l0aW9uLnJpZ2h0O1xuICAgIHdkdy5ib3R0b20gPSB3ZHcuc2F2ZWRQb3NpdGlvbi5ib3R0b207XG4gICAgd2R3LmhlaWdodCA9IHdkdy5zYXZlZFBvc2l0aW9uLmhlaWdodDtcbiAgICB3ZHcud2lkdGggPSB3ZHcuc2F2ZWRQb3NpdGlvbi53aWR0aDtcbiAgICB3ZHcubWF4aW1pemVkID0gdW5kZWZpbmVkO1xuICAgIHdkdy5taW5pbWl6ZWQgPSB1bmRlZmluZWQ7XG4gICAgd2R3LmFjdGl2ZSA9IHRydWU7XG4gICAgd2R3Lm1pbmltaXplZCA9IGZhbHNlO1xuICAgIHdkdy56SW5kZXggPSB0aGlzLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5zYXZlUG9zaXRpb25cbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2F2ZSB0aGUgd2luZG93cyBsYXN0IGtub3cgcG9zaXRpb24uXG4gICAqXG4gICAqL1xuICBzYXZlUG9zaXRpb24gPSAod2R3OiBhbnkpID0+IHtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi50b3AgPSB3ZHcudG9wO1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLmxlZnQgPSB3ZHcubGVmdDtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi5yaWdodCA9IHdkdy5yaWdodDtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi5ib3R0b20gPSB3ZHcuYm90dG9tO1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLmhlaWdodCA9IHdkdy5oZWlnaHQ7XG4gICAgd2R3LnNhdmVkUG9zaXRpb24ud2lkdGggPSB3ZHcud2lkdGg7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY2xvc2VXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW92ZXMgYSB3aW5kb3cgdG8gdGhlIG5leHQgY2FzY2FkZSBwb3NpdGlvbi5cbiAgICpcbiAgICovXG4gIGNhc2NhZGVXaW5kb3cgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5lbmFibGVXaW5kb3dDYXNjYWRpbmcgfHwgd2luZG93LmlzTW9kYWwpIHJldHVybjtcbiAgICB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24udG9wICs9IDEwO1xuICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi5sZWZ0ICs9IDEwO1xuICAgIGlmICh0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24udG9wID4gdGhpcy5tYXhXaW5kb3dDYXNjYWRlUG9zaXRpb24pXG4gICAgICB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24udG9wID0gdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb247XG4gICAgaWYgKHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi5sZWZ0ID4gdGhpcy5tYXhXaW5kb3dDYXNjYWRlUG9zaXRpb24pXG4gICAgICB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24ubGVmdCA9IHRoaXMubWluV2luZG93Q2FzY2FkZVBvc2l0aW9uO1xuXG4gICAgd2luZG93LnRvcCA9IHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgKyAncHgnO1xuICAgIHdpbmRvdy5sZWZ0ID0gdGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLmxlZnQgKyAncHgnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldEtleUNvZGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIGdldEtleVNlcXVlbmNlID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGlmIChldmVudC5zaGlmdEtleSkga2V5cy5wdXNoKCdzaGlmdCcpO1xuICAgIGlmIChldmVudC5jdHJsS2V5KSBrZXlzLnB1c2goJ2N0cmwnKTtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBrZXlzLnB1c2goJ2FsdCcpO1xuICAgIGlmIChldmVudC5tZXRhS2V5KSBrZXlzLnB1c2goJ21ldGEnKTtcblxuICAgIHZhciBrZXlDb2RlID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgICBpZiAoa2V5Q29kZSkga2V5cy5wdXNoKHRoaXMua2V5Ym9hcmRNYXBba2V5Q29kZV0udG9Mb3dlckNhc2UoKSk7XG5cbiAgICByZXR1cm4ga2V5cy5qb2luKCcrJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGV2ZW50XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBvbktleURvd24gPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHZhciBrZXlTZXF1ZW5jZSA9IHRoaXMuZ2V0S2V5U2VxdWVuY2UoZXZlbnQpO1xuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCttJykgeyAvL01heGltaXplXG4gICAgICB2YXIgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcbiAgICAgIGlmIChhY3RpdmVXaW5kb3cgPT09IG51bGwpIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlV2luZG93Lm1heGltaXplZCkge1xuICAgICAgICB0aGlzLnNhdmVQb3NpdGlvbihhY3RpdmVXaW5kb3cpO1xuICAgICAgICB0aGlzLm1heGltaXplKGFjdGl2ZVdpbmRvdyk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVdpbmRvdy5tYXhpbWl6ZWQgPT09ICdyaWdodCcgfHwgYWN0aXZlV2luZG93Lm1heGltaXplZCA9PT0gJ2xlZnQnKVxuICAgICAgICB0aGlzLm1heGltaXplKGFjdGl2ZVdpbmRvdyk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucmVzdG9yZVNhdmVkUG9zaXRpb24oYWN0aXZlV2luZG93KTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtuJykgeyAvL01pbmltaXplXG4gICAgICB2YXIgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcbiAgICAgIGlmIChhY3RpdmVXaW5kb3cgPT09IG51bGwgfHwgYWN0aXZlV2luZG93Lm1pbmltaXplZCkgcmV0dXJuO1xuICAgICAgdGhpcy5taW5pbWl6ZShhY3RpdmVXaW5kb3cpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K3cnKSB7IC8vQ3ljbGVzIEZvcndhcmRcbiAgICAgIHZhciBpbmRleCA9IHRoaXMud2luZG93cy5pbmRleE9mKHRoaXMuZ2V0QWN0aXZlV2luZG93KCkpO1xuICAgICAgdGhpcy5hY3RpdmF0ZU5leHRXaW5kb3coaW5kZXggKyAxKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ3NoaWZ0K2FsdCt3JykgeyAvL0N5Y2xlcyBCYWNrd2FyZFxuICAgICAgdmFyIGluZGV4ID0gdGhpcy53aW5kb3dzLmluZGV4T2YodGhpcy5nZXRBY3RpdmVXaW5kb3coKSk7XG4gICAgICB0aGlzLmFjdGl2YXRlUHJldmlvdXNXaW5kb3coaW5kZXggKyAxKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ3NoaWZ0K2FsdCt4JyAmJiAhKHRoaXMuc2hpZnRQcmVzc2VkICYmIHRoaXMuYWx0UHJlc3NlZCAmJiB0aGlzLnhQcmVzc2VkKSkgeyAvL0Nsb3NlXG4gICAgICB2YXIgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcbiAgICAgIGlmICghYWN0aXZlV2luZG93KSByZXR1cm47XG4gICAgICB0aGlzLmNsb3NlV2luZG93KGFjdGl2ZVdpbmRvdyk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrZCcpIHsgLy9Ub2dnbGUgRGVza3RvcFxuICAgICAgLy90aGlzLmRlc2t0b3BTaG93biA9IHRoaXMuaGlkZVNob3dBbGwoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSB0cnVlO1xuICAgIGlmIChldmVudC5hbHRLZXkpXG4gICAgICB0aGlzLmFsdFByZXNzZWQgPSB0cnVlO1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSA4OClcbiAgICAgIHRoaXMueFByZXNzZWQgPSB0cnVlO1xuICB9XG5cbiAgb25LZXlVcCA9IChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KVxuICAgICAgdGhpcy5hbHRQcmVzc2VkID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDg4KVxuICAgICAgdGhpcy54UHJlc3NlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuaGFuZGxlU2VsZWN0QXR0ZW1wdFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQcmV2ZW50cyB0aGUgdXNlciBmcm9tIGhpZ2hsaWdodCBkZXNrdG9wIGVsZW1lbnRzLlxuICAgKlxuICAgKi9cbiAgaGFuZGxlU2VsZWN0QXR0ZW1wdCA9IChlOiBhbnkpID0+IHtcbiAgICB2YXIgbm9kZU5hbWUgPSBlLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0JyB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBub2RlTmFtZSA9PT0gJ3NlbGVjdCcpIHJldHVybiB0cnVlO1xuICAgIGlmICh3aW5kb3cuZXZlbnQpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB3aW5kb3dzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ29VcmwgPSB0aGlzLm9wdGlvbnMubG9nb1VybDtcclxuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZXNrdG9wLm9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld3BvcnRUb3AgPSB0aGlzLm9wdGlvbnMubWVudWJhckNvbmZpZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5vcHRpb25zLm1lbnViYXJIZWlnaHQgKyAxIDogMDtcclxuICAgIHRoaXMudHJ1V2luZG93RXZlbnRIYW5kbGVyLm9uT3BlbigpLnN1YnNjcmliZSgod2luZGlvd0V2ZW50OiBUcnVXaW5kb3dFdmVudEFyZ3MpID0+IHtcclxuICAgICAgdGhpcy5vcGVuV2luZG93KHdpbmRpb3dFdmVudCwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gdGhpcy5oYW5kbGVTZWxlY3RBdHRlbXB0O1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uS2V5RG93bik7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uS2V5VXApO1xyXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25LZXlEb3duKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uS2V5VXApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGVza3RvcC13cmFwcGVyXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkZXNrdG9wLW1lbnViYXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydoZWlnaHQnOiBvcHRpb25zLm1lbnViYXJIZWlnaHQgKyAncHgnfVwiPlxyXG4gICAgPHRydS1kZXNrdG9wLW1lbnViYXIgW2Rlc2t0b3BDdHJsXT1cInRoaXNcIj48L3RydS1kZXNrdG9wLW1lbnViYXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0cnUtZGVza3RvcC12aWV3cG9ydCBbd2luZG93c109XCJ3aW5kb3dzXCIgW2Rlc2t0b3BDdHJsXT1cInRoaXNcIj48L3RydS1kZXNrdG9wLXZpZXdwb3J0PlxyXG5cclxuICA8dHJ1LWRlc2t0b3AtdGFza2JhciBbd2luZG93c109XCJ3aW5kb3dzXCIgW2Rlc2t0b3BDdHJsXT1cInRoaXNcIj48L3RydS1kZXNrdG9wLXRhc2tiYXI+XHJcblxyXG4gIDxpbWcgY2xhc3M9XCJkZXNrdG9wLXZpZXdwb3J0LWxvZ29cIiBkYXRhLW5nLXNob3c9XCJsb2dvVXJsXCIgYWx0PVwiXCI+XHJcbjwvZGl2PlxyXG4iXX0=
710
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3RydS1kZXNrdG9wLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7OztBQVEvRSxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUNVLGNBQWlDLEVBQ2pDLHFCQUE0QztRQUQ1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUd0RCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5Qyw2QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsNkJBQXdCLEdBQUcsR0FBRyxDQUFDO1FBQy9CLDhCQUF5QixHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDeEcsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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QUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7dUdBNXNCVSxVQUFVOzJGQUFWLFVBQVUsc0VBRlYsQ0FBQyxpQkFBaUIsQ0FBQywwQkNUaEMsc2dCQVlBOzJGRERhLFVBQVU7a0JBTnRCLFNBQVM7K0JBQ0UsYUFBYSxhQUdaLENBQUMsaUJBQWlCLENBQUM7NElBR3JCLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEFyZ3MgfSBmcm9tICcuL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtYXJncyc7XHJcbmltcG9ydCB7IFRydVdpbmRvd0V2ZW50SGFuZGxlciB9IGZyb20gJy4vc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcbmltcG9ydCB7IFRydURlc2t0b3BTZXJ2aWNlLCBWaWV3Q29uZmlnIH0gZnJvbSAnLi9zZXJ2aWNlcy90cnUtZGVza3RvcC1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHJ1LWRlc2t0b3AnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRlc2t0b3AuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RydS1kZXNrdG9wLmNzcyddLFxuICBwcm92aWRlcnM6IFtUcnVEZXNrdG9wU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVHJ1RGVza3RvcCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlc2t0b3BTZXJ2aWNlOiBUcnVEZXNrdG9wU2VydmljZSxcbiAgICBwcml2YXRlIHRydVdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyKSB7XG4gIH1cclxuXG4gIG1pbmltaXplQWxsID0gZmFsc2U7XG4gIGRlc2t0b3AgPSB0aGlzLmRlc2t0b3BTZXJ2aWNlLmNyZWF0ZURlc2t0b3AoKTtcbiAgbWluV2luZG93Q2FzY2FkZVBvc2l0aW9uID0gNDA7XG4gIG1heFdpbmRvd0Nhc2NhZGVQb3NpdGlvbiA9IDEwMDtcbiAgbGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbiA9IHsgdG9wOiB0aGlzLm1pbldpbmRvd0Nhc2NhZGVQb3NpdGlvbiwgbGVmdDogdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb24gfTtcbiAgc2hpZnRQcmVzc2VkID0gZmFsc2U7XG4gIGFsdFByZXNzZWQgPSBmYWxzZTtcbiAgeFByZXNzZWQgPSBmYWxzZTtcbiAga2V5Ym9hcmRNYXAgPSBbXCJcIiwgXCJcIiwgXCJcIiwgXCJDQU5DRUxcIiwgXCJcIiwgXCJcIiwgXCJIRUxQXCIsIFwiXCIsIFwiQkFDS19TUEFDRVwiLCBcIlRBQlwiLCBcIlwiLCBcIlwiLCBcIkNMRUFSXCIsIFwiRU5URVJcIiwgXCJSRVRVUk5cIiwgXCJcIiwgXCJTSElGVFwiLCBcIkNPTlRST0xcIiwgXCJBTFRcIiwgXCJQQVVTRVwiLCBcIkNBUFNfTE9DS1wiLCBcIktBTkFcIiwgXCJFSVNVXCIsIFwiSlVOSkFcIiwgXCJGSU5BTFwiLCBcIkhBTkpBXCIsIFwiXCIsIFwiRVNDQVBFXCIsIFwiQ09OVkVSVFwiLCBcIk5PTkNPTlZFUlRcIiwgXCJBQ0NFUFRcIiwgXCJNT0RFQ0hBTkdFXCIsIFwiU1BBQ0VcIiwgXCJQQUdFX1VQXCIsIFwiUEFHRV9ET1dOXCIsIFwiRU5EXCIsIFwiSE9NRVwiLCBcIkxFRlRcIiwgXCJVUFwiLCBcIlJJR0hUXCIsIFwiRE9XTlwiLCBcIlNFTEVDVFwiLCBcIlBSSU5UXCIsIFwiRVhFQ1VURVwiLCBcIlBSSU5UU0NSRUVOXCIsIFwiSU5TRVJUXCIsIFwiREVMRVRFXCIsIFwiXCIsIFwiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIiwgXCI4XCIsIFwiOVwiLCBcIkNPTE9OXCIsIFwiU0VNSUNPTE9OXCIsIFwiTEVTU19USEFOXCIsIFwiRVFVQUxTXCIsIFwiR1JFQVRFUl9USEFOXCIsIFwiUVVFU1RJT05fTUFSS1wiLCBcIkFUXCIsIFwiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLCBcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIiwgXCJXSU5cIiwgXCJcIiwgXCJDT05URVhUX01FTlVcIiwgXCJcIiwgXCJTTEVFUFwiLCBcIk5VTVBBRDBcIiwgXCJOVU1QQUQxXCIsIFwiTlVNUEFEMlwiLCBcIk5VTVBBRDNcIiwgXCJOVU1QQUQ0XCIsIFwiTlVNUEFENVwiLCBcIk5VTVBBRDZcIiwgXCJOVU1QQUQ3XCIsIFwiTlVNUEFEOFwiLCBcIk5VTVBBRDlcIiwgXCJNVUxUSVBMWVwiLCBcIkFERFwiLCBcIlNFUEFSQVRPUlwiLCBcIlNVQlRSQUNUXCIsIFwiREVDSU1BTFwiLCBcIkRJVklERVwiLCBcIkYxXCIsIFwiRjJcIiwgXCJGM1wiLCBcIkY0XCIsIFwiRjVcIiwgXCJGNlwiLCBcIkY3XCIsIFwiRjhcIiwgXCJGOVwiLCBcIkYxMFwiLCBcIkYxMVwiLCBcIkYxMlwiLCBcIkYxM1wiLCBcIkYxNFwiLCBcIkYxNVwiLCBcIkYxNlwiLCBcIkYxN1wiLCBcIkYxOFwiLCBcIkYxOVwiLCBcIkYyMFwiLCBcIkYyMVwiLCBcIkYyMlwiLCBcIkYyM1wiLCBcIkYyNFwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIk5VTV9MT0NLXCIsIFwiU0NST0xMX0xPQ0tcIiwgXCJXSU5fT0VNX0ZKX0pJU0hPXCIsIFwiV0lOX09FTV9GSl9NQVNTSE9VXCIsIFwiV0lOX09FTV9GSl9UT1VST0tVXCIsIFwiV0lOX09FTV9GSl9MT1lBXCIsIFwiV0lOX09FTV9GSl9ST1lBXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiQ0lSQ1VNRkxFWFwiLCBcIkVYQ0xBTUFUSU9OXCIsIFwiRE9VQkxFX1FVT1RFXCIsIFwiSEFTSFwiLCBcIkRPTExBUlwiLCBcIlBFUkNFTlRcIiwgXCJBTVBFUlNBTkRcIiwgXCJVTkRFUlNDT1JFXCIsIFwiT1BFTl9QQVJFTlwiLCBcIkNMT1NFX1BBUkVOXCIsIFwiQVNURVJJU0tcIiwgXCJQTFVTXCIsIFwiUElQRVwiLCBcIkhZUEhFTl9NSU5VU1wiLCBcIk9QRU5fQ1VSTFlfQlJBQ0tFVFwiLCBcIkNMT1NFX0NVUkxZX0JSQUNLRVRcIiwgXCJUSUxERVwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlZPTFVNRV9NVVRFXCIsIFwiVk9MVU1FX0RPV05cIiwgXCJWT0xVTUVfVVBcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJDT01NQVwiLCBcIlwiLCBcIlBFUklPRFwiLCBcIlNMQVNIXCIsIFwiQkFDS19RVU9URVwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIk9QRU5fQlJBQ0tFVFwiLCBcIkJBQ0tfU0xBU0hcIiwgXCJDTE9TRV9CUkFDS0VUXCIsIFwiUVVPVEVcIiwgXCJcIiwgXCJNRVRBXCIsIFwiQUxUR1JcIiwgXCJcIiwgXCJXSU5fSUNPX0hFTFBcIiwgXCJXSU5fSUNPXzAwXCIsIFwiXCIsIFwiV0lOX0lDT19DTEVBUlwiLCBcIlwiLCBcIlwiLCBcIldJTl9PRU1fUkVTRVRcIiwgXCJXSU5fT0VNX0pVTVBcIiwgXCJXSU5fT0VNX1BBMVwiLCBcIldJTl9PRU1fUEEyXCIsIFwiV0lOX09FTV9QQTNcIiwgXCJXSU5fT0VNX1dTQ1RSTFwiLCBcIldJTl9PRU1fQ1VTRUxcIiwgXCJXSU5fT0VNX0FUVE5cIiwgXCJXSU5fT0VNX0ZJTklTSFwiLCBcIldJTl9PRU1fQ09QWVwiLCBcIldJTl9PRU1fQVVUT1wiLCBcIldJTl9PRU1fRU5MV1wiLCBcIldJTl9PRU1fQkFDS1RBQlwiLCBcIkFUVE5cIiwgXCJDUlNFTFwiLCBcIkVYU0VMXCIsIFwiRVJFT0ZcIiwgXCJQTEFZXCIsIFwiWk9PTVwiLCBcIlwiLCBcIlBBMVwiLCBcIldJTl9PRU1fQ0xFQVJcIiwgXCJcIl07XG4gIGxvZ29VcmwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldERlc2t0b3BcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJuIGFuIG9iamVjdCBvZiBkZXNrdG9wLlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBkZXNrdG9wLlxuICAgKi9cbiAgZ2V0RGVza3RvcCA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kZXNrdG9wO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldE9wdGlvbnNcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJuIGFuIG9iamVjdCBvZiBkZXNrdG9wIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IG9wdGlvbnMuXG4gICAqL1xuICBnZXRPcHRpb25zID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZ2V0V2luZG93c1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygd2luZG93cy5cbiAgICpcbiAgICogQHJldHVybnMge2FycmF5fSB3aW5kb3dzLlxuICAgKi9cbiAgZ2V0V2luZG93cyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3dzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldE5leHRNYXhaSW5kZXhcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwgd2luZG93IG9iamVjdHMgaW4gdGhlIHdpbmRvd3MgYXJyYXkgdG8gZmluZCB0aGUgbWF4IHotaW5kZXhcbiAgICogYW5kIGluY3JlYXNlcyB0aGUgdmFsdWUgZm91bmQgYnkgMS5cbiAgICpcbiAgICogQHJldHVybnMge2ludH1cbiAgICovXG4gIGdldE5leHRNYXhaSW5kZXggPSAoKSA9PiB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgdmFyIHRtcDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy53aW5kb3dzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0bXAgPSB0aGlzLndpbmRvd3NbaV0uekluZGV4O1xuICAgICAgaWYgKHRtcCA+IG1heCkgbWF4ID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gKyttYXg7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY2xlYXJBY3RpdmVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwgd2luZG93IG9iamVjdHMgaW4gdGhlIHdpbmRvd3NcbiAgICogYW5kIHNldHMgdGhlIGFjdGl2ZSBwcm9wZXJ0eSB0byBmYWxzZS5cbiAgICpcbiAgICovXG4gIGNsZWFyQWN0aXZlID0gKCkgPT4ge1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3aW5kb3c6IGFueSkgPT4ge1xuICAgICAgd2luZG93LmFjdGl2ZSA9IGZhbHNlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldEFjdGl2ZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZXRzIHRoZSBhY3RpdmUgd2luZG93LlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSB2aWV3IG9iamVjdC5cbiAgICovXG4gIGdldEFjdGl2ZVdpbmRvdyA9ICgpOiBhbnkgPT4ge1xuICAgIHZhciBhY3RpdmVXaW5kb3cgPSBudWxsO1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3ZHc6IGFueSkgPT4ge1xuICAgICAgaWYgKHdkdy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgICAgYWN0aXZlV2luZG93ID0gd2R3O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY3RpdmVXaW5kb3c7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZ2V0QWN0aXZlVmlld1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZXRzIHRoZSBhY3RpdmUgdmlldy5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gdmlldyBvYmplY3QuXG4gICAqL1xuICBnZXRBY3RpdmVWaWV3ID0gKHdkdzogYW55KSA9PiB7XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSBudWxsO1xuICAgIHdkdy52aWV3cy5mb3JFYWNoKCh2aWV3OiBhbnkpID0+IHtcbiAgICAgIGlmICh2aWV3LmFjdGl2ZSQuZ2V0VmFsdWUoKSA9PT0gdHJ1ZSkge1xuICAgICAgICBhY3RpdmVWaWV3ID0gdmlldztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlVmlldztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5hbGxXaW5kb3dzQXJlTWluaW1pemVkXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyB0byBkZXRlcm1pbmUgaWYgYWxsIGFyZSBtaW5pbWl6ZWQuXG4gICAqXG4gICAqL1xuICBhbGxXaW5kb3dzQXJlTWluaW1pemVkID0gKCkgPT4ge1xuICAgIHZhciBhbGxNaW5pbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3aW5kb3c6IGFueSkgPT4ge1xuICAgICAgaWYgKCF3aW5kb3cubWluaW1pemVkKSB7XG4gICAgICAgIGFsbE1pbmltaXplZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbGxNaW5pbWl6ZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuaGlkZVNob3dBbGxcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSGlkZXMvc2hvd3MgYWxsIHdpbmRvd3NcbiAgICpcbiAgICovXG4gIGhpZGVTaG93QWxsID0gKCkgPT4ge1xuICAgIHRoaXMubWluaW1pemVBbGwgPSB0aGlzLmFsbFdpbmRvd3NBcmVNaW5pbWl6ZWQoKSA/IGZhbHNlIDogIXRoaXMubWluaW1pemVBbGw7XG4gICAgdGhpcy53aW5kb3dzLmZvckVhY2goKHdkdzogYW55KSA9PiB7XG4gICAgICBpZiAod2R3Lm91dE9mQm91bmRzKSB0aGlzLnJlY292ZXIod2R3KTtcbiAgICAgIHdkdy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHdkdy5taW5pbWl6ZWQgPSB0aGlzLm1pbmltaXplQWxsO1xuICAgIH0pO1xuICAgIHRoaXMuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICAgIHJldHVybiB0aGlzLm1pbmltaXplQWxsO1xuICB9O1xuXG4gIC8qKlxyXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXHJcbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5maW5kV2luZG93Vmlld0RpcmVjdGl2ZVxyXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIExvb2tzIGZvciBwcmV2aW91c2x5IG9wZW4gd2luZG93IHdpdGggYSB2aWV3IGRpcmVjdGl2ZVxyXG4gICAqXHJcbiAgICovXHJcbiAgZmluZFdpbmRvd1ZpZXdEaXJlY3RpdmUgPSAod2luZG93Vmlld0RpcmVjdGl2ZTogYW55KSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMud2luZG93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMud2luZG93c1tpXS52aWV3cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmICh0aGlzLndpbmRvd3NbaV0udmlld3NbMF0udmlld0RpcmVjdGl2ZSA9PT0gd2luZG93Vmlld0RpcmVjdGl2ZSlcclxuICAgICAgICAgIHJldHVybiB0aGlzLndpbmRvd3NbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQub3BlbldpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNwbGF5cyBhIG5ldyB3aW5kb3cuIEFsbCB3aW5kb3cgcHJvcGVydGllcyBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgd2lsbCBiZVxuICAgKiBvdmVybGFpZCBoZXJlIGJlZm9yZSBkaXNwbGF5aW5nIHRoZSB3aW5kb3dcbiAgICpcbiAgICovXG4gIG9wZW5XaW5kb3cgPSAod2luZG93Q29uZmlnT3ZlcmxheXM6IGFueSwgc2luZ2xlSW5zdGFuY2U6IGFueSkgPT4ge1xuICAgIGxldCBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xyXG4gICAgaWYgKGFjdGl2ZVdpbmRvdyAmJiBhY3RpdmVXaW5kb3cuaXNNb2RhbCkge1xyXG4gICAgICBhY3RpdmVXaW5kb3cuaW52YWxpZE9wZXJhdGlvbiA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2luZ2xlSW5zdGFuY2UpIHtcclxuICAgICAgbGV0IHdpbmRvdyA9IHRoaXMuZmluZFdpbmRvd1ZpZXdEaXJlY3RpdmUod2luZG93Q29uZmlnT3ZlcmxheXMudmlld3NbMF0udmlld0RpcmVjdGl2ZSk7XHJcbiAgICAgIGlmICh3aW5kb3cpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVdpbmRvd1N0YXRlKHdpbmRvdyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd0NvbmZpZ092ZXJsYXlzLmlzTW9kYWwpIHtcclxuICAgICAgbGV0IGhlaWdodE9mZnNldCA9IChwYXJzZUludCh3aW5kb3dDb25maWdPdmVybGF5cy5oZWlnaHQsIDEwKSAvIDIpICsgMzA7XHJcbiAgICAgIGxldCB3aWR0aE9mZnNldCA9IChwYXJzZUludCh3aW5kb3dDb25maWdPdmVybGF5cy53aWR0aCwgMTApIC8gMik7XHJcbiAgICAgIHdpbmRvd0NvbmZpZ092ZXJsYXlzLnRvcCA9ICdjYWxjKDUwJSAtICcgKyBoZWlnaHRPZmZzZXQgKyAncHggKSc7XHJcbiAgICAgIHdpbmRvd0NvbmZpZ092ZXJsYXlzLmxlZnQgPSAnY2FsYyg1MCUgLSAnICsgd2lkdGhPZmZzZXQgKyAncHggKSc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgbGV0IGNvbmZpZ3VyZWRXaW5kb3cgPSB0aGlzLmNvbmZpZ3VyZVdpbmRvdyh3aW5kb3dDb25maWdPdmVybGF5cyk7XHJcbiAgICBjb25maWd1cmVkV2luZG93LnZpZXdzID0gdGhpcy5jb25maWd1cmVWaWV3cyh3aW5kb3dDb25maWdPdmVybGF5cywgY29uZmlndXJlZFdpbmRvdyk7XHJcbiAgICBpZiAoIWNvbmZpZ3VyZWRXaW5kb3cuaXNNb2RhbCkge1xyXG4gICAgICBjb25maWd1cmVkV2luZG93LmNhc2NhZGVXaW5kb3cgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zYXZlUG9zaXRpb24oY29uZmlndXJlZFdpbmRvdyk7XHJcbiAgICAgIHRoaXMubWF4aW1pemUoY29uZmlndXJlZFdpbmRvdyk7XHJcbiAgICAgIHRoaXMud2luZG93cy5wdXNoKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53aW5kb3dzLnB1c2goY29uZmlndXJlZFdpbmRvdyk7XHJcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY29uZmlndXJlV2luZG93XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENyZWF0ZXMgYSBuZXcgd2luZG93IGluc3RhbmNlLlxuICAgKlxuICAgKi9cbiAgY29uZmlndXJlV2luZG93ID0gKHdpbmRvd0NvbmZpZ092ZXJsYXlzOiBhbnkpID0+IHtcbiAgICB2YXIgd2luZG93Q29uZmlnSW5zdGFuY2UgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlc2t0b3Aud2luZG93Q29uZmlnKTtcbiAgICB3aW5kb3dDb25maWdJbnN0YW5jZS5zYXZlZFBvc2l0aW9uID0gT2JqZWN0LmNyZWF0ZSh7IHRvcDogMCwgbGVmdDogMCwgcmlnaHQ6IDAsIGJvdHRvbTogMCwgaGVpZ2h0OiAwLCB3aWR0aDogMCB9KTtcbiAgICB3aW5kb3dDb25maWdJbnN0YW5jZS56SW5kZXggPSB0aGlzLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgICAvL3dpbmRvd0NvbmZpZ0luc3RhbmNlLmdsb2JhbHMgPSBPYmplY3QuYXNzaWduKHt9LCAkcm9vdFNjb3BlLiRldmFsKHRoaXMub3B0aW9ucy5nbG9iYWxzKSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24od2luZG93Q29uZmlnSW5zdGFuY2UsIHdpbmRvd0NvbmZpZ092ZXJsYXlzKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5jb25maWd1cmVWaWV3c1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIHZpZXcgaW5zdGFuY2VzXG4gICAqXG4gICAqL1xuICBjb25maWd1cmVWaWV3cyA9ICh3aW5kb3dDb25maWdPdmVybGF5czogYW55LCBjb25maWd1cmVkV2luZG93OiBhbnkpOiBBcnJheTxhbnk+ID0+IHtcbiAgICBsZXQgY29uZmlndXJlZFZpZXdzOiBBcnJheTxhbnk+ID0gW107XG4gICAgd2luZG93Q29uZmlnT3ZlcmxheXMudmlld3MuZm9yRWFjaCgodmlldzogYW55KSA9PiB7XG4gICAgICBsZXQgY29uZmlndXJlZFZpZXcgPSBuZXcgVmlld0NvbmZpZygpO1xyXG4gICAgICBjb25maWd1cmVkVmlldy5jb21wb25lbnROYW1lID0gdmlldy5jb21wb25lbnROYW1lO1xyXG4gICAgICBjb25maWd1cmVkVmlldy5lbnRpdGllcyA9IHZpZXcuZW50aXRpZXM7XHJcbiAgICAgIGNvbmZpZ3VyZWRWaWV3LmVudGl0eUluZGV4ID0gdmlldy5lbnRpdHlJbmRleDtcclxuICAgICAgY29uZmlndXJlZFZpZXcuaXNEaXJ0eSA9IHZpZXcuaXNEaXJ0eTtcclxuICAgICAgY29uZmlndXJlZFZpZXcuaXNFZGl0aW5nID0gdmlldy5pc0VkaXRpbmc7XHJcbiAgICAgIGNvbmZpZ3VyZWRWaWV3LmlzSW52YWxpZCA9IHZpZXcuaXNWYWxpZDtcclxuICAgICAgY29uZmlndXJlZFZpZXcub3BlbkFzRGV0YWlWaWV3ID0gdmlldy5vcGVuQXNEZXRhaWxWaWV3O1xuICAgICAgLy92aWV3Q29uZmlnSW5zdGFuY2UuZ2xvYmFscyA9IHRoaXMub3B0aW9ucy5nbG9iYWxzO1xuICAgICAgLy9sZXQgY29uZmlndXJlZFZpZXcgPSBPYmplY3QuYXNzaWduKHZpZXdDb25maWdJbnN0YW5jZSwgdmlldyk7XG4gICAgICBjb25maWd1cmVkVmlldy53aW5kb3cgPSBjb25maWd1cmVkV2luZG93O1xuICAgICAgY29uZmlndXJlZFZpZXdzLnB1c2goY29uZmlndXJlZFZpZXcpO1xuICAgIH0pO1xuICAgIHJldHVybiBjb25maWd1cmVkVmlld3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY2xvc2VXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlIGEgd2luZG93IHtvYmplY3R9IGZyb20gdGhlIHdpbmRvd3MgYXJyYXkuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSByZXR1cm5zIHRydWUgaWYgd2luZG93IHdhcyBjbG9zZWQsIGZhbHNlIGlmIG5vdCBjbG9zZWQuXG4gICAqL1xuICBjbG9zZVdpbmRvdyA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93RGlydHlDbG9zZSAmJiB3ZHcuaXNEaXJ0eSkge1xuICAgICAgYWxlcnQoXCJVbnNhdmVkIENoYW5nZXMuIFNhdmUgY2hhbmdlcyBiZWZvcmUgY2xvc2luZyB3aW5kb3cuXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93SW52YWxpZENsb3NlICYmIHdkdy5pc0ludmFsaWQpIHtcbiAgICAgIGFsZXJ0KFwiRGF0YSBpcyBpbnZhbGlkLiBDb3JyZWN0IEludmFsaWQgZGF0YSBiZWZvcmUgY2xvc2luZyB3aW5kb3cuXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2FuQ2xvc2VGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNhbkNsb3NlRm4od2R3KSkge1xuICAgICAgICB0aGlzLndpbmRvd3Muc3BsaWNlKHRoaXMud2luZG93cy5pbmRleE9mKHdkdyksIDEpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpbmRvd3Muc3BsaWNlKHRoaXMud2luZG93cy5pbmRleE9mKHdkdyksIDEpO1xuICAgICAgdGhpcy5hY3RpdmF0ZUZvcmVtb3N0V2luZG93KCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmFjdGl2YXRlRm9yZW1vc3RXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSBmb3JlbW9zdCB3aW5kb3cgdG8gYW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqL1xuICBhY3RpdmF0ZUZvcmVtb3N0V2luZG93ID0gKCkgPT4ge1xuICAgIHZhciBmb3JlbW9zdCA9IHVuZGVmaW5lZDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMud2luZG93cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKChmb3JlbW9zdCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMud2luZG93c1tpXS56SW5kZXggPiBmb3JlbW9zdC56SW5kZXgpICYmICF0aGlzLndpbmRvd3NbaV0ubWluaW1pemVkICYmICF0aGlzLndpbmRvd3NbaV0ub3V0T2ZCb3VuZHMpXG4gICAgICAgIGZvcmVtb3N0ID0gdGhpcy53aW5kb3dzW2ldO1xuICAgIH1cbiAgICBpZiAoZm9yZW1vc3QpXG4gICAgICBmb3JlbW9zdC5hY3RpdmUgPSB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmFjdGl2YXRlTmV4dFdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGhlIG5leHQgd2luZG93IHRvIGFuIGFjdGl2ZSBzdGF0ZVxuICAgKlxuICAgKi9cbiAgYWN0aXZhdGVOZXh0V2luZG93ID0gKGFjdGl2ZVdpbmRvd0xvY2F0aW9uOiBhbnkpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3dzLmxlbmd0aCA8PSAxKSByZXR1cm47XG4gICAgdmFyIGJhY2tlbmQgPSB0aGlzLndpbmRvd3Muc2xpY2UoYWN0aXZlV2luZG93TG9jYXRpb24pO1xuICAgIHZhciBmcm9udGVuZCA9IHRoaXMud2luZG93cy5zbGljZSgwLCBhY3RpdmVXaW5kb3dMb2NhdGlvbiAtIDEpO1xuICAgIHZhciBzb3J0ZWQgPSBiYWNrZW5kLmNvbmNhdChmcm9udGVuZCk7XG4gICAgdmFyIG5leHRXaW5kb3cgPSB1bmRlZmluZWQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3J0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghc29ydGVkW2ldLm1pbmltaXplZCAmJiAhc29ydGVkW2ldLm91dE9mQm91bmRzICYmICFuZXh0V2luZG93KVxuICAgICAgICBuZXh0V2luZG93ID0gc29ydGVkW2ldO1xuICAgIH1cblxuICAgIGlmIChuZXh0V2luZG93KSB7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgICBuZXh0V2luZG93LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgICAgbmV4dFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5hY3RpdmF0ZVByZXZpb3VzV2luZG93XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldCB0aGUgcHJldmlvdXMgd2luZG93IHRvIGFuIGFjdGl2ZSBzdGF0ZVxuICAgKlxuICAgKi9cbiAgYWN0aXZhdGVQcmV2aW91c1dpbmRvdyA9IChhY3RpdmVXaW5kb3dMb2NhdGlvbjogYW55KSA9PiB7XG4gICAgaWYgKHRoaXMud2luZG93cy5sZW5ndGggPD0gMSkgcmV0dXJuO1xuICAgIHZhciBiYWNrZW5kID0gdGhpcy53aW5kb3dzLnNsaWNlKGFjdGl2ZVdpbmRvd0xvY2F0aW9uKTtcbiAgICB2YXIgZnJvbnRlbmQgPSB0aGlzLndpbmRvd3Muc2xpY2UoMCwgYWN0aXZlV2luZG93TG9jYXRpb24gLSAxKTtcbiAgICB2YXIgc29ydGVkID0gYmFja2VuZC5jb25jYXQoZnJvbnRlbmQpO1xuICAgIHZhciBuZXh0V2luZG93ID0gdW5kZWZpbmVkO1xuICAgIGZvciAodmFyIGkgPSBzb3J0ZWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICghc29ydGVkW2ldLm1pbmltaXplZCAmJiAhc29ydGVkW2ldLm91dE9mQm91bmRzICYmICFuZXh0V2luZG93KVxuICAgICAgICBuZXh0V2luZG93ID0gc29ydGVkW2ldO1xuICAgIH1cblxuICAgIGlmIChuZXh0V2luZG93KSB7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgICBuZXh0V2luZG93LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgICAgbmV4dFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5taW5pbWl6ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBWaXN1YWxseSByZW1vdmVzIHdpbmRvdyBmcm9tIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1pbmltaXplID0gKHdpbmRvdzogYW55KSA9PiB7XG4gICAgdGhpcy5zYXZlUG9zaXRpb24od2luZG93KTtcblxuICAgIHdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICB3aW5kb3cubWluaW1pemVkID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5tYXhpbWl6ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQb3NpdGlvbnMgd2luZG93IHN1Y2ggdGhhdCBpdCBmaWxscyB0aGUgd2hvbGUgdmlld3BvcnQuXG4gICAqXG4gICAqL1xuICBtYXhpbWl6ZSA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIHdpbmRvdy50b3AgPSAwO1xuICAgIHdpbmRvdy5sZWZ0ID0gMDtcbiAgICB3aW5kb3cucmlnaHQgPSAwO1xuICAgIHdpbmRvdy5ib3R0b20gPSAwO1xuICAgIHdpbmRvdy5oZWlnaHQgPSAnYXV0byc7XG4gICAgd2luZG93LndpZHRoID0gJzEwMCUnO1xuICAgIHdpbmRvdy5tYXhpbWl6ZWQgPSAnZmlsbCc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQubWF4aW1pemVMZWZ0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFBvc2l0aW9ucyB3aW5kb3cgc3VjaCB0aGF0IGl0IGZpbGxzIHRoZSBsZWZ0IHBvcnRpb24gdmlld3BvcnQuXG4gICAqXG4gICAqL1xuICBtYXhpbWl6ZUxlZnQgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB3aW5kb3cuc3BsaXQgPSB0cnVlO1xuICAgIHdpbmRvdy50b3AgPSAwO1xuICAgIHdpbmRvdy5sZWZ0ID0gMDtcbiAgICB3aW5kb3cuYm90dG9tID0gMDtcbiAgICB3aW5kb3cud2lkdGggPSAnNTAlJztcbiAgICB3aW5kb3cuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgIHdpbmRvdy5tYXhpbWl6ZWQgPSAnbGVmdCc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQubWF4aW1pemVSaWdodFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQb3NpdGlvbnMgd2luZG93IHN1Y2ggdGhhdCBpdCBmaWxscyB0aGUgcmlnaHQgcG9ydGlvbiB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1heGltaXplUmlnaHQgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB3aW5kb3cudG9wID0gMDtcbiAgICB3aW5kb3cubGVmdCA9ICc1MCUnO1xuICAgIHdpbmRvdy5yaWdodCA9IDA7XG4gICAgd2luZG93LmJvdHRvbSA9IDA7XG4gICAgd2luZG93LndpZHRoID0gJzUwJSc7XG4gICAgd2luZG93LmhlaWdodCA9ICdhdXRvJztcbiAgICB3aW5kb3cubWF4aW1pemVkID0gJ3JpZ2h0JztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5yZWNvdmVyXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJyaW5ncyB3aW5kb3cgYmFjayBpbnRvIHZpZXcgd2hlbiBpdCBoYXMgZXNjYXBlZCB0aGUgdmlld3BvcnQuXG4gICAqXG4gICAqL1xuICByZWNvdmVyID0gKHdpbmRvdzogYW55KSA9PiB7XG4gICAgd2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgd2luZG93Lm91dE9mQm91bmRzID0gZmFsc2U7XG4gICAgd2luZG93Lm1pbmltaXplZCA9IGZhbHNlO1xuICAgIHdpbmRvdy56SW5kZXggPSB0aGlzLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgICB0aGlzLmNhc2NhZGVXaW5kb3cod2luZG93KTtcbiAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgdGhpcy5hY3RpdmF0ZUZvcmVtb3N0V2luZG93KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQucmVzdG9yZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgcmVzdG9yZSA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIGlmICh3ZHcubWF4aW1pemVkID09PSAnZmlsbCcpIHtcbiAgICAgIHRoaXMubWF4aW1pemUod2R3KTtcbiAgICB9IGVsc2UgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdsZWZ0Jykge1xuICAgICAgdGhpcy5tYXhpbWl6ZUxlZnQod2R3KTtcbiAgICB9IGVsc2UgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdyaWdodCcpIHtcbiAgICAgIHRoaXMubWF4aW1pemVSaWdodCh3ZHcpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVdpbmRvd1N0YXRlKHdkdyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYnJpbmdUb0Zyb250XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICB1cGRhdGVXaW5kb3dTdGF0ZSA9ICh3ZHc6IGFueSkgPT4ge1xyXG4gICAgaWYgKHdkdy5vdXRPZkJvdW5kcykge1xyXG4gICAgICB0aGlzLnJlY292ZXIod2R3KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3ZHcubWF4aW1pemVkID09PSAnZmlsbCcpIHtcclxuICAgICAgdGhpcy5tYXhpbWl6ZSh3ZHcpO1xyXG4gICAgfSBlbHNlIGlmICh3ZHcubWF4aW1pemVkID09PSAnbGVmdCcpIHtcclxuICAgICAgdGhpcy5tYXhpbWl6ZUxlZnQod2R3KTtcclxuICAgIH0gZWxzZSBpZiAod2R3Lm1heGltaXplZCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICB0aGlzLm1heGltaXplUmlnaHQod2R3KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgIHdkdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgd2R3Lm1pbmltaXplZCA9IGZhbHNlO1xyXG4gICAgd2R3LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xyXG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQucmVzdG9yZVNhdmVkUG9zaXRpb25cbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSB3aW5kb3dzIGxhc3Qga25vdyBwb3NpdGlvbiB0byB0aGUgY3VycmVudCBwb3NpdGlvbi5cbiAgICpcbiAgICovXG4gIHJlc3RvcmVTYXZlZFBvc2l0aW9uID0gKHdkdzogYW55KSA9PiB7XG4gICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xuICAgIHdkdy50b3AgPSB3ZHcuc2F2ZWRQb3NpdGlvbi50b3A7XG4gICAgd2R3LmxlZnQgPSB3ZHcuc2F2ZWRQb3NpdGlvbi5sZWZ0O1xuICAgIHdkdy5yaWdodCA9IHdkdy5zYXZlZFBvc2l0aW9uLnJpZ2h0O1xuICAgIHdkdy5ib3R0b20gPSB3ZHcuc2F2ZWRQb3NpdGlvbi5ib3R0b207XG4gICAgd2R3LmhlaWdodCA9IHdkdy5zYXZlZFBvc2l0aW9uLmhlaWdodDtcbiAgICB3ZHcud2lkdGggPSB3ZHcuc2F2ZWRQb3NpdGlvbi53aWR0aDtcbiAgICB3ZHcubWF4aW1pemVkID0gdW5kZWZpbmVkO1xuICAgIHdkdy5taW5pbWl6ZWQgPSB1bmRlZmluZWQ7XG4gICAgd2R3LmFjdGl2ZSA9IHRydWU7XG4gICAgd2R3Lm1pbmltaXplZCA9IGZhbHNlO1xuICAgIHdkdy56SW5kZXggPSB0aGlzLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5zYXZlUG9zaXRpb25cbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2F2ZSB0aGUgd2luZG93cyBsYXN0IGtub3cgcG9zaXRpb24uXG4gICAqXG4gICAqL1xuICBzYXZlUG9zaXRpb24gPSAod2R3OiBhbnkpID0+IHtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi50b3AgPSB3ZHcudG9wO1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLmxlZnQgPSB3ZHcubGVmdDtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi5yaWdodCA9IHdkdy5yaWdodDtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi5ib3R0b20gPSB3ZHcuYm90dG9tO1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLmhlaWdodCA9IHdkdy5oZWlnaHQ7XG4gICAgd2R3LnNhdmVkUG9zaXRpb24ud2lkdGggPSB3ZHcud2lkdGg7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY2xvc2VXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW92ZXMgYSB3aW5kb3cgdG8gdGhlIG5leHQgY2FzY2FkZSBwb3NpdGlvbi5cbiAgICpcbiAgICovXG4gIGNhc2NhZGVXaW5kb3cgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5lbmFibGVXaW5kb3dDYXNjYWRpbmcgfHwgd2luZG93LmlzTW9kYWwpIHJldHVybjtcbiAgICB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24udG9wICs9IDEwO1xuICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi5sZWZ0ICs9IDEwO1xuICAgIGlmICh0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24udG9wID4gdGhpcy5tYXhXaW5kb3dDYXNjYWRlUG9zaXRpb24pXG4gICAgICB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24udG9wID0gdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb247XG4gICAgaWYgKHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi5sZWZ0ID4gdGhpcy5tYXhXaW5kb3dDYXNjYWRlUG9zaXRpb24pXG4gICAgICB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24ubGVmdCA9IHRoaXMubWluV2luZG93Q2FzY2FkZVBvc2l0aW9uO1xuXG4gICAgd2luZG93LnRvcCA9IHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgKyAncHgnO1xuICAgIHdpbmRvdy5sZWZ0ID0gdGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLmxlZnQgKyAncHgnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldEtleUNvZGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIGdldEtleVNlcXVlbmNlID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGlmIChldmVudC5zaGlmdEtleSkga2V5cy5wdXNoKCdzaGlmdCcpO1xuICAgIGlmIChldmVudC5jdHJsS2V5KSBrZXlzLnB1c2goJ2N0cmwnKTtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBrZXlzLnB1c2goJ2FsdCcpO1xuICAgIGlmIChldmVudC5tZXRhS2V5KSBrZXlzLnB1c2goJ21ldGEnKTtcblxuICAgIHZhciBrZXlDb2RlID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgICBpZiAoa2V5Q29kZSkga2V5cy5wdXNoKHRoaXMua2V5Ym9hcmRNYXBba2V5Q29kZV0udG9Mb3dlckNhc2UoKSk7XG5cbiAgICByZXR1cm4ga2V5cy5qb2luKCcrJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGV2ZW50XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBvbktleURvd24gPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHZhciBrZXlTZXF1ZW5jZSA9IHRoaXMuZ2V0S2V5U2VxdWVuY2UoZXZlbnQpO1xuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCttJykgeyAvL01heGltaXplXG4gICAgICB2YXIgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcbiAgICAgIGlmIChhY3RpdmVXaW5kb3cgPT09IG51bGwpIHJldHVybjtcbiAgICAgIGlmICghYWN0aXZlV2luZG93Lm1heGltaXplZCkge1xuICAgICAgICB0aGlzLnNhdmVQb3NpdGlvbihhY3RpdmVXaW5kb3cpO1xuICAgICAgICB0aGlzLm1heGltaXplKGFjdGl2ZVdpbmRvdyk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVdpbmRvdy5tYXhpbWl6ZWQgPT09ICdyaWdodCcgfHwgYWN0aXZlV2luZG93Lm1heGltaXplZCA9PT0gJ2xlZnQnKVxuICAgICAgICB0aGlzLm1heGltaXplKGFjdGl2ZVdpbmRvdyk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucmVzdG9yZVNhdmVkUG9zaXRpb24oYWN0aXZlV2luZG93KTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtuJykgeyAvL01pbmltaXplXG4gICAgICB2YXIgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcbiAgICAgIGlmIChhY3RpdmVXaW5kb3cgPT09IG51bGwgfHwgYWN0aXZlV2luZG93Lm1pbmltaXplZCkgcmV0dXJuO1xuICAgICAgdGhpcy5taW5pbWl6ZShhY3RpdmVXaW5kb3cpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K3cnKSB7IC8vQ3ljbGVzIEZvcndhcmRcbiAgICAgIHZhciBpbmRleCA9IHRoaXMud2luZG93cy5pbmRleE9mKHRoaXMuZ2V0QWN0aXZlV2luZG93KCkpO1xuICAgICAgdGhpcy5hY3RpdmF0ZU5leHRXaW5kb3coaW5kZXggKyAxKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ3NoaWZ0K2FsdCt3JykgeyAvL0N5Y2xlcyBCYWNrd2FyZFxuICAgICAgdmFyIGluZGV4ID0gdGhpcy53aW5kb3dzLmluZGV4T2YodGhpcy5nZXRBY3RpdmVXaW5kb3coKSk7XG4gICAgICB0aGlzLmFjdGl2YXRlUHJldmlvdXNXaW5kb3coaW5kZXggKyAxKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ3NoaWZ0K2FsdCt4JyAmJiAhKHRoaXMuc2hpZnRQcmVzc2VkICYmIHRoaXMuYWx0UHJlc3NlZCAmJiB0aGlzLnhQcmVzc2VkKSkgeyAvL0Nsb3NlXG4gICAgICB2YXIgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcbiAgICAgIGlmICghYWN0aXZlV2luZG93KSByZXR1cm47XG4gICAgICB0aGlzLmNsb3NlV2luZG93KGFjdGl2ZVdpbmRvdyk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrZCcpIHsgLy9Ub2dnbGUgRGVza3RvcFxuICAgICAgLy90aGlzLmRlc2t0b3BTaG93biA9IHRoaXMuaGlkZVNob3dBbGwoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSB0cnVlO1xuICAgIGlmIChldmVudC5hbHRLZXkpXG4gICAgICB0aGlzLmFsdFByZXNzZWQgPSB0cnVlO1xuICAgIGlmIChldmVudC5rZXlDb2RlID09PSA4OClcbiAgICAgIHRoaXMueFByZXNzZWQgPSB0cnVlO1xuICB9XG5cbiAgb25LZXlVcCA9IChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KVxuICAgICAgdGhpcy5hbHRQcmVzc2VkID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDg4KVxuICAgICAgdGhpcy54UHJlc3NlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuaGFuZGxlU2VsZWN0QXR0ZW1wdFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQcmV2ZW50cyB0aGUgdXNlciBmcm9tIGhpZ2hsaWdodCBkZXNrdG9wIGVsZW1lbnRzLlxuICAgKlxuICAgKi9cbiAgaGFuZGxlU2VsZWN0QXR0ZW1wdCA9IChlOiBhbnkpID0+IHtcbiAgICB2YXIgbm9kZU5hbWUgPSBlLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0JyB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBub2RlTmFtZSA9PT0gJ3NlbGVjdCcpIHJldHVybiB0cnVlO1xuICAgIGlmICh3aW5kb3cuZXZlbnQpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB3aW5kb3dzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ29VcmwgPSB0aGlzLm9wdGlvbnMubG9nb1VybDtcclxuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZXNrdG9wLm9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMudmlld3BvcnRUb3AgPSB0aGlzLm9wdGlvbnMubWVudWJhckNvbmZpZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5vcHRpb25zLm1lbnViYXJIZWlnaHQgKyAxIDogMDtcclxuICAgIHRoaXMudHJ1V2luZG93RXZlbnRIYW5kbGVyLm9uT3BlbigpLnN1YnNjcmliZSgod2luZGlvd0V2ZW50OiBUcnVXaW5kb3dFdmVudEFyZ3MpID0+IHtcclxuICAgICAgdGhpcy5vcGVuV2luZG93KHdpbmRpb3dFdmVudCwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gdGhpcy5oYW5kbGVTZWxlY3RBdHRlbXB0O1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uS2V5RG93bik7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uS2V5VXApO1xyXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25LZXlEb3duKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLm9uS2V5VXApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGVza3RvcC13cmFwcGVyXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkZXNrdG9wLW1lbnViYXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydoZWlnaHQnOiBvcHRpb25zLm1lbnViYXJIZWlnaHQgKyAncHgnfVwiPlxyXG4gICAgPHRydS1kZXNrdG9wLW1lbnViYXIgW2Rlc2t0b3BDdHJsXT1cInRoaXNcIj48L3RydS1kZXNrdG9wLW1lbnViYXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0cnUtZGVza3RvcC12aWV3cG9ydCBbd2luZG93c109XCJ3aW5kb3dzXCIgW2Rlc2t0b3BDdHJsXT1cInRoaXNcIj48L3RydS1kZXNrdG9wLXZpZXdwb3J0PlxyXG5cclxuICA8dHJ1LWRlc2t0b3AtdGFza2JhciBbd2luZG93c109XCJ3aW5kb3dzXCIgW2Rlc2t0b3BDdHJsXT1cInRoaXNcIj48L3RydS1kZXNrdG9wLXRhc2tiYXI+XHJcblxyXG4gIDxpbWcgY2xhc3M9XCJkZXNrdG9wLXZpZXdwb3J0LWxvZ29cIiBkYXRhLW5nLXNob3c9XCJsb2dvVXJsXCIgYWx0PVwiXCI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,31 +1,25 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { TruView } from '../services/tru-view';
3
2
  import * as i0 from "@angular/core";
4
- import * as i1 from "../services/tru-view";
5
- import * as i2 from "../../../services/tru-component-lookup";
3
+ import * as i1 from "../../../services/tru-component-lookup";
6
4
  export class TruDesktopView {
7
- constructor(view, viewContainerRef, componentFactoryResolver, componentLookup) {
8
- this.view = view;
5
+ constructor(viewContainerRef, componentFactoryResolver, componentLookup) {
9
6
  this.viewContainerRef = viewContainerRef;
10
7
  this.componentFactoryResolver = componentFactoryResolver;
11
8
  this.componentLookup = componentLookup;
12
9
  }
13
10
  ngOnInit() {
14
- this.view.window = this.window;
15
- var component = this.componentLookup.get(this.viewConfig.componentName);
11
+ var component = this.componentLookup.get(this.view.componentName);
16
12
  const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
17
13
  const containerRef = this.viewContainerRef.createComponent(componentFactory, 0, this.viewContainerRef.injector);
18
14
  containerRef.instance.view = this.view;
19
15
  }
20
16
  }
21
- TruDesktopView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDesktopView, deps: [{ token: i1.TruView }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i2.TruComponentLookup }], target: i0.ɵɵFactoryTarget.Component });
22
- TruDesktopView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruDesktopView, selector: "tru-desktop-view", inputs: { window: "window", viewConfig: "viewConfig" }, providers: [TruView], ngImport: i0, template: "<div></div>\r\n", styles: [""] });
17
+ TruDesktopView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDesktopView, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i1.TruComponentLookup }], target: i0.ɵɵFactoryTarget.Component });
18
+ TruDesktopView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruDesktopView, selector: "tru-desktop-view", inputs: { view: "view" }, ngImport: i0, template: "<div></div>\r\n", styles: [""] });
23
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDesktopView, decorators: [{
24
20
  type: Component,
25
- args: [{ selector: 'tru-desktop-view', providers: [TruView], template: "<div></div>\r\n" }]
26
- }], ctorParameters: function () { return [{ type: i1.TruView }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i2.TruComponentLookup }]; }, propDecorators: { window: [{
27
- type: Input
28
- }], viewConfig: [{
21
+ args: [{ selector: 'tru-desktop-view', template: "<div></div>\r\n" }]
22
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i1.TruComponentLookup }]; }, propDecorators: { view: [{
29
23
  type: Input
30
24
  }] } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3ZpZXcvdHJ1LWRlc2t0b3Atdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3ZpZXcvdHJ1LWRlc2t0b3Atdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUE4QyxNQUFNLGVBQWUsQ0FBQztBQUVyRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFRL0MsTUFBTSxPQUFPLGNBQWM7SUFJekIsWUFDVSxJQUFhLEVBQ2IsZ0JBQWtDLEVBQ2xDLHdCQUFrRCxFQUNsRCxlQUFtQztRQUhuQyxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtJQUU3QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFNLGdCQUFnQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckgsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDOzsyR0FsQlUsY0FBYzsrRkFBZCxjQUFjLG1HQUZkLENBQUMsT0FBTyxDQUFDLDBCQ1J0QixpQkFDQTsyRkRTYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLGtCQUFrQixhQUdqQixDQUFDLE9BQU8sQ0FBQztxTUFHWCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcnVDb21wb25lbnRMb29rdXAgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtY29tcG9uZW50LWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVZpZXcgfSBmcm9tICcuLi9zZXJ2aWNlcy90cnUtdmlldyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RydS1kZXNrdG9wLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRlc2t0b3Atdmlldy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRlc2t0b3Atdmlldy5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbVHJ1Vmlld11cbn0pXG5leHBvcnQgY2xhc3MgVHJ1RGVza3RvcFZpZXcgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB3aW5kb3c6IGFueTtcbiAgQElucHV0KCkgdmlld0NvbmZpZzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdmlldzogVHJ1VmlldyxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGNvbXBvbmVudExvb2t1cDogVHJ1Q29tcG9uZW50TG9va3VwKSB7XG4gICAgXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcud2luZG93ID0gdGhpcy53aW5kb3c7XG4gICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50TG9va3VwLmdldCh0aGlzLnZpZXdDb25maWcuY29tcG9uZW50TmFtZSk7XG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxhbnk+KGNvbXBvbmVudEZhY3RvcnksIDAsIHRoaXMudmlld0NvbnRhaW5lclJlZi5pbmplY3Rvcik7XG4gICAgY29udGFpbmVyUmVmLmluc3RhbmNlLnZpZXcgPSB0aGlzLnZpZXc7XG4gIH1cbn1cbiIsIjxkaXY+PC9kaXY+XHJcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3ZpZXcvdHJ1LWRlc2t0b3Atdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3ZpZXcvdHJ1LWRlc2t0b3Atdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUE4QyxNQUFNLGVBQWUsQ0FBQzs7O0FBUXJHLE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ1UsZ0JBQWtDLEVBQ2xDLHdCQUFrRCxFQUNsRCxlQUFtQztRQUZuQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQW9CO0lBRTdDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFNLGdCQUFnQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckgsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDOzsyR0FmVSxjQUFjOytGQUFkLGNBQWMsa0ZDUjNCLGlCQUNBOzJGRE9hLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0Usa0JBQWtCOytLQUtuQixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJ1Q29tcG9uZW50TG9va3VwIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJ1LWNvbXBvbmVudC1sb29rdXAnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RydS1kZXNrdG9wLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRlc2t0b3Atdmlldy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRlc2t0b3Atdmlldy5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVEZXNrdG9wVmlldyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZpZXc6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGNvbXBvbmVudExvb2t1cDogVHJ1Q29tcG9uZW50TG9va3VwKSB7XG4gICAgXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRMb29rdXAuZ2V0KHRoaXMudmlldy5jb21wb25lbnROYW1lKTtcbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PGFueT4oY29tcG9uZW50RmFjdG9yeSwgMCwgdGhpcy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yKTtcbiAgICBjb250YWluZXJSZWYuaW5zdGFuY2UudmlldyA9IHRoaXMudmlldztcbiAgfVxufVxuIiwiPGRpdj48L2Rpdj5cclxuIl19