@messaia/cdk 17.0.0-rc02 → 17.0.0-rc03

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.
@@ -5,7 +5,7 @@ import { MatDialog } from '@angular/material/dialog';
5
5
  import { MatExpansionPanel } from '@angular/material/expansion';
6
6
  import { MatSnackBar } from '@angular/material/snack-bar';
7
7
  import { Title } from '@angular/platform-browser';
8
- import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
8
+ import { ActivatedRoute, Router } from '@angular/router';
9
9
  import { of } from 'rxjs';
10
10
  import { ContextHelper } from '../../common/common.module';
11
11
  import { AppSetting } from '../../common/models/app-setting';
@@ -211,6 +211,7 @@ export class BaseComponent {
211
211
  var mainRoute = this.getMainRoute(this.route.snapshot);
212
212
  if (mainRoute) {
213
213
  this.menu = mainRoute.data.menu;
214
+ this.setTitles();
214
215
  }
215
216
  /* Set project name & debug mode */
216
217
  this.projectName = this.appSetting.projectName;
@@ -228,15 +229,16 @@ export class BaseComponent {
228
229
  });
229
230
  }
230
231
  /* Set current route */
231
- this.currentRoute = btoa(this.router.url);
232
+ this.currentRoute = window.btoa(this.router.url);
232
233
  this.currentBaseRoute = this.router.url?.split('?')[0]?.split(';')[0];
233
234
  /**
234
235
  * Set page title
235
236
  */
