@senior-gestao-empresarial/angular-components 5.1.0 → 5.1.1

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 (31) hide show
  1. package/bundles/senior-gestao-empresarial-angular-components.umd.js +48 -43
  2. package/bundles/senior-gestao-empresarial-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-empresarial-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-empresarial-angular-components.umd.min.js.map +1 -1
  5. package/components/lookups/erp-lookups.d.ts +1 -0
  6. package/components/nps/index.d.ts +1 -0
  7. package/components/nps/nps.service.d.ts +4 -35
  8. package/components/nps/protocols/index.d.ts +3 -0
  9. package/components/nps/protocols/tenant-full-dto.d.ts +3 -0
  10. package/components/nps/protocols/token-senior-x.d.ts +14 -0
  11. package/components/nps/protocols/tracksale-request.d.ts +18 -0
  12. package/esm2015/components/lookups/erp-lookups.js +14 -19
  13. package/esm2015/components/nps/index.js +1 -1
  14. package/esm2015/components/nps/nps.service.js +12 -9
  15. package/esm2015/components/nps/protocols/index.js +1 -0
  16. package/esm2015/components/nps/protocols/tenant-full-dto.js +1 -0
  17. package/esm2015/components/nps/protocols/token-senior-x.js +1 -0
  18. package/esm2015/components/nps/protocols/tracksale-request.js +1 -0
  19. package/esm5/components/lookups/erp-lookups.js +15 -19
  20. package/esm5/components/nps/index.js +1 -1
  21. package/esm5/components/nps/nps.service.js +32 -23
  22. package/esm5/components/nps/protocols/index.js +1 -0
  23. package/esm5/components/nps/protocols/tenant-full-dto.js +1 -0
  24. package/esm5/components/nps/protocols/token-senior-x.js +1 -0
  25. package/esm5/components/nps/protocols/tracksale-request.js +1 -0
  26. package/fesm2015/senior-gestao-empresarial-angular-components.js +24 -26
  27. package/fesm2015/senior-gestao-empresarial-angular-components.js.map +1 -1
  28. package/fesm5/senior-gestao-empresarial-angular-components.js +45 -40
  29. package/fesm5/senior-gestao-empresarial-angular-components.js.map +1 -1
  30. package/package.json +1 -1
  31. package/senior-gestao-empresarial-angular-components.metadata.json +1 -1
@@ -149,4 +149,5 @@ export declare class ErpLookups {
149
149
  mountEntityFilter(entity: EntityDependency, value: any): string;
150
150
  onLookupRequest(value: string, prefix: string, options?: LookupOptions): void;
151
151
  onSearchRequest(event: any, prefix: string, options?: LookupOptions): void;
152
+ getItemLabel(item: any, prefix: string, lookupDisplayFields: string[]): string;
152
153
  }
@@ -1 +1,2 @@
1
1
  export * from "./nps.service";
2
+ export * from "./protocols/index";
@@ -1,31 +1,11 @@
1
- export default interface TracksaleRequest {
2
- key: string;
3
- campaign: string;
4
- tags?: any;
5
- name?: string;
6
- email?: string;
7
- identification?: string;
8
- salute?: string;
9
- thanks?: string;
10
- require_comment?: boolean;
11
- appendTo?: string;
12
- onOpen?: Function;
13
- onClose?: Function;
14
- onAnswer?: Function;
15
- onUpdateInfo?: Function;
16
- onWarning?: Function;
17
- onError?: Function;
18
- }
19
- export interface TenantFullDTO {
20
- clientCode: string;
21
- }
1
+ import { ITokenSeniorX, TracksaleRequest } from "./protocols";
22
2
  export declare class NpsService {
23
- constructor();
24
- get cookieInformation(): ITokenSeniorX;
3
+ getUserInformation(): Promise<ITokenSeniorX>;
25
4
  /**
26
5
  * Executa o serviço de NPS utilizando os dados do usuário atual, no caso sobreescrevendos os campos name, email, identification,
27
6
  * tags.tenant e tags.email fornecidos no request original. Esses serão sobreescritos com os valores retornados pelo cookie
28
- * com.senior.pau.userdata. *
7
+ * com.senior.pau.userdata.
8
+ *
29
9
  * @param tracksaleRequest request que será enviado ao serviço de nps
30
10
  */
31
11
  currentUserInitNPS(tracksaleRequest: TracksaleRequest): Promise<void>;
@@ -36,14 +16,3 @@ export declare class NpsService {
36
16
  */
37
17
  initNPS(tracksaleRequest: TracksaleRequest): void;
38
18
  }
39
- export interface ITokenSeniorX {
40
- description: string;
41
- email: string;
42
- fullname: string;
43
- id: string;
44
- locale: string;
45
- subject: string;
46
- tenantLocale: string;
47
- tenantName: string;
48
- username: string;
49
- }
@@ -0,0 +1,3 @@
1
+ export * from "./tenant-full-dto";
2
+ export * from "./token-senior-x";
3
+ export * from "./tracksale-request";
@@ -0,0 +1,3 @@
1
+ export interface TenantFullDTO {
2
+ clientCode: string;
3
+ }
@@ -0,0 +1,14 @@
1
+ export interface ITokenSeniorX {
2
+ version: number;
3
+ scope: string;
4
+ expires_in: number;
5
+ username: string;
6
+ token_type: string;
7
+ access_token: string;
8
+ refresh_token: string;
9
+ type: string;
10
+ email: string;
11
+ fullName: string;
12
+ tenantName: string;
13
+ locale: string;
14
+ }
@@ -0,0 +1,18 @@
1
+ export interface TracksaleRequest {
2
+ key: string;
3
+ campaign: string;
4
+ tags?: any;
5
+ name?: string;
6
+ email?: string;
7
+ identification?: string;
8
+ salute?: string;
9
+ thanks?: string;
10
+ require_comment?: boolean;
11
+ appendTo?: string;
12
+ onOpen?: Function;
13
+ onClose?: Function;
14
+ onAnswer?: Function;
15
+ onUpdateInfo?: Function;
16
+ onWarning?: Function;
17
+ onError?: Function;
18
+ }
@@ -229,15 +229,7 @@ class ErpLookups {
229
229
  displayFields
230
230
  }, this.entity, options.domain || this.domain, options.service || this.service)
231
231
  .pipe(takeUntil(this.ngUnsubscribe))
232
- .pipe(map((list) => list.contents.map((item) => (Object.assign(Object.assign({}, item), { label: lookupDisplayFields
233
- .map((field) => {
234
- if (field.indexOf(".") > 0)
235
- return this.getProp(item, field, prefix);
236
- return item[field] !== undefined && item[field] !== null
237
- ? item[field]
238
- : this.translate.instant(`${prefix}.empty_label`);
239
- })
240
- .join(" - ") })))))
232
+ .pipe(map((list) => list.contents.map((item) => (Object.assign(Object.assign({}, item), { label: this.getItemLabel(item, prefix, lookupDisplayFields) })))))
241
233
  .subscribe((data) => {
242
234
  this.lookupSuggestionsObservable.next(data);
243
235
  });
@@ -297,21 +289,24 @@ class ErpLookups {
297
289
  .list({ page, sort, filterQuery, displayFields }, this.entity, options.domain || this.domain, options.service || this.service)
298
290
  .pipe(takeUntil(this.ngUnsubscribe))
299
291
  .pipe(map((list) => ({
300
- gridData: list.contents.map((item) => (Object.assign(Object.assign({}, item), { label: lookupDisplayFields
301
- .map((field) => {
302
- if (field.indexOf(".") > 0)
303
- return this.getProp(item, field, prefix);
304
- return item[field] !== undefined && item[field] !== null
305
- ? item[field]
306
- : this.translate.instant(`${prefix}.empty_label`);
307
- })
308
- .join(" - ") }))),
292
+ gridData: list.contents.map((item) => (Object.assign(Object.assign({}, item), { label: this.getItemLabel(item, prefix, lookupDisplayFields) }))),
309
293
  totalRecords: list.totalElements
310
294
  })))
311
295
  .subscribe((data) => {
312
296
  this.lookupSearchObservable.next(data);
313
297
  });
314
298
  }
299
+ getItemLabel(item, prefix, lookupDisplayFields) {
300
+ return lookupDisplayFields
301
+ .map((field) => {
302
+ if (field.indexOf(".") > 0)
303
+ return this.getProp(item, field, prefix);
304
+ return item[field] !== undefined && item[field] !== null
305
+ ? item[field]
306
+ : this.translate.instant(`${prefix}.empty_label`);
307
+ })
308
+ .join(" - ");
309
+ }
315
310
  };
