valtech-components 4.0.441 → 4.0.443

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.
@@ -626,9 +626,11 @@ export class AnalyticsService {
626
626
  params,
627
627
  sent,
628
628
  };
629
- this._debugHistory.update(history => {
630
- const newHistory = [event, ...history];
631
- return newHistory.slice(0, MAX_DEBUG_HISTORY);
629
+ queueMicrotask(() => {
630
+ this._debugHistory.update(history => {
631
+ const newHistory = [event, ...history];
632
+ return newHistory.slice(0, MAX_DEBUG_HISTORY);
633
+ });
632
634
  });
633
635
  }
634
636
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AnalyticsService, deps: [{ token: i0.Injector }, { token: VALTECH_FIREBASE_CONFIG }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -644,4 +646,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
644
646
  type: Inject,
645
647
  args: [PLATFORM_ID]
646
648
  }] }] });
647
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWVuRCw2REFBNkQ7QUFDN0QsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4RCw4Q0FBOEM7QUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsUUFBa0IsRUFDZSxNQUE2QixFQUN6QyxVQUFrQjtRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXBDakQsOEVBQThFO1FBQzlFLG1CQUFtQjtRQUNuQiw4RUFBOEU7UUFFN0Qsa0JBQWEsR0FBRyxNQUFNLENBQWU7WUFDcEQsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVjLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUF3QixF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QUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSTtZQUNKLElBQUk7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBM3FCVSxnQkFBZ0IsMENBb0NqQix1QkFBdUIsYUFDdkIsV0FBVzttSEFyQ1YsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFDN0IsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuYWx5dGljcyBTZXJ2aWNlIChGaXJlYmFzZSBHQTQpXG4gKlxuICogU2VydmljaW8gcGFyYSB0cmFja2luZyBkZSBldmVudG9zLCBwYWdlIHZpZXdzIHkgZXJyb3JlcyBjb24gRmlyZWJhc2UgQW5hbHl0aWNzLlxuICogSW50ZWdyYSBjb24gZWwgc2lzdGVtYSBkZSBhdXRoIHBhcmEgdXNlciBwcm9wZXJ0aWVzIHkgcmVzcGV0YSBjb25zZW50IG1vZGUgR0RQUi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBQTEFURk9STV9JRCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBsb2dFdmVudCwgc2V0VXNlcklkLCBzZXRVc2VyUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYW5hbHl0aWNzJztcblxuaW1wb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBWYWx0ZWNoRmlyZWJhc2VDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc0NvbmZpZyxcbiAgQW5hbHl0aWNzRGVidWdFdmVudCxcbiAgQW5hbHl0aWNzRXZlbnROYW1lLFxuICBBbmFseXRpY3NFdmVudFBhcmFtcyxcbiAgQW5hbHl0aWNzSXRlbSxcbiAgQ29uc2VudFNldHRpbmdzLFxuICBDb25zZW50U3RhdGUsXG4gIERlYnVnRXZlbnRUeXBlLFxuICBUaW1pbmdNZXRyaWMsXG4gIFVzZXJQcm9wZXJ0aWVzLFxufSBmcm9tICcuL2FuYWx5dGljcy10eXBlcyc7XG5cbi8qKiBLZXkgcG9yIGRlZmVjdG8gcGFyYSBwZXJzaXN0aXIgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2UgKi9cbmNvbnN0IERFRkFVTFRfQ09OU0VOVF9TVE9SQUdFX0tFWSA9ICdhbmFseXRpY3NfY29uc2VudCc7XG5cbi8qKiBNw6F4aW1vIGRlIGV2ZW50b3MgZW4gaGlzdG9yaWFsIGRlIGRlYnVnICovXG5jb25zdCBNQVhfREVCVUdfSElTVE9SWSA9IDEwMDtcblxuLyoqXG4gKiBTZXJ2aWNpbyBkZSBGaXJlYmFzZSBBbmFseXRpY3MgKEdBNCkuXG4gKlxuICogUHJvcG9yY2lvbmEgdHJhY2tpbmcgZGUgZXZlbnRvcywgcGFnZSB2aWV3cywgZXJyb3JlcyB5IG3DqXRyaWNhcyBkZSBwZXJmb3JtYW5jZS5cbiAqIFNvcG9ydGEgR0RQUiBDb25zZW50IE1vZGUgeSBtb2RvIGRlYnVnIHBhcmEgZGVzYXJyb2xsby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7Li4ufSlcbiAqIGV4cG9ydCBjbGFzcyBQcm9kdWN0Q29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhbmFseXRpY3MgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG4gKlxuICogICBvblB1cmNoYXNlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcbiAqICAgICB0aGlzLmFuYWx5dGljcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gKiAgICAgICB0cmFuc2FjdGlvbl9pZDogb3JkZXIuaWQsXG4gKiAgICAgICB2YWx1ZTogb3JkZXIudG90YWwsXG4gKiAgICAgICBjdXJyZW5jeTogJ0VVUidcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE8gKFNpZ25hbHMpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnNlbnRTdGF0ZSA9IHNpZ25hbDxDb25zZW50U3RhdGU+KHtcbiAgICBzZXR0aW5nczoge30sXG4gICAgdXBkYXRlZEF0OiBudWxsLFxuICAgIGhhc0RlY2lkZWQ6IGZhbHNlLFxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RlYnVnTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlYnVnSGlzdG9yeSA9IHNpZ25hbDxBbmFseXRpY3NEZWJ1Z0V2ZW50W10+KFtdKTtcblxuICAvKiogRXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGFjdHVhbCAocmVhZG9ubHkpICovXG4gIHJlYWRvbmx5IGNvbnNlbnRTdGF0ZSA9IHRoaXMuX2NvbnNlbnRTdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlc3TDoSBlbiBtb2RvIGRlYnVnICovXG4gIHJlYWRvbmx5IGlzRGVidWdNb2RlID0gdGhpcy5faXNEZWJ1Z01vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgYW5hbHl0aWNzIGVzdMOhIGhhYmlsaXRhZG8geSBmdW5jaW9uYW5kbyAqL1xuICByZWFkb25seSBpc0VuYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSAmJiB0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncy5hbmFseXRpY3MgPT09IHRydWU7XG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05GSUdVUkFDScOTTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFuYWx5dGljc0NvbmZpZzogQW5hbHl0aWNzQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnNlbnRTdG9yYWdlS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRQcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1wbGluZ1JhdGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEZpcmViYXNlQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzQ29uZmlnID0gY29uZmlnLmFuYWx5dGljc0NvbmZpZyA/PyB7fTtcbiAgICB0aGlzLmNvbnNlbnRTdG9yYWdlS2V5ID0gdGhpcy5hbmFseXRpY3NDb25maWcuY29uc2VudFN0b3JhZ2VLZXkgPz8gREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZO1xuICAgIHRoaXMuZXZlbnRQcmVmaXggPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5ldmVudFByZWZpeCA/PyAnJztcbiAgICB0aGlzLnNhbXBsaW5nUmF0ZSA9IHRoaXMuYW5hbHl0aWNzQ29uZmlnLnNhbXBsaW5nUmF0ZSA/PyAxLjA7XG5cbiAgICB0aGlzLmluaXRpYWxpemVBbmFseXRpY3MoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgYW5hbHl0aWNzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVBbmFseXRpY3MoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29uc2VudCBNb2RlIHYyOiBkZWZhdWx0IGRlbmllZCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgIC8vIEdhcmFudGl6YSBxdWUgbm8gc2UgcmVjb2xlY3RhbiBkYXRvcyBoYXN0YSBxdWUgZWwgdXN1YXJpbyBkZWNpZGEuXG4gICAgdGhpcy5zZXRDb25zZW50TW9kZURlZmF1bHQoKTtcblxuICAgIC8vIENhcmdhciBjb25zZW50IGRlc2RlIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMubG9hZENvbnNlbnRGcm9tU3RvcmFnZSgpO1xuXG4gICAgLy8gQ29uZmlndXJhciBkZWJ1ZyBtb2RlXG4gICAgY29uc3QgZGVidWdNb2RlID0gdGhpcy5hbmFseXRpY3NDb25maWcuZGVidWdNb2RlID8/IGZhbHNlO1xuICAgIHRoaXMuX2lzRGVidWdNb2RlLnNldChkZWJ1Z01vZGUpO1xuXG4gICAgLy8gQXBsaWNhciBjb25zZW50IGluaWNpYWwgYSBndGFnXG4gICAgdGhpcy5hcHBseUNvbnNlbnRUb0d0YWcodGhpcy5fY29uc2VudFN0YXRlKCkuc2V0dGluZ3MpO1xuXG4gICAgLy8gU2V0ZWFyIHVzZXIgcHJvcGVydGllcyBwb3IgZGVmZWN0b1xuICAgIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0VXNlclByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXModGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdFVzZXJQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBpZiAoZGVidWdNb2RlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1tBbmFseXRpY3NdIEluaWNpYWxpemFkbyBlbiBtb2RvIGRlYnVnIC0gZXZlbnRvcyBzZSBsb2d1ZWFuIGVuIGNvbnNvbGEgWSBzZSBlbnbDrWFuIGEgRmlyZWJhc2UnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGluc3RhbmNpYSBkZSBBbmFseXRpY3MgZGUgZm9ybWEgcGVyZXpvc2EuXG4gICAqIEVzdG8gZXZpdGEgZWwgZXJyb3IgZGUgQVBQX0lOSVRJQUxJWkVSIGRlIEFuZ3VsYXJGaXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBbmFseXRpY3NJbnN0YW5jZSgpOiBBbmFseXRpY3MgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZUFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChBbmFseXRpY3MsIG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIEFuYWx5dGljcyBlc3TDoSBzb3BvcnRhZG9cbiAgICovXG4gIHByaXZhdGUgaXNBbmFseXRpY3NTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVBbmFseXRpY3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmZpcmViYXNlLm1lYXN1cmVtZW50SWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gbWVhc3VyZW1lbnRJZCBubyBjb25maWd1cmFkbyBlbiBmaXJlYmFzZSBjb25maWcnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBkZWJlIGVudmlhciBlbCBldmVudG8gKHNhbXBsaW5nKVxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRTYW1wbGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2FtcGxpbmdSYXRlID49IDEuMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgdGhpcy5zYW1wbGluZ1JhdGU7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUEFHRSBWSUVXU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gcGFnZSB2aWV3LlxuICAgKiBOb3JtYWxtZW50ZSBzZSB1c2EgYXV0b23DoXRpY2FtZW50ZSB2aWEgQW5hbHl0aWNzUm91dGVyVHJhY2tlci5cbiAgICpcbiAgICogQHBhcmFtIHBhZ2VQYXRoIC0gUnV0YSBkZSBsYSBww6FnaW5hIChlajogJy9wcm9kdWN0cy8xMjMnKVxuICAgKiBAcGFyYW0gcGFnZVRpdGxlIC0gVMOtdHVsbyBkZSBsYSBww6FnaW5hIChvcGNpb25hbClcbiAgICovXG4gIGxvZ1BhZ2VWaWV3KHBhZ2VQYXRoOiBzdHJpbmcsIHBhZ2VUaXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFNTUjogZG9jdW1lbnQvd2luZG93IG5vIGV4aXN0ZW4gY29tbyBnbG9iYWxzIOKAlCBvcHRpb25hbCBjaGFpbmluZyBubyBwcm90ZWdlXG4gICAgLy8gY29udHJhIFJlZmVyZW5jZUVycm9yLiBDb3J0b2NpcmN1aXRvIGV4cGzDrWNpdG8gcG9yIHBsYXRmb3JtLlxuICAgIGNvbnN0IGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgdGhpcy5sb2dFdmVudCgncGFnZV92aWV3Jywge1xuICAgICAgcGFnZV9wYXRoOiBwYWdlUGF0aCxcbiAgICAgIHBhZ2VfdGl0bGU6IHBhZ2VUaXRsZSA/PyAoaXNCcm93c2VyID8gZG9jdW1lbnQudGl0bGUgOiB1bmRlZmluZWQpLFxuICAgICAgcGFnZV9sb2NhdGlvbjogaXNCcm93c2VyID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gc2NyZWVuIHZpZXcgKHBhcmEgYXBwcyB0aXBvIFNQQSkuXG4gICAqXG4gICAqIEBwYXJhbSBzY3JlZW5OYW1lIC0gTm9tYnJlIGRlbCBzY3JlZW5cbiAgICogQHBhcmFtIHNjcmVlbkNsYXNzIC0gQ2xhc2UgZGVsIHNjcmVlbiAob3BjaW9uYWwpXG4gICAqL1xuICBsb2dTY3JlZW5WaWV3KHNjcmVlbk5hbWU6IHN0cmluZywgc2NyZWVuQ2xhc3M/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdzY3JlZW5fdmlldycsIHtcbiAgICAgIHNjcmVlbl9uYW1lOiBzY3JlZW5OYW1lLFxuICAgICAgc2NyZWVuX2NsYXNzOiBzY3JlZW5DbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFVkVOVE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gdGlwYWRvIEdBNC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5vbWJyZSBkZWwgZXZlbnRvICh0aXBhZG8pXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBkZWwgZXZlbnRvICh0aXBhZG9zIHNlZ8O6biBlbCBub21icmUpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRXZlbnRvIHRpcGFkbyBjb24gYXV0b2NvbXBsZXRhZG9cbiAgICogYW5hbHl0aWNzLmxvZ0V2ZW50KCdhZGRfdG9fY2FydCcsIHtcbiAgICogICBpdGVtX2lkOiAnMTIzJyxcbiAgICogICBpdGVtX25hbWU6ICdQcm9kdWN0bycsXG4gICAqICAgdmFsdWU6IDk5Ljk5LFxuICAgKiAgIGN1cnJlbmN5OiAnRVVSJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBsb2dFdmVudDxUIGV4dGVuZHMgQW5hbHl0aWNzRXZlbnROYW1lPihldmVudE5hbWU6IFQsIHBhcmFtcz86IEFuYWx5dGljc0V2ZW50UGFyYW1zW1RdKTogdm9pZCB7XG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50TmFtZSwgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gY3VzdG9tIGNvbiBwYXLDoW1ldHJvcyBsaWJyZXMuXG4gICAqIFVzYXIgY3VhbmRvIGVsIGV2ZW50byBubyBlc3TDoSBlbiBlbCBjYXTDoWxvZ28gdGlwYWRvLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTm9tYnJlIGRlbCBldmVudG8gY3VzdG9tXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBsaWJyZXNcbiAgICovXG4gIGxvZ0N1c3RvbUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZXZlbnRQcmVmaXggKyBldmVudE5hbWU7XG4gICAgdGhpcy50cmFja0V2ZW50KHByZWZpeGVkTmFtZSwgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMw7NnaWNhIGNvbcO6biBwYXJhIGVudmlhciBldmVudG9zXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgLy8gVmVyaWZpY2FyIGNvbnNlbnRcbiAgICBpZiAoIXRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLmFuYWx5dGljcykge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFwbGljYXIgc2FtcGxpbmdcbiAgICBpZiAoIXRoaXMuc2hvdWxkU2FtcGxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBtb2RlOiBsb2d1ZWFyIGVuIGNvbnNvbGEgKHBlcm8gc2VndWlyIGVudmlhbmRvIGEgRmlyZWJhc2UpXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBFdmVudDogJHtldmVudE5hbWV9YCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBFbnZpYXIgYSBGaXJlYmFzZVxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHRoaXMuZ2V0QW5hbHl0aWNzSW5zdGFuY2UoKTtcbiAgICBpZiAoYW5hbHl0aWNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dFdmVudChhbmFseXRpY3MsIGV2ZW50TmFtZSBhcyBzdHJpbmcsIHBhcmFtcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3IgZW52aWFuZG8gZXZlbnRvOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVDT01NRVJDRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdmlzdGEgZGUgaXRlbVxuICAgKi9cbiAgbG9nVmlld0l0ZW0oaXRlbTogQW5hbHl0aWNzSXRlbSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3ZpZXdfaXRlbScsIHtcbiAgICAgIGl0ZW1faWQ6IGl0ZW0uaXRlbV9pZCxcbiAgICAgIGl0ZW1fbmFtZTogaXRlbS5pdGVtX25hbWUsXG4gICAgICB2YWx1ZTogaXRlbS5wcmljZSxcbiAgICAgIGN1cnJlbmN5OiBpdGVtLmN1cnJlbmN5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGFncmVnYXIgYWwgY2Fycml0b1xuICAgKi9cbiAgbG9nQWRkVG9DYXJ0KGl0ZW06IEFuYWx5dGljc0l0ZW0sIHF1YW50aXR5ID0gMSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2FkZF90b19jYXJ0Jywge1xuICAgICAgaXRlbV9pZDogaXRlbS5pdGVtX2lkLFxuICAgICAgaXRlbV9uYW1lOiBpdGVtLml0ZW1fbmFtZSxcbiAgICAgIHZhbHVlOiAoaXRlbS5wcmljZSA/PyAwKSAqIHF1YW50aXR5LFxuICAgICAgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3ksXG4gICAgICBxdWFudGl0eSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBpbmljaW8gZGUgY2hlY2tvdXRcbiAgICovXG4gIGxvZ0JlZ2luQ2hlY2tvdXQoaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSwgdmFsdWU6IG51bWJlciwgY3VycmVuY3kgPSAnRVVSJyk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2JlZ2luX2NoZWNrb3V0Jywge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGNvbXByYSBjb21wbGV0YWRhXG4gICAqL1xuICBsb2dQdXJjaGFzZShcbiAgICB0cmFuc2FjdGlvbklkOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSxcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGN1cnJlbmN5ID0gJ0VVUidcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZCxcbiAgICAgIHZhbHVlLFxuICAgICAgY3VycmVuY3ksXG4gICAgICBpdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVU0VSIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFNldGVhIGVsIHVzZXJJZCBwYXJhIGFzb2NpYXIgZXZlbnRvcyBjb24gZWwgdXN1YXJpby5cbiAgICogTGxhbWFkbyBhdXRvbcOhdGljYW1lbnRlIHNpIGVuYWJsZUF1dGhJbnRlZ3JhdGlvbj10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIC0gSUQgZGVsIHVzdWFyaW8gbyBudWxsIHBhcmEgbGltcGlhclxuICAgKi9cbiAgc2V0VXNlcklkKHVzZXJJZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbW9kZTogbG9ndWVhciBlbiBjb25zb2xhIChwZXJvIHNlZ3VpciBlbnZpYW5kbyBhIEZpcmViYXNlKVxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW0FuYWx5dGljc10gU2V0IHVzZXJJZDogJHt1c2VySWR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFVzZXJJZChhbmFseXRpY3MsIHVzZXJJZCk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAndXNlcl9pZCcsIHsgdXNlcklkIH0sIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlcklkOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICd1c2VyX2lkJywgeyB1c2VySWQgfSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3VzZXJfaWQnLCB7IHVzZXJJZCB9LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIHByb3BpZWRhZGVzIGRlbCB1c3VhcmlvIHBhcmEgc2VnbWVudGFjacOzbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgLSBQcm9waWVkYWRlcyBrZXktdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhbmFseXRpY3Muc2V0VXNlclByb3BlcnRpZXMoe1xuICAgKiAgIHN1YnNjcmlwdGlvbl90aWVyOiAncHJlbWl1bScsXG4gICAqICAgcHJlZmVycmVkX2xhbmd1YWdlOiAnZXMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFVzZXJQcm9wZXJ0aWVzIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlYnVnIG1vZGU6IGxvZ3VlYXIgZW4gY29uc29sYSAocGVybyBzZWd1aXIgZW52aWFuZG8gYSBGaXJlYmFzZSlcbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ1tBbmFseXRpY3NdIFNldCB1c2VyIHByb3BlcnRpZXM6JywgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENvbnZlcnRpciBhIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gcGFyYSBGaXJlYmFzZVxuICAgICAgICBjb25zdCBzdHJpbmdQcm9wczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdHJpbmdQcm9wc1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0VXNlclByb3BlcnRpZXMoYW5hbHl0aWNzLCBzdHJpbmdQcm9wcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAncHJvcGVydGllcycsIHByb3BlcnRpZXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlciBwcm9wZXJ0aWVzOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICdwcm9wZXJ0aWVzJywgcHJvcGVydGllcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0aWVzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIGxhIG9yZ2FuaXphY2nDs24gYWN0aXZhIChtdWx0aS10ZW5hbnQpLlxuICAgKiBMbGFtYWRvIGF1dG9tw6F0aWNhbWVudGUgc2kgZW5hYmxlQXV0aEludGVncmF0aW9uPXRydWUuXG4gICAqXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2nDs24gbyBudWxsXG4gICAqL1xuICBzZXRBY3RpdmVPcmdhbml6YXRpb24ob3JnSWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3JnSWQpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeyBhY3RpdmVfb3JnYW5pemF0aW9uOiBvcmdJZCB9KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVJST1IgVFJBQ0tJTkdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGVycm9yIHBhcmEgdHJhY2tpbmcuXG4gICAqIEludGVncmEgYXV0b23DoXRpY2FtZW50ZSBjb24gQW5ndWxhciBFcnJvckhhbmRsZXIgc2kgZW5hYmxlRXJyb3JUcmFja2luZz10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvIG1lbnNhamUgZGUgZXJyb3JcbiAgICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0byBhZGljaW9uYWxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB0cnkge1xuICAgKiAgIGF3YWl0IHJpc2t5T3BlcmF0aW9uKCk7XG4gICAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAqICAgYW5hbHl0aWNzLmxvZ0Vycm9yKGVycm9yLCB7IGNvbnRleHQ6ICdjaGVja291dF9mbG93JyB9KTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGxvZ0Vycm9yKGVycm9yOiBFcnJvciB8IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgIGNvbnN0IGVycm9yU3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZXJyb3JUeXBlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm5hbWUgOiAnRXJyb3InO1xuXG4gICAgdGhpcy5sb2dFdmVudCgnZXJyb3Jfb2NjdXJyZWQnLCB7XG4gICAgICBlcnJvcl90eXBlOiBlcnJvclR5cGUsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCksIC8vIExpbWl0YXIgbG9uZ2l0dWRcbiAgICAgIGVycm9yX3N0YWNrOiBlcnJvclN0YWNrPy5zdWJzdHJpbmcoMCwgNTAwKSxcbiAgICAgIGNvbnRleHQ6IGNvbnRleHQgPyBKU09OLnN0cmluZ2lmeShjb250ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBlcnJvciBmYXRhbCAoY3Jhc2gtbGV2ZWwpLlxuICAgKi9cbiAgbG9nRmF0YWxFcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5sb2dFcnJvcihlcnJvciwgeyAuLi5jb250ZXh0LCBzZXZlcml0eTogJ2ZhdGFsJyB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05TRU5UIE1PREUgKEdEUFIpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGRlbCB1c3VhcmlvLlxuICAgKiBBZmVjdGEgcXXDqSBkYXRvcyBzZSByZWNvbGVjdGFuIHkgZW52w61hbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbnNlbnQgLSBTZXR0aW5ncyBkZSBjb25zZW50aW1pZW50b1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVzdWFyaW8gYWNlcHRhIHRvZG9cbiAgICogYW5hbHl0aWNzLnVwZGF0ZUNvbnNlbnQoeyBhbmFseXRpY3M6IHRydWUsIGFkdmVydGlzaW5nOiB0cnVlIH0pO1xuICAgKlxuICAgKiAvLyBVc3VhcmlvIHJlY2hhemEgcHVibGljaWRhZFxuICAgKiBhbmFseXRpY3MudXBkYXRlQ29uc2VudCh7IGFuYWx5dGljczogdHJ1ZSwgYWR2ZXJ0aXNpbmc6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwZGF0ZUNvbnNlbnQoY29uc2VudDogQ29uc2VudFNldHRpbmdzKTogdm9pZCB7XG4gICAgY29uc3QgbmV3U3RhdGU6IENvbnNlbnRTdGF0ZSA9IHtcbiAgICAgIHNldHRpbmdzOiB7IC4uLnRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLCAuLi5jb25zZW50IH0sXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBoYXNEZWNpZGVkOiB0cnVlLFxuICAgIH07XG5cbiAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KG5ld1N0YXRlKTtcbiAgICB0aGlzLnNhdmVDb25zZW50VG9TdG9yYWdlKG5ld1N0YXRlKTtcbiAgICB0aGlzLmFwcGx5Q29uc2VudFRvR3RhZyhuZXdTdGF0ZS5zZXR0aW5ncyk7XG5cbiAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KFxuICAgICAgJ2NvbnNlbnQnLFxuICAgICAgJ3VwZGF0ZScsXG4gICAgICBjb25zZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVuaWVnYSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZGVueUFsbENvbnNlbnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25zZW50KHtcbiAgICAgIGFuYWx5dGljczogZmFsc2UsXG4gICAgICBhZHZlcnRpc2luZzogZmFsc2UsXG4gICAgICBmdW5jdGlvbmFsaXR5OiBmYWxzZSxcbiAgICAgIHNlY3VyaXR5OiB0cnVlLCAvLyBTaWVtcHJlIHBlcm1pdGlkb1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjZXB0YSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZ3JhbnRBbGxDb25zZW50KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uc2VudCh7XG4gICAgICBhbmFseXRpY3M6IHRydWUsXG4gICAgICBhZHZlcnRpc2luZzogdHJ1ZSxcbiAgICAgIGZ1bmN0aW9uYWxpdHk6IHRydWUsXG4gICAgICBzZWN1cml0eTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBhY3R1YWwgZGUgY29uc2VudGltaWVudG8uXG4gICAqL1xuICBnZXRDb25zZW50U3RhdGUoKTogQ29uc2VudFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29uc2VudFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIGVsIGNvbnNlbnQgZGVmYXVsdCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgKiBSZXF1ZXJpZG8gcG9yIEdvb2dsZSBDb25zZW50IE1vZGUgdjIgcGFyYSBubyByZWNvbGVjdGFyIGRhdG9zIGhhc3RhXG4gICAqIHF1ZSBlbCB1c3VhcmlvIHRvbWUgdW5hIGRlY2lzaW9uIGV4cGxpY2l0YS5cbiAgICovXG4gIHByaXZhdGUgc2V0Q29uc2VudE1vZGVEZWZhdWx0KCk6IHZvaWQge1xuICAgIC8vIGd0YWcgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBhdW4gKEZpcmViYXNlIGxvIGNhcmdhIGFzeW5jKS5cbiAgICAvLyBVc2Ftb3MgZGF0YUxheWVyIGRpcmVjdGFtZW50ZSwgcXVlIHNpIGVzdGEgZGlzcG9uaWJsZSBkZXNkZSBpbmRleC5odG1sLlxuICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBkYXRhTGF5ZXIgPSAod1snZGF0YUxheWVyJ10gYXMgdW5rbm93bltdKSA/PyBbXTtcbiAgICB3WydkYXRhTGF5ZXInXSA9IGRhdGFMYXllcjtcbiAgICAvLyBwdXNoIGEgZGF0YUxheWVyIGZ1bmNpb25hIGFudGVzIGRlIHF1ZSBndGFnLmpzIGNhcmd1ZSDigJQgR0EgbG8gY29uc3VtZSBhbCBjYXJnYXIuXG4gICAgZGF0YUxheWVyLnB1c2goJ2NvbnNlbnQnLCAnZGVmYXVsdCcsIHtcbiAgICAgIGFuYWx5dGljc19zdG9yYWdlOiAnZGVuaWVkJyxcbiAgICAgIGFkX3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgYWRfdXNlcl9kYXRhOiAnZGVuaWVkJyxcbiAgICAgIGFkX3BlcnNvbmFsaXphdGlvbjogJ2RlbmllZCcsXG4gICAgICBmdW5jdGlvbmFsaXR5X3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgc2VjdXJpdHlfc3RvcmFnZTogJ2dyYW50ZWQnLFxuICAgICAgd2FpdF9mb3JfdXBkYXRlOiA1MDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBsaWNhIGNvbnNlbnQgc2V0dGluZ3MgYSBndGFnIChHQTQgQ29uc2VudCBNb2RlIHYyKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUNvbnNlbnRUb0d0YWcoc2V0dGluZ3M6IENvbnNlbnRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGd0YWcgPSAod2luZG93IGFzIGFueSkuZ3RhZztcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZ3RhZygnY29uc2VudCcsICd1cGRhdGUnLCB7XG4gICAgICAgIGFuYWx5dGljc19zdG9yYWdlOiBzZXR0aW5ncy5hbmFseXRpY3MgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfc3RvcmFnZTogc2V0dGluZ3MuYWR2ZXJ0aXNpbmcgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfdXNlcl9kYXRhOiBzZXR0aW5ncy5hZHZlcnRpc2luZyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF9wZXJzb25hbGl6YXRpb246IHNldHRpbmdzLmFkdmVydGlzaW5nID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIGZ1bmN0aW9uYWxpdHlfc3RvcmFnZTogc2V0dGluZ3MuZnVuY3Rpb25hbGl0eSA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBzZWN1cml0eV9zdG9yYWdlOiBzZXR0aW5ncy5zZWN1cml0eSAhPT0gZmFsc2UgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGFwbGljYW5kbyBjb25zZW50IGEgZ3RhZzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRDb25zZW50RnJvbVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uc2VudFN0b3JhZ2VLZXkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCkgYXMgQ29uc2VudFN0YXRlO1xuICAgICAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KHtcbiAgICAgICAgICAuLi5wYXJzZWQsXG4gICAgICAgICAgdXBkYXRlZEF0OiBwYXJzZWQudXBkYXRlZEF0ID8gbmV3IERhdGUocGFyc2VkLnVwZGF0ZWRBdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdENvbnNlbnRHcmFudGVkKSB7XG4gICAgICAgIC8vIEF1dG8tZ3JhbnQgYWxsIGNvbnNlbnQgcGFyYSBkZXNhcnJvbGxvL3Rlc3RpbmdcbiAgICAgICAgdGhpcy5fY29uc2VudFN0YXRlLnNldCh7XG4gICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGFuYWx5dGljczogdHJ1ZSxcbiAgICAgICAgICAgIGFkdmVydGlzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZnVuY3Rpb25hbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIHNlY3VyaXR5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIGhhc0RlY2lkZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCkge1xuICAgICAgICAvLyBBcGxpY2FyIGNvbnNlbnQgcG9yIGRlZmVjdG8gc2kgbm8gaGF5IGd1YXJkYWRvXG4gICAgICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQoe1xuICAgICAgICAgIHNldHRpbmdzOiB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgICAgICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGNhcmdhbmRvIGNvbnNlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnNlbnRUb1N0b3JhZ2Uoc3RhdGU6IENvbnNlbnRTdGF0ZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbnNlbnRTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGd1YXJkYW5kbyBjb25zZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVElNSU5HIC8gUEVSRk9STUFOQ0VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuYSBtw6l0cmljYSBkZSB0aW1pbmcvcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gTm9tYnJlIGRlIGxhIG3DqXRyaWNhXG4gICAqIEBwYXJhbSB2YWx1ZU1zIC0gVmFsb3IgZW4gbWlsaXNlZ3VuZG9zXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBhZGljaW9uYWxlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAqIGF3YWl0IGxvYWREYXRhKCk7XG4gICAqIGFuYWx5dGljcy5sb2dUaW1pbmcoJ2RhdGFfbG9hZCcsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQsIHtcbiAgICogICBjYXRlZ29yeTogJ2FwaScsXG4gICAqICAgZW5kcG9pbnQ6ICcvcHJvZHVjdHMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ1RpbWluZyhuYW1lOiBzdHJpbmcsIHZhbHVlTXM6IG51bWJlciwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3BlcmZvcm1hbmNlX21ldHJpYycsIHtcbiAgICAgIG1ldHJpY19uYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IE1hdGgucm91bmQodmFsdWVNcyksXG4gICAgICB1bml0OiAnbXMnLFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFQlVHXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBIYWJpbGl0YS9kZXNoYWJpbGl0YSBtb2RvIGRlYnVnLlxuICAgKiBFbiBkZWJ1ZzogbG9nZWEgZXZlbnRvcyBhIGNvbnNvbGEgYWRlbcOhcyBkZSBlbnZpYXJsb3MgYSBGaXJlYmFzZS5cbiAgICovXG4gIHNldERlYnVnTW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGVuYWJsZWQpO1xuICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBEZWJ1ZyBtb2RlOiAke2VuYWJsZWQgPyAnT04nIDogJ09GRid9YCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoaXN0b3JpYWwgZGUgZXZlbnRvcyAoc29sbyBlbiBkZWJ1ZyBtb2RlKS5cbiAgICogw5p0aWwgcGFyYSB0ZXN0aW5nIHkgZGVzYXJyb2xsby5cbiAgICovXG4gIGdldERlYnVnSGlzdG9yeSgpOiBBbmFseXRpY3NEZWJ1Z0V2ZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgaGlzdG9yaWFsIGRlIGRlYnVnLlxuICAgKi9cbiAgY2xlYXJEZWJ1Z0hpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnNldChbXSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIGV2ZW50byBhbCBoaXN0b3JpYWwgZGUgZGVidWdcbiAgICovXG4gIHByaXZhdGUgYWRkVG9EZWJ1Z0hpc3RvcnkoXG4gICAgdHlwZTogRGVidWdFdmVudFR5cGUsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHNlbnQgPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudDogQW5hbHl0aWNzRGVidWdFdmVudCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgcGFyYW1zLFxuICAgICAgc2VudCxcbiAgICB9O1xuXG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnVwZGF0ZShoaXN0b3J5ID0+IHtcbiAgICAgIGNvbnN0IG5ld0hpc3RvcnkgPSBbZXZlbnQsIC4uLmhpc3RvcnldO1xuICAgICAgcmV0dXJuIG5ld0hpc3Rvcnkuc2xpY2UoMCwgTUFYX0RFQlVHX0hJU1RPUlkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
649
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWVuRCw2REFBNkQ7QUFDN0QsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4RCw4Q0FBOEM7QUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQ1UsUUFBa0IsRUFDZSxNQUE2QixFQUN6QyxVQUFrQjtRQUZ2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2UsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXBDakQsOEVBQThFO1FBQzlFLG1CQUFtQjtRQUNuQiw4RUFBOEU7UUFFN0Qsa0JBQWEsR0FBRyxNQUFNLENBQWU7WUFDcEQsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVjLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUF3QixF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QUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSTtZQUNKLElBQUk7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMLENBQUM7UUFFRixjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBN3FCVSxnQkFBZ0IsMENBb0NqQix1QkFBdUIsYUFDdkIsV0FBVzttSEFyQ1YsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFDN0IsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuYWx5dGljcyBTZXJ2aWNlIChGaXJlYmFzZSBHQTQpXG4gKlxuICogU2VydmljaW8gcGFyYSB0cmFja2luZyBkZSBldmVudG9zLCBwYWdlIHZpZXdzIHkgZXJyb3JlcyBjb24gRmlyZWJhc2UgQW5hbHl0aWNzLlxuICogSW50ZWdyYSBjb24gZWwgc2lzdGVtYSBkZSBhdXRoIHBhcmEgdXNlciBwcm9wZXJ0aWVzIHkgcmVzcGV0YSBjb25zZW50IG1vZGUgR0RQUi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBQTEFURk9STV9JRCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBsb2dFdmVudCwgc2V0VXNlcklkLCBzZXRVc2VyUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYW5hbHl0aWNzJztcblxuaW1wb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBWYWx0ZWNoRmlyZWJhc2VDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc0NvbmZpZyxcbiAgQW5hbHl0aWNzRGVidWdFdmVudCxcbiAgQW5hbHl0aWNzRXZlbnROYW1lLFxuICBBbmFseXRpY3NFdmVudFBhcmFtcyxcbiAgQW5hbHl0aWNzSXRlbSxcbiAgQ29uc2VudFNldHRpbmdzLFxuICBDb25zZW50U3RhdGUsXG4gIERlYnVnRXZlbnRUeXBlLFxuICBUaW1pbmdNZXRyaWMsXG4gIFVzZXJQcm9wZXJ0aWVzLFxufSBmcm9tICcuL2FuYWx5dGljcy10eXBlcyc7XG5cbi8qKiBLZXkgcG9yIGRlZmVjdG8gcGFyYSBwZXJzaXN0aXIgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2UgKi9cbmNvbnN0IERFRkFVTFRfQ09OU0VOVF9TVE9SQUdFX0tFWSA9ICdhbmFseXRpY3NfY29uc2VudCc7XG5cbi8qKiBNw6F4aW1vIGRlIGV2ZW50b3MgZW4gaGlzdG9yaWFsIGRlIGRlYnVnICovXG5jb25zdCBNQVhfREVCVUdfSElTVE9SWSA9IDEwMDtcblxuLyoqXG4gKiBTZXJ2aWNpbyBkZSBGaXJlYmFzZSBBbmFseXRpY3MgKEdBNCkuXG4gKlxuICogUHJvcG9yY2lvbmEgdHJhY2tpbmcgZGUgZXZlbnRvcywgcGFnZSB2aWV3cywgZXJyb3JlcyB5IG3DqXRyaWNhcyBkZSBwZXJmb3JtYW5jZS5cbiAqIFNvcG9ydGEgR0RQUiBDb25zZW50IE1vZGUgeSBtb2RvIGRlYnVnIHBhcmEgZGVzYXJyb2xsby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7Li4ufSlcbiAqIGV4cG9ydCBjbGFzcyBQcm9kdWN0Q29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhbmFseXRpY3MgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG4gKlxuICogICBvblB1cmNoYXNlKHByb2R1Y3Q6IFByb2R1Y3QpIHtcbiAqICAgICB0aGlzLmFuYWx5dGljcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gKiAgICAgICB0cmFuc2FjdGlvbl9pZDogb3JkZXIuaWQsXG4gKiAgICAgICB2YWx1ZTogb3JkZXIudG90YWwsXG4gKiAgICAgICBjdXJyZW5jeTogJ0VVUidcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE8gKFNpZ25hbHMpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnNlbnRTdGF0ZSA9IHNpZ25hbDxDb25zZW50U3RhdGU+KHtcbiAgICBzZXR0aW5nczoge30sXG4gICAgdXBkYXRlZEF0OiBudWxsLFxuICAgIGhhc0RlY2lkZWQ6IGZhbHNlLFxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RlYnVnTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlYnVnSGlzdG9yeSA9IHNpZ25hbDxBbmFseXRpY3NEZWJ1Z0V2ZW50W10+KFtdKTtcblxuICAvKiogRXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGFjdHVhbCAocmVhZG9ubHkpICovXG4gIHJlYWRvbmx5IGNvbnNlbnRTdGF0ZSA9IHRoaXMuX2NvbnNlbnRTdGF0ZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIEluZGljYSBzaSBlc3TDoSBlbiBtb2RvIGRlYnVnICovXG4gIHJlYWRvbmx5IGlzRGVidWdNb2RlID0gdGhpcy5faXNEZWJ1Z01vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgYW5hbHl0aWNzIGVzdMOhIGhhYmlsaXRhZG8geSBmdW5jaW9uYW5kbyAqL1xuICByZWFkb25seSBpc0VuYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSAmJiB0aGlzLl9jb25zZW50U3RhdGUoKS5zZXR0aW5ncy5hbmFseXRpY3MgPT09IHRydWU7XG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05GSUdVUkFDScOTTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFuYWx5dGljc0NvbmZpZzogQW5hbHl0aWNzQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnNlbnRTdG9yYWdlS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRQcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1wbGluZ1JhdGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEZpcmViYXNlQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzQ29uZmlnID0gY29uZmlnLmFuYWx5dGljc0NvbmZpZyA/PyB7fTtcbiAgICB0aGlzLmNvbnNlbnRTdG9yYWdlS2V5ID0gdGhpcy5hbmFseXRpY3NDb25maWcuY29uc2VudFN0b3JhZ2VLZXkgPz8gREVGQVVMVF9DT05TRU5UX1NUT1JBR0VfS0VZO1xuICAgIHRoaXMuZXZlbnRQcmVmaXggPSB0aGlzLmFuYWx5dGljc0NvbmZpZy5ldmVudFByZWZpeCA/PyAnJztcbiAgICB0aGlzLnNhbXBsaW5nUmF0ZSA9IHRoaXMuYW5hbHl0aWNzQ29uZmlnLnNhbXBsaW5nUmF0ZSA/PyAxLjA7XG5cbiAgICB0aGlzLmluaXRpYWxpemVBbmFseXRpY3MoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0nDk05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEluaWNpYWxpemEgZWwgc2VydmljaW8gZGUgYW5hbHl0aWNzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVBbmFseXRpY3MoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29uc2VudCBNb2RlIHYyOiBkZWZhdWx0IGRlbmllZCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgIC8vIEdhcmFudGl6YSBxdWUgbm8gc2UgcmVjb2xlY3RhbiBkYXRvcyBoYXN0YSBxdWUgZWwgdXN1YXJpbyBkZWNpZGEuXG4gICAgdGhpcy5zZXRDb25zZW50TW9kZURlZmF1bHQoKTtcblxuICAgIC8vIENhcmdhciBjb25zZW50IGRlc2RlIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMubG9hZENvbnNlbnRGcm9tU3RvcmFnZSgpO1xuXG4gICAgLy8gQ29uZmlndXJhciBkZWJ1ZyBtb2RlXG4gICAgY29uc3QgZGVidWdNb2RlID0gdGhpcy5hbmFseXRpY3NDb25maWcuZGVidWdNb2RlID8/IGZhbHNlO1xuICAgIHRoaXMuX2lzRGVidWdNb2RlLnNldChkZWJ1Z01vZGUpO1xuXG4gICAgLy8gQXBsaWNhciBjb25zZW50IGluaWNpYWwgYSBndGFnXG4gICAgdGhpcy5hcHBseUNvbnNlbnRUb0d0YWcodGhpcy5fY29uc2VudFN0YXRlKCkuc2V0dGluZ3MpO1xuXG4gICAgLy8gU2V0ZWFyIHVzZXIgcHJvcGVydGllcyBwb3IgZGVmZWN0b1xuICAgIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0VXNlclByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXModGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdFVzZXJQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBpZiAoZGVidWdNb2RlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1tBbmFseXRpY3NdIEluaWNpYWxpemFkbyBlbiBtb2RvIGRlYnVnIC0gZXZlbnRvcyBzZSBsb2d1ZWFuIGVuIGNvbnNvbGEgWSBzZSBlbnbDrWFuIGEgRmlyZWJhc2UnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGluc3RhbmNpYSBkZSBBbmFseXRpY3MgZGUgZm9ybWEgcGVyZXpvc2EuXG4gICAqIEVzdG8gZXZpdGEgZWwgZXJyb3IgZGUgQVBQX0lOSVRJQUxJWkVSIGRlIEFuZ3VsYXJGaXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBbmFseXRpY3NJbnN0YW5jZSgpOiBBbmFseXRpY3MgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZUFuYWx5dGljcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChBbmFseXRpY3MsIG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIEFuYWx5dGljcyBlc3TDoSBzb3BvcnRhZG9cbiAgICovXG4gIHByaXZhdGUgaXNBbmFseXRpY3NTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVBbmFseXRpY3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmZpcmViYXNlLm1lYXN1cmVtZW50SWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FuYWx5dGljc10gbWVhc3VyZW1lbnRJZCBubyBjb25maWd1cmFkbyBlbiBmaXJlYmFzZSBjb25maWcnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSBkZWJlIGVudmlhciBlbCBldmVudG8gKHNhbXBsaW5nKVxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRTYW1wbGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2FtcGxpbmdSYXRlID49IDEuMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgdGhpcy5zYW1wbGluZ1JhdGU7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUEFHRSBWSUVXU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gcGFnZSB2aWV3LlxuICAgKiBOb3JtYWxtZW50ZSBzZSB1c2EgYXV0b23DoXRpY2FtZW50ZSB2aWEgQW5hbHl0aWNzUm91dGVyVHJhY2tlci5cbiAgICpcbiAgICogQHBhcmFtIHBhZ2VQYXRoIC0gUnV0YSBkZSBsYSBww6FnaW5hIChlajogJy9wcm9kdWN0cy8xMjMnKVxuICAgKiBAcGFyYW0gcGFnZVRpdGxlIC0gVMOtdHVsbyBkZSBsYSBww6FnaW5hIChvcGNpb25hbClcbiAgICovXG4gIGxvZ1BhZ2VWaWV3KHBhZ2VQYXRoOiBzdHJpbmcsIHBhZ2VUaXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFNTUjogZG9jdW1lbnQvd2luZG93IG5vIGV4aXN0ZW4gY29tbyBnbG9iYWxzIOKAlCBvcHRpb25hbCBjaGFpbmluZyBubyBwcm90ZWdlXG4gICAgLy8gY29udHJhIFJlZmVyZW5jZUVycm9yLiBDb3J0b2NpcmN1aXRvIGV4cGzDrWNpdG8gcG9yIHBsYXRmb3JtLlxuICAgIGNvbnN0IGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgdGhpcy5sb2dFdmVudCgncGFnZV92aWV3Jywge1xuICAgICAgcGFnZV9wYXRoOiBwYWdlUGF0aCxcbiAgICAgIHBhZ2VfdGl0bGU6IHBhZ2VUaXRsZSA/PyAoaXNCcm93c2VyID8gZG9jdW1lbnQudGl0bGUgOiB1bmRlZmluZWQpLFxuICAgICAgcGFnZV9sb2NhdGlvbjogaXNCcm93c2VyID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdW4gc2NyZWVuIHZpZXcgKHBhcmEgYXBwcyB0aXBvIFNQQSkuXG4gICAqXG4gICAqIEBwYXJhbSBzY3JlZW5OYW1lIC0gTm9tYnJlIGRlbCBzY3JlZW5cbiAgICogQHBhcmFtIHNjcmVlbkNsYXNzIC0gQ2xhc2UgZGVsIHNjcmVlbiAob3BjaW9uYWwpXG4gICAqL1xuICBsb2dTY3JlZW5WaWV3KHNjcmVlbk5hbWU6IHN0cmluZywgc2NyZWVuQ2xhc3M/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0V2ZW50KCdzY3JlZW5fdmlldycsIHtcbiAgICAgIHNjcmVlbl9uYW1lOiBzY3JlZW5OYW1lLFxuICAgICAgc2NyZWVuX2NsYXNzOiBzY3JlZW5DbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFVkVOVE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gdGlwYWRvIEdBNC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5vbWJyZSBkZWwgZXZlbnRvICh0aXBhZG8pXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBkZWwgZXZlbnRvICh0aXBhZG9zIHNlZ8O6biBlbCBub21icmUpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRXZlbnRvIHRpcGFkbyBjb24gYXV0b2NvbXBsZXRhZG9cbiAgICogYW5hbHl0aWNzLmxvZ0V2ZW50KCdhZGRfdG9fY2FydCcsIHtcbiAgICogICBpdGVtX2lkOiAnMTIzJyxcbiAgICogICBpdGVtX25hbWU6ICdQcm9kdWN0bycsXG4gICAqICAgdmFsdWU6IDk5Ljk5LFxuICAgKiAgIGN1cnJlbmN5OiAnRVVSJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBsb2dFdmVudDxUIGV4dGVuZHMgQW5hbHl0aWNzRXZlbnROYW1lPihldmVudE5hbWU6IFQsIHBhcmFtcz86IEFuYWx5dGljc0V2ZW50UGFyYW1zW1RdKTogdm9pZCB7XG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50TmFtZSwgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBldmVudG8gY3VzdG9tIGNvbiBwYXLDoW1ldHJvcyBsaWJyZXMuXG4gICAqIFVzYXIgY3VhbmRvIGVsIGV2ZW50byBubyBlc3TDoSBlbiBlbCBjYXTDoWxvZ28gdGlwYWRvLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTm9tYnJlIGRlbCBldmVudG8gY3VzdG9tXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBsaWJyZXNcbiAgICovXG4gIGxvZ0N1c3RvbUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuZXZlbnRQcmVmaXggKyBldmVudE5hbWU7XG4gICAgdGhpcy50cmFja0V2ZW50KHByZWZpeGVkTmFtZSwgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMw7NnaWNhIGNvbcO6biBwYXJhIGVudmlhciBldmVudG9zXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgLy8gVmVyaWZpY2FyIGNvbnNlbnRcbiAgICBpZiAoIXRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLmFuYWx5dGljcykge1xuICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFwbGljYXIgc2FtcGxpbmdcbiAgICBpZiAoIXRoaXMuc2hvdWxkU2FtcGxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBtb2RlOiBsb2d1ZWFyIGVuIGNvbnNvbGEgKHBlcm8gc2VndWlyIGVudmlhbmRvIGEgRmlyZWJhc2UpXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBFdmVudDogJHtldmVudE5hbWV9YCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICAvLyBFbnZpYXIgYSBGaXJlYmFzZVxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHRoaXMuZ2V0QW5hbHl0aWNzSW5zdGFuY2UoKTtcbiAgICBpZiAoYW5hbHl0aWNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dFdmVudChhbmFseXRpY3MsIGV2ZW50TmFtZSBhcyBzdHJpbmcsIHBhcmFtcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ2V2ZW50JywgZXZlbnROYW1lLCBwYXJhbXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3IgZW52aWFuZG8gZXZlbnRvOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgnZXZlbnQnLCBldmVudE5hbWUsIHBhcmFtcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCdldmVudCcsIGV2ZW50TmFtZSwgcGFyYW1zLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVDT01NRVJDRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUmVnaXN0cmEgdmlzdGEgZGUgaXRlbVxuICAgKi9cbiAgbG9nVmlld0l0ZW0oaXRlbTogQW5hbHl0aWNzSXRlbSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3ZpZXdfaXRlbScsIHtcbiAgICAgIGl0ZW1faWQ6IGl0ZW0uaXRlbV9pZCxcbiAgICAgIGl0ZW1fbmFtZTogaXRlbS5pdGVtX25hbWUsXG4gICAgICB2YWx1ZTogaXRlbS5wcmljZSxcbiAgICAgIGN1cnJlbmN5OiBpdGVtLmN1cnJlbmN5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGFncmVnYXIgYWwgY2Fycml0b1xuICAgKi9cbiAgbG9nQWRkVG9DYXJ0KGl0ZW06IEFuYWx5dGljc0l0ZW0sIHF1YW50aXR5ID0gMSk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2FkZF90b19jYXJ0Jywge1xuICAgICAgaXRlbV9pZDogaXRlbS5pdGVtX2lkLFxuICAgICAgaXRlbV9uYW1lOiBpdGVtLml0ZW1fbmFtZSxcbiAgICAgIHZhbHVlOiAoaXRlbS5wcmljZSA/PyAwKSAqIHF1YW50aXR5LFxuICAgICAgY3VycmVuY3k6IGl0ZW0uY3VycmVuY3ksXG4gICAgICBxdWFudGl0eSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBpbmljaW8gZGUgY2hlY2tvdXRcbiAgICovXG4gIGxvZ0JlZ2luQ2hlY2tvdXQoaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSwgdmFsdWU6IG51bWJlciwgY3VycmVuY3kgPSAnRVVSJyk6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ2JlZ2luX2NoZWNrb3V0Jywge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGNvbXByYSBjb21wbGV0YWRhXG4gICAqL1xuICBsb2dQdXJjaGFzZShcbiAgICB0cmFuc2FjdGlvbklkOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFuYWx5dGljc0l0ZW1bXSxcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGN1cnJlbmN5ID0gJ0VVUidcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5sb2dFdmVudCgncHVyY2hhc2UnLCB7XG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZCxcbiAgICAgIHZhbHVlLFxuICAgICAgY3VycmVuY3ksXG4gICAgICBpdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVU0VSIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFNldGVhIGVsIHVzZXJJZCBwYXJhIGFzb2NpYXIgZXZlbnRvcyBjb24gZWwgdXN1YXJpby5cbiAgICogTGxhbWFkbyBhdXRvbcOhdGljYW1lbnRlIHNpIGVuYWJsZUF1dGhJbnRlZ3JhdGlvbj10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIC0gSUQgZGVsIHVzdWFyaW8gbyBudWxsIHBhcmEgbGltcGlhclxuICAgKi9cbiAgc2V0VXNlcklkKHVzZXJJZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVidWcgbW9kZTogbG9ndWVhciBlbiBjb25zb2xhIChwZXJvIHNlZ3VpciBlbnZpYW5kbyBhIEZpcmViYXNlKVxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW0FuYWx5dGljc10gU2V0IHVzZXJJZDogJHt1c2VySWR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFVzZXJJZChhbmFseXRpY3MsIHVzZXJJZCk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAndXNlcl9pZCcsIHsgdXNlcklkIH0sIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlcklkOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICd1c2VyX2lkJywgeyB1c2VySWQgfSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3VzZXJfaWQnLCB7IHVzZXJJZCB9LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIHByb3BpZWRhZGVzIGRlbCB1c3VhcmlvIHBhcmEgc2VnbWVudGFjacOzbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgLSBQcm9waWVkYWRlcyBrZXktdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhbmFseXRpY3Muc2V0VXNlclByb3BlcnRpZXMoe1xuICAgKiAgIHN1YnNjcmlwdGlvbl90aWVyOiAncHJlbWl1bScsXG4gICAqICAgcHJlZmVycmVkX2xhbmd1YWdlOiAnZXMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFVzZXJQcm9wZXJ0aWVzIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlYnVnIG1vZGU6IGxvZ3VlYXIgZW4gY29uc29sYSAocGVybyBzZWd1aXIgZW52aWFuZG8gYSBGaXJlYmFzZSlcbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ1tBbmFseXRpY3NdIFNldCB1c2VyIHByb3BlcnRpZXM6JywgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gdGhpcy5nZXRBbmFseXRpY3NJbnN0YW5jZSgpO1xuICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENvbnZlcnRpciBhIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gcGFyYSBGaXJlYmFzZVxuICAgICAgICBjb25zdCBzdHJpbmdQcm9wczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdHJpbmdQcm9wc1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0VXNlclByb3BlcnRpZXMoYW5hbHl0aWNzLCBzdHJpbmdQcm9wcyk7XG4gICAgICAgIHRoaXMuYWRkVG9EZWJ1Z0hpc3RvcnkoJ3VzZXJfcHJvcGVydHknLCAncHJvcGVydGllcycsIHByb3BlcnRpZXMsIHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0FuYWx5dGljc10gRXJyb3Igc2V0ZWFuZG8gdXNlciBwcm9wZXJ0aWVzOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5hZGRUb0RlYnVnSGlzdG9yeSgndXNlcl9wcm9wZXJ0eScsICdwcm9wZXJ0aWVzJywgcHJvcGVydGllcywgZmFsc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KCd1c2VyX3Byb3BlcnR5JywgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0aWVzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldGVhIGxhIG9yZ2FuaXphY2nDs24gYWN0aXZhIChtdWx0aS10ZW5hbnQpLlxuICAgKiBMbGFtYWRvIGF1dG9tw6F0aWNhbWVudGUgc2kgZW5hYmxlQXV0aEludGVncmF0aW9uPXRydWUuXG4gICAqXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2nDs24gbyBudWxsXG4gICAqL1xuICBzZXRBY3RpdmVPcmdhbml6YXRpb24ob3JnSWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3JnSWQpIHtcbiAgICAgIHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeyBhY3RpdmVfb3JnYW5pemF0aW9uOiBvcmdJZCB9KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVJST1IgVFJBQ0tJTkdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIGVycm9yIHBhcmEgdHJhY2tpbmcuXG4gICAqIEludGVncmEgYXV0b23DoXRpY2FtZW50ZSBjb24gQW5ndWxhciBFcnJvckhhbmRsZXIgc2kgZW5hYmxlRXJyb3JUcmFja2luZz10cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvIG1lbnNhamUgZGUgZXJyb3JcbiAgICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0byBhZGljaW9uYWxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB0cnkge1xuICAgKiAgIGF3YWl0IHJpc2t5T3BlcmF0aW9uKCk7XG4gICAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAqICAgYW5hbHl0aWNzLmxvZ0Vycm9yKGVycm9yLCB7IGNvbnRleHQ6ICdjaGVja291dF9mbG93JyB9KTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGxvZ0Vycm9yKGVycm9yOiBFcnJvciB8IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgIGNvbnN0IGVycm9yU3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZXJyb3JUeXBlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm5hbWUgOiAnRXJyb3InO1xuXG4gICAgdGhpcy5sb2dFdmVudCgnZXJyb3Jfb2NjdXJyZWQnLCB7XG4gICAgICBlcnJvcl90eXBlOiBlcnJvclR5cGUsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCksIC8vIExpbWl0YXIgbG9uZ2l0dWRcbiAgICAgIGVycm9yX3N0YWNrOiBlcnJvclN0YWNrPy5zdWJzdHJpbmcoMCwgNTAwKSxcbiAgICAgIGNvbnRleHQ6IGNvbnRleHQgPyBKU09OLnN0cmluZ2lmeShjb250ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBlcnJvciBmYXRhbCAoY3Jhc2gtbGV2ZWwpLlxuICAgKi9cbiAgbG9nRmF0YWxFcnJvcihlcnJvcjogRXJyb3IsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5sb2dFcnJvcihlcnJvciwgeyAuLi5jb250ZXh0LCBzZXZlcml0eTogJ2ZhdGFsJyB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDT05TRU5UIE1PREUgKEdEUFIpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlIGNvbnNlbnRpbWllbnRvIGRlbCB1c3VhcmlvLlxuICAgKiBBZmVjdGEgcXXDqSBkYXRvcyBzZSByZWNvbGVjdGFuIHkgZW52w61hbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbnNlbnQgLSBTZXR0aW5ncyBkZSBjb25zZW50aW1pZW50b1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVzdWFyaW8gYWNlcHRhIHRvZG9cbiAgICogYW5hbHl0aWNzLnVwZGF0ZUNvbnNlbnQoeyBhbmFseXRpY3M6IHRydWUsIGFkdmVydGlzaW5nOiB0cnVlIH0pO1xuICAgKlxuICAgKiAvLyBVc3VhcmlvIHJlY2hhemEgcHVibGljaWRhZFxuICAgKiBhbmFseXRpY3MudXBkYXRlQ29uc2VudCh7IGFuYWx5dGljczogdHJ1ZSwgYWR2ZXJ0aXNpbmc6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwZGF0ZUNvbnNlbnQoY29uc2VudDogQ29uc2VudFNldHRpbmdzKTogdm9pZCB7XG4gICAgY29uc3QgbmV3U3RhdGU6IENvbnNlbnRTdGF0ZSA9IHtcbiAgICAgIHNldHRpbmdzOiB7IC4uLnRoaXMuX2NvbnNlbnRTdGF0ZSgpLnNldHRpbmdzLCAuLi5jb25zZW50IH0sXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBoYXNEZWNpZGVkOiB0cnVlLFxuICAgIH07XG5cbiAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KG5ld1N0YXRlKTtcbiAgICB0aGlzLnNhdmVDb25zZW50VG9TdG9yYWdlKG5ld1N0YXRlKTtcbiAgICB0aGlzLmFwcGx5Q29uc2VudFRvR3RhZyhuZXdTdGF0ZS5zZXR0aW5ncyk7XG5cbiAgICB0aGlzLmFkZFRvRGVidWdIaXN0b3J5KFxuICAgICAgJ2NvbnNlbnQnLFxuICAgICAgJ3VwZGF0ZScsXG4gICAgICBjb25zZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVuaWVnYSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZGVueUFsbENvbnNlbnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25zZW50KHtcbiAgICAgIGFuYWx5dGljczogZmFsc2UsXG4gICAgICBhZHZlcnRpc2luZzogZmFsc2UsXG4gICAgICBmdW5jdGlvbmFsaXR5OiBmYWxzZSxcbiAgICAgIHNlY3VyaXR5OiB0cnVlLCAvLyBTaWVtcHJlIHBlcm1pdGlkb1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjZXB0YSB0b2RvIGNvbnNlbnRpbWllbnRvLlxuICAgKi9cbiAgZ3JhbnRBbGxDb25zZW50KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uc2VudCh7XG4gICAgICBhbmFseXRpY3M6IHRydWUsXG4gICAgICBhZHZlcnRpc2luZzogdHJ1ZSxcbiAgICAgIGZ1bmN0aW9uYWxpdHk6IHRydWUsXG4gICAgICBzZWN1cml0eTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBhY3R1YWwgZGUgY29uc2VudGltaWVudG8uXG4gICAqL1xuICBnZXRDb25zZW50U3RhdGUoKTogQ29uc2VudFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29uc2VudFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIGVsIGNvbnNlbnQgZGVmYXVsdCBBTlRFUyBkZSBxdWUgRmlyZWJhc2UvZ3RhZyBpbmljaWFsaWNlLlxuICAgKiBSZXF1ZXJpZG8gcG9yIEdvb2dsZSBDb25zZW50IE1vZGUgdjIgcGFyYSBubyByZWNvbGVjdGFyIGRhdG9zIGhhc3RhXG4gICAqIHF1ZSBlbCB1c3VhcmlvIHRvbWUgdW5hIGRlY2lzaW9uIGV4cGxpY2l0YS5cbiAgICovXG4gIHByaXZhdGUgc2V0Q29uc2VudE1vZGVEZWZhdWx0KCk6IHZvaWQge1xuICAgIC8vIGd0YWcgcHVlZGUgbm8gZXN0YXIgZGlzcG9uaWJsZSBhdW4gKEZpcmViYXNlIGxvIGNhcmdhIGFzeW5jKS5cbiAgICAvLyBVc2Ftb3MgZGF0YUxheWVyIGRpcmVjdGFtZW50ZSwgcXVlIHNpIGVzdGEgZGlzcG9uaWJsZSBkZXNkZSBpbmRleC5odG1sLlxuICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBkYXRhTGF5ZXIgPSAod1snZGF0YUxheWVyJ10gYXMgdW5rbm93bltdKSA/PyBbXTtcbiAgICB3WydkYXRhTGF5ZXInXSA9IGRhdGFMYXllcjtcbiAgICAvLyBwdXNoIGEgZGF0YUxheWVyIGZ1bmNpb25hIGFudGVzIGRlIHF1ZSBndGFnLmpzIGNhcmd1ZSDigJQgR0EgbG8gY29uc3VtZSBhbCBjYXJnYXIuXG4gICAgZGF0YUxheWVyLnB1c2goJ2NvbnNlbnQnLCAnZGVmYXVsdCcsIHtcbiAgICAgIGFuYWx5dGljc19zdG9yYWdlOiAnZGVuaWVkJyxcbiAgICAgIGFkX3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgYWRfdXNlcl9kYXRhOiAnZGVuaWVkJyxcbiAgICAgIGFkX3BlcnNvbmFsaXphdGlvbjogJ2RlbmllZCcsXG4gICAgICBmdW5jdGlvbmFsaXR5X3N0b3JhZ2U6ICdkZW5pZWQnLFxuICAgICAgc2VjdXJpdHlfc3RvcmFnZTogJ2dyYW50ZWQnLFxuICAgICAgd2FpdF9mb3JfdXBkYXRlOiA1MDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBsaWNhIGNvbnNlbnQgc2V0dGluZ3MgYSBndGFnIChHQTQgQ29uc2VudCBNb2RlIHYyKVxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseUNvbnNlbnRUb0d0YWcoc2V0dGluZ3M6IENvbnNlbnRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGd0YWcgPSAod2luZG93IGFzIGFueSkuZ3RhZztcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZ3RhZygnY29uc2VudCcsICd1cGRhdGUnLCB7XG4gICAgICAgIGFuYWx5dGljc19zdG9yYWdlOiBzZXR0aW5ncy5hbmFseXRpY3MgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfc3RvcmFnZTogc2V0dGluZ3MuYWR2ZXJ0aXNpbmcgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgICAgYWRfdXNlcl9kYXRhOiBzZXR0aW5ncy5hZHZlcnRpc2luZyA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBhZF9wZXJzb25hbGl6YXRpb246IHNldHRpbmdzLmFkdmVydGlzaW5nID8gJ2dyYW50ZWQnIDogJ2RlbmllZCcsXG4gICAgICAgIGZ1bmN0aW9uYWxpdHlfc3RvcmFnZTogc2V0dGluZ3MuZnVuY3Rpb25hbGl0eSA/ICdncmFudGVkJyA6ICdkZW5pZWQnLFxuICAgICAgICBzZWN1cml0eV9zdG9yYWdlOiBzZXR0aW5ncy5zZWN1cml0eSAhPT0gZmFsc2UgPyAnZ3JhbnRlZCcgOiAnZGVuaWVkJyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGFwbGljYW5kbyBjb25zZW50IGEgZ3RhZzonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGNvbnNlbnQgZGVzZGUgbG9jYWxTdG9yYWdlXG4gICAqL1xuICBwcml2YXRlIGxvYWRDb25zZW50RnJvbVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuY29uc2VudFN0b3JhZ2VLZXkpO1xuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZCkgYXMgQ29uc2VudFN0YXRlO1xuICAgICAgICB0aGlzLl9jb25zZW50U3RhdGUuc2V0KHtcbiAgICAgICAgICAuLi5wYXJzZWQsXG4gICAgICAgICAgdXBkYXRlZEF0OiBwYXJzZWQudXBkYXRlZEF0ID8gbmV3IERhdGUocGFyc2VkLnVwZGF0ZWRBdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmFseXRpY3NDb25maWcuZGVmYXVsdENvbnNlbnRHcmFudGVkKSB7XG4gICAgICAgIC8vIEF1dG8tZ3JhbnQgYWxsIGNvbnNlbnQgcGFyYSBkZXNhcnJvbGxvL3Rlc3RpbmdcbiAgICAgICAgdGhpcy5fY29uc2VudFN0YXRlLnNldCh7XG4gICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGFuYWx5dGljczogdHJ1ZSxcbiAgICAgICAgICAgIGFkdmVydGlzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZnVuY3Rpb25hbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIHNlY3VyaXR5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIGhhc0RlY2lkZWQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCkge1xuICAgICAgICAvLyBBcGxpY2FyIGNvbnNlbnQgcG9yIGRlZmVjdG8gc2kgbm8gaGF5IGd1YXJkYWRvXG4gICAgICAgIHRoaXMuX2NvbnNlbnRTdGF0ZS5zZXQoe1xuICAgICAgICAgIHNldHRpbmdzOiB0aGlzLmFuYWx5dGljc0NvbmZpZy5kZWZhdWx0Q29uc2VudCxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG51bGwsXG4gICAgICAgICAgaGFzRGVjaWRlZDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGNhcmdhbmRvIGNvbnNlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgY29uc2VudCBlbiBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZUNvbnNlbnRUb1N0b3JhZ2Uoc3RhdGU6IENvbnNlbnRTdGF0ZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmNvbnNlbnRTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBbmFseXRpY3NdIEVycm9yIGd1YXJkYW5kbyBjb25zZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVElNSU5HIC8gUEVSRk9STUFOQ0VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuYSBtw6l0cmljYSBkZSB0aW1pbmcvcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gTm9tYnJlIGRlIGxhIG3DqXRyaWNhXG4gICAqIEBwYXJhbSB2YWx1ZU1zIC0gVmFsb3IgZW4gbWlsaXNlZ3VuZG9zXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXLDoW1ldHJvcyBhZGljaW9uYWxlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAqIGF3YWl0IGxvYWREYXRhKCk7XG4gICAqIGFuYWx5dGljcy5sb2dUaW1pbmcoJ2RhdGFfbG9hZCcsIHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQsIHtcbiAgICogICBjYXRlZ29yeTogJ2FwaScsXG4gICAqICAgZW5kcG9pbnQ6ICcvcHJvZHVjdHMnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ1RpbWluZyhuYW1lOiBzdHJpbmcsIHZhbHVlTXM6IG51bWJlciwgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubG9nRXZlbnQoJ3BlcmZvcm1hbmNlX21ldHJpYycsIHtcbiAgICAgIG1ldHJpY19uYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IE1hdGgucm91bmQodmFsdWVNcyksXG4gICAgICB1bml0OiAnbXMnLFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFQlVHXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBIYWJpbGl0YS9kZXNoYWJpbGl0YSBtb2RvIGRlYnVnLlxuICAgKiBFbiBkZWJ1ZzogbG9nZWEgZXZlbnRvcyBhIGNvbnNvbGEgYWRlbcOhcyBkZSBlbnZpYXJsb3MgYSBGaXJlYmFzZS5cbiAgICovXG4gIHNldERlYnVnTW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNEZWJ1Z01vZGUuc2V0KGVuYWJsZWQpO1xuICAgIGNvbnNvbGUubG9nKGBbQW5hbHl0aWNzXSBEZWJ1ZyBtb2RlOiAke2VuYWJsZWQgPyAnT04nIDogJ09GRid9YCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoaXN0b3JpYWwgZGUgZXZlbnRvcyAoc29sbyBlbiBkZWJ1ZyBtb2RlKS5cbiAgICogw5p0aWwgcGFyYSB0ZXN0aW5nIHkgZGVzYXJyb2xsby5cbiAgICovXG4gIGdldERlYnVnSGlzdG9yeSgpOiBBbmFseXRpY3NEZWJ1Z0V2ZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgaGlzdG9yaWFsIGRlIGRlYnVnLlxuICAgKi9cbiAgY2xlYXJEZWJ1Z0hpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVidWdIaXN0b3J5LnNldChbXSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIGV2ZW50byBhbCBoaXN0b3JpYWwgZGUgZGVidWdcbiAgICovXG4gIHByaXZhdGUgYWRkVG9EZWJ1Z0hpc3RvcnkoXG4gICAgdHlwZTogRGVidWdFdmVudFR5cGUsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHNlbnQgPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudDogQW5hbHl0aWNzRGVidWdFdmVudCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgcGFyYW1zLFxuICAgICAgc2VudCxcbiAgICB9O1xuXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgdGhpcy5fZGVidWdIaXN0b3J5LnVwZGF0ZShoaXN0b3J5ID0+IHtcbiAgICAgICAgY29uc3QgbmV3SGlzdG9yeSA9IFtldmVudCwgLi4uaGlzdG9yeV07XG4gICAgICAgIHJldHVybiBuZXdIaXN0b3J5LnNsaWNlKDAsIE1BWF9ERUJVR19ISVNUT1JZKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -108,7 +108,7 @@ export class PreferencesService {
108
108
  if (this.i18n && this.i18n.lang() !== l) {
109
109
  this.i18n.setLanguage(l);
110
110
  }
111
- });
111
+ }, { allowSignalWrites: true });
112
112
  // Side-effect: aplicar fontSize.