236
237
  this.router.events.subscribe(x => {
237
- if (x instanceof NavigationEnd) {
238
+ let navigationEnd = x?.routerEvent;
239
+ if (navigationEnd) {
238
240
  this.setTitles();
239
- this.currentRoute = btoa(x.url);
241
+ this.currentRoute = window.btoa(navigationEnd.url);
240
242
  }
241
243
  });
242
244
  /* Get the return url if any */
@@ -504,7 +506,7 @@ export class BaseComponent {
504
506
  var subtitle = this.route?.snapshot?.paramMap?.get('subtitle');
505
507
  if (subtitle) {
506
508
  try {
507
- this.subtitle = atob(subtitle);
509
+ this.subtitle = window.atob(subtitle);
508
510
  }
509
511
  catch (e) {
510
512
  this.subtitle = subtitle;
@@ -513,6 +515,9 @@ export class BaseComponent {
513
515
  else {
514
516
  /* Get current route */
515
517
  let currentRoute = this.router.url.split('?')[0]?.split(';')[0];
518
+ /* Append a trailing slash if the route doesn't end with one */
519
+ currentRoute = currentRoute.endsWith('/') ? currentRoute : currentRoute + '/';
520
+ /* Filter the menu items based on the modified route path */
516
521
  var submenu = this.menu.items.filter(x => x.path == currentRoute)[0];
517
522
  if (submenu) {
518
523
  this.subtitle = submenu.title;
@@ -661,4 +666,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
661
666
  type: ViewChildren,
662
667
  args: [MatExpansionPanel]
663
668
  }] } });
664
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFRLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBMEIsYUFBYSxFQUFFLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIs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LENBQUM7MEhBM3NCb0IsYUFBYTs4R0FBYixhQUFhLHVMQTRMcEIsaUJBQWlCLDJCQUFVLFVBQVUsNkRBTXJDLGlCQUFpQjs7MkZBbE1WLGFBQWE7a0JBRGxDLFNBQVM7bUhBOENGLDJCQUEyQjtzQkFEakMsS0FBSztnQkE2R0MsTUFBTTtzQkFEWixNQUFNO2dCQXFDRyxpQ0FBaUM7c0JBRDFDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQU8zQywwQkFBMEI7c0JBRG5DLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVHlwZSwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFVybFNlZ21lbnQsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRleHRIZWxwZXIgfSBmcm9tICcuLi8uLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFwcFNldHRpbmcgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2FwcC1zZXR0aW5nJztcclxuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvc2VydmljZS1sb2NhdG9yJztcclxuaW1wb3J0IHsgVmREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFZkTWVkaWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVkaWEvc2VydmljZXMvbWVkaWEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnUgfSBmcm9tICcuLi8uLi9tZW51L21vZGVscy9tZW51JztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IEdsb2JhbFJvbGVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1yb2xlcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vZW51bXMvbWVzc2FnZS10eXBlJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvYXV0aC1oZWxwZXInO1xyXG5pbXBvcnQgeyBJQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWJhc2UtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aFVzZXIgfSBmcm9tICcuLi9tb2RlbHMvYXV0aC11c2VyJztcclxuXHJcbi8qKlxyXG4gKiBBIGJhc2UgbGlzdCBjb21wb25lbnQgZm9yIGNvbXBvbmVudHMgd2l0aCBwYWdpbmF0aW9uIHN1cHBvcnRcclxuICovXHJcbi8vIEBkeW5hbWljXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElCYXNlQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cdC8qKlxyXG5cdCAqIEFwcCBzZXR0aW5nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBhcHBTZXR0aW5nOiBBcHBTZXR0aW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQW55XHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogTWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZW51OiBNZW51O1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwcm9qZWN0TmFtZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdGl0bGUgb2YgdGhlIGN1cnJlbnQgcGFnZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0aXRsZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgc3VidGl0bGUgb2YgdGhlIGN1cnJlbnQgb3V0bGV0XHJcblx0ICovXHJcblx0cHVibGljIHN1YnRpdGxlOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgdXNlIHNvbWUgZHVtbXkgZGF0YSBhbmQgc2hvdyBkZWJ1ZyBsb2dzXHJcblx0ICovXHJcblx0cHVibGljIGRlYnVnOiBib29sZWFuO1xyXG5cclxuXHQvKipcdCBcclxuXHQgKiBMb2FkaW5nIHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIGhhbmRsZUV4cGFuc2lvblBhbmVsQ2hhbmdlczogYm9vbGVhblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGhhbmRsZUV4cGFuc2lvblBhbmVsQ2hhbmdlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmluZyBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgX2lzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGdldCBpc1NhdmluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lzU2F2aW5nIHx8IHRoaXMuaXNMb2FkaW5nOyB9XHJcblx0cHVibGljIHNldCBpc1NhdmluZyhpc1NhdmluZzogYm9vbGVhbikgeyB0aGlzLmlzTG9hZGluZyA9IHRoaXMuX2lzU2F2aW5nID0gaXNTYXZpbmc7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBmbGFnIGVpbmRpY2F0ZXMgdGhhdCB0aGUgZWRpdG9yIGlzIGluaXRlZFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0VkaXRvckluaXRpYWx6ZWQ6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcHJlc2VudHMgdGhlIHJlcXVlc3QgZXJyb3JzXHJcblx0ICovXHJcblx0cHVibGljIGVycm9yczogQXJyYXk8c3RyaW5nPiA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVzZWQgdG8gZXZhbHVhdGUgd2hldGhlciBhIGdpdmVuIG1lZGlhIHF1ZXJ5IGlzIHRydWUgb3IgZmFsc2UgZ2l2ZW4gdGhlIGN1cnJlbnQgZGV2aWNlJ3Mgc2NyZWVuIC8gd2luZG93IHNpemUuXHJcblx0ICovXHJcblx0cHVibGljIG1lZGlhOiBWZE1lZGlhU2VydmljZTtcclxuXHJcblx0LyoqXHJcblx0ICogQWxsb3dlZCBmaWxlIGV4dGVuc2lvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgYWxsb3dlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gQ29tbW9uLmFsbG93ZWRFeHRlbnNpb25zO1xyXG5cclxuXHQvKipcclxuXHQgKiB0aW55TUNFIHBsdWdpbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yUGx1Z2luczogc3RyaW5nID0gQ29tbW9uLmVkaXRvclBsdWdpbnM7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRpbnlNQ0UgZWRpdG9yXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvclRvb2xiYXI6IHN0cmluZyA9IENvbW1vbi5lZGl0b3JUb29sYmFyO1xyXG5cclxuXHQvKipcclxuXHQgKiBFZGl0b3IgY29uZmlndXJhdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JDb25maWc6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBQcm92aWRlcyB0aGUgbmF2aWdhdGlvbiBhbmQgdXJsIG1hbmlwdWxhdGlvbiBjYXBhYmlsaXRpZXMuXHJcblx0ICovXHJcblx0cHVibGljIHJvdXRlcjogUm91dGVyO1xyXG5cclxuXHQvKipcclxuXHQgKiB1cmxIYXNoOiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgdXJsSGFzaDogc3RyaW5nID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogQ2xhc3MgbmFtZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlIHBlcm1pc3Npb25cclxuXHQgKi9cclxuXHRwdWJsaWMgY2FuQ3JlYXRlOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGUgcGVybWlzc2lvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjYW5VcGRhdGU6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgcm91dGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudFJvdXRlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgYmFzZSByb3V0ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjdXJyZW50QmFzZVJvdXRlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgdXJsIHRvIHJldHVybiB0byBhZnRlciBzYXZlXHJcblx0ICovXHJcblx0cHVibGljIHJldHVyblVybDogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHVzZXIgb2JqZWN0XHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRVc2VyOiBBdXRoVXNlciA9IEF1dGhIZWxwZXIudXNlcjtcclxuXHJcblx0LyoqXHJcblx0ICogSXMgdGhlIGN1cnJlbnQgdXNlciBhIGNsaWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0FkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKEdsb2JhbFJvbGVzLkFkbWluaXN0cmF0b3IpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJcyB0aGUgY3VycmVudCB1c2VyIGEgY2xpZW50IGFkbWluXHJcblx0ICovXHJcblx0cHVibGljIGlzQ2xpZW50QWRtaW4gPSBBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuQ2xpZW50QWRtaW5pc3RyYXRvcik7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElzIHRoZSBjdXJyZW50IHVzZXIgYSBkZXBhcnRtZW50IGFkbWluXHJcblx0ICovXHJcblx0cHVibGljIGlzRGVwYXJ0bWVudEFkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKEdsb2JhbFJvbGVzLkRlcGFydG1lbnRBZG1pbmlzdHJhdG9yKTtcclxuXHJcblx0LyoqXHJcblx0ICogcmVsb2FkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgcmVsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBnZXQgYW5kIHNldCB0aGUgdGl0bGUgb2YgYSBjdXJyZW50IEhUTUwgZG9jdW1lbnQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHRpdGxlU2VydmljZTogVGl0bGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0byBkaXNwYXRjaCBNYXRlcmlhbCBEZXNpZ24gc25hY2sgYmFyIG1lc3NhZ2VzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzbmFja0JhclNlcnZpY2U6IE1hdFNuYWNrQmFyO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gc2hvdyBjb25pcm0gYW5kIHByb21wdCBkaWFsb2dzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBWZERpYWxvZ1NlcnZpY2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0byBzaG93IGNvbmlybSBhbmQgcHJvbXB0IGRpYWxvZ3MuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nO1xyXG5cclxuXHQvKipcclxuXHQgKiBsb2NhdGlvbjogTG9jYXRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzZXQgdXJsIGhhc2hcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0VXJsSGFzaDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1hdEV4cGFuc2lvblBhbmVsIHJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oTWF0RXhwYW5zaW9uUGFuZWwsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcblx0LyoqXHJcblx0ICogTWF0RXhwYW5zaW9uUGFuZWwgcmVmXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbihNYXRFeHBhbnNpb25QYW5lbClcclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxNYXRFeHBhbnNpb25QYW5lbD47XHJcblxyXG5cdC8qKlxyXG5cdCAqIG1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW11cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdHRoaXMudGl0bGVTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKFRpdGxlKTtcclxuXHRcdHRoaXMuZGlhbG9nU2VydmljZSA9IHRoaXMuZ2V0U2VydmljZShWZERpYWxvZ1NlcnZpY2UpO1xyXG5cdFx0dGhpcy5kaWFsb2cgPSB0aGlzLmdldFNlcnZpY2UoTWF0RGlhbG9nKTtcclxuXHRcdHRoaXMubWVkaWEgPSB0aGlzLmdldFNlcnZpY2UoVmRNZWRpYVNlcnZpY2UpO1xyXG5cdFx0dGhpcy5zbmFja0JhclNlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoTWF0U25hY2tCYXIpO1xyXG5cdFx0dGhpcy5yb3V0ZXIgPSB0aGlzLmdldFNlcnZpY2UoUm91dGVyKTtcclxuXHRcdHRoaXMuYXBwU2V0dGluZyA9IHRoaXMuZ2V0U2VydmljZShBcHBTZXR0aW5nKTtcclxuXHRcdHRoaXMubG9jYXRpb24gPSB0aGlzLmdldFNlcnZpY2UoTG9jYXRpb24pO1xyXG5cclxuXHRcdENvbnRleHRIZWxwZXIuYWN0aXZhdGVkUm91dGUgPSByb3V0ZTtcclxuXHRcdENvbnRleHRIZWxwZXIucm91dGVyID0gdGhpcy5yb3V0ZXI7XHJcblx0XHRDb250ZXh0SGVscGVyLmFwcFNldHRpbmcgPSB0aGlzLmFwcFNldHRpbmc7XHJcblxyXG5cdFx0dGhpcy5pbml0RWRpdG9yKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogR2V0IG1lbnUgaXRlbXMgZnJvbSByb3V0ZSBzbmFwc2hvdCAqL1xyXG5cdFx0dmFyIG1haW5Sb3V0ZSA9IHRoaXMuZ2V0TWFpblJvdXRlKHRoaXMucm91dGUuc25hcHNob3QpO1xyXG5cdFx0aWYgKG1haW5Sb3V0ZSkge1xyXG5cdFx0XHR0aGlzLm1lbnUgPSBtYWluUm91dGUuZGF0YS5tZW51O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBwcm9qZWN0IG5hbWUgJiBkZWJ1ZyBtb2RlICovXHJcblx0XHR0aGlzLnByb2plY3ROYW1lID0gdGhpcy5hcHBTZXR0aW5nLnByb2plY3ROYW1lO1xyXG5cdFx0dGhpcy5kZWJ1ZyA9IHRoaXMuYXBwU2V0dGluZy5kZWJ1ZztcclxuXHJcblx0XHQvKiBHZXQgdGhlIGhhc2ggZnJvbSB0aGUgdXJsICovXHJcblx0XHR0aGlzLnJvdXRlLmZyYWdtZW50LnN1YnNjcmliZSgoZnJhZ21lbnQ6IHN0cmluZykgPT4gdGhpcy51cmxIYXNoID0gZnJhZ21lbnQpO1xyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogQ2hlY2sgcGVybWlzc2lvbnNcclxuXHRcdCAqL1xyXG5cdFx0aWYgKHRoaXMucm91dGUucGFyZW50KSB7XHJcblx0XHRcdHRoaXMucm91dGUucGFyZW50LnVybC5zdWJzY3JpYmUoKHVybDogVXJsU2VnbWVudFtdKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jbGFzc05hbWUgPz89IHVybC5sZW5ndGggPyB1cmxbMF0ucGF0aC5yZXBsYWNlKC8oLiopcyQvLCAnJDEnKS5yZXBsYWNlKC9eLi8sICh1cmxbMF0ucGF0aFswXSB8fCAnJykudG9VcHBlckNhc2UoKSkgOiAnJztcclxuXHRcdFx0XHR0aGlzLmNhbkNyZWF0ZSA9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoJ0NyZWF0ZScsIGBDcmVhdGUke3RoaXMuY2xhc3NOYW1lfWApO1xyXG5cdFx0XHRcdHRoaXMuY2FuVXBkYXRlID0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZCgnVXBkYXRlJywgYFVwZGF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBjdXJyZW50IHJvdXRlICovXHJcblx0XHR0aGlzLmN1cnJlbnRSb3V0ZSA9IGJ0b2EodGhpcy5yb3V0ZXIudXJsKTtcclxuXHRcdHRoaXMuY3VycmVudEJhc2VSb3V0ZSA9IHRoaXMucm91dGVyLnVybD8uc3BsaXQoJz8nKVswXT8uc3BsaXQoJzsnKVswXTtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIFNldCBwYWdlIHRpdGxlXHJcblx0XHQgKi9cclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdGlmICh4IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG5cdFx0XHRcdHRoaXMuc2V0VGl0bGVzKCk7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50Um91dGUgPSBidG9hKHgudXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IHRoZSByZXR1cm4gdXJsIGlmIGFueSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoeCA9PiB0aGlzLnNldFJldHVyblVybCh4LnJldHVyblVybCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEJyb2FkY2FzdCB0byBhbGwgbGlzdGVuZXIgb2JzZXJ2YWJsZXMgd2hlbiBsb2FkaW5nIHRoZSBwYWdlICovXHJcblx0XHR0aGlzLm1lZGlhLmJyb2FkY2FzdCgpO1xyXG5cclxuXHRcdC8qIFNldCB0aXRsZXMgKi9cclxuXHRcdHRoaXMuc2V0VGl0bGVzKCk7XHJcblxyXG5cdFx0LyogXHJcblx0XHQgKiBGb3JjZSBhIG5ldyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHNpbmNlIGNoYW5nZSBkZXRlY3Rpb25zIFxyXG5cdFx0ICogaGF2ZSBmaW5pc2hlZCB3aGVuIGBuZ0FmdGVyVmlld0luaXRgIGlzIGV4ZWN1dGVkXHJcblx0XHQgKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuXHRcdC8qIExpc3RlbiBmb3IgZXhwYW5zaW9uIHBhbmVsIGNoYW5nZXMgKi9cclxuXHRcdGlmICh0aGlzLmhhbmRsZUV4cGFuc2lvblBhbmVsQ2hhbmdlcykge1xyXG5cdFx0XHR0aGlzLm9uRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWZyZXNocyB0aGlzIHBhZ2UvY29tcG9uZW50XHJcblx0ICovXHJcblx0cHVibGljIHJlbG9hZFBhZ2UoKTogdm9pZCB7XHJcblx0XHRsZXQgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkudGhlbigoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGN1cnJlbnRVcmwsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgYmFjayB0byByZXR1cm4gdXJsXHJcblx0ICovXHJcblx0cHVibGljIG5hdmlnYXRlVG9SZXR1cm5VcmwoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5yZXR1cm5VcmwpIHtcclxuXHRcdFx0bGV0IHVybFRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJldHVyblVybCk7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsVHJlZS50b1N0cmluZygpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qIFxyXG5cdCAqIEZvcmNlIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgc2luY2UgY2hhbmdlIGRldGVjdGlvbnMgXHJcblx0ICogaGF2ZSBmaW5pc2hlZCB3aGVuIGBuZ0FmdGVyVmlld0luaXRgIGlzIGV4ZWN1dGVkXHJcblx0ICovXHJcblx0cHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgcmV0dXJuIHVybFxyXG5cdCAqIEBwYXJhbSByZXR1cm5VcmwgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFJldHVyblVybChyZXR1cm5Vcmw6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dHJ5IHsgdGhpcy5yZXR1cm5VcmwgPSByZXR1cm5VcmwgPyBkZWNvZGVVUklDb21wb25lbnQoYXRvYihyZXR1cm5VcmwpKSA6IG51bGw7IH1cclxuXHRcdGNhdGNoIChlcnJvcikgeyB9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKCk6IHZvaWQge1xyXG5cdFx0LyogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uY2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdC8qIFVuc3Vic2NyaWJlIGZyb20gb2xkICdvcGVuZWQnIGFuZCAnY2xvc2VkJyBzdWJzY3JpcHRpb25zICovXHJcblx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLmZvckVhY2goeCA9PiB4LnVuc3Vic2NyaWJlKCkpO1xyXG5cclxuXHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG5cdFx0XHQvKiBHZXQgdGhlIHBhbmVsIGVuZHMgd2l0aCB0aGUgSUQgJ25ldycgKi9cclxuXHRcdFx0dmFyIG5ld0V4cGFuc2lvblBhbmVsSW5kZXggPSB0aGlzLm1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdD8udG9BcnJheSgpPy5maW5kSW5kZXgoeCA9PiB4Lm5hdGl2ZUVsZW1lbnQ/LmlkPy5lbmRzV2l0aCgnLm5ldycpKTtcclxuXHRcdFx0aWYgKG5ld0V4cGFuc2lvblBhbmVsSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdC8qIENsb3NlIGFsbCBwYW5lbHMgKi9cclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py5maXJzdD8uYWNjb3JkaW9uPy5jbG9zZUFsbCgpO1xyXG5cclxuXHRcdFx0XHQvKiBPcGVuIHRoZSBuZXcgcGFuZWwgKi9cclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py50b0FycmF5KClbbmV3RXhwYW5zaW9uUGFuZWxJbmRleF0/Lm9wZW4oKTtcclxuXHJcblx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvKiBGaW5kIHRoZSBpbmRleCBvZiB0aGUgcGFuZWwgd2l0aCB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgSUQgKi9cclxuXHRcdFx0XHR0aGlzLnVybEhhc2g/LnNwbGl0KCcuJylcclxuXHRcdFx0XHRcdD8ucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlLCBpbmRleCkgPT4gYWNjdW11bGF0b3IuY29uY2F0KChpbmRleCA+IDAgPyAoYWNjdW11bGF0b3Iuc2xpY2UoLTEpLmpvaW4oJy4nKSArICcuJykgOiAnJykgKyBjdXJyZW50VmFsdWUpLCBbXSlcclxuXHRcdFx0XHRcdD8uZm9yRWFjaCgoaGFzaDogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdHZhciBleHBhbnNpb25QYW5lbEluZGV4ID0gdGhpcy5tYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q/LnRvQXJyYXkoKT8uZmluZEluZGV4KHggPT4geC5uYXRpdmVFbGVtZW50LmlkID09IGhhc2gpO1xyXG5cdFx0XHRcdFx0XHRpZiAoZXhwYW5zaW9uUGFuZWxJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8udG9BcnJheSgpW2V4cGFuc2lvblBhbmVsSW5kZXhdPy5vcGVuKCk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyBmb3Igb3BlbmVkIHBhbmVscyAqL1xyXG5cdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py5mb3JFYWNoKHkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLnB1c2goeS5vcGVuZWQuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0VXJsSGFzaCkge1xyXG5cdFx0XHRcdFx0XHQvKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IG9wZW5lZCBwYW5lbCAqL1xyXG5cdFx0XHRcdFx0XHR2YXIgY3VycmVudFBhbmVsSWQgPSB5Wydfdmlld0NvbnRhaW5lclJlZiddPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5pZDtcclxuXHJcblx0XHRcdFx0XHRcdC8qIElmIHRoZSBwYW5lbCBJRCBpcyBzZXQsIHNldCBpdCBhcyB1cmwgc2VnbWVudCAoaGFzaCkgKi9cclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRQYW5lbElkKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgZnJhZ21lbnQ6IGN1cnJlbnRQYW5lbElkLCByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBPdGhlcndpc2UgcmVtb3ZlIHRoZSBzZWdtZW50IGZyb20gdGhlIHVybCAqL1xyXG5cdFx0XHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHJcblx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgZm9yIGNsb3NlZCBwYW5lbHMgKi9cclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5wdXNoKHkuY2xvc2VkLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnNldFVybEhhc2gpIHtcclxuXHRcdFx0XHRcdFx0LyogR2V0IHRoZSBpZCBvZiB0aGUgY3VycmVudCBvcGVuZWQgcGFuZWwgKi9cclxuXHRcdFx0XHRcdFx0dmFyIGN1cnJlbnRQYW5lbElkUGFydHMgPSB5Wydfdmlld0NvbnRhaW5lclJlZiddPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5pZD8uc3BsaXQoJy4nKTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIElmIHRoZSBwYW5lbCBJRCBpcyBzZXQsIHNldCBpdCBhcyB1cmwgc2VnbWVudCAoaGFzaCkgKi9cclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRQYW5lbElkUGFydHMubGVuZ3RoID4gMSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IGZyYWdtZW50OiBjdXJyZW50UGFuZWxJZFBhcnRzLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0fSkpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIE5vdGlmeSBleHBhbnNpb24gcGFuZWwgbGlzdCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Lm5vdGlmeU9uQ2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGZyb20gdGhlIGluamVjdG9yIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB0b2tlbi5cclxuXHQgKiBJZiBub3QgZm91bmQ6XHJcblx0ICogLSBUaHJvd3Mge0BsaW5rIE5vUHJvdmlkZXJFcnJvcn0gaWYgbm8gYG5vdEZvdW5kVmFsdWVgIHRoYXQgaXMgbm90IGVxdWFsIHRvXHJcblx0ICogSW5qZWN0b3IuVEhST1dfSUZfTk9UX0ZPVU5EIGlzIGdpdmVuXHJcblx0ICogLSBSZXR1cm5zIHRoZSBgbm90Rm91bmRWYWx1ZWAgb3RoZXJ3aXNlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldFNlcnZpY2U8VD4odG9rZW46IFR5cGU8VD4pOiBUIHtcclxuXHRcdHJldHVybiBTZXJ2aWNlTG9jYXRvci5nZXRTZXJ2aWNlKHRva2VuKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgYmFzZSByb3V0ZVxyXG5cdCAqIEBwYXJhbSBzbmFwc2hvdCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0TWFpblJvdXRlKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XHJcblx0XHRpZiAoc25hcHNob3QgJiYgIXNuYXBzaG90LmRhdGEubWVudSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRNYWluUm91dGUoc25hcHNob3QucGFyZW50KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc25hcHNob3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIGRlbGV0ZSBhbiBpdGVtIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzaG93RGVsZXRlSXRlbURpYWxvZygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdG1lc3NhZ2U6ICRsb2NhbGl6ZWA6QEBkaWFsb2cubWVzc2FnZS5kZWxldGUub25lOkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBpdGVtP2AsXHJcblx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmRlbGV0ZTpDb25maXJtIERlbGV0ZWAsXHJcblx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIGRlbGV0ZSBtdWx0aXBsZSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzaG93RGVsZXRlSXRlbXNEaWFsb2coKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRtZXNzYWdlOiAkbG9jYWxpemVgOkBAZGlhbG9nLm1lc3NhZ2UuZGVsZXRlLmxpc3Q6QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbXM/YCxcclxuXHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkaWFsb2cudGl0bGUuZGVsZXRlOkNvbmZpcm0gRGVsZXRlYCxcclxuXHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gc2VuZCBzb21lIGRhdGFcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5XHJcblx0ICogQHBhcmFtIG9ic2VydmFiZSBUaGUgb2JzZXJ2YWJsZSBpbnN0YW5jZVxyXG5cdCAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgQSBzdWNjZXNzIGNhbGxiYWNrXHJcblx0ICogQHBhcmFtIGVycm9yQ2FsbGJhY2sgQW4gZXJyb3IgY2FsbGJhY2tcclxuXHQgKi9cclxuXHRwdWJsaWMgc2hvd0NvbmZpcm1hdGlvbkRpYWxvZyhtZXNzYWdlOiBzdHJpbmcsIG9ic2VydmFiZTogT2JzZXJ2YWJsZTxhbnk+LCBzdWNjZXNzQ2FsbGJhY2s6IEZ1bmN0aW9uID0gbnVsbCwgZXJyb3JDYWxsYmFjazogRnVuY3Rpb24gPSBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZ1NlcnZpY2VcclxuXHRcdFx0Lm9wZW5Db25maXJtKHtcclxuXHRcdFx0XHRtZXNzYWdlOiBtZXNzYWdlLFxyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmNvbmZpcm06Q29uZmlybWAsXHJcblx0XHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAb2s6T2tgLFxyXG5cdFx0XHR9KVxyXG5cdFx0XHQuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHRcdG9ic2VydmFiZS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2hvd01lc3NhZ2UoJGxvY2FsaXplYDpAQHNuYWNrYmFyLnNlbmQuc3VjY2VzczpEYXRhIHNlbnQgc3VjY2Vzc2Z1bGx5LmApO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NDYWxsYmFjayh4KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgZXJyb3JzID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRpZiAoZXJyb3JDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdGVycm9yQ2FsbGJhY2soZXJyb3JzKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgYWRkIHBhZ2UuXHJcblx0ICovXHJcblx0cHVibGljIG9wZW5EaWFsb2c8VCwgRCA9IGFueT4oZGlhbG9nVHlwZTogVHlwZTxUPiwgY29uZmlnOiBNYXREaWFsb2dDb25maWc8RD4sIGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihkaWFsb2dUeXBlLCBPYmplY3QuYXNzaWduKHsgd2lkdGg6ICc2NTBweCcsIGRhdGE6IHt9LCBwYW5lbENsYXNzOiBbJ2RpYWxvZy1mdWxsLXNjcmVlbiddIH0sIGNvbmZpZykpXHJcblx0XHRcdC5hZnRlckNsb3NlZCgpXHJcblx0XHRcdC5zdWJzY3JpYmUoXyA9PiBjYWxsYmFjaygpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgbWVzc2FnZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXlcclxuXHQgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzaG93TWVzc2FnZShtZXNzYWdlPzogc3RyaW5nLCB0eXBlOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3MpOiB2b2lkIHtcclxuXHRcdHZhciBzbmFja0JhckNsYXNzID0gJ3ByaW1hcnknO1xyXG5cdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuU3VjY2VzczpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ3ByaW1hcnknO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5XYXJuaW5nOlxyXG5cdFx0XHRcdHNuYWNrQmFyQ2xhc3MgPSAnd2Fybic7XHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLkVycm9yOlxyXG5cdFx0XHRcdHNuYWNrQmFyQ2xhc3MgPSAnZXJyb3InO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKG1lc3NhZ2UgfHwgJGxvY2FsaXplYDpAQHNuYWNrYmFyLnNlbmQuc3VjY2VzczpEYXRhIHNlbnQgc3VjY2Vzc2Z1bGx5LmAsIG51bGwsIHtcclxuXHRcdFx0ZHVyYXRpb246IDMwMDAsXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFtzbmFja0JhckNsYXNzXVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbml0b2FsaXplcyB0aGUgdGlueW1jZSBlZGl0b3JcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5pdEVkaXRvcihlZGl0b3JDb25maWc6IGFueSA9IHt9KSB7XHJcblx0XHRPYmplY3QuYXNzaWduKHRoaXMuZWRpdG9yQ29uZmlnLCB7XHJcblx0XHRcdHN1ZmZpeDogJy5taW4nLFxyXG5cdFx0XHRza2luOiBmYWxzZSxcclxuXHRcdFx0aGVpZ2h0OiAnMTcwcHgnLFxyXG5cdFx0XHRjb250ZW50X2NzczogZmFsc2UsXHJcblx0XHRcdHBsdWdpbnM6IHRoaXMuZWRpdG9yUGx1Z2lucyxcclxuXHRcdFx0dG9vbGJhcjogdGhpcy5lZGl0b3JUb29sYmFyLFxyXG5cdFx0XHRwYXN0ZV9hc190ZXh0OiB0cnVlLFxyXG5cdFx0XHRsYW5ndWFnZTogJ2RlJyxcclxuXHRcdFx0bGFuZ3VhZ2VfdXJsOiAnL2Fzc2V0cy90aW55bWNlL2xhbmdzL2RlLmpzJyxcclxuXHRcdFx0ZG9jdW1lbnRfYmFzZV91cmw6IGAke3RoaXMuYXBwU2V0dGluZy5hcGlVcmx9ZmlsZS9gLFxyXG5cdFx0XHRhdXRvbWF0aWNfdXBsb2FkczogdHJ1ZSxcclxuXHRcdFx0cmVsYXRpdmVfdXJsczogdHJ1ZSxcclxuXHRcdFx0Y29udmVydF91cmxzOiBmYWxzZSxcclxuXHRcdFx0ZXh0ZW5kZWRfdmFsaWRfZWxlbWVudHM6ICdzcGFuW2lkfGNsYXNzfHN0eWxlXSwrQFtkYXRhLW9wdGlvbnNdJyxcclxuXHRcdFx0YWxsb3dfaHRtbF9pbl9uYW1lZF9hbmNob3I6IHRydWVcclxuXHRcdH0sIGVkaXRvckNvbmZpZyk7XHJcblxyXG5cdFx0dGhpcy5pc0VkaXRvckluaXRpYWx6ZWQgPSB0cnVlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBzdWJ0aXRsZSBmcm9tIGN1cnJlbiBtZW51XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFRpdGxlcygpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm1lbnUpIHtcclxuXHRcdFx0dGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5tZW51LnRpdGxlKTtcclxuXHRcdFx0dGhpcy50aXRsZSA9IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCk7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMubWVudS5pdGVtcykge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogR2V0IHN1YnRpdGxlIGZyb20gdXJsIHBhcmFtcyAqL1xyXG5cdFx0XHR2YXIgc3VidGl0bGUgPSB0aGlzLnJvdXRlPy5zbmFwc2hvdD8ucGFyYW1NYXA/LmdldCgnc3VidGl0bGUnKTtcclxuXHRcdFx0aWYgKHN1YnRpdGxlKSB7XHJcblx0XHRcdFx0dHJ5IHsgdGhpcy5zdWJ0aXRsZSA9IGF0b2Ioc3VidGl0bGUpOyB9XHJcblx0XHRcdFx0Y2F0Y2ggKGUpIHsgdGhpcy5zdWJ0aXRsZSA9IHN1YnRpdGxlOyB9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0LyogR2V0IGN1cnJlbnQgcm91dGUgKi9cclxuXHRcdFx0XHRsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF0/LnNwbGl0KCc7JylbMF07XHJcblx0XHRcdFx0dmFyIHN1Ym1lbnUgPSB0aGlzLm1lbnUuaXRlbXMuZmlsdGVyKHggPT4geC5wYXRoID09IGN1cnJlbnRSb3V0ZSlbMF07XHJcblx0XHRcdFx0aWYgKHN1Ym1lbnUpIHtcclxuXHRcdFx0XHRcdHRoaXMuc3VidGl0bGUgPSBzdWJtZW51LnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFycmF5IG9mIGNvbW1hbmRzIGFuZCBhIHN0YXJ0aW5nIHBvaW50LlxyXG5cdCAqIEBwYXJhbSBjb21tYW5kcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHM6IGFueVtdLCBxdWVyeVBhcmFtcz86IGFueSwgZnJhZ21lbnQ/OiBzdHJpbmcsIHByZXNlcnZlRnJhZ21lbnQ/OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xyXG5cdFx0XHRxdWVyeVBhcmFtczogT2JqZWN0LmFzc2lnbih7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSwgcXVlcnlQYXJhbXMgfHwge30pLFxyXG5cdFx0XHRmcmFnbWVudDogZnJhZ21lbnQsXHJcblx0XHRcdHByZXNlcnZlRnJhZ21lbnQ6IHByZXNlcnZlRnJhZ21lbnQsXHJcblx0XHRcdHJlbGF0aXZlVG86IHRoaXMucm91dGVcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29udmVydCBPYmplY3QgdG8gSHR0cEhlYWRlcnNcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gYm9keVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0b0h0dHBIZWFkZXJzKGJvZHk6IE9iamVjdCk6IEh0dHBIZWFkZXJzIHtcclxuXHRcdGlmICghYm9keSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJvZHkpXHJcblx0XHRcdC5maWx0ZXIoa2V5ID0+IGJvZHlba2V5XSAhPSBudWxsICYmIGJvZHlba2V5XSAhPSAnJylcclxuXHRcdFx0LnJlZHVjZSgocCwga2V5KSA9PiBwLnNldChrZXksIGJvZHlba2V5XSksIG5ldyBIdHRwSGVhZGVycygpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlcyBodHRwIHJlc3BvbnNlIGVycm9yc1xyXG5cdCAqIEBwYXJhbSBlcnJvcnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHBhcnNlRXJyb3JzKGVycm9yczogT2JqZWN0KTogdm9pZCB7XHJcblx0XHR0aGlzLmVycm9ycyA9IFtdO1xyXG5cdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRpZiAoZXJyb3JzKSB7XHJcblx0XHRcdE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChlbCA9PiB7XHJcblx0XHRcdFx0bGV0IGVycm9yID0gZXJyb3JzW2VsXTtcclxuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShlcnJvcikpIHtcclxuXHRcdFx0XHRcdGVycm9yLmZvckVhY2goZXJyID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5lcnJvcnMucHVzaChlcnIpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuZXJyb3JzLnB1c2goZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGUgSHR0cCBvcGVyYXRpb24gdGhhdCBmYWlsZWQuXHJcblx0ICogTGV0IHRoZSBhcHAgY29udGludWUuXHJcblx0ICogQHBhcmFtIG9wZXJhdGlvbiAtIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0aGF0IGZhaWxlZFxyXG5cdCAqIEBwYXJhbSByZXN1bHQgLSBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gYXMgdGhlIG9ic2VydmFibGUgcmVzdWx0XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGhhbmRsZUVycm9yPFQ+KG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLCByZXN1bHQ/OiBUKSB7XHJcblx0XHRyZXR1cm4gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuXHJcblx0XHRcdC8qIFBhcnNlIHRoZSBlcnJvciBtZXNzYWdlcyAqL1xyXG5cdFx0XHR0aGlzLnBhcnNlRXJyb3JzKGVycm9yKTtcclxuXHJcblx0XHRcdC8qIExvZyB0byBjb25zb2xlICovXHJcblx0XHRcdHRoaXMud2FybihgJHtvcGVyYXRpb259IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWApO1xyXG5cclxuXHRcdFx0LyogTGV0IHRoZSBhcHAga2VlcCBydW5uaW5nIGJ5IHJldHVybmluZyBhbiBlbXB0eSByZXN1bHQgKi9cclxuXHRcdFx0cmV0dXJuIG9mKHJlc3VsdCBhcyBUKTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbG9nKG1lc3NhZ2U6IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcblx0XHRpZiAodGhpcy5kZWJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgd2FybihtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG5cdFx0aWYgKHRoaXMuZGVidWcpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFucyB0aGUgb2JqZWN0c1xyXG5cdCAqIFJlbW92ZXMgZW1wdHkgcHJvcGVydGllc1xyXG5cdCAqIEBwYXJhbSBvYmogXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNsZWFuKG9iajogYW55KTogYW55IHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGZvciAodmFyIHByb3BOYW1lIGluIG9iaikge1xyXG5cdFx0XHRcdGlmIChvYmpbcHJvcE5hbWVdID09PSBudWxsIHx8IG9ialtwcm9wTmFtZV0gPT09IHVuZGVmaW5lZCB8fCBvYmpbcHJvcE5hbWVdID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgb2JqW3Byb3BOYW1lXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHJcblx0XHRyZXR1cm4gb2JqO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2FuaXRpemVzIHRoZSBzcGVjaWZpZWQgb2JqZWN0XHJcblx0ICogQHBhcmFtIG9iaiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2FuaXRpemVPYmplY3Qob2JqOiBhbnksIC4uLmlnbm9yZTogc3RyaW5nW10pOiBhbnkge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKG9iailcclxuXHRcdFx0LmZpbHRlcih4ID0+IG9ialt4XSlcclxuXHRcdFx0LmZpbHRlcih4ID0+ICEoaWdub3JlIHx8IFtdKS5tYXAoeCA9PiB4LnRvTG93ZXJDYXNlKCkpLmluY2x1ZGVzKHgudG9Mb3dlckNhc2UoKSkpXHJcblx0XHRcdC5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBpc05hTigrb2JqW2tleV0pID8gb2JqW2tleV0gOiArb2JqW2tleV07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdFx0fSwge30pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSB1c2VyIHNlbGVjZXRlZCBhbnkgdGV4dCBpbiB0aGUgZG9jdW1lbnRcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaXNUZXh0U2VsZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiB3aW5kb3c/LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpPy5sZW5ndGggPiAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyXHJcblx0ICogd2hlbiB0aGUgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHgudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG59Il19
669
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFRLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBeUMsTUFBTSxFQUErQixNQUFNLGlCQUFpQixDQUFDO0FBQzdILE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdD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Ozs7T0FHRztJQUNPLGNBQWMsR0FBRyxHQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUV6Rjs7O09BR0c7SUFDSCxXQUFXO1FBQ1YsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7MEhBbnRCb0IsYUFBYTs4R0FBYixhQUFhLHVMQTRMcEIsaUJBQWlCLDJCQUFVLFVBQVUsNkRBTXJDLGlCQUFpQjs7MkZBbE1WLGFBQWE7a0JBRGxDLFNBQVM7bUhBOENGLDJCQUEyQjtzQkFEakMsS0FBSztnQkE2R0MsTUFBTTtzQkFEWixNQUFNO2dCQXFDRyxpQ0FBaUM7c0JBRDFDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQU8zQywwQkFBMEI7c0JBRG5DLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVHlwZSwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFNjcm9sbCwgVXJsU2VnbWVudCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29udGV4dEhlbHBlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgQXBwU2V0dGluZyB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYXBwLXNldHRpbmcnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9zZXJ2aWNlLWxvY2F0b3InO1xyXG5pbXBvcnQgeyBWZERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kaWFsb2dzL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21lbnUvbW9kZWxzL21lbnUnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgR2xvYmFsUm9sZXMgfSBmcm9tICcuLi9jb25zdGFudHMvZ2xvYmFsLXJvbGVzJztcclxuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9hdXRoLWhlbHBlcic7XHJcbmltcG9ydCB7IElCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pYmFzZS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoVXNlciB9IGZyb20gJy4uL21vZGVscy9hdXRoLXVzZXInO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUJhc2VDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblx0LyoqXHJcblx0ICogQXBwIHNldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIGFwcFNldHRpbmc6IEFwcFNldHRpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNldHRpbmdzOiBBbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBNZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIG1lbnU6IE1lbnU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0XHJcblx0ICovXHJcblx0cHVibGljIHByb2plY3ROYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBwYWdlXHJcblx0ICovXHJcblx0cHVibGljIHRpdGxlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdWJ0aXRsZSBvZiB0aGUgY3VycmVudCBvdXRsZXRcclxuXHQgKi9cclxuXHRwdWJsaWMgc3VidGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCB1c2Ugc29tZSBkdW1teSBkYXRhIGFuZCBzaG93IGRlYnVnIGxvZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVidWc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlx0IFxyXG5cdCAqIExvYWRpbmcgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzOiBib29sZWFuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogU2F2aW5nIHN0YXR1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBfaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgZ2V0IGlzU2F2aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNTYXZpbmcgfHwgdGhpcy5pc0xvYWRpbmc7IH1cclxuXHRwdWJsaWMgc2V0IGlzU2F2aW5nKGlzU2F2aW5nOiBib29sZWFuKSB7IHRoaXMuaXNMb2FkaW5nID0gdGhpcy5faXNTYXZpbmcgPSBpc1NhdmluZzsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZsYWcgZWluZGljYXRlcyB0aGF0IHRoZSBlZGl0b3IgaXMgaW5pdGVkXHJcblx0ICovXHJcblx0cHVibGljIGlzRWRpdG9ySW5pdGlhbHplZDogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogUmVwcmVzZW50cyB0aGUgcmVxdWVzdCBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogVXNlZCB0byBldmFsdWF0ZSB3aGV0aGVyIGEgZ2l2ZW4gbWVkaWEgcXVlcnkgaXMgdHJ1ZSBvciBmYWxzZSBnaXZlbiB0aGUgY3VycmVudCBkZXZpY2UncyBzY3JlZW4gLyB3aW5kb3cgc2l6ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgbWVkaWE6IFZkTWVkaWFTZXJ2aWNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBbGxvd2VkIGZpbGUgZXh0ZW5zaW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBhbGxvd2VkRXh0ZW5zaW9uczogc3RyaW5nW10gPSBDb21tb24uYWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRpbnlNQ0UgcGx1Z2luc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JQbHVnaW5zOiBzdHJpbmcgPSBDb21tb24uZWRpdG9yUGx1Z2lucztcclxuXHJcblx0LyoqXHJcblx0ICogdGlueU1DRSBlZGl0b3JcclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yVG9vbGJhcjogc3RyaW5nID0gQ29tbW9uLmVkaXRvclRvb2xiYXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEVkaXRvciBjb25maWd1cmF0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvckNvbmZpZzogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb3ZpZGVzIHRoZSBuYXZpZ2F0aW9uIGFuZCB1cmwgbWFuaXB1bGF0aW9uIGNhcGFiaWxpdGllcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVyOiBSb3V0ZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHVybEhhc2g6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cmxIYXNoOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBDbGFzcyBuYW1lXHJcblx0ICovXHJcblx0cHVibGljIGNsYXNzTmFtZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGUgcGVybWlzc2lvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjYW5DcmVhdGU6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZSBwZXJtaXNzaW9uXHJcblx0ICovXHJcblx0cHVibGljIGNhblVwZGF0ZTogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCByb3V0ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjdXJyZW50Um91dGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBiYXNlIHJvdXRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRCYXNlUm91dGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQSB1cmwgdG8gcmV0dXJuIHRvIGFmdGVyIHNhdmVcclxuXHQgKi9cclxuXHRwdWJsaWMgcmV0dXJuVXJsOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgdXNlciBvYmplY3RcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudFVzZXI6IEF1dGhVc2VyID0gQXV0aEhlbHBlci51c2VyO1xyXG5cclxuXHQvKipcclxuXHQgKiBJcyB0aGUgY3VycmVudCB1c2VyIGEgY2xpZW50IGFkbWluXHJcblx0ICovXHJcblx0cHVibGljIGlzQWRtaW4gPSBBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuQWRtaW5pc3RyYXRvcik7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElzIHRoZSBjdXJyZW50IHVzZXIgYSBjbGllbnQgYWRtaW5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNDbGllbnRBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5DbGllbnRBZG1pbmlzdHJhdG9yKTtcclxuXHJcblx0LyoqXHJcblx0ICogSXMgdGhlIGN1cnJlbnQgdXNlciBhIGRlcGFydG1lbnQgYWRtaW5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNEZXBhcnRtZW50QWRtaW4gPSBBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuRGVwYXJ0bWVudEFkbWluaXN0cmF0b3IpO1xyXG5cclxuXHQvKipcclxuXHQgKiByZWxvYWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyByZWxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGdldCBhbmQgc2V0IHRoZSB0aXRsZSBvZiBhIGN1cnJlbnQgSFRNTCBkb2N1bWVudC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgdGl0bGVTZXJ2aWNlOiBUaXRsZTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIGRpc3BhdGNoIE1hdGVyaWFsIERlc2lnbiBzbmFjayBiYXIgbWVzc2FnZXMuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNuYWNrQmFyU2VydmljZTogTWF0U25hY2tCYXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc2VydmljZSB0byBzaG93IGNvbmlybSBhbmQgcHJvbXB0IGRpYWxvZ3MuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IFZkRGlhbG9nU2VydmljZTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIHNob3cgY29uaXJtIGFuZCBwcm9tcHQgZGlhbG9ncy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2c7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxvY2F0aW9uOiBMb2NhdGlvblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBsb2NhdGlvbjogTG9jYXRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNldCB1cmwgaGFzaFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRVcmxIYXNoOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogTWF0RXhwYW5zaW9uUGFuZWwgcmVmXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbihNYXRFeHBhbnNpb25QYW5lbCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcblx0cHJvdGVjdGVkIG1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuXHQvKipcclxuXHQgKiBNYXRFeHBhbnNpb25QYW5lbCByZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKE1hdEV4cGFuc2lvblBhbmVsKVxyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdDogUXVlcnlMaXN0PE1hdEV4cGFuc2lvblBhbmVsPjtcclxuXHJcblx0LyoqXHJcblx0ICogbWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBtYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy50aXRsZVNlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoVGl0bGUpO1xyXG5cdFx0dGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKFZkRGlhbG9nU2VydmljZSk7XHJcblx0XHR0aGlzLmRpYWxvZyA9IHRoaXMuZ2V0U2VydmljZShNYXREaWFsb2cpO1xyXG5cdFx0dGhpcy5tZWRpYSA9IHRoaXMuZ2V0U2VydmljZShWZE1lZGlhU2VydmljZSk7XHJcblx0XHR0aGlzLnNuYWNrQmFyU2VydmljZSA9IHRoaXMuZ2V0U2VydmljZShNYXRTbmFja0Jhcik7XHJcblx0XHR0aGlzLnJvdXRlciA9IHRoaXMuZ2V0U2VydmljZShSb3V0ZXIpO1xyXG5cdFx0dGhpcy5hcHBTZXR0aW5nID0gdGhpcy5nZXRTZXJ2aWNlKEFwcFNldHRpbmcpO1xyXG5cdFx0dGhpcy5sb2NhdGlvbiA9IHRoaXMuZ2V0U2VydmljZShMb2NhdGlvbik7XHJcblxyXG5cdFx0Q29udGV4dEhlbHBlci5hY3RpdmF0ZWRSb3V0ZSA9IHJvdXRlO1xyXG5cdFx0Q29udGV4dEhlbHBlci5yb3V0ZXIgPSB0aGlzLnJvdXRlcjtcclxuXHRcdENvbnRleHRIZWxwZXIuYXBwU2V0dGluZyA9IHRoaXMuYXBwU2V0dGluZztcclxuXHJcblx0XHR0aGlzLmluaXRFZGl0b3IoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHQvKiBHZXQgbWVudSBpdGVtcyBmcm9tIHJvdXRlIHNuYXBzaG90ICovXHJcblx0XHR2YXIgbWFpblJvdXRlID0gdGhpcy5nZXRNYWluUm91dGUodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XHJcblx0XHRpZiAobWFpblJvdXRlKSB7XHJcblx0XHRcdHRoaXMubWVudSA9IG1haW5Sb3V0ZS5kYXRhLm1lbnU7XHJcblx0XHRcdHRoaXMuc2V0VGl0bGVzKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IHByb2plY3QgbmFtZSAmIGRlYnVnIG1vZGUgKi9cclxuXHRcdHRoaXMucHJvamVjdE5hbWUgPSB0aGlzLmFwcFNldHRpbmcucHJvamVjdE5hbWU7XHJcblx0XHR0aGlzLmRlYnVnID0gdGhpcy5hcHBTZXR0aW5nLmRlYnVnO1xyXG5cclxuXHRcdC8qIEdldCB0aGUgaGFzaCBmcm9tIHRoZSB1cmwgKi9cclxuXHRcdHRoaXMucm91dGUuZnJhZ21lbnQuc3Vic2NyaWJlKChmcmFnbWVudDogc3RyaW5nKSA9PiB0aGlzLnVybEhhc2ggPSBmcmFnbWVudCk7XHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiBDaGVjayBwZXJtaXNzaW9uc1xyXG5cdFx0ICovXHJcblx0XHRpZiAodGhpcy5yb3V0ZS5wYXJlbnQpIHtcclxuXHRcdFx0dGhpcy5yb3V0ZS5wYXJlbnQudXJsLnN1YnNjcmliZSgodXJsOiBVcmxTZWdtZW50W10pID0+IHtcclxuXHRcdFx0XHR0aGlzLmNsYXNzTmFtZSA/Pz0gdXJsLmxlbmd0aCA/IHVybFswXS5wYXRoLnJlcGxhY2UoLyguKilzJC8sICckMScpLnJlcGxhY2UoL14uLywgKHVybFswXS5wYXRoWzBdIHx8ICcnKS50b1VwcGVyQ2FzZSgpKSA6ICcnO1xyXG5cdFx0XHRcdHRoaXMuY2FuQ3JlYXRlID0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZCgnQ3JlYXRlJywgYENyZWF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdVcGRhdGUnLCBgVXBkYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IGN1cnJlbnQgcm91dGUgKi9cclxuXHRcdHRoaXMuY3VycmVudFJvdXRlID0gd2luZG93LmJ0b2EodGhpcy5yb3V0ZXIudXJsKTtcclxuXHRcdHRoaXMuY3VycmVudEJhc2VSb3V0ZSA9IHRoaXMucm91dGVyLnVybD8uc3BsaXQoJz8nKVswXT8uc3BsaXQoJzsnKVswXTtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIFNldCBwYWdlIHRpdGxlXHJcblx0XHQgKi9cclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdGxldCBuYXZpZ2F0aW9uRW5kID0gKHggYXMgU2Nyb2xsKT8ucm91dGVyRXZlbnQgYXMgTmF2aWdhdGlvbkVuZDtcclxuXHRcdFx0aWYgKG5hdmlnYXRpb25FbmQpIHtcclxuXHRcdFx0XHR0aGlzLnNldFRpdGxlcygpO1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudFJvdXRlID0gd2luZG93LmJ0b2EobmF2aWdhdGlvbkVuZC51cmwpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgdGhlIHJldHVybiB1cmwgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSh4ID0+IHRoaXMuc2V0UmV0dXJuVXJsKHgucmV0dXJuVXJsKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0LyogQnJvYWRjYXN0IHRvIGFsbCBsaXN0ZW5lciBvYnNlcnZhYmxlcyB3aGVuIGxvYWRpbmcgdGhlIHBhZ2UgKi9cclxuXHRcdHRoaXMubWVkaWEuYnJvYWRjYXN0KCk7XHJcblxyXG5cdFx0LyogU2V0IHRpdGxlcyAqL1xyXG5cdFx0dGhpcy5zZXRUaXRsZXMoKTtcclxuXHJcblx0XHQvKiBcclxuXHRcdCAqIEZvcmNlIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgc2luY2UgY2hhbmdlIGRldGVjdGlvbnMgXHJcblx0XHQgKiBoYXZlIGZpbmlzaGVkIHdoZW4gYG5nQWZ0ZXJWaWV3SW5pdGAgaXMgZXhlY3V0ZWRcclxuXHRcdCAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG5cdFx0LyogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlcyAqL1xyXG5cdFx0aWYgKHRoaXMuaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzKSB7XHJcblx0XHRcdHRoaXMub25FeHBhbnNpb25QYW5lbENoYW5nZXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlZnJlc2hzIHRoaXMgcGFnZS9jb21wb25lbnRcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVsb2FkUGFnZSgpOiB2b2lkIHtcclxuXHRcdGxldCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KS50aGVuKCgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoY3VycmVudFVybCwgeyByZXBsYWNlVXJsOiB0cnVlIH0pKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyBiYWNrIHRvIHJldHVybiB1cmxcclxuXHQgKi9cclxuXHRwdWJsaWMgbmF2aWdhdGVUb1JldHVyblVybCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJldHVyblVybCkge1xyXG5cdFx0XHRsZXQgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucmV0dXJuVXJsKTtcclxuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxUcmVlLnRvU3RyaW5nKCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogXHJcblx0ICogRm9yY2UgYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBzaW5jZSBjaGFuZ2UgZGV0ZWN0aW9ucyBcclxuXHQgKiBoYXZlIGZpbmlzaGVkIHdoZW4gYG5nQWZ0ZXJWaWV3SW5pdGAgaXMgZXhlY3V0ZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyByZXR1cm4gdXJsXHJcblx0ICogQHBhcmFtIHJldHVyblVybCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0UmV0dXJuVXJsKHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0cnkgeyB0aGlzLnJldHVyblVybCA9IHJldHVyblVybCA/IGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHJldHVyblVybCkpIDogbnVsbDsgfVxyXG5cdFx0Y2F0Y2ggKGVycm9yKSB7IH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpc3RlbiBmb3IgZXhwYW5zaW9uIHBhbmVsIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25FeHBhbnNpb25QYW5lbENoYW5nZXMoKTogdm9pZCB7XHJcblx0XHQvKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py5jaGFuZ2VzLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0LyogVW5zdWJzY3JpYmUgZnJvbSBvbGQgJ29wZW5lZCcgYW5kICdjbG9zZWQnIHN1YnNjcmlwdGlvbnMgKi9cclxuXHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHgudW5zdWJzY3JpYmUoKSk7XHJcblxyXG5cdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHRcdC8qIEdldCB0aGUgcGFuZWwgZW5kcyB3aXRoIHRoZSBJRCAnbmV3JyAqL1xyXG5cdFx0XHR2YXIgbmV3RXhwYW5zaW9uUGFuZWxJbmRleCA9IHRoaXMubWF0RXhwYW5zaW9uUGFuZWxFbGVtZW50UXVlcnlMaXN0Py50b0FycmF5KCk/LmZpbmRJbmRleCh4ID0+IHgubmF0aXZlRWxlbWVudD8uaWQ/LmVuZHNXaXRoKCcubmV3JykpO1xyXG5cdFx0XHRpZiAobmV3RXhwYW5zaW9uUGFuZWxJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0LyogQ2xvc2UgYWxsIHBhbmVscyAqL1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmZpcnN0Py5hY2NvcmRpb24/LmNsb3NlQWxsKCk7XHJcblxyXG5cdFx0XHRcdC8qIE9wZW4gdGhlIG5ldyBwYW5lbCAqL1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LnRvQXJyYXkoKVtuZXdFeHBhbnNpb25QYW5lbEluZGV4XT8ub3BlbigpO1xyXG5cclxuXHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBwYW5lbCB3aXRoIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBJRCAqL1xyXG5cdFx0XHRcdHRoaXMudXJsSGFzaD8uc3BsaXQoJy4nKVxyXG5cdFx0XHRcdFx0Py5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUsIGluZGV4KSA9PiBhY2N1bXVsYXRvci5jb25jYXQoKGluZGV4ID4gMCA/IChhY2N1bXVsYXRvci5zbGljZSgtMSkuam9pbignLicpICsgJy4nKSA6ICcnKSArIGN1cnJlbnRWYWx1ZSksIFtdKVxyXG5cdFx0XHRcdFx0Py5mb3JFYWNoKChoYXNoOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0dmFyIGV4cGFuc2lvblBhbmVsSW5kZXggPSB0aGlzLm1hdEV4cGFuc2lvblBhbmVsRWxlbWVudFF1ZXJ5TGlzdD8udG9BcnJheSgpPy5maW5kSW5kZXgoeCA9PiB4Lm5hdGl2ZUVsZW1lbnQuaWQgPT0gaGFzaCk7XHJcblx0XHRcdFx0XHRcdGlmIChleHBhbnNpb25QYW5lbEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0Py50b0FycmF5KClbZXhwYW5zaW9uUGFuZWxJbmRleF0/Lm9wZW4oKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIERldGVjdCBjaGFuZ2VzIGZvciBvcGVuZWQgcGFuZWxzICovXHJcblx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmZvckVhY2goeSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMucHVzaCh5Lm9wZW5lZC5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5zZXRVcmxIYXNoKSB7XHJcblx0XHRcdFx0XHRcdC8qIEdldCB0aGUgaWQgb2YgdGhlIGN1cnJlbnQgb3BlbmVkIHBhbmVsICovXHJcblx0XHRcdFx0XHRcdHZhciBjdXJyZW50UGFuZWxJZCA9IHlbJ192aWV3Q29udGFpbmVyUmVmJ10/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmlkO1xyXG5cclxuXHRcdFx0XHRcdFx0LyogSWYgdGhlIHBhbmVsIElEIGlzIHNldCwgc2V0IGl0IGFzIHVybCBzZWdtZW50IChoYXNoKSAqL1xyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudFBhbmVsSWQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBmcmFnbWVudDogY3VycmVudFBhbmVsSWQsIHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8qIE90aGVyd2lzZSByZW1vdmUgdGhlIHNlZ21lbnQgZnJvbSB0aGUgdXJsICovXHJcblx0XHRcdFx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0fSkpO1xyXG5cclxuXHRcdFx0XHQvKiBEZXRlY3QgY2hhbmdlcyBmb3IgY2xvc2VkIHBhbmVscyAqL1xyXG5cdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLnB1c2goeS5jbG9zZWQuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0VXJsSGFzaCkge1xyXG5cdFx0XHRcdFx0XHQvKiBHZXQgdGhlIGlkIG9mIHRoZSBjdXJyZW50IG9wZW5lZCBwYW5lbCAqL1xyXG5cdFx0XHRcdFx0XHR2YXIgY3VycmVudFBhbmVsSWRQYXJ0cyA9IHlbJ192aWV3Q29udGFpbmVyUmVmJ10/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmlkPy5zcGxpdCgnLicpO1xyXG5cclxuXHRcdFx0XHRcdFx0LyogSWYgdGhlIHBhbmVsIElEIGlzIHNldCwgc2V0IGl0IGFzIHVybCBzZWdtZW50IChoYXNoKSAqL1xyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudFBhbmVsSWRQYXJ0cy5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgZnJhZ21lbnQ6IGN1cnJlbnRQYW5lbElkUGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKSwgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHR9KSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogTm90aWZ5IGV4cGFuc2lvbiBwYW5lbCBsaXN0IGNoYW5nZXMgKi9cclxuXHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Qubm90aWZ5T25DaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2UgZnJvbSB0aGUgaW5qZWN0b3IgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRva2VuLlxyXG5cdCAqIElmIG5vdCBmb3VuZDpcclxuXHQgKiAtIFRocm93cyB7QGxpbmsgTm9Qcm92aWRlckVycm9yfSBpZiBubyBgbm90Rm91bmRWYWx1ZWAgdGhhdCBpcyBub3QgZXF1YWwgdG9cclxuXHQgKiBJbmplY3Rvci5USFJPV19JRl9OT1RfRk9VTkQgaXMgZ2l2ZW5cclxuXHQgKiAtIFJldHVybnMgdGhlIGBub3RGb3VuZFZhbHVlYCBvdGhlcndpc2VcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0U2VydmljZTxUPih0b2tlbjogVHlwZTxUPik6IFQge1xyXG5cdFx0cmV0dXJuIFNlcnZpY2VMb2NhdG9yLmdldFNlcnZpY2UodG9rZW4pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBiYXNlIHJvdXRlXHJcblx0ICogQHBhcmFtIHNuYXBzaG90IFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRNYWluUm91dGUoc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHtcclxuXHRcdGlmIChzbmFwc2hvdCAmJiAhc25hcHNob3QuZGF0YS5tZW51KSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmdldE1haW5Sb3V0ZShzbmFwc2hvdC5wYXJlbnQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBzbmFwc2hvdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gZGVsZXRlIGFuIGl0ZW0gXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dEZWxldGVJdGVtRGlhbG9nKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maXJtKHtcclxuXHRcdFx0bWVzc2FnZTogJGxvY2FsaXplYDpAQGRpYWxvZy5tZXNzYWdlLmRlbGV0ZS5vbmU6QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGl0ZW0/YCxcclxuXHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkaWFsb2cudGl0bGUuZGVsZXRlOkNvbmZpcm0gRGVsZXRlYCxcclxuXHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0fSkuYWZ0ZXJDbG9zZWQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGEgY29uZmlybSBkaWFsb2cgdG8gZGVsZXRlIG11bHRpcGxlIGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dEZWxldGVJdGVtc0RpYWxvZygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdG1lc3NhZ2U6ICRsb2NhbGl6ZWA6QEBkaWFsb2cubWVzc2FnZS5kZWxldGUubGlzdDpBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBpdGVtcz9gLFxyXG5cdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5kZWxldGU6Q29uZmlybSBEZWxldGVgLFxyXG5cdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAZGVsZXRlOkRlbGV0ZWAsXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBzZW5kIHNvbWUgZGF0YVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXlcclxuXHQgKiBAcGFyYW0gb2JzZXJ2YWJlIFRoZSBvYnNlcnZhYmxlIGluc3RhbmNlXHJcblx0ICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBBIHN1Y2Nlc3MgY2FsbGJhY2tcclxuXHQgKiBAcGFyYW0gZXJyb3JDYWxsYmFjayBBbiBlcnJvciBjYWxsYmFja1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzaG93Q29uZmlybWF0aW9uRGlhbG9nKG1lc3NhZ2U6IHN0cmluZywgb2JzZXJ2YWJlOiBPYnNlcnZhYmxlPGFueT4sIHN1Y2Nlc3NDYWxsYmFjazogRnVuY3Rpb24gPSBudWxsLCBlcnJvckNhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nU2VydmljZVxyXG5cdFx0XHQub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRcdG1lc3NhZ2U6IG1lc3NhZ2UsXHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkaWFsb2cudGl0bGUuY29uZmlybTpDb25maXJtYCxcclxuXHRcdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBvazpPa2AsXHJcblx0XHRcdH0pXHJcblx0XHRcdC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdFx0b2JzZXJ2YWJlLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zaG93TWVzc2FnZSgkbG9jYWxpemVgOkBAc25hY2tiYXIuc2VuZC5zdWNjZXNzOkRhdGEgc2VudCBzdWNjZXNzZnVsbHkuYCk7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzc0NhbGxiYWNrKHgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LCBlcnJvcnMgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdGlmIChlcnJvckNhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjayhlcnJvcnMpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIHRvIHRoZSBhZGQgcGFnZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgb3BlbkRpYWxvZzxULCBEID0gYW55PihkaWFsb2dUeXBlOiBUeXBlPFQ+LCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZzxEPiwgY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKGRpYWxvZ1R5cGUsIE9iamVjdC5hc3NpZ24oeyB3aWR0aDogJzY1MHB4JywgZGF0YToge30sIHBhbmVsQ2xhc3M6IFsnZGlhbG9nLWZ1bGwtc2NyZWVuJ10gfSwgY29uZmlnKSlcclxuXHRcdFx0LmFmdGVyQ2xvc2VkKClcclxuXHRcdFx0LnN1YnNjcmliZShfID0+IGNhbGxiYWNrKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBtZXNzYWdlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxyXG5cdCAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dNZXNzYWdlKG1lc3NhZ2U/OiBzdHJpbmcsIHR5cGU6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZVR5cGUuU3VjY2Vzcyk6IHZvaWQge1xyXG5cdFx0dmFyIHNuYWNrQmFyQ2xhc3MgPSAncHJpbWFyeSc7XHJcblx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5TdWNjZXNzOlxyXG5cdFx0XHRcdHNuYWNrQmFyQ2xhc3MgPSAncHJpbWFyeSc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLldhcm5pbmc6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICd3YXJuJztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuRXJyb3I6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICdlcnJvcic7XHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4obWVzc2FnZSB8fCAkbG9jYWxpemVgOkBAc25hY2tiYXIuc2VuZC5zdWNjZXNzOkRhdGEgc2VudCBzdWNjZXNzZnVsbHkuYCwgbnVsbCwge1xyXG5cdFx0XHRkdXJhdGlvbjogMzAwMCxcclxuXHRcdFx0cGFuZWxDbGFzczogW3NuYWNrQmFyQ2xhc3NdXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluaXRvYWxpemVzIHRoZSB0aW55bWNlIGVkaXRvclxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbml0RWRpdG9yKGVkaXRvckNvbmZpZzogYW55ID0ge30pIHtcclxuXHRcdE9iamVjdC5hc3NpZ24odGhpcy5lZGl0b3JDb25maWcsIHtcclxuXHRcdFx0c3VmZml4OiAnLm1pbicsXHJcblx0XHRcdHNraW46IGZhbHNlLFxyXG5cdFx0XHRoZWlnaHQ6ICcxNzBweCcsXHJcblx0XHRcdGNvbnRlbnRfY3NzOiBmYWxzZSxcclxuXHRcdFx0cGx1Z2luczogdGhpcy5lZGl0b3JQbHVnaW5zLFxyXG5cdFx0XHR0b29sYmFyOiB0aGlzLmVkaXRvclRvb2xiYXIsXHJcblx0XHRcdHBhc3RlX2FzX3RleHQ6IHRydWUsXHJcblx0XHRcdGxhbmd1YWdlOiAnZGUnLFxyXG5cdFx0XHRsYW5ndWFnZV91cmw6ICcvYXNzZXRzL3RpbnltY2UvbGFuZ3MvZGUuanMnLFxyXG5cdFx0XHRkb2N1bWVudF9iYXNlX3VybDogYCR7dGhpcy5hcHBTZXR0aW5nLmFwaVVybH1maWxlL2AsXHJcblx0XHRcdGF1dG9tYXRpY191cGxvYWRzOiB0cnVlLFxyXG5cdFx0XHRyZWxhdGl2ZV91cmxzOiB0cnVlLFxyXG5cdFx0XHRjb252ZXJ0X3VybHM6IGZhbHNlLFxyXG5cdFx0XHRleHRlbmRlZF92YWxpZF9lbGVtZW50czogJ3NwYW5baWR8Y2xhc3N8c3R5bGVdLCtAW2RhdGEtb3B0aW9uc10nLFxyXG5cdFx0XHRhbGxvd19odG1sX2luX25hbWVkX2FuY2hvcjogdHJ1ZVxyXG5cdFx0fSwgZWRpdG9yQ29uZmlnKTtcclxuXHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbHplZCA9IHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHN1YnRpdGxlIGZyb20gY3VycmVuIG1lbnVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0VGl0bGVzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubWVudSkge1xyXG5cclxuXHRcdFx0dGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5tZW51LnRpdGxlKTtcclxuXHRcdFx0dGhpcy50aXRsZSA9IHRoaXMudGl0bGVTZXJ2aWNlLmdldFRpdGxlKCk7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMubWVudS5pdGVtcykge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogR2V0IHN1YnRpdGxlIGZyb20gdXJsIHBhcmFtcyAqL1xyXG5cdFx0XHR2YXIgc3VidGl0bGUgPSB0aGlzLnJvdXRlPy5zbmFwc2hvdD8ucGFyYW1NYXA/LmdldCgnc3VidGl0bGUnKTtcclxuXHRcdFx0aWYgKHN1YnRpdGxlKSB7XHJcblx0XHRcdFx0dHJ5IHsgdGhpcy5zdWJ0aXRsZSA9IHdpbmRvdy5hdG9iKHN1YnRpdGxlKTsgfVxyXG5cdFx0XHRcdGNhdGNoIChlKSB7IHRoaXMuc3VidGl0bGUgPSBzdWJ0aXRsZTsgfVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIEdldCBjdXJyZW50IHJvdXRlICovXHJcblx0XHRcdFx0bGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdPy5zcGxpdCgnOycpWzBdO1xyXG5cclxuXHRcdFx0XHQvKiBBcHBlbmQgYSB0cmFpbGluZyBzbGFzaCBpZiB0aGUgcm91dGUgZG9lc24ndCBlbmQgd2l0aCBvbmUgKi9cclxuXHRcdFx0XHRjdXJyZW50Um91dGUgPSBjdXJyZW50Um91dGUuZW5kc1dpdGgoJy8nKSA/IGN1cnJlbnRSb3V0ZSA6IGN1cnJlbnRSb3V0ZSArICcvJztcclxuXHJcblx0XHRcdFx0LyogRmlsdGVyIHRoZSBtZW51IGl0ZW1zIGJhc2VkIG9uIHRoZSBtb2RpZmllZCByb3V0ZSBwYXRoICovXHJcblx0XHRcdFx0dmFyIHN1Ym1lbnUgPSB0aGlzLm1lbnUuaXRlbXMuZmlsdGVyKHggPT4geC5wYXRoID09IGN1cnJlbnRSb3V0ZSlbMF07XHJcblx0XHRcdFx0aWYgKHN1Ym1lbnUpIHtcclxuXHRcdFx0XHRcdHRoaXMuc3VidGl0bGUgPSBzdWJtZW51LnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFycmF5IG9mIGNvbW1hbmRzIGFuZCBhIHN0YXJ0aW5nIHBvaW50LlxyXG5cdCAqIEBwYXJhbSBjb21tYW5kcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHM6IGFueVtdLCBxdWVyeVBhcmFtcz86IGFueSwgZnJhZ21lbnQ/OiBzdHJpbmcsIHByZXNlcnZlRnJhZ21lbnQ/OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xyXG5cdFx0XHRxdWVyeVBhcmFtczogT2JqZWN0LmFzc2lnbih7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSwgcXVlcnlQYXJhbXMgfHwge30pLFxyXG5cdFx0XHRmcmFnbWVudDogZnJhZ21lbnQsXHJcblx0XHRcdHByZXNlcnZlRnJhZ21lbnQ6IHByZXNlcnZlRnJhZ21lbnQsXHJcblx0XHRcdHJlbGF0aXZlVG86IHRoaXMucm91dGVcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29udmVydCBPYmplY3QgdG8gSHR0cEhlYWRlcnNcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gYm9keVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0b0h0dHBIZWFkZXJzKGJvZHk6IE9iamVjdCk6IEh0dHBIZWFkZXJzIHtcclxuXHRcdGlmICghYm9keSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJvZHkpXHJcblx0XHRcdC5maWx0ZXIoa2V5ID0+IGJvZHlba2V5XSAhPSBudWxsICYmIGJvZHlba2V5XSAhPSAnJylcclxuXHRcdFx0LnJlZHVjZSgocCwga2V5KSA9PiBwLnNldChrZXksIGJvZHlba2V5XSksIG5ldyBIdHRwSGVhZGVycygpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlcyBodHRwIHJlc3BvbnNlIGVycm9yc1xyXG5cdCAqIEBwYXJhbSBlcnJvcnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHBhcnNlRXJyb3JzKGVycm9yczogT2JqZWN0KTogdm9pZCB7XHJcblx0XHR0aGlzLmVycm9ycyA9IFtdO1xyXG5cdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRpZiAoZXJyb3JzKSB7XHJcblx0XHRcdE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChlbCA9PiB7XHJcblx0XHRcdFx0bGV0IGVycm9yID0gZXJyb3JzW2VsXTtcclxuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShlcnJvcikpIHtcclxuXHRcdFx0XHRcdGVycm9yLmZvckVhY2goZXJyID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5lcnJvcnMucHVzaChlcnIpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuZXJyb3JzLnB1c2goZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGUgSHR0cCBvcGVyYXRpb24gdGhhdCBmYWlsZWQuXHJcblx0ICogTGV0IHRoZSBhcHAgY29udGludWUuXHJcblx0ICogQHBhcmFtIG9wZXJhdGlvbiAtIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0aGF0IGZhaWxlZFxyXG5cdCAqIEBwYXJhbSByZXN1bHQgLSBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gYXMgdGhlIG9ic2VydmFibGUgcmVzdWx0XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGhhbmRsZUVycm9yPFQ+KG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLCByZXN1bHQ/OiBUKSB7XHJcblx0XHRyZXR1cm4gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuXHJcblx0XHRcdC8qIFBhcnNlIHRoZSBlcnJvciBtZXNzYWdlcyAqL1xyXG5cdFx0XHR0aGlzLnBhcnNlRXJyb3JzKGVycm9yKTtcclxuXHJcblx0XHRcdC8qIExvZyB0byBjb25zb2xlICovXHJcblx0XHRcdHRoaXMud2FybihgJHtvcGVyYXRpb259IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWApO1xyXG5cclxuXHRcdFx0LyogTGV0IHRoZSBhcHAga2VlcCBydW5uaW5nIGJ5IHJldHVybmluZyBhbiBlbXB0eSByZXN1bHQgKi9cclxuXHRcdFx0cmV0dXJuIG9mKHJlc3VsdCBhcyBUKTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbG9nKG1lc3NhZ2U6IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcblx0XHRpZiAodGhpcy5kZWJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgd2FybihtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG5cdFx0aWYgKHRoaXMuZGVidWcpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFucyB0aGUgb2JqZWN0c1xyXG5cdCAqIFJlbW92ZXMgZW1wdHkgcHJvcGVydGllc1xyXG5cdCAqIEBwYXJhbSBvYmogXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNsZWFuKG9iajogYW55KTogYW55IHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGZvciAodmFyIHByb3BOYW1lIGluIG9iaikge1xyXG5cdFx0XHRcdGlmIChvYmpbcHJvcE5hbWVdID09PSBudWxsIHx8IG9ialtwcm9wTmFtZV0gPT09IHVuZGVmaW5lZCB8fCBvYmpbcHJvcE5hbWVdID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgb2JqW3Byb3BOYW1lXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHJcblx0XHRyZXR1cm4gb2JqO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2FuaXRpemVzIHRoZSBzcGVjaWZpZWQgb2JqZWN0XHJcblx0ICogQHBhcmFtIG9iaiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2FuaXRpemVPYmplY3Qob2JqOiBhbnksIC4uLmlnbm9yZTogc3RyaW5nW10pOiBhbnkge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKG9iailcclxuXHRcdFx0LmZpbHRlcih4ID0+IG9ialt4XSlcclxuXHRcdFx0LmZpbHRlcih4ID0+ICEoaWdub3JlIHx8IFtdKS5tYXAoeCA9PiB4LnRvTG93ZXJDYXNlKCkpLmluY2x1ZGVzKHgudG9Mb3dlckNhc2UoKSkpXHJcblx0XHRcdC5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBpc05hTigrb2JqW2tleV0pID8gb2JqW2tleV0gOiArb2JqW2tleV07XHJcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdFx0fSwge30pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSB1c2VyIHNlbGVjZXRlZCBhbnkgdGV4dCBpbiB0aGUgZG9jdW1lbnRcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaXNUZXh0U2VsZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiB3aW5kb3c/LmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpPy5sZW5ndGggPiAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyXHJcblx0ICogd2hlbiB0aGUgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCh4ID0+IHgudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG59Il19
@@ -25,10 +25,6 @@ export class GenericListComponent extends BaseComponent {
25
25
  route;
26
26
  changeDetectorRef;
27
27
  classType;
28
- /**
29
- * List title
30
- */
31
- subtitle = '';
32
28
  /**
33
29
  * A reference to MdPaginator element
34
30
  */
@@ -752,4 +748,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
752
748
  type: HostListener,
753
749
  args: ['document:keydown', ['$event']]
754
750
  }] } });
