@c8y/ngx-components 1018.503.62 → 1018.503.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/ecosystem/application-plugins/plugin-list.component.d.ts +1 -0
  2. package/esm2020/core/product-experience/gainsight.service.mjs +16 -25
  3. package/esm2020/ecosystem/application-plugins/plugin-list.component.mjs +27 -13
  4. package/esm2020/ecosystem/packages/deploy-application/deploy-application.component.mjs +14 -3
  5. package/esm2020/ecosystem/packages/package-details/package-details.component.mjs +3 -3
  6. package/esm2020/map/map.component.mjs +2 -2
  7. package/esm2020/sub-assets/location/asset-location.component.mjs +2 -1
  8. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs +19 -13
  9. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  10. package/fesm2015/c8y-ngx-components-ecosystem.mjs +32 -22
  11. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  12. package/fesm2015/c8y-ngx-components-map.mjs +2 -1
  13. package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
  14. package/fesm2015/c8y-ngx-components-sub-assets.mjs +1 -0
  15. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  16. package/fesm2015/c8y-ngx-components.mjs +15 -20
  17. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  18. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs +26 -13
  19. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  20. package/fesm2020/c8y-ngx-components-ecosystem.mjs +40 -17
  21. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  22. package/fesm2020/c8y-ngx-components-map.mjs +1 -1
  23. package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
  24. package/fesm2020/c8y-ngx-components-sub-assets.mjs +1 -0
  25. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  26. package/fesm2020/c8y-ngx-components.mjs +15 -24
  27. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  28. package/locales/de.po +56 -8
  29. package/locales/en.po +6 -0
  30. package/locales/es.po +120 -24
  31. package/locales/fr.po +111 -15
  32. package/locales/ja_JP.po +131 -35
  33. package/locales/ko.po +114 -12
  34. package/locales/nl.po +106 -10
  35. package/locales/pl.po +110 -14
  36. package/locales/pt_BR.po +134 -38
  37. package/locales/ru.po +0 -39
  38. package/locales/zh_CN.po +107 -5
  39. package/locales/zh_TW.po +109 -7
  40. package/package.json +1 -1
