@esfaenza/extensions 15.2.26 → 15.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/services/extensions.embedding.service.mjs +5 -3
- package/esm2020/lib/services/extensions.messages.service.mjs +29 -27
- package/fesm2015/esfaenza-extensions.mjs +31 -26
- package/fesm2015/esfaenza-extensions.mjs.map +1 -1
- package/fesm2020/esfaenza-extensions.mjs +31 -26
- package/fesm2020/esfaenza-extensions.mjs.map +1 -1
- package/lib/services/extensions.embedding.service.d.ts +1 -1
- package/lib/services/extensions.messages.service.d.ts +24 -34
- package/package.json +1 -1
|
@@ -13,15 +13,17 @@ export class AppEmbeddingExtensions {
|
|
|
13
13
|
this.Embedded = false;
|
|
14
14
|
this.EmbeddingLevel = 0;
|
|
15
15
|
this.MessageObserver = new Subject();
|
|
16
|
-
this.setupEmbeddability();
|
|
17
16
|
this.MainWindow = window;
|
|
18
17
|
while (this.MainWindow.parent != this.MainWindow) {
|
|
19
18
|
this.MainWindow = this.MainWindow.parent;
|
|
20
19
|
this.EmbeddingLevel++;
|
|
21
20
|
this.Embedded = true;
|
|
22
21
|
}
|
|
22
|
+
this.configureEmbeddability();
|
|
23
|
+
if (this.Embedded)
|
|
24
|
+
this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
|
|
23
25
|
}
|
|
24
|
-
|
|
26
|
+
configureEmbeddability() {
|
|
25
27
|
window.onmessage = (event) => {
|
|
26
28
|
// Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
|
|
27
29
|
if (event.source == window && event?.data?.type != "modal-open")
|
|
@@ -145,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
145
147
|
type: Injectable,
|
|
146
148
|
args: [{ providedIn: "root" }]
|
|
147
149
|
}], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.Router }]; } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBRS9CLHFHQUFxRztBQUVyRyxNQUFNLE9BQU8sc0JBQXNCO0lBUS9CLFlBQW9CLFVBQTBCLEVBQVUsTUFBYztRQUFsRCxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOL0QsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUFxQyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUc5RixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsVUFBVSxHQUEyQyxNQUFNLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDdkMsZ0ZBQWdGO1lBQ2hGLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksWUFBWTtnQkFDM0QsT0FBTztZQUVQLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUU3RSxJQUFJLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLE9BQU8sRUFBRTtnQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLGNBQWMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRyxRQUFRLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUN4QixLQUFLLFNBQVM7d0JBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDaEQsTUFBTTtvQkFDVixLQUFLLFNBQVM7d0JBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDaEQsTUFBTTtvQkFDVixLQUFLLE9BQU87d0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDOUMsTUFBTTtvQkFDVixLQUFLLE1BQU07d0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDN0MsTUFBTTtpQkFDYjthQUNKO2lCQUNJLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFO2dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssY0FBYyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksWUFBWSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBRS9KLElBQUksWUFBWSxHQUFJLEtBQUssQ0FBQyxNQUFpQixDQUFDO2dCQUM1QyxJQUFJLFlBQVksR0FBRyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFFekUsUUFBUSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtvQkFDeEIsS0FBSyxTQUFTO3dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFOzRCQUNoRixRQUFRLENBQUM7NEJBQ1QsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQTt3QkFDcEUsQ0FBQyxFQUFFLEdBQUcsRUFBRTs0QkFDSixZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO3dCQUNyRSxDQUFDLENBQUMsQ0FBQzt3QkFDSCxNQUFNO29CQUNWLEtBQUssU0FBUzt3QkFDVixJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTs0QkFDaEYsUUFBUSxDQUFDOzRCQUNULFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7d0JBQ3BFLENBQUMsRUFBRSxHQUFHLEVBQUU7NEJBQ0osWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQTt3QkFDckUsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsTUFBTTtpQkFDYjthQUNKO2lCQUNJLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksVUFBVSxFQUFFO2dCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBRWhFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzVDO2lCQUNJLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksVUFBVSxFQUFFO2dCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBRWhFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQzNDO2lCQUNJLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksWUFBWSxFQUFFO2dCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBRTNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7YUFDeEU7aUJBQ0ksSUFBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUU7Z0JBQ3hDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO2dCQUN2RixJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFFdEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBbUQsS0FBSyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUU5RixJQUFJLFNBQVMsR0FBVyxHQUFHLENBQUMsQ0FBQyxpRkFBaUY7Z0JBQzlHLElBQUksVUFBVSxHQUFXLG1CQUFtQixDQUFDLENBQUMsd0dBQXdHO2dCQUN0SixJQUFJLFNBQVMsR0FBVyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxvQ0FBb0M7Z0JBRXRGLElBQUksWUFBWSxHQUFHLDJFQUEyRSxDQUFDO2dCQUUvRixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUU3RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO2dCQUNyQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxZQUFZLEdBQUcsV0FBVyxTQUFTLGtDQUFrQyxTQUFTLGNBQWMsU0FBUyxJQUFJLENBQUM7Z0JBQzlILEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUVmLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFlBQVksR0FBRyxnQ0FBZ0MsU0FBUyxLQUFLLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUVqQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUFDO2dCQUN6QyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxZQUFZLEdBQUcsdUJBQXVCLFNBQVMsYUFBYSxTQUFTLHdCQUF3QixVQUFVLEtBQUssQ0FBQztnQkFDbkksS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBRW5CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7aUJBQ0ksSUFBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxhQUFhLEVBQUU7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztnQkFFNUMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7Z0JBQ3JGLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUV6QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLEdBQUc7b0JBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25DLElBQUksSUFBSTtvQkFDSixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxLQUFLO29CQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSwrQkFBK0I7UUFDbEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDdkYsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksU0FBUyxHQUFXLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUVqRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsSUFBSSxHQUFHLEVBQUU7WUFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxTQUFTLEtBQUssQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzttSEEvSlEsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gU2VydmljZXNcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2VcIjtcclxuXHJcbi8vIExpYnJhcmllc1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qIENsYXNzZSBjaGUgY29udGllbmUgdHV0dGUgbGUgaW5mb3JtYXppb25pIHN1bGwnZW1iZWRkaW5nIGluIHVuIHVuaWNvIGNvbnRlbml0b3JlIHBlciBzZW1wbGljaXTDoCAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcbmV4cG9ydCBjbGFzcyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIHtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBFbWJlZGRpbmdMZXZlbDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBNYWluV2luZG93OiBhbnk7XHJcblxyXG4gICAgcHVibGljIE1lc3NhZ2VPYnNlcnZlcjogU3ViamVjdDx7ZXZlbnQ6IGFueSwgZGF0YTogYW55fT4gPSBuZXcgU3ViamVjdDx7ZXZlbnQ6IGFueSwgZGF0YTogYW55fT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cEVtYmVkZGFiaWxpdHkoKTtcclxuXHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93ID0gPHsgcGFyZW50OiBhbnksIHBvc3RNZXNzYWdlOiBGdW5jdGlvbiB9PndpbmRvdztcclxuICAgICAgICB3aGlsZSAodGhpcy5NYWluV2luZG93LnBhcmVudCAhPSB0aGlzLk1haW5XaW5kb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93ID0gdGhpcy5NYWluV2luZG93LnBhcmVudDtcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRpbmdMZXZlbCsrO1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBFbWJlZGRhYmlsaXR5KCkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZ25vcm8gaSBtaWVpIG1lc3NhZ2dpIGRhdG8gY2hlIG1pIGludGVyZXNzYW5vIHNvbG8gcXVlbGxpIGRlZ2xpIGFsdHJpIGlmcmFtZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09IHdpbmRvdyAmJiBldmVudD8uZGF0YT8udHlwZSAhPSBcIm1vZGFsLW9wZW5cIilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5uZXh0KHsgZXZlbnQ6IFwid2luZG93LW1lc3NhZ2VcIiwgZGF0YTogZXZlbnQ/LmRhdGF9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiY29uZmlybVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBjb25maXJtIC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/LnRleHR9LCBUaXRsZTogJHtldmVudD8uZGF0YT8udGl0bGV9LCBJRDogJHtldmVudD8uZGF0YT8uZ3VpZH1gKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VXaW5kb3cgPSAoZXZlbnQuc291cmNlIGFzIFdpbmRvdyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFzZVJlc3BvbnNlID0geyB0eXBlOiBcImNvbmZpcm0tcmVzcG9uc2VcIiwgZ3VpZDogZXZlbnQ/LmRhdGE/Lmd1aWQgfTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIG5hdmlnYXRlIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVkaXJlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVkaXJlY3QgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZXZlbnQ/LmRhdGE/LnVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTmF2aWdhdGlvbiAtPiAke2V2ZW50Py5kYXRhPy5pbnRlcm5hbE5hdmlnYXRpb24gPyBcIltpbnRlcm5hbF1cIiA6IFwiXCJ9ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJuYXZpZ2F0aW9uXCIsIGRhdGE6IGV2ZW50Py5kYXRhfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1vcGVuXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nUmlnaHQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLXJpZ2h0XCIpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBPcGVuIC0+IEJhY2tkcm9wIEhlaWdodDogJHtldmVudD8uZGF0YT8uYmFja2Ryb3BIZWlnaHR9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHRvcEhlaWdodDogbnVtYmVyID0gMTE2OyAvLyB2YWxvcmUgZmlzc28sIGRpc3RhbnphIGZyYSBpbCB0b3AgZSBsJ2luaXppbyBkZWxsJ2lmcmFtZSwgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgcmlnaHRTcGFjZTogbnVtYmVyID0gd3JhcHBlclBhZGRpbmdSaWdodDsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgbGEgZmluZSBkZWxsJ2lmcmFtZSBlIGlsIGxhdG8gc2luaXN0cm8gZGVsbG8gc2NoZXJtbywgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSAyMzAgKyB3cmFwcGVyUGFkZGluZ0xlZnQ7IC8vIDIzMCDDqCBsYSB2YXJpYWJpbGUgJHNpZGViYXItd2lkdGhcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29tbW9uU3R5bGVzID0gXCJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDk5OTk7IGJhY2tncm91bmQtY29sb3I6ICMwMDA7IG9wYWNpdHk6IDAuNTsgXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93XCIsIFwiaGlkZGVuXCIsIFwiaW1wb3J0YW50XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0b3AuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC10b3BcIjtcclxuICAgICAgICAgICAgICAgIHRvcC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogJHt0b3BIZWlnaHR9cHg7IHRvcDogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KTsgbGVmdDogJHtsZWZ0U3BhY2V9cHhgO1xyXG4gICAgICAgICAgICAgICAgdG9wLmlkID0gXCJ0b3BcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGxlZnQuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC1sZWZ0XCI7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IHdpZHRoOiAke2xlZnRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5pZCA9IFwibGVmdFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtcmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiBjYWxjKDEwMCUgLSAke3RvcEhlaWdodH1weCk7IHRvcDogJHt0b3BIZWlnaHR9cHg7IHJpZ2h0OiAwOyB3aWR0aDogJHtyaWdodFNwYWNlfXB4O2A7XHJcbiAgICAgICAgICAgICAgICByaWdodC5pZCA9IFwicmlnaHRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1jbG9zZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBDbG9zZWApO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIm92ZXJmbG93XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGVmdFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodG9wKVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodG9wKTtcclxuICAgICAgICAgICAgICAgIGlmIChsZWZ0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGVmdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93LXlcIiwgXCJhdXRvXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWZyZXNoQm91bmRhcmllc09uTWVudUNvbGxhcHNlKCl7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBRS9CLHFHQUFxRztBQUVyRyxNQUFNLE9BQU8sc0JBQXNCO0lBUS9CLFlBQW9CLFVBQTBCLEVBQVUsTUFBYztRQUFsRCxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOL0QsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUczQixvQkFBZSxHQUFxQyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUc5RixJQUFJLENBQUMsVUFBVSxHQUEyQyxNQUFNLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUIsSUFBRyxJQUFJLENBQUMsUUFBUTtZQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDckYsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixN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UyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGVBQWUsU0FBUyxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksSUFBSTtZQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7bUhBbEtRLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlXCI7XHJcblxyXG4vLyBMaWJyYXJpZXNcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKiBDbGFzc2UgY2hlIGNvbnRpZW5lIHR1dHRlIGxlIGluZm9ybWF6aW9uaSBzdWxsJ2VtYmVkZGluZyBpbiB1biB1bmljbyBjb250ZW5pdG9yZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgQXBwRW1iZWRkaW5nRXh0ZW5zaW9ucyB7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgRW1iZWRkaW5nTGV2ZWw6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgTWFpbldpbmRvdzogYW55O1xyXG5cclxuICAgIHB1YmxpYyBNZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8e2V2ZW50OiBhbnksIGRhdGE6IGFueX0+ID0gbmV3IFN1YmplY3Q8e2V2ZW50OiBhbnksIGRhdGE6IGFueX0+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBtc2dTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IDx7IHBhcmVudDogYW55LCBwb3N0TWVzc2FnZTogRnVuY3Rpb24gfT53aW5kb3c7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuTWFpbldpbmRvdy5wYXJlbnQgIT0gdGhpcy5NYWluV2luZG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IHRoaXMuTWFpbldpbmRvdy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkaW5nTGV2ZWwrKztcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkoKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLmNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkodGhpcy5NYWluV2luZG93LCB0aGlzLk1lc3NhZ2VPYnNlcnZlcilcclxuICAgIH1cclxuXHJcbiAgICBjb25maWd1cmVFbWJlZGRhYmlsaXR5KCkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZ25vcm8gaSBtaWVpIG1lc3NhZ2dpIGRhdG8gY2hlIG1pIGludGVyZXNzYW5vIHNvbG8gcXVlbGxpIGRlZ2xpIGFsdHJpIGlmcmFtZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09IHdpbmRvdyAmJiBldmVudD8uZGF0YT8udHlwZSAhPSBcIm1vZGFsLW9wZW5cIilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5uZXh0KHsgZXZlbnQ6IFwid2luZG93LW1lc3NhZ2VcIiwgZGF0YTogZXZlbnQ/LmRhdGF9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiY29uZmlybVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBjb25maXJtIC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/LnRleHR9LCBUaXRsZTogJHtldmVudD8uZGF0YT8udGl0bGV9LCBJRDogJHtldmVudD8uZGF0YT8uZ3VpZH1gKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VXaW5kb3cgPSAoZXZlbnQuc291cmNlIGFzIFdpbmRvdyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFzZVJlc3BvbnNlID0geyB0eXBlOiBcImNvbmZpcm0tcmVzcG9uc2VcIiwgZ3VpZDogZXZlbnQ/LmRhdGE/Lmd1aWQgfTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIG5hdmlnYXRlIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVkaXJlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVkaXJlY3QgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZXZlbnQ/LmRhdGE/LnVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTmF2aWdhdGlvbiAtPiAke2V2ZW50Py5kYXRhPy5pbnRlcm5hbE5hdmlnYXRpb24gPyBcIltpbnRlcm5hbF1cIiA6IFwiXCJ9ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJuYXZpZ2F0aW9uXCIsIGRhdGE6IGV2ZW50Py5kYXRhfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1vcGVuXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nUmlnaHQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLXJpZ2h0XCIpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBPcGVuIC0+IEJhY2tkcm9wIEhlaWdodDogJHtldmVudD8uZGF0YT8uYmFja2Ryb3BIZWlnaHR9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHRvcEhlaWdodDogbnVtYmVyID0gMTE2OyAvLyB2YWxvcmUgZmlzc28sIGRpc3RhbnphIGZyYSBpbCB0b3AgZSBsJ2luaXppbyBkZWxsJ2lmcmFtZSwgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgcmlnaHRTcGFjZTogbnVtYmVyID0gd3JhcHBlclBhZGRpbmdSaWdodDsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgbGEgZmluZSBkZWxsJ2lmcmFtZSBlIGlsIGxhdG8gc2luaXN0cm8gZGVsbG8gc2NoZXJtbywgbm9uIHNhcsOgIG1haSBkaXZlcnNvXHJcbiAgICAgICAgICAgICAgICB2YXIgbGVmdFNwYWNlOiBudW1iZXIgPSAyMzAgKyB3cmFwcGVyUGFkZGluZ0xlZnQ7IC8vIDIzMCDDqCBsYSB2YXJpYWJpbGUgJHNpZGViYXItd2lkdGhcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29tbW9uU3R5bGVzID0gXCJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDk5OTk7IGJhY2tncm91bmQtY29sb3I6ICMwMDA7IG9wYWNpdHk6IDAuNTsgXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93XCIsIFwiaGlkZGVuXCIsIFwiaW1wb3J0YW50XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0b3AuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC10b3BcIjtcclxuICAgICAgICAgICAgICAgIHRvcC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogJHt0b3BIZWlnaHR9cHg7IHRvcDogMDsgd2lkdGg6IGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KTsgbGVmdDogJHtsZWZ0U3BhY2V9cHhgO1xyXG4gICAgICAgICAgICAgICAgdG9wLmlkID0gXCJ0b3BcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIGxlZnQuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC1sZWZ0XCI7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IHdpZHRoOiAke2xlZnRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5pZCA9IFwibGVmdFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtcmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiBjYWxjKDEwMCUgLSAke3RvcEhlaWdodH1weCk7IHRvcDogJHt0b3BIZWlnaHR9cHg7IHJpZ2h0OiAwOyB3aWR0aDogJHtyaWdodFNwYWNlfXB4O2A7XHJcbiAgICAgICAgICAgICAgICByaWdodC5pZCA9IFwicmlnaHRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJtb2RhbC1jbG9zZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBNb2RhbCBDbG9zZWApO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIm92ZXJmbG93XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGVmdFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodG9wKVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodG9wKTtcclxuICAgICAgICAgICAgICAgIGlmIChsZWZ0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGVmdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyaWdodCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcIm92ZXJmbG93LXlcIiwgXCJhdXRvXCIsIFwiaW1wb3J0YW50XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWZyZXNoQm91bmRhcmllc09uTWVudUNvbGxhcHNlKCl7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -8,25 +8,17 @@ import { of } from "rxjs";
|
|
|
8
8
|
import { filter, first, map, take } from "rxjs/operators";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@esfaenza/localizations";
|
|
11
|
-
import * as i2 from "./extensions.
|
|
12
|
-
import * as i3 from "./extensions.hashing.service";
|
|
11
|
+
import * as i2 from "./extensions.hashing.service";
|
|
13
12
|
/**
|
|
14
13
|
* Service che fornisce funzionalità di alert nei tipi fondamentali: success, info, warning e danger
|
|
15
14
|
*/
|
|
16
15
|
export class MessageService {
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
* @ignore
|
|
21
|
-
*/
|
|
22
|
-
constructor(injector, locProvider, emb, hash) {
|
|
16
|
+
/** Costruttore @ignore */
|
|
17
|
+
constructor(injector, locProvider, hash) {
|
|
23
18
|
this.injector = injector;
|
|
24
19
|
this.locProvider = locProvider;
|
|
25
|
-
this.emb = emb;
|
|
26
20
|
this.hash = hash;
|
|
27
|
-
/**
|
|
28
|
-
* Oggetto statico in supporto alla localizzazione
|
|
29
|
-
*/
|
|
21
|
+
/** Oggetto statico in supporto alla localizzazione */
|
|
30
22
|
this.loc = {
|
|
31
23
|
'Confirm': { 'en-US': "Confirm", 'it-IT': "Conferma", },
|
|
32
24
|
'Cancel': { 'en-US': "Cancel", 'it-IT': "Annulla", },
|
|
@@ -36,12 +28,22 @@ export class MessageService {
|
|
|
36
28
|
'Success': { 'en-US': "Success", 'it-IT': "Successo", },
|
|
37
29
|
'Warning': { 'en-US': "Warning", 'it-IT': "Attenzione", }
|
|
38
30
|
};
|
|
31
|
+
/** Supporto all'Embedding */
|
|
32
|
+
this.Embedded = false;
|
|
33
|
+
this.MainWindow = null;
|
|
34
|
+
this.MessageObserver = null;
|
|
39
35
|
this.GuidRepsonseFunctionsMap = {};
|
|
40
36
|
this.init();
|
|
41
37
|
}
|
|
38
|
+
/** Getter per il servizio dei toast. ngx-toastr è fatta talmente male che la service dev'essere recuperata in questo modo */
|
|
42
39
|
get toastr() {
|
|
43
40
|
return this.injector.get(ToastrService);
|
|
44
41
|
}
|
|
42
|
+
configureEmbeddability(mainWindow, messageObserver) {
|
|
43
|
+
this.Embedded = true;
|
|
44
|
+
this.MainWindow = mainWindow;
|
|
45
|
+
this.MessageObserver = messageObserver;
|
|
46
|
+
}
|
|
45
47
|
async init() {
|
|
46
48
|
let LOCALE = this.locProvider ? await this.locProvider.Locale.pipe(first()).toPromise() : 'it-IT';
|
|
47
49
|
this.expiredSessionSwal = swal.mixin({
|
|
@@ -143,8 +145,8 @@ export class MessageService {
|
|
|
143
145
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
144
146
|
*/
|
|
145
147
|
simpleSuccess(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
146
|
-
if (this.
|
|
147
|
-
this.
|
|
148
|
+
if (this.Embedded) {
|
|
149
|
+
this.MainWindow.postMessage({ type: "alert", level: 'success', msg: text }, "*");
|
|
148
150
|
return;
|
|
149
151
|
}
|
|
150
152
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -163,8 +165,8 @@ export class MessageService {
|
|
|
163
165
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
164
166
|
*/
|
|
165
167
|
simpleInfo(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
166
|
-
if (this.
|
|
167
|
-
this.
|
|
168
|
+
if (this.Embedded) {
|
|
169
|
+
this.MainWindow.postMessage({ type: "alert", level: 'info', msg: text }, "*");
|
|
168
170
|
return;
|
|
169
171
|
}
|
|
170
172
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -183,8 +185,8 @@ export class MessageService {
|
|
|
183
185
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
184
186
|
*/
|
|
185
187
|
simpleError(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
186
|
-
if (this.
|
|
187
|
-
this.
|
|
188
|
+
if (this.Embedded) {
|
|
189
|
+
this.MainWindow.postMessage({ type: "alert", level: 'error', msg: text }, "*");
|
|
188
190
|
return;
|
|
189
191
|
}
|
|
190
192
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -203,8 +205,8 @@ export class MessageService {
|
|
|
203
205
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
204
206
|
*/
|
|
205
207
|
simpleWarning(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
206
|
-
if (this.
|
|
207
|
-
this.
|
|
208
|
+
if (this.Embedded) {
|
|
209
|
+
this.MainWindow.postMessage({ type: "alert", level: 'warning', msg: text }, "*");
|
|
208
210
|
return;
|
|
209
211
|
}
|
|
210
212
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -266,13 +268,13 @@ export class MessageService {
|
|
|
266
268
|
this.withChoiceBase("success", title, text, onsuccess, onerror);
|
|
267
269
|
}
|
|
268
270
|
withChoiceBase(level, title, text, onsuccess, onerror) {
|
|
269
|
-
if (this.
|
|
271
|
+
if (this.Embedded) {
|
|
270
272
|
let guid = this.hash.getGUID();
|
|
271
273
|
this.GuidRepsonseFunctionsMap[guid] = { onsuccess, onerror };
|
|
272
|
-
this.
|
|
274
|
+
this.MainWindow.postMessage({ type: "confirm", level, title, text, guid }, "*");
|
|
273
275
|
// Observe sulla risposta
|
|
274
276
|
console.log("Inviata confirm request alla pagina principale, in attesa di risposta...");
|
|
275
|
-
this.
|
|
277
|
+
this.MessageObserver.pipe(filter(event => event?.data?.type == "confirm-response" && event?.data?.guid == guid), take(1)).subscribe(event => {
|
|
276
278
|
console.log("Event listener su window-message. Risposta pergiunta");
|
|
277
279
|
if (event?.data?.result === true)
|
|
278
280
|
this.GuidRepsonseFunctionsMap[guid].onsuccess();
|
|
@@ -281,7 +283,7 @@ export class MessageService {
|
|
|
281
283
|
});
|
|
282
284
|
}
|
|
283
285
|
else
|
|
284
|
-
(level == "warning" ? this._simpleWarningWithChoice : this._simpleSuccessWithChoice)(title, text, onsuccess, onerror);
|
|
286
|
+
(level == "warning" ? this._simpleWarningWithChoice.bind(this) : this._simpleSuccessWithChoice.bind(this))(title, text, onsuccess, onerror);
|
|
285
287
|
}
|
|
286
288
|
/**
|
|
287
289
|
* Mostra un messaggio di success con richiesta di conferma e gestisce il risultato chiamato i callback **onconfirm** o **onabort**
|
|
@@ -407,7 +409,7 @@ export class MessageService {
|
|
|
407
409
|
}
|
|
408
410
|
}
|
|
409
411
|
}
|
|
410
|
-
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, deps: [{ token: Injector }, { token: i1.BaseLocalization, optional: true }, { token: i2.
|
|
412
|
+
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, deps: [{ token: Injector }, { token: i1.BaseLocalization, optional: true }, { token: i2.HashingService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
411
413
|
MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, providedIn: "root" });
|
|
412
414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, decorators: [{
|
|
413
415
|
type: Injectable,
|
|
@@ -417,5 +419,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
417
419
|
args: [Injector]
|
|
418
420
|
}] }, { type: i1.BaseLocalization, decorators: [{
|
|
419
421
|
type: Optional
|
|
420
|
-
}] }, { type: i2.
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTztBQUNQLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVMxRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBc0R2Qjs7OztPQUlHO0lBQ0gsWUFBNkMsUUFBa0IsRUFBc0IsV0FBNkIsRUFBVSxHQUEyQixFQUFVLElBQW9CO1FBQXhJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBc0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQXpEckw7O1dBRUc7UUFDSyxRQUFHLEdBQUc7WUFDVixTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEdBQUc7WUFDdkQsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxHQUFHO1lBQ3BELE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsR0FBRztZQUNq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LElBQUk7UUFDL0ksSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLFVBQVU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVuQyxJQUFJLFdBQVc7Z0JBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNILElBQUksUUFBUTtnQkFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRS9CLElBQUksV0FBVztnQkFBRSxXQUFXLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7OzJHQXZjUSxjQUFjLGtCQTJESSxRQUFROytHQTNEMUIsY0FBYyxjQURELE1BQU07MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkE0RFYsTUFBTTsyQkFBQyxRQUFROzswQkFBK0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gRXNcclxuaW1wb3J0IHsgQmFzZUxvY2FsaXphdGlvbiB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCBzd2FsIGZyb20gXCJzd2VldGFsZXJ0MlwiO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBDYWxsUmVzdWx0IH0gZnJvbSBcIi4uL21vZGVscy9DYWxsUmVzdWx0XCI7XHJcblxyXG4vLyBTZXJ2aXppXHJcbmltcG9ydCB7IEFwcEVtYmVkZGluZ0V4dGVuc2lvbnMgfSBmcm9tIFwiLi9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEhhc2hpbmdTZXJ2aWNlIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5oYXNoaW5nLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSBmdW56aW9uYWxpdMOgIGRpIGFsZXJ0IG5laSB0aXBpIGZvbmRhbWVudGFsaTogc3VjY2VzcywgaW5mbywgd2FybmluZyBlIGRhbmdlclxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgTWVzc2FnZVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2dnZXR0byBzdGF0aWNvIGluIHN1cHBvcnRvIGFsbGEgbG9jYWxpenphemlvbmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MgPSB7XHJcbiAgICAgICAgJ0NvbmZpcm0nOiB7ICdlbi1VUyc6IFwiQ29uZmlybVwiLCAnaXQtSVQnOiBcIkNvbmZlcm1hXCIsIH0sXHJcbiAgICAgICAgJ0NhbmNlbCc6IHsgJ2VuLVVTJzogXCJDYW5jZWxcIiwgJ2l0LUlUJzogXCJBbm51bGxhXCIsIH0sXHJcbiAgICAgICAgJ0Nsb3NlJzogeyAnZW4tVVMnOiBcIkNsb3NlXCIsICdpdC1JVCc6IFwiQ2hpdWRpXCIsIH0sXHJcbiAgICAgICAgJ0Vycm9yJzogeyAnZW4tVVMnOiBcIkVycm9yXCIsICdpdC1JVCc6IFwiRXJyb3JlXCIsIH0sXHJcbiAgICAgICAgJ0luZm8nOiB7ICdlbi1VUyc6IFwiSW5mb1wiLCAnaXQtSVQnOiBcIkluZm9ybWF6aW9uZVwiLCB9LFxyXG4gICAgICAgICdTdWNjZXNzJzogeyAnZW4tVVMnOiBcIlN1Y2Nlc3NcIiwgJ2l0LUlUJzogXCJTdWNjZXNzb1wiLCB9LFxyXG4gICAgICAgICdXYXJuaW5nJzogeyAnZW4tVVMnOiBcIldhcm5pbmdcIiwgJ2l0LUlUJzogXCJBdHRlbnppb25lXCIsIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWFcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB3YXJuaW5nU3dhbFdpdGhDYW5jZWw6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIHdhcm5pbmcgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN1Y2Nlc3NTd2FsV2l0aENhbmNlbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gZXJyb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXJyb3JTd2FsOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biBtZXNzYWdnaW8gZGkgc3VjY2Vzc29cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWNjZXNzU3dhbDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZGkgdW4gYXZ2aXNvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgd2FybmluZ1N3YWw6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGRpIHVuIG1lc3NhZ2dpbyBpbmZvcm1hdGl2b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluZm9Td2FsOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIHBlciBsYSBzZXNzaW9uZSBzY2FkdXRhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXhwaXJlZFNlc3Npb25Td2FsOiBhbnk7XHJcblxyXG4gICAgcHJpdmF0ZSBnZXQgdG9hc3RyKCk6IFRvYXN0clNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUb2FzdHJTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KEluamVjdG9yKSBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2NQcm92aWRlcjogQmFzZUxvY2FsaXphdGlvbiwgcHJpdmF0ZSBlbWI6IEFwcEVtYmVkZGluZ0V4dGVuc2lvbnMsIHByaXZhdGUgaGFzaDogSGFzaGluZ1NlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbml0KCkge1xyXG4gICAgICAgIGxldCBMT0NBTEUgPSB0aGlzLmxvY1Byb3ZpZGVyID8gYXdhaXQgdGhpcy5sb2NQcm92aWRlci5Mb2NhbGUucGlwZShmaXJzdCgpKS50b1Byb21pc2UoKSA6ICdpdC1JVCc7XHJcblxyXG4gICAgICAgIHRoaXMuZXhwaXJlZFNlc3Npb25Td2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ0xvZ2luJyxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcclxuICAgICAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbFdpdGhDYW5jZWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiU3VjY2Vzc1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJidG4gYnRuLXNlY29uZGFyeSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ29uZmlybVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNhbmNlbFwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJXYXJuaW5nXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDb25maXJtXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2FuY2VsXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMud2FybmluZ1N3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiV2FybmluZ1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJTdWNjZXNzXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmVycm9yU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJFcnJvclwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5mb1N3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiSW5mb1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJpbmZvXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBzdWNjZXNzb1xyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVTdWNjZXNzKHRleHQ6IHN0cmluZywgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCA9IG51bGwsIHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQ6IG51bWJlciA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5lbWIuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWIuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiYWxlcnRcIiwgbGV2ZWw6ICdzdWNjZXNzJywgbXNnOiB0ZXh0IH0sIFwiKlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLnN1Y2Nlc3NTd2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5zdWNjZXNzKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBpbmZvcm1hemlvbmVcclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlSW5mbyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1iLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1iLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnaW5mbycsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy5pbmZvU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIuaW5mbyh0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlc2VudGF6aW9uZSBkaSB1biBzZW1wbGljZSBtZXNzYWdnaW8gZGkgZXJyb3JlXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBsZSBpbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBlIHRvYXN0ciDDqCBhYmlsaXRhdG8sIHZpZW5lIG1vc3RyYXRvIGFsIGNlbnRyb1xyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIG92ZXJyaWRlIHN1IHRvYXN0ciB2dW9sIGRpcmUgY2hlIMOoIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhIGUgYXBwYXJlIGluIGFsdG8gYSBkZXN0cmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgbW9zdHJhcmVcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSBRdWFsb3JhIHNpYSB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSwgbmUgaW5kaWNhIGlsIHRpcG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZUVycm9yKHRleHQ6IHN0cmluZywgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCA9IG51bGwsIHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQ6IG51bWJlciA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5lbWIuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWIuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiYWxlcnRcIiwgbGV2ZWw6ICdlcnJvcicsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy5lcnJvclN3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLmVycm9yKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBhdnZpc29cclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlV2FybmluZyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1iLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1iLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnd2FybmluZycsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy53YXJuaW5nU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIud2FybmluZyh0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmlwdWxpc2NlIHR1dHRpIGkgbWVzc2FnZ2kgcHJlc2VudGkgaW4gdW4gZGF0byBtb21lbnRvIHN1bGxvIHNjaGVybW9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcclxuICAgICAgICBzd2FsLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IFJlc3RpdHVpc2NlIHVuYSBQcm9taXNlIGNvbCByaXN1bHRhdG8gc2NlbHRvIGRhbGwndXRlbnRlIChjb25mZXJtYSBvIG5vKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJvbWlzZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gYmFzZSBhbGxhIGNvbmZpZ3VyYXppb25lIGF0dHVhbGUgZSBhbGwnZXZlbnR1YWxlIG92ZXJyaWRlIHBlciBsYSBjaGlhbWF0YSBkZWwgY2FzbyBpbmRpY2Egc2UgYmlzb2duYSB1dGlsaXp6YXJlIHRvYXN0ciBvIHN3ZWV0YWxlcnRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBwcm92aWRlck92ZXJyaWRlIE92ZXJyaWRlIGFsbGEgbW9kYWxpdMOgIGNvbmZpZ3VyYXRhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtcInRvYXN0clwiIHwgXCJzd2FsXCJ9IEluZGljYXppb25lIHN1IGNoZSBwcm92aWRlciBkaSBtZXNzYWdnaSBkaSBhdnZpc28gZGViYmEgZXNzZXJlIHV0aWxpenphdG9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b2FzdHJPclN3YWwocHJvdmlkZXJPdmVycmlkZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCk6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB7XHJcbiAgICAgICAgaWYgKHByb3ZpZGVyT3ZlcnJpZGUgIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyT3ZlcnJpZGU7XHJcbiAgICAgICAgcmV0dXJuIFwic3dhbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25zdWNjZXNzKiogbyAqKm9uZXJyb3IqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbnN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25lcnJvciBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGVycm9yaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVXYXJuaW5nV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uc3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBvbmVycm9yOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICBvbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25lcnJvcilcclxuICAgICAgICAgICAgICAgIG9uZXJyb3IoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIEd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcDogeyBbaWQ6IHN0cmluZ106IHsgb25zdWNjZXNzOiBGdW5jdGlvbiwgb25lcnJvcjogRnVuY3Rpb24gfSB9ID0ge307XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMud2l0aENob2ljZUJhc2UoXCJ3YXJuaW5nXCIsIHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMud2l0aENob2ljZUJhc2UoXCJzdWNjZXNzXCIsIHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB3aXRoQ2hvaWNlQmFzZShsZXZlbDogXCJ3YXJuaW5nXCIgfCBcInN1Y2Nlc3NcIiwgdGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBvbnN1Y2Nlc3M/OiBGdW5jdGlvbiwgb25lcnJvcj86IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1iLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBndWlkID0gdGhpcy5oYXNoLmdldEdVSUQoKTtcclxuICAgICAgICAgICAgdGhpcy5HdWlkUmVwc29uc2VGdW5jdGlvbnNNYXBbZ3VpZF0gPSB7IG9uc3VjY2Vzcywgb25lcnJvciB9O1xyXG4gICAgICAgICAgICB0aGlzLmVtYi5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJjb25maXJtXCIsIGxldmVsLCB0aXRsZSwgdGV4dCwgZ3VpZCB9LCBcIipcIik7XHJcblxyXG4gICAgICAgICAgICAvLyBPYnNlcnZlIHN1bGxhIHJpc3Bvc3RhXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSW52aWF0YSBjb25maXJtIHJlcXVlc3QgYWxsYSBwYWdpbmEgcHJpbmNpcGFsZSwgaW4gYXR0ZXNhIGRpIHJpc3Bvc3RhLi4uXCIpXHJcbiAgICAgICAgICAgIHRoaXMuZW1iLk1lc3NhZ2VPYnNlcnZlci5waXBlKGZpbHRlcihldmVudCA9PiBldmVudD8uZGF0YT8udHlwZSA9PSBcImNvbmZpcm0tcmVzcG9uc2VcIiAmJiBldmVudD8uZGF0YT8uZ3VpZCA9PSBndWlkKSwgdGFrZSgxKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXZlbnQgbGlzdGVuZXIgc3Ugd2luZG93LW1lc3NhZ2UuIFJpc3Bvc3RhIHBlcmdpdW50YVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmRhdGE/LnJlc3VsdCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXS5vbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy5yZXN1bHQgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5HdWlkUmVwc29uc2VGdW5jdGlvbnNNYXBbZ3VpZF0ub25lcnJvcigpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIChsZXZlbCA9PSBcIndhcm5pbmdcIiA/IHRoaXMuX3NpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlIDogdGhpcy5fc2ltcGxlU3VjY2Vzc1dpdGhDaG9pY2UpKHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgc3VjY2VzcyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hIGUgZ2VzdGlzY2UgaWwgcmlzdWx0YXRvIGNoaWFtYXRvIGkgY2FsbGJhY2sgKipvbmNvbmZpcm0qKiBvICoqb25hYm9ydCoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9uY29uZmlybSBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGNvbmZlcm1hXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmFib3J0IENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgYW5udWxsYW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZmlybXRleHQgVGVzdG8gZGVsIHB1bHNhbnRlIGRpIGF6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGFib3J0dGV4dCBUZXN0byBkZWwgcHVsc2FudGUgZGkgYW5udWxsYW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3NpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25jb25maXJtOiBGdW5jdGlvbiA9IG51bGwsIG9uYWJvcnQ6IEZ1bmN0aW9uID0gbnVsbCwgY29uZmlybXRleHQ6IHN0cmluZyA9IFwiXCIsIGFib3J0dGV4dDogc3RyaW5nID0gJycpIHtcclxuICAgICAgICB2YXIgY29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICBodG1sOiB0ZXh0XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoY29uZmlybXRleHQpXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bXCJjb25maXJtQnV0dG9uVGV4dFwiXSA9IGNvbmZpcm10ZXh0O1xyXG4gICAgICAgIGlmIChhYm9ydHRleHQpXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bXCJjYW5jZWxCdXR0b25UZXh0XCJdID0gYWJvcnR0ZXh0O1xyXG5cclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTd2FsV2l0aENhbmNlbC5maXJlKGNvbmZpZ3VyYXRpb24pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9uY29uZmlybSlcclxuICAgICAgICAgICAgICAgIG9uY29uZmlybSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChvbmFib3J0KVxyXG4gICAgICAgICAgICAgICAgb25hYm9ydCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25zdWNjZXNzKiogbyAqKm9uZXJyb3IqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvYnNlcnZhYmxlU2ltcGxlV2FybmluZ1dpdGhDaG9pY2UodGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpKS5waXBlKG1hcCh0ID0+ICEhdC52YWx1ZSkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjaGUgbGEgc2Vzc2lvbmUgY29ycmVudGUgw6ggc2NhZHV0YSBlIHByb3BvbmUgYWxsJ3V0ZW50ZSBkaSBuYXZpZ2FyZSBhbCBsb2dpbi4gUXVhbG9yYSBsJ3V0ZW50ZSBkZWNpZGVzc2UgZGkgZmFybG8gXHJcbiAgICAgKiB2ZXJyw6AgY2hpYW1hdGEgbGEgZnVuemlvbmUgZGkgY2FsbGJhY2sgKipvbm5hdmlnYXRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9ubmF2aWdhdGUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBuYXZpZ2F6aW9uZSBpbiBjb3Jzb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXhwaXJlZFNlc3Npb25NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25uYXZpZ2F0ZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5leHBpcmVkU2Vzc2lvblN3YWwuZmlyZSh0aXRsZSwgdGV4dCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUgJiYgb25uYXZpZ2F0ZSlcclxuICAgICAgICAgICAgICAgIG9ubmF2aWdhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKkNhbGxSZXN1bHQqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0NhbGxSZXN1bHR9IHJlc3BvbnNlIFJpc3Bvc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0U3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RGYWlsdXJlIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzcG9uc2U6IENhbGxSZXN1bHQsIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXN3YXJuaW5nKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVXYXJuaW5nKHJlc3BvbnNlLndhcm5pbmcpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKChlcnJvck1zZyA/IGVycm9yTXNnICsgXCI6IFwiIDogXCJcIikgKyByZXNwb25zZS5oYXNlcnJvciA/IHJlc3BvbnNlLmVycm9yIDogJ1tOTyBFUlIuXScpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKnN0cmluZyoqLCBjb25zaWRlcmFuZG8gY2hlOlxyXG4gICAgICogXHJcbiAgICAgKiBTdHJpbmdhIHZ1b3RhIC0tPiBUdXR0byBiZW5lXHJcbiAgICAgKiBcclxuICAgICAqIFN0cmluZ2EgcGllbmEgLS0+IFF1ZXN0byDDqCBpbCBtZXNzYWdnaW8gZCdlcnJvcmUgcGVyIGN1aSBsYSBjaGlhbWF0YSDDqCBmYWxsaXRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZXNwb25zZSBSaXNwb3N0YSByaWNldnV0YSBkYWwgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzc01zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdFN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0RmFpbHVyZSBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFuYWdlU3RyaW5nUmVzcG9uc2UocmVzcG9uc2U6IHN0cmluZywgc3VjY2Vzc01zZzogc3RyaW5nLCBlcnJvck1zZzogc3RyaW5nLCBwb3N0U3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBwb3N0RmFpbHVyZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKGVycm9yTXNnICsgXCI6IFwiICsgcmVzcG9uc2UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKmJvb2xlYW4qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgUmlzcG9zdGEgcmljZXZ1dGEgZGFsIHNlcnZlclxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RTdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdEZhaWx1cmUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1hbmFnZVN0cmluZ1Jlc3BvbnNlQm9vbChyZXNwb25zZTogYm9vbGVhbiwgc3VjY2Vzc01zZzogc3RyaW5nLCBlcnJvck1zZzogc3RyaW5nLCBwb3N0U3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBwb3N0RmFpbHVyZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGlmIChzdWNjZXNzTXNnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVTdWNjZXNzKHN1Y2Nlc3NNc2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RTdWNjZXNzKSBwb3N0U3VjY2VzcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvck1zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlRXJyb3IoZXJyb3JNc2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
422
|
+
}] }, { type: i2.HashingService }]; } });
|
|
423
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTztBQUNQLE9BQU8sRUFBdUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVMxRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBNEN2QiwyQkFBMkI7SUFDM0IsWUFBNkMsUUFBa0IsRUFBc0IsV0FBNkIsRUFBVSxJQUFvQjtRQUFuRyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQXNCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWdCO1FBM0NoSixzREFBc0Q7UUFDOUMsUUFBRyxHQUFHO1lBQ1YsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHO1lBQ3ZELFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsR0FBRztZQUNwRCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUc7WUFDakQsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFB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QUFHLFFBQVEsQ0FBQyxDQUFDO1lBRWpELElBQUksV0FBVztnQkFBRSxXQUFXLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLHdCQUF3QixDQUFDLFFBQWlCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLGNBQXdCLElBQUksRUFBRSxjQUF3QixJQUFJO1FBQy9JLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxVQUFVO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFbkMsSUFBSSxXQUFXO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDSCxJQUFJLFFBQVE7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUvQixJQUFJLFdBQVc7Z0JBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEM7SUFDTCxDQUFDOzsyR0EvYlEsY0FBYyxrQkE2Q0ksUUFBUTsrR0E3QzFCLGNBQWMsY0FERCxNQUFNOzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBOENWLE1BQU07MkJBQUMsUUFBUTs7MEJBQStCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwsIEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIEVzXHJcbmltcG9ydCB7IEJhc2VMb2NhbGl6YXRpb24gfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgc3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcclxuXHJcbi8vIFJYSlNcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAsIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQ2FsbFJlc3VsdCB9IGZyb20gXCIuLi9tb2RlbHMvQ2FsbFJlc3VsdFwiO1xyXG5cclxuLy8gU2Vydml6aVxyXG5pbXBvcnQgeyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIYXNoaW5nU2VydmljZSB9IGZyb20gXCIuL2V4dGVuc2lvbnMuaGFzaGluZy5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgZnVuemlvbmFsaXTDoCBkaSBhbGVydCBuZWkgdGlwaSBmb25kYW1lbnRhbGk6IHN1Y2Nlc3MsIGluZm8sIHdhcm5pbmcgZSBkYW5nZXJcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgICAvKiogT2dnZXR0byBzdGF0aWNvIGluIHN1cHBvcnRvIGFsbGEgbG9jYWxpenphemlvbmUgKi9cclxuICAgIHByaXZhdGUgbG9jID0ge1xyXG4gICAgICAgICdDb25maXJtJzogeyAnZW4tVVMnOiBcIkNvbmZpcm1cIiwgJ2l0LUlUJzogXCJDb25mZXJtYVwiLCB9LFxyXG4gICAgICAgICdDYW5jZWwnOiB7ICdlbi1VUyc6IFwiQ2FuY2VsXCIsICdpdC1JVCc6IFwiQW5udWxsYVwiLCB9LFxyXG4gICAgICAgICdDbG9zZSc6IHsgJ2VuLVVTJzogXCJDbG9zZVwiLCAnaXQtSVQnOiBcIkNoaXVkaVwiLCB9LFxyXG4gICAgICAgICdFcnJvcic6IHsgJ2VuLVVTJzogXCJFcnJvclwiLCAnaXQtSVQnOiBcIkVycm9yZVwiLCB9LFxyXG4gICAgICAgICdJbmZvJzogeyAnZW4tVVMnOiBcIkluZm9cIiwgJ2l0LUlUJzogXCJJbmZvcm1hemlvbmVcIiwgfSxcclxuICAgICAgICAnU3VjY2Vzcyc6IHsgJ2VuLVVTJzogXCJTdWNjZXNzXCIsICdpdC1JVCc6IFwiU3VjY2Vzc29cIiwgfSxcclxuICAgICAgICAnV2FybmluZyc6IHsgJ2VuLVVTJzogXCJXYXJuaW5nXCIsICdpdC1JVCc6IFwiQXR0ZW56aW9uZVwiLCB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgKi9cclxuICAgIHByaXZhdGUgd2FybmluZ1N3YWxXaXRoQ2FuY2VsOiBhbnk7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGRpIHVuIHdhcm5pbmcgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSAqL1xyXG4gICAgcHJpdmF0ZSBzdWNjZXNzU3dhbFdpdGhDYW5jZWw6IGFueTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gZXJyb3JlICovXHJcbiAgICBwcml2YXRlIGVycm9yU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biBtZXNzYWdnaW8gZGkgc3VjY2Vzc28gKi9cclxuICAgIHByaXZhdGUgc3VjY2Vzc1N3YWw6IGFueTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gYXZ2aXNvICovXHJcbiAgICBwcml2YXRlIHdhcm5pbmdTd2FsOiBhbnk7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGRpIHVuIG1lc3NhZ2dpbyBpbmZvcm1hdGl2byAqL1xyXG4gICAgcHJpdmF0ZSBpbmZvU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIHBlciBsYSBzZXNzaW9uZSBzY2FkdXRhICovXHJcbiAgICBwcml2YXRlIGV4cGlyZWRTZXNzaW9uU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBHZXR0ZXIgcGVyIGlsIHNlcnZpemlvIGRlaSB0b2FzdC4gbmd4LXRvYXN0ciDDqCBmYXR0YSB0YWxtZW50ZSBtYWxlIGNoZSBsYSBzZXJ2aWNlIGRldidlc3NlcmUgcmVjdXBlcmF0YSBpbiBxdWVzdG8gbW9kbyAqL1xyXG4gICAgcHJpdmF0ZSBnZXQgdG9hc3RyKCk6IFRvYXN0clNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUb2FzdHJTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogU3VwcG9ydG8gYWxsJ0VtYmVkZGluZyAqL1xyXG4gICAgRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIE1haW5XaW5kb3c6IFdpbmRvdyA9IG51bGw7XHJcbiAgICBNZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4gPSBudWxsO1xyXG5cclxuICAgIC8qKiBDb3N0cnV0dG9yZSAgQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBAT3B0aW9uYWwoKSBwcml2YXRlIGxvY1Byb3ZpZGVyOiBCYXNlTG9jYWxpemF0aW9uLCBwcml2YXRlIGhhc2g6IEhhc2hpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkobWFpbldpbmRvdzogV2luZG93LCBtZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4pIHtcclxuICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLk1haW5XaW5kb3cgPSBtYWluV2luZG93O1xyXG4gICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyID0gbWVzc2FnZU9ic2VydmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQoKSB7XHJcbiAgICAgICAgbGV0IExPQ0FMRSA9IHRoaXMubG9jUHJvdmlkZXIgPyBhd2FpdCB0aGlzLmxvY1Byb3ZpZGVyLkxvY2FsZS5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpIDogJ2l0LUlUJztcclxuXHJcbiAgICAgICAgdGhpcy5leHBpcmVkU2Vzc2lvblN3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnTG9naW4nLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTd2FsV2l0aENhbmNlbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJTdWNjZXNzXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDb25maXJtXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2FuY2VsXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIldhcm5pbmdcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b246IFwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNvbmZpcm1cIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDYW5jZWxcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy53YXJuaW5nU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJXYXJuaW5nXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTd2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIlN1Y2Nlc3NcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZXJyb3JTd2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIkVycm9yXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcImVycm9yXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbmZvU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJJbmZvXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcImluZm9cIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBsZSBpbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBlIHRvYXN0ciDDqCBhYmlsaXRhdG8sIHZpZW5lIG1vc3RyYXRvIGFsIGNlbnRyb1xyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIG92ZXJyaWRlIHN1IHRvYXN0ciB2dW9sIGRpcmUgY2hlIMOoIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhIGUgYXBwYXJlIGluIGFsdG8gYSBkZXN0cmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgbW9zdHJhcmVcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSBRdWFsb3JhIHNpYSB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSwgbmUgaW5kaWNhIGlsIHRpcG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZVN1Y2Nlc3ModGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiYWxlcnRcIiwgbGV2ZWw6ICdzdWNjZXNzJywgbXNnOiB0ZXh0IH0sIFwiKlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLnN1Y2Nlc3NTd2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5zdWNjZXNzKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBpbmZvcm1hemlvbmVcclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlSW5mbyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ2luZm8nLCBtc2c6IHRleHQgfSwgXCIqXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9zID0gdGhpcy50b2FzdHJPclN3YWwoc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSk7XHJcblxyXG4gICAgICAgIGlmICh0b3MgPT0gXCJzd2FsXCIpIHRoaXMuaW5mb1N3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLmluZm8odGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIGVycm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVFcnJvcih0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ2Vycm9yJywgbXNnOiB0ZXh0IH0sIFwiKlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLmVycm9yU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIuZXJyb3IodGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIGF2dmlzb1xyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVXYXJuaW5nKHRleHQ6IHN0cmluZywgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCA9IG51bGwsIHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQ6IG51bWJlciA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnd2FybmluZycsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy53YXJuaW5nU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIud2FybmluZyh0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmlwdWxpc2NlIHR1dHRpIGkgbWVzc2FnZ2kgcHJlc2VudGkgaW4gdW4gZGF0byBtb21lbnRvIHN1bGxvIHNjaGVybW9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcclxuICAgICAgICBzd2FsLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IFJlc3RpdHVpc2NlIHVuYSBQcm9taXNlIGNvbCByaXN1bHRhdG8gc2NlbHRvIGRhbGwndXRlbnRlIChjb25mZXJtYSBvIG5vKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJvbWlzZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gYmFzZSBhbGxhIGNvbmZpZ3VyYXppb25lIGF0dHVhbGUgZSBhbGwnZXZlbnR1YWxlIG92ZXJyaWRlIHBlciBsYSBjaGlhbWF0YSBkZWwgY2FzbyBpbmRpY2Egc2UgYmlzb2duYSB1dGlsaXp6YXJlIHRvYXN0ciBvIHN3ZWV0YWxlcnRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBwcm92aWRlck92ZXJyaWRlIE92ZXJyaWRlIGFsbGEgbW9kYWxpdMOgIGNvbmZpZ3VyYXRhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtcInRvYXN0clwiIHwgXCJzd2FsXCJ9IEluZGljYXppb25lIHN1IGNoZSBwcm92aWRlciBkaSBtZXNzYWdnaSBkaSBhdnZpc28gZGViYmEgZXNzZXJlIHV0aWxpenphdG9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b2FzdHJPclN3YWwocHJvdmlkZXJPdmVycmlkZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCk6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB7XHJcbiAgICAgICAgaWYgKHByb3ZpZGVyT3ZlcnJpZGUgIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyT3ZlcnJpZGU7XHJcbiAgICAgICAgcmV0dXJuIFwic3dhbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25zdWNjZXNzKiogbyAqKm9uZXJyb3IqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbnN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25lcnJvciBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGVycm9yaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVXYXJuaW5nV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uc3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBvbmVycm9yOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICBvbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25lcnJvcilcclxuICAgICAgICAgICAgICAgIG9uZXJyb3IoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIEd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcDogeyBbaWQ6IHN0cmluZ106IHsgb25zdWNjZXNzOiBGdW5jdGlvbiwgb25lcnJvcjogRnVuY3Rpb24gfSB9ID0ge307XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMud2l0aENob2ljZUJhc2UoXCJ3YXJuaW5nXCIsIHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMud2l0aENob2ljZUJhc2UoXCJzdWNjZXNzXCIsIHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB3aXRoQ2hvaWNlQmFzZShsZXZlbDogXCJ3YXJuaW5nXCIgfCBcInN1Y2Nlc3NcIiwgdGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBvbnN1Y2Nlc3M/OiBGdW5jdGlvbiwgb25lcnJvcj86IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgbGV0IGd1aWQgPSB0aGlzLmhhc2guZ2V0R1VJRCgpO1xyXG4gICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXSA9IHsgb25zdWNjZXNzLCBvbmVycm9yIH07XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiY29uZmlybVwiLCBsZXZlbCwgdGl0bGUsIHRleHQsIGd1aWQgfSwgXCIqXCIpO1xyXG5cclxuICAgICAgICAgICAgLy8gT2JzZXJ2ZSBzdWxsYSByaXNwb3N0YVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkludmlhdGEgY29uZmlybSByZXF1ZXN0IGFsbGEgcGFnaW5hIHByaW5jaXBhbGUsIGluIGF0dGVzYSBkaSByaXNwb3N0YS4uLlwiKVxyXG4gICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5waXBlKGZpbHRlcihldmVudCA9PiBldmVudD8uZGF0YT8udHlwZSA9PSBcImNvbmZpcm0tcmVzcG9uc2VcIiAmJiBldmVudD8uZGF0YT8uZ3VpZCA9PSBndWlkKSwgdGFrZSgxKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXZlbnQgbGlzdGVuZXIgc3Ugd2luZG93LW1lc3NhZ2UuIFJpc3Bvc3RhIHBlcmdpdW50YVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmRhdGE/LnJlc3VsdCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXS5vbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy5yZXN1bHQgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5HdWlkUmVwc29uc2VGdW5jdGlvbnNNYXBbZ3VpZF0ub25lcnJvcigpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIChsZXZlbCA9PSBcIndhcm5pbmdcIiA/IHRoaXMuX3NpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlLmJpbmQodGhpcykgOiB0aGlzLl9zaW1wbGVTdWNjZXNzV2l0aENob2ljZS5iaW5kKHRoaXMpKSh0aXRsZSwgdGV4dCwgb25zdWNjZXNzLCBvbmVycm9yKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIHN1Y2Nlc3MgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25jb25maXJtKiogbyAqKm9uYWJvcnQqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmNvbmZpcm0gQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25hYm9ydCBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGFubnVsbGFtZW50b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm10ZXh0IFRlc3RvIGRlbCBwdWxzYW50ZSBkaSBhemlvbmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhYm9ydHRleHQgVGVzdG8gZGVsIHB1bHNhbnRlIGRpIGFubnVsbGFtZW50b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVTdWNjZXNzV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uY29uZmlybTogRnVuY3Rpb24gPSBudWxsLCBvbmFib3J0OiBGdW5jdGlvbiA9IG51bGwsIGNvbmZpcm10ZXh0OiBzdHJpbmcgPSBcIlwiLCBhYm9ydHRleHQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgaHRtbDogdGV4dFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGNvbmZpcm10ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY29uZmlybUJ1dHRvblRleHRcIl0gPSBjb25maXJtdGV4dDtcclxuICAgICAgICBpZiAoYWJvcnR0ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY2FuY2VsQnV0dG9uVGV4dFwiXSA9IGFib3J0dGV4dDtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbFdpdGhDYW5jZWwuZmlyZShjb25maWd1cmF0aW9uKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbmNvbmZpcm0pXHJcbiAgICAgICAgICAgICAgICBvbmNvbmZpcm0oKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25hYm9ydClcclxuICAgICAgICAgICAgICAgIG9uYWJvcnQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgYXZ2aXNvIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgZSBnZXN0aXNjZSBpbCByaXN1bHRhdG8gY2hpYW1hdG8gaSBjYWxsYmFjayAqKm9uc3VjY2VzcyoqIG8gKipvbmVycm9yKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb2JzZXJ2YWJsZVNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBvZih0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KSkucGlwZShtYXAodCA9PiAhIXQudmFsdWUpKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY2hlIGxhIHNlc3Npb25lIGNvcnJlbnRlIMOoIHNjYWR1dGEgZSBwcm9wb25lIGFsbCd1dGVudGUgZGkgbmF2aWdhcmUgYWwgbG9naW4uIFF1YWxvcmEgbCd1dGVudGUgZGVjaWRlc3NlIGRpIGZhcmxvIFxyXG4gICAgICogdmVycsOgIGNoaWFtYXRhIGxhIGZ1bnppb25lIGRpIGNhbGxiYWNrICoqb25uYXZpZ2F0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbm5hdmlnYXRlIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgbmF2aWdhemlvbmUgaW4gY29yc29cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4cGlyZWRTZXNzaW9uTWVzc2FnZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9ubmF2aWdhdGU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZXhwaXJlZFNlc3Npb25Td2FsLmZpcmUodGl0bGUsIHRleHQpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9ubmF2aWdhdGUpXHJcbiAgICAgICAgICAgICAgICBvbm5hdmlnYXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipDYWxsUmVzdWx0KipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtDYWxsUmVzdWx0fSByZXNwb25zZSBSaXNwb3N0YSByaWNldnV0YSBkYWwgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzc01zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdFN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0RmFpbHVyZSBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFuYWdlQ2FsbFJlc3VsdFJlc3BvbnNlKHJlc3BvbnNlOiBDYWxsUmVzdWx0LCBzdWNjZXNzTXNnOiBzdHJpbmcsIGVycm9yTXNnOiBzdHJpbmcsIHBvc3RTdWNjZXNzOiBGdW5jdGlvbiA9IG51bGwsIHBvc3RGYWlsdXJlOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzd2FybmluZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlV2FybmluZyhyZXNwb25zZS53YXJuaW5nKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHN1Y2Nlc3NNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocG9zdFN1Y2Nlc3MpIHBvc3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaW1wbGVFcnJvcigoZXJyb3JNc2cgPyBlcnJvck1zZyArIFwiOiBcIiA6IFwiXCIpICsgcmVzcG9uc2UuaGFzZXJyb3IgPyByZXNwb25zZS5lcnJvciA6ICdbTk8gRVJSLl0nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipzdHJpbmcqKiwgY29uc2lkZXJhbmRvIGNoZTpcclxuICAgICAqIFxyXG4gICAgICogU3RyaW5nYSB2dW90YSAtLT4gVHV0dG8gYmVuZVxyXG4gICAgICogXHJcbiAgICAgKiBTdHJpbmdhIHBpZW5hIC0tPiBRdWVzdG8gw6ggaWwgbWVzc2FnZ2lvIGQnZXJyb3JlIHBlciBjdWkgbGEgY2hpYW1hdGEgw6ggZmFsbGl0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgUmlzcG9zdGEgcmljZXZ1dGEgZGFsIHNlcnZlclxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RTdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdEZhaWx1cmUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1hbmFnZVN0cmluZ1Jlc3BvbnNlKHJlc3BvbnNlOiBzdHJpbmcsIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgaWYgKHN1Y2Nlc3NNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocG9zdFN1Y2Nlc3MpIHBvc3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGVycm9yTXNnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVFcnJvcihlcnJvck1zZyArIFwiOiBcIiArIHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipib29sZWFuKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJlc3BvbnNlIFJpc3Bvc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0U3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RGYWlsdXJlIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYW5hZ2VTdHJpbmdSZXNwb25zZUJvb2wocmVzcG9uc2U6IGJvb2xlYW4sIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKGVycm9yTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -629,19 +629,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
629
629
|
* Service che fornisce funzionalità di alert nei tipi fondamentali: success, info, warning e danger
|
|
630
630
|
*/
|
|
631
631
|
class MessageService {
|
|
632
|
-
/**
|
|
633
|
-
|
|
634
|
-
*
|
|
635
|
-
* @ignore
|
|
636
|
-
*/
|
|
637
|
-
constructor(injector, locProvider, emb, hash) {
|
|
632
|
+
/** Costruttore @ignore */
|
|
633
|
+
constructor(injector, locProvider, hash) {
|
|
638
634
|
this.injector = injector;
|
|
639
635
|
this.locProvider = locProvider;
|
|
640
|
-
this.emb = emb;
|
|
641
636
|
this.hash = hash;
|
|
642
|
-
/**
|
|
643
|
-
* Oggetto statico in supporto alla localizzazione
|
|
644
|
-
*/
|
|
637
|
+
/** Oggetto statico in supporto alla localizzazione */
|
|
645
638
|
this.loc = {
|
|
646
639
|
'Confirm': { 'en-US': "Confirm", 'it-IT': "Conferma", },
|
|
647
640
|
'Cancel': { 'en-US': "Cancel", 'it-IT': "Annulla", },
|
|
@@ -651,12 +644,22 @@ class MessageService {
|
|
|
651
644
|
'Success': { 'en-US': "Success", 'it-IT': "Successo", },
|
|
652
645
|
'Warning': { 'en-US': "Warning", 'it-IT': "Attenzione", }
|
|
653
646
|
};
|
|
647
|
+
/** Supporto all'Embedding */
|
|
648
|
+
this.Embedded = false;
|
|
649
|
+
this.MainWindow = null;
|
|
650
|
+
this.MessageObserver = null;
|
|
654
651
|
this.GuidRepsonseFunctionsMap = {};
|
|
655
652
|
this.init();
|
|
656
653
|
}
|
|
654
|
+
/** Getter per il servizio dei toast. ngx-toastr è fatta talmente male che la service dev'essere recuperata in questo modo */
|
|
657
655
|
get toastr() {
|
|
658
656
|
return this.injector.get(ToastrService);
|
|
659
657
|
}
|
|
658
|
+
configureEmbeddability(mainWindow, messageObserver) {
|
|
659
|
+
this.Embedded = true;
|
|
660
|
+
this.MainWindow = mainWindow;
|
|
661
|
+
this.MessageObserver = messageObserver;
|
|
662
|
+
}
|
|
660
663
|
init() {
|
|
661
664
|
return __awaiter(this, void 0, void 0, function* () {
|
|
662
665
|
let LOCALE = this.locProvider ? yield this.locProvider.Locale.pipe(first()).toPromise() : 'it-IT';
|
|
@@ -760,8 +763,8 @@ class MessageService {
|
|
|
760
763
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
761
764
|
*/
|
|
762
765
|
simpleSuccess(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
763
|
-
if (this.
|
|
764
|
-
this.
|
|
766
|
+
if (this.Embedded) {
|
|
767
|
+
this.MainWindow.postMessage({ type: "alert", level: 'success', msg: text }, "*");
|
|
765
768
|
return;
|
|
766
769
|
}
|
|
767
770
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -780,8 +783,8 @@ class MessageService {
|
|
|
780
783
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
781
784
|
*/
|
|
782
785
|
simpleInfo(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
783
|
-
if (this.
|
|
784
|
-
this.
|
|
786
|
+
if (this.Embedded) {
|
|
787
|
+
this.MainWindow.postMessage({ type: "alert", level: 'info', msg: text }, "*");
|
|
785
788
|
return;
|
|
786
789
|
}
|
|
787
790
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -800,8 +803,8 @@ class MessageService {
|
|
|
800
803
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
801
804
|
*/
|
|
802
805
|
simpleError(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
803
|
-
if (this.
|
|
804
|
-
this.
|
|
806
|
+
if (this.Embedded) {
|
|
807
|
+
this.MainWindow.postMessage({ type: "alert", level: 'error', msg: text }, "*");
|
|
805
808
|
return;
|
|
806
809
|
}
|
|
807
810
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -820,8 +823,8 @@ class MessageService {
|
|
|
820
823
|
* @param {"toastr" | "swal" | null} secondaryNotificationType Qualora sia una notifica secondaria, ne indica il tipo
|
|
821
824
|
*/
|
|
822
825
|
simpleWarning(text, secondaryNotificationType = null, secondaryNotificationTimeout = null) {
|
|
823
|
-
if (this.
|
|
824
|
-
this.
|
|
826
|
+
if (this.Embedded) {
|
|
827
|
+
this.MainWindow.postMessage({ type: "alert", level: 'warning', msg: text }, "*");
|
|
825
828
|
return;
|
|
826
829
|
}
|
|
827
830
|
let tos = this.toastrOrSwal(secondaryNotificationType);
|
|
@@ -883,13 +886,13 @@ class MessageService {
|
|
|
883
886
|
this.withChoiceBase("success", title, text, onsuccess, onerror);
|
|
884
887
|
}
|
|
885
888
|
withChoiceBase(level, title, text, onsuccess, onerror) {
|
|
886
|
-
if (this.
|
|
889
|
+
if (this.Embedded) {
|
|
887
890
|
let guid = this.hash.getGUID();
|
|
888
891
|
this.GuidRepsonseFunctionsMap[guid] = { onsuccess, onerror };
|
|
889
|
-
this.
|
|
892
|
+
this.MainWindow.postMessage({ type: "confirm", level, title, text, guid }, "*");
|
|
890
893
|
// Observe sulla risposta
|
|
891
894
|
console.log("Inviata confirm request alla pagina principale, in attesa di risposta...");
|
|
892
|
-
this.
|
|
895
|
+
this.MessageObserver.pipe(filter(event => { var _a, _b; return ((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.type) == "confirm-response" && ((_b = event === null || event === void 0 ? void 0 : event.data) === null || _b === void 0 ? void 0 : _b.guid) == guid; }), take(1)).subscribe(event => {
|
|
893
896
|
var _a, _b;
|
|
894
897
|
console.log("Event listener su window-message. Risposta pergiunta");
|
|
895
898
|
if (((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.result) === true)
|
|
@@ -899,7 +902,7 @@ class MessageService {
|
|
|
899
902
|
});
|
|
900
903
|
}
|
|
901
904
|
else
|
|
902
|
-
(level == "warning" ? this._simpleWarningWithChoice : this._simpleSuccessWithChoice)(title, text, onsuccess, onerror);
|
|
905
|
+
(level == "warning" ? this._simpleWarningWithChoice.bind(this) : this._simpleSuccessWithChoice.bind(this))(title, text, onsuccess, onerror);
|
|
903
906
|
}
|
|
904
907
|
/**
|
|
905
908
|
* Mostra un messaggio di success con richiesta di conferma e gestisce il risultato chiamato i callback **onconfirm** o **onabort**
|
|
@@ -1025,7 +1028,7 @@ class MessageService {
|
|
|
1025
1028
|
}
|
|
1026
1029
|
}
|
|
1027
1030
|
}
|
|
1028
|
-
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, deps: [{ token: Injector }, { token: i1.BaseLocalization, optional: true }, { token:
|
|
1031
|
+
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, deps: [{ token: Injector }, { token: i1.BaseLocalization, optional: true }, { token: HashingService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1029
1032
|
MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, providedIn: "root" });
|
|
1030
1033
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MessageService, decorators: [{
|
|
1031
1034
|
type: Injectable,
|
|
@@ -1036,7 +1039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
1036
1039
|
args: [Injector]
|
|
1037
1040
|
}] }, { type: i1.BaseLocalization, decorators: [{
|
|
1038
1041
|
type: Optional
|
|
1039
|
-
}] }, { type:
|
|
1042
|
+
}] }, { type: HashingService }];
|
|
1040
1043
|
} });
|
|
1041
1044
|
|
|
1042
1045
|
// Angular
|
|
@@ -1048,15 +1051,17 @@ class AppEmbeddingExtensions {
|
|
|
1048
1051
|
this.Embedded = false;
|
|
1049
1052
|
this.EmbeddingLevel = 0;
|
|
1050
1053
|
this.MessageObserver = new Subject();
|
|
1051
|
-
this.setupEmbeddability();
|
|
1052
1054
|
this.MainWindow = window;
|
|
1053
1055
|
while (this.MainWindow.parent != this.MainWindow) {
|
|
1054
1056
|
this.MainWindow = this.MainWindow.parent;
|
|
1055
1057
|
this.EmbeddingLevel++;
|
|
1056
1058
|
this.Embedded = true;
|
|
1057
1059
|
}
|
|
1060
|
+
this.configureEmbeddability();
|
|
1061
|
+
if (this.Embedded)
|
|
1062
|
+
this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
|
|
1058
1063
|
}
|
|
1059
|
-
|
|
1064
|
+
configureEmbeddability() {
|
|
1060
1065
|
window.onmessage = (event) => {
|
|
1061
1066
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
|
|
1062
1067
|
// Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
|