316
311
  ErpLookups.ctorParameters = () => [
317
312
  { type: ErpLookupsService },
@@ -331,4 +326,4 @@ ErpLookups = __decorate([
331
326
  */
332
327
  ], ErpLookups);
333
328
  export { ErpLookups };
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLWxvb2t1cHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2xvb2t1cHMvZXJwLWxvb2t1cHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBZ0N2QixrRkFBa0Y7QUFDbEYsTUFBTSxDQUFOLElBQVksbUJBeUJYO0FBekJELFdBQVksbUJBQW1CO0lBQzNCLCtEQUErRDtJQUMvRCxnQ0FBUyxDQUFBO0lBQ1Qsa0VBQWtFO0lBQ2xFLGdDQUFTLENBQUE7SUFDVCx1REFBdUQ7SUFDdkQsZ0NBQVMsQ0FBQTtJQUNULGdFQUFnRTtJQUNoRSxnQ0FBUyxDQUFBO0lBQ1QsbURBQW1EO0lBQ25ELGdDQUFTLENBQUE7SUFDVCw2REFBNkQ7SUFDN0QsZ0NBQVMsQ0FBQTtJQUNULHdFQUF3RTtJQUN4RSxrQ0FBVyxDQUFBO0lBQ1gscUVBQXFFO0lBQ3JFLGdDQUFTLENBQUE7SUFDVCwrRUFBK0U7SUFDL0Usa0NBQVcsQ0FBQTtJQUNYLG1EQUFtRDtJQUNuRCxnQ0FBUyxDQUFBO0lBQ1QsbUVBQW1FO0lBQ25FLHVDQUFnQixDQUFB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QUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsaUNBQ3BDLElBQUksS0FDUCxLQUFLLEVBQUUsbUJBQW1CO3FCQUNyQixHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtvQkFDaEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7d0JBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSTt3QkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7d0JBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQztnQkFDMUQsQ0FBQyxDQUFDO3FCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFDbEIsQ0FBQztZQUNILFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNuQyxDQUFDLENBQUMsQ0FDTjthQUNBLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0osQ0FBQTs7WUFqVGdDLGlCQUFpQjtZQUNyQixnQkFBZ0I7Ozs7Ozs7O0FBWGhDLFVBQVU7SUFOdEIsVUFBVSxFQUFFO0lBRWI7OztNQUdFO0dBQ1csVUFBVSxDQTJUdEI7U0EzVFksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgRm9ybUZpZWxkLCBGaWVsZFR5cGUgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgRXJwTG9va3Vwc1NlcnZpY2UgfSBmcm9tIFwiLi9lcnAtbG9va3Vwcy5zZXJ2aWNlXCI7XG7igItcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG7igItcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbi8qKiBFbnRpZGFkZXMgZGUgcXVlIGRlcGVuZGUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RGVwZW5kZW5jeSB7XG4gICAgLyoqIE5vbWUgZGEgZW50aWRhZGUgcXVlIGRlcGVuZGUgKHBhaSkgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIENhbXBvIGRhIGVudGlkYWRlIHBhaSBxdWUgc2Vyw6EgY29tcGFyYWRvICovXG4gICAgZmllbGQ/OiBzdHJpbmc7XG4gICAgLyoqIFZhbG9yIGRhIGVudGlkYWRlIHBhaSAqL1xuICAgIHZhbHVlOiBGdW5jdGlvbjtcbn1cbuKAi1xuLyoqIEZpbHRybyBwYWRyw6NvIGFwbGljYWRvIGVtIHRvZGFzIHJlcXVpc2nDp8O1ZXMgZGEgZW50aWRhZGUuIFBvciBwYWRyw6NvIGZpbHRyYSByZWdpc3Ryb3MgbsOjbyBleGNsdWlkb3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdEZpbHRlciB7XG4gICAgLyoqIENhbXBvIHF1ZSBzZXLDoSBmaWx0cmFkbyAqL1xuICAgIGZpZWxkOiBzdHJpbmcgfCBEZWZhdWx0RmlsdGVyO1xuICAgIC8qKiBDb21wYXJhw6fDo28gcXVlIHNlcsOhIGFwbGljYWRhIG5hIGNvbnN1bHRhICovXG4gICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3I7XG4gICAgLyoqIFZhbG9yZXMgcXVlIHNlcsOjbyBidXNjYWRvcyAqL1xuICAgIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKiBGaWx0cm8gZGluYW1pY28gcGFyYSBjb25zdWx0YXMgbWFpcyBjb21wbGV4YXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ZpbHRlciB7XG4gICAgLyoqIENhbXBvIHF1ZSBzZXLDoSBmaWx0cmFkbyAqL1xuICAgIGZpZWxkOiBGdW5jdGlvblxuICAgIC8qKiBDb21wYXJhw6fDo28gcXVlIHNlcsOhIGFwbGljYWRhIG5hIGNvbnN1bHRhICovXG4gICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3I7XG4gICAgLyoqIFZhbG9yZXMgcXVlIHNlcsOjbyBidXNjYWRvcyAqL1xuICAgIHZhbHVlOiBGdW5jdGlvbjtcbn1cblxuLyoqIEZpbHRlciBTeXN0ZW0gUXVlcnkgT3B0aW9uIC0gT3BlcmF0b3JzIHN1cHBvcnRlZCBpbiB0aGUgZXhwcmVzc2lvbiBsYW5ndWFnZSAqL1xuZXhwb3J0IGVudW0gRW51bUxvZ2ljYWxPcGVyYXRvciB7XG4gICAgLyoqIEVxdWFsIChFeDogL1N1cHBsaWVycz8kZmlsdGVyPUFkZHJlc3MvQ2l0eSBlcSAnUmVkbW9uZCcpICovXG4gICAgRXEgPSBcImVxXCIsXG4gICAgLyoqIE5vdCBlcXVhbCAoRXg6IC9TdXBwbGllcnM/JGZpbHRlcj1BZGRyZXNzL0NpdHkgbmUgJ0xvbmRvbicpICovXG4gICAgTmUgPSBcIm5lXCIsXG4gICAgLyoqIEdyZWF0ZXIgdGhhbiAoRXg6IC9Qcm9kdWN0cz8kZmlsdGVyPVByaWNlIGd0IDIwKSAqL1xuICAgIEd0ID0gXCJndFwiLFxuICAgIC8qKiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1QcmljZSBnZSAxMCkgKi9cbiAgICBHZSA9IFwiZ2VcIixcbiAgICAvKiogTGVzcyB0aGFuIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9UHJpY2UgbHQgMjApKi9cbiAgICBMdCA9IFwibHRcIixcbiAgICAvKiogTGVzcyB0aGFuIG9yIGVxdWFsIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9UHJpY2UgbGUgMTAwKSovXG4gICAgTGUgPSBcImxlXCIsXG4gICAgLyoqIExvZ2ljYWwgYW5kXHQgKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1QcmljZSBsZSAyMDAgYW5kIFByaWNlIGd0IDMuNSkqL1xuICAgIEFuZCA9IFwiYW5kXCIsXG4gICAgLyoqIExvZ2ljYWwgb3IgKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1QcmljZSBsZSAzLjUgb3IgUHJpY2UgZ3QgMjAwKSovXG4gICAgT3IgPSBcIm9yXCIsXG4gICAgLyoqIExvZ2ljYWwgbmVnYXRpb24gKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1ub3QgZW5kc3dpdGgoRGVzY3JpcHRpb24sJ21pbGsnKSkqL1xuICAgIE5vdCA9IFwibm90XCIsXG4gICAgLyoqIExvZ2ljYWwgaXMgKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1pZCBpcyBudWxsICovXG4gICAgSXMgPSBcImlzXCIsXG4gICAgLyoqIE5lZ2F0aW9uIG9mIGxvZ2ljYWwgaXMgKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1pZCBpcyBub3QgbnVsbCAqL1xuICAgIElzTm90ID0gXCJpcyBub3RcIixcbiAgICAvKiogQ29udGFpbnMgc3RyaW5nIHZhbHVlIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9Y29udGFpbmluZyhsb3dlcihuYW1lKSwgbG93ZXIoJ215IG5hbWUnKSkpICovXG4gICAgQ29udGFpbnMgPSBcImNvbnRhaW5pbmdcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRPcHRpb25zIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9yZGVyOiBudW1iZXI7XG59XG5cbi8qKiBQYXLDom1ldHJvcyBwYXJhIGN1c3RvbWl6YcOnw7VlcyBkbyBsb29rdXAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwT3B0aW9ucyB7XG4gICAgLyoqIE5vbWUgZGEgZW50aWRhZGUgKi9cbiAgICBlbnRpdHk/OiBzdHJpbmc7XG4gICAgLyoqIE5vbWUgZG8gZm9ybUdyb3VwICovXG4gICAgZm9ybUdyb3VwPzogc3RyaW5nO1xuICAgIC8qKiBGaWx0cm8gcGFkcsOjbyAqL1xuICAgIGRlZmF1bHRGaWx0ZXI/OiBEZWZhdWx0RmlsdGVyW107XG4gICAgLyoqIEZpbHRybyBkaW7Dom1pY28gKi9cbiAgICBkeW5hbWljRmlsdGVyPzogRHluYW1pY0ZpbHRlcltdO1xuICAgIC8qKiBDYW1wb3MgZG8gbG9va3VwIChhdXRvY29tcGxldGUpICovXG4gICAgbG9va3VwRmllbGRzPzogRm9ybUZpZWxkW107XG4gICAgLyoqIENhbXBvcyBxdWUgc2Vyw6NvIHNvbGljaXRhZG9zIG5hIGNvbnN1bHRhICovXG4gICAgcXVlcnlGaWVsZHM/OiBzdHJpbmdbXTtcbiAgICAvKiogQ2FtcG9zIGV4aWJpZG9zIG5vIGZpbHRybyBkYSBtb2RhbCBkZSBsaXN0YWdlbSAqL1xuICAgIHNlYXJjaEZpZWxkcz86IEZvcm1GaWVsZFtdO1xuICAgIC8qKiBDYW1wb3MgZXhpYmlkb3MgbmEgZ3JpZCBkYSBtb2RhbCBkZSBsaXN0YWdlbSAqL1xuICAgIHNlYXJjaEdyaWRGaWVsZHM/OiBGb3JtRmllbGRbXTtcbiAgICAvKiogRGVmaW5lIHNlIG8gbG9va3VwIHBlcm1pdGlyw6EgbXVsdGkgc2VsZcOnw6NvICovXG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIC8qKiBFbnRpZGFkZXMgZGUgcXVlIGRlcGVuZGUgKi9cbiAgICBlbnRpdHlEZXBlbmRlbmN5PzogRW50aXR5RGVwZW5kZW5jeVtdO1xuICAgIC8qKiBQcmVmaXhvIHV0aWxpemFkbyBwYXJhIG1vbnRhciBvcyBsYWJlbHMgKHBvciBwYWRyw6NvIHV0aWxpemEgZG9tw61uaW8gZSBzZXJ2acOnbykgKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgLyoqIFN1Zml4byB1dGlsaXphZG8gcGFyYSBtb250YXIgb3MgbGFiZWxzIChwb3IgcGFkcsOjbyDDqSB2YXppbykgKi9cbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgLyoqIERvbcOtbmlvICovXG4gICAgZG9tYWluPzogc3RyaW5nO1xuICAgIC8qKiBTZXJ2acOnbyAqL1xuICAgIHNlcnZpY2U/OiBzdHJpbmc7XG4gICAgLyoqIERhdGEga2V5ICovXG4gICAgZGF0YUtleT86IHN0cmluZztcbiAgICAvKiogQ2FtcG9zIHBhcmEgb3JkZW5hw6fDo28gZG8gbG9va3VwIChhdXRvY29tcGxldGUpKi9cbiAgICBsb29rdXBTb3J0PzogU29ydE9wdGlvbnNbXTtcbiAgICAvKiogQ2FtcG9zIHBhcmEgYSBvcmRlbmHDp8OjbyBhbyBhYnJpciBhIG1vZGFsIGRlIGxpc3RhZ2VtICovXG4gICAgc2VhcmNoU29ydD86IFNvcnRPcHRpb25zW107XG59XG5cbkBJbmplY3RhYmxlKClcbuKAi1xuLyoqXG4gKiBFcnAgTG9va3Vwc1xuICogQGNsYXNzIEVycExvb2t1cHNcbiovXG5leHBvcnQgY2xhc3MgRXJwTG9va3VwcyB7XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICAvKipcbiAgICAgKiBDcmlhw6fDo28gZGUgdW0gbG9va3VwLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgTm9tZSBkYSBlbnRpZGFkZS5cbiAgICAgKiBAcGFyYW0gbG9va3VwRmllbGRzIENhbXBvcyBleGliaWRvcyBubyBhdXRvY29tcGxldGUuXG4gICAgICogQHBhcmFtIHNlYXJjaEZpZWxkcyBDYW1wb3MgZXhpYmlkb3Mgbm8gZmlsdHJvIGRlbnRybyBkYSBtb2RhbC5cbiAgICAgKiBAcGFyYW0gc2VhcmNoR3JpZEZpZWxkcyBDYW1wb3MgZXhpYmlkb3MgbmEgdGFiZWxhIGRlbnRybyBkYSBtb2RhbC5cbiAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgbG9va3VwU2VydmljZTogRXJwTG9va3Vwc1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZyxcbiAgICAgICAgcHJvdGVjdGVkIGxvb2t1cEZpZWxkczogRm9ybUZpZWxkW10sXG4gICAgICAgIHB1YmxpYyBzZWFyY2hGaWVsZHM6IEZvcm1GaWVsZFtdLFxuICAgICAgICBwdWJsaWMgc2VhcmNoR3JpZEZpZWxkczogRm9ybUZpZWxkW10sXG4gICAgICAgIHByb3RlY3RlZCBkb21haW46IHN0cmluZyxcbiAgICAgICAgcHJvdGVjdGVkIHNlcnZpY2U6IHN0cmluZyxcbiAgICApIHtcbiAgICAgICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICAgIHRoaXMuZG9tYWluID0gZG9tYWluO1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSBzZXJ2aWNlO1xuICAgICAgICB0aGlzLmxvb2t1cEZpZWxkcyA9IGxvb2t1cEZpZWxkcyB8fCBbXTtcbiAgICAgICAgdGhpcy5zZWFyY2hGaWVsZHMgPSBzZWFyY2hGaWVsZHMgfHwgW107XG4gICAgICAgIHRoaXMuc2VhcmNoR3JpZEZpZWxkcyA9IHNlYXJjaEdyaWRGaWVsZHMgfHwgW107XG4gICAgfVxuXG4gICAgcHVibGljIGxvb2t1cFN1Z2dlc3Rpb25zT2JzZXJ2YWJsZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHVibGljIGxvb2t1cFNlYXJjaE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xu4oCLXG4gICAgcHVibGljIHRvU25ha2VDYXNlKHZhbHVlOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyg/Ol58XFwuPykoW0EtWl0pL2csIGZ1bmN0aW9uICh4LCB5KSB7cmV0dXJuIFwiX1wiICsgeS50b0xvd2VyQ2FzZSgpOyB9KS5yZXBsYWNlKC9eXy8sIFwiXCIpO1xuICAgIH1cbuKAi1xuICAgIHB1YmxpYyBtb3VudEZvcm1GaWVsZChmaWVsZHM6IGFueSwgcHJlZml4OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5sb29rdXBfJHt0aGlzLnRvU25ha2VDYXNlKHRoaXMuZW50aXR5KX1fJHt0aGlzLnRvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWApLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbuKAi1xuICAgIHB1YmxpYyBtb3VudERlZmF1bHRGaWx0ZXIoZGVmYXVsdEZpbHRlcjogRGVmYXVsdEZpbHRlcltdID0gW3tmaWVsZDogXCJleGNsdWlkb1wiLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbXCJmYWxzZVwiXX1dKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RmlsdGVyLm1hcChmaWx0ZXIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFwiKFwiICsgZmlsdGVyLnZhbHVlcy5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIub3BlcmF0b3IgPT0gRW51bUxvZ2ljYWxPcGVyYXRvci5Db250YWlucylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBjb250YWluaW5nKGxvd2VyKCR7ZmlsdGVyLmZpZWxkfSksIGxvd2VyKCcke3ZhbHVlfScpKWA7XG5cbiAgICAgICAgICAgICAgICBpZiAoKGZpbHRlci5vcGVyYXRvciA9PSBFbnVtTG9naWNhbE9wZXJhdG9yLklzTm90IHx8IGZpbHRlci5vcGVyYXRvciA9PSBFbnVtTG9naWNhbE9wZXJhdG9yLklzKSAmJiAhdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtmaWx0ZXIuZmllbGR9ICR7ZmlsdGVyLm9wZXJhdG9yfSBudWxsYDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZmlsdGVyLmZpZWxkfSAke2ZpbHRlci5vcGVyYXRvcn0gJyR7dmFsdWV9J2A7XG4gICAgICAgICAgICB9KS5qb2luKFwiIG9yIFwiKSArIFwiKVwiO1xuICAgICAgICB9KS5qb2luKFwiIGFuZCBcIik7XG4gICAgfVxuXG4gICAgcHVibGljIG1vdW50RHluYW1pY0ZpbHRlcihkeW5hbWljRmlsdGVyOiBEeW5hbWljRmlsdGVyW10pIHtcbiAgICAgICAgaWYgKGR5bmFtaWNGaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBkeW5hbWljRmlsdGVyLm1hcChmaWx0ZXIgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBmaWx0ZXIudmFsdWUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5maWVsZCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yO1xuXG4gICAgICAgICAgICAgICAgaWYgKCEodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFt2YWx1ZXNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBcIihcIiArIHZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09IEVudW1Mb2dpY2FsT3BlcmF0b3IuQ29udGFpbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcobG93ZXIoJHtmaWVsZH0pLCBsb3dlcignJHt2YWx1ZX0nKSlgO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgob3BlcmF0b3IgPT0gRW51bUxvZ2ljYWxPcGVyYXRvci5Jc05vdCB8fCBvcGVyYXRvciA9PSBFbnVtTG9naWNhbE9wZXJhdG9yLklzKSAmJiAhdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZmllbGR9ICR7b3BlcmF0b3J9IG51bGxgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtmaWVsZH0gJHtvcGVyYXRvcn0gJyR7dmFsdWV9J2A7XG4gICAgICAgICAgICAgICAgfSkuam9pbihcIiBvciBcIikgKyBcIilcIjtcbiAgICAgICAgICAgIH0pLmpvaW4oXCIgYW5kIFwiKTtcbiAgICAgICAgfVxuICAgIH1cbuKAi1xuICAgIHB1YmxpYyBtb3VudEZpbHRlclF1ZXJ5KHZhbHVlOiBzdHJpbmcsIGxvb2t1cEZpZWxkczogRm9ybUZpZWxkW10sIGRlZmF1bHRGaWx0ZXI/OiBEZWZhdWx0RmlsdGVyW10sIGR5bmFtaWNGaWx0ZXI/OiBEeW5hbWljRmlsdGVyW10pIHtcbiAgICAgICAgbGV0IGZpbHRlclF1ZXJ5OiBzdHJpbmc7XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGxvb2t1cEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLlN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYChjb250YWluaW5nKGxvd2VyKCR7ZmllbGQubmFtZX0pLCBsb3dlcignJHt2YWx1ZX0nKSkpYDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5JbnRlZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFZhbHVlID0gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC9cXEQvZywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2FuaXRpemVkVmFsdWUpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCgke2ZpZWxkLm5hbWV9IGVxICcke3Nhbml0aXplZFZhbHVlfScpYDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCgke2ZpZWxkLm5hbWV9IGVxICcke3ZhbHVlfScpYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcihmaWx0ZXIgPT4gISFmaWx0ZXIpXG4gICAgICAgICAgICAuam9pbihcIiBvciBcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGxvb2t1cEZpZWxkc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5TdHJpbmcpXG4gICAgICAgICAgICAgICAgLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYChjb250YWluaW5nKGxvd2VyKCR7ZmllbGQubmFtZX0pLCBsb3dlcignJHt2YWx1ZS5yZXBsYWNlKC9cXFxcL2csIFwiXCIpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSkpYDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKFwiIG9yIFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXJRdWVyeSA9IHRoaXMubW91bnREZWZhdWx0RmlsdGVyKGRlZmF1bHRGaWx0ZXIpO1xuICAgICAgICBpZiAoZGVmYXVsdEZpbHRlclF1ZXJ5KVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBgKCgke2RlZmF1bHRGaWx0ZXJRdWVyeX0pIGFuZCAoJHtmaWx0ZXJRdWVyeX0pKWA7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gXCIoXCIgKyBmaWx0ZXJRdWVyeSArIFwiKVwiO1xu4oCLXG4gICAgICAgIGNvbnN0IGR5bmFtaWNGaWx0ZXJRdWVyeSA9IHRoaXMubW91bnREeW5hbWljRmlsdGVyKGR5bmFtaWNGaWx0ZXIpO1xuICAgICAgICBpZiAoZHluYW1pY0ZpbHRlclF1ZXJ5KVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBgKCgke2R5bmFtaWNGaWx0ZXJRdWVyeX0pIGFuZCAoJHtmaWx0ZXJRdWVyeX0pKWA7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gXCIoXCIgKyBmaWx0ZXJRdWVyeSArIFwiKVwiO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJRdWVyeTtcbiAgICB9XG7igItcbiAgICBwdWJsaWMgbW91bnRFbnVtRmlsdGVyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgbXVsdGlwbGU6IGJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIG11bHRpcGxlID8gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2ApLmpvaW4oXCIgb3IgXCIpfSlgIDogYCgke25hbWV9IGVxICcke3ZhbHVlfScpYDtcbiAgICB9XG7igItcbiAgICAvKiogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIG1vbnRhciBhcyBvcMOnw7VlcyBwYWRyw7VlcyBwYXJhIG8gbG9va3VwIGRvIER5bmFtaWMgRm9ybSAqL1xuICAgIHB1YmxpYyBtb3VudE9wdGlvbnMob3B0aW9uczogTG9va3VwT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IG9wdGlvbnMucHJlZml4XG4gICAgICAgICAgICA/IG9wdGlvbnMucHJlZml4XG4gICAgICAgICAgICA6IChvcHRpb25zLmRvbWFpbiAmJiBvcHRpb25zLnNlcnZpY2UpXG4gICAgICAgICAgICAgICAgPyBgJHtvcHRpb25zLmRvbWFpbn0uJHtvcHRpb25zLnNlcnZpY2V9YFxuICAgICAgICAgICAgICAgIDogYCR7dGhpcy5kb21haW59LiR7dGhpcy5zZXJ2aWNlfWA7XG5cbiAgICAgICAgY29uc3Qgc3VmZml4ID0gb3B0aW9ucy5zdWZmaXggPyBgXyR7b3B0aW9ucy5zdWZmaXh9YCA6IFwiXCI7XG5cblxuICAgICAgICBvcHRpb25zLmxvb2t1cEZpZWxkcyA9IG9wdGlvbnMubG9va3VwRmllbGRzICYmIG9wdGlvbnMubG9va3VwRmllbGRzLmxlbmd0aFxuICAgICAgICAgICAgPyBvcHRpb25zLmxvb2t1cEZpZWxkc1xuICAgICAgICAgICAgOiB0aGlzLmxvb2t1cEZpZWxkcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5mb3JtR3JvdXAgfHwgdGhpcy5lbnRpdHksXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtwcmVmaXh9Lmxvb2t1cF8ke3RoaXMudG9TbmFrZUNhc2Uob3B0aW9ucy5lbnRpdHkpIHx8IHRoaXMudG9TbmFrZUNhc2UodGhpcy5lbnRpdHkpfSR7c3VmZml4fWApLFxuICAgICAgICAgICAgc2VhcmNoVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5sb29rdXBfJHt0aGlzLnRvU25ha2VDYXNlKG9wdGlvbnMuZW50aXR5KSB8fFxuICAgICAgICAgICAgICAgIHRoaXMudG9TbmFrZUNhc2UodGhpcy5lbnRpdHkpfV9zZWFyY2hfdGl0bGVgKSxcbiAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Mb29rdXAsXG4gICAgICAgICAgICBtdWx0aXBsZTogb3B0aW9ucy5tdWx0aXBsZSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgICAgICAgICBkYXRhS2V5OiBvcHRpb25zLmRhdGFLZXkgfHwgXCJpZFwiLFxuICAgICAgICAgICAgbG9va3VwRGlzcGxheUZpZWxkOiBcImxhYmVsXCIsXG4gICAgICAgICAgICBzZWFyY2hFbXB0eVRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0ubm90aGluZ19mb3VuZGApLFxuICAgICAgICAgICAgZmlsdGVyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5maWx0ZXJgKSxcbiAgICAgICAgICAgIGNsZWFyTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5jbGVhcmApLFxuICAgICAgICAgICAgY2FuY2VsTGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5jYW5jZWxgKSxcbiAgICAgICAgICAgIHNlbGVjdExhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0uc2VsZWN0YCksXG4gICAgICAgICAgICBzZWFyY2hGaWVsZHM6IG9wdGlvbnMuc2VhcmNoRmllbGRzID8gdGhpcy5tb3VudEZvcm1GaWVsZChvcHRpb25zLnNlYXJjaEZpZWxkcywgcHJlZml4KSA6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VudEZvcm1GaWVsZCh0aGlzLnNlYXJjaEZpZWxkcywgcHJlZml4KSxcbiAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHM6IG9wdGlvbnMuc2VhcmNoR3JpZEZpZWxkcyA/IHRoaXMubW91bnRGb3JtRmllbGQob3B0aW9ucy5zZWFyY2hHcmlkRmllbGRzLCBwcmVmaXgpIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1vdW50Rm9ybUZpZWxkKHRoaXMuc2VhcmNoR3JpZEZpZWxkcywgcHJlZml4KSxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zT2JzZXJ2YWJsZTogdGhpcy5sb29rdXBTdWdnZXN0aW9uc09ic2VydmFibGUsXG4gICAgICAgICAgICBzZWFyY2hPYnNlcnZhYmxlOiB0aGlzLmxvb2t1cFNlYXJjaE9ic2VydmFibGUsXG4gICAgICAgICAgICBvbkxvb2t1cFJlcXVlc3Q6ICh2YWx1ZTogc3RyaW5nKSA9PiB0aGlzLm9uTG9va3VwUmVxdWVzdCh2YWx1ZSwgcHJlZml4LCBvcHRpb25zKSxcbiAgICAgICAgICAgIG9uU2VhcmNoUmVxdWVzdDogKGV2ZW50OiBhbnkpID0+IHRoaXMub25TZWFyY2hSZXF1ZXN0KGV2ZW50LCBwcmVmaXgsIG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgfVxu4oCLXG4gICAgcHVibGljIGdldFByb3Aob2JqOiBhbnksIHBhdGg6IGFueSwgcHJlZml4OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdFtwcm9wXSA9PT0gbnVsbFxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0uZW1wdHlfbGFiZWxgKVxuICAgICAgICAgICAgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91bnRFbnRpdHlGaWx0ZXIoZW50aXR5OiBFbnRpdHlEZXBlbmRlbmN5LCB2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGVudGl0eS5maWVsZFxuICAgICAgICAgICAgPyBgKCR7ZW50aXR5Lm5hbWV9LiR7ZW50aXR5LmZpZWxkfSBlcSAnJHt2YWx1ZVtlbnRpdHkuZmllbGRdfScpYFxuICAgICAgICAgICAgOiBgKCR7ZW50aXR5Lm5hbWV9IGVxICcke3ZhbHVlW2VudGl0eS5uYW1lXX0nKWA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTG9va3VwUmVxdWVzdCh2YWx1ZTogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgb3B0aW9ucz86IExvb2t1cE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMubG9va3VwU29ydDtcbiAgICAgICAgY29uc3QgbG9va3VwRGlzcGxheUZpZWxkcyA9IG9wdGlvbnMubG9va3VwRmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKTtcbiAgICAgICAgbGV0IGZpbHRlclF1ZXJ5ID0gdGhpcy5tb3VudEZpbHRlclF1ZXJ5KHZhbHVlLCBvcHRpb25zLmxvb2t1cEZpZWxkcywgb3B0aW9ucy5kZWZhdWx0RmlsdGVyLCBvcHRpb25zLmR5bmFtaWNGaWx0ZXIpO1xuXG4gICAgICAgIGxldCBkaXNwbGF5RmllbGRzID0gbG9va3VwRGlzcGxheUZpZWxkcy5jb25jYXQoIChvcHRpb25zLnNlYXJjaEdyaWRGaWVsZHMgfHwgdGhpcy5zZWFyY2hHcmlkRmllbGRzKVxuICAgICAgICAgICAgLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpIHx8IFtdKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucXVlcnlGaWVsZHMpXG4gICAgICAgICAgICBkaXNwbGF5RmllbGRzID0gZGlzcGxheUZpZWxkcy5jb25jYXQob3B0aW9ucy5xdWVyeUZpZWxkcyk7XG4gICAgICAgIGRpc3BsYXlGaWVsZHMgPSBkaXNwbGF5RmllbGRzLmZpbHRlcigodiwgaSkgPT4gZGlzcGxheUZpZWxkcy5pbmRleE9mKHYpID09PSBpKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5lbnRpdHlEZXBlbmRlbmN5KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlGaWx0ZXIgPSBvcHRpb25zLmVudGl0eURlcGVuZGVuY3kubWFwKChlbnRpdHk6IEVudGl0eURlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVudGl0eS52YWx1ZSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZShuZXdWYWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCgke25ld1ZhbHVlLm1hcCgodmFsOiBhbnkpID0+IHRoaXMubW91bnRFbnRpdHlGaWx0ZXIoZW50aXR5LCB2YWwpKS5qb2luKFwiIG9yIFwiKX0pYDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCgke3RoaXMubW91bnRFbnRpdHlGaWx0ZXIoZW50aXR5LCBuZXdWYWx1ZSl9KWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuZmlsdGVyKGZpbHRlciA9PiAhIWZpbHRlcikuam9pbiAoXCIgYW5kIFwiKTtcbiAgICAgICAgICAgIGlmIChlbnRpdHlGaWx0ZXIpXG4gICAgICAgICAgICAgICAgZmlsdGVyUXVlcnkgPyBmaWx0ZXJRdWVyeSArPSBgIGFuZCAoJHtlbnRpdHlGaWx0ZXJ9KWAgOiBmaWx0ZXJRdWVyeSA9IGVudGl0eUZpbHRlcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvb2t1cFNlcnZpY2VcbiAgICAgICAgICAgIC5saXN0KHtcbiAgICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMuZG9tYWluIHx8IHRoaXMuZG9tYWluLFxuICAgICAgICAgICAgb3B0aW9ucy5zZXJ2aWNlIHx8IHRoaXMuc2VydmljZSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChsaXN0OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIGxpc3QuY29udGVudHMubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxvb2t1cERpc3BsYXlGaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5pbmRleE9mKFwiLlwiKSA+IDApIHJldHVybiB0aGlzLmdldFByb3AoaXRlbSwgZmllbGQsIHByZWZpeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW2ZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bZmllbGRdICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW1bZmllbGRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5lbXB0eV9sYWJlbGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIgLSBcIiksXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9va3VwU3VnZ2VzdGlvbnNPYnNlcnZhYmxlLm5leHQoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG7igItcbiAgICBwdWJsaWMgb25TZWFyY2hSZXF1ZXN0KGV2ZW50OiBhbnksIHByZWZpeDogc3RyaW5nLCBvcHRpb25zPzogTG9va3VwT3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IGZpcnN0LCByb3dzLCBtdWx0aVNvcnRNZXRhLCBmaWx0ZXJEYXRhIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgcGFnZSA9IGZpcnN0IC8gcm93cztcbiAgICAgICAgY29uc3Qgc29ydCA9IG11bHRpU29ydE1ldGEgPyBtdWx0aVNvcnRNZXRhIDogb3B0aW9ucy5zZWFyY2hTb3J0O1xuICAgICAgICBjb25zdCBsb29rdXBEaXNwbGF5RmllbGRzID0gb3B0aW9ucy5sb29rdXBGaWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLm5hbWUpO1xuXG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IChvcHRpb25zLnNlYXJjaEZpZWxkcyB8fCB0aGlzLnNlYXJjaEZpZWxkcylcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJEYXRhW25hbWVdICE9IFwiXCIpXG4gICAgICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlckRhdGFbbmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRmllbGRUeXBlLkRhdGUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIil9J2A7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBGaWVsZFR5cGUuVGltZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBGaWVsZFR5cGUuRGF0ZVRpbWUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRmllbGRUeXBlLkVudW0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1vdW50RW51bUZpbHRlcihuYW1lLCB2YWx1ZSwgbXVsdGlwbGUpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRmllbGRUeXBlLlN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoY29udGFpbmluZyhsb3dlcigke25hbWV9KSwgbG93ZXIoJyR7dmFsdWV9JykpKWA7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCIgYW5kIFwiKTtcbuKAi1xuICAgICAgICBpZiAob3B0aW9ucy5lbnRpdHlEZXBlbmRlbmN5KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlGaWx0ZXIgPSBvcHRpb25zLmVudGl0eURlcGVuZGVuY3kubWFwKChlbnRpdHk6IEVudGl0eURlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVudGl0eS52YWx1ZSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt2YWx1ZS5tYXAoKHZhbDogYW55KSA9PiB0aGlzLm1vdW50RW50aXR5RmlsdGVyKGVudGl0eSwgdmFsKSkuam9pbihcIiBvciBcIil9KWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt0aGlzLm1vdW50RW50aXR5RmlsdGVyKGVudGl0eSwgdmFsdWUpfSlgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmZpbHRlcihmaWx0ZXIgPT4gISFmaWx0ZXIpLmpvaW4gKFwiIGFuZCBcIik7XG4gICAgICAgICAgICBpZiAoZW50aXR5RmlsdGVyKVxuICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID8gZmlsdGVyUXVlcnkgKz0gYCBhbmQgKCR7ZW50aXR5RmlsdGVyfSlgIDogZmlsdGVyUXVlcnkgPSBlbnRpdHlGaWx0ZXI7XG4gICAgICAgIH1cbuKAi1xuICAgICAgICBjb25zdCBkZWZhdWx0RmlsdGVyUXVlcnkgPSB0aGlzLm1vdW50RGVmYXVsdEZpbHRlcihvcHRpb25zLmRlZmF1bHRGaWx0ZXIpO1xuICAgICAgICBpZiAoZGVmYXVsdEZpbHRlclF1ZXJ5KVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPyBmaWx0ZXJRdWVyeSArPSBgIGFuZCAoJHtkZWZhdWx0RmlsdGVyUXVlcnl9KWAgOiBmaWx0ZXJRdWVyeSA9IGAoJHtkZWZhdWx0RmlsdGVyUXVlcnl9KWA7XG5cbiAgICAgICAgY29uc3QgZHluYW1pY0ZpbHRlclF1ZXJ5ID0gdGhpcy5tb3VudER5bmFtaWNGaWx0ZXIob3B0aW9ucy5keW5hbWljRmlsdGVyKTtcbiAgICAgICAgaWYgKGR5bmFtaWNGaWx0ZXJRdWVyeSlcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID8gZmlsdGVyUXVlcnkgKz0gYCBhbmQgKCR7ZHluYW1pY0ZpbHRlclF1ZXJ5fSlgIDogZmlsdGVyUXVlcnkgPSBgKCR7ZHluYW1pY0ZpbHRlclF1ZXJ5fSlgO1xuXG4gICAgICAgIGxldCBkaXNwbGF5RmllbGRzID0gbG9va3VwRGlzcGxheUZpZWxkcy5jb25jYXQoIChvcHRpb25zLnNlYXJjaEdyaWRGaWVsZHMgfHwgdGhpcy5zZWFyY2hHcmlkRmllbGRzKVxuICAgICAgICAgICAgLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpIHx8IFtdKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucXVlcnlGaWVsZHMpXG4gICAgICAgICAgICBkaXNwbGF5RmllbGRzID0gZGlzcGxheUZpZWxkcy5jb25jYXQob3B0aW9ucy5xdWVyeUZpZWxkcyk7XG4gICAgICAgIGRpc3BsYXlGaWVsZHMgPSBkaXNwbGF5RmllbGRzLmZpbHRlcigodiwgaSkgPT4gZGlzcGxheUZpZWxkcy5pbmRleE9mKHYpID09PSBpKTtcblxuICAgICAgICB0aGlzLmxvb2t1cFNlcnZpY2VcbiAgICAgICAgICAgIC5saXN0KHsgcGFnZSwgc29ydCwgZmlsdGVyUXVlcnksIGRpc3BsYXlGaWVsZHMgfSwgdGhpcy5lbnRpdHksIG9wdGlvbnMuZG9tYWluIHx8IHRoaXMuZG9tYWluLCBvcHRpb25zLnNlcnZpY2UgfHwgdGhpcy5zZXJ2aWNlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGxpc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZERhdGE6IGxpc3QuY29udGVudHMubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxvb2t1cERpc3BsYXlGaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5pbmRleE9mKFwiLlwiKSA+IDApIHJldHVybiB0aGlzLmdldFByb3AoaXRlbSwgZmllbGQsIHByZWZpeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW2ZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bZmllbGRdICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW1bZmllbGRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5lbXB0eV9sYWJlbGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIgLSBcIilcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbFJlY29yZHM6IGxpc3QudG90YWxFbGVtZW50c1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29rdXBTZWFyY2hPYnNlcnZhYmxlLm5leHQoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLWxvb2t1cHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2xvb2t1cHMvZXJwLWxvb2t1cHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBZ0N2QixrRkFBa0Y7QUFDbEYsTUFBTSxDQUFOLElBQVksbUJBeUJYO0FBekJELFdBQVksbUJBQW1CO0lBQzNCLCtEQUErRDtJQUMvRCxnQ0FBUyxDQUFBO0lBQ1Qsa0VBQWtFO0lBQ2xFLGdDQUFTLENBQUE7SUFDVCx1REFBdUQ7SUFDdkQsZ0NBQVMsQ0FBQTtJQUNULGdFQUFnRTtJQUNoRSxnQ0FBUyxDQUFBO0lBQ1QsbURBQW1EO0lBQ25ELGdDQUFTLENBQUE7SUFDVCw2REFBNkQ7SUFDN0QsZ0NBQVMsQ0FBQTtJQUNULHdFQUF3RTtJQUN4RSxrQ0FBVyxDQUFBO0lBQ1gscUVBQXFFO0lBQ3JFLGdDQUFTLENBQUE7SUFDVCwrRUFBK0U7SUFDL0Usa0NBQVcsQ0FBQTtJQUNYLG1EQUFtRDtJQUNuRCxnQ0FBUyxDQUFBO0lBQ1QsbUVBQW1FO0lBQ25FLHVDQUFnQixDQUFB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Q2pFLE9BQU8sbUJBQW1CO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSTtnQkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztDQUNKLENBQUE7O1lBOVNnQyxpQkFBaUI7WUFDckIsZ0JBQWdCOzs7Ozs7OztBQVhoQyxVQUFVO0lBTnRCLFVBQVUsRUFBRTtJQUViOzs7TUFHRTtHQUNXLFVBQVUsQ0F3VHRCO1NBeFRZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IEZvcm1GaWVsZCwgRmllbGRUeXBlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVycExvb2t1cHNTZXJ2aWNlIH0gZnJvbSBcIi4vZXJwLWxvb2t1cHMuc2VydmljZVwiO1xu4oCLXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IHRha2VVbnRpbCwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xu4oCLXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG4vKiogRW50aWRhZGVzIGRlIHF1ZSBkZXBlbmRlICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eURlcGVuZGVuY3kge1xuICAgIC8qKiBOb21lIGRhIGVudGlkYWRlIHF1ZSBkZXBlbmRlIChwYWkpICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBDYW1wbyBkYSBlbnRpZGFkZSBwYWkgcXVlIHNlcsOhIGNvbXBhcmFkbyAqL1xuICAgIGZpZWxkPzogc3RyaW5nO1xuICAgIC8qKiBWYWxvciBkYSBlbnRpZGFkZSBwYWkgKi9cbiAgICB2YWx1ZTogRnVuY3Rpb247XG59XG7igItcbi8qKiBGaWx0cm8gcGFkcsOjbyBhcGxpY2FkbyBlbSB0b2RhcyByZXF1aXNpw6fDtWVzIGRhIGVudGlkYWRlLiBQb3IgcGFkcsOjbyBmaWx0cmEgcmVnaXN0cm9zIG7Do28gZXhjbHVpZG9zICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRGaWx0ZXIge1xuICAgIC8qKiBDYW1wbyBxdWUgc2Vyw6EgZmlsdHJhZG8gKi9cbiAgICBmaWVsZDogc3RyaW5nIHwgRGVmYXVsdEZpbHRlcjtcbiAgICAvKiogQ29tcGFyYcOnw6NvIHF1ZSBzZXLDoSBhcGxpY2FkYSBuYSBjb25zdWx0YSAqL1xuICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yO1xuICAgIC8qKiBWYWxvcmVzIHF1ZSBzZXLDo28gYnVzY2Fkb3MgKi9cbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vKiogRmlsdHJvIGRpbmFtaWNvIHBhcmEgY29uc3VsdGFzIG1haXMgY29tcGxleGFzICovXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGaWx0ZXIge1xuICAgIC8qKiBDYW1wbyBxdWUgc2Vyw6EgZmlsdHJhZG8gKi9cbiAgICBmaWVsZDogRnVuY3Rpb25cbiAgICAvKiogQ29tcGFyYcOnw6NvIHF1ZSBzZXLDoSBhcGxpY2FkYSBuYSBjb25zdWx0YSAqL1xuICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yO1xuICAgIC8qKiBWYWxvcmVzIHF1ZSBzZXLDo28gYnVzY2Fkb3MgKi9cbiAgICB2YWx1ZTogRnVuY3Rpb247XG59XG5cbi8qKiBGaWx0ZXIgU3lzdGVtIFF1ZXJ5IE9wdGlvbiAtIE9wZXJhdG9ycyBzdXBwb3J0ZWQgaW4gdGhlIGV4cHJlc3Npb24gbGFuZ3VhZ2UgKi9cbmV4cG9ydCBlbnVtIEVudW1Mb2dpY2FsT3BlcmF0b3Ige1xuICAgIC8qKiBFcXVhbCAoRXg6IC9TdXBwbGllcnM/JGZpbHRlcj1BZGRyZXNzL0NpdHkgZXEgJ1JlZG1vbmQnKSAqL1xuICAgIEVxID0gXCJlcVwiLFxuICAgIC8qKiBOb3QgZXF1YWwgKEV4OiAvU3VwcGxpZXJzPyRmaWx0ZXI9QWRkcmVzcy9DaXR5IG5lICdMb25kb24nKSAqL1xuICAgIE5lID0gXCJuZVwiLFxuICAgIC8qKiBHcmVhdGVyIHRoYW4gKEV4OiAvUHJvZHVjdHM/JGZpbHRlcj1QcmljZSBndCAyMCkgKi9cbiAgICBHdCA9IFwiZ3RcIixcbiAgICAvKiogR3JlYXRlciB0aGFuIG9yIGVxdWFsIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9UHJpY2UgZ2UgMTApICovXG4gICAgR2UgPSBcImdlXCIsXG4gICAgLyoqIExlc3MgdGhhbiAoRXg6IC9Qcm9kdWN0cz8kZmlsdGVyPVByaWNlIGx0IDIwKSovXG4gICAgTHQgPSBcImx0XCIsXG4gICAgLyoqIExlc3MgdGhhbiBvciBlcXVhbCAoRXg6IC9Qcm9kdWN0cz8kZmlsdGVyPVByaWNlIGxlIDEwMCkqL1xuICAgIExlID0gXCJsZVwiLFxuICAgIC8qKiBMb2dpY2FsIGFuZFx0IChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9UHJpY2UgbGUgMjAwIGFuZCBQcmljZSBndCAzLjUpKi9cbiAgICBBbmQgPSBcImFuZFwiLFxuICAgIC8qKiBMb2dpY2FsIG9yIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9UHJpY2UgbGUgMy41IG9yIFByaWNlIGd0IDIwMCkqL1xuICAgIE9yID0gXCJvclwiLFxuICAgIC8qKiBMb2dpY2FsIG5lZ2F0aW9uIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9bm90IGVuZHN3aXRoKERlc2NyaXB0aW9uLCdtaWxrJykpKi9cbiAgICBOb3QgPSBcIm5vdFwiLFxuICAgIC8qKiBMb2dpY2FsIGlzIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9aWQgaXMgbnVsbCAqL1xuICAgIElzID0gXCJpc1wiLFxuICAgIC8qKiBOZWdhdGlvbiBvZiBsb2dpY2FsIGlzIChFeDogL1Byb2R1Y3RzPyRmaWx0ZXI9aWQgaXMgbm90IG51bGwgKi9cbiAgICBJc05vdCA9IFwiaXMgbm90XCIsXG4gICAgLyoqIENvbnRhaW5zIHN0cmluZyB2YWx1ZSAoRXg6IC9Qcm9kdWN0cz8kZmlsdGVyPWNvbnRhaW5pbmcobG93ZXIobmFtZSksIGxvd2VyKCdteSBuYW1lJykpKSAqL1xuICAgIENvbnRhaW5zID0gXCJjb250YWluaW5nXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3B0aW9ucyB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcmRlcjogbnVtYmVyO1xufVxuXG4vKiogUGFyw6JtZXRyb3MgcGFyYSBjdXN0b21pemHDp8O1ZXMgZG8gbG9va3VwICovXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cE9wdGlvbnMge1xuICAgIC8qKiBOb21lIGRhIGVudGlkYWRlICovXG4gICAgZW50aXR5Pzogc3RyaW5nO1xuICAgIC8qKiBOb21lIGRvIGZvcm1Hcm91cCAqL1xuICAgIGZvcm1Hcm91cD86IHN0cmluZztcbiAgICAvKiogRmlsdHJvIHBhZHLDo28gKi9cbiAgICBkZWZhdWx0RmlsdGVyPzogRGVmYXVsdEZpbHRlcltdO1xuICAgIC8qKiBGaWx0cm8gZGluw6JtaWNvICovXG4gICAgZHluYW1pY0ZpbHRlcj86IER5bmFtaWNGaWx0ZXJbXTtcbiAgICAvKiogQ2FtcG9zIGRvIGxvb2t1cCAoYXV0b2NvbXBsZXRlKSAqL1xuICAgIGxvb2t1cEZpZWxkcz86IEZvcm1GaWVsZFtdO1xuICAgIC8qKiBDYW1wb3MgcXVlIHNlcsOjbyBzb2xpY2l0YWRvcyBuYSBjb25zdWx0YSAqL1xuICAgIHF1ZXJ5RmllbGRzPzogc3RyaW5nW107XG4gICAgLyoqIENhbXBvcyBleGliaWRvcyBubyBmaWx0cm8gZGEgbW9kYWwgZGUgbGlzdGFnZW0gKi9cbiAgICBzZWFyY2hGaWVsZHM/OiBGb3JtRmllbGRbXTtcbiAgICAvKiogQ2FtcG9zIGV4aWJpZG9zIG5hIGdyaWQgZGEgbW9kYWwgZGUgbGlzdGFnZW0gKi9cbiAgICBzZWFyY2hHcmlkRmllbGRzPzogRm9ybUZpZWxkW107XG4gICAgLyoqIERlZmluZSBzZSBvIGxvb2t1cCBwZXJtaXRpcsOhIG11bHRpIHNlbGXDp8OjbyAqL1xuICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgICAvKiogRW50aWRhZGVzIGRlIHF1ZSBkZXBlbmRlICovXG4gICAgZW50aXR5RGVwZW5kZW5jeT86IEVudGl0eURlcGVuZGVuY3lbXTtcbiAgICAvKiogUHJlZml4byB1dGlsaXphZG8gcGFyYSBtb250YXIgb3MgbGFiZWxzIChwb3IgcGFkcsOjbyB1dGlsaXphIGRvbcOtbmlvIGUgc2VydmnDp28pICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKiBTdWZpeG8gdXRpbGl6YWRvIHBhcmEgbW9udGFyIG9zIGxhYmVscyAocG9yIHBhZHLDo28gw6kgdmF6aW8pICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIC8qKiBEb23DrW5pbyAqL1xuICAgIGRvbWFpbj86IHN0cmluZztcbiAgICAvKiogU2VydmnDp28gKi9cbiAgICBzZXJ2aWNlPzogc3RyaW5nO1xuICAgIC8qKiBEYXRhIGtleSAqL1xuICAgIGRhdGFLZXk/OiBzdHJpbmc7XG4gICAgLyoqIENhbXBvcyBwYXJhIG9yZGVuYcOnw6NvIGRvIGxvb2t1cCAoYXV0b2NvbXBsZXRlKSovXG4gICAgbG9va3VwU29ydD86IFNvcnRPcHRpb25zW107XG4gICAgLyoqIENhbXBvcyBwYXJhIGEgb3JkZW5hw6fDo28gYW8gYWJyaXIgYSBtb2RhbCBkZSBsaXN0YWdlbSAqL1xuICAgIHNlYXJjaFNvcnQ/OiBTb3J0T3B0aW9uc1tdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG7igItcbi8qKlxuICogRXJwIExvb2t1cHNcbiAqIEBjbGFzcyBFcnBMb29rdXBzXG4qL1xuZXhwb3J0IGNsYXNzIEVycExvb2t1cHMge1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgLyoqXG4gICAgICogQ3JpYcOnw6NvIGRlIHVtIGxvb2t1cC5cbiAgICAgKiBAcGFyYW0gZW50aXR5IE5vbWUgZGEgZW50aWRhZGUuXG4gICAgICogQHBhcmFtIGxvb2t1cEZpZWxkcyBDYW1wb3MgZXhpYmlkb3Mgbm8gYXV0b2NvbXBsZXRlLlxuICAgICAqIEBwYXJhbSBzZWFyY2hGaWVsZHMgQ2FtcG9zIGV4aWJpZG9zIG5vIGZpbHRybyBkZW50cm8gZGEgbW9kYWwuXG4gICAgICogQHBhcmFtIHNlYXJjaEdyaWRGaWVsZHMgQ2FtcG9zIGV4aWJpZG9zIG5hIHRhYmVsYSBkZW50cm8gZGEgbW9kYWwuXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGxvb2t1cFNlcnZpY2U6IEVycExvb2t1cHNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZW50aXR5OiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBsb29rdXBGaWVsZHM6IEZvcm1GaWVsZFtdLFxuICAgICAgICBwdWJsaWMgc2VhcmNoRmllbGRzOiBGb3JtRmllbGRbXSxcbiAgICAgICAgcHVibGljIHNlYXJjaEdyaWRGaWVsZHM6IEZvcm1GaWVsZFtdLFxuICAgICAgICBwcm90ZWN0ZWQgZG9tYWluOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgICB0aGlzLmRvbWFpbiA9IGRvbWFpbjtcbiAgICAgICAgdGhpcy5zZXJ2aWNlID0gc2VydmljZTtcbiAgICAgICAgdGhpcy5sb29rdXBGaWVsZHMgPSBsb29rdXBGaWVsZHMgfHwgW107XG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGRzID0gc2VhcmNoRmllbGRzIHx8IFtdO1xuICAgICAgICB0aGlzLnNlYXJjaEdyaWRGaWVsZHMgPSBzZWFyY2hHcmlkRmllbGRzIHx8IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb29rdXBTdWdnZXN0aW9uc09ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHB1YmxpYyBsb29rdXBTZWFyY2hPYnNlcnZhYmxlID0gbmV3IFN1YmplY3QoKTtcbuKAi1xuICAgIHB1YmxpYyB0b1NuYWtlQ2FzZSh2YWx1ZTogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oPzpefFxcLj8pKFtBLVpdKS9nLCBmdW5jdGlvbiAoeCwgeSkge3JldHVybiBcIl9cIiArIHkudG9Mb3dlckNhc2UoKTsgfSkucmVwbGFjZSgvXl8vLCBcIlwiKTtcbiAgICB9XG7igItcbiAgICBwdWJsaWMgbW91bnRGb3JtRmllbGQoZmllbGRzOiBhbnksIHByZWZpeDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBmaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0ubG9va3VwXyR7dGhpcy50b1NuYWtlQ2FzZSh0aGlzLmVudGl0eSl9XyR7dGhpcy50b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG7igItcbiAgICBwdWJsaWMgbW91bnREZWZhdWx0RmlsdGVyKGRlZmF1bHRGaWx0ZXI6IERlZmF1bHRGaWx0ZXJbXSA9IFt7ZmllbGQ6IFwiZXhjbHVpZG9cIiwgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsIHZhbHVlczogW1wiZmFsc2VcIl19XSkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZpbHRlci5tYXAoZmlsdGVyID0+IHtcbiAgICAgICAgICAgIHJldHVybiBcIihcIiArIGZpbHRlci52YWx1ZXMubWFwKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm9wZXJhdG9yID09IEVudW1Mb2dpY2FsT3BlcmF0b3IuQ29udGFpbnMpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgY29udGFpbmluZyhsb3dlcigke2ZpbHRlci5maWVsZH0pLCBsb3dlcignJHt2YWx1ZX0nKSlgO1xuXG4gICAgICAgICAgICAgICAgaWYgKChmaWx0ZXIub3BlcmF0b3IgPT0gRW51bUxvZ2ljYWxPcGVyYXRvci5Jc05vdCB8fCBmaWx0ZXIub3BlcmF0b3IgPT0gRW51bUxvZ2ljYWxPcGVyYXRvci5JcykgJiYgIXZhbHVlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZmlsdGVyLmZpZWxkfSAke2ZpbHRlci5vcGVyYXRvcn0gbnVsbGA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2ZpbHRlci5maWVsZH0gJHtmaWx0ZXIub3BlcmF0b3J9ICcke3ZhbHVlfSdgO1xuICAgICAgICAgICAgfSkuam9pbihcIiBvciBcIikgKyBcIilcIjtcbiAgICAgICAgfSkuam9pbihcIiBhbmQgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtb3VudER5bmFtaWNGaWx0ZXIoZHluYW1pY0ZpbHRlcjogRHluYW1pY0ZpbHRlcltdKSB7XG4gICAgICAgIGlmIChkeW5hbWljRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZHluYW1pY0ZpbHRlci5tYXAoZmlsdGVyID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVzID0gZmlsdGVyLnZhbHVlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIuZmllbGQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlci5vcGVyYXRvcjtcblxuICAgICAgICAgICAgICAgIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbdmFsdWVzXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gXCIoXCIgKyB2YWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PSBFbnVtTG9naWNhbE9wZXJhdG9yLkNvbnRhaW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBjb250YWluaW5nKGxvd2VyKCR7ZmllbGR9KSwgbG93ZXIoJyR7dmFsdWV9JykpYDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKG9wZXJhdG9yID09IEVudW1Mb2dpY2FsT3BlcmF0b3IuSXNOb3QgfHwgb3BlcmF0b3IgPT0gRW51bUxvZ2ljYWxPcGVyYXRvci5JcykgJiYgIXZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2ZpZWxkfSAke29wZXJhdG9yfSBudWxsYDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZmllbGR9ICR7b3BlcmF0b3J9ICcke3ZhbHVlfSdgO1xuICAgICAgICAgICAgICAgIH0pLmpvaW4oXCIgb3IgXCIpICsgXCIpXCI7XG4gICAgICAgICAgICB9KS5qb2luKFwiIGFuZCBcIik7XG4gICAgICAgIH1cbiAgICB9XG7igItcbiAgICBwdWJsaWMgbW91bnRGaWx0ZXJRdWVyeSh2YWx1ZTogc3RyaW5nLCBsb29rdXBGaWVsZHM6IEZvcm1GaWVsZFtdLCBkZWZhdWx0RmlsdGVyPzogRGVmYXVsdEZpbHRlcltdLCBkeW5hbWljRmlsdGVyPzogRHluYW1pY0ZpbHRlcltdKSB7XG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeTogc3RyaW5nO1xuICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKSkge1xuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBsb29rdXBGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5TdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoY29udGFpbmluZyhsb3dlcigke2ZpZWxkLm5hbWV9KSwgbG93ZXIoJyR7dmFsdWV9JykpKWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuSW50ZWdlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxEL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNhbml0aXplZFZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHtmaWVsZC5uYW1lfSBlcSAnJHtzYW5pdGl6ZWRWYWx1ZX0nKWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHtmaWVsZC5uYW1lfSBlcSAnJHt2YWx1ZX0nKWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZmlsdGVyID0+ICEhZmlsdGVyKVxuICAgICAgICAgICAgLmpvaW4oXCIgb3IgXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBsb29rdXBGaWVsZHNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChmaWVsZDogYW55KSA9PiBmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuU3RyaW5nKVxuICAgICAgICAgICAgICAgIC5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoY29udGFpbmluZyhsb3dlcigke2ZpZWxkLm5hbWV9KSwgbG93ZXIoJyR7dmFsdWUucmVwbGFjZSgvXFxcXC9nLCBcIlwiKS5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIil9JykpKWA7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbihcIiBvciBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWZhdWx0RmlsdGVyUXVlcnkgPSB0aGlzLm1vdW50RGVmYXVsdEZpbHRlcihkZWZhdWx0RmlsdGVyKTtcbiAgICAgICAgaWYgKGRlZmF1bHRGaWx0ZXJRdWVyeSlcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gYCgoJHtkZWZhdWx0RmlsdGVyUXVlcnl9KSBhbmQgKCR7ZmlsdGVyUXVlcnl9KSlgO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IFwiKFwiICsgZmlsdGVyUXVlcnkgKyBcIilcIjtcbuKAi1xuICAgICAgICBjb25zdCBkeW5hbWljRmlsdGVyUXVlcnkgPSB0aGlzLm1vdW50RHluYW1pY0ZpbHRlcihkeW5hbWljRmlsdGVyKTtcbiAgICAgICAgaWYgKGR5bmFtaWNGaWx0ZXJRdWVyeSlcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gYCgoJHtkeW5hbWljRmlsdGVyUXVlcnl9KSBhbmQgKCR7ZmlsdGVyUXVlcnl9KSlgO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IFwiKFwiICsgZmlsdGVyUXVlcnkgKyBcIilcIjtcblxuICAgICAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gICAgfVxu4oCLXG4gICAgcHVibGljIG1vdW50RW51bUZpbHRlcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlOiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiBtdWx0aXBsZSA/IGAoJHt2YWx1ZS5tYXAoKHNlbGVjdGVkOiBhbnkpID0+IGAke25hbWV9IGVxICcke3NlbGVjdGVkfSdgKS5qb2luKFwiIG9yIFwiKX0pYCA6IGAoJHtuYW1lfSBlcSAnJHt2YWx1ZX0nKWA7XG4gICAgfVxu4oCLXG4gICAgLyoqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBtb250YXIgYXMgb3DDp8O1ZXMgcGFkcsO1ZXMgcGFyYSBvIGxvb2t1cCBkbyBEeW5hbWljIEZvcm0gKi9cbiAgICBwdWJsaWMgbW91bnRPcHRpb25zKG9wdGlvbnM6IExvb2t1cE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBvcHRpb25zLnByZWZpeFxuICAgICAgICAgICAgPyBvcHRpb25zLnByZWZpeFxuICAgICAgICAgICAgOiAob3B0aW9ucy5kb21haW4gJiYgb3B0aW9ucy5zZXJ2aWNlKVxuICAgICAgICAgICAgICAgID8gYCR7b3B0aW9ucy5kb21haW59LiR7b3B0aW9ucy5zZXJ2aWNlfWBcbiAgICAgICAgICAgICAgICA6IGAke3RoaXMuZG9tYWlufS4ke3RoaXMuc2VydmljZX1gO1xuXG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IG9wdGlvbnMuc3VmZml4ID8gYF8ke29wdGlvbnMuc3VmZml4fWAgOiBcIlwiO1xuXG5cbiAgICAgICAgb3B0aW9ucy5sb29rdXBGaWVsZHMgPSBvcHRpb25zLmxvb2t1cEZpZWxkcyAmJiBvcHRpb25zLmxvb2t1cEZpZWxkcy5sZW5ndGhcbiAgICAgICAgICAgID8gb3B0aW9ucy5sb29rdXBGaWVsZHNcbiAgICAgICAgICAgIDogdGhpcy5sb29rdXBGaWVsZHM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMuZm9ybUdyb3VwIHx8IHRoaXMuZW50aXR5LFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7cHJlZml4fS5sb29rdXBfJHt0aGlzLnRvU25ha2VDYXNlKG9wdGlvbnMuZW50aXR5KSB8fCB0aGlzLnRvU25ha2VDYXNlKHRoaXMuZW50aXR5KX0ke3N1ZmZpeH1gKSxcbiAgICAgICAgICAgIHNlYXJjaFRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0ubG9va3VwXyR7dGhpcy50b1NuYWtlQ2FzZShvcHRpb25zLmVudGl0eSkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLnRvU25ha2VDYXNlKHRoaXMuZW50aXR5KX1fc2VhcmNoX3RpdGxlYCksXG4gICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTG9va3VwLFxuICAgICAgICAgICAgbXVsdGlwbGU6IG9wdGlvbnMubXVsdGlwbGUgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICAgICAgZGF0YUtleTogb3B0aW9ucy5kYXRhS2V5IHx8IFwiaWRcIixcbiAgICAgICAgICAgIGxvb2t1cERpc3BsYXlGaWVsZDogXCJsYWJlbFwiLFxuICAgICAgICAgICAgc2VhcmNoRW1wdHlUaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtwcmVmaXh9Lm5vdGhpbmdfZm91bmRgKSxcbiAgICAgICAgICAgIGZpbHRlckxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0uZmlsdGVyYCksXG4gICAgICAgICAgICBjbGVhckxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0uY2xlYXJgKSxcbiAgICAgICAgICAgIGNhbmNlbExhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0uY2FuY2VsYCksXG4gICAgICAgICAgICBzZWxlY3RMYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtwcmVmaXh9LnNlbGVjdGApLFxuICAgICAgICAgICAgc2VhcmNoRmllbGRzOiBvcHRpb25zLnNlYXJjaEZpZWxkcyA/IHRoaXMubW91bnRGb3JtRmllbGQob3B0aW9ucy5zZWFyY2hGaWVsZHMsIHByZWZpeCkgOlxuICAgICAgICAgICAgICAgIHRoaXMubW91bnRGb3JtRmllbGQodGhpcy5zZWFyY2hGaWVsZHMsIHByZWZpeCksXG4gICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzOiBvcHRpb25zLnNlYXJjaEdyaWRGaWVsZHMgPyB0aGlzLm1vdW50Rm9ybUZpZWxkKG9wdGlvbnMuc2VhcmNoR3JpZEZpZWxkcywgcHJlZml4KSA6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VudEZvcm1GaWVsZCh0aGlzLnNlYXJjaEdyaWRGaWVsZHMsIHByZWZpeCksXG4gICAgICAgICAgICBzdWdnZXN0aW9uc09ic2VydmFibGU6IHRoaXMubG9va3VwU3VnZ2VzdGlvbnNPYnNlcnZhYmxlLFxuICAgICAgICAgICAgc2VhcmNoT2JzZXJ2YWJsZTogdGhpcy5sb29rdXBTZWFyY2hPYnNlcnZhYmxlLFxuICAgICAgICAgICAgb25Mb29rdXBSZXF1ZXN0OiAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5vbkxvb2t1cFJlcXVlc3QodmFsdWUsIHByZWZpeCwgb3B0aW9ucyksXG4gICAgICAgICAgICBvblNlYXJjaFJlcXVlc3Q6IChldmVudDogYW55KSA9PiB0aGlzLm9uU2VhcmNoUmVxdWVzdChldmVudCwgcHJlZml4LCBvcHRpb25zKVxuICAgICAgICB9O1xuICAgIH1cbuKAi1xuICAgIHB1YmxpYyBnZXRQcm9wKG9iajogYW55LCBwYXRoOiBhbnksIHByZWZpeDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCB8fCByZXN1bHRbcHJvcF0gPT09IG51bGxcbiAgICAgICAgICAgID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtwcmVmaXh9LmVtcHR5X2xhYmVsYClcbiAgICAgICAgICAgIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuICEhdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG1vdW50RW50aXR5RmlsdGVyKGVudGl0eTogRW50aXR5RGVwZW5kZW5jeSwgdmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBlbnRpdHkuZmllbGRcbiAgICAgICAgICAgID8gYCgke2VudGl0eS5uYW1lfS4ke2VudGl0eS5maWVsZH0gZXEgJyR7dmFsdWVbZW50aXR5LmZpZWxkXX0nKWBcbiAgICAgICAgICAgIDogYCgke2VudGl0eS5uYW1lfSBlcSAnJHt2YWx1ZVtlbnRpdHkubmFtZV19JylgO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkxvb2t1cFJlcXVlc3QodmFsdWU6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBMb29rdXBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLmxvb2t1cFNvcnQ7XG4gICAgICAgIGNvbnN0IGxvb2t1cERpc3BsYXlGaWVsZHMgPSBvcHRpb25zLmxvb2t1cEZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSk7XG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IHRoaXMubW91bnRGaWx0ZXJRdWVyeSh2YWx1ZSwgb3B0aW9ucy5sb29rdXBGaWVsZHMsIG9wdGlvbnMuZGVmYXVsdEZpbHRlciwgb3B0aW9ucy5keW5hbWljRmlsdGVyKTtcblxuICAgICAgICBsZXQgZGlzcGxheUZpZWxkcyA9IGxvb2t1cERpc3BsYXlGaWVsZHMuY29uY2F0KCAob3B0aW9ucy5zZWFyY2hHcmlkRmllbGRzIHx8IHRoaXMuc2VhcmNoR3JpZEZpZWxkcylcbiAgICAgICAgICAgIC5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSB8fCBbXSk7XG4gICAgICAgIGlmIChvcHRpb25zLnF1ZXJ5RmllbGRzKVxuICAgICAgICAgICAgZGlzcGxheUZpZWxkcyA9IGRpc3BsYXlGaWVsZHMuY29uY2F0KG9wdGlvbnMucXVlcnlGaWVsZHMpO1xuICAgICAgICBkaXNwbGF5RmllbGRzID0gZGlzcGxheUZpZWxkcy5maWx0ZXIoKHYsIGkpID0+IGRpc3BsYXlGaWVsZHMuaW5kZXhPZih2KSA9PT0gaSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZW50aXR5RGVwZW5kZW5jeSkge1xuICAgICAgICAgICAgY29uc3QgZW50aXR5RmlsdGVyID0gb3B0aW9ucy5lbnRpdHlEZXBlbmRlbmN5Lm1hcCgoZW50aXR5OiBFbnRpdHlEZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBlbnRpdHkudmFsdWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzVmFsdWUobmV3VmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHtuZXdWYWx1ZS5tYXAoKHZhbDogYW55KSA9PiB0aGlzLm1vdW50RW50aXR5RmlsdGVyKGVudGl0eSwgdmFsKSkuam9pbihcIiBvciBcIil9KWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt0aGlzLm1vdW50RW50aXR5RmlsdGVyKGVudGl0eSwgbmV3VmFsdWUpfSlgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmZpbHRlcihmaWx0ZXIgPT4gISFmaWx0ZXIpLmpvaW4gKFwiIGFuZCBcIik7XG4gICAgICAgICAgICBpZiAoZW50aXR5RmlsdGVyKVxuICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID8gZmlsdGVyUXVlcnkgKz0gYCBhbmQgKCR7ZW50aXR5RmlsdGVyfSlgIDogZmlsdGVyUXVlcnkgPSBlbnRpdHlGaWx0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb29rdXBTZXJ2aWNlXG4gICAgICAgICAgICAubGlzdCh7XG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGRzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5lbnRpdHksXG4gICAgICAgICAgICBvcHRpb25zLmRvbWFpbiB8fCB0aGlzLmRvbWFpbixcbiAgICAgICAgICAgIG9wdGlvbnMuc2VydmljZSB8fCB0aGlzLnNlcnZpY2UpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgobGlzdDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsaXN0LmNvbnRlbnRzLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldEl0ZW1MYWJlbChpdGVtLCBwcmVmaXgsIGxvb2t1cERpc3BsYXlGaWVsZHMpXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9va3VwU3VnZ2VzdGlvbnNPYnNlcnZhYmxlLm5leHQoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG7igItcbiAgICBwdWJsaWMgb25TZWFyY2hSZXF1ZXN0KGV2ZW50OiBhbnksIHByZWZpeDogc3RyaW5nLCBvcHRpb25zPzogTG9va3VwT3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IGZpcnN0LCByb3dzLCBtdWx0aVNvcnRNZXRhLCBmaWx0ZXJEYXRhIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgcGFnZSA9IGZpcnN0IC8gcm93cztcbiAgICAgICAgY29uc3Qgc29ydCA9IG11bHRpU29ydE1ldGEgPyBtdWx0aVNvcnRNZXRhIDogb3B0aW9ucy5zZWFyY2hTb3J0O1xuICAgICAgICBjb25zdCBsb29rdXBEaXNwbGF5RmllbGRzID0gb3B0aW9ucy5sb29rdXBGaWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLm5hbWUpO1xuXG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IChvcHRpb25zLnNlYXJjaEZpZWxkcyB8fCB0aGlzLnNlYXJjaEZpZWxkcylcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJEYXRhW25hbWVdICE9IFwiXCIpXG4gICAgICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlckRhdGFbbmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRmllbGRUeXBlLkRhdGUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIil9J2A7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBGaWVsZFR5cGUuVGltZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBGaWVsZFR5cGUuRGF0ZVRpbWUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRmllbGRUeXBlLkVudW0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1vdW50RW51bUZpbHRlcihuYW1lLCB2YWx1ZSwgbXVsdGlwbGUpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRmllbGRUeXBlLlN0cmluZylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoY29udGFpbmluZyhsb3dlcigke25hbWV9KSwgbG93ZXIoJyR7dmFsdWV9JykpKWA7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCIgYW5kIFwiKTtcbuKAi1xuICAgICAgICBpZiAob3B0aW9ucy5lbnRpdHlEZXBlbmRlbmN5KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlGaWx0ZXIgPSBvcHRpb25zLmVudGl0eURlcGVuZGVuY3kubWFwKChlbnRpdHk6IEVudGl0eURlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVudGl0eS52YWx1ZSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt2YWx1ZS5tYXAoKHZhbDogYW55KSA9PiB0aGlzLm1vdW50RW50aXR5RmlsdGVyKGVudGl0eSwgdmFsKSkuam9pbihcIiBvciBcIil9KWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt0aGlzLm1vdW50RW50aXR5RmlsdGVyKGVudGl0eSwgdmFsdWUpfSlgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmZpbHRlcihmaWx0ZXIgPT4gISFmaWx0ZXIpLmpvaW4gKFwiIGFuZCBcIik7XG4gICAgICAgICAgICBpZiAoZW50aXR5RmlsdGVyKVxuICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID8gZmlsdGVyUXVlcnkgKz0gYCBhbmQgKCR7ZW50aXR5RmlsdGVyfSlgIDogZmlsdGVyUXVlcnkgPSBlbnRpdHlGaWx0ZXI7XG4gICAgICAgIH1cbuKAi1xuICAgICAgICBjb25zdCBkZWZhdWx0RmlsdGVyUXVlcnkgPSB0aGlzLm1vdW50RGVmYXVsdEZpbHRlcihvcHRpb25zLmRlZmF1bHRGaWx0ZXIpO1xuICAgICAgICBpZiAoZGVmYXVsdEZpbHRlclF1ZXJ5KVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPyBmaWx0ZXJRdWVyeSArPSBgIGFuZCAoJHtkZWZhdWx0RmlsdGVyUXVlcnl9KWAgOiBmaWx0ZXJRdWVyeSA9IGAoJHtkZWZhdWx0RmlsdGVyUXVlcnl9KWA7XG5cbiAgICAgICAgY29uc3QgZHluYW1pY0ZpbHRlclF1ZXJ5ID0gdGhpcy5tb3VudER5bmFtaWNGaWx0ZXIob3B0aW9ucy5keW5hbWljRmlsdGVyKTtcbiAgICAgICAgaWYgKGR5bmFtaWNGaWx0ZXJRdWVyeSlcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID8gZmlsdGVyUXVlcnkgKz0gYCBhbmQgKCR7ZHluYW1pY0ZpbHRlclF1ZXJ5fSlgIDogZmlsdGVyUXVlcnkgPSBgKCR7ZHluYW1pY0ZpbHRlclF1ZXJ5fSlgO1xuXG4gICAgICAgIGxldCBkaXNwbGF5RmllbGRzID0gbG9va3VwRGlzcGxheUZpZWxkcy5jb25jYXQoIChvcHRpb25zLnNlYXJjaEdyaWRGaWVsZHMgfHwgdGhpcy5zZWFyY2hHcmlkRmllbGRzKVxuICAgICAgICAgICAgLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpIHx8IFtdKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucXVlcnlGaWVsZHMpXG4gICAgICAgICAgICBkaXNwbGF5RmllbGRzID0gZGlzcGxheUZpZWxkcy5jb25jYXQob3B0aW9ucy5xdWVyeUZpZWxkcyk7XG4gICAgICAgIGRpc3BsYXlGaWVsZHMgPSBkaXNwbGF5RmllbGRzLmZpbHRlcigodiwgaSkgPT4gZGlzcGxheUZpZWxkcy5pbmRleE9mKHYpID09PSBpKTtcblxuICAgICAgICB0aGlzLmxvb2t1cFNlcnZpY2VcbiAgICAgICAgICAgIC5saXN0KHsgcGFnZSwgc29ydCwgZmlsdGVyUXVlcnksIGRpc3BsYXlGaWVsZHMgfSwgdGhpcy5lbnRpdHksIG9wdGlvbnMuZG9tYWluIHx8IHRoaXMuZG9tYWluLCBvcHRpb25zLnNlcnZpY2UgfHwgdGhpcy5zZXJ2aWNlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGxpc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZERhdGE6IGxpc3QuY29udGVudHMubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0SXRlbUxhYmVsKGl0ZW0sIHByZWZpeCwgbG9va3VwRGlzcGxheUZpZWxkcylcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbFJlY29yZHM6IGxpc3QudG90YWxFbGVtZW50c1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29rdXBTZWFyY2hPYnNlcnZhYmxlLm5leHQoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtTGFiZWwoaXRlbTogYW55LCBwcmVmaXg6IHN0cmluZywgbG9va3VwRGlzcGxheUZpZWxkczogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cERpc3BsYXlGaWVsZHNcbiAgICAgICAgICAgIC5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQuaW5kZXhPZihcIi5cIikgPiAwKSByZXR1cm4gdGhpcy5nZXRQcm9wKGl0ZW0sIGZpZWxkLCBwcmVmaXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW2ZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bZmllbGRdICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbVtmaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3ByZWZpeH0uZW1wdHlfbGFiZWxgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbihcIiAtIFwiKTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export * from "./nps.service";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL25wcy5zZXJ2aWNlXCI7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL25wcy5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm90b2NvbHMvaW5kZXhcIjtcbiJdfQ==
@@ -1,28 +1,31 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { Injectable } from "@angular/core";
3
- import * as Cookie from "js-cookie";
3
+ import { user } from "@seniorsistemas/senior-platform-data";
4
4
  import * as i0 from "@angular/core";
5
+ // https://widget.tracksale.co/
5
6
  let NpsService = class NpsService {
6
- constructor() { }
7
- get cookieInformation() {
8
- return JSON.parse(Cookie.get(`com.senior.pau.userdata`) || "{}");
7
+ getUserInformation() {
8
+ return __awaiter(this, void 0, void 0, function* () {
9
+ return yield user.getToken();
10
+ });
9
11
  }
10
12
  /**
11
13
  * Executa o serviço de NPS utilizando os dados do usuário atual, no caso sobreescrevendos os campos name, email, identification,
12
14
  * tags.tenant e tags.email fornecidos no request original. Esses serão sobreescritos com os valores retornados pelo cookie
13
- * com.senior.pau.userdata. *
15
+ * com.senior.pau.userdata.
16
+ *
14
17
  * @param tracksaleRequest request que será enviado ao serviço de nps
15
18
  */
16
19
  currentUserInitNPS(tracksaleRequest) {
17
20
  return __awaiter(this, void 0, void 0, function* () {
18
- const { tenantName, email, fullname, id } = this.cookieInformation;
21
+ const { tenantName, email, fullName } = yield this.getUserInformation();
19
22
  const copyTracksaleRequest = Object.assign({}, tracksaleRequest);
20
23
  copyTracksaleRequest.tags =
21
24
  (tracksaleRequest.tags && Object.assign({}, tracksaleRequest.tags)) ||
22
25
  {};
23
- copyTracksaleRequest.name = fullname;
26
+ copyTracksaleRequest.name = fullName;
24
27
  copyTracksaleRequest.email = email;
25
- copyTracksaleRequest.identification = id;
28
+ copyTracksaleRequest.identification = email;
26
29
  copyTracksaleRequest.tags.tenant = tenantName;
27
30
  copyTracksaleRequest.tags.email = email;
28
31
  this.initNPS(copyTracksaleRequest);
@@ -67,4 +70,4 @@ NpsService = __decorate([
67
70
  })
68
71
  ], NpsService);
69
72
  export { NpsService };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9ucHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLFdBQVcsQ0FBQzs7QUE0QnBDLElBQWEsVUFBVSxHQUF2QixNQUFhLFVBQVU7SUFDbkIsZ0JBQWdCLENBQUM7SUFFakIsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDVSxrQkFBa0IsQ0FDM0IsZ0JBQWtDOztZQUVsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBRW5FLE1BQU0sb0JBQW9CLHFCQUFRLGdCQUFnQixDQUFFLENBQUM7WUFDckQsb0JBQW9CLENBQUMsSUFBSTtnQkFDckIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLHNCQUNmLGdCQUFnQixDQUFDLElBQUksQ0FDM0IsQ0FBQztvQkFDRixFQUFFLENBQUM7WUFFUCxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1lBQ3JDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkMsb0JBQW9CLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztZQUM5QyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUV4QyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxnQkFBa0M7UUFDN0MsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsb0RBQW9ELENBQUM7UUFDbkUsT0FBTyxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUNqQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNyQixhQUFhO1FBQ2IsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEdBQUc7WUFDMUMsSUFDSSxJQUFJLENBQUMsVUFBVTtnQkFDZixJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVU7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUM5QjtnQkFDRSxPQUFPO2FBQ1Y7WUFDRCxJQUFJO2dCQUNBLGFBQWE7Z0JBQ2IsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNuQixDQUFDLENBQUM7UUFDRixhQUFhLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNKLENBQUE7O0FBbEVZLFVBQVU7SUFIdEIsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLFVBQVUsQ0FrRXRCO1NBbEVZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCAqIGFzIENvb2tpZSBmcm9tIFwianMtY29va2llXCI7XG5cbi8vIGh0dHBzOi8vd2lkZ2V0LnRyYWNrc2FsZS5jby9cbmV4cG9ydCBkZWZhdWx0IGludGVyZmFjZSBUcmFja3NhbGVSZXF1ZXN0IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBjYW1wYWlnbjogc3RyaW5nO1xuICAgIHRhZ3M/OiBhbnk7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBpZGVudGlmaWNhdGlvbj86IHN0cmluZztcbiAgICBzYWx1dGU/OiBzdHJpbmc7XG4gICAgdGhhbmtzPzogc3RyaW5nO1xuICAgIHJlcXVpcmVfY29tbWVudD86IGJvb2xlYW47XG4gICAgYXBwZW5kVG8/OiBzdHJpbmc7XG4gICAgb25PcGVuPzogRnVuY3Rpb247XG4gICAgb25DbG9zZT86IEZ1bmN0aW9uO1xuICAgIG9uQW5zd2VyPzogRnVuY3Rpb247XG4gICAgb25VcGRhdGVJbmZvPzogRnVuY3Rpb247XG4gICAgb25XYXJuaW5nPzogRnVuY3Rpb247XG4gICAgb25FcnJvcj86IEZ1bmN0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBUZW5hbnRGdWxsRFRPIHtcbiAgICBjbGllbnRDb2RlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgTnBzU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIGdldCBjb29raWVJbmZvcm1hdGlvbigpOiBJVG9rZW5TZW5pb3JYIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoQ29va2llLmdldChgY29tLnNlbmlvci5wYXUudXNlcmRhdGFgKSB8fCBcInt9XCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGEgbyBzZXJ2acOnbyBkZSBOUFMgdXRpbGl6YW5kbyBvcyBkYWRvcyBkbyB1c3XDoXJpbyBhdHVhbCwgbm8gY2FzbyBzb2JyZWVzY3JldmVuZG9zIG9zIGNhbXBvcyBuYW1lLCBlbWFpbCwgaWRlbnRpZmljYXRpb24sXG4gICAgICogdGFncy50ZW5hbnQgZSB0YWdzLmVtYWlsIGZvcm5lY2lkb3Mgbm8gcmVxdWVzdCBvcmlnaW5hbC4gRXNzZXMgc2Vyw6NvIHNvYnJlZXNjcml0b3MgY29tIG9zIHZhbG9yZXMgcmV0b3JuYWRvcyBwZWxvIGNvb2tpZVxuICAgICAqIGNvbS5zZW5pb3IucGF1LnVzZXJkYXRhLiAgICAgKlxuICAgICAqIEBwYXJhbSB0cmFja3NhbGVSZXF1ZXN0IHJlcXVlc3QgcXVlIHNlcsOhIGVudmlhZG8gYW8gc2VydmnDp28gZGUgbnBzXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGN1cnJlbnRVc2VySW5pdE5QUyhcbiAgICAgICAgdHJhY2tzYWxlUmVxdWVzdDogVHJhY2tzYWxlUmVxdWVzdFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHRlbmFudE5hbWUsIGVtYWlsLCBmdWxsbmFtZSwgaWQgfSA9IHRoaXMuY29va2llSW5mb3JtYXRpb247XG5cbiAgICAgICAgY29uc3QgY29weVRyYWNrc2FsZVJlcXVlc3QgPSB7IC4uLnRyYWNrc2FsZVJlcXVlc3QgfTtcbiAgICAgICAgY29weVRyYWNrc2FsZVJlcXVlc3QudGFncyA9XG4gICAgICAgICAgICAodHJhY2tzYWxlUmVxdWVzdC50YWdzICYmIHtcbiAgICAgICAgICAgICAgICAuLi50cmFja3NhbGVSZXF1ZXN0LnRhZ3MsXG4gICAgICAgICAgICB9KSB8fFxuICAgICAgICAgICAge307XG5cbiAgICAgICAgY29weVRyYWNrc2FsZVJlcXVlc3QubmFtZSA9IGZ1bGxuYW1lO1xuICAgICAgICBjb3B5VHJhY2tzYWxlUmVxdWVzdC5lbWFpbCA9IGVtYWlsO1xuICAgICAgICBjb3B5VHJhY2tzYWxlUmVxdWVzdC5pZGVudGlmaWNhdGlvbiA9IGlkO1xuICAgICAgICBjb3B5VHJhY2tzYWxlUmVxdWVzdC50YWdzLnRlbmFudCA9IHRlbmFudE5hbWU7XG4gICAgICAgIGNvcHlUcmFja3NhbGVSZXF1ZXN0LnRhZ3MuZW1haWwgPSBlbWFpbDtcblxuICAgICAgICB0aGlzLmluaXROUFMoY29weVRyYWNrc2FsZVJlcXVlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGEgbyBzZXJ2acOnbyBkZSBOUFMgdXRpbGl6YW5kbyBvcyBkYWRvcyBmb3JuZWNpZG9zIG5vIHRyYWNrc2FsZVJlcXVlc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0cmFja3NhbGVSZXF1ZXN0IHJlcXVlc3QgcXVlIHNlcsOhIGVudmlhZG8gYW8gc2VydmnDp28gZGUgbnBzXG4gICAgICovXG4gICAgcHVibGljIGluaXROUFModHJhY2tzYWxlUmVxdWVzdDogVHJhY2tzYWxlUmVxdWVzdCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07XG4gICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRyYWNrc2FsZS1qc1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICBlbGVtZW50LmlkID0gXCJ0cmFja3NhbGUtanNcIjtcbiAgICAgICAgZWxlbWVudC5zcmMgPSBcImh0dHBzOi8vY2RuLnRyYWNrc2FsZS5jby90cmFja3NhbGUtanMvdHJhY2tzYWxlLmpzXCI7XG4gICAgICAgIGVsZW1lbnQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGVsZW1lbnQub25sb2FkID0gZWxlbWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeVN0YXRlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeVN0YXRlICE9PSBcImNvbXBsZXRlXCIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWR5U3RhdGUgIT09IFwibG9hZGVkXCJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrU2FsZSA9IG5ldyBUcmFja3NhbGUoKTtcbiAgICAgICAgICAgICAgICB0cmFja1NhbGUuaW5pdCh0cmFja3NhbGVSZXF1ZXN0KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICB9O1xuICAgICAgICBzY3JpcHRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHNjcmlwdEVsZW1lbnQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG9rZW5TZW5pb3JYIHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZnVsbG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIGxvY2FsZTogc3RyaW5nO1xuICAgIHN1YmplY3Q6IHN0cmluZztcbiAgICB0ZW5hbnRMb2NhbGU6IHN0cmluZztcbiAgICB0ZW5hbnROYW1lOiBzdHJpbmc7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbn1cbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9ucHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRzVELCtCQUErQjtBQUkvQixJQUFhLFVBQVUsR0FBdkIsTUFBYSxVQUFVO0lBQ2Isa0JBQWtCOztZQUNwQixPQUFPLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUVEOzs7Ozs7T0FNRztJQUNVLGtCQUFrQixDQUMzQixnQkFBa0M7O1lBRWxDLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFeEUsTUFBTSxvQkFBb0IscUJBQVEsZ0JBQWdCLENBQUUsQ0FBQztZQUNyRCxvQkFBb0IsQ0FBQyxJQUFJO2dCQUNyQixDQUFDLGdCQUFnQixDQUFDLElBQUksc0JBQ2YsZ0JBQWdCLENBQUMsSUFBSSxDQUMzQixDQUFDO29CQUNGLEVBQUUsQ0FBQztZQUVQLG9CQUFvQixDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7WUFDckMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQyxvQkFBb0IsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1lBQzlDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBRXhDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN2QyxDQUFDO0tBQUE7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLGdCQUFrQztRQUM3QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3pDLE9BQU87U0FDVjtRQUNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLEVBQUUsR0FBRyxjQUFjLENBQUM7UUFDNUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxvREFBb0QsQ0FBQztRQUNuRSxPQUFPLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGFBQWE7UUFDYixPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRztZQUMxQyxJQUNJLElBQUksQ0FBQyxVQUFVO2dCQUNmLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVTtnQkFDOUIsSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQzlCO2dCQUNFLE9BQU87YUFDVjtZQUNELElBQUk7Z0JBQ0EsYUFBYTtnQkFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDcEM7WUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ25CLENBQUMsQ0FBQztRQUNGLGFBQWEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0osQ0FBQTs7QUFqRVksVUFBVTtJQUh0QixVQUFVLENBQUM7UUFDUixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0dBQ1csVUFBVSxDQWlFdEI7U0FqRVksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdXNlciB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvc2VuaW9yLXBsYXRmb3JtLWRhdGFcIjtcbmltcG9ydCB7IElUb2tlblNlbmlvclgsIFRyYWNrc2FsZVJlcXVlc3QgfSBmcm9tIFwiLi9wcm90b2NvbHNcIjtcblxuLy8gaHR0cHM6Ly93aWRnZXQudHJhY2tzYWxlLmNvL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBOcHNTZXJ2aWNlIHtcbiAgICBhc3luYyBnZXRVc2VySW5mb3JtYXRpb24oKTogUHJvbWlzZTxJVG9rZW5TZW5pb3JYPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB1c2VyLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0YSBvIHNlcnZpw6dvIGRlIE5QUyB1dGlsaXphbmRvIG9zIGRhZG9zIGRvIHVzdcOhcmlvIGF0dWFsLCBubyBjYXNvIHNvYnJlZXNjcmV2ZW5kb3Mgb3MgY2FtcG9zIG5hbWUsIGVtYWlsLCBpZGVudGlmaWNhdGlvbixcbiAgICAgKiB0YWdzLnRlbmFudCBlIHRhZ3MuZW1haWwgZm9ybmVjaWRvcyBubyByZXF1ZXN0IG9yaWdpbmFsLiBFc3NlcyBzZXLDo28gc29icmVlc2NyaXRvcyBjb20gb3MgdmFsb3JlcyByZXRvcm5hZG9zIHBlbG8gY29va2llXG4gICAgICogY29tLnNlbmlvci5wYXUudXNlcmRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHJhY2tzYWxlUmVxdWVzdCByZXF1ZXN0IHF1ZSBzZXLDoSBlbnZpYWRvIGFvIHNlcnZpw6dvIGRlIG5wc1xuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBjdXJyZW50VXNlckluaXROUFMoXG4gICAgICAgIHRyYWNrc2FsZVJlcXVlc3Q6IFRyYWNrc2FsZVJlcXVlc3RcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyB0ZW5hbnROYW1lLCBlbWFpbCwgZnVsbE5hbWUgfSA9IGF3YWl0IHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY29weVRyYWNrc2FsZVJlcXVlc3QgPSB7IC4uLnRyYWNrc2FsZVJlcXVlc3QgfTtcbiAgICAgICAgY29weVRyYWNrc2FsZVJlcXVlc3QudGFncyA9XG4gICAgICAgICAgICAodHJhY2tzYWxlUmVxdWVzdC50YWdzICYmIHtcbiAgICAgICAgICAgICAgICAuLi50cmFja3NhbGVSZXF1ZXN0LnRhZ3MsXG4gICAgICAgICAgICB9KSB8fFxuICAgICAgICAgICAge307XG5cbiAgICAgICAgY29weVRyYWNrc2FsZVJlcXVlc3QubmFtZSA9IGZ1bGxOYW1lO1xuICAgICAgICBjb3B5VHJhY2tzYWxlUmVxdWVzdC5lbWFpbCA9IGVtYWlsO1xuICAgICAgICBjb3B5VHJhY2tzYWxlUmVxdWVzdC5pZGVudGlmaWNhdGlvbiA9IGVtYWlsO1xuICAgICAgICBjb3B5VHJhY2tzYWxlUmVxdWVzdC50YWdzLnRlbmFudCA9IHRlbmFudE5hbWU7XG4gICAgICAgIGNvcHlUcmFja3NhbGVSZXF1ZXN0LnRhZ3MuZW1haWwgPSBlbWFpbDtcblxuICAgICAgICB0aGlzLmluaXROUFMoY29weVRyYWNrc2FsZVJlcXVlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGEgbyBzZXJ2acOnbyBkZSBOUFMgdXRpbGl6YW5kbyBvcyBkYWRvcyBmb3JuZWNpZG9zIG5vIHRyYWNrc2FsZVJlcXVlc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0cmFja3NhbGVSZXF1ZXN0IHJlcXVlc3QgcXVlIHNlcsOhIGVudmlhZG8gYW8gc2VydmnDp28gZGUgbnBzXG4gICAgICovXG4gICAgcHVibGljIGluaXROUFModHJhY2tzYWxlUmVxdWVzdDogVHJhY2tzYWxlUmVxdWVzdCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07XG4gICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRyYWNrc2FsZS1qc1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICBlbGVtZW50LmlkID0gXCJ0cmFja3NhbGUtanNcIjtcbiAgICAgICAgZWxlbWVudC5zcmMgPSBcImh0dHBzOi8vY2RuLnRyYWNrc2FsZS5jby90cmFja3NhbGUtanMvdHJhY2tzYWxlLmpzXCI7XG4gICAgICAgIGVsZW1lbnQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGVsZW1lbnQub25sb2FkID0gZWxlbWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeVN0YXRlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeVN0YXRlICE9PSBcImNvbXBsZXRlXCIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWR5U3RhdGUgIT09IFwibG9hZGVkXCJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrU2FsZSA9IG5ldyBUcmFja3NhbGUoKTtcbiAgICAgICAgICAgICAgICB0cmFja1NhbGUuaW5pdCh0cmFja3NhbGVSZXF1ZXN0KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICB9O1xuICAgICAgICBzY3JpcHRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHNjcmlwdEVsZW1lbnQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9wcm90b2NvbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3RlbmFudC1mdWxsLWR0b1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9rZW4tc2VuaW9yLXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyYWNrc2FsZS1yZXF1ZXN0XCI7XG4iXX0=
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWZ1bGwtZHRvLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9ucHMvcHJvdG9jb2xzL3RlbmFudC1mdWxsLWR0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUZW5hbnRGdWxsRFRPIHtcbiAgICBjbGllbnRDb2RlOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tc2VuaW9yLXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9wcm90b2NvbHMvdG9rZW4tc2VuaW9yLXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVRva2VuU2VuaW9yWCB7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIHNjb3BlOiBzdHJpbmc7XG4gICAgZXhwaXJlc19pbjogbnVtYmVyO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBmdWxsTmFtZTogc3RyaW5nO1xuICAgIHRlbmFudE5hbWU6IHN0cmluZztcbiAgICBsb2NhbGU6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tzYWxlLXJlcXVlc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL25wcy9wcm90b2NvbHMvdHJhY2tzYWxlLXJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVHJhY2tzYWxlUmVxdWVzdCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgY2FtcGFpZ246IHN0cmluZztcbiAgICB0YWdzPzogYW55O1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgaWRlbnRpZmljYXRpb24/OiBzdHJpbmc7XG4gICAgc2FsdXRlPzogc3RyaW5nO1xuICAgIHRoYW5rcz86IHN0cmluZztcbiAgICByZXF1aXJlX2NvbW1lbnQ/OiBib29sZWFuO1xuICAgIGFwcGVuZFRvPzogc3RyaW5nO1xuICAgIG9uT3Blbj86IEZ1bmN0aW9uO1xuICAgIG9uQ2xvc2U/OiBGdW5jdGlvbjtcbiAgICBvbkFuc3dlcj86IEZ1bmN0aW9uO1xuICAgIG9uVXBkYXRlSW5mbz86IEZ1bmN0aW9uO1xuICAgIG9uV2FybmluZz86IEZ1bmN0aW9uO1xuICAgIG9uRXJyb3I/OiBGdW5jdGlvbjtcbn1cbiJdfQ==