@@ -35,6 +35,7 @@ export declare class PluginListComponent {
35
35
  installPlugin(plugin: ApplicationPlugin): Promise<void>;
36
36
  uninstallPlugin(plugin: ApplicationPlugin): Promise<void>;
37
37
  private updateAppRemotes;
38
+ private onUpdateEventHandleGS;
38
39
  private getAppsForUpdate;
39
40
  private isPluginInstalledInApp;
40
41
  private getPluginContextPathWithoutVersion;
@@ -135,9 +135,9 @@ export class GainsightService {
135
135
  */
136
136
  identify(sendPiiData, identifyData) {
137
137
  const windowRef = window;
138
- const { id: userId, email } = identifyData.user;
139
- const { name: tenantID } = identifyData.currentTenant;
140
- const { instanceId } = identifyData;
138
+ const { id: userId, email, roles } = identifyData.user;
139
+ const { name: tenantID, customProperties, domainName } = identifyData.currentTenant;
140
+ const { instanceId, versionUI, versionBE } = identifyData;
141
141
  /**
142
142
  * Passing ID is a minimum required data to make an identify call to Gainsight.
143
143
  * isUserCreatedAfterAnonymizationWasActivated parameter is passed to later distinguish between users created before and after data anonymization done by Gainsight.
@@ -154,36 +154,27 @@ export class GainsightService {
154
154
  isUserCreatedAfterAnonymizationWasActivated: true,
155
155
  tenantID: tenantID,
156
156
  email: '--',
157
- userName: '',
158
- firstName: '',
159
- lastName: '',
160
- domainName: '',
161
- versionUI: '',
162
- versionBE: '',
163
- userLanguage: '',
164
- instanceId: '',
165
- externalReference: '',
166
- userRoles: '',
157
+ userName: '--',
158
+ firstName: '--',
159
+ lastName: '--',
160
+ domainName,
161
+ versionUI,
162
+ versionBE,
163
+ userLanguage: this.translateService.currentLang,
164
+ instanceId,
165
+ externalReference: customProperties?.externalReference,
166
+ userRoles: this.transformUserRolesToStr(roles?.references),
167
167
  customBranding: this.isCustomBranding(),
168
168
  fullTracking: sendPiiData
169
169
  };
170
170
  if (sendPiiData) {
171
- const { userName, firstName, lastName, roles } = identifyData.user;
172
- const { customProperties, domainName } = identifyData.currentTenant;
173
- const { versionUI, versionBE } = identifyData;
171
+ const { userName, firstName, lastName } = identifyData.user;
174
172
  const extendedIdentify = {
175
173
  ...requiredIdentify,
176
174
  email,
177
175
  userName,
178
176
  firstName,
179
- lastName,
180
- domainName,
181
- versionUI,
182
- versionBE,
183
- userLanguage: this.translateService.currentLang,
184
- instanceId,
185
- externalReference: customProperties?.externalReference,
186
- userRoles: this.transformUserRolesToStr(roles?.references)
177
+ lastName
187
178
  };
188
179
  windowRef[this.GAINSIGHT_GLOBAL_SCOPE]('identify', extendedIdentify, {
189
180
  id: `${tenantID}_${instanceId}`,
@@ -382,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
382
373
  providedIn: 'root'
383
374
  }]
384
375
  }], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i2.OptionsService }, { type: i3.CookieBannerService }, { type: i4.UserPreferencesService }, { type: i5.TranslateService }]; } });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FpbnNpZ2h0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb2R1Y3QtZXhwZXJpZW5jZS9nYWluc2lnaHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7Ozs7QUF1QjdGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUEyQjNCLFlBQ1UsUUFBeUIsRUFDekIsT0FBdUIsRUFDdkIsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxnQkFBa0M7UUFKbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQjVDOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxJ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LENBQUM7UUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUN0QixlQUF1QixFQUN2QixZQUF1QztRQUV2QyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixPQUFPLGVBQWUsQ0FBQztTQUN4QjtRQUNELGlDQUFpQztRQUNqQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDMUIsYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OzZHQWphVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDdXJyZW50VGVuYW50LCBJQ3VzdG9tUHJvcGVydGllcywgSUlkZW50aWZpZWQsIElVc2VyIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY2FtZWxDYXNlLCBmbGF0TWFwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb29raWVCYW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vYm9vdHN0cmFwL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VzZXItcHJlZmVyZW5jZXMvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFB4RXZlbnREYXRhIH0gZnJvbSAnLi9wcm9kdWN0LWV4cGVyaWVuY2UubW9kZWwnO1xuXG5pbnRlcmZhY2UgVXNlclJvbGUge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHByb3BlcnR5IHVzZXIgVGhlIHVzZXIgd2hpY2ggaXMgZ2l2ZW4gdG8gR2FpbnNpZ2h0LlxuICogQHByb3BlcnR5IHRlbmFudCBUaGUgdGVuYW50IHdoaWNoIGlzIGdpdmVuIHRvIEdhaW5zaWdodC5cbiAqIEBwcm9wZXJ0eSBpbnN0YW5jZUlkIEV4dHJhY3RlZCBkb21haW4gcGFydCBvZiBhbiBVUkwuXG4gKiBAcHJvcGVydHkgdmVyc2lvblVJIFRoZSBVSSB2ZXJzaW9uIHVzZWQuXG4gKiBAcHJvcGVydHkgdmVyc2lvbkJFIFRoZSBCRSB2ZXJzaW9uIHVzZWQuXG4gKi9cbmludGVyZmFjZSBJZGVudGlmeURhdGEge1xuICB1c2VyOiBJVXNlcjtcbiAgY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQ7XG4gIGluc3RhbmNlSWQ6IHN0cmluZztcbiAgdmVyc2lvblVJPzogc3RyaW5nO1xuICB2ZXJzaW9uQkU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRvIG1hbmFnZSB0aGUgR2FpbnNpZ2h0IGludGVncmF0aW9uLiBJdCBhbGxvd3MgdG8gbG9hZCB0aGVcbiAqIHRhZyBhbmRcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR2FpbnNpZ2h0U2VydmljZSB7XG4gIC8qKlxuICAgKiBBIHN1YmplY3QgdGhhdCBlbWl0cyB0aGUgdGFnIGZ1bmN0aW9uIGFzIHNvb24gYXMgYSBuZXcgdGFnIGlzIHNldC5cbiAgICovXG4gIHRhZ0Z1bmN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHRyYWNraW5nTG9hZGVkJDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIEdhaW5zaWdodCBpcyBhY3RpdmF0ZWQgb25seSB3aGVuIHRoZSBjb29raWUgYmFubmVyIGlzIHByZXNlbnQuIElmIGZ1bmN0aW9uYWwgY29va2llcyBhcmUgZW5hYmxlZCwgYm90aCBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiAoUElJKSBhbmQgcmVxdWlyZWQgZGF0YSBhcmUgc2VudC5cbiAgICogT3RoZXJ3aXNlLCBvbmx5IHRoZSByZXF1aXJlZCBkYXRhIGlzIHRyYW5zbWl0dGVkIGR1cmluZyB0aGUgaWRlbnRpdHkgc3RlcCBleGVjdXRpb24uXG4gICAqL1xuICByZWFkb25seSBVU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9LRVkgPSAnZ2FpbnNpZ2h0RW5hYmxlZCc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUga2V5IHJlbWFpbmVkIHVuY2hhbmdlZCwgYnV0IGFwcGxpZXMgdG8gYWxsIGVuZ2FnZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfRU5HQUdFTUVOVFNfS0VZID0gJ2dhaW5zaWdodEJvdEVuYWJsZWQnO1xuICByZWFkb25seSBISURFX0dBSU5TSUdIVF9CT1RfU1RZTEVfSUQgPSAnaGlkZS1ncy1ib3QnO1xuICBwcml2YXRlIHJlYWRvbmx5IEdBSU5TSUdIVF9VUkwgPSAnd2ViLXNkay5hcHRyaW5zaWMuY29tL2FwaS9hcHRyaW5zaWMuanM/YT0nO1xuICBwcml2YXRlIHJlYWRvbmx5IEdBSU5TSUdIVF9HTE9CQUxfU0NPUEUgPSAnYXB0cmluc2ljJztcbiAgcHJpdmF0ZSByZWFkb25seSBTQ1JJUFRfRVhFQ1VUSU9OX1dBSVRfVElNRSA9IDUwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBPUFRJT05TX0tFWV9DQVRFR09SWSA9ICdnYWluc2lnaHQnO1xuICBwcml2YXRlIHJlYWRvbmx5IE9QVElPTlNfS0VZX05BTUUgPSAnYXBpLmtleSc7XG4gIHByaXZhdGUgaXNTY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBnYWluc2lnaHRLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSBjYWNoZWRSZXZlcnRlZFRyYW5zbGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBjYWNoZWRMYW5ndWFnZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29va2llQmFubmVyU2VydmljZTogQ29va2llQmFubmVyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgR2FpbnNpZ2h0IHByZWZlcmVuY2UgaXMgZGlzYWJsZWQgaW4gdXNlciBwcmVmZXJlbmNlcy5cbiAgICogQHBhcmFtIHByZWZlcmVuY2VOYW1lIC0gTmFtZSBvZiB0aGUgR2FpbnNpZ2h0IHByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcHJlZmVyZW5jZSBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBhc3luYyBpc0dhaW5zaWdodFByZWZlcmVuY2VEaXNhYmxlZEluVXNlclByZWZlcmVuY2VzKHByZWZlcmVuY2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB1c2VyR2FpbnNpZ2h0UHJlZiA9IGF3YWl0IHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5nZXQocHJlZmVyZW5jZU5hbWUpLnRvUHJvbWlzZSgpO1xuXG4gICAgcmV0dXJuIHVzZXJHYWluc2lnaHRQcmVmID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGF0ZSBvZiB0aGUgZnVuY3Rpb25hbCBjb29raWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBmdW5jdGlvbmFsIGNvb2tpZSBzaG91bGQgYmUgZW5hYmxlZCAoYHRydWVgKSBvciBkaXNhYmxlZCAoYGZhbHNlYCkuXG4gICAqL1xuICBzZXRGdW5jdGlvbmFsQ29va2llKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29va2llcyA9IHRoaXMuY29va2llQmFubmVyU2VydmljZS5nZXRVc2VyQ29va2llUHJlZmVyZW5jZXMoKTtcbiAgICBpZiAoY29va2llcykge1xuICAgICAgT2JqZWN0LmtleXMoY29va2llcykuZm9yRWFjaChjb29raWVOYW1lID0+IHtcbiAgICAgICAgaWYgKGNvb2tpZU5hbWUgPT09ICdmdW5jdGlvbmFsJykge1xuICAgICAgICAgIGNvb2tpZXNbY29va2llTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjY2VwdENvb2tpZU5vdGljZScsIEpTT04uc3RyaW5naWZ5KGNvb2tpZXMpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRHYWluc2lnaHRLZXkoKSB7XG4gICAgdGhpcy5nYWluc2lnaHRLZXkgPVxuICAgICAgdGhpcy5vcHRpb25zLmdhaW5zaWdodEtleSB8fFxuICAgICAgKGF3YWl0IHRoaXMub3B0aW9ucy5nZXRTeXN0ZW1PcHRpb24odGhpcy5PUFRJT05TX0tFWV9DQVRFR09SWSwgdGhpcy5PUFRJT05TX0tFWV9OQU1FKSk7XG4gICAgcmV0dXJuIHRoaXMuZ2FpbnNpZ2h0S2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRhZyBnbG9iYWwgZnVuY3Rpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdXNlclxuICAgKiBvciBhZGQgc3BlY2lhbCBldmVudHMuXG4gICAqL1xuICBnZXQgdGFnRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KVt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIHNjcmlwdCB0YWcgYW5kIGNhbGxzIHRoZSBpZGVudGlmeSBmdW5jdGlvbiB0byBzdGFydCB0aGUgdHJhY2tpbmcuXG4gICAqIEBwYXJhbSBjdXJyZW50VGVuYW50IFRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHBhcmFtIHNlbmRQaWlEYXRhIEZsYWcgZm9yIHNlbmRpbmcgcGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gKFBJSSkgZHVyaW5nIGlkZW50aWZpY2F0aW9uIGluIEdhaW5zaWdodC5cbiAgICovXG4gIGFzeW5jIGxvYWRUYWcoY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQsIHNlbmRQaWlEYXRhOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2NyaXB0VGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5nZXRHYWluc2lnaHRLZXkoKTtcblxuICAgIGlmIChrZXkgJiYgIXRoaXMuaXNTY3JpcHRMb2FkZWQpIHtcbiAgICAgIHRoaXMubG9hZFNjcmlwdFRhZyhzY3JpcHRUYWcsIGtleSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyU3RyZWFtID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlcjtcbiAgICAgIGNvbnN0IHNjcmlwdExvYWRTdHJlYW0gPSBmcm9tRXZlbnQoc2NyaXB0VGFnLCAnbG9hZCcpO1xuICAgICAgY29uc3QgdmVyc2lvblN0cmVhbSA9IHRoaXMuYXBwU3RhdGUuc3RhdGUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyB2ZXJzaW9ucyB9KSA9PiB2ZXJzaW9ucy5iYWNrZW5kKSxcbiAgICAgICAgbWFwKCh7IHZlcnNpb25zIH0pID0+IHZlcnNpb25zKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlU3RyZWFtcyA9IHNlbmRQaWlEYXRhXG4gICAgICAgID8gW2N1cnJlbnRVc2VyU3RyZWFtLCBzY3JpcHRMb2FkU3RyZWFtLCB2ZXJzaW9uU3RyZWFtXVxuICAgICAgICA6IFtjdXJyZW50VXNlclN0cmVhbSwgc2NyaXB0TG9hZFN0cmVhbV07XG5cbiAgICAgIGNvbWJpbmVMYXRlc3Qoc291cmNlU3RyZWFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVsYXkodGhpcy5TQ1JJUFRfRVhFQ1VUSU9OX1dBSVRfVElNRSksXG4gICAgICAgICAgZmlsdGVyKChbdXNlciwgc2NyaXB0RXZlbnRdKSA9PiAhIShzY3JpcHRFdmVudCAmJiB1c2VyKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGFyZ3MgPT4ge1xuICAgICAgICAgIGNvbnN0IFt1c2VyLCAsIHZlcnNpb25zXSA9IGFyZ3M7XG4gICAgICAgICAgdGhpcy5zZXRHbG9iYWxDb250ZXh0KCk7XG5cbiAgICAgICAgICBjb25zdCBpbnN0YW5jZUlkID0gdGhpcy5nZXRJbnN0YW5jZUlkRnJvbVVybCgpO1xuICAgICAgICAgIGlmIChzZW5kUGlpRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvblVJOiBzdHJpbmcgPSB2ZXJzaW9ucy51aS5uZ3g7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uQkU6IHN0cmluZyA9IHZlcnNpb25zLmJhY2tlbmQ7XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZElkZW50aWZ5RGF0YTogSWRlbnRpZnlEYXRhID0ge1xuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICBjdXJyZW50VGVuYW50LFxuICAgICAgICAgICAgICBpbnN0YW5jZUlkLFxuICAgICAgICAgICAgICB2ZXJzaW9uVUksXG4gICAgICAgICAgICAgIHZlcnNpb25CRVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpZnkoc2VuZFBpaURhdGEsIGV4dGVuZGVkSWRlbnRpZnlEYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRJZGVudGlmeURhdGE6IElkZW50aWZ5RGF0YSA9IHsgdXNlciwgY3VycmVudFRlbmFudCwgaW5zdGFuY2VJZCB9O1xuICAgICAgICAgICAgdGhpcy5pZGVudGlmeShzZW5kUGlpRGF0YSwgcmVxdWlyZWRJZGVudGlmeURhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzU2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRhZ0Z1bmN0aW9uJC5uZXh0KHRoaXMudGFnRnVuY3Rpb24pO1xuICAgICAgICAgIHRoaXMudHJhY2tpbmdMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoZSB1c2VyL2FjY291bnQgYXQgR2FpbnNpZ2h0LlxuICAgKiBAcGFyYW0gc2VuZFBpaURhdGEgRmxhZyBmb3Igc2VuZGluZyBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIGlkZW50aWZ5RGF0YSBPYmplY3QgY29udGFpbmluZyBpZGVudGlmaWNhdGlvbiBkYXRhLlxuICAgKi9cbiAgaWRlbnRpZnkoc2VuZFBpaURhdGE6IGJvb2xlYW4sIGlkZW50aWZ5RGF0YTogSWRlbnRpZnlEYXRhKSB7XG4gICAgY29uc3Qgd2luZG93UmVmID0gd2luZG93IGFzIGFueTtcbiAgICBjb25zdCB7IGlkOiB1c2VySWQsIGVtYWlsIH0gPSBpZGVudGlmeURhdGEudXNlcjtcbiAgICBjb25zdCB7IG5hbWU6IHRlbmFudElEIH0gPSBpZGVudGlmeURhdGEuY3VycmVudFRlbmFudDtcbiAgICBjb25zdCB7IGluc3RhbmNlSWQgfSA9IGlkZW50aWZ5RGF0YTtcblxuICAgIC8qKlxuICAgICAqIFBhc3NpbmcgSUQgaXMgYSBtaW5pbXVtIHJlcXVpcmVkIGRhdGEgdG8gbWFrZSBhbiBpZGVudGlmeSBjYWxsIHRvIEdhaW5zaWdodC5cbiAgICAgKiBpc1VzZXJDcmVhdGVkQWZ0ZXJBbm9ueW1pemF0aW9uV2FzQWN0aXZhdGVkIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gbGF0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbiB1c2VycyBjcmVhdGVkIGJlZm9yZSBhbmQgYWZ0ZXIgZGF0YSBhbm9ueW1pemF0aW9uIGRvbmUgYnkgR2FpbnNpZ2h0LlxuICAgICAqIHRlbmFudElEIFVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0ZW5hbnRzIHdoZW4gc2FtZSBlbWFpbCBpcyB1c2VkIGZvciBkaWZmZXJlbnQgdGVuYW50cy5cbiAgICAgKlxuICAgICAqIER1ZSB0byBHUyBsaW1pdGF0aW9ucyAoR1MgZG9lcyBub3QgYWxsb3cgY2xlYXJpbmcgdXNlciBhdHRyL3ByZWZlcmVuY2VzIHZpYSB0aGUgR1MgdGFnISksXG4gICAgICogd2UgYWx3YXlzIG5lZWQgdG8gaW5pdGlhbGl6ZSBmaWVsZHMgcmVsYXRlZCB0byBQSUkgdG8gcHJldmVudCBsZWFraW5nIHRoaXMgZGF0YSB0byBHUyB3aGVuIHRoZSB1c2VyIGhhcyBkaXNhYmxlZCBmdW5jdGlvbmFsIGNvb2tpZXMuXG4gICAgICovXG4gICAgY29uc3QgcmVxdWlyZWRJZGVudGlmeSA9IHtcbiAgICAgIC8qKlxuICAgICAgICogRW1haWwgd2FzIG5vdCBtYW5kYXRvcnkgZm9ybSBmaWVsZCB1bnRpbCAxMC4xNFxuICAgICAgICovXG4gICAgICBpZDogZW1haWwgPyBlbWFpbCA6IGAke3VzZXJJZH1fJHt0ZW5hbnRJRH1fJHtpbnN0YW5jZUlkfWAsXG4gICAgICBpc1VzZXJDcmVhdGVkQWZ0ZXJBbm9ueW1pemF0aW9uV2FzQWN0aXZhdGVkOiB0cnVlLFxuICAgICAgdGVuYW50SUQ6IHRlbmFudElELFxuICAgICAgZW1haWw6ICctLScsXG4gICAgICB1c2VyTmFtZTogJycsXG4gICAgICBmaXJzdE5hbWU6ICcnLFxuICAgICAgbGFzdE5hbWU6ICcnLFxuICAgICAgZG9tYWluTmFtZTogJycsXG4gICAgICB2ZXJzaW9uVUk6ICcnLFxuICAgICAgdmVyc2lvbkJFOiAnJyxcbiAgICAgIHVzZXJMYW5ndWFnZTogJycsXG4gICAgICBpbnN0YW5jZUlkOiAnJyxcbiAgICAgIGV4dGVybmFsUmVmZXJlbmNlOiAnJyxcbiAgICAgIHVzZXJSb2xlczogJycsXG4gICAgICBjdXN0b21CcmFuZGluZzogdGhpcy5pc0N1c3RvbUJyYW5kaW5nKCksXG4gICAgICBmdWxsVHJhY2tpbmc6IHNlbmRQaWlEYXRhXG4gICAgfTtcblxuICAgIGlmIChzZW5kUGlpRGF0YSkge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgcm9sZXMgfSA9IGlkZW50aWZ5RGF0YS51c2VyO1xuICAgICAgY29uc3QgeyBjdXN0b21Qcm9wZXJ0aWVzLCBkb21haW5OYW1lIH0gPSBpZGVudGlmeURhdGEuY3VycmVudFRlbmFudDtcbiAgICAgIGNvbnN0IHsgdmVyc2lvblVJLCB2ZXJzaW9uQkUgfSA9IGlkZW50aWZ5RGF0YTtcblxuICAgICAgY29uc3QgZXh0ZW5kZWRJZGVudGlmeSA9IHtcbiAgICAgICAgLi4ucmVxdWlyZWRJZGVudGlmeSxcbiAgICAgICAgZW1haWwsXG4gICAgICAgIHVzZXJOYW1lLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBkb21haW5OYW1lLFxuICAgICAgICB2ZXJzaW9uVUksXG4gICAgICAgIHZlcnNpb25CRSxcbiAgICAgICAgdXNlckxhbmd1YWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsXG4gICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgIGV4dGVybmFsUmVmZXJlbmNlOiBjdXN0b21Qcm9wZXJ0aWVzPy5leHRlcm5hbFJlZmVyZW5jZSxcbiAgICAgICAgdXNlclJvbGVzOiB0aGlzLnRyYW5zZm9ybVVzZXJSb2xlc1RvU3RyKHJvbGVzPy5yZWZlcmVuY2VzKVxuICAgICAgfTtcblxuICAgICAgd2luZG93UmVmW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0oJ2lkZW50aWZ5JywgZXh0ZW5kZWRJZGVudGlmeSwge1xuICAgICAgICBpZDogYCR7dGVuYW50SUR9XyR7aW5zdGFuY2VJZH1gLFxuICAgICAgICBpbnN0YW5jZUlkXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3dSZWZbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXSgnaWRlbnRpZnknLCByZXF1aXJlZElkZW50aWZ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyBhbiBldmVudCB0byBiZSByZWNvcmRlZCBieSBHYWluc2lnaHQgUFguXG4gICAqIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBHYWluc2lnaHQgUFgncyB0cmFja2luZyBtZWNoYW5pc20gdG8gbG9nIGEgc3BlY2lmaWMgZXZlbnRcbiAgICogYWxvbmcgd2l0aCBpdHMgYXNzb2NpYXRlZCBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQgdG8gYmUgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBPcHRpb25hbCBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuXG4gICAqL1xuICB0cmlnZ2VyRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHByb3BzPzogUHhFdmVudERhdGEpIHtcbiAgICBpZiAodGhpcy50YWdGdW5jdGlvbiAmJiBldmVudE5hbWUpIHtcbiAgICAgIGV2ZW50TmFtZSA9IHRoaXMucHJlcGFyZUV2ZW50TmFtZShldmVudE5hbWUpO1xuICAgICAgdGhpcy50YWdGdW5jdGlvbigndHJhY2snLCBldmVudE5hbWUsIHByb3BzKTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGVUb0VuZ2xpc2godGV4dFRvVHJhbnNsYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgY3VycmVudExhbmcgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcblxuICAgIGlmIChjdXJyZW50TGFuZyA9PT0gJ2VuJykge1xuICAgICAgcmV0dXJuIHRleHRUb1RyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudExhbmcgJiYgY3VycmVudExhbmcgIT09IHRoaXMuY2FjaGVkTGFuZ3VhZ2UpIHtcbiAgICAgIHRoaXMuY2FjaGVkUmV2ZXJ0ZWRUcmFuc2xhdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zKSB7XG4gICAgICB0aGlzLmNhY2hlZExhbmd1YWdlID0gY3VycmVudExhbmc7XG4gICAgICB0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zID0gdGhpcy5nZXRSZXZlcnRlZFRyYW5zbGF0aW9ucyhjdXJyZW50TGFuZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0RW5UcmFuc2xhdGlvbih0ZXh0VG9UcmFuc2xhdGUsIHRoaXMuY2FjaGVkUmV2ZXJ0ZWRUcmFuc2xhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiAoUElJKSBzaG91bGQgYmUgc2VudCB3aGlsZSBsb2FkaW5nIGEgdGFnLlxuICAgKiBUaGUgZGVjaXNpb24gdG8gYWN0aXZhdGUgR2FpbnNpZ2h0IGFuZCBzZW5kIFBJSSByZWxpZXMgb24gd2hldGhlciB0aGUgY29va2llUHJlZmVyZW5jZXMgb3B0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGFwcGxpY2F0aW9uIHNldHRpbmdzLFxuICAgKiBpZiB0aGUgZnVuY3Rpb25hbCBjb29raWUgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZSB1c2VyIGdyYW50cyBwZXJtaXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgc2hvdWxkU2VuZFBpaURhdGEoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29va2llQmFubmVyU2VydmljZS5pc0NvbmZpZ0Nvb2tpZVByZWZlcmVuY2VzRGVmaW5lZCgpICYmXG4gICAgICB0aGlzLmNvb2tpZUJhbm5lclNlcnZpY2UuaXNGdW5jdGlvbmFsQ29va2llRW5hYmxlZCgpICYmXG4gICAgICAhKGF3YWl0IHRoaXMuaXNHYWluc2lnaHRQcmVmZXJlbmNlRGlzYWJsZWRJblVzZXJQcmVmZXJlbmNlcyhcbiAgICAgICAgdGhpcy5VU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9LRVlcbiAgICAgICkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgc3BlY2lmaWMgdXNlciBhdHRyaWJ1dGUgaW4gdGhlIEdhaW5zaWdodCBnbG9iYWwgc2NvcGUuXG4gICAqIFRoaXMgbWV0aG9kIGludGVyZmFjZXMgd2l0aCB0aGUgR2FpbnNpZ2h0IGdsb2JhbCBvYmplY3QgdG8gc2V0IGEgdXNlcidzIHNwZWNpZmljIGF0dHJpYnV0ZSB3aXRoIGEgcHJvdmlkZWQgdmFsdWUuXG4gICAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgdXNlciBhdHRyaWJ1dGUgdG8gYmUgdXBkYXRlZC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gc2V0IGZvciB0aGUgc3BlY2lmaWVkIHVzZXIgYXR0cmlidXRlLlxuICAgKi9cbiAgdXBkYXRlVXNlckF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgYm9vbGVhbik6IHZvaWQge1xuICAgIHdpbmRvd1t0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdPy4oJ3NldCcsICd1c2VyJywgeyBbbmFtZV06IHZhbHVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gbW9kaWZ5IEdhaW5zaWdodCBQWCBzZXR0aW5ncy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2hlY2tzIG11bHRpcGxlIGNvbmRpdGlvbnM6XG4gICAqIDEuIFdoZXRoZXIgdHJhY2tpbmcgaGFzIGJlZW4gZGlzYWJsZWQgZ2xvYmFsbHkgdmlhIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqIDIuIFdoZXRoZXIgR2FpbnNpZ2h0IGlzIGRpc2FibGVkIGF0IHRoZSB0ZW5hbnQgbGV2ZWwgdGhyb3VnaCBjdXN0b20gcHJvcGVydGllcy5cbiAgICogMy4gV2hldGhlciBhIEdhaW5zaWdodCBrZXkgaXMgYXZhaWxhYmxlLCBlaXRoZXIgY3VycmVudGx5IGxvYWRlZCBvciBmZXRjaGVkIGFzeW5jaHJvbm91c2x5LlxuICAgKiA0LiBXaGV0aGVyIGNvb2tpZSBwcmVmZXJlbmNlcyBhcmUgZGVmaW5lZCBhbmQgYXZhaWxhYmxlIGZvciB0aGUgdXNlci5cbiAgICpcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbi4gVHJ1ZSBpbmRpY2F0ZXMgdGhlIHVzZXIgY2FuIGVkaXQgcHJvZHVjdCBleHBlcmllbmNlIHNldHRpbmdzLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgYXN5bmMgY2FuRWRpdFByb2R1Y3RFeHBlcmllbmNlU2V0dGluZ3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICBjb25zdCB7IGN1c3RvbVByb3BlcnRpZXMgfSA9IGN1cnJlbnRUZW5hbnQ7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pc1RyYWNraW5nRGlzYWJsZWQoKSB8fFxuICAgICAgdGhpcy5pc0dhaW5zaWdodERpc2FibGVkQXRUZW5hbnRDdXN0b21Qcm9wZXJ0aWVzKGN1c3RvbVByb3BlcnRpZXMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGdhaW5zaWdodEtleSA9ICEhdGhpcy5nYWluc2lnaHRLZXkgfHwgISEoYXdhaXQgdGhpcy5nZXRHYWluc2lnaHRLZXkoKSk7XG4gICAgcmV0dXJuIChcbiAgICAgIGdhaW5zaWdodEtleSAmJlxuICAgICAgdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmlzQ29uZmlnQ29va2llUHJlZmVyZW5jZXNEZWZpbmVkKCkgJiZcbiAgICAgICEhdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBnbG9iYWwgY29udGV4dCBmb3IgR2FpbnNpZ2h0IHdpdGggdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gbmFtZS5cbiAgICogVGhlIGdsb2JhbCBjb250ZXh0IGNhbiBiZSB1dGlsaXplZCBieSBHYWluc2lnaHQgZm9yIHZhcmlvdXMgcHVycG9zZXMsIHN1Y2ggYXMgc2VnbWVudGluZyB1c2Vycy5cbiAgICovXG4gIHNldEdsb2JhbENvbnRleHQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEFwcFN0YXRlID0gdGhpcy5hcHBTdGF0ZS5zdGF0ZSQudmFsdWU7XG4gICAgY29uc3QgY3VycmVudEFwcE5hbWUgPSBjdXJyZW50QXBwU3RhdGUuYXBwLm5hbWU7XG5cbiAgICB3aW5kb3dbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXT8uKCdzZXQnLCAnZ2xvYmFsQ29udGV4dCcsIHsgcHJvamVjdE5hbWU6IGN1cnJlbnRBcHBOYW1lIH0pO1xuICB9XG5cbiAgdHJhbnNmb3JtVXNlclJvbGVzVG9TdHIodXNlclJvbGVzPzogSUlkZW50aWZpZWRbXSk6IHN0cmluZyB7XG4gICAgaWYgKCF1c2VyUm9sZXMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdE1hcCh1c2VyUm9sZXMsICh1c2VyUm9sZTogeyByb2xlOiBVc2VyUm9sZSB9KSA9PiB1c2VyUm9sZS5yb2xlLm5hbWUpLmpvaW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgR2FpbnNpZ2h0IGlzIGRpc2FibGVkIGJhc2VkIG9uIHRlbmFudCBjdXN0b20gcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIGN1c3RvbVByb3BlcnRpZXMgLSBUaGUgY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIHRlbmFudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBHYWluc2lnaHQgaXMgZGlzYWJsZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzR2FpbnNpZ2h0RGlzYWJsZWRBdFRlbmFudEN1c3RvbVByb3BlcnRpZXMoY3VzdG9tUHJvcGVydGllczogSUN1c3RvbVByb3BlcnRpZXMpIHtcbiAgICBjb25zdCBnYWluc2lnaHRFbmFibGVkID0gY3VzdG9tUHJvcGVydGllcyAmJiBjdXN0b21Qcm9wZXJ0aWVzLmdhaW5zaWdodEVuYWJsZWQ7XG4gICAgcmV0dXJuIGdhaW5zaWdodEVuYWJsZWQgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgY3VzdG9tIGJyYW5kaW5nIGlzIGVuYWJsZWQgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIGEgYnJhbmQgbG9nby5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBjdXN0b20gYnJhbmRpbmcgaXMgYXBwbGllZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNDdXN0b21CcmFuZGluZygpOiBib29sZWFuIHtcbiAgICBjb25zdCBicmFuZGluZ0Nzc1ZhcnMgPSB0aGlzLm9wdGlvbnMuZ2V0KCdicmFuZGluZ0Nzc1ZhcnMnKSB8fCB7fTtcbiAgICByZXR1cm4gISFicmFuZGluZ0Nzc1ZhcnNbJ2JyYW5kLWxvZ28taW1nJ107XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0cmFja2luZyBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0aGUgYXBwbGljYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRyYWNraW5nIGlzIGRpc2FibGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGlzVHJhY2tpbmdEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRpc2FibGVUcmFja2luZyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUV2ZW50TmFtZShiYXNlRXZlbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBiYXNlRXZlbnROYW1lXG4gICAgICAuc3BsaXQoJzonKVxuICAgICAgLm1hcChldmVudE5hbWVQYXJ0ID0+IGNhbWVsQ2FzZShyZW1vdmVUcmFuc2xhdGlvbkNvbnRleHQoZXZlbnROYW1lUGFydCkpKVxuICAgICAgLmpvaW4oJzonKTtcblxuICAgIGZ1bmN0aW9uIHJlbW92ZVRyYW5zbGF0aW9uQ29udGV4dChldmVudE5hbWVQYXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGV2ZW50TmFtZVBhcnQucmVwbGFjZSgvYFtcXHdcXFddKmAvZywgJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZFNjcmlwdFRhZyhzY3JpcHRUYWc6IEhUTUxTY3JpcHRFbGVtZW50LCBrZXk6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB3aW5kb3dSZWYgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgY29uc3QgZmlyc3RUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG4gICAgICBjb25zdCBwcm90b2NvbCA9IGxvY2F0aW9uLnByb3RvY29sO1xuICAgICAgY29uc3QgZ2FpbnNpZ2h0R2xvYmFsU2NvcGUgPSB0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEU7XG4gICAgICBzY3JpcHRUYWcuc3JjID0gYCR7cHJvdG9jb2x9Ly8ke3RoaXMuR0FJTlNJR0hUX1VSTH0ke2tleX1gO1xuICAgICAgKHdpbmRvd1JlZlt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdID1cbiAgICAgICAgd2luZG93UmVmW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0gfHxcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm9ubHktYXJyb3ctZnVuY3Rpb25zXG4gICAgICAgIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgKHdpbmRvd1JlZltnYWluc2lnaHRHbG9iYWxTY29wZV0ucSA9IHdpbmRvd1JlZltnYWluc2lnaHRHbG9iYWxTY29wZV0ucSB8fCBbXSkucHVzaChhcmdzKTtcbiAgICAgICAgfSksXG4gICAgICAgICh3aW5kb3dSZWZbZ2FpbnNpZ2h0R2xvYmFsU2NvcGVdLnAgPSBrZXkpO1xuICAgICAgc2NyaXB0VGFnLmFzeW5jID0gdHJ1ZTtcbiAgICAgIGZpcnN0VGFnLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNjcmlwdFRhZywgZmlyc3RUYWcpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIEdhaW5zaWdodCBQWCcsIGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluc3RhbmNlSWRGcm9tVXJsKCkge1xuICAgIGNvbnN0IGhvc3ROYW1lID0gbG9jYXRpb24uaG9zdG5hbWU7XG4gICAgcmV0dXJuIGhvc3ROYW1lLnN1YnN0cmluZyhob3N0TmFtZS5pbmRleE9mKCcuJykgKyAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZlcnNlcyB0aGUgdHJhbnNsYXRpb24gb2JqZWN0LlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiB7IEFkZCB3aWRnZXQ6IFwiV2lkZ2V0IGhpbnp1ZsO8Z2VuXCIgfVxuICAgKlxuICAgKiB3aWxsIGJlIGNoYW5nZWQgdG86XG4gICAqXG4gICAqIHsgV2lkZ2V0IGhpbnp1ZsO8Z2VuOiBcIkFkZCB3aWRnZXRcIiB9XG4gICAqXG4gICAqIEBwYXJhbSBjdXJyZW50TGFuZyBMYW5ndWFnZSB3aG9zZSB0cmFuc2xhdGVkIHZhbHVlcyBhcmUgdG8gYmUgcGxhY2VkIGluIHRoZSBvYmplY3Qga2V5LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIGludmVydGVkIG9iamVjdCB3aGVyZSB0aGUga2V5cyBoYXZlIGJlZW4gc3dhcHBlZCB3aXRoIHRoZSB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIGdldFJldmVydGVkVHJhbnNsYXRpb25zKGN1cnJlbnRMYW5nOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RvcmUudHJhbnNsYXRpb25zW2N1cnJlbnRMYW5nXTtcblxuICAgIGNvbnN0IHN3YXBwZWRLZXlzV2l0aFZhbHVlcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgc3dhcHBlZEtleXNXaXRoVmFsdWVzW3RyYW5zbGF0aW9uc1trZXldXSA9IGtleTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3dhcHBlZEtleXNXaXRoVmFsdWVzO1xuICB9XG5cbiAgLyoqVHJhbnNsYXRlcyBzdHJpbmcgYmFjayBpbnRvIEVuZ2xpc2guXG4gICAqIElmIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGxhbmd1YWdlIGlzIHNldCB0byBFbmdsaXNoLCB0aGUgc3RyaW5nIHBhc3NlZCBhcyBhbiBhcmd1bWVudCBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIHRleHRUb1RyYW5zbGF0ZSBzdHJpbmcgdG8gdHJhbnNsYXRlLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBzdHJpbmcgdHJhbnNsYXRlZCBpbnRvIEVuZ2xpc2guXG4gICAqL1xuICBwcml2YXRlIGdldEVuVHJhbnNsYXRpb24oXG4gICAgdGV4dFRvVHJhbnNsYXRlOiBzdHJpbmcsXG4gICAgdHJhbnNsYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGVuVHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnNbdGV4dFRvVHJhbnNsYXRlXTtcbiAgICBpZiAoIWVuVHJhbnNsYXRpb24pIHtcbiAgICAgIHJldHVybiB0ZXh0VG9UcmFuc2xhdGU7XG4gICAgfVxuICAgIC8qKiByZW1vdmUgdHJhbnNsYXRpb24gY29udGV4dCAqL1xuICAgIGNvbnN0IHJlZ2V4ID0gL1xcYCguKj8pXFxgLztcbiAgICBlblRyYW5zbGF0aW9uID0gZW5UcmFuc2xhdGlvbi5yZXBsYWNlKHJlZ2V4LCAnJyk7XG5cbiAgICByZXR1cm4gZW5UcmFuc2xhdGlvbjtcbiAgfVxufVxuIl19
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FpbnNpZ2h0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb2R1Y3QtZXhwZXJpZW5jZS9nYWluc2lnaHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7Ozs7QUF1QjdGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUEyQjNCLFlBQ1UsUUFBeUIsRUFDekIsT0FBdUIsRUFDdkIsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxnQkFBa0M7UUFKbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQjVDOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxJ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Q3ZCLFlBQXVDO1FBRXZDLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU8sZUFBZSxDQUFDO1NBQ3hCO1FBQ0QsaUNBQWlDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUMxQixhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBeFpVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUN1cnJlbnRUZW5hbnQsIElDdXN0b21Qcm9wZXJ0aWVzLCBJSWRlbnRpZmllZCwgSVVzZXIgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjYW1lbENhc2UsIGZsYXRNYXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvb2tpZUJhbm5lclNlcnZpY2UgfSBmcm9tICcuLi9ib290c3RyYXAvY29va2llLWJhbm5lci9jb29raWUtYmFubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdXNlci1wcmVmZXJlbmNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHhFdmVudERhdGEgfSBmcm9tICcuL3Byb2R1Y3QtZXhwZXJpZW5jZS5tb2RlbCc7XG5cbmludGVyZmFjZSBVc2VyUm9sZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAcHJvcGVydHkgdXNlciBUaGUgdXNlciB3aGljaCBpcyBnaXZlbiB0byBHYWluc2lnaHQuXG4gKiBAcHJvcGVydHkgdGVuYW50IFRoZSB0ZW5hbnQgd2hpY2ggaXMgZ2l2ZW4gdG8gR2FpbnNpZ2h0LlxuICogQHByb3BlcnR5IGluc3RhbmNlSWQgRXh0cmFjdGVkIGRvbWFpbiBwYXJ0IG9mIGFuIFVSTC5cbiAqIEBwcm9wZXJ0eSB2ZXJzaW9uVUkgVGhlIFVJIHZlcnNpb24gdXNlZC5cbiAqIEBwcm9wZXJ0eSB2ZXJzaW9uQkUgVGhlIEJFIHZlcnNpb24gdXNlZC5cbiAqL1xuaW50ZXJmYWNlIElkZW50aWZ5RGF0YSB7XG4gIHVzZXI6IElVc2VyO1xuICBjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudDtcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICB2ZXJzaW9uVUk/OiBzdHJpbmc7XG4gIHZlcnNpb25CRT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgdG8gbWFuYWdlIHRoZSBHYWluc2lnaHQgaW50ZWdyYXRpb24uIEl0IGFsbG93cyB0byBsb2FkIHRoZVxuICogdGFnIGFuZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHYWluc2lnaHRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEEgc3ViamVjdCB0aGF0IGVtaXRzIHRoZSB0YWcgZnVuY3Rpb24gYXMgc29vbiBhcyBhIG5ldyB0YWcgaXMgc2V0LlxuICAgKi9cbiAgdGFnRnVuY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgdHJhY2tpbmdMb2FkZWQkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICAvKipcbiAgICogR2FpbnNpZ2h0IGlzIGFjdGl2YXRlZCBvbmx5IHdoZW4gdGhlIGNvb2tpZSBiYW5uZXIgaXMgcHJlc2VudC4gSWYgZnVuY3Rpb25hbCBjb29raWVzIGFyZSBlbmFibGVkLCBib3RoIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIChQSUkpIGFuZCByZXF1aXJlZCBkYXRhIGFyZSBzZW50LlxuICAgKiBPdGhlcndpc2UsIG9ubHkgdGhlIHJlcXVpcmVkIGRhdGEgaXMgdHJhbnNtaXR0ZWQgZHVyaW5nIHRoZSBpZGVudGl0eSBzdGVwIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IFVTRVJfUFJFRkVSRU5DRVNfR0FJTlNJR0hUX0tFWSA9ICdnYWluc2lnaHRFbmFibGVkJztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBrZXkgcmVtYWluZWQgdW5jaGFuZ2VkLCBidXQgYXBwbGllcyB0byBhbGwgZW5nYWdlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBVU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9FTkdBR0VNRU5UU19LRVkgPSAnZ2FpbnNpZ2h0Qm90RW5hYmxlZCc7XG4gIHJlYWRvbmx5IEhJREVfR0FJTlNJR0hUX0JPVF9TVFlMRV9JRCA9ICdoaWRlLWdzLWJvdCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgR0FJTlNJR0hUX1VSTCA9ICd3ZWItc2RrLmFwdHJpbnNpYy5jb20vYXBpL2FwdHJpbnNpYy5qcz9hPSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgR0FJTlNJR0hUX0dMT0JBTF9TQ09QRSA9ICdhcHRyaW5zaWMnO1xuICBwcml2YXRlIHJlYWRvbmx5IFNDUklQVF9FWEVDVVRJT05fV0FJVF9USU1FID0gNTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IE9QVElPTlNfS0VZX0NBVEVHT1JZID0gJ2dhaW5zaWdodCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgT1BUSU9OU19LRVlfTkFNRSA9ICdhcGkua2V5JztcbiAgcHJpdmF0ZSBpc1NjcmlwdExvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGdhaW5zaWdodEtleTogc3RyaW5nO1xuICBwcml2YXRlIGNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIGNhY2hlZExhbmd1YWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWVCYW5uZXJTZXJ2aWNlOiBDb29raWVCYW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBHYWluc2lnaHQgcHJlZmVyZW5jZSBpcyBkaXNhYmxlZCBpbiB1c2VyIHByZWZlcmVuY2VzLlxuICAgKiBAcGFyYW0gcHJlZmVyZW5jZU5hbWUgLSBOYW1lIG9mIHRoZSBHYWluc2lnaHQgcHJlZmVyZW5jZS5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwcmVmZXJlbmNlIGlzIGRpc2FibGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGFzeW5jIGlzR2FpbnNpZ2h0UHJlZmVyZW5jZURpc2FibGVkSW5Vc2VyUHJlZmVyZW5jZXMocHJlZmVyZW5jZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHVzZXJHYWluc2lnaHRQcmVmID0gYXdhaXQgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldChwcmVmZXJlbmNlTmFtZSkudG9Qcm9taXNlKCk7XG5cbiAgICByZXR1cm4gdXNlckdhaW5zaWdodFByZWYgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXRlIG9mIHRoZSBmdW5jdGlvbmFsIGNvb2tpZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gQSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGZ1bmN0aW9uYWwgY29va2llIHNob3VsZCBiZSBlbmFibGVkIChgdHJ1ZWApIG9yIGRpc2FibGVkIChgZmFsc2VgKS5cbiAgICovXG4gIHNldEZ1bmN0aW9uYWxDb29raWUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb29raWVzID0gdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpO1xuICAgIGlmIChjb29raWVzKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb29raWVzKS5mb3JFYWNoKGNvb2tpZU5hbWUgPT4ge1xuICAgICAgICBpZiAoY29va2llTmFtZSA9PT0gJ2Z1bmN0aW9uYWwnKSB7XG4gICAgICAgICAgY29va2llc1tjb29raWVOYW1lXSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXB0Q29va2llTm90aWNlJywgSlNPTi5zdHJpbmdpZnkoY29va2llcykpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEdhaW5zaWdodEtleSgpIHtcbiAgICB0aGlzLmdhaW5zaWdodEtleSA9XG4gICAgICB0aGlzLm9wdGlvbnMuZ2FpbnNpZ2h0S2V5IHx8XG4gICAgICAoYXdhaXQgdGhpcy5vcHRpb25zLmdldFN5c3RlbU9wdGlvbih0aGlzLk9QVElPTlNfS0VZX0NBVEVHT1JZLCB0aGlzLk9QVElPTlNfS0VZX05BTUUpKTtcbiAgICByZXR1cm4gdGhpcy5nYWluc2lnaHRLZXk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFnIGdsb2JhbCBmdW5jdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB1c2VyXG4gICAqIG9yIGFkZCBzcGVjaWFsIGV2ZW50cy5cbiAgICovXG4gIGdldCB0YWdGdW5jdGlvbigpIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV07XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgc2NyaXB0IHRhZyBhbmQgY2FsbHMgdGhlIGlkZW50aWZ5IGZ1bmN0aW9uIHRvIHN0YXJ0IHRoZSB0cmFja2luZy5cbiAgICogQHBhcmFtIGN1cnJlbnRUZW5hbnQgVGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKiBAcGFyYW0gc2VuZFBpaURhdGEgRmxhZyBmb3Igc2VuZGluZyBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiAoUElJKSBkdXJpbmcgaWRlbnRpZmljYXRpb24gaW4gR2FpbnNpZ2h0LlxuICAgKi9cbiAgYXN5bmMgbG9hZFRhZyhjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCwgc2VuZFBpaURhdGE6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzY3JpcHRUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmdldEdhaW5zaWdodEtleSgpO1xuXG4gICAgaWYgKGtleSAmJiAhdGhpcy5pc1NjcmlwdExvYWRlZCkge1xuICAgICAgdGhpcy5sb2FkU2NyaXB0VGFnKHNjcmlwdFRhZywga2V5KTtcblxuICAgICAgY29uc3QgY3VycmVudFVzZXJTdHJlYW0gPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyO1xuICAgICAgY29uc3Qgc2NyaXB0TG9hZFN0cmVhbSA9IGZyb21FdmVudChzY3JpcHRUYWcsICdsb2FkJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uU3RyZWFtID0gdGhpcy5hcHBTdGF0ZS5zdGF0ZSQucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHZlcnNpb25zIH0pID0+IHZlcnNpb25zLmJhY2tlbmQpLFxuICAgICAgICBtYXAoKHsgdmVyc2lvbnMgfSkgPT4gdmVyc2lvbnMpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzb3VyY2VTdHJlYW1zID0gc2VuZFBpaURhdGFcbiAgICAgICAgPyBbY3VycmVudFVzZXJTdHJlYW0sIHNjcmlwdExvYWRTdHJlYW0sIHZlcnNpb25TdHJlYW1dXG4gICAgICAgIDogW2N1cnJlbnRVc2VyU3RyZWFtLCBzY3JpcHRMb2FkU3RyZWFtXTtcblxuICAgICAgY29tYmluZUxhdGVzdChzb3VyY2VTdHJlYW1zKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWxheSh0aGlzLlNDUklQVF9FWEVDVVRJT05fV0FJVF9USU1FKSxcbiAgICAgICAgICBmaWx0ZXIoKFt1c2VyLCBzY3JpcHRFdmVudF0pID0+ICEhKHNjcmlwdEV2ZW50ICYmIHVzZXIpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoYXJncyA9PiB7XG4gICAgICAgICAgY29uc3QgW3VzZXIsICwgdmVyc2lvbnNdID0gYXJncztcbiAgICAgICAgICB0aGlzLnNldEdsb2JhbENvbnRleHQoKTtcblxuICAgICAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSB0aGlzLmdldEluc3RhbmNlSWRGcm9tVXJsKCk7XG4gICAgICAgICAgaWYgKHNlbmRQaWlEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uVUk6IHN0cmluZyA9IHZlcnNpb25zLnVpLm5neDtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25CRTogc3RyaW5nID0gdmVyc2lvbnMuYmFja2VuZDtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkSWRlbnRpZnlEYXRhOiBJZGVudGlmeURhdGEgPSB7XG4gICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgIGN1cnJlbnRUZW5hbnQsXG4gICAgICAgICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgICAgICAgIHZlcnNpb25VSSxcbiAgICAgICAgICAgICAgdmVyc2lvbkJFXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5pZGVudGlmeShzZW5kUGlpRGF0YSwgZXh0ZW5kZWRJZGVudGlmeURhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXF1aXJlZElkZW50aWZ5RGF0YTogSWRlbnRpZnlEYXRhID0geyB1c2VyLCBjdXJyZW50VGVuYW50LCBpbnN0YW5jZUlkIH07XG4gICAgICAgICAgICB0aGlzLmlkZW50aWZ5KHNlbmRQaWlEYXRhLCByZXF1aXJlZElkZW50aWZ5RGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTY3JpcHRMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudGFnRnVuY3Rpb24kLm5leHQodGhpcy50YWdGdW5jdGlvbik7XG4gICAgICAgICAgdGhpcy50cmFja2luZ0xvYWRlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMgdGhlIHVzZXIvYWNjb3VudCBhdCBHYWluc2lnaHQuXG4gICAqIEBwYXJhbSBzZW5kUGlpRGF0YSBGbGFnIGZvciBzZW5kaW5nIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0gaWRlbnRpZnlEYXRhIE9iamVjdCBjb250YWluaW5nIGlkZW50aWZpY2F0aW9uIGRhdGEuXG4gICAqL1xuICBpZGVudGlmeShzZW5kUGlpRGF0YTogYm9vbGVhbiwgaWRlbnRpZnlEYXRhOiBJZGVudGlmeURhdGEpIHtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSB3aW5kb3cgYXMgYW55O1xuICAgIGNvbnN0IHsgaWQ6IHVzZXJJZCwgZW1haWwsIHJvbGVzIH0gPSBpZGVudGlmeURhdGEudXNlcjtcbiAgICBjb25zdCB7IG5hbWU6IHRlbmFudElELCBjdXN0b21Qcm9wZXJ0aWVzLCBkb21haW5OYW1lIH0gPSBpZGVudGlmeURhdGEuY3VycmVudFRlbmFudDtcbiAgICBjb25zdCB7IGluc3RhbmNlSWQsIHZlcnNpb25VSSwgdmVyc2lvbkJFIH0gPSBpZGVudGlmeURhdGE7XG5cbiAgICAvKipcbiAgICAgKiBQYXNzaW5nIElEIGlzIGEgbWluaW11bSByZXF1aXJlZCBkYXRhIHRvIG1ha2UgYW4gaWRlbnRpZnkgY2FsbCB0byBHYWluc2lnaHQuXG4gICAgICogaXNVc2VyQ3JlYXRlZEFmdGVyQW5vbnltaXphdGlvbldhc0FjdGl2YXRlZCBwYXJhbWV0ZXIgaXMgcGFzc2VkIHRvIGxhdGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4gdXNlcnMgY3JlYXRlZCBiZWZvcmUgYW5kIGFmdGVyIGRhdGEgYW5vbnltaXphdGlvbiBkb25lIGJ5IEdhaW5zaWdodC5cbiAgICAgKiB0ZW5hbnRJRCBVc2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGVuYW50cyB3aGVuIHNhbWUgZW1haWwgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHRlbmFudHMuXG4gICAgICpcbiAgICAgKiBEdWUgdG8gR1MgbGltaXRhdGlvbnMgKEdTIGRvZXMgbm90IGFsbG93IGNsZWFyaW5nIHVzZXIgYXR0ci9wcmVmZXJlbmNlcyB2aWEgdGhlIEdTIHRhZyEpLFxuICAgICAqIHdlIGFsd2F5cyBuZWVkIHRvIGluaXRpYWxpemUgZmllbGRzIHJlbGF0ZWQgdG8gUElJIHRvIHByZXZlbnQgbGVha2luZyB0aGlzIGRhdGEgdG8gR1Mgd2hlbiB0aGUgdXNlciBoYXMgZGlzYWJsZWQgZnVuY3Rpb25hbCBjb29raWVzLlxuICAgICAqL1xuICAgIGNvbnN0IHJlcXVpcmVkSWRlbnRpZnkgPSB7XG4gICAgICAvKipcbiAgICAgICAqIEVtYWlsIHdhcyBub3QgbWFuZGF0b3J5IGZvcm0gZmllbGQgdW50aWwgMTAuMTRcbiAgICAgICAqL1xuICAgICAgaWQ6IGVtYWlsID8gZW1haWwgOiBgJHt1c2VySWR9XyR7dGVuYW50SUR9XyR7aW5zdGFuY2VJZH1gLFxuICAgICAgaXNVc2VyQ3JlYXRlZEFmdGVyQW5vbnltaXphdGlvbldhc0FjdGl2YXRlZDogdHJ1ZSxcbiAgICAgIHRlbmFudElEOiB0ZW5hbnRJRCxcbiAgICAgIGVtYWlsOiAnLS0nLFxuICAgICAgdXNlck5hbWU6ICctLScsXG4gICAgICBmaXJzdE5hbWU6ICctLScsXG4gICAgICBsYXN0TmFtZTogJy0tJyxcbiAgICAgIGRvbWFpbk5hbWUsXG4gICAgICB2ZXJzaW9uVUksXG4gICAgICB2ZXJzaW9uQkUsXG4gICAgICB1c2VyTGFuZ3VhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyxcbiAgICAgIGluc3RhbmNlSWQsXG4gICAgICBleHRlcm5hbFJlZmVyZW5jZTogY3VzdG9tUHJvcGVydGllcz8uZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICB1c2VyUm9sZXM6IHRoaXMudHJhbnNmb3JtVXNlclJvbGVzVG9TdHIocm9sZXM/LnJlZmVyZW5jZXMpLFxuICAgICAgY3VzdG9tQnJhbmRpbmc6IHRoaXMuaXNDdXN0b21CcmFuZGluZygpLFxuICAgICAgZnVsbFRyYWNraW5nOiBzZW5kUGlpRGF0YVxuICAgIH07XG5cbiAgICBpZiAoc2VuZFBpaURhdGEpIHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUsIGZpcnN0TmFtZSwgbGFzdE5hbWUgfSA9IGlkZW50aWZ5RGF0YS51c2VyO1xuXG4gICAgICBjb25zdCBleHRlbmRlZElkZW50aWZ5ID0ge1xuICAgICAgICAuLi5yZXF1aXJlZElkZW50aWZ5LFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgdXNlck5hbWUsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWVcbiAgICAgIH07XG5cbiAgICAgIHdpbmRvd1JlZlt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdKCdpZGVudGlmeScsIGV4dGVuZGVkSWRlbnRpZnksIHtcbiAgICAgICAgaWQ6IGAke3RlbmFudElEfV8ke2luc3RhbmNlSWR9YCxcbiAgICAgICAgaW5zdGFuY2VJZFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd2luZG93UmVmW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0oJ2lkZW50aWZ5JywgcmVxdWlyZWRJZGVudGlmeSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcnMgYW4gZXZlbnQgdG8gYmUgcmVjb3JkZWQgYnkgR2FpbnNpZ2h0IFBYLlxuICAgKiBUaGlzIG1ldGhvZCBjYWxscyB0aGUgR2FpbnNpZ2h0IFBYJ3MgdHJhY2tpbmcgbWVjaGFuaXNtIHRvIGxvZyBhIHNwZWNpZmljIGV2ZW50XG4gICAqIGFsb25nIHdpdGggaXRzIGFzc29jaWF0ZWQgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50IHRvIGJlIHRyaWdnZXJlZC5cbiAgICogQHBhcmFtIHByb3BzIC0gT3B0aW9uYWwgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50LlxuICAgKi9cbiAgdHJpZ2dlckV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wcz86IFB4RXZlbnREYXRhKSB7XG4gICAgaWYgKHRoaXMudGFnRnVuY3Rpb24gJiYgZXZlbnROYW1lKSB7XG4gICAgICBldmVudE5hbWUgPSB0aGlzLnByZXBhcmVFdmVudE5hbWUoZXZlbnROYW1lKTtcbiAgICAgIHRoaXMudGFnRnVuY3Rpb24oJ3RyYWNrJywgZXZlbnROYW1lLCBwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlVG9FbmdsaXNoKHRleHRUb1RyYW5zbGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGN1cnJlbnRMYW5nIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgICBpZiAoY3VycmVudExhbmcgPT09ICdlbicpIHtcbiAgICAgIHJldHVybiB0ZXh0VG9UcmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRMYW5nICYmIGN1cnJlbnRMYW5nICE9PSB0aGlzLmNhY2hlZExhbmd1YWdlKSB7XG4gICAgICB0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jYWNoZWRSZXZlcnRlZFRyYW5zbGF0aW9ucykge1xuICAgICAgdGhpcy5jYWNoZWRMYW5ndWFnZSA9IGN1cnJlbnRMYW5nO1xuICAgICAgdGhpcy5jYWNoZWRSZXZlcnRlZFRyYW5zbGF0aW9ucyA9IHRoaXMuZ2V0UmV2ZXJ0ZWRUcmFuc2xhdGlvbnMoY3VycmVudExhbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEVuVHJhbnNsYXRpb24odGV4dFRvVHJhbnNsYXRlLCB0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gKFBJSSkgc2hvdWxkIGJlIHNlbnQgd2hpbGUgbG9hZGluZyBhIHRhZy5cbiAgICogVGhlIGRlY2lzaW9uIHRvIGFjdGl2YXRlIEdhaW5zaWdodCBhbmQgc2VuZCBQSUkgcmVsaWVzIG9uIHdoZXRoZXIgdGhlIGNvb2tpZVByZWZlcmVuY2VzIG9wdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyxcbiAgICogaWYgdGhlIGZ1bmN0aW9uYWwgY29va2llIGlzIGVuYWJsZWQsIGFuZCBpZiB0aGUgdXNlciBncmFudHMgcGVybWlzc2lvbi5cbiAgICovXG4gIGFzeW5jIHNob3VsZFNlbmRQaWlEYXRhKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvb2tpZUJhbm5lclNlcnZpY2UuaXNDb25maWdDb29raWVQcmVmZXJlbmNlc0RlZmluZWQoKSAmJlxuICAgICAgdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmlzRnVuY3Rpb25hbENvb2tpZUVuYWJsZWQoKSAmJlxuICAgICAgIShhd2FpdCB0aGlzLmlzR2FpbnNpZ2h0UHJlZmVyZW5jZURpc2FibGVkSW5Vc2VyUHJlZmVyZW5jZXMoXG4gICAgICAgIHRoaXMuVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfS0VZXG4gICAgICApKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhIHNwZWNpZmljIHVzZXIgYXR0cmlidXRlIGluIHRoZSBHYWluc2lnaHQgZ2xvYmFsIHNjb3BlLlxuICAgKiBUaGlzIG1ldGhvZCBpbnRlcmZhY2VzIHdpdGggdGhlIEdhaW5zaWdodCBnbG9iYWwgb2JqZWN0IHRvIHNldCBhIHVzZXIncyBzcGVjaWZpYyBhdHRyaWJ1dGUgd2l0aCBhIHByb3ZpZGVkIHZhbHVlLlxuICAgKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIHVzZXIgYXR0cmlidXRlIHRvIGJlIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIHNldCBmb3IgdGhlIHNwZWNpZmllZCB1c2VyIGF0dHJpYnV0ZS5cbiAgICovXG4gIHVwZGF0ZVVzZXJBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciB8IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB3aW5kb3dbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXT8uKCdzZXQnLCAndXNlcicsIHsgW25hbWVdOiB2YWx1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIG1vZGlmeSBHYWluc2lnaHQgUFggc2V0dGluZ3MuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBtdWx0aXBsZSBjb25kaXRpb25zOlxuICAgKiAxLiBXaGV0aGVyIHRyYWNraW5nIGhhcyBiZWVuIGRpc2FibGVkIGdsb2JhbGx5IHZpYSBhcHBsaWNhdGlvbiBvcHRpb25zLlxuICAgKiAyLiBXaGV0aGVyIEdhaW5zaWdodCBpcyBkaXNhYmxlZCBhdCB0aGUgdGVuYW50IGxldmVsIHRocm91Z2ggY3VzdG9tIHByb3BlcnRpZXMuXG4gICAqIDMuIFdoZXRoZXIgYSBHYWluc2lnaHQga2V5IGlzIGF2YWlsYWJsZSwgZWl0aGVyIGN1cnJlbnRseSBsb2FkZWQgb3IgZmV0Y2hlZCBhc3luY2hyb25vdXNseS5cbiAgICogNC4gV2hldGhlciBjb29raWUgcHJlZmVyZW5jZXMgYXJlIGRlZmluZWQgYW5kIGF2YWlsYWJsZSBmb3IgdGhlIHVzZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4uIFRydWUgaW5kaWNhdGVzIHRoZSB1c2VyIGNhbiBlZGl0IHByb2R1Y3QgZXhwZXJpZW5jZSBzZXR0aW5ncywgYW5kIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGNhbkVkaXRQcm9kdWN0RXhwZXJpZW5jZVNldHRpbmdzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gPSBjdXJyZW50VGVuYW50O1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNUcmFja2luZ0Rpc2FibGVkKCkgfHxcbiAgICAgIHRoaXMuaXNHYWluc2lnaHREaXNhYmxlZEF0VGVuYW50Q3VzdG9tUHJvcGVydGllcyhjdXN0b21Qcm9wZXJ0aWVzKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBnYWluc2lnaHRLZXkgPSAhIXRoaXMuZ2FpbnNpZ2h0S2V5IHx8ICEhKGF3YWl0IHRoaXMuZ2V0R2FpbnNpZ2h0S2V5KCkpO1xuICAgIHJldHVybiAoXG4gICAgICBnYWluc2lnaHRLZXkgJiZcbiAgICAgIHRoaXMuY29va2llQmFubmVyU2VydmljZS5pc0NvbmZpZ0Nvb2tpZVByZWZlcmVuY2VzRGVmaW5lZCgpICYmXG4gICAgICAhIXRoaXMuY29va2llQmFubmVyU2VydmljZS5nZXRVc2VyQ29va2llUHJlZmVyZW5jZXMoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZ2xvYmFsIGNvbnRleHQgZm9yIEdhaW5zaWdodCB3aXRoIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIG5hbWUuXG4gICAqIFRoZSBnbG9iYWwgY29udGV4dCBjYW4gYmUgdXRpbGl6ZWQgYnkgR2FpbnNpZ2h0IGZvciB2YXJpb3VzIHB1cnBvc2VzLCBzdWNoIGFzIHNlZ21lbnRpbmcgdXNlcnMuXG4gICAqL1xuICBzZXRHbG9iYWxDb250ZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRBcHBTdGF0ZSA9IHRoaXMuYXBwU3RhdGUuc3RhdGUkLnZhbHVlO1xuICAgIGNvbnN0IGN1cnJlbnRBcHBOYW1lID0gY3VycmVudEFwcFN0YXRlLmFwcC5uYW1lO1xuXG4gICAgd2luZG93W3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0/Lignc2V0JywgJ2dsb2JhbENvbnRleHQnLCB7IHByb2plY3ROYW1lOiBjdXJyZW50QXBwTmFtZSB9KTtcbiAgfVxuXG4gIHRyYW5zZm9ybVVzZXJSb2xlc1RvU3RyKHVzZXJSb2xlcz86IElJZGVudGlmaWVkW10pOiBzdHJpbmcge1xuICAgIGlmICghdXNlclJvbGVzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRNYXAodXNlclJvbGVzLCAodXNlclJvbGU6IHsgcm9sZTogVXNlclJvbGUgfSkgPT4gdXNlclJvbGUucm9sZS5uYW1lKS5qb2luKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIEdhaW5zaWdodCBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0ZW5hbnQgY3VzdG9tIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjdXN0b21Qcm9wZXJ0aWVzIC0gVGhlIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZW5hbnQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFRydWUgaWYgR2FpbnNpZ2h0IGlzIGRpc2FibGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0dhaW5zaWdodERpc2FibGVkQXRUZW5hbnRDdXN0b21Qcm9wZXJ0aWVzKGN1c3RvbVByb3BlcnRpZXM6IElDdXN0b21Qcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgZ2FpbnNpZ2h0RW5hYmxlZCA9IGN1c3RvbVByb3BlcnRpZXMgJiYgY3VzdG9tUHJvcGVydGllcy5nYWluc2lnaHRFbmFibGVkO1xuICAgIHJldHVybiBnYWluc2lnaHRFbmFibGVkID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGN1c3RvbSBicmFuZGluZyBpcyBlbmFibGVkIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBhIGJyYW5kIGxvZ28uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFRydWUgaWYgY3VzdG9tIGJyYW5kaW5nIGlzIGFwcGxpZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzQ3VzdG9tQnJhbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYnJhbmRpbmdDc3NWYXJzID0gdGhpcy5vcHRpb25zLmdldCgnYnJhbmRpbmdDc3NWYXJzJykgfHwge307XG4gICAgcmV0dXJuICEhYnJhbmRpbmdDc3NWYXJzWydicmFuZC1sb2dvLWltZyddO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdHJhY2tpbmcgaXMgZGlzYWJsZWQgYmFzZWQgb24gdGhlIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0cmFja2luZyBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc1RyYWNraW5nRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kaXNhYmxlVHJhY2tpbmcgPT09IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVFdmVudE5hbWUoYmFzZUV2ZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmFzZUV2ZW50TmFtZVxuICAgICAgLnNwbGl0KCc6JylcbiAgICAgIC5tYXAoZXZlbnROYW1lUGFydCA9PiBjYW1lbENhc2UocmVtb3ZlVHJhbnNsYXRpb25Db250ZXh0KGV2ZW50TmFtZVBhcnQpKSlcbiAgICAgIC5qb2luKCc6Jyk7XG5cbiAgICBmdW5jdGlvbiByZW1vdmVUcmFuc2xhdGlvbkNvbnRleHQoZXZlbnROYW1lUGFydDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBldmVudE5hbWVQYXJ0LnJlcGxhY2UoL2BbXFx3XFxXXSpgL2csICcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRTY3JpcHRUYWcoc2NyaXB0VGFnOiBIVE1MU2NyaXB0RWxlbWVudCwga2V5OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgd2luZG93UmVmID0gd2luZG93IGFzIGFueTtcbiAgICAgIGNvbnN0IGZpcnN0VGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSBsb2NhdGlvbi5wcm90b2NvbDtcbiAgICAgIGNvbnN0IGdhaW5zaWdodEdsb2JhbFNjb3BlID0gdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFO1xuICAgICAgc2NyaXB0VGFnLnNyYyA9IGAke3Byb3RvY29sfS8vJHt0aGlzLkdBSU5TSUdIVF9VUkx9JHtrZXl9YDtcbiAgICAgICh3aW5kb3dSZWZbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXSA9XG4gICAgICAgIHdpbmRvd1JlZlt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdIHx8XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpvbmx5LWFycm93LWZ1bmN0aW9uc1xuICAgICAgICBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICh3aW5kb3dSZWZbZ2FpbnNpZ2h0R2xvYmFsU2NvcGVdLnEgPSB3aW5kb3dSZWZbZ2FpbnNpZ2h0R2xvYmFsU2NvcGVdLnEgfHwgW10pLnB1c2goYXJncyk7XG4gICAgICAgIH0pLFxuICAgICAgICAod2luZG93UmVmW2dhaW5zaWdodEdsb2JhbFNjb3BlXS5wID0ga2V5KTtcbiAgICAgIHNjcmlwdFRhZy5hc3luYyA9IHRydWU7XG4gICAgICBmaXJzdFRhZy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzY3JpcHRUYWcsIGZpcnN0VGFnKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBHYWluc2lnaHQgUFgnLCBleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnN0YW5jZUlkRnJvbVVybCgpIHtcbiAgICBjb25zdCBob3N0TmFtZSA9IGxvY2F0aW9uLmhvc3RuYW1lO1xuICAgIHJldHVybiBob3N0TmFtZS5zdWJzdHJpbmcoaG9zdE5hbWUuaW5kZXhPZignLicpICsgMSk7XG4gIH1cblxuICAvKipcbiAgICogUmV2ZXJzZXMgdGhlIHRyYW5zbGF0aW9uIG9iamVjdC5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogeyBBZGQgd2lkZ2V0OiBcIldpZGdldCBoaW56dWbDvGdlblwiIH1cbiAgICpcbiAgICogd2lsbCBiZSBjaGFuZ2VkIHRvOlxuICAgKlxuICAgKiB7IFdpZGdldCBoaW56dWbDvGdlbjogXCJBZGQgd2lkZ2V0XCIgfVxuICAgKlxuICAgKiBAcGFyYW0gY3VycmVudExhbmcgTGFuZ3VhZ2Ugd2hvc2UgdHJhbnNsYXRlZCB2YWx1ZXMgYXJlIHRvIGJlIHBsYWNlZCBpbiB0aGUgb2JqZWN0IGtleS5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBpbnZlcnRlZCBvYmplY3Qgd2hlcmUgdGhlIGtleXMgaGF2ZSBiZWVuIHN3YXBwZWQgd2l0aCB0aGUgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRSZXZlcnRlZFRyYW5zbGF0aW9ucyhjdXJyZW50TGFuZzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0b3JlLnRyYW5zbGF0aW9uc1tjdXJyZW50TGFuZ107XG5cbiAgICBjb25zdCBzd2FwcGVkS2V5c1dpdGhWYWx1ZXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHN3YXBwZWRLZXlzV2l0aFZhbHVlc1t0cmFuc2xhdGlvbnNba2V5XV0gPSBrZXk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN3YXBwZWRLZXlzV2l0aFZhbHVlcztcbiAgfVxuXG4gIC8qKlRyYW5zbGF0ZXMgc3RyaW5nIGJhY2sgaW50byBFbmdsaXNoLlxuICAgKiBJZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBsYW5ndWFnZSBpcyBzZXQgdG8gRW5nbGlzaCwgdGhlIHN0cmluZyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB0ZXh0VG9UcmFuc2xhdGUgc3RyaW5nIHRvIHRyYW5zbGF0ZS5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgc3RyaW5nIHRyYW5zbGF0ZWQgaW50byBFbmdsaXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFblRyYW5zbGF0aW9uKFxuICAgIHRleHRUb1RyYW5zbGF0ZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICApOiBzdHJpbmcge1xuICAgIGxldCBlblRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25zW3RleHRUb1RyYW5zbGF0ZV07XG4gICAgaWYgKCFlblRyYW5zbGF0aW9uKSB7XG4gICAgICByZXR1cm4gdGV4dFRvVHJhbnNsYXRlO1xuICAgIH1cbiAgICAvKiogcmVtb3ZlIHRyYW5zbGF0aW9uIGNvbnRleHQgKi9cbiAgICBjb25zdCByZWdleCA9IC9cXGAoLio/KVxcYC87XG4gICAgZW5UcmFuc2xhdGlvbiA9IGVuVHJhbnNsYXRpb24ucmVwbGFjZShyZWdleCwgJycpO1xuXG4gICAgcmV0dXJuIGVuVHJhbnNsYXRpb247XG4gIH1cbn1cbiJdfQ==
@@ -6,6 +6,7 @@ import { TranslateService } from '@ngx-translate/core';
6
6
  import { BsModalService } from 'ngx-bootstrap/modal';
7
7
  import { BehaviorSubject, Observable } from 'rxjs';
8
8
  import { AppsToUpdateRemotesSelectComponent } from './apps-to-update-remotes-select.component';
9
+ import { pick } from 'lodash-es';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@c8y/ngx-components/ecosystem/shared";
11
12
  import * as i2 from "ngx-bootstrap/modal";
@@ -42,11 +43,6 @@ export class PluginListComponent {
42
43
  await this.updateAppRemotes(plugin, 'install');
43
44
  }
44
45
  async uninstallPlugin(plugin) {
45
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
46
- component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
47
- action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.INSTALL_PLUGIN,
48
- url: this.CURRENT_LOCATION
49
- });
50
46
  await this.updateAppRemotes(plugin, 'uninstall');
51
47
  }
52
48
  async updateAppRemotes(plugin, updateType) {
@@ -99,22 +95,40 @@ export class PluginListComponent {
99
95
  })
100
96
  : this.translateService.instant(gettext('Plugin uninstalled from application "{{ appName }}".'), { appName: app.name });
101
97
  this.alertService.success(successText);
102
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
103
- component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
104
- result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED,
105
- url: this.CURRENT_LOCATION
106
- });
98
+ this.onUpdateEventHandleGS(plugin, app, updateType);
107
99
  }
108
- catch {
100
+ catch (error) {
109
101
  this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
110
102
  component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
111
103
  result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,
112
- url: this.CURRENT_LOCATION
104
+ url: this.CURRENT_LOCATION,
105
+ error
113
106
  });
114
107
  }
115
108
  }
116
109
  this.updatingPluginId[updateType] = '';
117
110
  }
111
+ onUpdateEventHandleGS(plugin, app, updateType) {
112
+ const pluginCustomEventInfo = pick(plugin, [
113
+ 'name',
114
+ 'contextPath',
115
+ 'module',
116
+ 'version',
117
+ 'type',
118
+ 'id'
119
+ ]);
120
+ const gsEventResult = updateType === 'install'
121
+ ? PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_INSTALLED
122
+ : PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.PLUGIN_REMOVED;
123
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.PACKAGE_PLUGINS, {
124
+ component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.PLUGIN_LIST,
125
+ result: gsEventResult,
126
+ url: this.CURRENT_LOCATION,
127
+ ...pluginCustomEventInfo,
128
+ targetApplicationName: app.name,
129
+ targetApplicationContextPath: app.contextPath
130
+ });
131
+ }
118
132
  async getAppsForUpdate(plugin, updateType) {
119
133
  let apps = (await this.ecosystemService.getWebApplications()).filter(app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL);
120
134
  if (updateType === 'install') {
@@ -219,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
219
233
  }], selectedItems: [{
220
234
  type: Output
221
235
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTRCLGVBQWUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDdEYsT0FBTyxFQUNMLFlBQVksRUFFWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7QUFPL0YsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFDVSxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLGdCQUFrQztRQUxsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIs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OlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucywgQXBwbGljYXRpb25UeXBlLCBJQXBwbGljYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFwcGxpY2F0aW9uUGx1Z2luLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBQbHVnaW5zU2VydmljZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UsIFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHBzLXRvLXVwZGF0ZS1yZW1vdGVzLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlVHlwZSB9IGZyb20gJy4vYXBwcy10by11cGRhdGUtcmVtb3Rlcy1zZWxlY3QubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGx1Z2luLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBsdWdpbkxpc3RDb21wb25lbnQge1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICBASW5wdXQoKSBwbHVnaW5zJDogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvblBsdWdpbltdPjtcbiAgQElucHV0KCkgZW1wdHlMaXN0VGV4dCA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogU2hvd3MgdGhlIGluc3RhbGwgYnV0dG9uIGZvciBlYWNoIHBsdWdpbiBzZXBhcmF0ZWx5LiBDdXJyZW50bHkgdXNlZCBpbiBwYWNrYWdlLWRldGFpbHMgdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIGluc3RhbGxhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhY2thZ2U6IElBcHBsaWNhdGlvbjtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXM6IEV2ZW50RW1pdHRlcjxBcHBsaWNhdGlvblBsdWdpbltdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcmVtb3RlUGx1Z2lucyQ6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHNlbGVjdGVkUGx1Z2luczogeyBba2V5OiBzdHJpbmddOiBBcHBsaWNhdGlvblBsdWdpbiB9ID0ge307XG4gIHVwZGF0aW5nUGx1Z2luSWQ6IFJlY29yZDxVcGRhdGVUeXBlLCBzdHJpbmc+ID0geyBpbnN0YWxsOiAnJywgdW5pbnN0YWxsOiAnJyB9O1xuICBhcHBzRGlzYWJsZWQ6IFNldDxJQXBwbGljYXRpb25bJ2lkJ10+ID0gbmV3IFNldDxJQXBwbGljYXRpb25bJ2lkJ10+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgdXBkYXRlU2VsZWN0ZWRJdGVtcyhzZWxlY3RlZDogYm9vbGVhbiwgcGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbikge1xuICAgIHRoaXMuc2VsZWN0ZWRQbHVnaW5zW3BsdWdpbi5pZF0gPSBzZWxlY3RlZCA/IHBsdWdpbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmx5SW5zdGFsbGVkUGx1Z2lucyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFBsdWdpbnMpLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChvbmx5SW5zdGFsbGVkUGx1Z2lucyk7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsUGx1Z2luKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcFJlbW90ZXMocGx1Z2luLCAnaW5zdGFsbCcpO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsUGx1Z2luKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfUExVR0lOUywge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUExVR0lOX0xJU1QsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5JTlNUQUxMX1BMVUdJTixcbiAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBSZW1vdGVzKHBsdWdpbiwgJ3VuaW5zdGFsbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBcHBSZW1vdGVzKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSBwbHVnaW4/LmlkO1xuICAgIGxldCBpbml0aWFsU3RhdGU6IFBpY2s8XG4gICAgICBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50LFxuICAgICAgJ2FwcHMnIHwgJ3VwZGF0ZVR5cGUnIHwgJ3BsdWdpbk5hbWUnIHwgJ2FwcHNEaXNhYmxlZCdcbiAgICA+O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5nZXRBcHBzRm9yVXBkYXRlKHBsdWdpbiwgdXBkYXRlVHlwZSk7XG4gICAgICBpbml0aWFsU3RhdGUgPSB7XG4gICAgICAgIGFwcHMsXG4gICAgICAgIHVwZGF0ZVR5cGUsXG4gICAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbi5uYW1lLFxuICAgICAgICBhcHBzRGlzYWJsZWQ6IHRoaXMuYXBwc0Rpc2FibGVkXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2VsZWN0ZWRBcHBzOiBJQXBwbGljYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgc2VsZWN0ZWRBcHBzID0gYXdhaXQgdGhpcy5zZWxlY3RBcHBzKGluaXRpYWxTdGF0ZSk7XG4gICAgICBpZiAoIXNlbGVjdGVkQXBwcykge1xuICAgICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gdW5yZWFjaGVkXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJykge1xuICAgICAgY29uc3QgbGljZW5zZXNWZXJpZmllZEJ5VXNlciA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlMaWNlbnNlcyhbcGx1Z2luXSk7XG4gICAgICBpZiAoIWxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGFwcCBvZiBzZWxlY3RlZEFwcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh1cGRhdGVUeXBlID09PSAnaW5zdGFsbCcpIHtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uSXNDb21wYXRpYmxlID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnZlcmlmeVBsdWdpblZlcnNpb25zQ29tcGF0aWJpbGl0eShcbiAgICAgICAgICAgIFtwbHVnaW5dLFxuICAgICAgICAgICAgYXBwXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghdmVyc2lvbklzQ29tcGF0aWJsZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZW1vdGVzVXBkYXRlKGFwcCwgcGx1Z2luLCB1cGRhdGVUeXBlKTtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc1RleHQgPVxuICAgICAgICAgIHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJ1xuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBnZXR0ZXh0KCdQbHVnaW4gaW5zdGFsbGVkIHRvIGFwcGxpY2F0aW9uIFwie3sgYXBwTmFtZSB9fVwiLicpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFwcE5hbWU6IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIGdldHRleHQoJ1BsdWdpbiB1bmluc3RhbGxlZCBmcm9tIGFwcGxpY2F0aW9uIFwie3sgYXBwTmFtZSB9fVwiLicpLFxuICAgICAgICAgICAgICAgIHsgYXBwTmFtZTogYXBwLm5hbWUgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHN1Y2Nlc3NUZXh0KTtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1BMVUdJTlMsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QTFVHSU5fTElTVCxcbiAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5QTFVHSU5fSU5TVEFMTEVELFxuICAgICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5FVkVOVFMuUEFDS0FHRV9QTFVHSU5TLCB7XG4gICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUExVR0lOX0xJU1QsXG4gICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU0VSVkVSX0ZBSUxVUkUsXG4gICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudXBkYXRpbmdQbHVnaW5JZFt1cGRhdGVUeXBlXSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRBcHBzRm9yVXBkYXRlKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGUpIHtcbiAgICBsZXQgYXBwcyA9IChhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0V2ViQXBwbGljYXRpb25zKCkpLmZpbHRlcihcbiAgICAgIGFwcCA9PiB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNPd25lcihhcHApICYmIGFwcC50eXBlICE9PSBBcHBsaWNhdGlvblR5cGUuRVhURVJOQUxcbiAgICApO1xuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJykge1xuICAgICAgdGhpcy5hcHBzRGlzYWJsZWQuY2xlYXIoKTtcbiAgICAgIGZvciAoY29uc3QgYXBwIG9mIGFwcHMpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQbHVnaW5JbnN0YWxsZWRJbkFwcChwbHVnaW4sIGFwcCkpIHtcbiAgICAgICAgICB0aGlzLmFwcHNEaXNhYmxlZC5hZGQoYXBwLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVUeXBlID09PSAndW5pbnN0YWxsJykge1xuICAgICAgY29uc3QgaW5zdGFsbGVkQXBwczogSUFwcGxpY2F0aW9uW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgYXBwIG9mIGFwcHMpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQbHVnaW5JbnN0YWxsZWRJbkFwcChwbHVnaW4sIGFwcCkpIHtcbiAgICAgICAgICBpbnN0YWxsZWRBcHBzLnB1c2goYXBwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXBwcyA9IGluc3RhbGxlZEFwcHM7XG4gICAgfVxuICAgIHJldHVybiBhcHBzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIGFwcDogSUFwcGxpY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYXBwUmVtb3RlcyA9IHRoaXMucGx1Z2luc1NlcnZpY2UuZ2V0TUZSZW1vdGVzKGFwcCkgfHwge307XG5cbiAgICBmb3IgKGNvbnN0IFtyZW1vdGVOYW1lLCBtb2R1bGVzXSBvZiBPYmplY3QuZW50cmllcyhhcHBSZW1vdGVzKSkge1xuICAgICAgY29uc3QgcGx1Z2luRnJvbVRoaXNQYWNrYWdlSXNJbnN0YWxsZWQgPVxuICAgICAgICB0aGlzLmdldFBsdWdpbkNvbnRleHRQYXRoV2l0aG91dFZlcnNpb24ocmVtb3RlTmFtZSkgPT09IHBsdWdpbi5jb250ZXh0UGF0aDtcbiAgICAgIGNvbnN0IHNwZWNpZmljUGx1Z2luTW9kdWxlSXNJbnN0YWxsZWQgPSBtb2R1bGVzLnNvbWUobW9kdWxlID0+IG1vZHVsZSA9PT0gcGx1Z2luLm1vZHVsZSk7XG4gICAgICBpZiAocGx1Z2luRnJvbVRoaXNQYWNrYWdlSXNJbnN0YWxsZWQgJiYgc3BlY2lmaWNQbHVnaW5Nb2R1bGVJc0luc3RhbGxlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQbHVnaW5Db250ZXh0UGF0aFdpdGhvdXRWZXJzaW9uKHJlbW90ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlbW90ZS5zcGxpdCgnQCcpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZW1vdGVzVXBkYXRlKFxuICAgIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24sXG4gICAgcGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbixcbiAgICB1cGRhdGVUeXBlOiBVcGRhdGVUeXBlXG4gICkge1xuICAgIHRyeSB7XG4gICAgICAvLyBXaGVuIHJlbW90ZXMgb2JqZWN0IGlzIG5vdCBzZXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG9mIGFuIGFwcGxpY2F0aW9uLlxuICAgICAgLy8gRmFsbGJhY2sgdG8gc2V0SW5pdGlhbFJlbW90ZXMgaXMgdHJpZ2dlcmVkLlxuICAgICAgbGV0IHVwZGF0ZWRSZW1vdGVzID0gYXdhaXQgKHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJ1xuICAgICAgICA/IHRoaXMucGx1Z2luc1NlcnZpY2UuYWRkUmVtb3RlcyhhcHBsaWNhdGlvbiwgcGx1Z2luKVxuICAgICAgICA6IHRoaXMucGx1Z2luc1NlcnZpY2UucmVtb3ZlUmVtb3RlcyhhcHBsaWNhdGlvbiwgdGhpcy5nZXRBbGxQbHVnaW5zVG9SZW1vdmUocGx1Z2luKSkpO1xuICAgICAgaWYgKCF1cGRhdGVkUmVtb3Rlcykge1xuICAgICAgICAvLyBUT0RPIGRpc2N1c3MgaWYgd2UgbmVlZCB0byBoYW5kbGUgaXQgbGlrZSB0aGF0LlxuICAgICAgICAvLyBSaWdodCBub3cgcmVtb3RlcyBmcm9tIHRoZSBjdW11bG9jaXR5Lmpzb24gYXJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIHJlbW90ZXMgb2JqZWN0IGlzIG1pc3NpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAgICAgIHVwZGF0ZWRSZW1vdGVzID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5zZXRJbml0aWFsUmVtb3RlcyhhcHBsaWNhdGlvbik7XG4gICAgICAgIC8vIEZyZXNoIGFwcGxpY2F0aW9uIE1PIGlzIG5lZWRlZCwgYWZ0ZXIgaW5pdGlhbCBzdGF0ZSB3YXMgc2V0LlxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwbGljYXRpb24oYXBwbGljYXRpb24uaWQpO1xuICAgICAgICB1cGRhdGVkUmVtb3RlcyA9IGF3YWl0IHRoaXMucGx1Z2luc1NlcnZpY2UuYWRkUmVtb3RlcyhhcHAsIHBsdWdpbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5lbWl0UmVtb3Rlcyh1cGRhdGVkUmVtb3Rlcyk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGlmIChlcikge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVyKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsUGx1Z2luc1RvUmVtb3ZlKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pOiBBcHBsaWNhdGlvblBsdWdpbltdIHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlLmFwcGxpY2F0aW9uVmVyc2lvbnMubWFwKGF2ID0+ICh7XG4gICAgICBpZDogYCR7cGx1Z2luLmNvbnRleHRQYXRofUAke2F2LnZlcnNpb259LyR7cGx1Z2luLm1vZHVsZX1gLFxuICAgICAgbW9kdWxlOiBwbHVnaW4ubW9kdWxlLFxuICAgICAgcGF0aDogcGx1Z2luLnBhdGhcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRSZW1vdGVzKHJlbW90ZXM6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgdGhpcy5yZW1vdGVQbHVnaW5zJC5uZXh0KHJlbW90ZXMpO1xuICAgIHJldHVybiB7IC4uLnRoaXMucmVtb3RlUGx1Z2lucyQudmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VsZWN0QXBwcyhcbiAgICBpbml0aWFsU3RhdGU6IFBpY2s8XG4gICAgICBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50LFxuICAgICAgJ2FwcHMnIHwgJ3VwZGF0ZVR5cGUnIHwgJ3BsdWdpbk5hbWUnIHwgJ2FwcHNEaXNhYmxlZCdcbiAgICA+XG4gICk6IFByb21pc2U8SUFwcGxpY2F0aW9uW10+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IChcbiAgICAgICAgdGhpcy5ic01vZGFsU2VydmljZS5zaG93KEFwcHNUb1VwZGF0ZVJlbW90ZXNTZWxlY3RDb21wb25lbnQsIHtcbiAgICAgICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBrZXlib2FyZDogZmFsc2VcbiAgICAgICAgfSkuY29udGVudCBhcyBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50XG4gICAgICApLnJlc3VsdDtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwiYmctaW5oZXJpdFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHBsdWdpbnMkIHwgYXN5bmMpPy5sZW5ndGggIT09IDA7IGVsc2UgZW1wdHlMaXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGx1Z2luIG9mIHBsdWdpbnMkIHwgYXN5bmNcIj5cbiAgICAgIDxjOHktbGkgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogcGx1Z2luLmluc3RhbGxlZCB9XCIgY2xhc3M9XCJiZy1pbmhlcml0XCI+XG4gICAgICAgIDxjOHktcGx1Z2luLWxpc3QtaXRlbVxuICAgICAgICAgIChpc0l0ZW1TZWxlY3RlZCk9XCJ1cGRhdGVTZWxlY3RlZEl0ZW1zKCRldmVudCwgcGx1Z2luKVwiXG4gICAgICAgICAgW3BsdWdpbl09XCJwbHVnaW5cIlxuICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGVcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPjwvYzh5LXBsdWdpbi1saXN0LWl0ZW0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtNDAgbS10LTRcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImluc3RhbGxhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1bmluc3RhbGxQbHVnaW4ocGx1Z2luKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IHBsdWdpbi5pZCA9PT0gdXBkYXRpbmdQbHVnaW5JZC51bmluc3RhbGwgfVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidXBkYXRpbmdQbHVnaW5JZC51bmluc3RhbGwgJiYgcGx1Z2luLmlkICE9PSB1cGRhdGluZ1BsdWdpbklkLnVuaW5zdGFsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSBtLWwtNFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdVbmluc3RhbGwgcGx1Z2luJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkYXRhLWN5PVwicGx1Z2luLWxpc3QtLXVuaW5zdGFsbC1wbHVnaW4tYnV0dG9uXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIFVuaW5zdGFsbCBwbHVnaW5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImluc3RhbGxhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbnN0YWxsUGx1Z2luKHBsdWdpbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBwbHVnaW4uaWQgPT09IHVwZGF0aW5nUGx1Z2luSWQuaW5zdGFsbCB9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1cGRhdGluZ1BsdWdpbklkLmluc3RhbGwgJiYgcGx1Z2luLmlkICE9PSB1cGRhdGluZ1BsdWdpbklkLmluc3RhbGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIG0tbC04XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0luc3RhbGwgcGx1Z2luJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBkYXRhLWN5PVwicGx1Z2luLWxpc3QtLWluc3RhbGwtcGx1Z2luLWJ1dHRvblwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBJbnN0YWxsIHBsdWdpblxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYzh5LWxpc3QtZ3JvdXA+XG48bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cbiAgPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZSB0ZXh0LWxlZnRcIiAqbmdJZj1cImVtcHR5TGlzdFRleHRcIj5cbiAgICA8aDEgYzh5SWNvbj1cInBsdWdpblwiPjwvaDE+XG4gICAgPHA+XG4gICAgICB7eyBlbXB0eUxpc3RUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTRCLGVBQWUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDdEYsT0FBTyxFQUNMLFlBQVksRUFFWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7OztBQU1qQyxNQUFNLE9BQU8sbUJBQW1CO0lBaUI5QixZQUNVLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixjQUE4QixFQUM5QixZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBTGxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FB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RTtZQUNYLE9BQU87U0FDUjtJQUNILENBQUM7O2dIQTNQVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixnUENyQmhDLGk0REFnREE7MkZEM0JhLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxpQkFBaUI7MFBBTWxCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBBcHBsaWNhdGlvblR5cGUsIElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSwgUFJPRFVDVF9FWFBFUklFTkNFIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwcHNUb1VwZGF0ZVJlbW90ZXNTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2FwcHMtdG8tdXBkYXRlLXJlbW90ZXMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcGRhdGVUeXBlIH0gZnJvbSAnLi9hcHBzLXRvLXVwZGF0ZS1yZW1vdGVzLXNlbGVjdC5tb2RlbCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBsdWdpbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsdWdpbi1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQbHVnaW5MaXN0Q29tcG9uZW50IHtcbiAgQ1VSUkVOVF9MT0NBVElPTiA9IGxvY2F0aW9uLmhyZWY7XG5cbiAgQElucHV0KCkgcGx1Z2lucyQ6IE9ic2VydmFibGU8QXBwbGljYXRpb25QbHVnaW5bXT47XG4gIEBJbnB1dCgpIGVtcHR5TGlzdFRleHQgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3dzIHRoZSBpbnN0YWxsIGJ1dHRvbiBmb3IgZWFjaCBwbHVnaW4gc2VwYXJhdGVseS4gQ3VycmVudGx5IHVzZWQgaW4gcGFja2FnZS1kZXRhaWxzIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKSBpbnN0YWxsYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwYWNrYWdlOiBJQXBwbGljYXRpb247XG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zOiBFdmVudEVtaXR0ZXI8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJlbW90ZVBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25SZW1vdGVQbHVnaW5zPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICBzZWxlY3RlZFBsdWdpbnM6IHsgW2tleTogc3RyaW5nXTogQXBwbGljYXRpb25QbHVnaW4gfSA9IHt9O1xuICB1cGRhdGluZ1BsdWdpbklkOiBSZWNvcmQ8VXBkYXRlVHlwZSwgc3RyaW5nPiA9IHsgaW5zdGFsbDogJycsIHVuaW5zdGFsbDogJycgfTtcbiAgYXBwc0Rpc2FibGVkOiBTZXQ8SUFwcGxpY2F0aW9uWydpZCddPiA9IG5ldyBTZXQ8SUFwcGxpY2F0aW9uWydpZCddPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWNvc3lzdGVtU2VydmljZTogRWNvc3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpbnNTZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIHVwZGF0ZVNlbGVjdGVkSXRlbXMoc2VsZWN0ZWQ6IGJvb2xlYW4sIHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLnNlbGVjdGVkUGx1Z2luc1twbHVnaW4uaWRdID0gc2VsZWN0ZWQgPyBwbHVnaW4gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb25seUluc3RhbGxlZFBsdWdpbnMgPSBPYmplY3QudmFsdWVzKHRoaXMuc2VsZWN0ZWRQbHVnaW5zKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQob25seUluc3RhbGxlZFBsdWdpbnMpO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbFBsdWdpbihwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBSZW1vdGVzKHBsdWdpbiwgJ2luc3RhbGwnKTtcbiAgfVxuXG4gIGFzeW5jIHVuaW5zdGFsbFBsdWdpbihwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBSZW1vdGVzKHBsdWdpbiwgJ3VuaW5zdGFsbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBcHBSZW1vdGVzKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSBwbHVnaW4/LmlkO1xuICAgIGxldCBpbml0aWFsU3RhdGU6IFBpY2s8XG4gICAgICBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50LFxuICAgICAgJ2FwcHMnIHwgJ3VwZGF0ZVR5cGUnIHwgJ3BsdWdpbk5hbWUnIHwgJ2FwcHNEaXNhYmxlZCdcbiAgICA+O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5nZXRBcHBzRm9yVXBkYXRlKHBsdWdpbiwgdXBkYXRlVHlwZSk7XG4gICAgICBpbml0aWFsU3RhdGUgPSB7XG4gICAgICAgIGFwcHMsXG4gICAgICAgIHVwZGF0ZVR5cGUsXG4gICAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbi5uYW1lLFxuICAgICAgICBhcHBzRGlzYWJsZWQ6IHRoaXMuYXBwc0Rpc2FibGVkXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2VsZWN0ZWRBcHBzOiBJQXBwbGljYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgc2VsZWN0ZWRBcHBzID0gYXdhaXQgdGhpcy5zZWxlY3RBcHBzKGluaXRpYWxTdGF0ZSk7XG4gICAgICBpZiAoIXNlbGVjdGVkQXBwcykge1xuICAgICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gdW5yZWFjaGVkXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJykge1xuICAgICAgY29uc3QgbGljZW5zZXNWZXJpZmllZEJ5VXNlciA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlMaWNlbnNlcyhbcGx1Z2luXSk7XG4gICAgICBpZiAoIWxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGFwcCBvZiBzZWxlY3RlZEFwcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh1cGRhdGVUeXBlID09PSAnaW5zdGFsbCcpIHtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uSXNDb21wYXRpYmxlID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnZlcmlmeVBsdWdpblZlcnNpb25zQ29tcGF0aWJpbGl0eShcbiAgICAgICAgICAgIFtwbHVnaW5dLFxuICAgICAgICAgICAgYXBwXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghdmVyc2lvbklzQ29tcGF0aWJsZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZW1vdGVzVXBkYXRlKGFwcCwgcGx1Z2luLCB1cGRhdGVUeXBlKTtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc1RleHQgPVxuICAgICAgICAgIHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJ1xuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBnZXR0ZXh0KCdQbHVnaW4gaW5zdGFsbGVkIHRvIGFwcGxpY2F0aW9uIFwie3sgYXBwTmFtZSB9fVwiLicpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFwcE5hbWU6IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIGdldHRleHQoJ1BsdWdpbiB1bmluc3RhbGxlZCBmcm9tIGFwcGxpY2F0aW9uIFwie3sgYXBwTmFtZSB9fVwiLicpLFxuICAgICAgICAgICAgICAgIHsgYXBwTmFtZTogYXBwLm5hbWUgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHN1Y2Nlc3NUZXh0KTtcbiAgICAgICAgdGhpcy5vblVwZGF0ZUV2ZW50SGFuZGxlR1MocGx1Z2luLCBhcHAsIHVwZGF0ZVR5cGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1BMVUdJTlMsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QTFVHSU5fTElTVCxcbiAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TRVJWRVJfRkFJTFVSRSxcbiAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgICBlcnJvclxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gIH1cblxuICBwcml2YXRlIG9uVXBkYXRlRXZlbnRIYW5kbGVHUyhcbiAgICBwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luLFxuICAgIGFwcDogSUFwcGxpY2F0aW9uLFxuICAgIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGVcbiAgKSB7XG4gICAgY29uc3QgcGx1Z2luQ3VzdG9tRXZlbnRJbmZvID0gcGljayhwbHVnaW4sIFtcbiAgICAgICduYW1lJyxcbiAgICAgICdjb250ZXh0UGF0aCcsXG4gICAgICAnbW9kdWxlJyxcbiAgICAgICd2ZXJzaW9uJyxcbiAgICAgICd0eXBlJyxcbiAgICAgICdpZCdcbiAgICBdIHNhdGlzZmllcyAoa2V5b2YgQXBwbGljYXRpb25QbHVnaW4pW10pO1xuICAgIGNvbnN0IGdzRXZlbnRSZXN1bHQgPVxuICAgICAgdXBkYXRlVHlwZSA9PT0gJ2luc3RhbGwnXG4gICAgICAgID8gUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlBMVUdJTl9JTlNUQUxMRURcbiAgICAgICAgOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuUExVR0lOX1JFTU9WRUQ7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1BMVUdJTlMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBMVUdJTl9MSVNULFxuICAgICAgcmVzdWx0OiBnc0V2ZW50UmVzdWx0LFxuICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT04sXG4gICAgICAuLi5wbHVnaW5DdXN0b21FdmVudEluZm8sXG4gICAgICB0YXJnZXRBcHBsaWNhdGlvbk5hbWU6IGFwcC5uYW1lLFxuICAgICAgdGFyZ2V0QXBwbGljYXRpb25Db250ZXh0UGF0aDogYXBwLmNvbnRleHRQYXRoXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFwcHNGb3JVcGRhdGUocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbiwgdXBkYXRlVHlwZTogVXBkYXRlVHlwZSkge1xuICAgIGxldCBhcHBzID0gKGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRXZWJBcHBsaWNhdGlvbnMoKSkuZmlsdGVyKFxuICAgICAgYXBwID0+IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc093bmVyKGFwcCkgJiYgYXBwLnR5cGUgIT09IEFwcGxpY2F0aW9uVHlwZS5FWFRFUk5BTFxuICAgICk7XG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2luc3RhbGwnKSB7XG4gICAgICB0aGlzLmFwcHNEaXNhYmxlZC5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuICAgICAgICBpZiAodGhpcy5pc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbiwgYXBwKSkge1xuICAgICAgICAgIHRoaXMuYXBwc0Rpc2FibGVkLmFkZChhcHAuaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICd1bmluc3RhbGwnKSB7XG4gICAgICBjb25zdCBpbnN0YWxsZWRBcHBzOiBJQXBwbGljYXRpb25bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuICAgICAgICBpZiAodGhpcy5pc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbiwgYXBwKSkge1xuICAgICAgICAgIGluc3RhbGxlZEFwcHMucHVzaChhcHApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhcHBzID0gaW5zdGFsbGVkQXBwcztcbiAgICB9XG4gICAgcmV0dXJuIGFwcHM7XG4gIH1cblxuICBwcml2YXRlIGlzUGx1Z2luSW5zdGFsbGVkSW5BcHAocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbiwgYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBhcHBSZW1vdGVzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRlJlbW90ZXMoYXBwKSB8fCB7fTtcblxuICAgIGZvciAoY29uc3QgW3JlbW90ZU5hbWUsIG1vZHVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKGFwcFJlbW90ZXMpKSB7XG4gICAgICBjb25zdCBwbHVnaW5Gcm9tVGhpc1BhY2thZ2VJc0luc3RhbGxlZCA9XG4gICAgICAgIHRoaXMuZ2V0UGx1Z2luQ29udGV4dFBhdGhXaXRob3V0VmVyc2lvbihyZW1vdGVOYW1lKSA9PT0gcGx1Z2luLmNvbnRleHRQYXRoO1xuICAgICAgY29uc3Qgc3BlY2lmaWNQbHVnaW5Nb2R1bGVJc0luc3RhbGxlZCA9IG1vZHVsZXMuc29tZShtb2R1bGUgPT4gbW9kdWxlID09PSBwbHVnaW4ubW9kdWxlKTtcbiAgICAgIGlmIChwbHVnaW5Gcm9tVGhpc1BhY2thZ2VJc0luc3RhbGxlZCAmJiBzcGVjaWZpY1BsdWdpbk1vZHVsZUlzSW5zdGFsbGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldFBsdWdpbkNvbnRleHRQYXRoV2l0aG91dFZlcnNpb24ocmVtb3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVtb3RlLnNwbGl0KCdAJylbMF07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVJlbW90ZXNVcGRhdGUoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICBwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luLFxuICAgIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGVcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFdoZW4gcmVtb3RlcyBvYmplY3QgaXMgbm90IHNldCBpbiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgb2YgYW4gYXBwbGljYXRpb24uXG4gICAgICAvLyBGYWxsYmFjayB0byBzZXRJbml0aWFsUmVtb3RlcyBpcyB0cmlnZ2VyZWQuXG4gICAgICBsZXQgdXBkYXRlZFJlbW90ZXMgPSBhd2FpdCAodXBkYXRlVHlwZSA9PT0gJ2luc3RhbGwnXG4gICAgICAgID8gdGhpcy5wbHVnaW5zU2VydmljZS5hZGRSZW1vdGVzKGFwcGxpY2F0aW9uLCBwbHVnaW4pXG4gICAgICAgIDogdGhpcy5wbHVnaW5zU2VydmljZS5yZW1vdmVSZW1vdGVzKGFwcGxpY2F0aW9uLCB0aGlzLmdldEFsbFBsdWdpbnNUb1JlbW92ZShwbHVnaW4pKSk7XG4gICAgICBpZiAoIXVwZGF0ZWRSZW1vdGVzKSB7XG4gICAgICAgIC8vIFRPRE8gZGlzY3VzcyBpZiB3ZSBuZWVkIHRvIGhhbmRsZSBpdCBsaWtlIHRoYXQuXG4gICAgICAgIC8vIFJpZ2h0IG5vdyByZW1vdGVzIGZyb20gdGhlIGN1bXVsb2NpdHkuanNvbiBhcmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gcmVtb3RlcyBvYmplY3QgaXMgbWlzc2luZyBpbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgdXBkYXRlZFJlbW90ZXMgPSBhd2FpdCB0aGlzLnBsdWdpbnNTZXJ2aWNlLnNldEluaXRpYWxSZW1vdGVzKGFwcGxpY2F0aW9uKTtcbiAgICAgICAgLy8gRnJlc2ggYXBwbGljYXRpb24gTU8gaXMgbmVlZGVkLCBhZnRlciBpbml0aWFsIHN0YXRlIHdhcyBzZXQuXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBsaWNhdGlvbihhcHBsaWNhdGlvbi5pZCk7XG4gICAgICAgIHVwZGF0ZWRSZW1vdGVzID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5hZGRSZW1vdGVzKGFwcCwgcGx1Z2luKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmVtaXRSZW1vdGVzKHVwZGF0ZWRSZW1vdGVzKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxQbHVnaW5zVG9SZW1vdmUocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbik6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9ucy5tYXAoYXYgPT4gKHtcbiAgICAgIGlkOiBgJHtwbHVnaW4uY29udGV4dFBhdGh9QCR7YXYudmVyc2lvbn0vJHtwbHVnaW4ubW9kdWxlfWAsXG4gICAgICBtb2R1bGU6IHBsdWdpbi5tb2R1bGUsXG4gICAgICBwYXRoOiBwbHVnaW4ucGF0aFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICB0aGlzLnJlbW90ZVBsdWdpbnMkLm5leHQocmVtb3Rlcyk7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5yZW1vdGVQbHVnaW5zJC52YWx1ZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWxlY3RBcHBzKFxuICAgIGluaXRpYWxTdGF0ZTogUGljazxcbiAgICAgIEFwcHNUb1VwZGF0ZVJlbW90ZXNTZWxlY3RDb21wb25lbnQsXG4gICAgICAnYXBwcycgfCAndXBkYXRlVHlwZScgfCAncGx1Z2luTmFtZScgfCAnYXBwc0Rpc2FibGVkJ1xuICAgID5cbiAgKTogUHJvbWlzZTxJQXBwbGljYXRpb25bXT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgICB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coQXBwc1RvVXBkYXRlUmVtb3Rlc1NlbGVjdENvbXBvbmVudCwge1xuICAgICAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgICAgIGtleWJvYXJkOiBmYWxzZVxuICAgICAgICB9KS5jb250ZW50IGFzIEFwcHNUb1VwZGF0ZVJlbW90ZXNTZWxlY3RDb21wb25lbnRcbiAgICAgICkucmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LWxpc3QtZ3JvdXAgY2xhc3M9XCJiZy1pbmhlcml0XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIocGx1Z2lucyQgfCBhc3luYyk/Lmxlbmd0aCAhPT0gMDsgZWxzZSBlbXB0eUxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwbHVnaW4gb2YgcGx1Z2lucyQgfCBhc3luY1wiPlxuICAgICAgPGM4eS1saSBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBwbHVnaW4uaW5zdGFsbGVkIH1cIiBjbGFzcz1cImJnLWluaGVyaXRcIj5cbiAgICAgICAgPGM4eS1wbHVnaW4tbGlzdC1pdGVtXG4gICAgICAgICAgKGlzSXRlbVNlbGVjdGVkKT1cInVwZGF0ZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBwbHVnaW4pXCJcbiAgICAgICAgICBbcGx1Z2luXT1cInBsdWdpblwiXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwic2VsZWN0YWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICA+PC9jOHktcGx1Z2luLWxpc3QtaXRlbT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtbC00MCBtLXQtNFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW5zdGFsbGFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVuaW5zdGFsbFBsdWdpbihwbHVnaW4pXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1wZW5kaW5nJzogcGx1Z2luLmlkID09PSB1cGRhdGluZ1BsdWdpbklkLnVuaW5zdGFsbCB9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1cGRhdGluZ1BsdWdpbklkLnVuaW5zdGFsbCAmJiBwbHVnaW4uaWQgIT09IHVwZGF0aW5nUGx1Z2luSWQudW5pbnN0YWxsXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXNtIG0tbC00XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1VuaW5zdGFsbCBwbHVnaW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJwbHVnaW4tbGlzdC0tdW5pbnN0YWxsLXBsdWdpbi1idXR0b25cIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgVW5pbnN0YWxsIHBsdWdpblxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW5zdGFsbGFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImluc3RhbGxQbHVnaW4ocGx1Z2luKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IHBsdWdpbi5pZCA9PT0gdXBkYXRpbmdQbHVnaW5JZC5pbnN0YWxsIH1cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVwZGF0aW5nUGx1Z2luSWQuaW5zdGFsbCAmJiBwbHVnaW4uaWQgIT09IHVwZGF0aW5nUGx1Z2luSWQuaW5zdGFsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gbS1sLThcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnSW5zdGFsbCBwbHVnaW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJwbHVnaW4tbGlzdC0taW5zdGFsbC1wbHVnaW4tYnV0dG9uXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEluc3RhbGwgcGx1Z2luXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9jOHktbGlzdC1ncm91cD5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlMaXN0PlxuICA8ZGl2IGNsYXNzPVwiYzh5LWVtcHR5LXN0YXRlIHRleHQtbGVmdFwiICpuZ0lmPVwiZW1wdHlMaXN0VGV4dFwiPlxuICAgIDxoMSBjOHlJY29uPVwicGx1Z2luXCI+PC9oMT5cbiAgICA8cD5cbiAgICAgIHt7IGVtcHR5TGlzdFRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -3,6 +3,7 @@ import { Router } from '@angular/router';
3
3
  import { GainsightService, PluginsService, ViewContext, WizardComponent, gettext } from '@c8y/ngx-components';
4
4
  import { ApplicationPropertiesFormComponent, EcosystemService, PRODUCT_EXPERIENCE } from '@c8y/ngx-components/ecosystem/shared';
5
5
  import { TranslateService } from '@ngx-translate/core';
6
+ import { pick } from 'lodash-es';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@c8y/ngx-components/ecosystem/shared";
8
9
  import * as i2 from "@c8y/ngx-components";
@@ -67,12 +68,21 @@ export class DeployApplicationComponent {
67
68
  }
68
69
  try {
69
70
  this.deployedApp = await this.ecosystemService.deployApp(this.package, formGroupValue, this.model);
71
+ const applicationCustomEventInfo = pick(this.package, [
72
+ 'id',
73
+ 'name',
74
+ 'contextPath',
75
+ 'label',
76
+ 'key'
77
+ ]);
70
78
  this.deployedWithSuccess = true;
71
79
  this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DEPLOY_APPLICATION, {
72
80
  component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,
73
81
  action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,
74
82
  result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DEPLOYED,
75
- url: this.CURRENT_LOCATION
83
+ url: this.CURRENT_LOCATION,
84
+ ...applicationCustomEventInfo,
85
+ package: this.deployedApp?.manifest?.package ?? null
76
86
  });
77
87
  }
78
88
  catch (error) {
@@ -81,7 +91,8 @@ export class DeployApplicationComponent {
81
91
  component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,
82
92
  action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,
83
93
  result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,
84
- url: this.CURRENT_LOCATION
94
+ url: this.CURRENT_LOCATION,
95
+ error
85
96
  });
86
97
  }
87
98
  finally {
@@ -120,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
120
131
  type: ViewChild,
121
132
  args: [ApplicationPropertiesFormComponent]
122
133
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9kZXBsb3ktYXBwbGljYXRpb24vZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9kZXBsb3ktYXBwbGljYXRpb24vZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxFQUNmLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUNuQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQU12RCxNQUFNLE9BQU8sMEJBQTBCO0lBOEJyQyxZQUNVLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxTQUEyQixFQUMzQixhQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsTUFBYztRQUxkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQ3hCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFF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LENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdEQsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEF0SVUsMEJBQTBCOzJHQUExQiwwQkFBMEIseUhBbUIxQixrQ0FBa0MsZ0RDekMvQyxtNEdBMEdBOzJGRHBGYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0Usd0JBQXdCO3FQQXVCbEMseUJBQXlCO3NCQUR4QixTQUFTO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvblZlcnNpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBQbHVnaW5zU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIFdpemFyZENvbXBvbmVudCxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQsXG4gIEVjb3N5c3RlbVNlcnZpY2UsXG4gIExpY2Vuc2VkQXBwbGljYXRpb25QbHVnaW4sXG4gIFBST0RVQ1RfRVhQRVJJRU5DRVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGVwbG95LWFwcGxpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RlcGxveS1hcHBsaWNhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGVwbG95QXBwbGljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICBpblByb2dyZXNzID0gdHJ1ZTtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uO1xuICBpc0RlcGxveWVkID0gZmFsc2U7XG4gIGRlcGxveWVkV2l0aFN1Y2Nlc3MgPSBmYWxzZTtcbiAgbmV3QXBwQ29uZmlnOiBJQXBwbGljYXRpb247XG4gIGRlcGxveWVkQXBwOiBJQXBwbGljYXRpb247XG4gIGFwcGxpY2F0aW9uSHJlZjogc3RyaW5nO1xuXG4gIG1vZGVsID0ge1xuICAgIHNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgYmluYXJ5OiB7XG4gICAgICBpZDogdW5kZWZpbmVkXG4gICAgfVxuICB9O1xuICBjYW5EZXBsb3kgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQpXG4gIGFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm06IEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQ7XG5cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb25UZW1wbGF0ZTogc3RyaW5nID0gZ2V0dGV4dChcbiAgICAnRGVwbG95IGFwcGxpY2F0aW9uIHVzaW5nIFwie3sgcGFja2FnZU5hbWUgfX1cIiBwYWNrYWdlJ1xuICApO1xuICByZWFkb25seSBzdWNjZXNzTWVzc2FnZVRlbXBsYXRlID0gZ2V0dGV4dCgnQXBwbGljYXRpb24gXCJ7eyBwYWNrYWdlTmFtZSB9fVwiIGNyZWF0ZWQnKTtcbiAgcmVhZG9ubHkgZG9uZUxhYmVsID0gZ2V0dGV4dCgnRG9uZScpO1xuICByZWFkb25seSBjYW5jZWxMYWJlbCA9IGdldHRleHQoJ0NhbmNlbCcpO1xuICBoZWFkZXJUZXh0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgd2l6YXJkQ29tcG9uZW50OiBXaXphcmRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbHVnaW5TZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICB0aGlzLnBhY2thZ2UgPSAodGhpcy53aXphcmRDb21wb25lbnQgYXMgYW55KS5wYWNrYWdlO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYXBwcyA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRIb3N0ZWRBbmRQYWNrYWdlQXBwbGljYXRpb25zKCk7XG4gICAgdGhpcy5uZXdBcHBDb25maWcgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0VW5pcXVlQXBwQ29uZmlnKHRoaXMucGFja2FnZSwgYXBwcyk7XG4gICAgdGhpcy5oZWFkZXJUZXh0ID0gdGhpcy5nZXRIZWFkZXJUZXh0KCk7XG4gICAgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyBkZXBsb3lBcHAoKSB7XG4gICAgdGhpcy5pblByb2dyZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtR3JvdXBWYWx1ZSA9IHRoaXMuYXBwbGljYXRpb25Qcm9wZXJ0aWVzRm9ybS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcbiAgICAvLyBWZXJpZnkgaWYgc2VsZWN0ZWQgcGFja2FnZSB2ZXJzaW9uIGlzIGNvbXBhdGlibGUgd2l0aCBjdXJyZW50IHBsYXRmb3JtIHZlcnNpb25zLlxuICAgIHRoaXMucGFja2FnZS5tYW5pZmVzdC52ZXJzaW9uID0gdGhpcy5tb2RlbC5zZWxlY3RlZC52ZXJzaW9uO1xuICAgIGNvbnN0IHZlcmlmeVZlcnNpb25Db21wYXRpYmlsaXR5ID1cbiAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlCbHVlcHJpbnRWZXJzaW9uc0NvbXBhdGliaWxpdHkodGhpcy5wYWNrYWdlLm1hbmlmZXN0KTtcblxuICAgIGlmICghdmVyaWZ5VmVyc2lvbkNvbXBhdGliaWxpdHkpIHtcbiAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb250ZXh0UGF0aCwgbGljZW5zZSwgbmFtZSwgbWFuaWZlc3QgfSA9IHRoaXMucGFja2FnZTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5wbHVnaW5TZXJ2aWNlLmdldFBhY2thZ2VUeXBlKHRoaXMucGFja2FnZSk7XG4gICAgY29uc3QgbGljZW5zZWRBcHA6IExpY2Vuc2VkQXBwbGljYXRpb25QbHVnaW4gPSB7XG4gICAgICBjb250ZXh0UGF0aCxcbiAgICAgIGxpY2Vuc2U6IGxpY2Vuc2UgfHwgbWFuaWZlc3QubGljZW5zZSxcbiAgICAgIG5hbWUsXG4gICAgICB0eXBlLFxuICAgICAgdmVyc2lvbjogdGhpcy5tb2RlbC5zZWxlY3RlZC52ZXJzaW9uXG4gICAgfTtcblxuICAgIGNvbnN0IGxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UudmVyaWZ5TGljZW5zZXMoW2xpY2Vuc2VkQXBwXSk7XG4gICAgaWYgKCFsaWNlbnNlc1ZlcmlmaWVkQnlVc2VyKSB7XG4gICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmRlcGxveWVkQXBwID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmRlcGxveUFwcChcbiAgICAgICAgdGhpcy5wYWNrYWdlLFxuICAgICAgICBmb3JtR3JvdXBWYWx1ZSxcbiAgICAgICAgdGhpcy5tb2RlbFxuICAgICAgKTtcbiAgICAgIHRoaXMuZGVwbG95ZWRXaXRoU3VjY2VzcyA9IHRydWU7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5ERVBMT1lfQVBQTElDQVRJT04sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5ERVBMT1lfQVBQTElDQVRJT04sXG4gICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuREVQTE9ZX0FQUExJQ0FUSU9OLFxuICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLkRFUExPWUVELFxuICAgICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZWNvc3lzdGVtU2VydmljZS5hbGVydEVycm9yKGVycm9yKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLkRFUExPWV9BUFBMSUNBVElPTixcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkRFUExPWV9BUFBMSUNBVElPTixcbiAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5ERVBMT1lfQVBQTElDQVRJT04sXG4gICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuU0VSVkVSX0ZBSUxVUkUsXG4gICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNEZXBsb3llZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLndpemFyZENvbXBvbmVudC5jbG9zZSgpO1xuICB9XG5cbiAgb25BcHBWZXJzaW9uU2VsZWN0KGFwcFZlcnNpb246IElBcHBsaWNhdGlvblZlcnNpb24pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHtcbiAgICAgIHNlbGVjdGVkOiBhcHBWZXJzaW9uXG4gICAgfSk7XG4gICAgdGhpcy5jYW5EZXBsb3kgPSB0cnVlO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFZpZXdDb250ZXh0LkFwcGxpY2F0aW9uLnJlcGxhY2UoJzppZCcsIGAke3RoaXMuZGVwbG95ZWRBcHAuaWR9YCkpO1xuICAgIHRoaXMuY2FuY2VsKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc0RlcGxveWVkKCkge1xuICAgIHRoaXMuaXNEZXBsb3llZCA9IHRydWU7XG4gICAgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldEhlYWRlclRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5kZXNjcmlwdGlvblRlbXBsYXRlLCB7XG4gICAgICBwYWNrYWdlTmFtZTogdGhpcy5wYWNrYWdlLm5hbWVcbiAgICB9KTtcbiAgfVxufVxuIiwiPGM4eS13aXphcmQtaGVhZGVyPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGRpYWxvZy1oZWFkZXJcIj5cbiAgICA8aSBjOHlJY29uPVwib3V0cHV0XCI+PC9pPlxuICAgIDxoNCBpZD1cIm1vZGFsLXRpdGxlXCI+e3sgJ0RlcGxveSBhcHBsaWNhdGlvbicgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8L2Rpdj5cbjwvYzh5LXdpemFyZC1oZWFkZXI+XG5cbjxjOHktd2l6YXJkLWJvZHkgaWQ9XCJtb2RhbC1ib2R5XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNEZXBsb3llZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmYWRlSW4gYW5pbWF0ZWQgZC1mbGV4IGEtaS1jZW50ZXIgai1jLWNlbnRlciBkLWNvbFwiIHN0eWxlPVwibWluLWhlaWdodDogMzA5cHhcIj5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwiYmctbGV2ZWwtMCBmaXQtdyBwLTE2IHRleHQtY2VudGVyIHRleHQtbWVkaXVtIHN0aWNreS10b3AgYmctbGV2ZWwtMCBzZXBhcmF0b3ItYm90dG9tXCJcbiAgICAgICAgKm5nSWY9XCIhaW5Qcm9ncmVzc1wiXG4gICAgICA+XG4gICAgICAgIHt7IGhlYWRlclRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxjOHktYXBwbGljYXRpb24tcHJvcGVydGllcy1mb3JtXG4gICAgICAgICpuZ0lmPVwiIWluUHJvZ3Jlc3NcIlxuICAgICAgICBbYXBwbGljYXRpb25dPVwibmV3QXBwQ29uZmlnXCJcbiAgICAgICAgY2xhc3M9XCJkLWJsb2NrIGZpdC13IGJnLWxldmVsLTFcIlxuICAgICAgPjwvYzh5LWFwcGxpY2F0aW9uLXByb3BlcnRpZXMtZm9ybT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpblByb2dyZXNzXCI+XG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyBwYWRkaW5nOiAnMCAxNnB4JyB9XCIgY2xhc3M9XCJkLWJsb2NrIGZpdC13IGJnLWdyYXktd2hpdGVcIj5cbiAgICAgICAgICA8Yzh5LXBhY2thZ2UtdmVyc2lvbi1zZWxlY3RcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsLnNlbGVjdGVkXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQXBwVmVyc2lvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtwYWNrYWdlSWRdPVwicGFja2FnZT8uaWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidVc2UgZXh0ZW5zaW9uIHBhY2thZ2UgdmVyc2lvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L2M4eS1wYWNrYWdlLXZlcnNpb24tc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8Yzh5LXByb2dyZXNzLWJhclxuICAgICAgICAqbmdJZj1cImluUHJvZ3Jlc3NcIlxuICAgICAgICBbbWVzc2FnZV09XCInRGVwbG95aW5n4oCmJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxuICAgICAgPjwvYzh5LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVwbG95ZWRcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImRlcGxveWVkV2l0aFN1Y2Nlc3M7IGVsc2UgZmFpbGVkRGVwbG95XCJcbiAgICAgIGNsYXNzPVwibW9kYWwtYm9keSBmYWRlSW4gYW5pbWF0ZWRcIlxuICAgICAgc3R5bGU9XCJtaW4taGVpZ2h0OiAzMDlweFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIGotYy1jZW50ZXIgZC1jb2xcIj5cbiAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgW3RleHRdPVwic3VjY2Vzc01lc3NhZ2VUZW1wbGF0ZSB8IHRyYW5zbGF0ZTogeyBwYWNrYWdlTmFtZTogcGFja2FnZS5uYW1lIH1cIlxuICAgICAgICAgIGNsYXNzPVwibGVhZCBkLWJsb2NrIG0tYi0xNlwiXG4gICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNmYWlsZWREZXBsb3k+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBmYWRlSW4gYW5pbWF0ZWQgdGV4dC1jZW50ZXJcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDI1N3B4XCI+XG4gICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgIHR5cGU9XCJlcnJvclwiXG4gICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCJcbiAgICAgICAgICB0ZXh0PVwie3sgJ0FwcGxpY2F0aW9uIGNyZWF0aW9uIGZhaWxlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L2M4eS13aXphcmQtYm9keT5cblxuPGM4eS13aXphcmQtZm9vdGVyPlxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgZGF0YS1jeT1cImM4eS1kZXBsb3ktYXBwbGljYXRpb24tLWNhbmNlbC1ibHVlcHJpbnQtYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7IChpc0RlcGxveWVkICYmIGRlcGxveWVkV2l0aFN1Y2Nlc3MgPyBkb25lTGFiZWwgOiBjYW5jZWxMYWJlbCkgfCB0cmFuc2xhdGUgfX1cIlxuICA+XG4gICAge3sgKGlzRGVwbG95ZWQgJiYgZGVwbG95ZWRXaXRoU3VjY2VzcyA/IGRvbmVMYWJlbCA6IGNhbmNlbExhYmVsKSB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cImRlcGxveUFwcCgpXCJcbiAgICAqbmdJZj1cIiFpc0RlcGxveWVkXCJcbiAgICBbZGlzYWJsZWRdPVwiaW5Qcm9ncmVzcyB8fCAhY2FuRGVwbG95XCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IGluUHJvZ3Jlc3MgfVwiXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRhdGEtY3k9XCJjOHktZGVwbG95LWFwcGxpY2F0aW9uLS1kZXBsb3ktYmx1ZXByaW50LWJ1dHRvblwiXG4gICAgdGl0bGU9XCJ7eyAnRGVwbG95JyB8IHRyYW5zbGF0ZSB9fVwiXG4gID5cbiAgICB7eyAnRGVwbG95JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cIm9wZW4oKVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICpuZ0lmPVwiaXNEZXBsb3llZCAmJiBkZXBsb3llZFdpdGhTdWNjZXNzXCJcbiAgICB0aXRsZT1cInt7ICdPcGVuIHRoZSBhcHBsaWNhdGlvbiBkZXRhaWxzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBPcGVuXG4gIDwvYnV0dG9uPlxuPC9jOHktd2l6YXJkLWZvb3Rlcj5cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9kZXBsb3ktYXBwbGljYXRpb24vZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9kZXBsb3ktYXBwbGljYXRpb24vZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxFQUNmLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUNuQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7O0FBTWpDLE1BQU0sT0FBTywwQkFBMEI7SUE4QnJDLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFNBQTJCLEVBQzNCLGFBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxNQUFjO1FBTGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtR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RUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUErQjtRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsUUFBUSxFQUFFLFVBQVU7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdEQsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEFqSlUsMEJBQTBCOzJHQUExQiwwQkFBMEIseUhBbUIxQixrQ0FBa0MsZ0RDMUMvQyxtNEdBMEdBOzJGRG5GYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0Usd0JBQXdCO3FQQXVCbEMseUJBQXlCO3NCQUR4QixTQUFTO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvblZlcnNpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBQbHVnaW5zU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIFdpemFyZENvbXBvbmVudCxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQsXG4gIEVjb3N5c3RlbVNlcnZpY2UsXG4gIExpY2Vuc2VkQXBwbGljYXRpb25QbHVnaW4sXG4gIFBST0RVQ1RfRVhQRVJJRU5DRVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgcGljayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXBsb3ktYXBwbGljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVwbG95LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXBsb3lBcHBsaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIENVUlJFTlRfTE9DQVRJT04gPSBsb2NhdGlvbi5ocmVmO1xuXG4gIGluUHJvZ3Jlc3MgPSB0cnVlO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb247XG4gIGlzRGVwbG95ZWQgPSBmYWxzZTtcbiAgZGVwbG95ZWRXaXRoU3VjY2VzcyA9IGZhbHNlO1xuICBuZXdBcHBDb25maWc6IElBcHBsaWNhdGlvbjtcbiAgZGVwbG95ZWRBcHA6IElBcHBsaWNhdGlvbjtcbiAgYXBwbGljYXRpb25IcmVmOiBzdHJpbmc7XG5cbiAgbW9kZWwgPSB7XG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICBiaW5hcnk6IHtcbiAgICAgIGlkOiB1bmRlZmluZWRcbiAgICB9XG4gIH07XG4gIGNhbkRlcGxveSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoQXBwbGljYXRpb25Qcm9wZXJ0aWVzRm9ybUNvbXBvbmVudClcbiAgYXBwbGljYXRpb25Qcm9wZXJ0aWVzRm9ybTogQXBwbGljYXRpb25Qcm9wZXJ0aWVzRm9ybUNvbXBvbmVudDtcblxuICByZWFkb25seSBkZXNjcmlwdGlvblRlbXBsYXRlOiBzdHJpbmcgPSBnZXR0ZXh0KFxuICAgICdEZXBsb3kgYXBwbGljYXRpb24gdXNpbmcgXCJ7eyBwYWNrYWdlTmFtZSB9fVwiIHBhY2thZ2UnXG4gICk7XG4gIHJlYWRvbmx5IHN1Y2Nlc3NNZXNzYWdlVGVtcGxhdGUgPSBnZXR0ZXh0KCdBcHBsaWNhdGlvbiBcInt7IHBhY2thZ2VOYW1lIH19XCIgY3JlYXRlZCcpO1xuICByZWFkb25seSBkb25lTGFiZWwgPSBnZXR0ZXh0KCdEb25lJyk7XG4gIHJlYWRvbmx5IGNhbmNlbExhYmVsID0gZ2V0dGV4dCgnQ2FuY2VsJyk7XG4gIGhlYWRlclRleHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aXphcmRDb21wb25lbnQ6IFdpemFyZENvbXBvbmVudCxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMucGFja2FnZSA9ICh0aGlzLndpemFyZENvbXBvbmVudCBhcyBhbnkpLnBhY2thZ2U7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEhvc3RlZEFuZFBhY2thZ2VBcHBsaWNhdGlvbnMoKTtcbiAgICB0aGlzLm5ld0FwcENvbmZpZyA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRVbmlxdWVBcHBDb25maWcodGhpcy5wYWNrYWdlLCBhcHBzKTtcbiAgICB0aGlzLmhlYWRlclRleHQgPSB0aGlzLmdldEhlYWRlclRleHQoKTtcbiAgICB0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRlcGxveUFwcCgpIHtcbiAgICB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIGNvbnN0IGZvcm1Hcm91cFZhbHVlID0gdGhpcy5hcHBsaWNhdGlvblByb3BlcnRpZXNGb3JtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgIC8vIFZlcmlmeSBpZiBzZWxlY3RlZCBwYWNrYWdlIHZlcnNpb24gaXMgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgcGxhdGZvcm0gdmVyc2lvbnMuXG4gICAgdGhpcy5wYWNrYWdlLm1hbmlmZXN0LnZlcnNpb24gPSB0aGlzLm1vZGVsLnNlbGVjdGVkLnZlcnNpb247XG4gICAgY29uc3QgdmVyaWZ5VmVyc2lvbkNvbXBhdGliaWxpdHkgPVxuICAgICAgYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnZlcmlmeUJsdWVwcmludFZlcnNpb25zQ29tcGF0aWJpbGl0eSh0aGlzLnBhY2thZ2UubWFuaWZlc3QpO1xuXG4gICAgaWYgKCF2ZXJpZnlWZXJzaW9uQ29tcGF0aWJpbGl0eSkge1xuICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbnRleHRQYXRoLCBsaWNlbnNlLCBuYW1lLCBtYW5pZmVzdCB9ID0gdGhpcy5wYWNrYWdlO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBsdWdpblNlcnZpY2UuZ2V0UGFja2FnZVR5cGUodGhpcy5wYWNrYWdlKTtcbiAgICBjb25zdCBsaWNlbnNlZEFwcDogTGljZW5zZWRBcHBsaWNhdGlvblBsdWdpbiA9IHtcbiAgICAgIGNvbnRleHRQYXRoLFxuICAgICAgbGljZW5zZTogbGljZW5zZSB8fCBtYW5pZmVzdC5saWNlbnNlLFxuICAgICAgbmFtZSxcbiAgICAgIHR5cGUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLm1vZGVsLnNlbGVjdGVkLnZlcnNpb25cbiAgICB9O1xuXG4gICAgY29uc3QgbGljZW5zZXNWZXJpZmllZEJ5VXNlciA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlMaWNlbnNlcyhbbGljZW5zZWRBcHBdKTtcbiAgICBpZiAoIWxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIpIHtcbiAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGVwbG95ZWRBcHAgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZGVwbG95QXBwKFxuICAgICAgICB0aGlzLnBhY2thZ2UsXG4gICAgICAgIGZvcm1Hcm91cFZhbHVlLFxuICAgICAgICB0aGlzLm1vZGVsXG4gICAgICApO1xuICAgICAgY29uc3QgYXBwbGljYXRpb25DdXN0b21FdmVudEluZm8gPSBwaWNrKHRoaXMucGFja2FnZSwgW1xuICAgICAgICAnaWQnLFxuICAgICAgICAnbmFtZScsXG4gICAgICAgICdjb250ZXh0UGF0aCcsXG4gICAgICAgICdsYWJlbCcsXG4gICAgICAgICdrZXknXG4gICAgICBdIHNhdGlzZmllcyAoa2V5b2YgSUFwcGxpY2F0aW9uKVtdKTtcblxuICAgICAgdGhpcy5kZXBsb3llZFdpdGhTdWNjZXNzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLkRFUExPWV9BUFBMSUNBVElPTixcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkRFUExPWV9BUFBMSUNBVElPTixcbiAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5ERVBMT1lfQVBQTElDQVRJT04sXG4gICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLlJFU1VMVFMuREVQTE9ZRUQsXG4gICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT04sXG4gICAgICAgICAgLi4uYXBwbGljYXRpb25DdXN0b21FdmVudEluZm8sXG4gICAgICAgICAgcGFja2FnZTogdGhpcy5kZXBsb3llZEFwcD8ubWFuaWZlc3Q/LnBhY2thZ2UgPz8gbnVsbFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuYWxlcnRFcnJvcihlcnJvcik7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5ERVBMT1lfQVBQTElDQVRJT04sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5ERVBMT1lfQVBQTElDQVRJT04sXG4gICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkFDVElPTlMuREVQTE9ZX0FQUExJQ0FUSU9OLFxuICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNFUlZFUl9GQUlMVVJFLFxuICAgICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzRGVwbG95ZWQoKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy53aXphcmRDb21wb25lbnQuY2xvc2UoKTtcbiAgfVxuXG4gIG9uQXBwVmVyc2lvblNlbGVjdChhcHBWZXJzaW9uOiBJQXBwbGljYXRpb25WZXJzaW9uKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCB7XG4gICAgICBzZWxlY3RlZDogYXBwVmVyc2lvblxuICAgIH0pO1xuICAgIHRoaXMuY2FuRGVwbG95ID0gdHJ1ZTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChWaWV3Q29udGV4dC5BcHBsaWNhdGlvbi5yZXBsYWNlKCc6aWQnLCBgJHt0aGlzLmRlcGxveWVkQXBwLmlkfWApKTtcbiAgICB0aGlzLmNhbmNlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNEZXBsb3llZCgpIHtcbiAgICB0aGlzLmlzRGVwbG95ZWQgPSB0cnVlO1xuICAgIHRoaXMuaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXJUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuZGVzY3JpcHRpb25UZW1wbGF0ZSwge1xuICAgICAgcGFja2FnZU5hbWU6IHRoaXMucGFja2FnZS5uYW1lXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjOHktd2l6YXJkLWhlYWRlcj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBkaWFsb2ctaGVhZGVyXCI+XG4gICAgPGkgYzh5SWNvbj1cIm91dHB1dFwiPjwvaT5cbiAgICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiPnt7ICdEZXBsb3kgYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgPC9kaXY+XG48L2M4eS13aXphcmQtaGVhZGVyPlxuXG48Yzh5LXdpemFyZC1ib2R5IGlkPVwibW9kYWwtYm9keVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRGVwbG95ZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmFkZUluIGFuaW1hdGVkIGQtZmxleCBhLWktY2VudGVyIGotYy1jZW50ZXIgZC1jb2xcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDMwOXB4XCI+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cImJnLWxldmVsLTAgZml0LXcgcC0xNiB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bSBzdGlja3ktdG9wIGJnLWxldmVsLTAgc2VwYXJhdG9yLWJvdHRvbVwiXG4gICAgICAgICpuZ0lmPVwiIWluUHJvZ3Jlc3NcIlxuICAgICAgPlxuICAgICAgICB7eyBoZWFkZXJUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgICA8Yzh5LWFwcGxpY2F0aW9uLXByb3BlcnRpZXMtZm9ybVxuICAgICAgICAqbmdJZj1cIiFpblByb2dyZXNzXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uXT1cIm5ld0FwcENvbmZpZ1wiXG4gICAgICAgIGNsYXNzPVwiZC1ibG9jayBmaXQtdyBiZy1sZXZlbC0xXCJcbiAgICAgID48L2M4eS1hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzLWZvcm0+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5Qcm9ncmVzc1wiPlxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgcGFkZGluZzogJzAgMTZweCcgfVwiIGNsYXNzPVwiZC1ibG9jayBmaXQtdyBiZy1ncmF5LXdoaXRlXCI+XG4gICAgICAgICAgPGM4eS1wYWNrYWdlLXZlcnNpb24tc2VsZWN0XG4gICAgICAgICAgICBbbmdNb2RlbF09XCJtb2RlbC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFwcFZlcnNpb25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICBbcGFja2FnZUlkXT1cInBhY2thZ2U/LmlkXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInVXNlIGV4dGVuc2lvbiBwYWNrYWdlIHZlcnNpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+PC9jOHktcGFja2FnZS12ZXJzaW9uLXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGM4eS1wcm9ncmVzcy1iYXJcbiAgICAgICAgKm5nSWY9XCJpblByb2dyZXNzXCJcbiAgICAgICAgW21lc3NhZ2VdPVwiJ0RlcGxveWluZ+KApicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyXCJcbiAgICAgID48L2M4eS1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlcGxveWVkXCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJkZXBsb3llZFdpdGhTdWNjZXNzOyBlbHNlIGZhaWxlZERlcGxveVwiXG4gICAgICBjbGFzcz1cIm1vZGFsLWJvZHkgZmFkZUluIGFuaW1hdGVkXCJcbiAgICAgIHN0eWxlPVwibWluLWhlaWdodDogMzA5cHhcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBqLWMtY2VudGVyIGQtY29sXCI+XG4gICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgIFt0ZXh0XT1cInN1Y2Nlc3NNZXNzYWdlVGVtcGxhdGUgfCB0cmFuc2xhdGU6IHsgcGFja2FnZU5hbWU6IHBhY2thZ2UubmFtZSB9XCJcbiAgICAgICAgICBjbGFzcz1cImxlYWQgZC1ibG9jayBtLWItMTZcIlxuICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZmFpbGVkRGVwbG95PlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZmFkZUluIGFuaW1hdGVkIHRleHQtY2VudGVyXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAyNTdweFwiPlxuICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgdGV4dD1cInt7ICdBcHBsaWNhdGlvbiBjcmVhdGlvbiBmYWlsZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9jOHktd2l6YXJkLWJvZHk+XG5cbjxjOHktd2l6YXJkLWZvb3Rlcj5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgIGRhdGEtY3k9XCJjOHktZGVwbG95LWFwcGxpY2F0aW9uLS1jYW5jZWwtYmx1ZXByaW50LWJ1dHRvblwiXG4gICAgdGl0bGU9XCJ7eyAoaXNEZXBsb3llZCAmJiBkZXBsb3llZFdpdGhTdWNjZXNzID8gZG9uZUxhYmVsIDogY2FuY2VsTGFiZWwpIHwgdHJhbnNsYXRlIH19XCJcbiAgPlxuICAgIHt7IChpc0RlcGxveWVkICYmIGRlcGxveWVkV2l0aFN1Y2Nlc3MgPyBkb25lTGFiZWwgOiBjYW5jZWxMYWJlbCkgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJkZXBsb3lBcHAoKVwiXG4gICAgKm5nSWY9XCIhaXNEZXBsb3llZFwiXG4gICAgW2Rpc2FibGVkXT1cImluUHJvZ3Jlc3MgfHwgIWNhbkRlcGxveVwiXG4gICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBpblByb2dyZXNzIH1cIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkYXRhLWN5PVwiYzh5LWRlcGxveS1hcHBsaWNhdGlvbi0tZGVwbG95LWJsdWVwcmludC1idXR0b25cIlxuICAgIHRpdGxlPVwie3sgJ0RlcGxveScgfCB0cmFuc2xhdGUgfX1cIlxuICA+XG4gICAge3sgJ0RlcGxveScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJvcGVuKClcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAqbmdJZj1cImlzRGVwbG95ZWQgJiYgZGVwbG95ZWRXaXRoU3VjY2Vzc1wiXG4gICAgdGl0bGU9XCJ7eyAnT3BlbiB0aGUgYXBwbGljYXRpb24gZGV0YWlscycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgT3BlblxuICA8L2J1dHRvbj5cbjwvYzh5LXdpemFyZC1mb290ZXI+XG4iXX0=