113
113
  // SIN gate `_synced` (igual que theme): el tamaño es una
114
114
  // preferencia local-first — FontSizeService/localStorage es la verdad del
@@ -247,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
247
247
  }] }, { type: i6.I18nService, decorators: [{
248
248
  type: Optional
249
249
  }] }] });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWdCckQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUE2QjdCLFlBQ3VDLE1BQXlCLEVBQ3RELFNBQTJCLEVBQzNCLElBQWlCLEVBQ2pCLElBQWdCLEVBQ0osWUFBaUMsRUFDakMsZUFBdUMsRUFDdkMsSUFBd0I7UUFOUCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN0RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBbkM3QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsTUFBTSxDQUFzQixRQUFRLENBQUMsQ0FBQztRQUNuRSxvRkFBb0Y7UUFDcEYsZ0VBQWdFO1FBQy9DLHlCQUFvQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvRCxzRkFBc0Y7UUFDckUs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LEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0EvTlUsa0JBQWtCLGtCQThCbkIsbUJBQW1CO21IQTlCbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQStCN0IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUkxQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi4vYXV0aC9jb25maWcnO1xuaW1wb3J0IHsgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoL3R5cGVzJztcbmltcG9ydCB7IEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9maXJlYmFzZS9maXJlc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJMThuTGFuZyB9IGZyb20gJy4uL2kxOG4vdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZU9wdGlvbiwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBGb250U2l6ZU9wdGlvbiwgRm9udFNpemVTZXJ2aWNlIH0gZnJvbSAnLi4vZm9udC1zaXplL2ZvbnQtc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFByZWZlcmVuY2VzRG9jdW1lbnQsXG4gIFByZWZlcmVuY2VzRm9udFNpemUsXG4gIFByZWZlcmVuY2VzTGFuZ3VhZ2UsXG4gIFByZWZlcmVuY2VzVGhlbWUsXG4gIFByZWZlcmVuY2VzVXBkYXRlLFxuICBQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlLFxufSBmcm9tICcuL3ByZWZlcmVuY2VzLnR5cGVzJztcblxuLyoqXG4gKiBQcmVmZXJlbmNlc1NlcnZpY2Ug4oCUIHByZWZlcmVuY2lhcyBkZWwgdXNlciBlbiBlbCBkb2MgY2Fuw7NuaWNvIEZpcmVzdG9yZVxuICogYC9hcHBzL3thcHBJZH0vdXNlcnMve3VpZH0vcHJlZmVyZW5jZXMvbWFpbmAuXG4gKlxuICogUmVhZCByZWFjdGl2byAoc2lnbmFscykgdmlhIGxpc3RlbmVyIEZpcmVzdG9yZS5cbiAqIFdyaXRlIHZpYSBgUFVUIC92Mi9hdXRoL3ByZWZlcmVuY2VzYCAoY2xpZW50ZSBOVU5DQSBlc2NyaWJlIEZpcmVzdG9yZSBkaXJlY3RvIOKAlFxuICogdmVyIG1lbW9yaWEgYGZlZWRiYWNrX25vX2RpcmVjdF9maXJlc3RvcmVfd3JpdGVzYCkuXG4gKlxuICogU2lkZS1lZmZlY3RzIGF1dG9tw6F0aWNvczpcbiAqIC0gQ3VhbmRvIGB0aGVtZSgpYCBjYW1iaWEg4oaSIGBUaGVtZVNlcnZpY2UuVGhlbWUgPSAuLi5gXG4gKiAtIEN1YW5kbyBgbGFuZ3VhZ2UoKWAgY2FtYmlhIOKGkiBgSTE4blNlcnZpY2Uuc2V0TGFuZ3VhZ2UoLi4uKWBcbiAqXG4gKiBBdXRvLWJpbmQgYWwgdXNlciBhY3R1YWwgdmlhIGBBdXRoU2VydmljZS51c2VyKClgLiBTaW4gdXNlciAobG9nb3V0KSDihpIgdW5iaW5kLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByZWZlcmVuY2VzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RoZW1lID0gc2lnbmFsPFByZWZlcmVuY2VzVGhlbWU+KCdhdXRvJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlID0gc2lnbmFsPFByZWZlcmVuY2VzTGFuZ3VhZ2U+KCdlcycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb250U2l6ZSA9IHNpZ25hbDxQcmVmZXJlbmNlc0ZvbnRTaXplPignbWVkaXVtJyk7XG4gIC8vIERlZmF1bHQgYGZhbHNlYCAob3B0LWluKS4gRWwgdXNlciBkZWJlIGFjdGl2YXIgZXhwbMOtY2l0YW1lbnRlIGxhcyBub3RpZmljYWNpb25lcztcbiAgLy8gbm8gYXN1bWltb3MgY29uc2VudGltaWVudG8gaW1wbMOtY2l0by4gQmFja2VuZCBkZWJlIGNvaW5jaWRpci5cbiAgcHJpdmF0ZSByZWFkb25seSBfbm90aWZpY2F0aW9uc01hc3RlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBgdHJ1ZWAgZGVzcHXDqXMgZGVsIHByaW1lciBzbmFwc2hvdCBGaXJlc3RvcmUuIEFudGVzLCBkZWZhdWx0cyBzaW4gc2lkZS1lZmZlY3RzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zeW5jZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHRoZW1lID0gdGhpcy5fdGhlbWUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBsYW5ndWFnZSA9IHRoaXMuX2xhbmd1YWdlLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgZm9udFNpemUgPSB0aGlzLl9mb250U2l6ZS5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnNNYXN0ZXIgPSB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgc3luY2VkID0gdGhpcy5fc3luY2VkLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjdXJyZW50VXNlcklkPzogc3RyaW5nO1xuICAvKipcbiAgICogYHRydWVgIG1pZW50cmFzIHVuIGB1cGRhdGUoKWAgZXN0w6EgZW4gdnVlbG8gKFBVVCBhbCBiYWNrZW5kKS5cbiAgICpcbiAgICogRWwgbGlzdGVuZXIgRmlyZXN0b3JlIChgYmluZFRvVXNlcmApIGVzIHJlYWwtdGltZSB5IHB1ZWRlIGVtaXRpciB1biBzbmFwc2hvdFxuICAgKiAqc3RhbGUqIOKAlCBhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kIOKAlCBxdWUgcGlzYXLDrWEgZWwgdmFsb3Igb3B0aW1pc3RhIGRlXG4gICAqIGBfbm90aWZpY2F0aW9uc01hc3RlcmAgeSByZXZlcnRpcsOtYSBlbCB0b2dnbGUuIE1pZW50cmFzIGVzdGUgZmxhZyBlc3TDqSBgdHJ1ZWBcbiAgICogZWwgbGlzdGVuZXIgaWdub3JhIGxhcyBlbWlzaW9uZXM7IGVsIGB1cGRhdGUoKWAgeWEgYWxpbmVhIGxhcyBzZcOxYWxlcyBjb24gbGFcbiAgICogcmVzcHVlc3RhIGRlbCBiYWNrZW5kIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyxcbiAgICBwcml2YXRlIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvbnRTaXplU2VydmljZTogRm9udFNpemVTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGkxOG46IEkxOG5TZXJ2aWNlIHwgbnVsbFxuICApIHtcbiAgICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMudW5iaW5kKCkpO1xuXG4gICAgLy8gU2VlZCBgX2ZvbnRTaXplYCBjb24gZWwgdmFsb3IgcXVlIEZvbnRTaXplU2VydmljZSB5YSByZXN0YXVyw7MgZGVzZGVcbiAgICAvLyBsb2NhbFN0b3JhZ2UgZW4gc3UgY29uc3RydWN0b3IgKHByb3ZpZGVkSW4gcm9vdCDihpIgeWEgY29ycmnDsyBhbCBpbnllY3RhcmxvXG4gICAgLy8gYWPDoSkuIFNpbiBlc3RvLCBlbCBzaWduYWwgYXJyYW5jYSBlbiAnbWVkaXVtJyB5IGVsIGVmZmVjdCBkZSBhYmFqbyDigJRxdWVcbiAgICAvLyBkaXNwYXJhIGFsIG1hcmNhcnNlIGBzeW5jZWRg4oCUIGZvcnphcsOtYSAnbWVkaXVtJyBwaXNhbmRvIGVsIHRhbWHDsW9cbiAgICAvLyByZXN0YXVyYWRvIGN1YW5kbyBlbCBzbmFwc2hvdCBGaXJlc3RvcmUgTk8gdHJhZSBgZm9udFNpemVgICh1c2VyIHNpbiBlc2VcbiAgICAvLyBjYW1wbyBlbiBlbCBtaXJyb3IpLiBCdWc6IGNhbWJpYXMgZWwgdGFtYcOxbywgcmVmcmVzY2FzIHkgc2UgcGllcmRlLlxuICAgIGlmICh0aGlzLmZvbnRTaXplU2VydmljZSkge1xuICAgICAgdGhpcy5fZm9udFNpemUuc2V0KHRoaXMuZm9udFNpemVTZXJ2aWNlLnNpemUoKSBhcyBQcmVmZXJlbmNlc0ZvbnRTaXplKTtcbiAgICB9XG5cbiAgICAvLyBNaXNtbyBzZWVkIHBhcmEgdGhlbWUg4oCUIFRoZW1lU2VydmljZSBhcGxpY2Egc3UgdmFsb3IgZGUgbG9jYWxTdG9yYWdlIGVuXG4gICAgLy8gYm9vdHN0cmFwIChgY3VycmVudE9wdGlvbmApLiBOZWNlc2FyaW8gcGFyYSBkZXNnYXRlYXIgZWwgZWZmZWN0IGRlIHRoZW1lXG4gICAgLy8gKGFiYWpvKSBzaW4gcXVlIGVsIGRlZmF1bHQgJ2F1dG8nIHBpc2UgZWwgdGVtYSByZXN0YXVyYWRvLlxuICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgdGhpcy5fdGhlbWUuc2V0KHRoaXMudGhlbWVTZXJ2aWNlLmN1cnJlbnRPcHRpb24gYXMgUHJlZmVyZW5jZXNUaGVtZSk7XG4gICAgfVxuXG4gICAgLy8gQXV0by1iaW5kIGFsIHVzZXIgYWN0dWFsLiBlZmZlY3QoKSBjb3JyZSBlbiBpbmplY3Rpb24gY29udGV4dCAoY29uc3RydWN0b3IgT0spLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBiaW5kVG9Vc2VyL3VuYmluZCBlc2NyaWJlbiBgX3N5bmNlZGAgKHNlw7FhbCBpbnRlcm5hIHNpblxuICAgIC8vIGRlcGVuZGVuY2lhcyBkZWwgcHJvcGlvIGVmZmVjdCkg4oaSIHNlZ3VybyB5IG5lY2VzYXJpby5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgICAgICBpZiAodXNlcj8udXNlcklkKSB7XG4gICAgICAgICAgdGhpcy5iaW5kVG9Vc2VyKHVzZXIudXNlcklkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIHRoZW1lLiBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGxvY2FsLWZpcnN0LCBpZ3VhbCBxdWVcbiAgICAvLyBmb250U2l6ZSk6IFRoZW1lU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbCBkaXNwb3NpdGl2byB5XG4gICAgLy8gYF90aGVtZWAgdmllbmUgc2VlZGVhZG8gYXJyaWJhLiBBcGxpY2FyIHNpZW1wcmUgcXVlIGNhbWJpZSBkYSBhcHBseVxuICAgIC8vIG9wdGltaXN0YSBhbCBpbnN0YW50ZTsgZWwgc3luYyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaWNhIHbDrWEgc25hcHNob3QuXG4gICAgLy8gR2F0ZWFybG8gZW4gYF9zeW5jZWRgIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jXG4gICAgLy8gRmlyZXN0b3JlIGHDum4pIG5vIHNlIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkRhcmtcIiBwZXJvIGVsIHRlbWEgbm9cbiAgICAvLyBjYW1iaWFiYS4gKEVsIHNlbGVjdG9yIGRlIGlkaW9tYSBubyBzdWZyZSBlc3RvIHBvcnF1ZSB2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAgICAvLyBsbGFtYSBpMThuLnNldExhbmd1YWdlIGRpcmVjdG87IGVsIGRlIHRoZW1lIGRlcGVuZGUgc29sbyBkZSBlc3RlIGVmZmVjdC4pXG4gICAgLy8gT0pPOiB1c2FyIGB0b2dnbGVVc2VyUHJlZmVyZW5jZSgpYCB5IE5PIGVsIHNldHRlciBgVGhlbWUgPWAuIEVsIHNldHRlciBzb2xvXG4gICAgLy8gcGVyc2lzdGUgbG9jYWxTdG9yYWdlICsgZW1pdGUgZWwgQmVoYXZpb3JTdWJqZWN0OyBubyBhcGxpY2EgbGFzIGNsYXNlc1xuICAgIC8vIGBib2R5LmRhcmtgL2BodG1sLmlvbi1wYWxldHRlLWRhcmtgIHF1ZSBlbCBwYWxldHRlIGRlIElvbmljIG5lY2VzaXRhLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0ID0gdGhpcy5fdGhlbWUoKTtcbiAgICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50b2dnbGVVc2VyUHJlZmVyZW5jZSh0IGFzIFRoZW1lT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIGxhbmd1YWdlIGxvY2FsIGN1YW5kbyBsbGVnYSBzbmFwc2hvdCByZWFsLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N5bmNlZCgpKSByZXR1cm47XG4gICAgICBjb25zdCBsID0gdGhpcy5fbGFuZ3VhZ2UoKTtcbiAgICAgIGlmICh0aGlzLmkxOG4gJiYgdGhpcy5pMThuLmxhbmcoKSAhPT0gbCkge1xuICAgICAgICB0aGlzLmkxOG4uc2V0TGFuZ3VhZ2UobCBhcyBJMThuTGFuZyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdDogYXBsaWNhciBmb250U2l6ZS5cbiAgICAvLyBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGlndWFsIHF1ZSB0aGVtZSk6IGVsIHRhbWHDsW8gZXMgdW5hXG4gICAgLy8gcHJlZmVyZW5jaWEgbG9jYWwtZmlyc3Qg4oCUIEZvbnRTaXplU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbFxuICAgIC8vIGRpc3Bvc2l0aXZvIHkgYF9mb250U2l6ZWAgeWEgdmllbmUgc2VlZGVhZG8gZGUgYWjDrSBhcnJpYmEuIEFwbGljYXIgc2llbXByZVxuICAgIC8vIHF1ZSBjYW1iaWUgcGVybWl0ZSBxdWUgZWwgY2FtYmlvIGRlbCB1c3VhcmlvIHN1cnRhIGVmZWN0byBhbCBpbnN0YW50ZVxuICAgIC8vIChvcHRpbWlzdGEsIHNpbiBlc3BlcmFyIGVsIHJvdW5kLXRyaXAgYSBGaXJlc3RvcmUpIHkgcXVlIGVsIHN5bmNcbiAgICAvLyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaXF1ZSBhbCBsbGVnYXIgZWwgc25hcHNob3QuIEdhdGVhcmxvIGVuIGBfc3luY2VkYFxuICAgIC8vIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jIEZpcmVzdG9yZSBhw7puKSBubyBzZVxuICAgIC8vIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkdyYW5kZVwiIHBlcm8gZWwgZm9udC1zaXplIG5vIGNhbWJpYWJhLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBmb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZSgpIGVzY3JpYmUgdGhpcy5fc2l6ZSAoc2lnbmFsKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZzID0gdGhpcy5fZm9udFNpemUoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9udFNpemVTZXJ2aWNlKSB7XG4gICAgICAgICAgdGhpcy5mb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZShmcyBhcyBGb250U2l6ZU9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIEFjdHVhbGl6YSBwcmVmZXJlbmNpYXMgdmlhIGJhY2tlbmQuIE9wdGltaXN0aWMgVUk6IGFwbGljYSBsb2NhbCwgcmV2aWVydGUgc2kgZmFsbGEuICovXG4gIGFzeW5jIHVwZGF0ZShwYXJ0aWFsOiBQcmVmZXJlbmNlc1VwZGF0ZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29uZmlnLmFwaVVybH0vdjIvYXV0aC9wcmVmZXJlbmNlc2A7XG5cbiAgICBjb25zdCBwcmV2ID0ge1xuICAgICAgdGhlbWU6IHRoaXMuX3RoZW1lKCksXG4gICAgICBsYW5ndWFnZTogdGhpcy5fbGFuZ3VhZ2UoKSxcbiAgICAgIGZvbnRTaXplOiB0aGlzLl9mb250U2l6ZSgpLFxuICAgICAgbWFzdGVyOiB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyKCksXG4gICAgfTtcblxuICAgIGlmIChwYXJ0aWFsLnRoZW1lKSB0aGlzLl90aGVtZS5zZXQocGFydGlhbC50aGVtZSk7XG4gICAgaWYgKHBhcnRpYWwubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChwYXJ0aWFsLmxhbmd1YWdlKTtcbiAgICBpZiAocGFydGlhbC5mb250U2l6ZSkgdGhpcy5fZm9udFNpemUuc2V0KHBhcnRpYWwuZm9udFNpemUpO1xuICAgIGlmIChwYXJ0aWFsLm5vdGlmaWNhdGlvbnMgJiYgdHlwZW9mIHBhcnRpYWwubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocGFydGlhbC5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgfVxuXG4gICAgLy8gQmxvcXVlYXIgZWwgbGlzdGVuZXIgRmlyZXN0b3JlIG1pZW50cmFzIGVsIFBVVCBlc3TDoSBlbiB2dWVsbzogdW4gc25hcHNob3RcbiAgICAvLyBzdGFsZSBubyBkZWJlIHBpc2FyIGVsIHZhbG9yIG9wdGltaXN0YSByZWNpw6luIGFwbGljYWRvLlxuICAgIHRoaXMuX3VwZGF0ZUluRmxpZ2h0ID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBFbnZpYXIgYXBwSWQgZXhwbMOtY2l0byDigJQgZWwgYmFja2VuZCBsbyB1c2EgcGFyYSBlc2NyaWJpciBlbCBtaXJyb3JcbiAgICAgIC8vIEZpcmVzdG9yZSBlbiBhcHBzL3thcHBJZH0vLi4uIGNvcnJlY3RvLCBzaW4gZGVwZW5kZXIgZGVsIGhlYWRlciBPcmlnaW5cbiAgICAgIC8vIChxdWUgZW4gUFdBIGlPUyBwdWVkZSBubyByZXNvbHZlciBhbCBBcHBJRCBlc3BlcmFkbykuXG4gICAgICBjb25zdCBib2R5ID0geyAuLi5wYXJ0aWFsLCBhcHBJZDogdGhpcy5jb25maWcuYXBwSWQgfTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wdXQ8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4odXJsLCBib2R5KSk7XG4gICAgICAvLyBFbCBsaXN0ZW5lciBGaXJlc3RvcmUgZXMgbGEgZnVlbnRlIGZpbmFsLCBwZXJvIGFsaW5lYXIgeWEgY29uIGxhXG4gICAgICAvLyByZXNwdWVzdGEgZGVsIGJhY2tlbmQgYWNlbGVyYSBVWCAoZXNwZWNpYWxtZW50ZSBzaSBlbCBsaXN0ZW5lclxuICAgICAgLy8gdGFyZGEgZW4gcHJvcGFnYXIpLlxuICAgICAgaWYgKHJlcy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KHJlcy50aGVtZSBhcyBQcmVmZXJlbmNlc1RoZW1lKTtcbiAgICAgIGlmIChyZXMubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChyZXMubGFuZ3VhZ2UgYXMgUHJlZmVyZW5jZXNMYW5ndWFnZSk7XG4gICAgICBpZiAocmVzLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQocmVzLmZvbnRTaXplIGFzIFByZWZlcmVuY2VzRm9udFNpemUpO1xuICAgICAgaWYgKHR5cGVvZiByZXMubm90aWZpY2F0aW9ucz8ubWFzdGVyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocmVzLm5vdGlmaWNhdGlvbnMubWFzdGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBSZXZlcnQgb3B0aW1pc3RpYy5cbiAgICAgIHRoaXMuX3RoZW1lLnNldChwcmV2LnRoZW1lKTtcbiAgICAgIHRoaXMuX2xhbmd1YWdlLnNldChwcmV2Lmxhbmd1YWdlKTtcbiAgICAgIHRoaXMuX2ZvbnRTaXplLnNldChwcmV2LmZvbnRTaXplKTtcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KHByZXYubWFzdGVyKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZXRUaGVtZSh0aGVtZTogUHJlZmVyZW5jZXNUaGVtZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IFByZWZlcmVuY2VzTGFuZ3VhZ2UpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBsYW5ndWFnZSB9KTtcbiAgfVxuXG4gIHNldEZvbnRTaXplKGZvbnRTaXplOiBQcmVmZXJlbmNlc0ZvbnRTaXplKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgZm9udFNpemUgfSk7XG4gIH1cblxuICBzZXROb3RpZmljYXRpb25zTWFzdGVyKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBub3RpZmljYXRpb25zOiB7IG1hc3RlcjogZW5hYmxlZCB9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kVG9Vc2VyKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJJZCA9PT0gdXNlcklkICYmIHRoaXMuc3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy51bmJpbmQoKTtcbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1c2VySWQ7XG4gICAgLy8gRmlyZXN0b3JlU2VydmljZS5kb2NDaGFuZ2VzIHByZWZpamEgYXV0b23DoXRpY2FtZW50ZSBgYXBwcy97YXBwSWR9L2BcbiAgICAvLyBjdWFuZG8gYGNvbmZpZy5hcHBJZGAgZXN0w6Egc2V0ZWFkbyBlbiBWYWx0ZWNoQXV0aENvbmZpZy5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmlyZXN0b3JlXG4gICAgICAuZG9jQ2hhbmdlczxQcmVmZXJlbmNlc0RvY3VtZW50ICYgeyBpZD86IHN0cmluZyB9PihgdXNlcnMvJHt1c2VySWR9L3ByZWZlcmVuY2VzYCwgJ21haW4nKVxuICAgICAgLnN1YnNjcmliZShkb2MgPT4ge1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgIC8vIERvYyBubyBleGlzdGUgYcO6biAodXNlciBudWV2bywgc2luIHByaW1lciBzeW5jKS4gTWFudGVuZW1vc1xuICAgICAgICAgIC8vIGRlZmF1bHRzIGxvY2FsZXMgcGVybyBOTyBtYXJjYW1vcyBzeW5jZWQg4oCUIGxvcyBzaWRlLWVmZmVjdHMgbm9cbiAgICAgICAgICAvLyBwaXNhbiBlbCB0aGVtZS9sYW5nIGxvY2FsZXMgY29uIHZhbG9yZXMgYXJiaXRyYXJpb3MuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElnbm9yYXIgZW1pc2lvbmVzIGRlbCBsaXN0ZW5lciBtaWVudHJhcyBoYXkgdW4gdXBkYXRlKCkgZW4gdnVlbG86IHVuXG4gICAgICAgIC8vIHNuYXBzaG90IHN0YWxlIChhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kKSByZXZlcnRpcsOtYSBlbCB2YWxvclxuICAgICAgICAvLyBvcHRpbWlzdGEuIEVsIHVwZGF0ZSgpIHlhIGFsaW5lYSBsYXMgc2XDsWFsZXMgY29uIGxhIHJlc3B1ZXN0YSByZWFsLlxuICAgICAgICBpZiAodGhpcy5fdXBkYXRlSW5GbGlnaHQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvYy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KGRvYy50aGVtZSk7XG4gICAgICAgIGlmIChkb2MubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChkb2MubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAoZG9jLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQoZG9jLmZvbnRTaXplKTtcbiAgICAgICAgaWYgKGRvYy5ub3RpZmljYXRpb25zICYmIHR5cGVvZiBkb2Mubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KGRvYy5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3luY2VkLnNldCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmJpbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N5bmNlZC5zZXQoZmFsc2UpO1xuICB9XG59XG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWdCckQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUE2QjdCLFlBQ3VDLE1BQXlCLEVBQ3RELFNBQTJCLEVBQzNCLElBQWlCLEVBQ2pCLElBQWdCLEVBQ0osWUFBaUMsRUFDakMsZUFBdUMsRUFDdkMsSUFBd0I7UUFOUCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN0RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBbkM3QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsTUFBTSxDQUFzQixRQUFRLENBQUMsQ0FBQztRQUNuRSxvRkFBb0Y7UUFDcEYsZ0VBQWdFO1FBQy9DLHlCQUFvQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvRCxzRkFBc0Y7UUFDckUs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QUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0FsT1Usa0JBQWtCLGtCQThCbkIsbUJBQW1CO21IQTlCbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQStCN0IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUkxQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi4vYXV0aC9jb25maWcnO1xuaW1wb3J0IHsgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoL3R5cGVzJztcbmltcG9ydCB7IEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9maXJlYmFzZS9maXJlc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJMThuTGFuZyB9IGZyb20gJy4uL2kxOG4vdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZU9wdGlvbiwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBGb250U2l6ZU9wdGlvbiwgRm9udFNpemVTZXJ2aWNlIH0gZnJvbSAnLi4vZm9udC1zaXplL2ZvbnQtc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFByZWZlcmVuY2VzRG9jdW1lbnQsXG4gIFByZWZlcmVuY2VzRm9udFNpemUsXG4gIFByZWZlcmVuY2VzTGFuZ3VhZ2UsXG4gIFByZWZlcmVuY2VzVGhlbWUsXG4gIFByZWZlcmVuY2VzVXBkYXRlLFxuICBQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlLFxufSBmcm9tICcuL3ByZWZlcmVuY2VzLnR5cGVzJztcblxuLyoqXG4gKiBQcmVmZXJlbmNlc1NlcnZpY2Ug4oCUIHByZWZlcmVuY2lhcyBkZWwgdXNlciBlbiBlbCBkb2MgY2Fuw7NuaWNvIEZpcmVzdG9yZVxuICogYC9hcHBzL3thcHBJZH0vdXNlcnMve3VpZH0vcHJlZmVyZW5jZXMvbWFpbmAuXG4gKlxuICogUmVhZCByZWFjdGl2byAoc2lnbmFscykgdmlhIGxpc3RlbmVyIEZpcmVzdG9yZS5cbiAqIFdyaXRlIHZpYSBgUFVUIC92Mi9hdXRoL3ByZWZlcmVuY2VzYCAoY2xpZW50ZSBOVU5DQSBlc2NyaWJlIEZpcmVzdG9yZSBkaXJlY3RvIOKAlFxuICogdmVyIG1lbW9yaWEgYGZlZWRiYWNrX25vX2RpcmVjdF9maXJlc3RvcmVfd3JpdGVzYCkuXG4gKlxuICogU2lkZS1lZmZlY3RzIGF1dG9tw6F0aWNvczpcbiAqIC0gQ3VhbmRvIGB0aGVtZSgpYCBjYW1iaWEg4oaSIGBUaGVtZVNlcnZpY2UuVGhlbWUgPSAuLi5gXG4gKiAtIEN1YW5kbyBgbGFuZ3VhZ2UoKWAgY2FtYmlhIOKGkiBgSTE4blNlcnZpY2Uuc2V0TGFuZ3VhZ2UoLi4uKWBcbiAqXG4gKiBBdXRvLWJpbmQgYWwgdXNlciBhY3R1YWwgdmlhIGBBdXRoU2VydmljZS51c2VyKClgLiBTaW4gdXNlciAobG9nb3V0KSDihpIgdW5iaW5kLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByZWZlcmVuY2VzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RoZW1lID0gc2lnbmFsPFByZWZlcmVuY2VzVGhlbWU+KCdhdXRvJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlID0gc2lnbmFsPFByZWZlcmVuY2VzTGFuZ3VhZ2U+KCdlcycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb250U2l6ZSA9IHNpZ25hbDxQcmVmZXJlbmNlc0ZvbnRTaXplPignbWVkaXVtJyk7XG4gIC8vIERlZmF1bHQgYGZhbHNlYCAob3B0LWluKS4gRWwgdXNlciBkZWJlIGFjdGl2YXIgZXhwbMOtY2l0YW1lbnRlIGxhcyBub3RpZmljYWNpb25lcztcbiAgLy8gbm8gYXN1bWltb3MgY29uc2VudGltaWVudG8gaW1wbMOtY2l0by4gQmFja2VuZCBkZWJlIGNvaW5jaWRpci5cbiAgcHJpdmF0ZSByZWFkb25seSBfbm90aWZpY2F0aW9uc01hc3RlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBgdHJ1ZWAgZGVzcHXDqXMgZGVsIHByaW1lciBzbmFwc2hvdCBGaXJlc3RvcmUuIEFudGVzLCBkZWZhdWx0cyBzaW4gc2lkZS1lZmZlY3RzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zeW5jZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHRoZW1lID0gdGhpcy5fdGhlbWUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBsYW5ndWFnZSA9IHRoaXMuX2xhbmd1YWdlLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgZm9udFNpemUgPSB0aGlzLl9mb250U2l6ZS5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnNNYXN0ZXIgPSB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgc3luY2VkID0gdGhpcy5fc3luY2VkLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjdXJyZW50VXNlcklkPzogc3RyaW5nO1xuICAvKipcbiAgICogYHRydWVgIG1pZW50cmFzIHVuIGB1cGRhdGUoKWAgZXN0w6EgZW4gdnVlbG8gKFBVVCBhbCBiYWNrZW5kKS5cbiAgICpcbiAgICogRWwgbGlzdGVuZXIgRmlyZXN0b3JlIChgYmluZFRvVXNlcmApIGVzIHJlYWwtdGltZSB5IHB1ZWRlIGVtaXRpciB1biBzbmFwc2hvdFxuICAgKiAqc3RhbGUqIOKAlCBhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kIOKAlCBxdWUgcGlzYXLDrWEgZWwgdmFsb3Igb3B0aW1pc3RhIGRlXG4gICAqIGBfbm90aWZpY2F0aW9uc01hc3RlcmAgeSByZXZlcnRpcsOtYSBlbCB0b2dnbGUuIE1pZW50cmFzIGVzdGUgZmxhZyBlc3TDqSBgdHJ1ZWBcbiAgICogZWwgbGlzdGVuZXIgaWdub3JhIGxhcyBlbWlzaW9uZXM7IGVsIGB1cGRhdGUoKWAgeWEgYWxpbmVhIGxhcyBzZcOxYWxlcyBjb24gbGFcbiAgICogcmVzcHVlc3RhIGRlbCBiYWNrZW5kIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyxcbiAgICBwcml2YXRlIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvbnRTaXplU2VydmljZTogRm9udFNpemVTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGkxOG46IEkxOG5TZXJ2aWNlIHwgbnVsbFxuICApIHtcbiAgICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMudW5iaW5kKCkpO1xuXG4gICAgLy8gU2VlZCBgX2ZvbnRTaXplYCBjb24gZWwgdmFsb3IgcXVlIEZvbnRTaXplU2VydmljZSB5YSByZXN0YXVyw7MgZGVzZGVcbiAgICAvLyBsb2NhbFN0b3JhZ2UgZW4gc3UgY29uc3RydWN0b3IgKHByb3ZpZGVkSW4gcm9vdCDihpIgeWEgY29ycmnDsyBhbCBpbnllY3RhcmxvXG4gICAgLy8gYWPDoSkuIFNpbiBlc3RvLCBlbCBzaWduYWwgYXJyYW5jYSBlbiAnbWVkaXVtJyB5IGVsIGVmZmVjdCBkZSBhYmFqbyDigJRxdWVcbiAgICAvLyBkaXNwYXJhIGFsIG1hcmNhcnNlIGBzeW5jZWRg4oCUIGZvcnphcsOtYSAnbWVkaXVtJyBwaXNhbmRvIGVsIHRhbWHDsW9cbiAgICAvLyByZXN0YXVyYWRvIGN1YW5kbyBlbCBzbmFwc2hvdCBGaXJlc3RvcmUgTk8gdHJhZSBgZm9udFNpemVgICh1c2VyIHNpbiBlc2VcbiAgICAvLyBjYW1wbyBlbiBlbCBtaXJyb3IpLiBCdWc6IGNhbWJpYXMgZWwgdGFtYcOxbywgcmVmcmVzY2FzIHkgc2UgcGllcmRlLlxuICAgIGlmICh0aGlzLmZvbnRTaXplU2VydmljZSkge1xuICAgICAgdGhpcy5fZm9udFNpemUuc2V0KHRoaXMuZm9udFNpemVTZXJ2aWNlLnNpemUoKSBhcyBQcmVmZXJlbmNlc0ZvbnRTaXplKTtcbiAgICB9XG5cbiAgICAvLyBNaXNtbyBzZWVkIHBhcmEgdGhlbWUg4oCUIFRoZW1lU2VydmljZSBhcGxpY2Egc3UgdmFsb3IgZGUgbG9jYWxTdG9yYWdlIGVuXG4gICAgLy8gYm9vdHN0cmFwIChgY3VycmVudE9wdGlvbmApLiBOZWNlc2FyaW8gcGFyYSBkZXNnYXRlYXIgZWwgZWZmZWN0IGRlIHRoZW1lXG4gICAgLy8gKGFiYWpvKSBzaW4gcXVlIGVsIGRlZmF1bHQgJ2F1dG8nIHBpc2UgZWwgdGVtYSByZXN0YXVyYWRvLlxuICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgdGhpcy5fdGhlbWUuc2V0KHRoaXMudGhlbWVTZXJ2aWNlLmN1cnJlbnRPcHRpb24gYXMgUHJlZmVyZW5jZXNUaGVtZSk7XG4gICAgfVxuXG4gICAgLy8gQXV0by1iaW5kIGFsIHVzZXIgYWN0dWFsLiBlZmZlY3QoKSBjb3JyZSBlbiBpbmplY3Rpb24gY29udGV4dCAoY29uc3RydWN0b3IgT0spLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBiaW5kVG9Vc2VyL3VuYmluZCBlc2NyaWJlbiBgX3N5bmNlZGAgKHNlw7FhbCBpbnRlcm5hIHNpblxuICAgIC8vIGRlcGVuZGVuY2lhcyBkZWwgcHJvcGlvIGVmZmVjdCkg4oaSIHNlZ3VybyB5IG5lY2VzYXJpby5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgICAgICBpZiAodXNlcj8udXNlcklkKSB7XG4gICAgICAgICAgdGhpcy5iaW5kVG9Vc2VyKHVzZXIudXNlcklkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIHRoZW1lLiBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGxvY2FsLWZpcnN0LCBpZ3VhbCBxdWVcbiAgICAvLyBmb250U2l6ZSk6IFRoZW1lU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbCBkaXNwb3NpdGl2byB5XG4gICAgLy8gYF90aGVtZWAgdmllbmUgc2VlZGVhZG8gYXJyaWJhLiBBcGxpY2FyIHNpZW1wcmUgcXVlIGNhbWJpZSBkYSBhcHBseVxuICAgIC8vIG9wdGltaXN0YSBhbCBpbnN0YW50ZTsgZWwgc3luYyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaWNhIHbDrWEgc25hcHNob3QuXG4gICAgLy8gR2F0ZWFybG8gZW4gYF9zeW5jZWRgIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jXG4gICAgLy8gRmlyZXN0b3JlIGHDum4pIG5vIHNlIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkRhcmtcIiBwZXJvIGVsIHRlbWEgbm9cbiAgICAvLyBjYW1iaWFiYS4gKEVsIHNlbGVjdG9yIGRlIGlkaW9tYSBubyBzdWZyZSBlc3RvIHBvcnF1ZSB2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAgICAvLyBsbGFtYSBpMThuLnNldExhbmd1YWdlIGRpcmVjdG87IGVsIGRlIHRoZW1lIGRlcGVuZGUgc29sbyBkZSBlc3RlIGVmZmVjdC4pXG4gICAgLy8gT0pPOiB1c2FyIGB0b2dnbGVVc2VyUHJlZmVyZW5jZSgpYCB5IE5PIGVsIHNldHRlciBgVGhlbWUgPWAuIEVsIHNldHRlciBzb2xvXG4gICAgLy8gcGVyc2lzdGUgbG9jYWxTdG9yYWdlICsgZW1pdGUgZWwgQmVoYXZpb3JTdWJqZWN0OyBubyBhcGxpY2EgbGFzIGNsYXNlc1xuICAgIC8vIGBib2R5LmRhcmtgL2BodG1sLmlvbi1wYWxldHRlLWRhcmtgIHF1ZSBlbCBwYWxldHRlIGRlIElvbmljIG5lY2VzaXRhLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0ID0gdGhpcy5fdGhlbWUoKTtcbiAgICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50b2dnbGVVc2VyUHJlZmVyZW5jZSh0IGFzIFRoZW1lT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIGxhbmd1YWdlIGxvY2FsIGN1YW5kbyBsbGVnYSBzbmFwc2hvdCByZWFsLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9zeW5jZWQoKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBsID0gdGhpcy5fbGFuZ3VhZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaTE4biAmJiB0aGlzLmkxOG4ubGFuZygpICE9PSBsKSB7XG4gICAgICAgICAgdGhpcy5pMThuLnNldExhbmd1YWdlKGwgYXMgSTE4bkxhbmcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIGZvbnRTaXplLlxuICAgIC8vIFNJTiBnYXRlIGBfc3luY2VkYCAoaWd1YWwgcXVlIHRoZW1lKTogZWwgdGFtYcOxbyBlcyB1bmFcbiAgICAvLyBwcmVmZXJlbmNpYSBsb2NhbC1maXJzdCDigJQgRm9udFNpemVTZXJ2aWNlL2xvY2FsU3RvcmFnZSBlcyBsYSB2ZXJkYWQgZGVsXG4gICAgLy8gZGlzcG9zaXRpdm8geSBgX2ZvbnRTaXplYCB5YSB2aWVuZSBzZWVkZWFkbyBkZSBhaMOtIGFycmliYS4gQXBsaWNhciBzaWVtcHJlXG4gICAgLy8gcXVlIGNhbWJpZSBwZXJtaXRlIHF1ZSBlbCBjYW1iaW8gZGVsIHVzdWFyaW8gc3VydGEgZWZlY3RvIGFsIGluc3RhbnRlXG4gICAgLy8gKG9wdGltaXN0YSwgc2luIGVzcGVyYXIgZWwgcm91bmQtdHJpcCBhIEZpcmVzdG9yZSkgeSBxdWUgZWwgc3luY1xuICAgIC8vIGNyb3NzLWRldmljZSB0YW1iacOpbiBhcGxpcXVlIGFsIGxsZWdhciBlbCBzbmFwc2hvdC4gR2F0ZWFybG8gZW4gYF9zeW5jZWRgXG4gICAgLy8gaGFjw61hIHF1ZSBlbCBwcmltZXIgY2FtYmlvIGRlIHVuIHVzZXIgbnVldm8gKHNpbiBkb2MgRmlyZXN0b3JlIGHDum4pIG5vIHNlXG4gICAgLy8gYXBsaWNhcmE6IGVsIHNlbGVjdG9yIG1vc3RyYWJhIFwiR3JhbmRlXCIgcGVybyBlbCBmb250LXNpemUgbm8gY2FtYmlhYmEuXG4gICAgLy8gYWxsb3dTaWduYWxXcml0ZXM6IGZvbnRTaXplU2VydmljZS5zZXRTaXplKCkgZXNjcmliZSB0aGlzLl9zaXplIChzaWduYWwpLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZnMgPSB0aGlzLl9mb250U2l6ZSgpO1xuICAgICAgICBpZiAodGhpcy5mb250U2l6ZVNlcnZpY2UpIHtcbiAgICAgICAgICB0aGlzLmZvbnRTaXplU2VydmljZS5zZXRTaXplKGZzIGFzIEZvbnRTaXplT3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICAvKiogQWN0dWFsaXphIHByZWZlcmVuY2lhcyB2aWEgYmFja2VuZC4gT3B0aW1pc3RpYyBVSTogYXBsaWNhIGxvY2FsLCByZXZpZXJ0ZSBzaSBmYWxsYS4gKi9cbiAgYXN5bmMgdXBkYXRlKHBhcnRpYWw6IFByZWZlcmVuY2VzVXBkYXRlKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWcuYXBpVXJsfS92Mi9hdXRoL3ByZWZlcmVuY2VzYDtcblxuICAgIGNvbnN0IHByZXYgPSB7XG4gICAgICB0aGVtZTogdGhpcy5fdGhlbWUoKSxcbiAgICAgIGxhbmd1YWdlOiB0aGlzLl9sYW5ndWFnZSgpLFxuICAgICAgZm9udFNpemU6IHRoaXMuX2ZvbnRTaXplKCksXG4gICAgICBtYXN0ZXI6IHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIoKSxcbiAgICB9O1xuXG4gICAgaWYgKHBhcnRpYWwudGhlbWUpIHRoaXMuX3RoZW1lLnNldChwYXJ0aWFsLnRoZW1lKTtcbiAgICBpZiAocGFydGlhbC5sYW5ndWFnZSkgdGhpcy5fbGFuZ3VhZ2Uuc2V0KHBhcnRpYWwubGFuZ3VhZ2UpO1xuICAgIGlmIChwYXJ0aWFsLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQocGFydGlhbC5mb250U2l6ZSk7XG4gICAgaWYgKHBhcnRpYWwubm90aWZpY2F0aW9ucyAmJiB0eXBlb2YgcGFydGlhbC5ub3RpZmljYXRpb25zLm1hc3RlciA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLnNldChwYXJ0aWFsLm5vdGlmaWNhdGlvbnMubWFzdGVyKTtcbiAgICB9XG5cbiAgICAvLyBCbG9xdWVhciBlbCBsaXN0ZW5lciBGaXJlc3RvcmUgbWllbnRyYXMgZWwgUFVUIGVzdMOhIGVuIHZ1ZWxvOiB1biBzbmFwc2hvdFxuICAgIC8vIHN0YWxlIG5vIGRlYmUgcGlzYXIgZWwgdmFsb3Igb3B0aW1pc3RhIHJlY2nDqW4gYXBsaWNhZG8uXG4gICAgdGhpcy5fdXBkYXRlSW5GbGlnaHQgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEVudmlhciBhcHBJZCBleHBsw61jaXRvIOKAlCBlbCBiYWNrZW5kIGxvIHVzYSBwYXJhIGVzY3JpYmlyIGVsIG1pcnJvclxuICAgICAgLy8gRmlyZXN0b3JlIGVuIGFwcHMve2FwcElkfS8uLi4gY29ycmVjdG8sIHNpbiBkZXBlbmRlciBkZWwgaGVhZGVyIE9yaWdpblxuICAgICAgLy8gKHF1ZSBlbiBQV0EgaU9TIHB1ZWRlIG5vIHJlc29sdmVyIGFsIEFwcElEIGVzcGVyYWRvKS5cbiAgICAgIGNvbnN0IGJvZHkgPSB7IC4uLnBhcnRpYWwsIGFwcElkOiB0aGlzLmNvbmZpZy5hcHBJZCB9O1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnB1dDxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPih1cmwsIGJvZHkpKTtcbiAgICAgIC8vIEVsIGxpc3RlbmVyIEZpcmVzdG9yZSBlcyBsYSBmdWVudGUgZmluYWwsIHBlcm8gYWxpbmVhciB5YSBjb24gbGFcbiAgICAgIC8vIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCBhY2VsZXJhIFVYIChlc3BlY2lhbG1lbnRlIHNpIGVsIGxpc3RlbmVyXG4gICAgICAvLyB0YXJkYSBlbiBwcm9wYWdhcikuXG4gICAgICBpZiAocmVzLnRoZW1lKSB0aGlzLl90aGVtZS5zZXQocmVzLnRoZW1lIGFzIFByZWZlcmVuY2VzVGhlbWUpO1xuICAgICAgaWYgKHJlcy5sYW5ndWFnZSkgdGhpcy5fbGFuZ3VhZ2Uuc2V0KHJlcy5sYW5ndWFnZSBhcyBQcmVmZXJlbmNlc0xhbmd1YWdlKTtcbiAgICAgIGlmIChyZXMuZm9udFNpemUpIHRoaXMuX2ZvbnRTaXplLnNldChyZXMuZm9udFNpemUgYXMgUHJlZmVyZW5jZXNGb250U2l6ZSk7XG4gICAgICBpZiAodHlwZW9mIHJlcy5ub3RpZmljYXRpb25zPy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLnNldChyZXMubm90aWZpY2F0aW9ucy5tYXN0ZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFJldmVydCBvcHRpbWlzdGljLlxuICAgICAgdGhpcy5fdGhlbWUuc2V0KHByZXYudGhlbWUpO1xuICAgICAgdGhpcy5fbGFuZ3VhZ2Uuc2V0KHByZXYubGFuZ3VhZ2UpO1xuICAgICAgdGhpcy5fZm9udFNpemUuc2V0KHByZXYuZm9udFNpemUpO1xuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocHJldi5tYXN0ZXIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl91cGRhdGVJbkZsaWdodCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNldFRoZW1lKHRoZW1lOiBQcmVmZXJlbmNlc1RoZW1lKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgdGhlbWUgfSk7XG4gIH1cblxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogUHJlZmVyZW5jZXNMYW5ndWFnZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IGxhbmd1YWdlIH0pO1xuICB9XG5cbiAgc2V0Rm9udFNpemUoZm9udFNpemU6IFByZWZlcmVuY2VzRm9udFNpemUpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBmb250U2l6ZSB9KTtcbiAgfVxuXG4gIHNldE5vdGlmaWNhdGlvbnNNYXN0ZXIoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IG5vdGlmaWNhdGlvbnM6IHsgbWFzdGVyOiBlbmFibGVkIH0gfSk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRUb1VzZXIodXNlcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VXNlcklkID09PSB1c2VySWQgJiYgdGhpcy5zdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLnVuYmluZCgpO1xuICAgIHRoaXMuY3VycmVudFVzZXJJZCA9IHVzZXJJZDtcbiAgICAvLyBGaXJlc3RvcmVTZXJ2aWNlLmRvY0NoYW5nZXMgcHJlZmlqYSBhdXRvbcOhdGljYW1lbnRlIGBhcHBzL3thcHBJZH0vYFxuICAgIC8vIGN1YW5kbyBgY29uZmlnLmFwcElkYCBlc3TDoSBzZXRlYWRvIGVuIFZhbHRlY2hBdXRoQ29uZmlnLlxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5maXJlc3RvcmVcbiAgICAgIC5kb2NDaGFuZ2VzPFByZWZlcmVuY2VzRG9jdW1lbnQgJiB7IGlkPzogc3RyaW5nIH0+KGB1c2Vycy8ke3VzZXJJZH0vcHJlZmVyZW5jZXNgLCAnbWFpbicpXG4gICAgICAuc3Vic2NyaWJlKGRvYyA9PiB7XG4gICAgICAgIGlmICghZG9jKSB7XG4gICAgICAgICAgLy8gRG9jIG5vIGV4aXN0ZSBhw7puICh1c2VyIG51ZXZvLCBzaW4gcHJpbWVyIHN5bmMpLiBNYW50ZW5lbW9zXG4gICAgICAgICAgLy8gZGVmYXVsdHMgbG9jYWxlcyBwZXJvIE5PIG1hcmNhbW9zIHN5bmNlZCDigJQgbG9zIHNpZGUtZWZmZWN0cyBub1xuICAgICAgICAgIC8vIHBpc2FuIGVsIHRoZW1lL2xhbmcgbG9jYWxlcyBjb24gdmFsb3JlcyBhcmJpdHJhcmlvcy5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWdub3JhciBlbWlzaW9uZXMgZGVsIGxpc3RlbmVyIG1pZW50cmFzIGhheSB1biB1cGRhdGUoKSBlbiB2dWVsbzogdW5cbiAgICAgICAgLy8gc25hcHNob3Qgc3RhbGUgKGFudGVyaW9yIGFsIHN5bmMgZGVsIGJhY2tlbmQpIHJldmVydGlyw61hIGVsIHZhbG9yXG4gICAgICAgIC8vIG9wdGltaXN0YS4gRWwgdXBkYXRlKCkgeWEgYWxpbmVhIGxhcyBzZcOxYWxlcyBjb24gbGEgcmVzcHVlc3RhIHJlYWwuXG4gICAgICAgIGlmICh0aGlzLl91cGRhdGVJbkZsaWdodCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9jLnRoZW1lKSB0aGlzLl90aGVtZS5zZXQoZG9jLnRoZW1lKTtcbiAgICAgICAgaWYgKGRvYy5sYW5ndWFnZSkgdGhpcy5fbGFuZ3VhZ2Uuc2V0KGRvYy5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChkb2MuZm9udFNpemUpIHRoaXMuX2ZvbnRTaXplLnNldChkb2MuZm9udFNpemUpO1xuICAgICAgICBpZiAoZG9jLm5vdGlmaWNhdGlvbnMgJiYgdHlwZW9mIGRvYy5ub3RpZmljYXRpb25zLm1hc3RlciA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQoZG9jLm5vdGlmaWNhdGlvbnMubWFzdGVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zeW5jZWQuc2V0KHRydWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVuYmluZCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3luY2VkLnNldChmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.441';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40NDEnO1xuIl19
