@netgrif/components-core 6.2.1 → 6.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/commons/schema.d.ts +1 -0
  2. package/esm2020/assets/i18n/de.json +9 -8
  3. package/esm2020/assets/i18n/en.json +2 -1
  4. package/esm2020/assets/i18n/sk.json +2 -1
  5. package/esm2020/commons/schema.mjs +1 -1
  6. package/esm2020/lib/authorization/permission/access.service.mjs +2 -2
  7. package/esm2020/lib/authorization/role/role-guard.service.mjs +36 -11
  8. package/esm2020/lib/data-fields/file-field/abstract-file-field.component.mjs +6 -3
  9. package/esm2020/lib/data-fields/file-list-field/abstract-file-list-field.component.mjs +5 -2
  10. package/esm2020/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.mjs +3 -2
  11. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +7 -4
  12. package/esm2020/lib/resources/engine-endpoint/task-resource.service.mjs +3 -3
  13. package/esm2020/lib/search/models/category/case/case-dataset.mjs +7 -4
  14. package/esm2020/lib/search/search-operand-input-component/abstract-search-operand-input.component.mjs +3 -3
  15. package/esm2020/lib/side-menu/content-components/new-case/abstract-new-case.component.mjs +22 -11
  16. package/esm2020/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.mjs +2 -3
  17. package/fesm2015/netgrif-components-core.mjs +96 -47
  18. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  19. package/fesm2020/netgrif-components-core.mjs +96 -47
  20. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  21. package/lib/authorization/role/role-guard.service.d.ts +2 -1
  22. package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +1 -0
  23. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +1 -1
  24. package/lib/resources/engine-endpoint/task-resource.service.d.ts +2 -1
  25. package/lib/search/search-operand-input-component/abstract-search-operand-input.component.d.ts +1 -1
  26. package/package.json +1 -1
  27. package/src/assets/i18n/de.json +9 -8
  28. package/src/assets/i18n/en.json +2 -1
  29. package/src/assets/i18n/sk.json +2 -1
@@ -222,6 +222,7 @@ export interface Access {
222
222
  * For `string` values the format is: <net import id>.<role name>
223
223
  */
224
224
  role?: Array<string> | string | RoleAccess | Array<RoleAccess>;
225
+ bannedRole?: Array<string> | string | RoleAccess | Array<RoleAccess>;
225
226
  group?: Array<string> | string;
226
227
  authority?: Array<string> | string;
227
228
  [k: string]: any;
@@ -87,14 +87,15 @@
87
87
  "errThird": "Sie müssen eine Farbe auswählen.",
88
88
  "noNets": "Es gibt keine erlaubte Netze",
89
89
  "createCase": "Neuen Fall würde erfolgreich erzeugt",
90
- "defaultCaseName": "mit einem Standardfallnamen"
90
+ "defaultCaseName": "mit einem Standardfallnamen",
91
+ "createCaseError": "Neuer Fall wurde erstellt, aber beim Ausführen von Aktionen ist ein Fehler aufgetreten"
91
92
  },
92
93
  "user": {
93
- "assign": "Benützer zuweisen",
94
- "choose": "Benützer auswählen",
95
- "noUser": "Es gibt keine Benützer",
96
- "err": "Beim laden der Benützer ist eine Fehler aufgetreten",
97
- "showcase": "Benützeransichtmodus ist nicht ausgewählt!"
94
+ "assign": "Benutzer zuweisen",
95
+ "choose": "Benutzer auswählen",
96
+ "noUser": "Es gibt keine Benutzer",
97
+ "err": "Beim laden der Benutzer ist eine Fehler aufgetreten",
98
+ "showcase": "Die Benutzeransicht ist nicht gesetzt!"
98
99
  },
99
100
  "ldapGroup": {
100
101
  "choose": "LDAP-Gruppe suchen",
@@ -288,8 +289,8 @@
288
289
  "enterEmail": "Ihre E-Mail Adresse eingeben"
289
290
  },
290
291
  "login": {
291
- "length": "Das Benützername muss mindestens 4 Zeichen enthalten",
292
- "login": "Benützername",
292
+ "length": "Das Benutzername muss mindestens 4 Zeichen enthalten",
293
+ "login": "Benutzername",
293
294
  "wrongCredentials": "Falsche Anmeldeinformationen!",
294
295
  "loginButton": "Anmelden",
295
296
  "reset": "Kennwort wiederherstellen",
@@ -87,7 +87,8 @@
87
87
  "errThird": "Color is required.",
88
88
  "noNets": "No allowed Nets",
89
89
  "createCase": "Successful create new case",
90
- "defaultCaseName": "with default case name"
90
+ "defaultCaseName": "with default case name",
91
+ "createCaseError": "A new case was created, but an error occurred while executing actions"
91
92
  },
92
93
  "user": {
93
94
  "assign": "User Assign",
@@ -87,7 +87,8 @@
87
87
  "errThird": "Farba je povinné pole.",
88
88
  "noNets": "Žiadne povolené siete",
89
89
  "createCase": "Úspešne vytvorený nový prípad",
90
- "defaultCaseName": "s prednastaveným názvom prípadu"
90
+ "defaultCaseName": "s prednastaveným názvom prípadu",
91
+ "createCaseError": "Nový prípad vytvorený, nastala však chyba pri vykonávaní akcií"
91
92
  },