755
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFB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Z0JBQzNCLEtBQUssVUFBVTtvQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUMxQixNQUFNO2FBQ1A7U0FDRDtJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1YsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMxQztJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxDQUFDOzBIQTl6QnhDLG9CQUFvQjs4R0FBcEIsb0JBQW9CLHVMQVM5QixZQUFZLHFGQU1aLE9BQU8sNkZBd0RQLHVCQUF1Qjs7MkZBdkViLG9CQUFvQjtrQkFEekMsU0FBUzs2SkFXRixTQUFTO3NCQURmLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPbEMsSUFBSTtzQkFEVixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBeUQ3QixZQUFZO3NCQURsQixTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFxRjdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBNG5CTixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHMnO1xyXG5pbXBvcnQgeyBBcHBTdG9yYWdlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2hlbHBlcnMvYXBwLXN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9hY3Rpb24taXRlbSc7XHJcbmltcG9ydCB7IElFbnRpdHkgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2VudGl0eSc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaHR0cC9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RhYmxlL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL3RhYmxlL2VudW1zL3RhYmxlLWNvbHVtbi10eXBlJztcclxuaW1wb3J0IHsgZ2V0VGFibGVEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vdGFibGUvZnVuY3Rpb25zL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vdGFibGUvbW9kZWxzL3RhYmxlLWNvbHVtbic7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vLi4vdGFibGUvbW9kZWxzL3RhYmxlLWNvbHVtbi1jb25maWcnO1xyXG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZSc7XHJcbmltcG9ydCB7IEF1dGhIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2F1dGgtaGVscGVyJztcclxuaW1wb3J0IHsgSUdlbmVyaWNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZ2VuZXJpYy1saXN0LWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb25maWdEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtdGFibGUtY29uZmlnLWRpYWxvZy5jb21ucG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBIGJhc2UgbGlzdCBjb21wb25lbnQgZm9yIGNvbXBvbmVudHMgd2l0aCBwYWdpbmF0aW9uIHN1cHBvcnRcclxuICovXHJcbi8vIEBkeW5hbWljXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY0xpc3RDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHkgfCBhbnksIFRTZXJ2aWNlIGV4dGVuZHMgR2VuZXJpY1NlcnZpY2U8VEVudGl0eT4+IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5PiwgT25EZXN0cm95IHtcclxuXHQvKipcclxuXHQgKiBMaXN0IHRpdGxlXHJcblx0ICovXHJcblx0cHVibGljIHN1YnRpdGxlOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gTWRQYWdpbmF0b3IgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gTWRTb3J0IGF0dHJpYnV0ZVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgc29ydDogTWF0U29ydDtcclxuXHJcblx0LyoqXHJcblx0ICogUGFnZSBzaXplIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAxNSwgMjAsIDMwLCA1MCwgMTAwLCAyMDBdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmF2aWdhdGlvbnMgdG8gaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaW5jbHVkZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW11cclxuXHQgKi9cclxuXHRwdWJsaWMgcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hdmlnYXRpb25zIHRvIGluY2x1ZGVzXHJcblx0ICovXHJcblx0cHVibGljIGV4Y2x1ZGVkQ29sdW1uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgcGFyYW1zXHJcblx0ICovXHJcblx0cHVibGljIHF1ZXJ5OiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogRGF0YS10YWJsZSBkYXRhc291cmNlXHJcblx0ICovXHJcblx0cHVibGljIGRhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBUU2VydmljZT4gfCBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgY29sdW1uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnRBY3RpdmU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBzb3J0IGRpcmVjdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBBbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgdG8gY3JlYXRlIHRoZSB0YWJsZSBmb3JcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NJbnN0YW5jZTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBjb2x1bW5zOiBUYWJsZUNvbHVtbltdIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kU29ydCBhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKFZkRHluYW1pY1RhYmxlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBkeW5hbWljVGFibGU6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdHlwZSBvZiB0aGUgZGlhbG9nIGZvciBjcmVhdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGREaWFsb2dUeXBlOiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyB0aGUgY29sdW1uICdDaGVja2JveCdcclxuXHQgKi9cclxuXHRwdWJsaWMgc2VsZWN0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIGJ1dHRvbiAnQWRkJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRWRpdCdcclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEZWxldGUnXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0Rvd25sb2FkJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRHVwbGljYXRlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkdXBsaWNhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0NvbmZpZ3VyZSB0YWJsZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogcm93TmdDbGFzczogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm93TmdDbGFzczogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiByb3dDbGljazogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm93Q2xpY2s6ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogZWRpdFJvdXRlOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvbkVkaXQ6ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogZGV0YWlsc1RlbXBsYXRlOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZXRhaWxzVGVtcGxhdGU6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRvb2xiYXJBY3Rpb25zOiBBY3Rpb25JdGVtW11cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFt7XHJcblx0XHRpY29uOiAnc3luYycsXHJcblx0XHRldmVudDogKCkgPT4gdGhpcy5sb2FkTGlzdCgpXHJcblx0fV07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRvb2xiYXIgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyTWVudUl0ZW1zOiBBY3Rpb25JdGVtPFRFbnRpdHk+W10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGFibGUgcm93IG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgcm93TWVudUl0ZW1zOiBBY3Rpb25JdGVtPFRFbnRpdHk+W10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBhIGJhY2sgYnV0dG9uIHRvIHRoZSB0b29sYmFyXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYmFja0J1dHRvbjogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogRGF0YUxvYWRlZCBldmVudCBzdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGF0YUxvYWRlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5IGZvciBjb25maWdzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNvbmZpZ3NLZXk6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBsaXN0Q29uZmlnOiB7Y29uZmlnczogYW55LCBxdWVyeTogYW55fVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBsaXN0Q29uZmlnOiB7IGNvbmZpZ3M6IFRhYmxlQ29sdW1uQ29uZmlnW10sIHF1ZXJ5OiBhbnkgfSA9IHsgY29uZmlnczogW10sIHF1ZXJ5OiB7IHBhZ2VTaXplOiAxNSB9IH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIHNlcnZpY2UgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgc2VydmljZTogVFNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG5cdFx0cHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHB1YmxpYyBjbGFzc1R5cGU/OiB7IG5ldygpOiBURW50aXR5IH1cclxuXHQpIHtcclxuXHRcdHN1cGVyKHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkluaXQoKTtcclxuXHJcblx0XHQvKiBBc3NlbWJsZSB0aGUgY29uZmlnIGtleSAqL1xyXG5cdFx0dGhpcy5jb25maWdzS2V5ID0gW3RoaXMucHJvamVjdE5hbWUsICdsaXN0LWNvbmZpZycsIGJ0b2EodGhpcy5jdXJyZW50QmFzZVJvdXRlKSwgdGhpcy5tZW51Py50aXRsZV0uam9pbignLicpO1xyXG5cclxuXHRcdC8qIExvYWQgbGlzdCBjb25maWdzICovXHJcblx0XHR0aGlzLmxpc3RDb25maWcgPSBBcHBTdG9yYWdlLmdldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCB7IGNvbmZpZ3M6IFtdLCBxdWVyeTogeyBwYWdlU2l6ZTogMTUgfSB9KTtcclxuXHJcblx0XHQvKiBTZXQgYmFjayBidXR0b24gZnJvbSByb3V0ZSBwYXJhbXMgKi9cclxuXHRcdHRoaXMuYmFja0J1dHRvbiA9IHRoaXMucm91dGU/LnNuYXBzaG90Py5wYXJhbU1hcD8uZ2V0KCdiYWNrQnV0dG9uJykgPT0gJ3RydWUnO1xyXG5cclxuXHRcdC8qIFJlYWQgc29tZSBwYXJhbXMgZnJvbSByb3V0aW5nIGRhdGEgKi9cclxuXHRcdHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIGRhdGEucXVlcnkgfHwge30pO1xyXG5cdFx0XHR0aGlzLmNsYXNzVHlwZSB8fD0gZGF0YS5jbGFzc1R5cGU7XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5jbGFzc05hbWUpIHtcclxuXHRcdFx0XHR0aGlzLmNsYXNzTmFtZSA9IGRhdGEuY2xhc3NOYW1lO1xyXG5cdFx0XHRcdHRoaXMuY2FuQ3JlYXRlID0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZCgnQ3JlYXRlJywgYENyZWF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdVcGRhdGUnLCBgVXBkYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuY29sdW1ucykge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IFsuLi4oZGF0YS5jb2x1bW5zIHx8IFtdKV07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmVuZHBvaW50KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gZGF0YS5lbmRwb2ludDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuaW5jbHVkZXMpIHtcclxuXHRcdFx0XHR0aGlzLmluY2x1ZGVzID0gZGF0YS5pbmNsdWRlcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSAmJiB4ICE9ICdjb2x1bW5zJykge1xyXG5cdFx0XHRcdFx0dGhpc1t4XSA9IGRhdGFbeF07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjb2x1bW5zIGZyb20gY2xhc3MgKi9cclxuXHRcdGlmICh0aGlzLmNsYXNzVHlwZSkge1xyXG5cdFx0XHR0aGlzLmNsYXNzSW5zdGFuY2UgPSBuZXcgdGhpcy5jbGFzc1R5cGUoKTtcclxuXHJcblx0XHRcdC8qIEdldCB0aGUgdGFibGUgZGVmaW5pdGlvbiB1c2luZyB0aGUgY2xhc3MgdHlwZSAqL1xyXG5cdFx0XHR2YXIgdGFibGVEZWZpbml0aW9uID0gZ2V0VGFibGVEZWZpbml0aW9uKHRoaXMuY2xhc3NUeXBlKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgcHJvcHMgaW4gdGhlIGN1cnJlbnQgb2JqZWN0IGZyb20gdGhlIHRhYmxlIGRlZmluaXRpb24gKi9cclxuXHRcdFx0T2JqZWN0LmtleXModGFibGVEZWZpbml0aW9uIHx8IHt9KS5mb3JFYWNoKHggPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmhhc093blByb3BlcnR5KHgpKSB7XHJcblx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzW3hdKSAmJiBBcnJheS5pc0FycmF5KHRhYmxlRGVmaW5pdGlvblt4XSkpIHtcclxuXHRcdFx0XHRcdFx0dGhpc1t4XSA9IHRhYmxlRGVmaW5pdGlvblt4XS5jb25jYXQodGhpc1t4XSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXNbeF0gPSB0YWJsZURlZmluaXRpb25beF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdC8qIFNldCBlbmRwb2ludCBmcm9tIHRhYmxlIGRlZmluaXRpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5lbmRwb2ludCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5lbmRwb2ludCA9IHRhYmxlRGVmaW5pdGlvbj8uZW5kcG9pbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIFNldCB0aGUgdGFibGUgY29sdW1ucyBmcm9tIHRoZSB0YWJsZSBkZWZpbnRpb24gKi9cclxuXHRcdFx0aWYgKHRhYmxlRGVmaW5pdGlvbj8uY29sdW1ucykge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IHRhYmxlRGVmaW5pdGlvbi5jb2x1bW5zLm1hcCh4ID0+IHsgcmV0dXJuIHsgLi4ueCB9IH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBIYW5kbGUgZXZlbnRzICovXHJcblx0XHRcdHRoaXMuY29sdW1ucz8uZm9yRWFjaCgoeDogVGFibGVDb2x1bW4pID0+IHtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHguZXZlbnQgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0XHRsZXQgZXZlbnROYW1lOiBzdHJpbmcgPSAoKHguZXZlbnQpIGFzIHN0cmluZyk7XHJcblx0XHRcdFx0XHR4LmV2ZW50ID0gKHJvdzogYW55KSA9PiAoeC5ldmVudEFyZ3MgPyB0aGlzW2V2ZW50TmFtZV0ocm93LCB4LmV2ZW50QXJncykgOiB0aGlzW2V2ZW50TmFtZV0ocm93KSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdC8qIEhpZGUgY29sdW1ucyB1c2luZyByb3V0ZSBkYXRhICovXHJcblx0XHRcdHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKCh4OiBUYWJsZUNvbHVtbikgPT4gIXguaGlkZSB8fCAheC5oaWRlKGRhdGEsIHRoaXMpKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogSGlkZSBleGNsdWRlZCBjb2x1bW5zICovXHJcblx0XHR0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+ICF0aGlzLmV4Y2x1ZGVkQ29sdW1ucz8uaW5jbHVkZXMoeC5uYW1lKSk7XHJcblxyXG5cdFx0LyogQWRkIGxpc3QgbW5ldSBpdGVtcyAqL1xyXG5cdFx0dGhpcy5hZGRUb29sYmFyTWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZHluYW1pY1RhYmxlKSB7XHJcblx0XHRcdC8qIEFkZCBtZW51IGl0ZW1zIGZvciBlYWNoIHJvdyAqL1xyXG5cdFx0XHR0aGlzLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlIGFjdGlvbiBjb2x1bW4gYWxyZWFkeSBleGlzdHMgKi9cclxuXHRcdFx0dmFyIGFjdGlvbkNvbG11biA9ICh0aGlzLmNvbHVtbnMgYXMgVGFibGVDb2x1bW5bXSk/LmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGlvbicpO1xyXG5cclxuXHRcdFx0LyogSWYgc28sIGp1c3QgYWRkIHRoZSBtZW51IGl0ZW1zIHRvIGl0ICovXHJcblx0XHRcdGlmIChhY3Rpb25Db2xtdW4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMgPSBhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zIHx8IFtdO1xyXG5cdFx0XHRcdHRoaXMucm93TWVudUl0ZW1zLmZvckVhY2goeSA9PiBhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zLnVuc2hpZnQoeSkpO1xyXG5cclxuXHRcdFx0XHQvKiBDcmVhdGUgYSB0YWJsZSBtZW51ICovXHJcblx0XHRcdFx0YWN0aW9uQ29sbXVuLm1lbnUgPSBuZXcgQWN0aW9uSXRlbSh7XHJcblx0XHRcdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0XHRcdGl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtc1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBPdGhlcndpc2UgYWRkIGEgbmV3IG9uZSAqL1xyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMucHVzaChuZXcgVGFibGVDb2x1bW4oe1xyXG5cdFx0XHRcdFx0aW5kZXg6IDIwMDAsXHJcblx0XHRcdFx0XHRuYW1lOiAnYWN0aW9uJyxcclxuXHRcdFx0XHRcdHR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BY3Rpb24sXHJcblx0XHRcdFx0XHRkaXNhYmxlZDogdHJ1ZSxcclxuXHRcdFx0XHRcdG1lbnU6IG5ldyBBY3Rpb25JdGVtKHtcclxuXHRcdFx0XHRcdFx0aWNvbjogJ21vcmVfdmVydCcsXHJcblx0XHRcdFx0XHRcdGl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtc1xyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRyb3dNZW51SXRlbXM6IHRoaXMucm93TWVudUl0ZW1zLFxyXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogR2V0IGN1c3RvbSBhY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHR2YXIgYWN0aW9ucyA9IHRhYmxlRGVmaW5pdGlvbj8uYWN0aW9ucztcclxuXHRcdFx0aWYgKGFjdGlvbnMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdGFjdGlvbnMuZm9yRWFjaCh5ID0+IHRoaXMucm93TWVudUl0ZW1zPy5wdXNoKHkpKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy51cGRhdGVDb2x1bW5zKHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBxdWVyeSBwYXJhbXMgaW50byBxdWVyeSBvYmplY3QgKi9cclxuXHRcdHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHggPT4gT2JqZWN0LmFzc2lnbih0aGlzLnF1ZXJ5LCB4IHx8IHt9LCB7IHJldHVyblVybDogbnVsbCB9KSk7XHJcblxyXG5cdFx0LyogSW5pdGlsaWFsaXplIHRoZSBkYXRhIHNvdXJjZSB3aXRoIHRoZSBjdXJyZW50IHNlcnZpY2UsIHBhZ2luYXRvciBhbmQgc29ydCAqL1xyXG5cdFx0dGhpcy5zb3J0ID0gdGhpcy5keW5hbWljVGFibGU/Lm1hdFNvcnQgfHwgKHRoaXMuc29ydCA/IHRoaXMuc29ydCA6IG5ldyBNYXRTb3J0KCkpO1xyXG5cdFx0dGhpcy5kYXRhU291cmNlID0gbmV3IFRhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBUU2VydmljZT4odGhpcy5zZXJ2aWNlISwgdGhpcy5wYWdpbmF0b3IsIHRoaXMuc29ydCk7XHJcblxyXG5cdFx0LyogU2V0IGluY2x1ZGVzICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuaW5jbHVkZXMgPSB0aGlzLmluY2x1ZGVzO1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnByb2plY3Rpb24gPSB0aGlzLnByb2plY3Rpb247XHJcblxyXG5cdFx0LyogTG9hZCBxdWVyeSBmcm9tIGJyb3dzZXIgc3RvcmFnZSAqL1xyXG5cdFx0dmFyIHN0b3JyZWRRdWVyeSA9IHRoaXMubGlzdENvbmZpZz8ucXVlcnk7XHJcblx0XHRpZiAoc3RvcnJlZFF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMgPSB0aGlzLmNsZWFuKHN0b3JyZWRRdWVyeS5maWVsZEZpbHRlcnMpIHx8IHt9O1xyXG5cdFx0XHR0aGlzLnNvcnRBY3RpdmUgPSBzdG9ycmVkUXVlcnkuc29ydEJ5O1xyXG5cdFx0XHR0aGlzLnNvcnREaXJlY3Rpb24gPSBzdG9ycmVkUXVlcnkuc29ydERpcmVjdGlvbjtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnBhZ2VTaXplID0gc3RvcnJlZFF1ZXJ5LnBhZ2VTaXplO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZUluZGV4ID0gc3RvcnJlZFF1ZXJ5LnBhZ2VJbmRleDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgc29tZSBmaWx0ZXIgZnJvbSByb3V0ZXIgKi9cclxuXHRcdGlmICh0aGlzLnF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5zdGF0aWNGaWVsZEZpbHRlcnMgPSB0aGlzLnF1ZXJ5O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFJlbWVtYmVyIHRoZSBmaWx0ZXJzICovXHJcblx0XHR0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFTb3VyY2Uub25EYXRhTG9hZGVkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQpIHtcclxuXHRcdFx0XHR0aGlzLmxpc3RDb25maWcgPz89IHsgY29uZmlnczogW10sIHF1ZXJ5OiB7fSB9O1xyXG5cdFx0XHRcdHRoaXMubGlzdENvbmZpZy5xdWVyeSA9IHtcclxuXHRcdFx0XHRcdGZpZWxkRmlsdGVyczogdGhpcy5kYXRhU291cmNlLmZpZWxkRmlsdGVycyxcclxuXHRcdFx0XHRcdHNvcnRCeTogdGhpcy5zb3J0LmFjdGl2ZSxcclxuXHRcdFx0XHRcdHNvcnREaXJlY3Rpb246IHRoaXMuc29ydC5kaXJlY3Rpb24sXHJcblx0XHRcdFx0XHRwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcblx0XHRcdFx0XHRwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvKiBTYXZlIHRoZSBzZXR0aW5ncyAqL1xyXG5cdFx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMubGlzdENvbmZpZyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29ubmVjdHMgYSBjb2xsZWN0aW9uIHZpZXdlciAoc3VjaCBhcyBhIGRhdGEtdGFibGUpIHRvIHRoZSBkYXRhIHNvdXJjZS4gXHJcblx0ICogQHBhcmFtIHN0YXRpY0ZpZWxkRmlsdGVycyBcclxuXHQgKi9cclxuXHRwdWJsaWMgY29ubmVjdChzdGF0aWNGaWVsZEZpbHRlcnM6IGFueSA9IG51bGwpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5zdGF0aWNGaWVsZEZpbHRlcnMgPSBzdGF0aWNGaWVsZEZpbHRlcnMgfHwge307XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuY29ubmVjdCgpLnN1YnNjcmliZSgpO1xyXG5cclxuXHRcdGlmICghdGhpcy5keW5hbWljVGFibGUpIHtcclxuXHRcdFx0dGhpcy5hZGRSb3dNZW51SXRlbXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgdGhlIHRhYmxlIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBkYXRlQ29sdW1ucyhsb2FkQ29uZmlnPzogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0LyogR2V0IGNvbmZpZyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cclxuXHRcdGlmIChsb2FkQ29uZmlnKSB7XHJcblx0XHRcdHRoaXMubG9hZENvbmZpZ3MoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTb3J0IHRoZSBjb2x1bW5zIGJ5IGluZGV4ICovXHJcblx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy5jb2x1bW5zIHx8IFtdLCAnaW5kZXgnKTtcclxuXHJcblx0XHQvKiBUcmlnZ2VyIGNoYW5nZXMgKi9cclxuXHRcdHRoaXMuZHluYW1pY1RhYmxlPy51cGRhdGVDb2x1bW5zKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWxvYWRzIGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRMaXN0KHJlc2V0U2VsZWN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0dGhpcz8uZGF0YVNvdXJjZT8ucmVsb2FkKHJlc2V0U2VsZWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlYXJjaFxyXG5cdCAqIEBwYXJhbSBmaWx0ZXIgXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaChmaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmZpbHRlciA9IGZpbHRlcjtcclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGFkZCBwYWdlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5hZGREaWFsb2dUeXBlKSB7XHJcblx0XHRcdHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuYWRkRGlhbG9nVHlwZSwgeyB3aWR0aDogJzY1MHB4JywgZGF0YTogdGhpcy5jbGFzc0luc3RhbmNlIH0pXHJcblx0XHRcdFx0LmFmdGVyQ2xvc2VkKClcclxuXHRcdFx0XHQuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9hZExpc3QoZmFsc2UpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHZhciBoYXNQYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwO1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuXHRcdFx0XHRbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9hZGRgXSxcclxuXHRcdFx0XHR7IHF1ZXJ5UGFyYW1zOiBoYXNQYXJhbXMgPyB7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSA6IHt9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgZWRpdCBwYWdlLlxyXG5cdCAqIEBwYXJhbSBpdGVtIFRoZSBpZCBvZiB0aGUgaXRlbVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0KGl0ZW06IFRFbnRpdHksIGNvbnRleHQ/OiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5pc1RleHRTZWxlY3RlZCgpKSB7XHJcblx0XHRcdGlmICh0aGlzLm9uRWRpdCkge1xyXG5cdFx0XHRcdHRoaXMub25FZGl0KGl0ZW0sIGNvbnRleHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHZhciBoYXNQYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG5cdFx0XHRcdFx0W2Ake3RoaXMuY3VycmVudEJhc2VSb3V0ZX0vZWRpdGAsIChpdGVtIGFzIElFbnRpdHkpPy5pZF0sXHJcblx0XHRcdFx0XHR7IHF1ZXJ5UGFyYW1zOiBoYXNQYXJhbXMgPyB7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSA6IHt9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcblx0ICogQHBhcmFtIGluY2x1ZGVzIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2goaWQ6IG51bWJlciwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlcz86IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5fcGF0Y2goaWQsIGZpZWxkcywgdmFsdWUsIGluY2x1ZGVzLCBfID0+IHRoaXMubG9hZExpc3QoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcblx0ICogQHBhcmFtIGluY2x1ZGVzIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZSBjYWxsZWQgb24gc3VjY2Vzc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfcGF0Y2goaWQ6IG51bWJlciwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlcz86IGFueSwgc3VjY2Vzc0NhbGxiYWNrPzogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuXHRcdC8qIEdldCBlbnRpdHkgYnkgSUQgKi9cclxuXHRcdGxldCBlbnRpdHkgPSB0aGlzLmRhdGFTb3VyY2UuaXRlbXM/LmZpbHRlcih4ID0+ICg8YW55PngpLmlkID09PSBpZClbMF07XHJcblx0XHRpZiAoZW50aXR5KSB7XHJcblx0XHRcdC8qIEJ1aWxkIHBhdGNoIG1ldGhvZHMgKi9cclxuXHRcdFx0bGV0IHBhdGNoZXMgPSBmaWVsZHMubWFwKHggPT4geyByZXR1cm4geyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7eH1gLCB2YWx1ZTogdmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBlbnRpdHlbeF0gfTsgfSk7XHJcblxyXG5cdFx0XHQvKiBTZW5kIHJlcXVlc3QgKi9cclxuXHRcdFx0dGhpcy5zZXJ2aWNlXHJcblx0XHRcdFx0LnBhdGNoKGlkLCBwYXRjaGVzLCBudWxsLCB7IGhlYWRlcnM6IHsgJ1Nob3ctTWVzc2FnZSc6ICdZZXMnIH0sIHBhcmFtczogaW5jbHVkZXMgPyBVdGlscy50b0h0dHBQYXJhbXMoeyBpbmNsdWRlczogaW5jbHVkZXMgfSkgOiBudWxsIH0pXHJcblx0XHRcdFx0LnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRuZXh0OiAoeCkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzQ2FsbGJhY2soeCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sIGVycm9yOiAoXykgPT4gdGhpcy5pc1NhdmluZyA9IGZhbHNlXHJcblx0XHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIGFuIGl0ZW0gZnJvbSB0aGUgZGF0YWJhc2UuXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0ZUl0ZW0oaXRlbTogVEVudGl0eSk6IHZvaWQge1xyXG5cdFx0dGhpcy5zaG93RGVsZXRlSXRlbURpYWxvZygpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZGVsZXRlKChpdGVtIGFzIElFbnRpdHkpLmlkKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1EZWxldGVkKDxhbnk+aXRlbSksXHJcblx0XHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIGFuIGl0ZW0gZnJvbSB0aGUgZGF0YWJhc2UuXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0ZUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSgpKSB7XHJcblx0XHRcdHRoaXMuc2hvd0RlbGV0ZUl0ZW1zRGlhbG9nKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRsZXQgaWRzID0gdGhpcy5kYXRhU291cmNlLmdldFNlbGVjdGVkSWRzKCk7XHJcblx0XHRcdFx0XHR0aGlzLnNlcnZpY2UuZGVsZXRlTGlzdChpZHMpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRcdG5leHQ6IChfKSA9PiB0aGlzLm9uQWZ0ZXJJdGVtc0RlbGV0ZWQoaWRzKSxcclxuXHRcdFx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVG9nZ2xlcyBhIHByb3BlcnR5XHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICogQHBhcmFtIHByb3BlcnR5XHJcblx0ICovXHJcblx0cHVibGljIHRvZ2dsZShpdGVtOiBURW50aXR5LCBwcm9wZXJ0eTogc3RyaW5nID0gJ2VuYWJsZWQnKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0LnBhdGNoKCg8YW55Pml0ZW0pLmlkLCBbeyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7cHJvcGVydHl9YCwgdmFsdWU6IGl0ZW1bcHJvcGVydHldIH1dKVxyXG5cdFx0XHQuc3Vic2NyaWJlKHggPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwbG9hZHMgdGFybnNmZXJzIGNzdiBmaWxlc1xyXG5cdCAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIHRvIHVwbG9hZFxyXG5cdCAqIEBwYXJhbSByZWxvYWQgSWYgdHJ1ZSwgcmVsb2FkIGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHVwbG9hZChmaWxlOiBGaWxlLCByZWxvYWQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2UudXBsb2FkKGZpbGUpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdHJlc3BvbnNlID0gcmVzcG9uc2UuanNvbigpO1xyXG5cclxuXHRcdFx0XHQvKiBSZWxvYWQgbGlzdCAqL1xyXG5cdFx0XHRcdGlmIChyZWxvYWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZExpc3QoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sIGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEb3dubG9hZHMgYSBkb2N1bWVudFxyXG5cdCAqIEBwYXJhbSBpdGVtIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZChpdGVtOiBURW50aXR5LCBwYXRoOiBzdHJpbmcgPSAnZG93bmxvYWQnKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYCR7cGF0aH0vJHsoaXRlbSBhcyBJRW50aXR5KS5pZH1gKS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwge30pLCB4LmZpbGVuYW1lKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRHVwbGljYXRlcyBhIHJlY29yZFxyXG5cdCAqIEBwYXJhbSBpdGVtIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkdXBsaWNhdGUoaXRlbTogVEVudGl0eSkge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmR1cGxpY2F0ZSgoaXRlbSBhcyBJRW50aXR5KS5pZCkuc3Vic2NyaWJlKF8gPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgaW5mb3JtcyB0aGUgdGFibGUgaG93IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHJvd3MgdG8gXHJcblx0ICogdHJhY2sgaG93IHRoZSBkYXRhIGNoYW5nZXMgd2l0aCBlYWNoIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gaW5kZXggXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIHRyYWNrQnlJZChfOiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIGl0ZW0uaWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBPcGVucyB0aGUgY29uZmlnIGRpYWxvZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuQ29uZmlnRGlhbG9nKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHR3aWR0aDogJzkwMHB4JyxcclxuXHRcdFx0ZGF0YTogdGhpcyxcclxuXHRcdFx0ZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbJ2ZsYXQtZGlhbG9nJywgJ2RpYWxvZy1mdWxsLXNjcmVlbiddXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2F2ZXMgdGhlIHRhYmxlIGNvbmZpZ1xyXG5cdCAqIEBwYXJhbSBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIHNhdmVDb25maWdzKGNvbmZpZ3M6IFRhYmxlQ29sdW1uQ29uZmlnW10pOiB2b2lkIHtcclxuXHRcdGlmIChjb25maWdzKSB7XHJcblx0XHRcdC8qIFNldCB0aGUgY29uZmlnIGluIHRoZSBsaXN0IGNvbmZpZyAqL1xyXG5cdFx0XHR0aGlzLmxpc3RDb25maWcgPz89IHsgY29uZmlnczogW10sIHF1ZXJ5OiB7fSB9O1xyXG5cdFx0XHR0aGlzLmxpc3RDb25maWcuY29uZmlncyA9IGNvbmZpZ3M7XHJcblxyXG5cdFx0XHQvKiBTYXZlIHRoZSBjb25maWdzICovXHJcblx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMubGlzdENvbmZpZyk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgKi9cclxuXHRcdFx0dGhpcy51cGRhdGVDb2x1bW5zKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGFuZCBhcHBsaWVzIHRoZSB0YWJsZSBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRDb25maWdzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubGlzdENvbmZpZz8uY29uZmlncykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdCh0aGlzLmxpc3RDb25maWc/LmNvbmZpZ3MgPz8gW10pPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbkNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdFx0dmFyIGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKHk6IFRhYmxlQ29sdW1uKSA9PiB5Lm5hbWUgPT0geC5uYW1lKVswXTtcclxuXHRcdFx0XHRcdGlmIChjb2x1bW4pIHtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihjb2x1bW4sIHgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikgeyB9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICogQHBhcmFtIGluYyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5jbHVkZSguLi5pbmM6IHN0cmluZ1tdKSB7XHJcblx0XHRpbmM/LmZvckVhY2goeCA9PiB0aGlzLmluY2x1ZGVzLnB1c2goeCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHRvb2xiYXIgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRUb29sYmFyTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0LyogQWRkICdEZWxldGUgc2VsZWN0ZWQnIG1lbnUgaXRlbSAqL1xyXG5cdFx0aWYgKHRoaXMuZGVsZXRhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZVNlbGVjdGVkOkRlbGV0ZSBzZWxlY3RlZGAsXHJcblx0XHRcdFx0aWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuXHRcdFx0XHRpY29uQ2xhc3M6ICd0Yy1vcmFuZ2UtODAwJyxcclxuXHRcdFx0XHRldmVudDogKCkgPT4gdGhpcy5kZWxldGVJdGVtcygpLFxyXG5cdFx0XHRcdGRpc2FibGU6ICgpID0+ICF0aGlzLmNhbkV4ZWN1dGVNdWx0aXBsZU9wZXJhdGlvbnMoKHg6IFRFbnRpdHkpID0+IHRoaXMuY2FuRGVsZXRlSXRlbSh4KSlcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogT3BlbnMgY29uZmlnIGRpYWxvZyAqL1xyXG5cdFx0aWYgKHRoaXMuY29uZmlndXJhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGNvbmZpZ3VyZVRhYmxlOkNvbmZpZ3VyZSB0YWJsZWAsXHJcblx0XHRcdFx0aWNvbjogJ3NldHRpbmdzJyxcclxuXHRcdFx0XHRldmVudDogKCkgPT4gdGhpcy5vcGVuQ29uZmlnRGlhbG9nKClcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMudG9vbGJhck1lbnVJdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdC8qIFNvcnQgdGhlIG1lbnUgaXRlbXMgYnkgaW5kZXggKi9cclxuXHRcdFx0VXRpbHMuc29ydEFycmF5KHRoaXMudG9vbGJhck1lbnVJdGVtcywgJ2luZGV4Jyk7XHJcblxyXG5cdFx0XHQvKiBBZGQgdGhlIHRvb2xiYXIgbWVudSBpdGVtcyB0byB0aGUgdGhlIHRvb2xiYXIgYWN0aW9ucyAqL1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJBY3Rpb25zLnB1c2goeyBpY29uOiAnbW9yZV92ZXJ0JywgaXRlbXM6IHRoaXMudG9vbGJhck1lbnVJdGVtcyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRSb3dNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBBZGQgY2hlY2tib3ggY29sdW1uICovXHJcblx0XHRpZiAodGhpcy5zZWxlY3RhYmxlKSB7XHJcblx0XHRcdHRoaXMuY29sdW1ucy51bnNoaWZ0KG5ldyBUYWJsZUNvbHVtbih7XHJcblx0XHRcdFx0bmFtZTogJ3NlbGVjdCcsXHJcblx0XHRcdFx0dHlwZTogVGFibGVDb2x1bW5UeXBlLkNoZWNrYm94LFxyXG5cdFx0XHRcdGRpc2FibGU6IChyb3c6IFRFbnRpdHkpID0+ICF0aGlzLmNhblNlbGVjdEl0ZW0ocm93KSxcclxuXHRcdFx0XHRjZWxsTmdDbGFzczogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5zZWxlY3RSb3dOZ0NsYXNzKHJvdyksXHJcblx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxyXG5cdFx0XHR9KSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGR1cGxpY2F0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kdXBsaWNhYmxlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZHVwbGljYXRlOkR1cGxpY2F0ZWAsXHJcblx0XHRcdFx0aWNvbjogJ2ZpbGVfY29weScsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuZHVwbGljYXRlKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRHVwbGljYXRlSXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBkb3dubG9hZCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kb3dubG9hZGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkb3dubG9hZDpEb3dubG9hZGAsXHJcblx0XHRcdFx0aWNvbjogJ2ZpbGVfZG93bmxvYWQnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93OiBURW50aXR5KSA9PiB0aGlzLmRvd25sb2FkKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRG93bmxvYWRJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRlbGV0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93OiBURW50aXR5KSA9PiB0aGlzLmRlbGV0ZUl0ZW0ocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5EZWxldGVJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGVkaXQgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZWRpdGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBlZGl0OkVkaXRgLFxyXG5cdFx0XHRcdGljb246ICdlZGl0X25vdGUnLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLWJsdWUtNDAwJyxcclxuXHRcdFx0XHRldmVudDogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5lZGl0KHJvdywgdGhpcyksXHJcblx0XHRcdFx0aGlkZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRWRpdEl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIHNlbGVjdGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuU2VsZWN0SXRlbShlbnRpdHk6IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdzZWxlY3RhYmxlJykgfHwgZW50aXR5WydzZWxlY3RhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgZGVsZXRhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkRlbGV0ZUl0ZW0oZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZGVsZXRhYmxlJykgfHwgZW50aXR5WydkZWxldGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBlZGl0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5FZGl0SXRlbShlbnRpdHk6IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdlZGl0YWJsZScpIHx8IGVudGl0eVsnZWRpdGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkb3dubG9hZGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRG93bmxvYWRJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkYWJsZScpIHx8IGVudGl0eVsnZG93bmxvYWRhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgZHVwbGljYWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5EdXBsaWNhdGVJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2R1cGxpY2FibGUnKSB8fCBlbnRpdHlbJ2R1cGxpY2FibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIE5nQ2xhc3Mgb2JqZWN0IGZvciBzZWxlY3QgY29sdW1uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNlbGVjdFJvd05nQ2xhc3MoXzogVEVudGl0eSk6IGFueSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIHRoZXJlIGFueSBzZWxlY3RlZCByb3dcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaGFzU2VsZWN0ZWRSb3dzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5zZWxlY3Rpb25Nb2RlbD8uaGFzVmFsdWUoKSB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVudGl0eSBoYXMgYmVlbiBkZWxldGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbURlbGV0ZWQoaXRlbTogSUVudGl0eSk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkTGlzdCh0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXRpZXMgaGFzIGJlZW4gZGVsZXRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckl0ZW1zRGVsZXRlZChpZHM6IG51bWJlcltdKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRMaXN0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSB1c2VyIGNhbiBwZXJmb3JtIG11bHRpcGxlIG9wZXJhdGlvbnMgKExpa2UgJ2RlbGV0ZSBzZWxlY3RlZCcpLlxyXG5cdCAqIEBwYXJhbSBhY3Rpb24gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkV4ZWN1dGVNdWx0aXBsZU9wZXJhdGlvbnMoYWN0aW9uOiBGdW5jdGlvbiA9IG51bGwpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmhhc1NlbGVjdGVkUm93cygpICYmIChhY3Rpb24gPyB0aGlzLmRhdGFTb3VyY2U/LnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZD8uZXZlcnkoeCA9PiBhY3Rpb24oeCkpIDogdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNwb25kcyB0byB1c2VyLWluaXRpYXRlZCBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcblx0aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0aWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIGFkZCBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnYSc6XHJcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5hZGQoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIHByZXZpb3VzIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdQYWdlVXAnOlxyXG5cdFx0XHRcdFx0dGhpcy5wYWdpbmF0b3IucHJldmlvdXNQYWdlKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gbmV4dCBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnUGFnZURvd24nOlxyXG5cdFx0XHRcdFx0dGhpcy5wYWdpbmF0b3IubmV4dFBhZ2UoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyIFxyXG5cdCAqIHdoZW4gdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25EZXN0cm95KCk7XHJcblx0XHRpZiAodGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIFN5bWJvbC50b1N0cmluZ1RhZyB3ZWxsLWtub3duIHN5bWJvbCBpcyBhIHN0cmluZyB2YWx1ZWQgcHJvcGVydHkgdGhhdCBpcyB1c2VkIFxyXG5cdCAqIGluIHRoZSBjcmVhdGlvbiBvZiB0aGUgZGVmYXVsdCBzdHJpbmcgZGVzY3JpcHRpb24gb2YgYW4gb2JqZWN0XHJcblx0ICovXHJcblx0Z2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gJ0dlbmVyaWNMaXN0Q29tcG9uZW50JzsgfVxyXG59Il19
751
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFB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LENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzFCLE1BQU07YUFDUDtTQUNEO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzFDO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7MEhBMXpCeEMsb0JBQW9COzhHQUFwQixvQkFBb0IsdUxBSzlCLFlBQVkscUZBTVosT0FBTyw2RkF3RFAsdUJBQXVCOzsyRkFuRWIsb0JBQW9CO2tCQUR6QyxTQUFTOzZKQU9GLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU9sQyxJQUFJO3NCQURWLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF5RDdCLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXFGN0MsVUFBVTtzQkFEaEIsS0FBSztnQkE0bkJOLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlscyc7XHJcbmltcG9ydCB7IEFwcFN0b3JhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vaGVscGVycy9hcHAtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2FjdGlvbi1pdGVtJztcclxuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvZW50aXR5JztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9odHRwL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGUvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vdGFibGUvZW51bXMvdGFibGUtY29sdW1uLXR5cGUnO1xyXG5pbXBvcnQgeyBnZXRUYWJsZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi90YWJsZS9mdW5jdGlvbnMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5Db25maWcgfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlL3RhYmxlLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvYXV0aC1oZWxwZXInO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lnZW5lcmljLWxpc3QtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgSUVudGl0eSB8IGFueSwgVFNlcnZpY2UgZXh0ZW5kcyBHZW5lcmljU2VydmljZTxURW50aXR5Pj4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUdlbmVyaWNMaXN0Q29tcG9uZW50PFRFbnRpdHk+LCBPbkRlc3Ryb3kge1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFBhZ2luYXRvciBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBzb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYXZpZ2F0aW9ucyB0byBpbmNsdWRlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBpbmNsdWRlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmF2aWdhdGlvbnMgdG8gaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZXhjbHVkZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBwYXJhbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgcXVlcnk6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhLXRhYmxlIGRhdGFzb3VyY2VcclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPiB8IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyB0byBjcmVhdGUgdGhlIHRhYmxlIGZvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGFzc0luc3RhbmNlOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gXHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gTWRTb3J0IGF0dHJpYnV0ZVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoVmREeW5hbWljVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIGR5bmFtaWNUYWJsZTogVmREeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgZm9yIGNyZWF0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGFkZERpYWxvZ1R5cGU6IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIHRoZSBjb2x1bW4gJ0NoZWNrYm94J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgYnV0dG9uICdBZGQnXHJcblx0ICovXHJcblx0cHVibGljIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdFZGl0J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0RlbGV0ZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRG93bmxvYWQnXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEdXBsaWNhdGUnXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnQ29uZmlndXJlIHRhYmxlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiByb3dOZ0NsYXNzOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dOZ0NsYXNzOiAoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJvd0NsaWNrOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dDbGljazogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBlZGl0Um91dGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIG9uRWRpdDogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGRldGFpbHNUZW1wbGF0ZTogc3RyaW5nID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW1bXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyQWN0aW9uczogQWN0aW9uSXRlbVtdID0gW3tcclxuXHRcdGljb246ICdzeW5jJyxcclxuXHRcdGV2ZW50OiAoKSA9PiB0aGlzLmxvYWRMaXN0KClcclxuXHR9XTtcclxuXHJcblx0LyoqXHJcblx0ICogVG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUYWJsZSByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgYmFjayBidXR0b24gdG8gdGhlIHRvb2xiYXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBiYWNrQnV0dG9uOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhTG9hZGVkIGV2ZW50IHN1YnNjcmlwdGlvblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkYXRhTG9hZGVkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXkgZm9yIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY29uZmlnc0tleTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxpc3RDb25maWc6IHtjb25maWdzOiBhbnksIHF1ZXJ5OiBhbnl9XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxpc3RDb25maWc6IHsgY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSwgcXVlcnk6IGFueSB9ID0geyBjb25maWdzOiBbXSwgcXVlcnk6IHsgcGFnZVNpemU6IDE1IH0gfTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gc2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGNsYXNzVHlwZT86IHsgbmV3KCk6IFRFbnRpdHkgfVxyXG5cdCkge1xyXG5cdFx0c3VwZXIocm91dGUsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuXHRcdC8qIEFzc2VtYmxlIHRoZSBjb25maWcga2V5ICovXHJcblx0XHR0aGlzLmNvbmZpZ3NLZXkgPSBbdGhpcy5wcm9qZWN0TmFtZSwgJ2xpc3QtY29uZmlnJywgYnRvYSh0aGlzLmN1cnJlbnRCYXNlUm91dGUpLCB0aGlzLm1lbnU/LnRpdGxlXS5qb2luKCcuJyk7XHJcblxyXG5cdFx0LyogTG9hZCBsaXN0IGNvbmZpZ3MgKi9cclxuXHRcdHRoaXMubGlzdENvbmZpZyA9IEFwcFN0b3JhZ2UuZ2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHsgY29uZmlnczogW10sIHF1ZXJ5OiB7IHBhZ2VTaXplOiAxNSB9IH0pO1xyXG5cclxuXHRcdC8qIFNldCBiYWNrIGJ1dHRvbiBmcm9tIHJvdXRlIHBhcmFtcyAqL1xyXG5cdFx0dGhpcy5iYWNrQnV0dG9uID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ2JhY2tCdXR0b24nKSA9PSAndHJ1ZSc7XHJcblxyXG5cdFx0LyogUmVhZCBzb21lIHBhcmFtcyBmcm9tIHJvdXRpbmcgZGF0YSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgZGF0YS5xdWVyeSB8fCB7fSk7XHJcblx0XHRcdHRoaXMuY2xhc3NUeXBlIHx8PSBkYXRhLmNsYXNzVHlwZTtcclxuXHJcblx0XHRcdGlmIChkYXRhLmNsYXNzTmFtZSkge1xyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gZGF0YS5jbGFzc05hbWU7XHJcblx0XHRcdFx0dGhpcy5jYW5DcmVhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdDcmVhdGUnLCBgQ3JlYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSA9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoJ1VwZGF0ZScsIGBVcGRhdGUke3RoaXMuY2xhc3NOYW1lfWApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5jb2x1bW5zKSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gWy4uLihkYXRhLmNvbHVtbnMgfHwgW10pXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuZW5kcG9pbnQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSBkYXRhLmVuZHBvaW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5pbmNsdWRlcykge1xyXG5cdFx0XHRcdHRoaXMuaW5jbHVkZXMgPSBkYXRhLmluY2x1ZGVzO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHggPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmhhc093blByb3BlcnR5KHgpICYmIHggIT0gJ2NvbHVtbnMnKSB7XHJcblx0XHRcdFx0XHR0aGlzW3hdID0gZGF0YVt4XTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IGNvbHVtbnMgZnJvbSBjbGFzcyAqL1xyXG5cdFx0aWYgKHRoaXMuY2xhc3NUeXBlKSB7XHJcblx0XHRcdHRoaXMuY2xhc3NJbnN0YW5jZSA9IG5ldyB0aGlzLmNsYXNzVHlwZSgpO1xyXG5cclxuXHRcdFx0LyogR2V0IHRoZSB0YWJsZSBkZWZpbml0aW9uIHVzaW5nIHRoZSBjbGFzcyB0eXBlICovXHJcblx0XHRcdHZhciB0YWJsZURlZmluaXRpb24gPSBnZXRUYWJsZURlZmluaXRpb24odGhpcy5jbGFzc1R5cGUpO1xyXG5cclxuXHRcdFx0LyogU2V0IHRoZSBwcm9wcyBpbiB0aGUgY3VycmVudCBvYmplY3QgZnJvbSB0aGUgdGFibGUgZGVmaW5pdGlvbiAqL1xyXG5cdFx0XHRPYmplY3Qua2V5cyh0YWJsZURlZmluaXRpb24gfHwge30pLmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaGFzT3duUHJvcGVydHkoeCkpIHtcclxuXHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXNbeF0pICYmIEFycmF5LmlzQXJyYXkodGFibGVEZWZpbml0aW9uW3hdKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzW3hdID0gdGFibGVEZWZpbml0aW9uW3hdLmNvbmNhdCh0aGlzW3hdKVxyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhpc1t4XSA9IHRhYmxlRGVmaW5pdGlvblt4XTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogU2V0IGVuZHBvaW50IGZyb20gdGFibGUgZGVmaW5pdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdGlmICh0YWJsZURlZmluaXRpb24/LmVuZHBvaW50KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gdGFibGVEZWZpbml0aW9uPy5lbmRwb2ludDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zIGZyb20gdGhlIHRhYmxlIGRlZmludGlvbiAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5jb2x1bW5zKSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGFibGVEZWZpbml0aW9uLmNvbHVtbnMubWFwKHggPT4geyByZXR1cm4geyAuLi54IH0gfSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEhhbmRsZSBldmVudHMgKi9cclxuXHRcdFx0dGhpcy5jb2x1bW5zPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgeC5ldmVudCA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdGxldCBldmVudE5hbWU6IHN0cmluZyA9ICgoeC5ldmVudCkgYXMgc3RyaW5nKTtcclxuXHRcdFx0XHRcdHguZXZlbnQgPSAocm93OiBhbnkpID0+ICh4LmV2ZW50QXJncyA/IHRoaXNbZXZlbnROYW1lXShyb3csIHguZXZlbnRBcmdzKSA6IHRoaXNbZXZlbnROYW1lXShyb3cpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogSGlkZSBjb2x1bW5zIHVzaW5nIHJvdXRlIGRhdGEgKi9cclxuXHRcdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKHg6IFRhYmxlQ29sdW1uKSA9PiAheC5oaWRlIHx8ICF4LmhpZGUoZGF0YSwgdGhpcykpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBIaWRlIGV4Y2x1ZGVkIGNvbHVtbnMgKi9cclxuXHRcdHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKCh4OiBUYWJsZUNvbHVtbikgPT4gIXRoaXMuZXhjbHVkZWRDb2x1bW5zPy5pbmNsdWRlcyh4Lm5hbWUpKTtcclxuXHJcblx0XHQvKiBBZGQgbGlzdCBtbmV1IGl0ZW1zICovXHJcblx0XHR0aGlzLmFkZFRvb2xiYXJNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAodGhpcy5keW5hbWljVGFibGUpIHtcclxuXHRcdFx0LyogQWRkIG1lbnUgaXRlbXMgZm9yIGVhY2ggcm93ICovXHJcblx0XHRcdHRoaXMuYWRkUm93TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0XHQvKiBDaGVjayBpZiB0aGUgYWN0aW9uIGNvbHVtbiBhbHJlYWR5IGV4aXN0cyAqL1xyXG5cdFx0XHR2YXIgYWN0aW9uQ29sbXVuID0gKHRoaXMuY29sdW1ucyBhcyBUYWJsZUNvbHVtbltdKT8uZmluZCh4ID0+IHgubmFtZSA9PSAnYWN0aW9uJyk7XHJcblxyXG5cdFx0XHQvKiBJZiBzbywganVzdCBhZGQgdGhlIG1lbnUgaXRlbXMgdG8gaXQgKi9cclxuXHRcdFx0aWYgKGFjdGlvbkNvbG11biAhPSBudWxsKSB7XHJcblx0XHRcdFx0YWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyA9IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMgfHwgW107XHJcblx0XHRcdFx0dGhpcy5yb3dNZW51SXRlbXMuZm9yRWFjaCh5ID0+IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMudW5zaGlmdCh5KSk7XHJcblxyXG5cdFx0XHRcdC8qIENyZWF0ZSBhIHRhYmxlIG1lbnUgKi9cclxuXHRcdFx0XHRhY3Rpb25Db2xtdW4ubWVudSA9IG5ldyBBY3Rpb25JdGVtKHtcclxuXHRcdFx0XHRcdGljb246ICdtb3JlX3ZlcnQnLFxyXG5cdFx0XHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIE90aGVyd2lzZSBhZGQgYSBuZXcgb25lICovXHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucy5wdXNoKG5ldyBUYWJsZUNvbHVtbih7XHJcblx0XHRcdFx0XHRpbmRleDogMjAwMCxcclxuXHRcdFx0XHRcdG5hbWU6ICdhY3Rpb24nLFxyXG5cdFx0XHRcdFx0dHlwZTogVGFibGVDb2x1bW5UeXBlLkFjdGlvbixcclxuXHRcdFx0XHRcdGRpc2FibGVkOiB0cnVlLFxyXG5cdFx0XHRcdFx0bWVudTogbmV3IEFjdGlvbkl0ZW0oe1xyXG5cdFx0XHRcdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0XHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHJvd01lbnVJdGVtczogdGhpcy5yb3dNZW51SXRlbXMsXHJcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlXHJcblx0XHRcdFx0fSkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBHZXQgY3VzdG9tIGFjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdHZhciBhY3Rpb25zID0gdGFibGVEZWZpbml0aW9uPy5hY3Rpb25zO1xyXG5cdFx0XHRpZiAoYWN0aW9ucyAhPSBudWxsKSB7XHJcblx0XHRcdFx0YWN0aW9ucy5mb3JFYWNoKHkgPT4gdGhpcy5yb3dNZW51SXRlbXM/LnB1c2goeSkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnModHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IHF1ZXJ5IHBhcmFtcyBpbnRvIHF1ZXJ5IG9iamVjdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoeCA9PiBPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIHggfHwge30sIHsgcmV0dXJuVXJsOiBudWxsIH0pKTtcclxuXHJcblx0XHQvKiBJbml0aWxpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yIGFuZCBzb3J0ICovXHJcblx0XHR0aGlzLnNvcnQgPSB0aGlzLmR5bmFtaWNUYWJsZT8ubWF0U29ydCB8fCAodGhpcy5zb3J0ID8gdGhpcy5zb3J0IDogbmV3IE1hdFNvcnQoKSk7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPih0aGlzLnNlcnZpY2UhLCB0aGlzLnBhZ2luYXRvciwgdGhpcy5zb3J0KTtcclxuXHJcblx0XHQvKiBTZXQgaW5jbHVkZXMgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pbmNsdWRlcyA9IHRoaXMuaW5jbHVkZXM7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHJcblx0XHQvKiBMb2FkIHF1ZXJ5IGZyb20gYnJvd3NlciBzdG9yYWdlICovXHJcblx0XHR2YXIgc3RvcnJlZFF1ZXJ5ID0gdGhpcy5saXN0Q29uZmlnPy5xdWVyeTtcclxuXHRcdGlmIChzdG9ycmVkUXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLmZpZWxkRmlsdGVycyA9IHRoaXMuY2xlYW4oc3RvcnJlZFF1ZXJ5LmZpZWxkRmlsdGVycykgfHwge307XHJcblx0XHRcdHRoaXMuc29ydEFjdGl2ZSA9IHN0b3JyZWRRdWVyeS5zb3J0Qnk7XHJcblx0XHRcdHRoaXMuc29ydERpcmVjdGlvbiA9IHN0b3JyZWRRdWVyeS5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgPSBzdG9ycmVkUXVlcnkucGFnZVNpemU7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdlSW5kZXggPSBzdG9ycmVkUXVlcnkucGFnZUluZGV4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBzb21lIGZpbHRlciBmcm9tIHJvdXRlciAqL1xyXG5cdFx0aWYgKHRoaXMucXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHRoaXMucXVlcnk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVtZW1iZXIgdGhlIGZpbHRlcnMgKi9cclxuXHRcdHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZS5vbkRhdGFMb2FkZWQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHRoaXMubGlzdENvbmZpZyA/Pz0geyBjb25maWdzOiBbXSwgcXVlcnk6IHt9IH07XHJcblx0XHRcdFx0dGhpcy5saXN0Q29uZmlnLnF1ZXJ5ID0ge1xyXG5cdFx0XHRcdFx0ZmllbGRGaWx0ZXJzOiB0aGlzLmRhdGFTb3VyY2UuZmllbGRGaWx0ZXJzLFxyXG5cdFx0XHRcdFx0c29ydEJ5OiB0aGlzLnNvcnQuYWN0aXZlLFxyXG5cdFx0XHRcdFx0c29ydERpcmVjdGlvbjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuXHRcdFx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuXHRcdFx0XHRcdHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4LFxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdC8qIFNhdmUgdGhlIHNldHRpbmdzICovXHJcblx0XHRcdFx0QXBwU3RvcmFnZS5zZXRPYmplY3RFbmNvZGVkKHRoaXMuY29uZmlnc0tleSwgdGhpcy5saXN0Q29uZmlnKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25uZWN0cyBhIGNvbGxlY3Rpb24gdmlld2VyIChzdWNoIGFzIGEgZGF0YS10YWJsZSkgdG8gdGhlIGRhdGEgc291cmNlLiBcclxuXHQgKiBAcGFyYW0gc3RhdGljRmllbGRGaWx0ZXJzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KHN0YXRpY0ZpZWxkRmlsdGVyczogYW55ID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHN0YXRpY0ZpZWxkRmlsdGVycyB8fCB7fTtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KCkuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmR5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyB0aGUgdGFibGUgY29sdW1uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGRhdGVDb2x1bW5zKGxvYWRDb25maWc/OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHQvKiBHZXQgY29uZmlnIGZyb20gbG9jYWwgc3RvcmFnZSAqL1xyXG5cdFx0aWYgKGxvYWRDb25maWcpIHtcclxuXHRcdFx0dGhpcy5sb2FkQ29uZmlncygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNvcnQgdGhlIGNvbHVtbnMgYnkgaW5kZXggKi9cclxuXHRcdFV0aWxzLnNvcnRBcnJheSh0aGlzLmNvbHVtbnMgfHwgW10sICdpbmRleCcpO1xyXG5cclxuXHRcdC8qIFRyaWdnZXIgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5keW5hbWljVGFibGU/LnVwZGF0ZUNvbHVtbnMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbG9hZHMgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZExpc3QocmVzZXRTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHR0aGlzPy5kYXRhU291cmNlPy5yZWxvYWQocmVzZXRTZWxlY3Rpb24pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2VhcmNoXHJcblx0ICogQHBhcmFtIGZpbHRlciBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2VhcmNoKGZpbHRlcjogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgYWRkIHBhZ2UuXHJcblx0ICovXHJcblx0cHVibGljIGFkZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFkZERpYWxvZ1R5cGUpIHtcclxuXHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5hZGREaWFsb2dUeXBlLCB7IHdpZHRoOiAnNjUwcHgnLCBkYXRhOiB0aGlzLmNsYXNzSW5zdGFuY2UgfSlcclxuXHRcdFx0XHQuYWZ0ZXJDbG9zZWQoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkTGlzdChmYWxzZSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dmFyIGhhc1BhcmFtcyA9IE9iamVjdC5rZXlzKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpLmxlbmd0aCA+IDA7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG5cdFx0XHRcdFtgJHt0aGlzLmN1cnJlbnRCYXNlUm91dGV9L2FkZGBdLFxyXG5cdFx0XHRcdHsgcXVlcnlQYXJhbXM6IGhhc1BhcmFtcyA/IHsgcmV0dXJuVXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9IDoge30sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIHRvIHRoZSBlZGl0IHBhZ2UuXHJcblx0ICogQHBhcmFtIGl0ZW0gVGhlIGlkIG9mIHRoZSBpdGVtXHJcblx0ICovXHJcblx0cHVibGljIGVkaXQoaXRlbTogVEVudGl0eSwgY29udGV4dD86IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmlzVGV4dFNlbGVjdGVkKCkpIHtcclxuXHRcdFx0aWYgKHRoaXMub25FZGl0KSB7XHJcblx0XHRcdFx0dGhpcy5vbkVkaXQoaXRlbSwgY29udGV4dCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dmFyIGhhc1BhcmFtcyA9IE9iamVjdC5rZXlzKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpLmxlbmd0aCA+IDA7XHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcblx0XHRcdFx0XHRbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9lZGl0YCwgKGl0ZW0gYXMgSUVudGl0eSk/LmlkXSxcclxuXHRcdFx0XHRcdHsgcXVlcnlQYXJhbXM6IGhhc1BhcmFtcyA/IHsgcmV0dXJuVXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9IDoge30sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuXHQgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLl9wYXRjaChpZCwgZmllbGRzLCB2YWx1ZSwgaW5jbHVkZXMsIF8gPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuXHQgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgQSBjYWxsYmFjayBmdW5jdGlvbiB0byBlIGNhbGxlZCBvbiBzdWNjZXNzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG5cdFx0LyogR2V0IGVudGl0eSBieSBJRCAqL1xyXG5cdFx0bGV0IGVudGl0eSA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8uZmlsdGVyKHggPT4gKDxhbnk+eCkuaWQgPT09IGlkKVswXTtcclxuXHRcdGlmIChlbnRpdHkpIHtcclxuXHRcdFx0LyogQnVpbGQgcGF0Y2ggbWV0aG9kcyAqL1xyXG5cdFx0XHRsZXQgcGF0Y2hlcyA9IGZpZWxkcy5tYXAoeCA9PiB7IHJldHVybiB7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHt4fWAsIHZhbHVlOiB2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IGVudGl0eVt4XSB9OyB9KTtcclxuXHJcblx0XHRcdC8qIFNlbmQgcmVxdWVzdCAqL1xyXG5cdFx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0XHQucGF0Y2goaWQsIHBhdGNoZXMsIG51bGwsIHsgaGVhZGVyczogeyAnU2hvdy1NZXNzYWdlJzogJ1llcycgfSwgcGFyYW1zOiBpbmNsdWRlcyA/IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGluY2x1ZGVzOiBpbmNsdWRlcyB9KSA6IG51bGwgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdG5leHQ6ICh4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NDYWxsYmFjayh4KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgZXJyb3I6IChfKSA9PiB0aGlzLmlzU2F2aW5nID0gZmFsc2VcclxuXHRcdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbShpdGVtOiBURW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLnNob3dEZWxldGVJdGVtRGlhbG9nKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGUoKGl0ZW0gYXMgSUVudGl0eSkuaWQpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5vbkFmdGVySXRlbURlbGV0ZWQoPGFueT5pdGVtKSxcclxuXHRcdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkpIHtcclxuXHRcdFx0dGhpcy5zaG93RGVsZXRlSXRlbXNEaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHRcdGxldCBpZHMgPSB0aGlzLmRhdGFTb3VyY2UuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGVMaXN0KGlkcykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1zRGVsZXRlZChpZHMpLFxyXG5cdFx0XHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUb2dnbGVzIGEgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKiBAcGFyYW0gcHJvcGVydHlcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9nZ2xlKGl0ZW06IFRFbnRpdHksIHByb3BlcnR5OiBzdHJpbmcgPSAnZW5hYmxlZCcpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZVxyXG5cdFx0XHQucGF0Y2goKDxhbnk+aXRlbSkuaWQsIFt7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHtwcm9wZXJ0eX1gLCB2YWx1ZTogaXRlbVtwcm9wZXJ0eV0gfV0pXHJcblx0XHRcdC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyB0YXJuc2ZlcnMgY3N2IGZpbGVzXHJcblx0ICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gdXBsb2FkXHJcblx0ICogQHBhcmFtIHJlbG9hZCBJZiB0cnVlLCByZWxvYWQgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUsIHJlbG9hZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZS51cGxvYWQoZmlsZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0cmVzcG9uc2UgPSByZXNwb25zZS5qc29uKCk7XHJcblxyXG5cdFx0XHRcdC8qIFJlbG9hZCBsaXN0ICovXHJcblx0XHRcdFx0aWYgKHJlbG9hZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkTGlzdCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGRvY3VtZW50XHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkKGl0ZW06IFRFbnRpdHksIHBhdGg6IHN0cmluZyA9ICdkb3dubG9hZCcpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZS5kb3dubG9hZChgJHtwYXRofS8keyhpdGVtIGFzIElFbnRpdHkpLmlkfWApLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0c2F2ZUFzKG5ldyBCbG9iKFt4LmRhdGFdLCB7fSksIHguZmlsZW5hbWUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEdXBsaWNhdGVzIGEgcmVjb3JkXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2F0ZShpdGVtOiBURW50aXR5KSB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZHVwbGljYXRlKChpdGVtIGFzIElFbnRpdHkpLmlkKS5zdWJzY3JpYmUoXyA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBpbmZvcm1zIHRoZSB0YWJsZSBob3cgdG8gdW5pcXVlbHkgaWRlbnRpZnkgcm93cyB0byBcclxuXHQgKiB0cmFjayBob3cgdGhlIGRhdGEgY2hhbmdlcyB3aXRoIGVhY2ggdXBkYXRlLlxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdHJhY2tCeUlkKF86IG51bWJlciwgaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gaXRlbS5pZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wZW5zIHRoZSBjb25maWcgZGlhbG9nXHJcblx0ICovXHJcblx0cHVibGljIG9wZW5Db25maWdEaWFsb2coKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiAnOTAwcHgnLFxyXG5cdFx0XHRkYXRhOiB0aGlzLFxyXG5cdFx0XHRkaXNhYmxlQ2xvc2U6IHRydWUsXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZmxhdC1kaWFsb2cnLCAnZGlhbG9nLWZ1bGwtc2NyZWVuJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQpIHtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyB0aGUgdGFibGUgY29uZmlnXHJcblx0ICogQHBhcmFtIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2F2ZUNvbmZpZ3MoY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSk6IHZvaWQge1xyXG5cdFx0aWYgKGNvbmZpZ3MpIHtcclxuXHRcdFx0LyogU2V0IHRoZSBjb25maWcgaW4gdGhlIGxpc3QgY29uZmlnICovXHJcblx0XHRcdHRoaXMubGlzdENvbmZpZyA/Pz0geyBjb25maWdzOiBbXSwgcXVlcnk6IHt9IH07XHJcblx0XHRcdHRoaXMubGlzdENvbmZpZy5jb25maWdzID0gY29uZmlncztcclxuXHJcblx0XHRcdC8qIFNhdmUgdGhlIGNvbmZpZ3MgKi9cclxuXHRcdFx0QXBwU3RvcmFnZS5zZXRPYmplY3RFbmNvZGVkKHRoaXMuY29uZmlnc0tleSwgdGhpcy5saXN0Q29uZmlnKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgdGFibGUgY29sdW1ucyAqL1xyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgYW5kIGFwcGxpZXMgdGhlIHRhYmxlIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZENvbmZpZ3MoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5saXN0Q29uZmlnPy5jb25maWdzKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0KHRoaXMubGlzdENvbmZpZz8uY29uZmlncyA/PyBbXSk/LmZvckVhY2goKHg6IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHR2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoeTogVGFibGVDb2x1bW4pID0+IHkubmFtZSA9PSB4Lm5hbWUpWzBdO1xyXG5cdFx0XHRcdFx0aWYgKGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKGNvbHVtbiwgeCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKiBAcGFyYW0gaW5jIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbmNsdWRlKC4uLmluYzogc3RyaW5nW10pIHtcclxuXHRcdGluYz8uZm9yRWFjaCh4ID0+IHRoaXMuaW5jbHVkZXMucHVzaCh4KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgdG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFRvb2xiYXJNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBBZGQgJ0RlbGV0ZSBzZWxlY3RlZCcgbWVudSBpdGVtICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGVsZXRlU2VsZWN0ZWQ6RGVsZXRlIHNlbGVjdGVkYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLmRlbGV0ZUl0ZW1zKCksXHJcblx0XHRcdFx0ZGlzYWJsZTogKCkgPT4gIXRoaXMuY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucygoeDogVEVudGl0eSkgPT4gdGhpcy5jYW5EZWxldGVJdGVtKHgpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBPcGVucyBjb25maWcgZGlhbG9nICovXHJcblx0XHRpZiAodGhpcy5jb25maWd1cmFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAY29uZmlndXJlVGFibGU6Q29uZmlndXJlIHRhYmxlYCxcclxuXHRcdFx0XHRpY29uOiAnc2V0dGluZ3MnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLm9wZW5Db25maWdEaWFsb2coKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy50b29sYmFyTWVudUl0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0LyogU29ydCB0aGUgbWVudSBpdGVtcyBieSBpbmRleCAqL1xyXG5cdFx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy50b29sYmFyTWVudUl0ZW1zLCAnaW5kZXgnKTtcclxuXHJcblx0XHRcdC8qIEFkZCB0aGUgdG9vbGJhciBtZW51IGl0ZW1zIHRvIHRoZSB0aGUgdG9vbGJhciBhY3Rpb25zICovXHJcblx0XHRcdHRoaXMudG9vbGJhckFjdGlvbnMucHVzaCh7IGljb246ICdtb3JlX3ZlcnQnLCBpdGVtczogdGhpcy50b29sYmFyTWVudUl0ZW1zIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHJvdyBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFJvd01lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBjaGVja2JveCBjb2x1bW4gKi9cclxuXHRcdGlmICh0aGlzLnNlbGVjdGFibGUpIHtcclxuXHRcdFx0dGhpcy5jb2x1bW5zLnVuc2hpZnQobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRuYW1lOiAnc2VsZWN0JyxcclxuXHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQ2hlY2tib3gsXHJcblx0XHRcdFx0ZGlzYWJsZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuU2VsZWN0SXRlbShyb3cpLFxyXG5cdFx0XHRcdGNlbGxOZ0NsYXNzOiAocm93OiBURW50aXR5KSA9PiB0aGlzLnNlbGVjdFJvd05nQ2xhc3Mocm93KSxcclxuXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlXHJcblx0XHRcdH0pKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZHVwbGljYXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmR1cGxpY2FibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkdXBsaWNhdGU6RHVwbGljYXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9jb3B5JyxcclxuXHRcdFx0XHRldmVudDogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5kdXBsaWNhdGUocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5EdXBsaWNhdGVJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRvd25sb2FkIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmRvd25sb2FkYWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRvd25sb2FkOkRvd25sb2FkYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9kb3dubG9hZCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuZG93bmxvYWQocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5Eb3dubG9hZEl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZGVsZXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmRlbGV0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0XHRcdGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtb3JhbmdlLTgwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuZGVsZXRlSXRlbShyb3cpLFxyXG5cdFx0XHRcdGhpZGU6IChyb3c6IFRFbnRpdHkpID0+ICF0aGlzLmNhbkRlbGV0ZUl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZWRpdCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5lZGl0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGVkaXQ6RWRpdGAsXHJcblx0XHRcdFx0aWNvbjogJ2VkaXRfbm90ZScsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtYmx1ZS00MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93OiBURW50aXR5KSA9PiB0aGlzLmVkaXQocm93LCB0aGlzKSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5FZGl0SXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgc2VsZWN0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5TZWxlY3RJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ3NlbGVjdGFibGUnKSB8fCBlbnRpdHlbJ3NlbGVjdGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkZWxldGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRGVsZXRlSXRlbShlbnRpdHk6IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkZWxldGFibGUnKSB8fCBlbnRpdHlbJ2RlbGV0YWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGVkaXRhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkVkaXRJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2VkaXRhYmxlJykgfHwgZW50aXR5WydlZGl0YWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGRvd25sb2FkYWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5Eb3dubG9hZEl0ZW0oZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZG93bmxvYWRhYmxlJykgfHwgZW50aXR5Wydkb3dubG9hZGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkdXBsaWNhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkR1cGxpY2F0ZUl0ZW0oZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZHVwbGljYWJsZScpIHx8IGVudGl0eVsnZHVwbGljYWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgTmdDbGFzcyBvYmplY3QgZm9yIHNlbGVjdCBjb2x1bW5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2VsZWN0Um93TmdDbGFzcyhfOiBURW50aXR5KTogYW55IHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgdGhlcmUgYW55IHNlbGVjdGVkIHJvd1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYXNTZWxlY3RlZFJvd3MoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LnNlbGVjdGlvbk1vZGVsPy5oYXNWYWx1ZSgpIH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXR5IGhhcyBiZWVuIGRlbGV0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJJdGVtRGVsZXRlZChpdGVtOiBJRW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRMaXN0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdGllcyBoYXMgYmVlbiBkZWxldGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbXNEZWxldGVkKGlkczogbnVtYmVyW10pOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZExpc3QodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgY2FuIHBlcmZvcm0gbXVsdGlwbGUgb3BlcmF0aW9ucyAoTGlrZSAnZGVsZXRlIHNlbGVjdGVkJykuXHJcblx0ICogQHBhcmFtIGFjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucyhhY3Rpb246IEZ1bmN0aW9uID0gbnVsbCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRSb3dzKCkgJiYgKGFjdGlvbiA/IHRoaXMuZGF0YVNvdXJjZT8uc2VsZWN0aW9uTW9kZWw/LnNlbGVjdGVkPy5ldmVyeSh4ID0+IGFjdGlvbih4KSkgOiB0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlc3BvbmRzIHRvIHVzZXItaW5pdGlhdGVkIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuXHRoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gYWRkIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdhJzpcclxuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZSAqL1xyXG5cdFx0XHRcdGNhc2UgJ1BhZ2VVcCc6XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdQYWdlRG93bic6XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgY2FsbGJhY2sgdXNlZCBmb3IgYW55IGN1c3RvbSBjbGVhbnVwIHRoYXQgbmVlZHMgdG8gb2NjdXIgXHJcblx0ICogd2hlbiB0aGUgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHRcdGlmICh0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgU3ltYm9sLnRvU3RyaW5nVGFnIHdlbGwta25vd24gc3ltYm9sIGlzIGEgc3RyaW5nIHZhbHVlZCBwcm9wZXJ0eSB0aGF0IGlzIHVzZWQgXHJcblx0ICogaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBkZWZhdWx0IHN0cmluZyBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3RcclxuXHQgKi9cclxuXHRnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAnR2VuZXJpY0xpc3RDb21wb25lbnQnOyB9XHJcbn0iXX0=