5
+ export const VERSION = '4.0.443';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40NDMnO1xuIl19
@@ -58,7 +58,7 @@ import fixWebmDuration from 'fix-webm-duration';
58
58
  * Current version of valtech-components.
59
59
  * This is automatically updated during the publish process.
60
60
  */
61
- const VERSION = '4.0.441';
61
+ const VERSION = '4.0.443';
62
62
 
63
63
  // Control de estado de refresco (singleton a nivel de módulo)
64
64
  let isRefreshing = false;
@@ -1381,9 +1381,11 @@ class AnalyticsService {
1381
1381
  params,
1382
1382
  sent,
1383
1383
  };
1384
- this._debugHistory.update(history => {
1385
- const newHistory = [event, ...history];
1386
- return newHistory.slice(0, MAX_DEBUG_HISTORY);
1384
+ queueMicrotask(() => {
1385
+ this._debugHistory.update(history => {
1386
+ const newHistory = [event, ...history];
1387
+ return newHistory.slice(0, MAX_DEBUG_HISTORY);
1388
+ });
1387
1389
  });
1388
1390
  }
1389
1391
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AnalyticsService, deps: [{ token: i0.Injector }, { token: VALTECH_FIREBASE_CONFIG }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -47693,7 +47695,7 @@ class PreferencesService {
47693
47695
  if (this.i18n && this.i18n.lang() !== l) {
47694
47696
  this.i18n.setLanguage(l);
47695
47697
  }
47696
- });
47698
+ }, { allowSignalWrites: true });
47697
47699
  // Side-effect: aplicar fontSize.
47698
47700
  // SIN gate `_synced` (igual que theme): el tamaño es una
47699
47701
  // preferencia local-first — FontSizeService/localStorage es la verdad del