92
93
  "user": {
93
94
  "assign": "Priradiť používateľa",
@@ -4,4 +4,4 @@
4
4
  // noticing. However as soon as we include other interfaces from the lib here, schematics will reference them and fail to compile.
5
5
  // We need to find a good solution for this.
6
6
  export {};
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2NvbW1vbnMvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRJQUE0STtBQUM1SSwySUFBMkk7QUFDM0ksMklBQTJJO0FBQzNJLG1JQUFtSTtBQUNuSSw2Q0FBNkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPIEJVRyAxNy40LjIwMjAgLSB0aGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gdmVyeSBwcmVjaXNlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnRlbmRlZCBzdHJ1Y3R1cmUgb2YgbmFlLmpzb24gQlVUIHRoaXMgaXMgYSAuZC50cyBmaWxlLlxuLy8gIElmIHdlIGluY2x1ZGUgb3RoZXIgaW50ZXJmYWNlcyBmcm9tIHRoZSBsaWIgaW50byB0aGlzIGZpbGUsIHNjaGVtYXRpYyBjb21waWxhdGlvbiBmYWlscy4gU2NoZW1hdGljcyByZWZlcmVuY2UgdGhpcyBmaWxlIHdpdGhvdXQgcHJvYmxlbVxuLy8gIGJ1dCB0aGV5IGNhbid0IHJlZmVyZW5jZSBmaWxlcyBhYm92ZSB0aGVpciBzb3VyY2VSb290IGRlY2xhcmVkIGluIHRoZWlyIHRzY29uZmlnIGZpbGUuIFNpbmNlIHRoaXMgZmlsZSBpcyAuZC50cyBpdCBydW5zIHdpdGhvdXQgYW55Ym9keVxuLy8gIG5vdGljaW5nLiBIb3dldmVyIGFzIHNvb24gYXMgd2UgaW5jbHVkZSBvdGhlciBpbnRlcmZhY2VzIGZyb20gdGhlIGxpYiBoZXJlLCBzY2hlbWF0aWNzIHdpbGwgcmVmZXJlbmNlIHRoZW0gYW5kIGZhaWwgdG8gY29tcGlsZS5cbi8vICBXZSBuZWVkIHRvIGZpbmQgYSBnb29kIHNvbHV0aW9uIGZvciB0aGlzLlxuXG4vKipcbiAqIFRoaXMgZmlsZSBpcyBzaW5nbGUgcG9pbnQgb2YgdHJ1dGggZm9yIE5BRSBmcm9udGVuZCBjb25maWd1cmF0aW9uIHNjaGVtYS5cbiAqL1xuXG5leHBvcnQgdHlwZSBSZXNvdXJjZXMgPVxuICAgIHwgUmVzb3VyY2VcbiAgICB8IEFycmF5PFJlc291cmNlPjtcblxuLyoqXG4gKiBTY2hlbWEgZm9yIE5BRSBjb25maWd1cmF0aW9uIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldGdyaWZBcHBsaWNhdGlvbkVuZ2luZSB7XG4gICAgcHJvdmlkZXJzOiBTZXRBdXRoQW5kUmVzb3VyY2VzQWRkcmVzcztcbiAgICB0aGVtZTogVGhlbWU7XG4gICAgbG9jYWxlcz86IExvY2FsZXM7XG4gICAgZmlsdGVycz86IEZpbHRlcnM7XG4gICAgdmlld3M6IFZpZXdzO1xuICAgIHNlcnZpY2VzPzogU2VydmljZXM7XG5cbiAgICBbazogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsZXMge1xuICAgIC8qKlxuICAgICAqIEtleSBpcyBsb2NhbGUgY29kZSAoSVNPNjM5LTEgJy0nIElTTzMxNjYtMSlcbiAgICAgKiBWYWx1ZSBpcyBhIGZpbGUgb2YgdHJhbnNsYXRpb25cbiAgICAgKi9cbiAgICBbazogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldEF1dGhBbmRSZXNvdXJjZXNBZGRyZXNzIHtcbiAgICBhdXRoOiBBdXRoO1xuICAgIHJlc291cmNlczogUmVzb3VyY2VzO1xuXG4gICAgW2s6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoIHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb246IHN0cmluZztcbiAgICBzZXNzaW9uQmVhcmVyPzogc3RyaW5nO1xuICAgIGVuZHBvaW50cz86IHN0cmluZyB8IHsgW2s6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgW2s6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBmb3JtYXQ6IHN0cmluZztcbiAgICBvcGVuQXBpPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFsbGV0czoge1xuICAgICAgICBsaWdodDoge1xuICAgICAgICAgICAgcHJpbWFyeTpcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAnNTAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcxMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcyMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICczMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc0MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc1MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc2MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc3MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc4MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc5MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGNvbnRyYXN0PzogeyAnbGlnaHQnOiBBcnJheTxzdHJpbmc+OyAnZGFyayc6IEFycmF5PHN0cmluZz47IH07XG4gICAgICAgICAgICAgICAgW2s6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzZWNvbmRhcnk/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdhcm4/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIGRhcms/OiB7XG4gICAgICAgICAgICBwcmltYXJ5PzpcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAnNTAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcxMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcyMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICczMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc0MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc1MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc2MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc3MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc4MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc5MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGNvbnRyYXN0PzogeyAnbGlnaHQnOiBBcnJheTxzdHJpbmc+OyAnZGFyayc6IEFycmF5PHN0cmluZz47IH07XG4gICAgICAgICAgICAgICAgW2s6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzZWNvbmRhcnk/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdhcm4/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfTtcblxuICAgIFtrOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVycyB7XG4gICAgW2s6IHN0cmluZ106IENvbmZpZ0ZpbHRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdGaWx0ZXIge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgYWNjZXNzPzogc3RyaW5nO1xuICAgIGJvZHk6IG9iamVjdCB8IEFycmF5PG9iamVjdD47XG4gICAgdHlwZTogJ1Rhc2snIHwgJ0Nhc2UnO1xuICAgIG1lcmdlT3BlcmF0b3I/OiAnQU5EJyB8ICdPUic7XG5cbiAgICBbazogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdzIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGludGVyZmFjZSB3YXMgcmVmZXJlbmNlZCBieSBgdW5kZWZpbmVkYCdzIEpTT04tU2NoZW1hIGRlZmluaXRpb25cbiAgICAgKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiXlthLXpBLVowLTlfXSskXCIuXG4gICAgICovXG4gICAgW2s6IHN0cmluZ106IFZpZXc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlldyB7XG4gICAgbGF5b3V0Pzoge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGVuYWJsZUNhc2VUaXRsZT86IGJvb2xlYW47XG4gICAgICAgIGlzQ2FzZVRpdGxlUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICBzaG93RGVsZXRlTWVudT86IGJvb2xlYW47XG4gICAgICAgIGNvbmZpcm1Xb3JrZmxvd0RlbGV0aW9uPzogYm9vbGVhbjtcbiAgICAgICAgcGFyYW1zPzoge1xuICAgICAgICAgICAgb3JpZW50YXRpb24/OiBzdHJpbmc7XG4gICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogT3ZlcnJpZGUgYXV0b2dlbmVyYXRlZCBuYW1lLiAnQ29tcG9uZW50JyB3aWxsIGJlIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgICAqL1xuICAgICAgICBjb21wb25lbnROYW1lPzogc3RyaW5nO1xuICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlIG93biBjdXN0b20gY29tcG9uZW50IGZvciB0aGlzIHZpZXdcbiAgICAgKi9cbiAgICBjb21wb25lbnQ/OiB7XG4gICAgICAgIGNsYXNzOiBzdHJpbmc7XG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICB9O1xuICAgIC8vIGxheW91dDogQ2FzZUxheW91dCB8IFRhc2tMYXlvdXQ7XG4gICAgYWNjZXNzOlxuICAgICAgICB8ICdwdWJsaWMnIHwgJ3ByaXZhdGUnXG4gICAgICAgIHwgQWNjZXNzO1xuICAgIG5hdmlnYXRpb246XG4gICAgICAgIHwgYm9vbGVhblxuICAgICAgICB8IHtcbiAgICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgICAgIGljb24/OiBzdHJpbmc7XG4gICAgICAgIHRyYW5zbGF0ZT86IGJvb2xlYW47XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICBjaGlsZHJlbj86IFZpZXdzO1xuICAgIHJvdXRpbmc6IHtcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBtYXRjaD86IGJvb2xlYW47XG4gICAgfTtcblxuICAgIFtrOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgYWNjZXNzIGNvbnN0cmFpbnRzIG9mIGFuIGFwcGxpY2F0aW9uIHZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3Mge1xuICAgIC8qKlxuICAgICAqIGBzdHJpbmdgIGFuZCBgQXJyYXk8c3RyaW5nPmAgdHlwZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIHRoZW0gd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gICAgICpcbiAgICAgKiAgRm9yIGBzdHJpbmdgIHZhbHVlcyB0aGUgZm9ybWF0IGlzOiA8bmV0IGltcG9ydCBpZD4uPHJvbGUgbmFtZT5cbiAgICAgKi9cbiAgICByb2xlPzogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyB8IFJvbGVBY2Nlc3MgfCBBcnJheTxSb2xlQWNjZXNzPjtcbiAgICBncm91cD86IEFycmF5PHN0cmluZz4gfCBzdHJpbmc7XG4gICAgYXV0aG9yaXR5PzogQXJyYXk8c3RyaW5nPiB8IHN0cmluZztcblxuICAgIFtrOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHNpbmdsZSByb2xlIGFjY2VzcyBjb25zdHJhaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZUFjY2VzcyB7XG4gICAgLyoqXG4gICAgICogUHJvY2VzcyBpZGVudGlmaWVyIChpbXBvcnQgSUQpXG4gICAgICovXG4gICAgcHJvY2Vzc0lkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUm9sZSBpbXBvcnQgSURcbiAgICAgKi9cbiAgICByb2xlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXNlTGF5b3V0IHtcbiAgICBuYW1lOiAnY2FzZVZpZXcnO1xuICAgIHBhcmFtczogb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tMYXlvdXQge1xuICAgIG5hbWU6ICd0YXNrVmlldyc7XG4gICAgcGFyYW1zOiBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZXMge1xuICAgIGxvZz86IHtcbiAgICAgICAgbGV2ZWw/OiBzdHJpbmc7XG4gICAgICAgIGxvZ1dpdGhEYXRlPzogYm9vbGVhbjtcbiAgICAgICAgc2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbjtcbiAgICAgICAgaW5jbHVkZUxvZ0xldmVsPzogYm9vbGVhbjtcbiAgICAgICAgcHVibGlzaGVycz86IEFycmF5PGFueT47XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICBhdXRoPzoge1xuICAgICAgICBsb2dvdXRSZWRpcmVjdD86IHN0cmluZztcbiAgICAgICAgbG9naW5SZWRpcmVjdD86IHN0cmluZztcbiAgICB9O1xuICAgIHJvdXRpbmc/OiB7XG4gICAgICAgIGRlZmF1bHRSZWRpcmVjdD86IHN0cmluZztcbiAgICAgICAgd2lsZGNhcmRSZWRpcmVjdD86IHN0cmluZztcbiAgICB9O1xuICAgIGRhdGFGaWVsZHM/OiB7XG4gICAgICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgICAgICBhcHBlYXJhbmNlPzogc3RyaW5nXG4gICAgfTtcbiAgICBsZWdhbDoge1xuICAgICAgICB0ZXJtc09mU2VydmljZTogc3RyaW5nLFxuICAgICAgICBwcml2YWN5UG9saWN5OiBzdHJpbmdcbiAgICB9O1xuICAgIGdyb3VwTmF2aWdhdGlvbj86IHtcbiAgICAgICAgZ3JvdXBOYXZpZ2F0aW9uUm91dGU6IHN0cmluZyxcbiAgICB9O1xuXG4gICAgW2s6IHN0cmluZ106IGFueTtcbn1cbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2NvbW1vbnMvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRJQUE0STtBQUM1SSwySUFBMkk7QUFDM0ksMklBQTJJO0FBQzNJLG1JQUFtSTtBQUNuSSw2Q0FBNkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPIEJVRyAxNy40LjIwMjAgLSB0aGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gdmVyeSBwcmVjaXNlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnRlbmRlZCBzdHJ1Y3R1cmUgb2YgbmFlLmpzb24gQlVUIHRoaXMgaXMgYSAuZC50cyBmaWxlLlxuLy8gIElmIHdlIGluY2x1ZGUgb3RoZXIgaW50ZXJmYWNlcyBmcm9tIHRoZSBsaWIgaW50byB0aGlzIGZpbGUsIHNjaGVtYXRpYyBjb21waWxhdGlvbiBmYWlscy4gU2NoZW1hdGljcyByZWZlcmVuY2UgdGhpcyBmaWxlIHdpdGhvdXQgcHJvYmxlbVxuLy8gIGJ1dCB0aGV5IGNhbid0IHJlZmVyZW5jZSBmaWxlcyBhYm92ZSB0aGVpciBzb3VyY2VSb290IGRlY2xhcmVkIGluIHRoZWlyIHRzY29uZmlnIGZpbGUuIFNpbmNlIHRoaXMgZmlsZSBpcyAuZC50cyBpdCBydW5zIHdpdGhvdXQgYW55Ym9keVxuLy8gIG5vdGljaW5nLiBIb3dldmVyIGFzIHNvb24gYXMgd2UgaW5jbHVkZSBvdGhlciBpbnRlcmZhY2VzIGZyb20gdGhlIGxpYiBoZXJlLCBzY2hlbWF0aWNzIHdpbGwgcmVmZXJlbmNlIHRoZW0gYW5kIGZhaWwgdG8gY29tcGlsZS5cbi8vICBXZSBuZWVkIHRvIGZpbmQgYSBnb29kIHNvbHV0aW9uIGZvciB0aGlzLlxuXG4vKipcbiAqIFRoaXMgZmlsZSBpcyBzaW5nbGUgcG9pbnQgb2YgdHJ1dGggZm9yIE5BRSBmcm9udGVuZCBjb25maWd1cmF0aW9uIHNjaGVtYS5cbiAqL1xuXG5leHBvcnQgdHlwZSBSZXNvdXJjZXMgPVxuICAgIHwgUmVzb3VyY2VcbiAgICB8IEFycmF5PFJlc291cmNlPjtcblxuLyoqXG4gKiBTY2hlbWEgZm9yIE5BRSBjb25maWd1cmF0aW9uIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldGdyaWZBcHBsaWNhdGlvbkVuZ2luZSB7XG4gICAgcHJvdmlkZXJzOiBTZXRBdXRoQW5kUmVzb3VyY2VzQWRkcmVzcztcbiAgICB0aGVtZTogVGhlbWU7XG4gICAgbG9jYWxlcz86IExvY2FsZXM7XG4gICAgZmlsdGVycz86IEZpbHRlcnM7XG4gICAgdmlld3M6IFZpZXdzO1xuICAgIHNlcnZpY2VzPzogU2VydmljZXM7XG5cbiAgICBbazogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsZXMge1xuICAgIC8qKlxuICAgICAqIEtleSBpcyBsb2NhbGUgY29kZSAoSVNPNjM5LTEgJy0nIElTTzMxNjYtMSlcbiAgICAgKiBWYWx1ZSBpcyBhIGZpbGUgb2YgdHJhbnNsYXRpb25cbiAgICAgKi9cbiAgICBbazogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldEF1dGhBbmRSZXNvdXJjZXNBZGRyZXNzIHtcbiAgICBhdXRoOiBBdXRoO1xuICAgIHJlc291cmNlczogUmVzb3VyY2VzO1xuXG4gICAgW2s6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoIHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb246IHN0cmluZztcbiAgICBzZXNzaW9uQmVhcmVyPzogc3RyaW5nO1xuICAgIGVuZHBvaW50cz86IHN0cmluZyB8IHsgW2s6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgW2s6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBmb3JtYXQ6IHN0cmluZztcbiAgICBvcGVuQXBpPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFsbGV0czoge1xuICAgICAgICBsaWdodDoge1xuICAgICAgICAgICAgcHJpbWFyeTpcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAnNTAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcxMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcyMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICczMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc0MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc1MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc2MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc3MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc4MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc5MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGNvbnRyYXN0PzogeyAnbGlnaHQnOiBBcnJheTxzdHJpbmc+OyAnZGFyayc6IEFycmF5PHN0cmluZz47IH07XG4gICAgICAgICAgICAgICAgW2s6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzZWNvbmRhcnk/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdhcm4/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIGRhcms/OiB7XG4gICAgICAgICAgICBwcmltYXJ5PzpcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAnNTAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcxMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICcyMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICczMDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc0MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc1MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc2MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc3MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc4MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICc5MDAnPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGNvbnRyYXN0PzogeyAnbGlnaHQnOiBBcnJheTxzdHJpbmc+OyAnZGFyayc6IEFycmF5PHN0cmluZz47IH07XG4gICAgICAgICAgICAgICAgW2s6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzZWNvbmRhcnk/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdhcm4/OlxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICc1MCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzEwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzIwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzMwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzQwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzUwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzYwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzcwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzgwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgJzkwMCc/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29udHJhc3Q/OiB7ICdsaWdodCc6IEFycmF5PHN0cmluZz47ICdkYXJrJzogQXJyYXk8c3RyaW5nPjsgfTtcbiAgICAgICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfTtcblxuICAgIFtrOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVycyB7XG4gICAgW2s6IHN0cmluZ106IENvbmZpZ0ZpbHRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdGaWx0ZXIge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgYWNjZXNzPzogc3RyaW5nO1xuICAgIGJvZHk6IG9iamVjdCB8IEFycmF5PG9iamVjdD47XG4gICAgdHlwZTogJ1Rhc2snIHwgJ0Nhc2UnO1xuICAgIG1lcmdlT3BlcmF0b3I/OiAnQU5EJyB8ICdPUic7XG5cbiAgICBbazogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdzIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGludGVyZmFjZSB3YXMgcmVmZXJlbmNlZCBieSBgdW5kZWZpbmVkYCdzIEpTT04tU2NoZW1hIGRlZmluaXRpb25cbiAgICAgKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiXlthLXpBLVowLTlfXSskXCIuXG4gICAgICovXG4gICAgW2s6IHN0cmluZ106IFZpZXc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlldyB7XG4gICAgbGF5b3V0Pzoge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGVuYWJsZUNhc2VUaXRsZT86IGJvb2xlYW47XG4gICAgICAgIGlzQ2FzZVRpdGxlUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICBzaG93RGVsZXRlTWVudT86IGJvb2xlYW47XG4gICAgICAgIGNvbmZpcm1Xb3JrZmxvd0RlbGV0aW9uPzogYm9vbGVhbjtcbiAgICAgICAgcGFyYW1zPzoge1xuICAgICAgICAgICAgb3JpZW50YXRpb24/OiBzdHJpbmc7XG4gICAgICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogT3ZlcnJpZGUgYXV0b2dlbmVyYXRlZCBuYW1lLiAnQ29tcG9uZW50JyB3aWxsIGJlIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgICAqL1xuICAgICAgICBjb21wb25lbnROYW1lPzogc3RyaW5nO1xuICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlIG93biBjdXN0b20gY29tcG9uZW50IGZvciB0aGlzIHZpZXdcbiAgICAgKi9cbiAgICBjb21wb25lbnQ/OiB7XG4gICAgICAgIGNsYXNzOiBzdHJpbmc7XG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICB9O1xuICAgIC8vIGxheW91dDogQ2FzZUxheW91dCB8IFRhc2tMYXlvdXQ7XG4gICAgYWNjZXNzOlxuICAgICAgICB8ICdwdWJsaWMnIHwgJ3ByaXZhdGUnXG4gICAgICAgIHwgQWNjZXNzO1xuICAgIG5hdmlnYXRpb246XG4gICAgICAgIHwgYm9vbGVhblxuICAgICAgICB8IHtcbiAgICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgICAgIGljb24/OiBzdHJpbmc7XG4gICAgICAgIHRyYW5zbGF0ZT86IGJvb2xlYW47XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICBjaGlsZHJlbj86IFZpZXdzO1xuICAgIHJvdXRpbmc6IHtcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBtYXRjaD86IGJvb2xlYW47XG4gICAgfTtcblxuICAgIFtrOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgYWNjZXNzIGNvbnN0cmFpbnRzIG9mIGFuIGFwcGxpY2F0aW9uIHZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3Mge1xuICAgIC8qKlxuICAgICAqIGBzdHJpbmdgIGFuZCBgQXJyYXk8c3RyaW5nPmAgdHlwZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIHRoZW0gd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gICAgICpcbiAgICAgKiAgRm9yIGBzdHJpbmdgIHZhbHVlcyB0aGUgZm9ybWF0IGlzOiA8bmV0IGltcG9ydCBpZD4uPHJvbGUgbmFtZT5cbiAgICAgKi9cbiAgICByb2xlPzogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyB8IFJvbGVBY2Nlc3MgfCBBcnJheTxSb2xlQWNjZXNzPjtcbiAgICBiYW5uZWRSb2xlPzogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyB8IFJvbGVBY2Nlc3MgfCBBcnJheTxSb2xlQWNjZXNzPjtcbiAgICBncm91cD86IEFycmF5PHN0cmluZz4gfCBzdHJpbmc7XG4gICAgYXV0aG9yaXR5PzogQXJyYXk8c3RyaW5nPiB8IHN0cmluZztcblxuICAgIFtrOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHNpbmdsZSByb2xlIGFjY2VzcyBjb25zdHJhaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZUFjY2VzcyB7XG4gICAgLyoqXG4gICAgICogUHJvY2VzcyBpZGVudGlmaWVyIChpbXBvcnQgSUQpXG4gICAgICovXG4gICAgcHJvY2Vzc0lkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUm9sZSBpbXBvcnQgSURcbiAgICAgKi9cbiAgICByb2xlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXNlTGF5b3V0IHtcbiAgICBuYW1lOiAnY2FzZVZpZXcnO1xuICAgIHBhcmFtczogb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tMYXlvdXQge1xuICAgIG5hbWU6ICd0YXNrVmlldyc7XG4gICAgcGFyYW1zOiBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZXMge1xuICAgIGxvZz86IHtcbiAgICAgICAgbGV2ZWw/OiBzdHJpbmc7XG4gICAgICAgIGxvZ1dpdGhEYXRlPzogYm9vbGVhbjtcbiAgICAgICAgc2VyaWFsaXplUGFyYW1zPzogYm9vbGVhbjtcbiAgICAgICAgaW5jbHVkZUxvZ0xldmVsPzogYm9vbGVhbjtcbiAgICAgICAgcHVibGlzaGVycz86IEFycmF5PGFueT47XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICBhdXRoPzoge1xuICAgICAgICBsb2dvdXRSZWRpcmVjdD86IHN0cmluZztcbiAgICAgICAgbG9naW5SZWRpcmVjdD86IHN0cmluZztcbiAgICB9O1xuICAgIHJvdXRpbmc/OiB7XG4gICAgICAgIGRlZmF1bHRSZWRpcmVjdD86IHN0cmluZztcbiAgICAgICAgd2lsZGNhcmRSZWRpcmVjdD86IHN0cmluZztcbiAgICB9O1xuICAgIGRhdGFGaWVsZHM/OiB7XG4gICAgICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgICAgICBhcHBlYXJhbmNlPzogc3RyaW5nXG4gICAgfTtcbiAgICBsZWdhbDoge1xuICAgICAgICB0ZXJtc09mU2VydmljZTogc3RyaW5nLFxuICAgICAgICBwcml2YWN5UG9saWN5OiBzdHJpbmdcbiAgICB9O1xuICAgIGdyb3VwTmF2aWdhdGlvbj86IHtcbiAgICAgICAgZ3JvdXBOYXZpZ2F0aW9uUm91dGU6IHN0cmluZyxcbiAgICB9O1xuXG4gICAgW2s6IHN0cmluZ106IGFueTtcbn1cbiJdfQ==
@@ -45,7 +45,7 @@ export class AccessService {
45
45
  * @returns whether the user passes the role guard condition for accessing the specified view
46
46
  */
47
47
  passesRoleGuard(view, url) {
48
- return !view.access.hasOwnProperty('role') || this._roleGuard.canAccessView(view, url);
48
+ return (!view.access.hasOwnProperty('role') && !view.access.hasOwnProperty('bannedRole')) || this._roleGuard.canAccessView(view, url);
49
49
  }
50
50
  /**
51
51
  * @param view the view whose access permissions we want to check
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
71
71
  providedIn: 'root'
72
72
  }]
73
73
  }], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.UserService }, { type: i3.RoleGuardService }, { type: i4.AuthorityGuardService }, { type: i5.GroupGuardService }]; } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2F1dGhvcml6YXRpb24vcGVybWlzc2lvbi9hY2Nlc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBV3pDLE1BQU0sT0FBTyxhQUFhO0lBRXRCLFlBQ1ksT0FBNkIsRUFDN0IsWUFBeUIsRUFDekIsVUFBNEIsRUFDNUIsZUFBc0MsRUFDdEMsV0FBOEI7UUFKOUIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtJQUUxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxJQUFVLEVBQUUsR0FBWTtRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsTUFBTSwyQ0FBMkMsQ0FBQyxDQUFDO2FBQ3JHO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLEdBQUcsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztTQUM3QjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZO2VBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztlQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO2VBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBVSxFQUFFLEdBQVc7UUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQW9CLENBQUMsSUFBVTtRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUsR0FBVztRQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLENBQUM7OzJHQWpFUSxhQUFhOytHQUFiLGFBQWEsY0FGVixNQUFNOzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um9sZUd1YXJkU2VydmljZX0gZnJvbSBcIi4uL3JvbGUvcm9sZS1ndWFyZC5zZXJ2aWNlXCI7XG5pbXBvcnQge0F1dGhvcml0eUd1YXJkU2VydmljZX0gZnJvbSBcIi4uL2F1dGhvcml0eS9hdXRob3JpdHktZ3VhcmQuc2VydmljZVwiO1xuaW1wb3J0IHtHcm91cEd1YXJkU2VydmljZX0gZnJvbSBcIi4uL2dyb3VwL2dyb3VwLWd1YXJkLnNlcnZpY2VcIjtcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtWaWV3fSBmcm9tIFwiLi4vLi4vLi4vY29tbW9ucy9zY2hlbWFcIjtcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uLy4uL3VzZXIvc2VydmljZXMvdXNlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBY2Nlc3NTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jb25maWc6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3JvbGVHdWFyZDogUm9sZUd1YXJkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfYXV0aG9yaXR5R3VhcmQ6IEF1dGhvcml0eUd1YXJkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZ3JvdXBHdWFyZDogR3JvdXBHdWFyZFNlcnZpY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgd2hvc2UgYWNjZXNzIHBlcm1pc3Npb25zIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCB0byB3aGljaCB0aGUgdmlldyBtYXBzLiBJcyB1c2VkIG9ubHkgZm9yIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvblxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgY2FuIGFjY2VzcyB0aGUgcHJvdmlkZWQgdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBjYW5BY2Nlc3NWaWV3KHZpZXc6IFZpZXcsIHVybD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXZpZXcuaGFzT3duUHJvcGVydHkoJ2FjY2VzcycpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygdmlldy5hY2Nlc3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmlldy5hY2Nlc3MgPT09ICdwdWJsaWMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmlldy5hY2Nlc3MgIT09ICdwcml2YXRlJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY2Nlc3Mgb3B0aW9uICcke3ZpZXcuYWNjZXNzfScuIE9ubHkgJ3B1YmxpYycgb3IgJ3ByaXZhdGUnIGlzIGFsbG93ZWQuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuaXNFbXB0eSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIHVybCA9IHZpZXc/LnJvdXRpbmc/LnBhdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuaXNFbXB0eSgpIC8vIEF1dGhHdWFyZFxuICAgICAgICAgICAgJiYgdGhpcy5wYXNzZXNSb2xlR3VhcmQodmlldywgdXJsKVxuICAgICAgICAgICAgJiYgdGhpcy5wYXNzZXNBdXRob3JpdHlHdWFyZCh2aWV3KVxuICAgICAgICAgICAgJiYgdGhpcy5wYXNzZXNHcm91cEd1YXJkKHZpZXcsIHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgd2hvc2UgYWNjZXNzIHBlcm1pc3Npb25zIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCB0byB3aGljaCB0aGUgdmlldyBtYXBzLiBJcyB1c2VkIG9ubHkgZm9yIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvblxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgcGFzc2VzIHRoZSByb2xlIGd1YXJkIGNvbmRpdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBzcGVjaWZpZWQgdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXNzZXNSb2xlR3VhcmQodmlldzogVmlldywgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF2aWV3LmFjY2Vzcy5oYXNPd25Qcm9wZXJ0eSgncm9sZScpIHx8IHRoaXMuX3JvbGVHdWFyZC5jYW5BY2Nlc3NWaWV3KHZpZXcsIHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgd2hvc2UgYWNjZXNzIHBlcm1pc3Npb25zIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIHBhc3NlcyB0aGUgYXV0aG9yaXR5IGd1YXJkIGNvbmRpdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBzcGVjaWZpZWQgdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXNzZXNBdXRob3JpdHlHdWFyZCh2aWV3OiBWaWV3KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdmlldy5hY2Nlc3MuaGFzT3duUHJvcGVydHkoJ2F1dGhvcml0eScpIHx8IHRoaXMuX2F1dGhvcml0eUd1YXJkLmNhbkFjY2Vzc1ZpZXcodmlldyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgd2hvc2UgYWNjZXNzIHBlcm1pc3Npb25zIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCB0byB3aGljaCB0aGUgdmlldyBtYXBzLiBJcyB1c2VkIG9ubHkgZm9yIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvblxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgcGFzc2VzIHRoZSByb2xlIGd1YXJkIGNvbmRpdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBzcGVjaWZpZWQgdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXNzZXNHcm91cEd1YXJkKHZpZXc6IFZpZXcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdmlldy5hY2Nlc3MuaGFzT3duUHJvcGVydHkoJ2dyb3VwJykgfHwgdGhpcy5fZ3JvdXBHdWFyZC5jYW5BY2Nlc3NWaWV3KHZpZXcsIHVybCk7XG4gICAgfVxufVxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2F1dGhvcml6YXRpb24vcGVybWlzc2lvbi9hY2Nlc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBV3pDLE1BQU0sT0FBTyxhQUFhO0lBRXRCLFlBQ1ksT0FBNkIsRUFDN0IsWUFBeUIsRUFDekIsVUFBNEIsRUFDNUIsZUFBc0MsRUFDdEMsV0FBOEI7UUFKOUIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtJQUUxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxJQUFVLEVBQUUsR0FBWTtRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsTUFBTSwyQ0FBMkMsQ0FBQyxDQUFDO2FBQ3JHO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLEdBQUcsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztTQUM3QjtRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZO2VBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztlQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO2VBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBVSxFQUFFLEdBQVc7UUFDMUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxSSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQW9CLENBQUMsSUFBVTtRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUsR0FBVztRQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLENBQUM7OzJHQWpFUSxhQUFhOytHQUFiLGFBQWEsY0FGVixNQUFNOzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um9sZUd1YXJkU2VydmljZX0gZnJvbSBcIi4uL3JvbGUvcm9sZS1ndWFyZC5zZXJ2aWNlXCI7XG5pbXBvcnQge0F1dGhvcml0eUd1YXJkU2VydmljZX0gZnJvbSBcIi4uL2F1dGhvcml0eS9hdXRob3JpdHktZ3VhcmQuc2VydmljZVwiO1xuaW1wb3J0IHtHcm91cEd1YXJkU2VydmljZX0gZnJvbSBcIi4uL2dyb3VwL2dyb3VwLWd1YXJkLnNlcnZpY2VcIjtcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtWaWV3fSBmcm9tIFwiLi4vLi4vLi4vY29tbW9ucy9zY2hlbWFcIjtcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uLy4uL3VzZXIvc2VydmljZXMvdXNlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBY2Nlc3NTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jb25maWc6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3JvbGVHdWFyZDogUm9sZUd1YXJkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfYXV0aG9yaXR5R3VhcmQ6IEF1dGhvcml0eUd1YXJkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZ3JvdXBHdWFyZDogR3JvdXBHdWFyZFNlcnZpY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgd2hvc2UgYWNjZXNzIHBlcm1pc3Npb25zIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCB0byB3aGljaCB0aGUgdmlldyBtYXBzLiBJcyB1c2VkIG9ubHkgZm9yIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvblxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgY2FuIGFjY2VzcyB0aGUgcHJvdmlkZWQgdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBjYW5BY2Nlc3NWaWV3KHZpZXc6IFZpZXcsIHVybD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXZpZXcuaGFzT3duUHJvcGVydHkoJ2FjY2VzcycpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygdmlldy5hY2Nlc3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmlldy5hY2Nlc3MgPT09ICdwdWJsaWMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmlldy5hY2Nlc3MgIT09ICdwcml2YXRlJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY2Nlc3Mgb3B0aW9uICcke3ZpZXcuYWNjZXNzfScuIE9ubHkgJ3B1YmxpYycgb3IgJ3ByaXZhdGUnIGlzIGFsbG93ZWQuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuaXNFbXB0eSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIHVybCA9IHZpZXc/LnJvdXRpbmc/LnBhdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuaXNFbXB0eSgpIC8vIEF1dGhHdWFyZFxuICAgICAgICAgICAgJiYgdGhpcy5wYXNzZXNSb2xlR3VhcmQodmlldywgdXJsKVxuICAgICAgICAgICAgJiYgdGhpcy5wYXNzZXNBdXRob3JpdHlHdWFyZCh2aWV3KVxuICAgICAgICAgICAgJiYgdGhpcy5wYXNzZXNHcm91cEd1YXJkKHZpZXcsIHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZpZXcgdGhlIHZpZXcgd2hvc2UgYWNjZXNzIHBlcm1pc3Npb25zIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCB0byB3aGljaCB0aGUgdmlldyBtYXBzLiBJcyB1c2VkIG9ubHkgZm9yIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvblxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgcGFzc2VzIHRoZSByb2xlIGd1YXJkIGNvbmRpdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBzcGVjaWZpZWQgdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXNzZXNSb2xlR3VhcmQodmlldzogVmlldywgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghdmlldy5hY2Nlc3MuaGFzT3duUHJvcGVydHkoJ3JvbGUnKSAmJiAhdmlldy5hY2Nlc3MuaGFzT3duUHJvcGVydHkoJ2Jhbm5lZFJvbGUnKSkgfHwgdGhpcy5fcm9sZUd1YXJkLmNhbkFjY2Vzc1ZpZXcodmlldywgdXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gdmlldyB0aGUgdmlldyB3aG9zZSBhY2Nlc3MgcGVybWlzc2lvbnMgd2Ugd2FudCB0byBjaGVja1xuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgcGFzc2VzIHRoZSBhdXRob3JpdHkgZ3VhcmQgY29uZGl0aW9uIGZvciBhY2Nlc3NpbmcgdGhlIHNwZWNpZmllZCB2aWV3XG4gICAgICovXG4gICAgcHVibGljIHBhc3Nlc0F1dGhvcml0eUd1YXJkKHZpZXc6IFZpZXcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF2aWV3LmFjY2Vzcy5oYXNPd25Qcm9wZXJ0eSgnYXV0aG9yaXR5JykgfHwgdGhpcy5fYXV0aG9yaXR5R3VhcmQuY2FuQWNjZXNzVmlldyh2aWV3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gdmlldyB0aGUgdmlldyB3aG9zZSBhY2Nlc3MgcGVybWlzc2lvbnMgd2Ugd2FudCB0byBjaGVja1xuICAgICAqIEBwYXJhbSB1cmwgVVJMIHRvIHdoaWNoIHRoZSB2aWV3IG1hcHMuIElzIHVzZWQgb25seSBmb3IgZXJyb3IgbWVzc2FnZSBnZW5lcmF0aW9uXG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGUgdXNlciBwYXNzZXMgdGhlIHJvbGUgZ3VhcmQgY29uZGl0aW9uIGZvciBhY2Nlc3NpbmcgdGhlIHNwZWNpZmllZCB2aWV3XG4gICAgICovXG4gICAgcHVibGljIHBhc3Nlc0dyb3VwR3VhcmQodmlldzogVmlldywgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF2aWV3LmFjY2Vzcy5oYXNPd25Qcm9wZXJ0eSgnZ3JvdXAnKSB8fCB0aGlzLl9ncm91cEd1YXJkLmNhbkFjY2Vzc1ZpZXcodmlldywgdXJsKTtcbiAgICB9XG59XG4iXX0=
@@ -19,16 +19,35 @@ export class RoleGuardService {
19
19
  return this.canAccessView(view, state.url.toString());
20
20
  }
21
21
  canAccessView(view, url) {
22
- if (typeof view.access !== 'string' && view.access.hasOwnProperty('role')) {
23
- const allowedRoles = this.parseRoleConstraints(view.access.role, url);
24
- return allowedRoles.some(constraint => {
25
- if (constraint.roleIdentifier) {
26
- return this._userService.hasRoleByIdentifier(constraint.roleIdentifier, constraint.processIdentifier);
22
+ if (typeof view.access !== 'string' && (view.access.hasOwnProperty('role') || view.access.hasOwnProperty('bannedRole'))) {
23
+ if (view.access.hasOwnProperty('role') && view.access.hasOwnProperty('bannedRole')) {
24
+ const bannedRoles = this.parseRoleConstraints(view.access.bannedRole, url);
25
+ const allowedRoles = this.parseRoleConstraints(view.access.role, url);
26
+ if (bannedRoles.some(role => this.decideAccessByRole(role))) {
27
+ return false;
27
28
  }
28
- else {
29
- return this._userService.hasRoleByName(constraint.roleName, constraint.processIdentifier);
29
+ if (allowedRoles.length === 0) {
30
+ this._log.warn(`View at '${url}' defines role access constraint with an empty array!`
31
+ + ` No users will be allowed to enter this view!`);
30
32
  }
31
- });
33
+ return allowedRoles.some(role => this.decideAccessByRole(role)); // user was not denied access by a banned role, they need at least one allowed role
34
+ }
35
+ if (view.access.hasOwnProperty('bannedRole')) {
36
+ const bannedRoles = this.parseRoleConstraints(view.access.bannedRole, url);
37
+ return !bannedRoles.some(constraint => {
38
+ return this.decideAccessByRole(constraint);
39
+ });
40
+ }
41
+ if (view.access.hasOwnProperty('role')) {
42
+ const allowedRoles = this.parseRoleConstraints(view.access.role, url);
43
+ if (allowedRoles.length === 0) {
44
+ this._log.warn(`View at '${url}' defines role access constraint with an empty array!`
45
+ + ` No users will be allowed to enter this view!`);
46
+ }
47
+ return allowedRoles.some(constraint => {
48
+ return this.decideAccessByRole(constraint);
49
+ });
50
+ }
32
51
  }
33
52
  throw new Error('Role guard is declared for a view with no role guard configuration!'
34
53
  + ` Add role guard configuration for view at ${url}, or remove the guard.`);
@@ -39,8 +58,6 @@ export class RoleGuardService {
39
58
  }
40
59
  if (Array.isArray(roleConstrains)) {
41
60
  if (roleConstrains.length === 0) {
42
- this._log.warn(`View at '${viewUrl}' defines role access constraint with an empty array!`
43
- + ` No users will be allowed to enter this view!`);
44
61
  return [];
45
62
  }
46
63
  if (typeof roleConstrains[0] === 'string') {
@@ -78,6 +95,14 @@ export class RoleGuardService {
78
95
  return { processIdentifier: constraint.processId, roleIdentifier: constraint.roleId };
79
96
  });
80
97
  }
98
+ decideAccessByRole(constraint) {
99
+ if (constraint.roleIdentifier) {
100
+ return this._userService.hasRoleByIdentifier(constraint.roleIdentifier, constraint.processIdentifier);
101
+ }
102
+ else {
103
+ return this._userService.hasRoleByName(constraint.roleName, constraint.processIdentifier);
104
+ }
105
+ }
81
106
  }
82
107
  RoleGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RoleGuardService, deps: [{ token: i1.RedirectService }, { token: i2.UserService }, { token: i3.ConfigurationService }, { token: i4.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
83
108
  RoleGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RoleGuardService, providedIn: AuthenticationModule });
@@ -87,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
87
112
  providedIn: AuthenticationModule
88
113
  }]
89
114
  }], ctorParameters: function () { return [{ type: i1.RedirectService }, { type: i2.UserService }, { type: i3.ConfigurationService }, { type: i4.LoggerService }]; } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9hdXRob3JpemF0aW9uL3JvbGUvcm9sZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQWlCaEYsTUFBTSxPQUFPLGdCQUFnQjtJQUl6QixZQUFzQixnQkFBaUMsRUFDakMsWUFBeUIsRUFDekIsY0FBb0MsRUFDcEMsSUFBbUI7UUFIbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBNkIsRUFDN0IsS0FBMEI7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxhQUFhLENBQUMsSUFBVSxFQUFFLEdBQVc7UUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLElBQUks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aUIsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs4R0FsRlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixvQkFBb0I7NEZBRXZCLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsb0JBQW9CO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtBdXRoZW50aWNhdGlvbk1vZHVsZX0gZnJvbSAnLi4vLi4vYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24ubW9kdWxlJztcbmltcG9ydCB7UmVkaXJlY3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9yb3V0aW5nL3JlZGlyZWN0LXNlcnZpY2UvcmVkaXJlY3Quc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge0FjY2VzcywgUm9sZUFjY2VzcywgVmlld30gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9zY2hlbWEnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuXG5pbnRlcmZhY2UgUm9sZUNvbnN0cmFpbnQge1xuICAgIHByb2Nlc3NJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgcm9sZUlkZW50aWZpZXI/OiBzdHJpbmc7XG4gICAgcm9sZU5hbWU/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBBdXRoZW50aWNhdGlvbk1vZHVsZVxufSlcbmV4cG9ydCBjbGFzcyBSb2xlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9naW5Vcmw6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcmVkaXJlY3RTZXJ2aWNlOiBSZWRpcmVjdFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jb25maWdTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSkge1xuICAgICAgICB0aGlzLl9sb2dpblVybCA9IHRoaXMuX3JlZGlyZWN0U2VydmljZS5yZXNvbHZlTG9naW5QYXRoKCk7XG4gICAgfVxuXG4gICAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgICAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgICAgICB0aGlzLl9yZWRpcmVjdFNlcnZpY2UuaW50ZW5kZWRSb3V0ZSA9IHJvdXRlO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5fY29uZmlnU2VydmljZS5nZXRWaWV3QnlVcmwoc3RhdGUudXJsLnRvU3RyaW5nKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5jYW5BY2Nlc3NWaWV3KHZpZXcsIHN0YXRlLnVybC50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuQWNjZXNzVmlldyh2aWV3OiBWaWV3LCB1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIHZpZXcuYWNjZXNzICE9PSAnc3RyaW5nJyAmJiB2aWV3LmFjY2Vzcy5oYXNPd25Qcm9wZXJ0eSgncm9sZScpKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxvd2VkUm9sZXMgPSB0aGlzLnBhcnNlUm9sZUNvbnN0cmFpbnRzKHZpZXcuYWNjZXNzLnJvbGUsIHVybCk7XG5cbiAgICAgICAgICAgIHJldHVybiBhbGxvd2VkUm9sZXMuc29tZShjb25zdHJhaW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29uc3RyYWludC5yb2xlSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlclNlcnZpY2UuaGFzUm9sZUJ5SWRlbnRpZmllcihjb25zdHJhaW50LnJvbGVJZGVudGlmaWVyLCBjb25zdHJhaW50LnByb2Nlc3NJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlclNlcnZpY2UuaGFzUm9sZUJ5TmFtZShjb25zdHJhaW50LnJvbGVOYW1lLCBjb25zdHJhaW50LnByb2Nlc3NJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGUgZ3VhcmQgaXMgZGVjbGFyZWQgZm9yIGEgdmlldyB3aXRoIG5vIHJvbGUgZ3VhcmQgY29uZmlndXJhdGlvbiEnXG4gICAgICAgICAgICArIGAgQWRkIHJvbGUgZ3VhcmQgY29uZmlndXJhdGlvbiBmb3IgdmlldyBhdCAke3VybH0sIG9yIHJlbW92ZSB0aGUgZ3VhcmQuYCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHBhcnNlUm9sZUNvbnN0cmFpbnRzKHJvbGVDb25zdHJhaW5zOiBBY2Nlc3NbJ3JvbGUnXSwgdmlld1VybDogc3RyaW5nKTogQXJyYXk8Um9sZUNvbnN0cmFpbnQ+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByb2xlQ29uc3RyYWlucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlU3RyaW5nUm9sZUNvbnN0cmFpbnRzKHJvbGVDb25zdHJhaW5zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb2xlQ29uc3RyYWlucykpIHtcbiAgICAgICAgICAgIGlmIChyb2xlQ29uc3RyYWlucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cud2FybihgVmlldyBhdCAnJHt2aWV3VXJsfScgZGVmaW5lcyByb2xlIGFjY2VzcyBjb25zdHJhaW50IHdpdGggYW4gZW1wdHkgYXJyYXkhYFxuICAgICAgICAgICAgICAgICAgICArIGAgTm8gdXNlcnMgd2lsbCBiZSBhbGxvd2VkIHRvIGVudGVyIHRoaXMgdmlldyFgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvbGVDb25zdHJhaW5zWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlU3RyaW5nUm9sZUNvbnN0cmFpbnRzKHJvbGVDb25zdHJhaW5zIGFzIEFycmF5PHN0cmluZz4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlT2JqZWN0Um9sZUNvbnN0cmFpbnMocm9sZUNvbnN0cmFpbnMgYXMgUm9sZUFjY2VzcyB8IEFycmF5PFJvbGVBY2Nlc3M+KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiA1LjAuMFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwYXJzZVN0cmluZ1JvbGVDb25zdHJhaW50cyhyb2xlQ29uc3RyYWluczogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IEFycmF5PFJvbGVDb25zdHJhaW50PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb2xlQ29uc3RyYWlucykpIHtcbiAgICAgICAgICAgIHJvbGVDb25zdHJhaW5zID0gW3JvbGVDb25zdHJhaW5zXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZy53YXJuKCdVc2luZyBzdHJpbmcgcm9sZSBndWFyZCBjb25maWd1cmF0aW9uIGlzIGRlcHJlY2F0ZWQhIE1pZ3JhdGUgdG8gb2JqZWN0IGJhc2VkIGNvbmZpZ3VyYXRpb24gaW5zdGVhZC4nKTtcblxuICAgICAgICByZXR1cm4gcm9sZUNvbnN0cmFpbnMubWFwKGNvbnN0cmFpbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3BsaXRSb2xlQXJyYXkgPSBjb25zdHJhaW50LnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoc3BsaXRSb2xlQXJyYXkubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtwcm9jZXNzSWRlbnRpZmllcjogc3BsaXRSb2xlQXJyYXlbMF0sIHJvbGVOYW1lOiBzcGxpdFJvbGVBcnJheVsxXX07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGVudGVyIHRoZSBjb3JyZWN0IGZvcm1hdCA8bmV0IGltcG9ydCBpZD4uPHJvbGUgbmFtZT4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHBhcnNlT2JqZWN0Um9sZUNvbnN0cmFpbnMocm9sZUNvbnN0cmFpbnM6IFJvbGVBY2Nlc3MgfCBBcnJheTxSb2xlQWNjZXNzPik6IEFycmF5PFJvbGVDb25zdHJhaW50PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb2xlQ29uc3RyYWlucykpIHtcbiAgICAgICAgICAgIHJvbGVDb25zdHJhaW5zID0gW3JvbGVDb25zdHJhaW5zXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb2xlQ29uc3RyYWlucy5tYXAoY29uc3RyYWludCA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbnN0cmFpbnQucm9sZUlkIHx8ICFjb25zdHJhaW50LnByb2Nlc3NJZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGVudGVyIGJvdGggcHJvY2VzcyBhbmQgcm9sZSBpZCBmb3IgYSByb2xlIGNvbnN0cmFpbnQ6ICcgKyBjb25zdHJhaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7cHJvY2Vzc0lkZW50aWZpZXI6IGNvbnN0cmFpbnQucHJvY2Vzc0lkLCByb2xlSWRlbnRpZmllcjogY29uc3RyYWludC5yb2xlSWR9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbn1cbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9hdXRob3JpemF0aW9uL3JvbGUvcm9sZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQWlCaEYsTUFBTSxPQUFPLGdCQUFnQjtJQUl6QixZQUFzQixnQkFBaUMsRUFDakMsWUFBeUIsRUFDekIsY0FBb0MsRUFDcEMsSUFBbUI7UUFIbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBNkIsRUFDN0IsS0FBMEI7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxhQUFhLENBQUMsSUFBVSxFQUFFLEdBQVc7UUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMs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QUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUEwQjtRQUNqRCxJQUFJLFVBQVUsQ0FBQyxjQUFjLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDekc7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM3RjtJQUNMLENBQUM7OzhHQWhIUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZiLG9CQUFvQjs0RkFFdkIsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxvQkFBb0I7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uTW9kdWxlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtSZWRpcmVjdFNlcnZpY2V9IGZyb20gJy4uLy4uL3JvdXRpbmcvcmVkaXJlY3Qtc2VydmljZS9yZWRpcmVjdC5zZXJ2aWNlJztcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7QWNjZXNzLCBSb2xlQWNjZXNzLCBWaWV3fSBmcm9tICcuLi8uLi8uLi9jb21tb25zL3NjaGVtYSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5cbmludGVyZmFjZSBSb2xlQ29uc3RyYWludCB7XG4gICAgcHJvY2Vzc0lkZW50aWZpZXI6IHN0cmluZztcbiAgICByb2xlSWRlbnRpZmllcj86IHN0cmluZztcbiAgICByb2xlTmFtZT86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IEF1dGhlbnRpY2F0aW9uTW9kdWxlXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVHdWFyZFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2dpblVybDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9yZWRpcmVjdFNlcnZpY2U6IFJlZGlyZWN0U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX2xvZ2luVXJsID0gdGhpcy5fcmVkaXJlY3RTZXJ2aWNlLnJlc29sdmVMb2dpblBhdGgoKTtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgICAgIHRoaXMuX3JlZGlyZWN0U2VydmljZS5pbnRlbmRlZFJvdXRlID0gcm91dGU7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLl9jb25maWdTZXJ2aWNlLmdldFZpZXdCeVVybChzdGF0ZS51cmwudG9TdHJpbmcoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkFjY2Vzc1ZpZXcodmlldywgc3RhdGUudXJsLnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5BY2Nlc3NWaWV3KHZpZXc6IFZpZXcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2Ygdmlldy5hY2Nlc3MgIT09ICdzdHJpbmcnICYmICh2aWV3LmFjY2Vzcy5oYXNPd25Qcm9wZXJ0eSgncm9sZScpIHx8IHZpZXcuYWNjZXNzLmhhc093blByb3BlcnR5KCdiYW5uZWRSb2xlJykpKSB7XG5cbiAgICAgICAgICAgIGlmICh2aWV3LmFjY2Vzcy5oYXNPd25Qcm9wZXJ0eSgncm9sZScpICYmIHZpZXcuYWNjZXNzLmhhc093blByb3BlcnR5KCdiYW5uZWRSb2xlJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYW5uZWRSb2xlcyA9IHRoaXMucGFyc2VSb2xlQ29uc3RyYWludHModmlldy5hY2Nlc3MuYmFubmVkUm9sZSwgdXJsKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxvd2VkUm9sZXMgPSB0aGlzLnBhcnNlUm9sZUNvbnN0cmFpbnRzKHZpZXcuYWNjZXNzLnJvbGUsIHVybCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmFubmVkUm9sZXMuc29tZShyb2xlID0+IHRoaXMuZGVjaWRlQWNjZXNzQnlSb2xlKHJvbGUpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRSb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oYFZpZXcgYXQgJyR7dXJsfScgZGVmaW5lcyByb2xlIGFjY2VzcyBjb25zdHJhaW50IHdpdGggYW4gZW1wdHkgYXJyYXkhYFxuICAgICAgICAgICAgICAgICAgICAgICAgKyBgIE5vIHVzZXJzIHdpbGwgYmUgYWxsb3dlZCB0byBlbnRlciB0aGlzIHZpZXchYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhbGxvd2VkUm9sZXMuc29tZShyb2xlID0+IHRoaXMuZGVjaWRlQWNjZXNzQnlSb2xlKHJvbGUpKTsgLy8gdXNlciB3YXMgbm90IGRlbmllZCBhY2Nlc3MgYnkgYSBiYW5uZWQgcm9sZSwgdGhleSBuZWVkIGF0IGxlYXN0IG9uZSBhbGxvd2VkIHJvbGVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZpZXcuYWNjZXNzLmhhc093blByb3BlcnR5KCdiYW5uZWRSb2xlJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYW5uZWRSb2xlcyA9IHRoaXMucGFyc2VSb2xlQ29uc3RyYWludHModmlldy5hY2Nlc3MuYmFubmVkUm9sZSwgdXJsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWJhbm5lZFJvbGVzLnNvbWUoY29uc3RyYWludCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY2lkZUFjY2Vzc0J5Um9sZShjb25zdHJhaW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZpZXcuYWNjZXNzLmhhc093blByb3BlcnR5KCdyb2xlJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxvd2VkUm9sZXMgPSB0aGlzLnBhcnNlUm9sZUNvbnN0cmFpbnRzKHZpZXcuYWNjZXNzLnJvbGUsIHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRSb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oYFZpZXcgYXQgJyR7dXJsfScgZGVmaW5lcyByb2xlIGFjY2VzcyBjb25zdHJhaW50IHdpdGggYW4gZW1wdHkgYXJyYXkhYFxuICAgICAgICAgICAgICAgICAgICAgICAgKyBgIE5vIHVzZXJzIHdpbGwgYmUgYWxsb3dlZCB0byBlbnRlciB0aGlzIHZpZXchYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhbGxvd2VkUm9sZXMuc29tZShjb25zdHJhaW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjaWRlQWNjZXNzQnlSb2xlKGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZSBndWFyZCBpcyBkZWNsYXJlZCBmb3IgYSB2aWV3IHdpdGggbm8gcm9sZSBndWFyZCBjb25maWd1cmF0aW9uISdcbiAgICAgICAgICAgICsgYCBBZGQgcm9sZSBndWFyZCBjb25maWd1cmF0aW9uIGZvciB2aWV3IGF0ICR7dXJsfSwgb3IgcmVtb3ZlIHRoZSBndWFyZC5gKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcGFyc2VSb2xlQ29uc3RyYWludHMocm9sZUNvbnN0cmFpbnM6IEFjY2Vzc1sncm9sZSddIHwgQWNjZXNzWydiYW5uZWRSb2xlJ10sIHZpZXdVcmw6IHN0cmluZyk6IEFycmF5PFJvbGVDb25zdHJhaW50PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9sZUNvbnN0cmFpbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVN0cmluZ1JvbGVDb25zdHJhaW50cyhyb2xlQ29uc3RyYWlucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm9sZUNvbnN0cmFpbnMpKSB7XG4gICAgICAgICAgICBpZiAocm9sZUNvbnN0cmFpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb2xlQ29uc3RyYWluc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVN0cmluZ1JvbGVDb25zdHJhaW50cyhyb2xlQ29uc3RyYWlucyBhcyBBcnJheTxzdHJpbmc+KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZU9iamVjdFJvbGVDb25zdHJhaW5zKHJvbGVDb25zdHJhaW5zIGFzIFJvbGVBY2Nlc3MgfCBBcnJheTxSb2xlQWNjZXNzPik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gNS4wLjBcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGFyc2VTdHJpbmdSb2xlQ29uc3RyYWludHMocm9sZUNvbnN0cmFpbnM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4pOiBBcnJheTxSb2xlQ29uc3RyYWludD4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocm9sZUNvbnN0cmFpbnMpKSB7XG4gICAgICAgICAgICByb2xlQ29uc3RyYWlucyA9IFtyb2xlQ29uc3RyYWluc107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2cud2FybignVXNpbmcgc3RyaW5nIHJvbGUgZ3VhcmQgY29uZmlndXJhdGlvbiBpcyBkZXByZWNhdGVkISBNaWdyYXRlIHRvIG9iamVjdCBiYXNlZCBjb25maWd1cmF0aW9uIGluc3RlYWQuJyk7XG5cbiAgICAgICAgcmV0dXJuIHJvbGVDb25zdHJhaW5zLm1hcChjb25zdHJhaW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0Um9sZUFycmF5ID0gY29uc3RyYWludC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKHNwbGl0Um9sZUFycmF5Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7cHJvY2Vzc0lkZW50aWZpZXI6IHNwbGl0Um9sZUFycmF5WzBdLCByb2xlTmFtZTogc3BsaXRSb2xlQXJyYXlbMV19O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBlbnRlciB0aGUgY29ycmVjdCBmb3JtYXQgPG5ldCBpbXBvcnQgaWQ+Ljxyb2xlIG5hbWU+Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwYXJzZU9iamVjdFJvbGVDb25zdHJhaW5zKHJvbGVDb25zdHJhaW5zOiBSb2xlQWNjZXNzIHwgQXJyYXk8Um9sZUFjY2Vzcz4pOiBBcnJheTxSb2xlQ29uc3RyYWludD4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocm9sZUNvbnN0cmFpbnMpKSB7XG4gICAgICAgICAgICByb2xlQ29uc3RyYWlucyA9IFtyb2xlQ29uc3RyYWluc107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcm9sZUNvbnN0cmFpbnMubWFwKGNvbnN0cmFpbnQgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50LnJvbGVJZCB8fCAhY29uc3RyYWludC5wcm9jZXNzSWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBlbnRlciBib3RoIHByb2Nlc3MgYW5kIHJvbGUgaWQgZm9yIGEgcm9sZSBjb25zdHJhaW50OiAnICsgY29uc3RyYWludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge3Byb2Nlc3NJZGVudGlmaWVyOiBjb25zdHJhaW50LnByb2Nlc3NJZCwgcm9sZUlkZW50aWZpZXI6IGNvbnN0cmFpbnQucm9sZUlkfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWNpZGVBY2Nlc3NCeVJvbGUoY29uc3RyYWludDogUm9sZUNvbnN0cmFpbnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGNvbnN0cmFpbnQucm9sZUlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyU2VydmljZS5oYXNSb2xlQnlJZGVudGlmaWVyKGNvbnN0cmFpbnQucm9sZUlkZW50aWZpZXIsIGNvbnN0cmFpbnQucHJvY2Vzc0lkZW50aWZpZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTZXJ2aWNlLmhhc1JvbGVCeU5hbWUoY29uc3RyYWludC5yb2xlTmFtZSwgY29uc3RyYWludC5wcm9jZXNzSWRlbnRpZmllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -5,6 +5,7 @@ import { ProgressType } from '../../resources/resource-provider.service';
5
5
  import { NAE_INFORM_ABOUT_INVALID_DATA } from '../models/invalid-data-policy-token';
6
6
  import { BehaviorSubject } from 'rxjs';
7
7
  import { take } from 'rxjs/operators';
8
+ import { HttpParams } from '@angular/common/http';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "../../resources/engine-endpoint/task-resource.service";
10
11
  import * as i2 from "../../logger/services/logger.service";
@@ -246,7 +247,9 @@ export class AbstractFileFieldComponent extends AbstractDataFieldComponent {
246
247
  this._log.error('File cannot be deleted. No task is set to the field.');
247
248
  return;
248
249
  }
249
- this._taskResourceService.deleteFile(this.taskId, this.dataField.stringId).pipe(take(1)).subscribe(response => {
250
+ let param = new HttpParams();
251
+ param = param.set("parentTaskId", this.resolveParentTaskId());
252
+ this._taskResourceService.deleteFile(this.taskId, this.dataField.stringId, undefined, param).pipe(take(1)).subscribe(response => {
250
253
  if (response.success) {
251
254
  const filename = this.dataField.value.name;
252
255
  this.dataField.value = {};
@@ -330,7 +333,7 @@ export class AbstractFileFieldComponent extends AbstractDataFieldComponent {
330
333
  if (!this.checkFileBeforeDownload()) {
331
334
  return;
332
335
  }
333
- this._taskResourceService.downloadFile(this.taskId, this.dataField.stringId).subscribe(response => {
336
+ this._taskResourceService.downloadFile(this.resolveParentTaskId(), this.dataField.stringId).subscribe(response => {
334
337
  if (!response.type || response.type !== ProgressType.DOWNLOAD) {
335
338
  this._log.debug(`File [${this.dataField.stringId}] ${this.dataField.value.name} was successfully downloaded`);
336
339
  this.initDownloadFile(response);
@@ -434,4 +437,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
434
437
  type: ViewChild,
435
438
  args: ['imageDiv']
436
439
  }] } });
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RhdGEtZmllbGRzL2ZpbGUtZmllbGQvYWJzdHJhY3QtZmlsZS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRW5GLE9BQU8sRUFBQyxZQUFZLEVBQW1CLE1BQU0sMkNBQTJDLENBQUM7QUFJekYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFbEYsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBY3BDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUUxQixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFFdkIsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBRXhCOztHQUVHO0FBS0gsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSwwQkFBMEI7SUF1RS9FOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUFnQyxvQkFBeUMsRUFDekMsSUFBbUIsRUFDbkIsU0FBMEIsRUFDMUIsVUFBNEIsRUFDNUIsYUFBMkIsRUFDYyxzQkFBc0MsRUFDL0UsVUFBd0I7UUFDcEQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFQRix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLFNBQUksR0FB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QUFHLE9BQVEsQ0FBQTt3SEFiNUMsMEJBQTBCLDZLQXVGRiw2QkFBNkI7NEdBdkZyRCwwQkFBMEIsMmFBRmxDLEVBQUU7NEZBRU0sMEJBQTBCO2tCQUovQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkF3RjBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCO3VFQXBFdkQsTUFBTTtzQkFBckIsS0FBSztnQkFJVSxTQUFTO3NCQUF4QixLQUFLO2dCQUkrQixZQUFZO3NCQUFoRCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFJQyxPQUFPO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBRVUsVUFBVTtzQkFBdkMsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RmlsZUZpZWxkLCBGaWxlUHJldmlld1R5cGV9IGZyb20gJy4vbW9kZWxzL2ZpbGUtZmllbGQnO1xuaW1wb3J0IHtBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQtY29tcG9uZW50JztcbmltcG9ydCB7VGFza1Jlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9ncmVzc1R5cGUsIFByb3ZpZGVyUHJvZ3Jlc3N9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEF9IGZyb20gJy4uL21vZGVscy9pbnZhbGlkLWRhdGEtcG9saWN5LXRva2VuJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtSZXNpemVkRXZlbnR9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gJy4uLy4uL2V2ZW50L3NlcnZpY2VzL2ludGVyZmFjZXMvY2hhbmdlZC1maWVsZHMtbWFwJztcbmltcG9ydCB7RmlsZUZpZWxkSWRCb2R5fSBmcm9tICcuLi9tb2RlbHMvZmlsZS1maWVsZC1pZC1ib2R5JztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3RhdGUge1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgdXBsb2FkaW5nOiBib29sZWFuO1xuICAgIGRvd25sb2FkaW5nOiBib29sZWFuO1xuICAgIGNvbXBsZXRlZDogYm9vbGVhbjtcbiAgICBlcnJvcjogYm9vbGVhbjtcbn1cblxuY29uc3QgcHJldmlldyA9ICdwcmV2aWV3JztcblxuY29uc3QgZmllbGRIZWlnaHQgPSA3NTtcblxuY29uc3QgZmllbGRQYWRkaW5nID0gMTY7XG5cbi8qKlxuICogQ29tcG9uZW50IHRoYXQgaXMgY3JlYXRlZCBpbiB0aGUgYm9keSBvZiB0aGUgdGFzayBwYW5lbCBhY2NvcmQgb24gdGhlIFBldHJpIE5ldCwgd2hpY2ggbXVzdCBiZSBiaW5kIHByb3BlcnRpZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LWZpbGUtZmllbGQnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGF0YUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHdpZHRoIG9mIHRoZSBkZWZhdWx0IGZpbGUgcHJldmlldyBib3JkZXIgaW4gcGl4ZWxzLiBUaGUgYHB4YCBzdHJpbmcgaXMgYXBwZW5kZWQgaW4gdGhlIGNvZGUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BSRVZJRVdfQk9SREVSX1dJRFRIID0gMDtcbiAgICAvKipcbiAgICAgKiBUaGUgQ1NTIHN0eWxlIGF0dHJpYnV0ZSBvZiB0aGUgZGVmYXVsdCBmaWxlIHByZXZpZXcgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9TVFlMRSA9ICdub25lJztcbiAgICAvKipcbiAgICAgKiBUaGUgQ1NTIGNvbG9yIHN0cmluZyBvZiB0aGUgZGVmYXVsdCBmaWxlIHByZXZpZXcgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9DT0xPUiA9ICdibGFjayc7XG5cbiAgICBwdWJsaWMgc3RhdGU6IEZpbGVTdGF0ZTtcbiAgICAvKipcbiAgICAgKiBUYXNrIG1vbmdvIHN0cmluZyBpZCBpcyBiaW5kaW5nIHByb3BlcnR5IGZyb20gcGFyZW50IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdGFza0lkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQmluZGluZyBwcm9wZXJ0eSBhcyBpbnN0YW5jZSBmcm9tIHBhcmVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRhdGFGaWVsZDogRmlsZUZpZWxkO1xuICAgIC8qKlxuICAgICAqIEZpbGUgcGlja2VyIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gY29tcG9uZW50IHRlbXBsYXRlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdmlldyBpbml0LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWRJbnB1dCcpIHB1YmxpYyBmaWxlVXBsb2FkRWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgLyoqXG4gICAgICogSW1hZ2UgZmllbGQgdmlldyBlbGVtZW50IHJlZmVyZW5jZSBmcm9tIGNvbXBvbmVudCB0ZW1wbGF0ZSB0aGF0IGlzIGluaXRpYWxpemVkIGFmdGVyIHZpZXcgaW5pdC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpbWFnZUVsJykgcHVibGljIGltYWdlRWw6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbWFnZURpdicpIHB1YmxpYyBpbWFnZURpdkVsOiBFbGVtZW50UmVmO1xuICAgIC8qKlxuICAgICAqIElmIGZpbGUgcHJldmlldyBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHVibGljIGZpbGVQcmV2aWV3ID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSWYgZmlsZSB0eXBlIGNhbiBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNEaXNwbGF5YWJsZSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIE1heCBoZWlnaHQgb2YgcHJldmlld1xuICAgICAqL1xuICAgIHByaXZhdGUgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU3RvcmUgZmlsZSBmb3IgcHJldmlld1xuICAgICAqL1xuICAgIHByaXZhdGUgZmlsZUZvclByZXZpZXc6IEJsb2I7XG4gICAgLyoqXG4gICAgICogVXJsIG9mIHByZXZpZXcgZmlsZVxuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aWV3U291cmNlOiBTYWZlVXJsO1xuICAgIC8qKlxuICAgICAqIFN0b3JlIGZpbGUgdG8gc2hvdy9kb3dubG9hZFxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsZUZvckRvd25sb2FkOiBCbG9iO1xuICAgIC8qKlxuICAgICAqIEZ1bGwgc2l6ZSBmaWxlIHVybFxuICAgICAqL1xuICAgIHB1YmxpYyBmdWxsU291cmNlOiBCZWhhdmlvclN1YmplY3Q8U2FmZVVybD47XG4gICAgLyoqXG4gICAgICogRXh0ZW5zaW9uIG9mIGZpbGUgdG8gcHJldmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aWV3RXh0ZW5zaW9uOiBGaWxlUHJldmlld1R5cGU7XG4gICAgLyoqXG4gICAgICogRm9ybSBjb250cm9sIHN1YnNjcmlwdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlZEZpZWxkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBPbmx5IGluamVjdCBzZXJ2aWNlcy5cbiAgICAgKiBAcGFyYW0gX3Rhc2tSZXNvdXJjZVNlcnZpY2UgUHJvdmlkZXMgdG8gZG93bmxvYWQgYSBmaWxlIGZyb20gdGhlIGJhY2tlbmRcbiAgICAgKiBAcGFyYW0gX2xvZyBMb2dnZXIgc2VydmljZVxuICAgICAqIEBwYXJhbSBfc25hY2tiYXIgU25hY2tiYXIgc2VydmljZSB0byBub3RpZnkgdXNlclxuICAgICAqIEBwYXJhbSBfdHJhbnNsYXRlIFRyYW5zbGF0ZSBzZXJ2aWNlIGZvciBJMThOXG4gICAgICogQHBhcmFtIF9ldmVudFNlcnZpY2UgdXNlZCBmb3IgcGFyc2luZyBvZiBiYWNrZW5kIHJlc3BvbnNlXG4gICAgICogQHBhcmFtIGluZm9ybUFib3V0SW52YWxpZERhdGEgd2hldGhlciB0aGUgYmFja2VuZCBzaG91bGQgYmUgbm90aWZpZWQgYWJvdXQgaW52YWxpZCB2YWx1ZXMuXG4gICAgICogT3B0aW9uIGluamVjdGVkIHRyb3VnaCBgTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEFgIEluamVjdGlvblRva2VuXG4gICAgICogQHBhcmFtIF9zYW5pdGl6ZXIgU2FuaXRpemUgdXJsIG9mIGltYWdlIHByZXZpZXdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrUmVzb3VyY2VTZXJ2aWNlOiBUYXNrUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9ldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfSU5GT1JNX0FCT1VUX0lOVkFMSURfREFUQSkgaW5mb3JtQWJvdXRJbnZhbGlkRGF0YTogYm9vbGVhbiB8IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICAgICAgc3VwZXIoaW5mb3JtQWJvdXRJbnZhbGlkRGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5mdWxsU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTYWZlVXJsPihudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgOlxuICAgICAqICAtIEZpbGUgZmllbGQgdG8gW0ZpbGVGaWVsZFNlcnZpY2Vde0BsaW5rIEZpbGVGaWVsZFNlcnZpY2V9XG4gICAgICogIC0gRGlzcGxheSBuYW1lXG4gICAgICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZmlsZVByZXZpZXcgPSB0aGlzLmRhdGFGaWVsZCAmJiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQgJiYgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50Lm5hbWVcbiAgICAgICAgICAgICYmIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5uYW1lID09PSBwcmV2aWV3O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZEVsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50Lm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbGVQcmV2aWV3KSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmltYWdlRGl2RWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVByZXZpZXdJZkRpc3BsYXlhYmxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlZEZpZWxkU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhRmllbGQudXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5maWxlUHJldmlld1xuICAgICAgICAgICAgICAgICYmICEhdGhpcy5kYXRhRmllbGQudmFsdWVcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQcmV2aWV3SWZEaXNwbGF5YWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLmZ1bGxTb3VyY2UuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVkRmllbGRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlRmlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudXBsb2FkaW5nIHx8IHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBhZnRlciBjbGljayBvbiBmaWxlIGZpZWxkLlxuICAgICAqXG4gICAgICogSWYgZmlsZSBmaWVsZCBoYXMgbm8gZmlsZSB1cGxvYWRlZFxuICAgICAqIFtGaWxlc1VwbG9hZENvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RGaWxlc1VwbG9hZENvbXBvbmVudH0gdmlhIFtTaWRlTWVudV17QGxpbmsgU2lkZU1lbnVTZXJ2aWNlfSBvcGVucy5cbiAgICAgKlxuICAgICAqIE90aGVyd2lzZSBvcGVucyBhIGZpbGUgcGlja2VyIGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIHNlbGVjdCBmaWxlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMgfHwgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIHVwbG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLnZhbHVlICYmXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lICYmXG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCkubmFtZSA9PT0gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdVc2VyIGNob3NlIHRoZSBzYW1lIGZpbGUuIFVwbG9hZGluZyBza2lwcGVkJyk7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLndvbnRVcGxvYWRTYW1lRmlsZScpKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXMgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzIDwgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApLnNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsZSBjYW5ub3QgYmUgdXBsb2FkZWQuIE1heGltdW0gc2l6ZSBvZiBmaWxlIGV4Y2VlZGVkLicpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5tYXhGaWxlc1NpemVFeGNlZWRlZCcpICsgdGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZpbGVGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBjb25zdCBmaWxlVG9VcGxvYWQgPSB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCkgYXMgRmlsZTtcbiAgICAgICAgY29uc3QgZGF0YTogRmlsZUZpZWxkSWRCb2R5ID0ge307XG4gICAgICAgIGRhdGFbdGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCldID0gdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQ7XG4gICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlVG9VcGxvYWQpO1xuICAgICAgICBmaWxlRm9ybURhdGEuYXBwZW5kKCdkYXRhJywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGRhdGEpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pKTtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS51cGxvYWRGaWxlKHRoaXMudGFza0lkLCB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCwgZmlsZUZvcm1EYXRhLCBmYWxzZSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgJiYgKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgPT09IFByb2dyZXNzVHlwZS5VUExPQUQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKX0gdXBsb2FkaW5nIGhhcyBmYWlsZWQhYCwgcmVzcG9uc2UuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudChyZXNwb25zZS5lcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLmZpbGVVcGxvYWRGYWlsZWQnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VkRmllbGRzTWFwOiBDaGFuZ2VkRmllbGRzTWFwID0gdGhpcy5fZXZlbnRTZXJ2aWNlLnBhcnNlQ2hhbmdlZEZpZWxkc0Zyb21PdXRjb21lVHJlZShyZXNwb25zZS5vdXRjb21lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmVtaXRDaGFuZ2VkRmllbGRzKGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCkubmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZGBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lID0gZmlsZVRvVXBsb2FkLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlUHJldmlldykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVByZXZpZXdJZkRpc3BsYXlhYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZ1bGxTb3VyY2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yRG93bmxvYWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnRvdWNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApfSB1cGxvYWRpbmcgaGFzIGZhaWxlZCFgLCBlcnJvclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yPy5lcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlcnJvci5lcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlVXBsb2FkRmFpbGVkJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlQmVmb3JlRG93bmxvYWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMuZmlsZUZvckRvd25sb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHRoaXMuZmlsZUZvckRvd25sb2FkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZSh0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSB8fCAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAhPT0gUHJvZ3Jlc3NUeXBlLkRPV05MT0FEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHJlc3BvbnNlIGFzIEJsb2IpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVQcmV2aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdERvd25sb2FkRmlsZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSBoYXMgZmFpbGVkIWAsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUgKyAnICcgKyB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLmRvd25sb2FkRmFpbCcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERvd25sb2FkRmlsZShyZXNwb25zZTogQmxvYiB8IFByb3ZpZGVyUHJvZ3Jlc3MpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldmlld0V4dGVuc2lvbiA9PT0gRmlsZVByZXZpZXdUeXBlLnBkZikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvckRvd25sb2FkID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU291cmNlLm5leHQodGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuZmlsZUZvckRvd25sb2FkKSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNvdXJjZS5uZXh0KHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlRm9yRG93bmxvYWQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZG93bmxvYWRWaWFBbmNob3IoYmxvYjogQmxvYik6IHZvaWQge1xuICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICAgICAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogbm9uZScpO1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUZvckRvd25sb2FkKSB7XG4gICAgICAgICAgICBibG9iID0gbmV3IEJsb2IoW2Jsb2JdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSd9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCghIXRoaXMuZmlsZUZvckRvd25sb2FkID8gdGhpcy5maWxlRm9yRG93bmxvYWQgOiBibG9iKTtcbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVGaWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YUZpZWxkLnZhbHVlIHx8ICF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkZWxldGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRlbGV0ZUZpbGUodGhpcy50YXNrSWQsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU291cmNlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdTb3VyY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yUHJldmlldyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVuYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEZWxldGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSBoYXMgZmFpbGVkIWAsIHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZURlbGV0ZUZhaWxlZCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBGaWxlU3RhdGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgdXBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGRvd25sb2FkaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBkaXNwbGF5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXRoaXMuZGF0YUZpZWxkKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZC52YWx1ZSAmJiAhIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5maWxlLm5vRmlsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgZmlsZSBmaWVsZCBpbWFnZSBmcm9tIGJhY2tlbmQgaWYgaXQgaXMgaW1hZ2UgdHlwZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdEZpbGVGaWVsZEltYWdlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlQmVmb3JlRG93bmxvYWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZVByZXZpZXcodGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCksIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhgUHJldmlldyBvZiBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JQcmV2aWV3ID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U291cmNlID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGVGb3JQcmV2aWV3KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCByZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRG93bmxvYWRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5kb3dubG9hZEZhaWwnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrRmlsZUJlZm9yZURvd25sb2FkKCkge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIGRvd25sb2FkZWQuIE5vIHRhc2sgaXMgc2V0IHRvIHRoZSBmaWVsZC4nKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd1ByZXZpZXdEaWFsb2coKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGVja0ZpbGVCZWZvcmVEb3dubG9hZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kb3dubG9hZEZpbGUodGhpcy50YXNrSWQsIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSB8fCAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAhPT0gUHJvZ3Jlc3NUeXBlLkRPV05MT0FEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZEZpbGUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYERvd25sb2FkaW5nIGZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWV9IGhhcyBmYWlsZWQhYCwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZU1heFdpZHRoKGV2ZW50OiBSZXNpemVkRXZlbnQpIHtcbiAgICAgICAgaWYgKCEhdGhpcy5pbWFnZUVsKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlRWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhXaWR0aCA9IGV2ZW50Lm5ld1JlY3Qud2lkdGggKyAncHgnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplUHJldmlld0lmRGlzcGxheWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUuc3BsaXQoJy4nKS5yZXZlcnNlKClbMF07XG4gICAgICAgIHRoaXMuaXNEaXNwbGF5YWJsZSA9IE9iamVjdC52YWx1ZXMoRmlsZVByZXZpZXdUeXBlKS5pbmNsdWRlcyhleHRlbnNpb24gYXMgYW55KTtcbiAgICAgICAgaWYgKHRoaXMuaXNEaXNwbGF5YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXh0ZW5zaW9uID0gRmlsZVByZXZpZXdUeXBlW2V4dGVuc2lvbl07XG4gICAgICAgICAgICB0aGlzLmluaXRGaWxlRmllbGRJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmxheW91dCAmJiB0aGlzLmRhdGFGaWVsZC5sYXlvdXQucm93cyAmJiB0aGlzLmRhdGFGaWVsZC5sYXlvdXQucm93cyAhPT0gMSA/XG4gICAgICAgICAgICAodGhpcy5kYXRhRmllbGQubGF5b3V0LnJvd3MpICogZmllbGRIZWlnaHQgLSBmaWVsZFBhZGRpbmcgOiBmaWVsZEhlaWdodCAtIGZpZWxkUGFkZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldmlld0JvcmRlcldpZHRoKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyV2lkdGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlcldpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7QWJzdHJhY3RGaWxlRmllbGRDb21wb25lbnQuREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9XSURUSH1weGA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZXZpZXdCb3JkZXJTdHlsZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlclN0eWxlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJTdHlsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQWJzdHJhY3RGaWxlRmllbGRDb21wb25lbnQuREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9TVFlMRTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldmlld0JvcmRlckNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyQ29sb3InKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlckNvbG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBYnN0cmFjdEZpbGVGaWVsZENvbXBvbmVudC5ERUZBVUxUX1BSRVZJRVdfQk9SREVSX0NPTE9SO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0JvcmRlckxHQlRRKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlckxHQlRRJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJMR0JUUSA9PT0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNCb3JkZXJEZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlckVuYWJsZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlckVuYWJsZWQgPT09ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGJvcmRlclByb3BlcnR5RW5hYmxlZChwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudCAmJiAhIXRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzICYmIHByb3BlcnR5IGluIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlUGFyZW50VGFza0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YUZpZWxkLnBhcmVudFRhc2tJZCA/IHRoaXMuZGF0YUZpZWxkLnBhcmVudFRhc2tJZCA6IHRoaXMudGFza0lkO1xuICAgIH1cbn1cbiJdfQ==
440
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RhdGEtZmllbGRzL2ZpbGUtZmllbGQvYWJzdHJhY3QtZmlsZS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRW5GLE9BQU8sRUFBQyxZQUFZLEVBQW1CLE1BQU0sMkNBQTJDLENBQUM7QUFJekYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFbEYsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVVsRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFFMUIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXZCLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4Qjs7R0FFRztBQUtILE1BQU0sT0FBZ0IsMEJBQTJCLFNBQVEsMEJBQTBCO0lBdUUvRTs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBZ0Msb0JBQXlDLEVBQ3pDLElBQW1CLEVBQ25CLFNBQTBCLEVBQzFCLFVBQTRCLEVBQzVCLGFBQTJCLEVBQ2Msc0JBQXNDLEVBQy9FLFVBQXdCO1FBQ3BELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FB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LENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyRixDQUFDOztBQTNkRDs7R0FFRztBQUNvQix1REFBNEIsR0FBRyxDQUFFLENBQUE7QUFDeEQ7O0dBRUc7QUFDb0IsdURBQTRCLEdBQUcsTUFBTyxDQUFBO0FBQzdEOztHQUVHO0FBQ29CLHVEQUE0QixHQUFHLE9BQVEsQ0FBQTt3SEFiNUMsMEJBQTBCLDZLQXVGRiw2QkFBNkI7NEdBdkZyRCwwQkFBMEIsMmFBRmxDLEVBQUU7NEZBRU0sMEJBQTBCO2tCQUovQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkF3RjBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCO3VFQXBFdkQsTUFBTTtzQkFBckIsS0FBSztnQkFJVSxTQUFTO3NCQUF4QixLQUFLO2dCQUkrQixZQUFZO3NCQUFoRCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFJQyxPQUFPO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBRVUsVUFBVTtzQkFBdkMsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RmlsZUZpZWxkLCBGaWxlUHJldmlld1R5cGV9IGZyb20gJy4vbW9kZWxzL2ZpbGUtZmllbGQnO1xuaW1wb3J0IHtBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQtY29tcG9uZW50JztcbmltcG9ydCB7VGFza1Jlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9ncmVzc1R5cGUsIFByb3ZpZGVyUHJvZ3Jlc3N9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEF9IGZyb20gJy4uL21vZGVscy9pbnZhbGlkLWRhdGEtcG9saWN5LXRva2VuJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtSZXNpemVkRXZlbnR9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gJy4uLy4uL2V2ZW50L3NlcnZpY2VzL2ludGVyZmFjZXMvY2hhbmdlZC1maWVsZHMtbWFwJztcbmltcG9ydCB7RmlsZUZpZWxkSWRCb2R5fSBmcm9tICcuLi9tb2RlbHMvZmlsZS1maWVsZC1pZC1ib2R5JztcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN0YXRlIHtcbiAgICBwcm9ncmVzczogbnVtYmVyO1xuICAgIHVwbG9hZGluZzogYm9vbGVhbjtcbiAgICBkb3dubG9hZGluZzogYm9vbGVhbjtcbiAgICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgZXJyb3I6IGJvb2xlYW47XG59XG5cbmNvbnN0IHByZXZpZXcgPSAncHJldmlldyc7XG5cbmNvbnN0IGZpZWxkSGVpZ2h0ID0gNzU7XG5cbmNvbnN0IGZpZWxkUGFkZGluZyA9IDE2O1xuXG4vKipcbiAqIENvbXBvbmVudCB0aGF0IGlzIGNyZWF0ZWQgaW4gdGhlIGJvZHkgb2YgdGhlIHRhc2sgcGFuZWwgYWNjb3JkIG9uIHRoZSBQZXRyaSBOZXQsIHdoaWNoIG11c3QgYmUgYmluZCBwcm9wZXJ0aWVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1maWxlLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWxlRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB3aWR0aCBvZiB0aGUgZGVmYXVsdCBmaWxlIHByZXZpZXcgYm9yZGVyIGluIHBpeGVscy4gVGhlIGBweGAgc3RyaW5nIGlzIGFwcGVuZGVkIGluIHRoZSBjb2RlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9XSURUSCA9IDA7XG4gICAgLyoqXG4gICAgICogVGhlIENTUyBzdHlsZSBhdHRyaWJ1dGUgb2YgdGhlIGRlZmF1bHQgZmlsZSBwcmV2aWV3IGJvcmRlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUFJFVklFV19CT1JERVJfU1RZTEUgPSAnbm9uZSc7XG4gICAgLyoqXG4gICAgICogVGhlIENTUyBjb2xvciBzdHJpbmcgb2YgdGhlIGRlZmF1bHQgZmlsZSBwcmV2aWV3IGJvcmRlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUFJFVklFV19CT1JERVJfQ09MT1IgPSAnYmxhY2snO1xuXG4gICAgcHVibGljIHN0YXRlOiBGaWxlU3RhdGU7XG4gICAgLyoqXG4gICAgICogVGFzayBtb25nbyBzdHJpbmcgaWQgaXMgYmluZGluZyBwcm9wZXJ0eSBmcm9tIHBhcmVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHRhc2tJZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEJpbmRpbmcgcHJvcGVydHkgYXMgaW5zdGFuY2UgZnJvbSBwYXJlbnQgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhRmllbGQ6IEZpbGVGaWVsZDtcbiAgICAvKipcbiAgICAgKiBGaWxlIHBpY2tlciBlbGVtZW50IHJlZmVyZW5jZSBmcm9tIGNvbXBvbmVudCB0ZW1wbGF0ZSB0aGF0IGlzIGluaXRpYWxpemVkIGFmdGVyIHZpZXcgaW5pdC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdmaWxlVXBsb2FkSW5wdXQnKSBwdWJsaWMgZmlsZVVwbG9hZEVsOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIC8qKlxuICAgICAqIEltYWdlIGZpZWxkIHZpZXcgZWxlbWVudCByZWZlcmVuY2UgZnJvbSBjb21wb25lbnQgdGVtcGxhdGUgdGhhdCBpcyBpbml0aWFsaXplZCBhZnRlciB2aWV3IGluaXQuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VFbCcpIHB1YmxpYyBpbWFnZUVsOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VEaXYnKSBwdWJsaWMgaW1hZ2VEaXZFbDogRWxlbWVudFJlZjtcbiAgICAvKipcbiAgICAgKiBJZiBmaWxlIHByZXZpZXcgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWxlUHJldmlldyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIElmIGZpbGUgdHlwZSBjYW4gYmUgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHVibGljIGlzRGlzcGxheWFibGUgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBNYXggaGVpZ2h0IG9mIHByZXZpZXdcbiAgICAgKi9cbiAgICBwcml2YXRlIG1heEhlaWdodDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFN0b3JlIGZpbGUgZm9yIHByZXZpZXdcbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbGVGb3JQcmV2aWV3OiBCbG9iO1xuICAgIC8qKlxuICAgICAqIFVybCBvZiBwcmV2aWV3IGZpbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJldmlld1NvdXJjZTogU2FmZVVybDtcbiAgICAvKipcbiAgICAgKiBTdG9yZSBmaWxlIHRvIHNob3cvZG93bmxvYWRcbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbGVGb3JEb3dubG9hZDogQmxvYjtcbiAgICAvKipcbiAgICAgKiBGdWxsIHNpemUgZmlsZSB1cmxcbiAgICAgKi9cbiAgICBwdWJsaWMgZnVsbFNvdXJjZTogQmVoYXZpb3JTdWJqZWN0PFNhZmVVcmw+O1xuICAgIC8qKlxuICAgICAqIEV4dGVuc2lvbiBvZiBmaWxlIHRvIHByZXZpZXdcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJldmlld0V4dGVuc2lvbjogRmlsZVByZXZpZXdUeXBlO1xuICAgIC8qKlxuICAgICAqIEZvcm0gY29udHJvbCBzdWJzY3JpcHRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZWRGaWVsZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqXG4gICAgICogT25seSBpbmplY3Qgc2VydmljZXMuXG4gICAgICogQHBhcmFtIF90YXNrUmVzb3VyY2VTZXJ2aWNlIFByb3ZpZGVzIHRvIGRvd25sb2FkIGEgZmlsZSBmcm9tIHRoZSBiYWNrZW5kXG4gICAgICogQHBhcmFtIF9sb2cgTG9nZ2VyIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gX3NuYWNrYmFyIFNuYWNrYmFyIHNlcnZpY2UgdG8gbm90aWZ5IHVzZXJcbiAgICAgKiBAcGFyYW0gX3RyYW5zbGF0ZSBUcmFuc2xhdGUgc2VydmljZSBmb3IgSTE4TlxuICAgICAqIEBwYXJhbSBfZXZlbnRTZXJ2aWNlIHVzZWQgZm9yIHBhcnNpbmcgb2YgYmFja2VuZCByZXNwb25zZVxuICAgICAqIEBwYXJhbSBpbmZvcm1BYm91dEludmFsaWREYXRhIHdoZXRoZXIgdGhlIGJhY2tlbmQgc2hvdWxkIGJlIG5vdGlmaWVkIGFib3V0IGludmFsaWQgdmFsdWVzLlxuICAgICAqIE9wdGlvbiBpbmplY3RlZCB0cm91Z2ggYE5BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBYCBJbmplY3Rpb25Ub2tlblxuICAgICAqIEBwYXJhbSBfc2FuaXRpemVyIFNhbml0aXplIHVybCBvZiBpbWFnZSBwcmV2aWV3XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdGFza1Jlc291cmNlU2VydmljZTogVGFza1Jlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEEpIGluZm9ybUFib3V0SW52YWxpZERhdGE6IGJvb2xlYW4gfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgICAgIHN1cGVyKGluZm9ybUFib3V0SW52YWxpZERhdGEpO1xuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuZnVsbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2FmZVVybD4obnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IDpcbiAgICAgKiAgLSBGaWxlIGZpZWxkIHRvIFtGaWxlRmllbGRTZXJ2aWNlXXtAbGluayBGaWxlRmllbGRTZXJ2aWNlfVxuICAgICAqICAtIERpc3BsYXkgbmFtZVxuICAgICAqL1xuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3ID0gdGhpcy5kYXRhRmllbGQgJiYgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50ICYmIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5uYW1lXG4gICAgICAgICAgICAmJiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQubmFtZSA9PT0gcHJldmlldztcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbGVVcGxvYWRFbCkge1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5vbmNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWxlUHJldmlldykge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5pbWFnZURpdkVsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQcmV2aWV3SWZEaXNwbGF5YWJsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZWRGaWVsZFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YUZpZWxkLnVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuZmlsZVByZXZpZXdcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuZGF0YUZpZWxkLnZhbHVlXG4gICAgICAgICAgICAgICAgJiYgISF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplUHJldmlld0lmRGlzcGxheWFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5mdWxsU291cmNlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlZEZpZWxkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNob29zZUZpbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnVwbG9hZGluZyB8fCB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgYWZ0ZXIgY2xpY2sgb24gZmlsZSBmaWVsZC5cbiAgICAgKlxuICAgICAqIElmIGZpbGUgZmllbGQgaGFzIG5vIGZpbGUgdXBsb2FkZWRcbiAgICAgKiBbRmlsZXNVcGxvYWRDb21wb25lbnRde0BsaW5rIEFic3RyYWN0RmlsZXNVcGxvYWRDb21wb25lbnR9IHZpYSBbU2lkZU1lbnVde0BsaW5rIFNpZGVNZW51U2VydmljZX0gb3BlbnMuXG4gICAgICpcbiAgICAgKiBPdGhlcndpc2Ugb3BlbnMgYSBmaWxlIHBpY2tlciBmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiBzZWxlY3QgZmlsZXMuXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzIHx8IHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSB1cGxvYWRlZC4gTm8gdGFzayBpcyBzZXQgdG8gdGhlIGZpZWxkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWx1ZSAmJlxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSAmJlxuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApLm5hbWUgPT09IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVXNlciBjaG9zZSB0aGUgc2FtZSBmaWxlLiBVcGxvYWRpbmcgc2tpcHBlZCcpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci53b250VXBsb2FkU2FtZUZpbGUnKSk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzICYmXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5tYXhVcGxvYWRTaXplSW5CeXRlcyA8IHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKS5zaXplKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIHVwbG9hZGVkLiBNYXhpbXVtIHNpemUgb2YgZmlsZSBleGNlZWRlZC4nKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubWF4RmlsZXNTaXplRXhjZWVkZWQnKSArIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWxlRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgY29uc3QgZmlsZVRvVXBsb2FkID0gdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApIGFzIEZpbGU7XG4gICAgICAgIGNvbnN0IGRhdGE6IEZpbGVGaWVsZElkQm9keSA9IHt9O1xuICAgICAgICBkYXRhW3RoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpXSA9IHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkO1xuICAgICAgICBmaWxlRm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZVRvVXBsb2FkKTtcbiAgICAgICAgZmlsZUZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkYXRhKV0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbid9KSk7XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UudXBsb2FkRmlsZSh0aGlzLnRhc2tJZCwgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQsIGZpbGVGb3JtRGF0YSwgZmFsc2UpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCl9IHVwbG9hZGluZyBoYXMgZmFpbGVkIWAsIHJlc3BvbnNlLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQocmVzcG9uc2UuZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlVXBsb2FkRmFpbGVkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHRoaXMuX2V2ZW50U2VydmljZS5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWUocmVzcG9uc2Uub3V0Y29tZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5lbWl0Q2hhbmdlZEZpZWxkcyhjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApLm5hbWV9IHdhcyBzdWNjZXNzZnVsbHkgdXBsb2FkZWRgXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSA9IGZpbGVUb1VwbG9hZC5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZVByZXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQcmV2aWV3SWZEaXNwbGF5YWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mdWxsU291cmNlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvckRvd25sb2FkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKX0gdXBsb2FkaW5nIGhhcyBmYWlsZWQhYCwgZXJyb3JcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZXJyb3IuZXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZVVwbG9hZEZhaWxlZCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudG91Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3dubG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrRmlsZUJlZm9yZURvd25sb2FkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmZpbGVGb3JEb3dubG9hZCkge1xuICAgICAgICAgICAgdGhpcy5kb3dubG9hZFZpYUFuY2hvcih0aGlzLmZpbGVGb3JEb3dubG9hZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kb3dubG9hZEZpbGUodGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCksXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmICghKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgfHwgKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgIT09IFByb2dyZXNzVHlwZS5ET1dOTE9BRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFZpYUFuY2hvcihyZXNwb25zZSBhcyBCbG9iKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlUHJldmlldykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZEZpbGUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRG93bmxvYWRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5kb3dubG9hZEZhaWwnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREb3dubG9hZEZpbGUocmVzcG9uc2U6IEJsb2IgfCBQcm92aWRlclByb2dyZXNzKSB7XG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpZXdFeHRlbnNpb24gPT09IEZpbGVQcmV2aWV3VHlwZS5wZGYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHt0eXBlOiAnYXBwbGljYXRpb24vcGRmJ30pO1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNvdXJjZS5uZXh0KHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGVGb3JEb3dubG9hZCkpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yRG93bmxvYWQgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSd9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxTb3VyY2UubmV4dCh0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuZmlsZUZvckRvd25sb2FkKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRvd25sb2FkVmlhQW5jaG9yKGJsb2I6IEJsb2IpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVGb3JEb3dubG9hZCkge1xuICAgICAgICAgICAgYmxvYiA9IG5ldyBCbG9iKFtibG9iXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoISF0aGlzLmZpbGVGb3JEb3dubG9hZCA/IHRoaXMuZmlsZUZvckRvd25sb2FkIDogYmxvYik7XG4gICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgYS5kb3dubG9hZCA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlRmlsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsZSBjYW5ub3QgYmUgZGVsZXRlZC4gTm8gdGFzayBpcyBzZXQgdG8gdGhlIGZpZWxkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJhbSA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgIHBhcmFtID0gcGFyYW0uc2V0KFwicGFyZW50VGFza0lkXCIsIHRoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpKTtcblxuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRlbGV0ZUZpbGUodGhpcy50YXNrSWQsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCwgdW5kZWZpbmVkLCBwYXJhbSkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU291cmNlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdTb3VyY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yUHJldmlldyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVuYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEZWxldGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSBoYXMgZmFpbGVkIWAsIHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZURlbGV0ZUZhaWxlZCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBGaWxlU3RhdGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgdXBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGRvd25sb2FkaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBkaXNwbGF5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXRoaXMuZGF0YUZpZWxkKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZC52YWx1ZSAmJiAhIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5maWxlLm5vRmlsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgZmlsZSBmaWVsZCBpbWFnZSBmcm9tIGJhY2tlbmQgaWYgaXQgaXMgaW1hZ2UgdHlwZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdEZpbGVGaWVsZEltYWdlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlQmVmb3JlRG93bmxvYWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZVByZXZpZXcodGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCksIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhgUHJldmlldyBvZiBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JQcmV2aWV3ID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U291cmNlID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGVGb3JQcmV2aWV3KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCByZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRG93bmxvYWRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5kb3dubG9hZEZhaWwnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrRmlsZUJlZm9yZURvd25sb2FkKCkge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIGRvd25sb2FkZWQuIE5vIHRhc2sgaXMgc2V0IHRvIHRoZSBmaWVsZC4nKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd1ByZXZpZXdEaWFsb2coKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGVja0ZpbGVCZWZvcmVEb3dubG9hZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kb3dubG9hZEZpbGUodGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCksIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSB8fCAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAhPT0gUHJvZ3Jlc3NUeXBlLkRPV05MT0FEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZEZpbGUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYERvd25sb2FkaW5nIGZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWV9IGhhcyBmYWlsZWQhYCwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZU1heFdpZHRoKGV2ZW50OiBSZXNpemVkRXZlbnQpIHtcbiAgICAgICAgaWYgKCEhdGhpcy5pbWFnZUVsKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlRWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhXaWR0aCA9IGV2ZW50Lm5ld1JlY3Qud2lkdGggKyAncHgnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplUHJldmlld0lmRGlzcGxheWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUuc3BsaXQoJy4nKS5yZXZlcnNlKClbMF07XG4gICAgICAgIHRoaXMuaXNEaXNwbGF5YWJsZSA9IE9iamVjdC52YWx1ZXMoRmlsZVByZXZpZXdUeXBlKS5pbmNsdWRlcyhleHRlbnNpb24gYXMgYW55KTtcbiAgICAgICAgaWYgKHRoaXMuaXNEaXNwbGF5YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXh0ZW5zaW9uID0gRmlsZVByZXZpZXdUeXBlW2V4dGVuc2lvbl07XG4gICAgICAgICAgICB0aGlzLmluaXRGaWxlRmllbGRJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmxheW91dCAmJiB0aGlzLmRhdGFGaWVsZC5sYXlvdXQucm93cyAmJiB0aGlzLmRhdGFGaWVsZC5sYXlvdXQucm93cyAhPT0gMSA/XG4gICAgICAgICAgICAodGhpcy5kYXRhRmllbGQubGF5b3V0LnJvd3MpICogZmllbGRIZWlnaHQgLSBmaWVsZFBhZGRpbmcgOiBmaWVsZEhlaWdodCAtIGZpZWxkUGFkZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldmlld0JvcmRlcldpZHRoKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyV2lkdGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlcldpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7QWJzdHJhY3RGaWxlRmllbGRDb21wb25lbnQuREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9XSURUSH1weGA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZXZpZXdCb3JkZXJTdHlsZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlclN0eWxlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJTdHlsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQWJzdHJhY3RGaWxlRmllbGRDb21wb25lbnQuREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9TVFlMRTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldmlld0JvcmRlckNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyQ29sb3InKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlckNvbG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBYnN0cmFjdEZpbGVGaWVsZENvbXBvbmVudC5ERUZBVUxUX1BSRVZJRVdfQk9SREVSX0NPTE9SO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0JvcmRlckxHQlRRKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlckxHQlRRJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJMR0JUUSA9PT0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNCb3JkZXJEZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlckVuYWJsZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlckVuYWJsZWQgPT09ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGJvcmRlclByb3BlcnR5RW5hYmxlZChwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudCAmJiAhIXRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzICYmIHByb3BlcnR5IGluIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlUGFyZW50VGFza0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YUZpZWxkLnBhcmVudFRhc2tJZCA/IHRoaXMuZGF0YUZpZWxkLnBhcmVudFRhc2tJZCA6IHRoaXMudGFza0lkO1xuICAgIH1cbn1cbiJdfQ==