@messaia/cdk 17.0.5 → 17.0.6

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.
@@ -126,7 +126,7 @@ export class GenericFormBaseComponent extends BaseComponent {
126
126
  /**
127
127
  * Password validation pattern
128
128
  */
129
- passwordPattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{6,}';
129
+ passwordPattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&#.])[A-Za-z\\d$@$!%*?&#.]{6,}';
130
130
  /**
131
131
  * Defaults modules and toolbar
132
132
  */
@@ -769,4 +769,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
769
769
  type: HostListener,
770
770
  args: ['document:keydown', ['$event']]
771
771
  }] } });
772
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvYmFzZS9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBbUIsU0FBUyxFQUE0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFFakQsV0FBVztBQUVYLE1BQU0sT0FBZ0Isd0JBQTRGLFNBQVEsYUFBYTtJQW9POUg7SUFDRztJQUNBO0lBQ0E7SUF0T1g7O09BRUc7SUFDSSxNQUFNLEdBQVcsS0FBSyxDQUFDO0lBRTlCOztPQUVHO0lBQ0ksVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVuQzs7T0FFRztJQUNJLFVBQVUsR0FBc0IsVUFBVSxDQUFDO0lBRWxEOztPQUVHO0lBQ0kscUJBQXFCLEdBQVcsUUFBUSxDQUFDO0lBQ3pDLG9CQUFvQixHQUFXLEtBQUssQ0FBQztJQUNyQyxtQkFBbUIsR0FBVyxVQUFVLENBQUM7SUFDekMsa0JBQWtCLEdBQVcsUUFBUSxDQUFDO0lBQ3RDLFNBQVMsR0FBVyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFFckQ7O09BRUc7SUFDTyxHQUFHLENBQW1CO0lBRWhDOztPQUVHO0lBQ0gsSUFDVyxFQUFFLEtBQWtDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakUsSUFBVyxFQUFFLENBQUMsRUFBK0I7UUFDNUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQzVDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBRU8sS0FBSyxDQUFXO0lBRTFCOztPQUVHO0lBQ0gsSUFDVyxJQUFJLEtBQTBCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQzlELElBQVcsSUFBSSxDQUFDLElBQXlCO1FBQ3hDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQjtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUVuRDs7T0FFRztJQUVJLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFFL0I7O09BRUc7SUFDSSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBRXJDOztPQUVHO0lBRUksVUFBVSxDQUFZO0lBRTdCOztPQUVHO0lBRUksS0FBSyxHQUFRLEVBQUUsQ0FBQztJQUV2Qjs7T0FFRztJQUVJLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFakM7O09BRUc7SUFFSSxRQUFRLEdBQVksS0FBSyxDQUFDO0lBRWpDOztPQUVHO0lBQ0ksV0FBVyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFFdEM7O09BRUc7SUFDSSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUzSTs7T0FFRztJQUNJLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXpGOztPQUVHO0lBQ0ksUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTVEOztPQUVHO0lBQ0ksV0FBVyxHQUFXLHNWQUFzVixDQUFDO0lBRXBYOztPQUVHO0lBQ0ksa0JBQWtCLEdBQVcsZUFBZSxDQUFDO0lBRXBEOztPQUVHO0lBQ0ksa0JBQWtCLEdBQVcsZUFBZSxDQUFDO0lBRXBEOztPQUVHO0lBQ0ksZUFBZSxHQUFXLHlFQUF5RSxDQUFDO0lBRTNHOztPQUVHO0lBQ0ksYUFBYSxHQUFHO1FBQ3RCLE9BQU8sRUFBRTtZQUNSLE9BQU8sRUFBRTtnQkFDUixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDO2dCQUMvQixDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUM3QyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUN4QyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQU8sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksS0FBSyxFQUFPLEVBQUUsQ0FBQztnQkFDbkUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ2pCO1lBQ0QsU0FBUyxFQUFFO2dCQUNWLFdBQVcsRUFBRSxLQUFLO2FBQ2xCO1NBQ0Q7S0FDRCxDQUFDO0lBRUY7O09BRUc7SUFDSSxTQUFTLEdBQVksSUFBSSxDQUFDO0lBRWpDOztPQUVHO0lBQ0ksZ0JBQWdCLEdBQWlCLEVBQUUsQ0FBQztJQUUzQzs7T0FFRztJQUNJLGNBQWMsR0FBOEQsQ0FBQztZQUNuRixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzlCLENBQUMsQ0FBQztJQUVIOztPQUVHO0lBRU8sVUFBVSxDQUFjO0lBRWxDOztPQUVHO0lBRUksS0FBSyxDQUFNO0lBRWxCOztPQUVHO0lBQ0ksS0FBSyxDQUFzQjtJQUVsQzs7T0FFRztJQUNILElBQ1csSUFBSSxLQUFxQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUN4RSxJQUFXLElBQUksQ0FBQyxJQUFvQztRQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBT0Q7O09BRUc7SUFDSSxjQUFjLENBQWtCO0lBRXZDOztPQUVHO0lBQ0ksV0FBVyxDQUE4QjtJQUVoRDs7O09BR0c7SUFDSCxZQUNRLFVBQXlCLEVBQ3RCLE9BQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLGlCQUFvQztRQUU5QyxLQUFLLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFMekIsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFVO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFHOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDUCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNkLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25ELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTFDLGVBQWU7UUFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdkMsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEtBQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLE9BQXNCO1FBQ2pDLElBQ0MsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUNsRixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQ3ZGO1lBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2hCO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUs7Z0JBQ25DLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7YUFDekMsQ0FBQyxDQUFDO1NBQ0g7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BOLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzlDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDUCx5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBRTFELG9CQUFvQjtnQkFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUVqQixtQ0FBbUM7Z0JBQ25DLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUNGLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksSUFBSSxDQUFDLFNBQXFCLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBeUI7UUFDbEYsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEIsZ0NBQWdDO1FBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUN6QixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsT0FBTztTQUNQO1FBRUQsOENBQThDO1FBQzlDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQiwrQkFBK0I7WUFDL0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsT0FBTzthQUNQO1lBRUQsOENBQThDO1lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBRXJCLGlDQUFpQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDeEYsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2xCLGtDQUFrQztvQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRXJDLGdEQUFnRDtvQkFDaEQsSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRTt3QkFDckMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTs0QkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUNqQzs2QkFBTTs0QkFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7eUJBQ2xCO3FCQUNEO2dCQUNGLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUN6QyxDQUFDLENBQUM7U0FDSDtRQUVELGlDQUFpQzthQUM1QjtZQUNKLDhDQUE4QztZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBVyxDQUFDLFNBQVMsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRXJDLElBQUksSUFBSSxFQUFFO3dCQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDeEMsSUFBSSxHQUFHLEdBQUcsSUFBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDOUIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNyQixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7NEJBQ3RCLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO3dCQUM5QixDQUFDLENBQUMsQ0FBQztxQkFDSDtnQkFDRixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7YUFDekMsQ0FBQyxDQUFDO1NBQ0g7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDekQsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7cUJBQ2xHLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNiLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDTyxJQUFJO1FBQ2Isc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUMzQiwyQ0FBMkM7WUFDM0MsSUFBSSxhQUFhLEdBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFDNUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQzVFLENBQUM7WUFFRix5QkFBeUI7WUFDekIsSUFBSSxFQUFFLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDYjtpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7YUFDeEM7WUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDcEI7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDakI7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO1FBRXRELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXO1FBQ3BCLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTVELCtDQUErQztRQUMvQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFOUUsb0NBQW9DO1FBQ3BDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztTQUN2RDtRQUVELGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVMsS0FBVyxDQUFDO0lBRS9COzs7T0FHRztJQUNJLFlBQVksQ0FBQyxJQUF5QjtRQUM1QyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUU3QiwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRTtZQUN0QywyQkFBMkI7WUFDMUIsSUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUVsQywrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDOUI7UUFFRCxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLElBQXlCO1FBQzNDLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJCLGlDQUFpQztRQUNqQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsaURBQWlEO1lBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQkFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdELHlCQUF5QjtZQUN6QixDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNYLHNDQUFzQztnQkFDdEMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFM0MsOEJBQThCO2dCQUM5QixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQVUsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO3FCQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO3FCQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2Qsb0JBQW9CO29CQUNwQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7b0JBQzdFLElBQUksS0FBSyxFQUFFO3dCQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ25CO2dCQUNGLENBQUMsQ0FBQyxDQUFDO2dCQUVKLHlCQUF5QjtnQkFDekIsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUEsd0ZBQXdGLENBQUM7Z0JBRWhLLG1CQUFtQjtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRixPQUFPLEtBQUssQ0FBQztZQUNkLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFTCxPQUFPLEtBQUssQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxJQUFZO1FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVixPQUFPO1NBQ1A7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNPLGlCQUFpQixDQUFDLE9BQXdCO1FBQ25ELG9DQUFvQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2IsT0FBTztTQUNQO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksU0FBUyxHQUFHLE9BQW9CLENBQUM7UUFDckMsSUFBSSxTQUFTLEVBQUUsUUFBUSxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztpQkFDN0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDekMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDTixPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFNBQVMsQ0FBQyxJQUF5QjtRQUM1QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEMsTUFBTSxhQUFhLEdBQTRCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN6RSxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7b0JBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsY0FBYyxHQUFHLFFBQVEsR0FBRyxlQUFlLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQzNHLENBQUMsQ0FBQyxDQUFDO2lCQUNIO1lBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDSDtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNPLG1CQUFtQjtRQUM1Qiw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxTQUFTLENBQUEsa0JBQWtCO2dCQUNsQyxJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixTQUFTLEVBQUUsZUFBZTtnQkFDMUIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUM3QixLQUFLLEVBQUUsSUFBSTthQUNYLENBQUMsQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQ2pDLGtDQUFrQztZQUNsQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVoRCwyREFBMkQ7WUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1NBQzlFO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLElBQUksQ0FBQyxTQUFxQixVQUFVLENBQUMsWUFBWTtRQUN2RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ04sSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUMzQjtpQkFBTTtnQkFDTixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ3BCLElBQUksTUFBTSxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUU7d0JBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7cUJBQ3JCO3lCQUFNLElBQUksTUFBTSxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUU7d0JBQzVDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztxQkFDbEI7aUJBQ0Q7cUJBQU07b0JBQ04sSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRTt3QkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztxQkFDckI7eUJBQU0sSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLFdBQVcsSUFBWSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTt3QkFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztxQkFDNUY7eUJBQU0sSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRTt3QkFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3FCQUNuQjtpQkFDRDthQUNEO1NBQ0Q7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sWUFBWSxDQUFDLFNBQWlCO1FBQ3ZDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ08sV0FBVyxDQUFDLElBQXVCO1FBQzVDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sTUFBTSxDQUFVLFdBQW9CO1FBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUN6QixJQUFJLENBQUMsU0FBUyxFQUNkLFNBQVMsRUFDVCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFDNUYsS0FBSyxDQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLE1BQU0sQ0FBQyxXQUFvQjtRQUNwQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRyxFQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QyxTQUFTLEVBQ1QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQzdGLEtBQUssQ0FDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxPQUFPLENBQUMsR0FBVyxFQUFFLFNBQWtCLEtBQUs7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVMsS0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUssSUFBSSxDQUFDLElBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckg7O09BRUc7SUFDTyxZQUFZO1FBQ3JCLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNoQjtJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDTyxpQkFBaUIsQ0FBQyxNQUE2QixJQUFVLENBQUM7SUFFcEU7O09BRUc7SUFDTyxpQkFBaUIsS0FBVyxDQUFDO0lBRXZDOztPQUVHO0lBQ08saUJBQWlCLEtBQVcsQ0FBQztJQUV2Qzs7O09BR0c7SUFDTyxnQkFBZ0I7UUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxPQUFPLEdBQW9CLElBQUksQ0FBQyxJQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7U0FDSDtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNPLGNBQWMsS0FBVyxDQUFDO0lBRXBDOztPQUVHO0lBQ08sY0FBYyxLQUFXLENBQUM7SUFFcEM7O09BRUc7SUFDTyxZQUFZLENBQUMsSUFBZ0IsVUFBVSxDQUFDLFlBQVksSUFBVSxDQUFDO0lBRXpFOzs7O09BSUc7SUFDTyxhQUFhLENBQUMsU0FBcUIsVUFBVSxDQUFDLFlBQVksRUFBRSxXQUFnQixJQUFJO1FBQ3pGLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNPLFdBQVc7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ08sS0FBSztRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3ZDO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNPLGVBQWUsQ0FBQyxhQUFrQjtRQUMzQywwQ0FBMEM7UUFDMUMsSUFBSSxZQUFZLEdBQUcsYUFBYSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbEIsT0FBTyxTQUFTLENBQUM7U0FDakI7UUFFRCxtQ0FBbUM7UUFDbkMsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZixPQUFPLFNBQVMsQ0FBQztTQUNqQjtRQUVELG1DQUFtQztRQUNuQyxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZCxPQUFPLFNBQVMsQ0FBQztTQUNqQjtRQUVELHFCQUFxQjtRQUNyQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3RELEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ25DLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxXQUFXLE1BQU0sV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7O09BR0c7SUFFSCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNuQyxRQUFRLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xCLEtBQUssR0FBRztvQkFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUVQLEtBQUssR0FBRztvQkFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNqQyxNQUFNO2dCQUVQLEtBQUssR0FBRztvQkFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2FBQ1A7U0FDRDtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNaO0lBQ0YsQ0FBQzswSEE5MUJvQix3QkFBd0I7OEdBQXhCLHdCQUF3QixnVUF3TGxDLFVBQVU7OzJGQXhMQSx3QkFBd0I7a0JBRDdDLFNBQVM7MkpBbUNFLEVBQUU7c0JBRFosS0FBSztnQkFlSSxLQUFLO3NCQURkLEtBQUs7Z0JBT0ssSUFBSTtzQkFEZCxLQUFLO2dCQW1CQyxRQUFRO3NCQURkLEtBQUs7Z0JBWUMsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFxRkksVUFBVTtzQkFEbkIsU0FBUzt1QkFBQyxVQUFVO2dCQU9kLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPO2dCQVlWLElBQUk7c0JBRGQsS0FBSztnQkE2bkJOLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHknO1xyXG5pbXBvcnQgeyBTYXZlQWN0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9zYXZlLWFjdGlvbic7XHJcbmltcG9ydCB7IGdldEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZm9ybXMvbW9kZWxzL2Zvcm0tZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Zvcm1zL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWdlbmVyaWMtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHksIFRTZXJ2aWNlIGV4dGVuZHMgR2VuZXJpY1NlcnZpY2U8VEVudGl0eT4+IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4sIE9uQ2hhbmdlcyB7XHJcblx0LyoqXHJcblx0ICogVGhlIGFjdGlvbiBvZiB0aGUgZm9ybSAoYWRkIHwgZWRpdClcclxuXHQgKi9cclxuXHRwdWJsaWMgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcclxuXHJcblx0LyoqXHJcblx0ICogQWN0aW9uID0gZWRpdD9cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlIGFjdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBTYXZlQWN0aW9uOiB0eXBlb2YgU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0U2F2ZUFuZENsb3NlUm91dGU6IHN0cmluZyA9ICcuLi8uLi8nO1xyXG5cdHB1YmxpYyBhZGRTYXZlQW5kQ2xvc2VSb3V0ZTogc3RyaW5nID0gJy4uLyc7XHJcblx0cHVibGljIGFkZFNhdmVBbmRFZGl0Um91dGU6IHN0cmluZyA9ICcuLi9lZGl0Lyc7XHJcblx0cHVibGljIGFkZFNhdmVBbmROZXdSb3V0ZTogc3RyaW5nID0gJy4uL2FkZCc7XHJcblx0cHVibGljIGxpc3RSb3V0ZTogc3RyaW5nID0gdGhpcy5hZGRTYXZlQW5kQ2xvc2VSb3V0ZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGlkIG9mIHRoZSBpdGVtIHRvIGxvYWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2lkPzogbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaWQgb2YgdGhlIGl0ZW0gdG8gbG9hZFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBpZCgpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faWQ7IH1cclxuXHRwdWJsaWMgc2V0IGlkKGlkOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLl9pZCAhPSBpZCkge1xyXG5cdFx0XHR0aGlzLl9pZCA9IGlkO1xyXG5cdFx0XHR0aGlzLmFjdGlvbiA9ICdlZGl0JztcclxuXHRcdFx0dGhpcy5pc0VkaXRNb2RlID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5saXN0Um91dGUgPSB0aGlzLmVkaXRTYXZlQW5kQ2xvc2VSb3V0ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBjdXJyZW50IGl0ZW0gdG8gYWRkIG9yIGVkaXRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHByb3RlY3RlZCBfaXRlbT86IFRFbnRpdHk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBjdXJyZW50IGl0ZW0gdG8gYWRkIG9yIGVkaXRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgaXRlbSgpOiBURW50aXR5IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2l0ZW07IH07XHJcblx0cHVibGljIHNldCBpdGVtKGl0ZW06IFRFbnRpdHkgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLl9pdGVtICE9IGl0ZW0pIHtcclxuXHRcdFx0dGhpcy5faXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMuaWQgPz89IGl0ZW0/LmlkO1xyXG5cdFx0XHR0aGlzLmJ1aWxkRmllbGRzKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIHRoZSByZXF1ZXN0IGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlcnJvcnM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJbmNsdWRlc1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGluY2x1ZGVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGUgaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBkYXRlSW5jbHVkZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb2plY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwcm9qZWN0aW9uPzogc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBwYXJhbXNcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBxdWVyeTogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBjdXJyZW50IGRhdGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRlICYgdGltZSBtYXNrXHJcblx0ICovXHJcblx0cHVibGljIGRhdGVUaW1lTWFzayA9IFsvWzAtM10vLCAvWzAtOV0vLCAnLicsIC9bMC0xXS8sIC9bMC05XS8sICcuJywgMiwgMCwgL1sxLTJdLywgL1swLTldLywgJyAnLCAvWzAtMl0vLCAvWzAtOV0vLCAnOicsIC9bMC01XS8sIC9bMC05XS9dO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRlIG1hc2tcclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0ZU1hc2sgPSBbL1swLTNdLywgL1swLTldLywgJy4nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLicsIDIsIDAsIC9bMS0yXS8sIC9bMC05XS9dO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaW1lIG1hc2tcclxuXHQgKi9cclxuXHRwdWJsaWMgdGltZU1hc2sgPSBbL1swLTJdLywgL1swLTldLywgJzonLCAvWzAtNV0vLCAvWzAtOV0vXTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBwYXR0ZXJuIHRvIHZhbGlkYXRlIGRhdGVzXHJcblx0ICovXHJcblx0cHVibGljIGRhdGVQYXR0ZXJuOiBzdHJpbmcgPSBgKD86KD86MzEoXFxcXC98LXxcXFxcLikoPzowP1sxMzU3OF18MVswMl0pKVxcXFwxfCg/Oig/OjI5fDMwKShcXFxcL3wtfFxcXFwuKSg/OjA/WzEsMy05XXwxWzAtMl0pXFxcXDIpKSg/Oig/OjFbNi05XXxbMi05XVxcXFxkKT9cXFxcZHsyfSkkfF4oPzoyOShcXFxcL3wtfFxcXFwuKTA/MlxcXFwzKD86KD86KD86MVs2LTldfFsyLTldXFxcXGQpPyg/OjBbNDhdfFsyNDY4XVswNDhdfFsxMzU3OV1bMjZdKXwoPzooPzoxNnxbMjQ2OF1bMDQ4XXxbMzU3OV1bMjZdKTAwKSkpKSR8Xig/OjA/WzEtOV18MVxcXFxkfDJbMC04XSkoXFxcXC98LXxcXFxcLikoPzooPzowP1sxLTldKXwoPzoxWzAtMl0pKVxcXFw0KD86KD86MVs2LTldfFsyLTldXFxcXGQpP1xcXFxkezJ9KWA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBob25lIHByZWZpeCB2YWxpZGF0aW9uIHBhdHRlcm5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGhvbmVQcmVmaXhQYXR0ZXJuOiBzdHJpbmcgPSAnXigwXFxcXGR7Miw2fSkkJztcclxuXHJcblx0LyoqXHJcblx0ICogUGhvbmUgbnVtYmVyIHZhbGlkYXRpb24gcGF0dGVyblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwaG9uZU51bWJlclBhdHRlcm46IHN0cmluZyA9ICdeKFxcXFxkezMsMzB9KSQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXNzd29yZCB2YWxpZGF0aW9uIHBhdHRlcm5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGFzc3dvcmRQYXR0ZXJuOiBzdHJpbmcgPSAnXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlxcXFxkKSg/PS4qWyRAJCElKj8mXSlbQS1aYS16XFxcXGQkQCQhJSo/Jl17Nix9JztcclxuXHJcblx0LyoqXHJcblx0ICogRGVmYXVsdHMgbW9kdWxlcyBhbmQgdG9vbGJhclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JPcHRpb25zID0ge1xyXG5cdFx0bW9kdWxlczoge1xyXG5cdFx0XHR0b29sYmFyOiBbXHJcblx0XHRcdFx0Wydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnXSxcclxuXHRcdFx0XHRbeyAnbGlzdCc6ICdvcmRlcmVkJyB9LCB7ICdsaXN0JzogJ2J1bGxldCcgfV0sXHJcblx0XHRcdFx0W3sgJ2luZGVudCc6ICctMScgfSwgeyAnaW5kZW50JzogJysxJyB9XSxcclxuXHRcdFx0XHRbeyAnc2l6ZSc6IFsnc21hbGwnLCBmYWxzZSwgJ2xhcmdlJywgJ2h1Z2UnXSB9XSxcclxuXHRcdFx0XHRbeyAnaGVhZGVyJzogWzEsIDIsIDMsIDQsIDUsIDYsIGZhbHNlXSB9XSxcclxuXHRcdFx0XHRbeyAnY29sb3InOiBuZXcgQXJyYXk8YW55PigpIH0sIHsgJ2JhY2tncm91bmQnOiBuZXcgQXJyYXk8YW55PigpIH1dLFxyXG5cdFx0XHRcdFsnbGluaycsICdpbWFnZSddXHJcblx0XHRcdF0sXHJcblx0XHRcdGNsaXBib2FyZDoge1xyXG5cdFx0XHRcdG1hdGNoVmlzdWFsOiBmYWxzZVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRGVsZXRlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUb29sYmFyIG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9vbGJhck1lbnVJdGVtczogQWN0aW9uSXRlbVtdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRvb2xiYXIgYWN0aW9uIGJ1dHRvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW08VEVudGl0eSwgSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5Pj5bXSA9IFt7XHJcblx0XHRpY29uOiAnc3luYycsXHJcblx0XHRldmVudDogKCkgPT4gdGhpcy5yZWxvYWRQYWdlKCksXHJcblx0fV07XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1hdFN0ZXBwZXIgcmVmXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTdGVwcGVyKVxyXG5cdHByb3RlY3RlZCBtYXRTdGVwcGVyPzogTWF0U3RlcHBlcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gdGhlIGlucHV0IGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKCdmb2N1cycpXHJcblx0cHVibGljIGlucHV0OiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9mb3JtOiBGb3JtR3JvdXBcclxuXHQgKi9cclxuXHRwdWJsaWMgX2Zvcm0/OiBOZ0Zvcm0gfCBGb3JtR3JvdXA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZvcm0gZ3JvdXBcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZm9ybSgpOiBOZ0Zvcm0gfCBGb3JtR3JvdXAgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZm9ybSB9O1xyXG5cdHB1YmxpYyBzZXQgZm9ybShmb3JtOiBOZ0Zvcm0gfCBGb3JtR3JvdXAgfCB1bmRlZmluZWQpIHtcclxuXHRcdHRoaXMuX2Zvcm0gPSBmb3JtO1xyXG5cdFx0dGhpcy5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGZvcm0gdmFsdWVcclxuXHQgKi9cclxuXHRwdWJsaWMgYWJzdHJhY3QgZ2V0IGZvcm1WYWx1ZSgpOiBURW50aXR5IHwgYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZm9ybURlZmluaXRpb24/OiBGb3JtRGVmaW5pdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogZmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW11cclxuXHQgKi9cclxuXHRwdWJsaWMgZmllbGRHcm91cHM/OiBGb3JtRmllbGRHcm91cERlZmluaXRpb25bXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gc2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBlbnRpdHlDdG9yOiBUeXBlPFRFbnRpdHk+LFxyXG5cdFx0cHJvdGVjdGVkIHNlcnZpY2U6IFRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0XHR0aGlzLmxpc3RSb3V0ZSA9IHRoaXMuYWRkU2F2ZUFuZENsb3NlUm91dGU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yLCBpbml0aWFsaXppbmcgaW5wdXQgcHJvcGVydGllcywgXHJcblx0ICogYW5kIHRoZSBmaXJzdCBjYWxsIHRvIG5nT25DaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkluaXQoKTtcclxuXHRcdHRoaXMuaW5pdCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaGFuZGxlRXhwYW5zaW9uUGFuZWxDaGFuZ2VzID0gdGhpcy5pc0VkaXRNb2RlO1xyXG5cdFx0c3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcblxyXG5cdFx0LyogU2V0IHBhZ2UgdGl0bGUgKi9cclxuXHRcdHRoaXMudGl0bGUgPSB0aGlzLnRpdGxlU2VydmljZS5nZXRUaXRsZSgpO1xyXG5cclxuXHRcdC8qIFNldCBmb2N1cyAqL1xyXG5cdFx0dGhpcy5mb2N1cygpO1xyXG5cclxuXHRcdC8qIFxyXG5cdFx0ICogRm9yY2UgYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBzaW5jZSBjaGFuZ2UgZGV0ZWN0aW9ucyBcclxuXHRcdCAqIGhhdmUgZmluaXNoZWQgd2hlbiBgbmdBZnRlclZpZXdJbml0YCBpcyBleGVjdXRlZFxyXG5cdFx0ICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHQvKiBMaXN0ZW4gZm9yIHN0ZXBwZXIgc2VsZWN0aW9uIGNoYW5nZXMgKi9cclxuXHRcdHRoaXMubWF0U3RlcHBlcj8uc2VsZWN0aW9uQ2hhbmdlPy5zdWJzY3JpYmUoKGV2ZW50OiBTdGVwcGVyU2VsZWN0aW9uRXZlbnQpID0+IHRoaXMub25BZnRlclN0ZXBDaGFuZ2UoZXZlbnQpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGxlZCBiZWZvcmUgYW55IG90aGVyIGxpZmVjeWNsZSBob29rLiBVc2UgaXQgdG8gaW5qZWN0IGRlcGVuZGVuY2llcywgXHJcblx0ICogYnV0IGF2b2lkIGFueSBzZXJpb3VzIHdvcmsgaGVyZS5cclxuXHQgKiBAcGFyYW0gY2hhbmdlcyBcclxuXHQgKi9cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAoXHJcblx0XHRcdChjaGFuZ2VzPy5pZD8uY3VycmVudFZhbHVlICYmIGNoYW5nZXMuaWQuY3VycmVudFZhbHVlICE9IGNoYW5nZXMuaWQucHJldmlvdXNWYWx1ZSkgfHxcclxuXHRcdFx0KGNoYW5nZXM/Lml0ZW0/LmN1cnJlbnRWYWx1ZSAmJiBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlICE9IGNoYW5nZXMuaXRlbS5wcmV2aW91c1ZhbHVlKVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMubG9hZEl0ZW0oKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvYWRzIGFuIGl0ZW0gYnkgSURcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZEl0ZW0oKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5pc0VkaXRNb2RlICYmIHRoaXMuc2VydmljZT8uZW5kcG9pbnQpIHtcclxuXHRcdFx0dGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0dGhpcy5sb2FkSXRlbUFzeW5jKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5pc0xvYWRpbmcgPSBmYWxzZSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLnBhcnNlRXJyb3JzKGVycm9yKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvYWRzIGFuIGl0ZW0gYnkgSUQgYXN5bmNseVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkSXRlbUFzeW5jKCk6IE9ic2VydmFibGU8VEVudGl0eT4ge1xyXG5cdFx0aWYgKHRoaXMuaWQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuc2VydmljZS5nZXQodGhpcy5pZCwgT2JqZWN0LmFzc2lnbih0aGlzLnF1ZXJ5IHx8IHt9LCB7IGluY2x1ZGVzOiB0aGlzLmluY2x1ZGVzPy5sZW5ndGggPyB0aGlzLmluY2x1ZGVzIDogdGhpcy51cGRhdGVJbmNsdWRlcywgcHJvamVjdGlvbjogdGhpcy5wcm9qZWN0aW9uPy5qb2luKCcsJykgfSksIHsgJ0Rpc2FibGUtQ2FjaGUnOiAnWWVzJyB9KS5waXBlKFxyXG5cdFx0XHRcdG1hcCh4ID0+IE9iamVjdC5hc3NpZ24odGhpcy5uZXdJbnN0YW5jZSgpLCB4KSksXHJcblx0XHRcdFx0dGFwKHggPT4ge1xyXG5cdFx0XHRcdFx0LyogU2V0IHRoZSBsb2FkZWQgaXRlbSAqL1xyXG5cdFx0XHRcdFx0dGhpcy5pdGVtID0gT2JqZWN0LmFzc2lnbih0aGlzLm5ld0luc3RhbmNlKCksIDxURW50aXR5PngpO1xyXG5cclxuXHRcdFx0XHRcdC8qIEJ1aWxkIHRoZSBmb3JtICovXHJcblx0XHRcdFx0XHR0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuXHRcdFx0XHRcdC8qIFRyaWdnZXIgZXZlbnQgYWZ0ZXJJdGVtTG9hZGVkICovXHJcblx0XHRcdFx0XHR0aGlzLm9uQWZ0ZXJJdGVtTG9hZGVkKCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmVzIGRhdGEgaW50byBkYXRhYmFzZS5cclxuXHQgKiBAcGFyYW0gYWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNhdmUoYWN0aW9uOiBTYXZlQWN0aW9uID0gU2F2ZUFjdGlvbi5TYXZlQW5kQ2xvc2UsIGZvcm0/OiBOZ0Zvcm0gfCBGb3JtR3JvdXApOiB2b2lkIHtcclxuXHRcdC8qIFZhbGlkYXRlIHRoZSBmb3JtICovXHJcblx0XHR0aGlzLnZhbGlkYXRlRm9ybShmb3JtKTtcclxuXHJcblx0XHQvKiBDaGVjayBpZiB0aGUgZm9ybSBpcyB2YWxpZCAqL1xyXG5cdFx0Zm9ybSA9IHRoaXMuZm9ybSB8fCBmb3JtO1xyXG5cdFx0aWYgKGZvcm0gJiYgIXRoaXMuaXNGb3JtVmFsaWQoZm9ybSkpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIElmIHdlJ3JhIGluIGVkaXQgbW9kZSwgdXBkYXRlIHRoZSByZWNvcmQgKi9cclxuXHRcdGlmICh0aGlzLmlzRWRpdE1vZGUpIHtcclxuXHRcdFx0LyogVGhlIGRhdGEgaGFzIG5vdCBjaGFuZ2VkPyAqL1xyXG5cdFx0XHRpZiAoZm9ybSAmJiBmb3JtLnByaXN0aW5lKSB7XHJcblx0XHRcdFx0dGhpcy5vbkFmdGVyU3VibWl0KGFjdGlvbik7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBIGZsYWcgdG8gcHJldmVudCBzZW5kaW5nIHRoZSBmb3JtIHR3aWNlICovXHJcblx0XHRcdHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuXHRcdFx0LyogU2VuZCB0aGUgZGF0YSB0byB0aGUgc2VydmVyICovXHJcblx0XHRcdHRoaXMudXBkYXRlKHsgcGFyYW1zOiBVdGlscy50b0h0dHBQYXJhbXMoeyBpbmNsdWRlczogdGhpcy51cGRhdGVJbmNsdWRlcyB9KSB9KS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0LyogQXBwbHkgc2F2ZWQgZGF0YSB0byB0aGUgZm9ybSAqL1xyXG5cdFx0XHRcdFx0dGhpcy5vbkFmdGVyU3VibWl0KGFjdGlvbiwgcmVzcG9uc2UpO1xyXG5cclxuXHRcdFx0XHRcdC8qIElmIHRoZSB1c2VyIGNsaWNrcyAnYXBwbHknIHJlbG9hZCB0aGUgcGFnZSAqL1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbiA9PSBTYXZlQWN0aW9uLlNhdmVBbmRFZGl0KSB7XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLnJlbG9hZC5vYnNlcnZlZCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucmVsb2FkLmVtaXQodGhpcy5mb3JtVmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucmVsb2FkUGFnZSgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLnBhcnNlRXJyb3JzKGVycm9yKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBPdGhlcndpc2UsIGNyZWF0ZSBhIG5ldyBvbmUgKi9cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHQvKiBBIGZsYWcgdG8gcHJldmVudCBzZW5kaW5nIHRoZSBmb3JtIHR3aWNlICovXHJcblx0XHRcdHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuXHRcdFx0LyogU2VuZCB0aGUgZGF0YSB0byB0aGUgc2VydmVyICovXHJcblx0XHRcdHRoaXMuY3JlYXRlPFRFbnRpdHk+KCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuaWQgPSByZXNwb25zZT8uaWQ7XHJcblx0XHRcdFx0XHR0aGlzLm9uQWZ0ZXJTdWJtaXQoYWN0aW9uLCByZXNwb25zZSk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBjdHIgPSBmb3JtIS5jb250cm9sc1trZXldO1xyXG5cdFx0XHRcdFx0XHRcdGN0ci5tYXJrQXNQcmlzdGluZSgpO1xyXG5cdFx0XHRcdFx0XHRcdGN0ci5tYXJrQXNVbnRvdWNoZWQoKTtcclxuXHRcdFx0XHRcdFx0XHRjdHIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMucGFyc2VFcnJvcnMoZXJyb3IpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmVzIGRhdGEgYW5kIG5hdmlnYXRlcyB0byBlZGl0IHZpZXdcclxuXHQgKi9cclxuXHRwdWJsaWMgYXBwbHkoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNhdmUoU2F2ZUFjdGlvbi5TYXZlQW5kRWRpdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIHRoZSBjdXJyZW50IHJlY29yZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zaG93RGVsZXRlSXRlbURpYWxvZygpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdGlmIChhY2NlcHQgJiYgdGhpcy5pZCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGUodGhpcy5pZCEsIHVuZGVmaW5lZCwgeyBoZWFkZXJzOiB0aGlzLnRvSHR0cEhlYWRlcnMoeyAnU2hvdy1NZXNzYWdlJzogJ3llcycgfSkgfSlcclxuXHRcdFx0XHRcdC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmJhY2soKTtcclxuXHRcdFx0XHRcdH0sIGVycm9yID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5kZWJ1ZyhlcnJvcik7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbml0cyB0aGUgZm9ybVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbml0KCk6IHZvaWQge1xyXG5cdFx0LyogR2V0IHRoZSBlbnRpdHkgSUQgZnJvbSB0aGUgcXVlcnkgKi9cclxuXHRcdGlmICghdGhpcy5pZCAmJiAhdGhpcy5pdGVtKSB7XHJcblx0XHRcdC8qIEFzc2lnbiBxdWVyeSBwYXJhbXMgaW50byBxdWVyeSBvYmplY3QgKi9cclxuXHRcdFx0bGV0IGlnbm9yZWRQYXJhbXM6IHN0cmluZ1tdID0gWydpZCcsICdyZXR1cm51cmwnLCAncGFuZWxJZCddO1xyXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMucXVlcnksXHJcblx0XHRcdFx0dGhpcy5zYW5pdGl6ZU9iamVjdCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcyB8fCB7fSwgLi4uaWdub3JlZFBhcmFtcyksXHJcblx0XHRcdFx0dGhpcy5zYW5pdGl6ZU9iamVjdCh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGE/LnF1ZXJ5IHx8IHt9LCAuLi5pZ25vcmVkUGFyYW1zKSxcclxuXHRcdFx0XHR0aGlzLnNhbml0aXplT2JqZWN0KHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfHwge30sIC4uLmlnbm9yZWRQYXJhbXMpXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHQvKiBHZXQgaWQgZnJvbSB0aGUgdXJsICovXHJcblx0XHRcdGxldCBpZCA9IDxhbnk+dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XHJcblx0XHRcdGlmIChpZCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLmlkID0gaWQ7XHJcblx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuaWQgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdD8uZGF0YT8uaWQpIHtcclxuXHRcdFx0XHR0aGlzLmlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8uZGF0YT8uaWQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMub25BZnRlclNldElkKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBURW50aXR5ICovXHJcblx0XHRpZiAoIXRoaXMuaXNFZGl0TW9kZSAmJiAhdGhpcy5mb3JtKSB7XHJcblx0XHRcdHRoaXMuaXRlbSA9IE9iamVjdC5hc3NpZ24odGhpcy5uZXdJbnN0YW5jZSgpLCB0aGlzLml0ZW0gfHwge30sIHRoaXMucXVlcnkgfHwge30pO1xyXG5cdFx0XHR0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBwYW5lbCBJRCBmcm9tIHF1ZXJ5ICovXHJcblx0XHR0aGlzLnN1YnRpdGxlIHx8PSB0aGlzLnJvdXRlLnNuYXBzaG90Py5kYXRhPy5zdWJ0aXRsZTtcclxuXHJcblx0XHQvKiBBZGQgbGlzdCBtbmV1IGl0ZW1zICovXHJcblx0XHR0aGlzLmFkZFRvb2xiYXJNZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJ1aWxkcyB0aGUgZm9ybSBmaWVsZHNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYnVpbGRGaWVsZHMoKTogdm9pZCB7XHJcblx0XHQvKiBHZXQgZm9ybSBkZWZpbml0aW9uICovXHJcblx0XHR0aGlzLmZvcm1EZWZpbml0aW9uID0gZ2V0Rm9ybURlZmluaXRpb24odGhpcy5uZXdJbnN0YW5jZSgpKTtcclxuXHJcblx0XHQvKiBTZXQgaW5jbHVkZXMgZnJvbSBmb3JtIGRlZmluaXRpb24sIGlmIGFueSAqL1xyXG5cdFx0dGhpcy5mb3JtRGVmaW5pdGlvbj8uaW5jbHVkZXM/LmZvckVhY2goeCA9PiB0aGlzLmluY2x1ZGUoeC5lbnRpdHksIHgudXBkYXRlKSk7XHJcblxyXG5cdFx0LyogQWRkIHRvb2xiYXIgbWVudSBpdGVtcywgaWYgYW55ICovXHJcblx0XHRpZiAodGhpcy5mb3JtRGVmaW5pdGlvbj8udG9vbGJhck1lbnVJdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcyA/Pz0gW107XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcyA9IHRoaXMudG9vbGJhck1lbnVJdGVtcy5jb25jYXQoLi4udGhpcy5mb3JtRGVmaW5pdGlvbj8udG9vbGJhck1lbnVJdGVtcyk7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5mb3JFYWNoKCh4LCBpKSA9PiB4LmluZGV4ID8/PSBpKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDcmVhdGUgdGhlIGZyb20gZmllbGRzIHVzaW5nIHRoZSBlbnRpdHkgdHlwZSAqL1xyXG5cdFx0dGhpcy5maWVsZEdyb3VwcyA9IHRoaXMuZm9ybURlZmluaXRpb24/LmZpZWxkR3JvdXBzO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQnVpbGRzIGEgbmV3IGZvcm1cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYnVpbGRGb3JtKCk6IHZvaWQgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFZhbGlkYXRlcyB0aGUgZm9ybVxyXG5cdCAqIEBwYXJhbSBmb3JtIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB2YWxpZGF0ZUZvcm0oZm9ybT86IE5nRm9ybSB8IEZvcm1Hcm91cCk6IHZvaWQge1xyXG5cdFx0dmFyIGZvcm0gPSBmb3JtIHx8IHRoaXMuZm9ybTtcclxuXHJcblx0XHQvKiBTZXQgdGhlIGZvcm0gYXMgc3VibWl0dGVkICovXHJcblx0XHRpZiAoZm9ybSAmJiBmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcblx0XHRcdC8qIFNldCBmb3JtIGFzIHN1Ym1pdHRlZCAqL1xyXG5cdFx0XHQoZm9ybSBhcyBhbnkpWydzdWJtaXR0ZWQnXSA9IHRydWU7XHJcblxyXG5cdFx0XHQvKiBVcGRhdGUgdmFsdWUgYW5kIHZhbGlkaXR5ICovXHJcblx0XHRcdGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFByaW50IHNvbWUgZGVidWcgaW5mb3JtYXRpb24gKi9cclxuXHRcdHRoaXMuZGVidWdGb3JtKGZvcm0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVmFsaWRhdGVzIHRoZSBmb3JtXHJcblx0ICogQHBhcmFtIGZvcm0gXHJcblx0ICovXHJcblx0cHVibGljIGlzRm9ybVZhbGlkKGZvcm0/OiBOZ0Zvcm0gfCBGb3JtR3JvdXApOiBib29sZWFuIHtcclxuXHRcdC8qIFByaW50IHNvbWUgZGVidWcgaW5mb3JtYXRpb24gKi9cclxuXHRcdHRoaXMuZGVidWdGb3JtKGZvcm0pO1xyXG5cclxuXHRcdC8qIElmIHRoZSBmb3JtIGlzdCBub3QgdmFsaWQuLiAqL1xyXG5cdFx0aWYgKGZvcm0gJiYgIWZvcm0udmFsaWQpIHtcclxuXHRcdFx0LyogTWFyayBpbnZhbGlkIGNvbnRyb2xzIGFzIGRpcnR0eSBhbmQgdG91Y2hlZCAqL1xyXG5cdFx0XHRPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKVxyXG5cdFx0XHRcdC5maWx0ZXIoeCA9PiAhZm9ybS5jb250cm9sc1t4XS52YWxpZClcclxuXHRcdFx0XHQuZm9yRWFjaChrZXkgPT4gdGhpcy5pbnZhbGlkYXRlQ29udHJvbChmb3JtLmNvbnRyb2xzW2tleV0pKTtcclxuXHJcblx0XHRcdC8qIFNob3cgZXJyb3IgbWVzc2FnZXMgKi9cclxuXHRcdFx0KGFzeW5jICgpID0+IHtcclxuXHRcdFx0XHQvKiBXYWl0IHVudGlsICdtYXQtZXJyb3InIGRpc3BsYXllZCAqL1xyXG5cdFx0XHRcdGF3YWl0IG5ldyBQcm9taXNlKHkgPT4gc2V0VGltZW91dCh5LCAyMDApKTtcclxuXHJcblx0XHRcdFx0LyogUGFyc2UgdGhlIGVycm9yIG1lc3NhZ2VzICovXHJcblx0XHRcdFx0dmFyIGVycm9ycyA9IEFycmF5PHN0cmluZz4oKTtcclxuXHRcdFx0XHRPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKVxyXG5cdFx0XHRcdFx0LmZpbHRlcih4ID0+ICFmb3JtLmNvbnRyb2xzW3hdLnZhbGlkKVxyXG5cdFx0XHRcdFx0LmZvckVhY2goa2V5ID0+IHtcclxuXHRcdFx0XHRcdFx0LyogR2V0IGVycm9yIHRleHQgKi9cclxuXHRcdFx0XHRcdFx0dmFyIGVycm9yID0gdGhpcy5nZXRFbGVtZW50RXJyb3IoKGZvcm0uY29udHJvbHNba2V5XSBhcyBhbnkpPy5uYXRpdmVFbGVtZW50KTtcclxuXHRcdFx0XHRcdFx0aWYgKGVycm9yKSB7XHJcblx0XHRcdFx0XHRcdFx0ZXJyb3JzLnB1c2goZXJyb3IpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0LyogQnVpbGQgZXJyb3IgbWVzc2FnZSAqL1xyXG5cdFx0XHRcdHZhciBtZXNzYWdlID0gZXJyb3JzLmxlbmd0aCA/IGVycm9ycy5zbGljZSgwLCAzKS5qb2luKCdcXG4nKSA6ICRsb2NhbGl6ZWA6QEBzbmFja2Jhci5lcnJvci5yZXF1aXJlZC1maWVsZHM6QWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIHJlcXVpcmVkLmA7XHJcblxyXG5cdFx0XHRcdC8qIHNob3cgYSBub3RpY2UgKi9cclxuXHRcdFx0XHR0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKG1lc3NhZ2UsICdPaycsIHsgZHVyYXRpb246IDMwMDAsIHBhbmVsQ2xhc3M6IFsnZXJyb3InXSB9KTtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH0pKCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNldHMgZm9ybSBjb250cm9sc1xyXG5cdCAqIEBwYXJhbSBmb3JtIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZXNldEZvcm0oZm9ybTogTmdGb3JtKTogdm9pZCB7XHJcblx0XHRpZiAoIWZvcm0pIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuXHRcdFx0bGV0IGN0ciA9IGZvcm0uY29udHJvbHNba2V5XTtcclxuXHRcdFx0Y3RyLm1hcmtBc1ByaXN0aW5lKCk7XHJcblx0XHRcdGN0ci5tYXJrQXNVbnRvdWNoZWQoKTtcclxuXHRcdFx0Y3RyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW52YWxpZGF0ZSBjb250cm9scyByZWN1cnNpdmVseVxyXG5cdCAqIEBwYXJhbSBjb250cm9sIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbnZhbGlkYXRlQ29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcclxuXHRcdC8qIENoZWNrIHRoZSBjb250cm9sIGFnYWluc3QgbnVsbCAqL1xyXG5cdFx0aWYgKCFjb250cm9sKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDaGVjayBpZiB0aGUgY29udHJvbCBpcyBhIGdyb3VwICovXHJcblx0XHRsZXQgZm9ybUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXA7XHJcblx0XHRpZiAoZm9ybUdyb3VwPy5jb250cm9scykge1xyXG5cdFx0XHRPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpXHJcblx0XHRcdFx0LmZpbHRlcih4ID0+ICFmb3JtR3JvdXAuY29udHJvbHNbeF0udmFsaWQpXHJcblx0XHRcdFx0LmZvckVhY2goeCA9PiB0aGlzLmludmFsaWRhdGVDb250cm9sKGZvcm1Hcm91cC5jb250cm9sc1t4XSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0XHRjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIGZvcm0gZXJyb3JzXHJcblx0ICogQHBhcmFtIGZvcm0gXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGRlYnVnRm9ybShmb3JtPzogTmdGb3JtIHwgRm9ybUdyb3VwKTogdm9pZCB7XHJcblx0XHRpZiAoZm9ybSAmJiB0aGlzLmRlYnVnKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdGb3JtOicsIGZvcm0pO1xyXG5cdFx0XHRPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgY29udHJvbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBmb3JtLmNvbnRyb2xzW2tleV0uZXJyb3JzO1xyXG5cdFx0XHRcdGlmIChjb250cm9sRXJyb3JzICE9IG51bGwpIHtcclxuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpLmZvckVhY2goa2V5RXJyb3IgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnS2V5IGNvbnRyb2w6ICcgKyBrZXkgKyAnLCBrZXlFcnJvcjogJyArIGtleUVycm9yICsgJywgZXJyIHZhbHVlOiAnLCBjb250cm9sRXJyb3JzW2tleUVycm9yXSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHRvb2xiYXIgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRUb29sYmFyTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0LyogQWRkICdEZWxldGUnIG1lbnUgaXRlbSAqL1xyXG5cdFx0aWYgKHRoaXMuZGVsZXRhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0XHRcdGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtb3JhbmdlLTgwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6ICgpID0+IHRoaXMuZGVsZXRlKCksXHJcblx0XHRcdFx0ZGlzYWJsZTogKCkgPT4gIXRoaXMuaWQsXHJcblx0XHRcdFx0aGlkZTogKCkgPT4gIXRoaXMuY2FuRGVsZXRlKCksXHJcblx0XHRcdFx0aW5kZXg6IDEwMDBcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMudG9vbGJhck1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0LyogU29ydCB0aGUgbWVudSBpdGVtcyBieSBpbmRleCAqL1xyXG5cdFx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy50b29sYmFyTWVudUl0ZW1zLCAnaW5kZXgnKTtcclxuXHJcblx0XHRcdC8qIEFkZCB0aGUgdG9vbGJhciBtZW51IGl0ZW1zIHRvIHRoZSB0aGUgdG9vbGJhciBhY3Rpb25zICovXHJcblx0XHRcdHRoaXMudG9vbGJhckFjdGlvbnMucHVzaCh7IGljb246ICdtb3JlX3ZlcnQnLCBpdGVtczogdGhpcy50b29sYmFyTWVudUl0ZW1zIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9hZHMgdGhlIHByZXZpb3VzIFVSTCBpbiB0aGUgaGlzdG9yeSBsaXN0LlxyXG5cdCAqIEBwYXJhbSBhY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgYmFjayhhY3Rpb246IFNhdmVBY3Rpb24gPSBTYXZlQWN0aW9uLlNhdmVBbmRDbG9zZSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMucmVsb2FkLm9ic2VydmVkKSB7XHJcblx0XHRcdHRoaXMucmVsb2FkLmVtaXQodGhpcy5mb3JtVmFsdWUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKGFjdGlvbiA9PSBTYXZlQWN0aW9uLlNhdmVBbmRDbG9zZSAmJiB0aGlzLnJldHVyblVybCkge1xyXG5cdFx0XHRcdHRoaXMubmF2aWdhdGVUb1JldHVyblVybCgpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzRWRpdE1vZGUpIHtcclxuXHRcdFx0XHRcdGlmIChhY3Rpb24gPT0gU2F2ZUFjdGlvbi5TYXZlQW5kQ2xvc2UpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbiA9PSBTYXZlQWN0aW9uLlNhdmVBbmRFZGl0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVsb2FkUGFnZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoYWN0aW9uID09IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24gPT0gU2F2ZUFjdGlvbi5TYXZlQW5kRWRpdCAmJiA8bnVtYmVyPnRoaXMuaWQgPiAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtgJHt0aGlzLmFkZFNhdmVBbmRFZGl0Um91dGV9JHt0aGlzLmlkfWBdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbiA9PSBTYXZlQWN0aW9uLlNhdmVBbmROZXcpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5hZnRlclJlbG9hZCgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyByZXR1cm4gdXJsXHJcblx0ICogQHBhcmFtIHJldHVyblVybCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2V0UmV0dXJuVXJsKHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRzdXBlci5zZXRSZXR1cm5VcmwocmV0dXJuVXJsKTtcclxuXHRcdHRoaXMubGlzdFJvdXRlID0gdGhpcy5yZXR1cm5VcmwgfHwgdGhpcy5saXN0Um91dGU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBURW50aXR5XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5ld0luc3RhbmNlKGluaXQ/OiBQYXJ0aWFsPFRFbnRpdHk+KTogVEVudGl0eSB7XHJcblx0XHRyZXR1cm4gbmV3IHRoaXMuZW50aXR5Q3Rvcihpbml0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBodHRwT3B0aW9ucyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY3JlYXRlPFRFbnRpdHk+KGh0dHBPcHRpb25zPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxURW50aXR5PiB7XHJcblx0XHR0aGlzLm9uQmVmb3JlQ3JlYXRlKCk7XHJcblx0XHRyZXR1cm4gdGhpcy5zZXJ2aWNlLmNyZWF0ZTxURW50aXR5PihcclxuXHRcdFx0dGhpcy5mb3JtVmFsdWUsXHJcblx0XHRcdHVuZGVmaW5lZCxcclxuXHRcdFx0T2JqZWN0LmFzc2lnbihodHRwT3B0aW9ucyB8fCB7fSwgeyBoZWFkZXJzOiB0aGlzLnRvSHR0cEhlYWRlcnMoeyAnU2hvdy1NZXNzYWdlJzogJ3llcycgfSkgfSksXHJcblx0XHRcdGZhbHNlXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGh0dHBPcHRpb25zIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB1cGRhdGUoaHR0cE9wdGlvbnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPFRFbnRpdHk+IHtcclxuXHRcdHRoaXMub25CZWZvcmVVcGRhdGUoKTtcclxuXHRcdHJldHVybiB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMuaWQhLFxyXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMuaXRlbSEsIHRoaXMuZm9ybVZhbHVlKSxcclxuXHRcdFx0dW5kZWZpbmVkLFxyXG5cdFx0XHRPYmplY3QuYXNzaWduKGh0dHBPcHRpb25zIHx8IHt9LCB7IGhlYWRlcnM6IHRoaXMudG9IdHRwSGVhZGVycyh7ICdTaG93LU1lc3NhZ2UnOiAneWVzJyB9KSwgfSksXHJcblx0XHRcdGZhbHNlXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBpbmMgXHJcblx0ICogQHBhcmFtIHVwZGF0ZSBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5jbHVkZShpbmM6IHN0cmluZywgdXBkYXRlOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHRcdHRoaXMuaW5jbHVkZXMucHVzaChpbmMpO1xyXG5cdFx0aWYgKHVwZGF0ZSkge1xyXG5cdFx0XHR0aGlzLnVwZGF0ZUluY2x1ZGVzLnB1c2goaW5jKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGRlbGV0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5EZWxldGUoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5pdGVtPy5oYXNPd25Qcm9wZXJ0eSgnZGVsZXRhYmxlJykgfHwgKHRoaXMuaXRlbSBhcyBhbnkpWydkZWxldGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlkIGlzIHNldC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlclNldElkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuaWQpIHtcclxuXHRcdFx0dGhpcy5sb2FkSXRlbSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBzdGVwIGhhcyBjaGFuZ2VkLlxyXG5cdCAqIEBwYXJhbSAkZXZlbnQgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJTdGVwQ2hhbmdlKCRldmVudDogU3RlcHBlclNlbGVjdGlvbkV2ZW50KTogdm9pZCB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdHkgaGFzIGJlZW4gbG9hZGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbUxvYWRlZCgpOiB2b2lkIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIGJlZm9yZSB0aGUgZm9ybSBoYXMgYnVpbHQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQmVmb3JlRm9ybUJ1aWxkKCk6IHZvaWQgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBoYXMgYnVpbHQuXHJcblx0ICogRGlzYWJsZXMgdGhlIGZvcm0gY29udHJvbHMsIGlmIFtkaXNhYmxlXSBpcyB0cnVlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJGb3JtQnVpbGQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5mb3JtICYmIHRoaXMuZGlzYWJsZWQpIHtcclxuXHRcdFx0T2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcblx0XHRcdFx0bGV0IGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybSEuY29udHJvbHNba2V5XTtcclxuXHRcdFx0XHRjb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVudGl0eSBoYXMgYmVlbiBjcmVhdGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkJlZm9yZUNyZWF0ZSgpOiB2b2lkIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVudGl0eSBoYXMgYmVlbiB1cGRhdGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkJlZm9yZVVwZGF0ZSgpOiB2b2lkIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgYmVmb3JlIGRhdGEgc3VibWl0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGJlZm9yZVN1Ym1pdChfOiBTYXZlQWN0aW9uID0gU2F2ZUFjdGlvbi5TYXZlQW5kQ2xvc2UpOiB2b2lkIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIGFmdGVyIGRhdGEgc3VibWl0aW9uXHJcblx0ICogQHBhcmFtIGFjdGlvbiBcclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJTdWJtaXQoYWN0aW9uOiBTYXZlQWN0aW9uID0gU2F2ZUFjdGlvbi5TYXZlQW5kQ2xvc2UsIHJlc3BvbnNlOiBhbnkgPSBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdHRoaXMuYmFjayhhY3Rpb24pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIGFmdGVyIHBhZ2UgcmVsb2FkZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYWZ0ZXJSZWxvYWQoKTogdm9pZCB7XHJcblx0XHR0aGlzLml0ZW0gPSBPYmplY3QuYXNzaWduKHRoaXMubmV3SW5zdGFuY2UoKSwgdGhpcy5xdWVyeSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGZvY3VzIHRvIGZpcnN0IGlucHV0XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGZvY3VzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuaW5wdXQgJiYgdGhpcy5pbnB1dC5maXJzdCAmJiB0aGlzLmlucHV0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuXHRcdFx0dGhpcy5pbnB1dC5maXJzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGVsZW1lbnQgZXJyb3JcclxuXHQgKiBAcGFyYW0gbmF0aXZlRWxlbWVudCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0RWxlbWVudEVycm9yKG5hdGl2ZUVsZW1lbnQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcblx0XHQvKiBHZXQgcGFyYW5ldCBlbGVtZW50ICdtYXQtZm9ybS1maWVsZCcgKi9cclxuXHRcdHZhciBtYXRGb3JtRmllbGQgPSBuYXRpdmVFbGVtZW50Py5jbG9zZXN0KCcubWF0LWZvcm0tZmllbGQnKTtcclxuXHRcdGlmICghbWF0Rm9ybUZpZWxkKSB7XHJcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogR2V0IGNoaWxkIGVsZW1lbnQgJ21hdC1lcnJvcicgKi9cclxuXHRcdHZhciBtYXRFcnJvcnMgPSBtYXRGb3JtRmllbGQucXVlcnlTZWxlY3RvckFsbCgnLm1hdC1lcnJvcicpO1xyXG5cdFx0aWYgKCFtYXRFcnJvcnMpIHtcclxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBHZXQgY2hpbGQgZWxlbWVudCAnbWF0LWxhYmVsJyAqL1xyXG5cdFx0dmFyIG1hdExhYmVsID0gbWF0Rm9ybUZpZWxkLnF1ZXJ5U2VsZWN0b3IoJ21hdC1sYWJlbCcpO1xyXG5cdFx0aWYgKCFtYXRMYWJlbCkge1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEdldCBlcnJvciB0ZXh0cyAqL1xyXG5cdFx0dmFyIGVycm9yc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobWF0RXJyb3JzKVxyXG5cdFx0XHQ/LmZpbHRlcigoeDogYW55KSA9PiB4LnRleHRDb250ZW50KVxyXG5cdFx0XHQ/Lm1hcCgoeDogYW55KSA9PiB4LnRleHRDb250ZW50KTtcclxuXHJcblx0XHRyZXR1cm4gYCcke21hdExhYmVsLnRleHRDb250ZW50fSc6ICR7ZXJyb3JzQXJyYXk/LmpvaW4oJywgJyl9YDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlc3BvbmRzIHRvIHVzZXItaW5pdGlhdGVkIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuXHRoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0Y2FzZSAncyc6XHJcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5zYXZlKFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHRjYXNlICdkJzpcclxuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHR0aGlzLnNhdmUoU2F2ZUFjdGlvbi5TYXZlQW5kTmV3KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHRjYXNlICdlJzpcclxuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHR0aGlzLnNhdmUoU2F2ZUFjdGlvbi5TYXZlQW5kRWRpdCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIENhbmNlbCB0aGUgZm9ybSwgaWYgdGhlIHVzZXIgcHJlc3MgdGhlIEVTQyBrZXkgKi9cclxuXHRcdGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7XHJcblx0XHRcdHRoaXMuYmFjaygpO1xyXG5cdFx0fVxyXG5cdH1cclxufSJdfQ==
772
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvYmFzZS9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBbUIsU0FBUyxFQUE0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFFakQsV0FBVztBQUVYLE1BQU0sT0FBZ0Isd0JBQTRGLFNBQVEsYUFBYTtJQW9POUg7SUFDRztJQUNBO0lBQ0E7SUF0T1g7O09BRUc7SUFDSSxNQUFNLEdBQVcsS0FBSyxDQUFDO0lBRTlCOztPQUVHO0lBQ0ksVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVuQzs7T0FFRztJQUNJLFVBQVUsR0FBc0IsVUFBVSxDQUFDO0lBRWxEOztPQUVHO0lBQ0kscUJBQXFCLEdBQVcsUUFBUSxDQUFDO0lBQ3pDLG9CQUFvQixHQUFXLEtB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LElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNqQyxNQUFNO2dCQUVQLEtBQUssR0FBRztvQkFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2FBQ1A7U0FDRDtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNaO0lBQ0YsQ0FBQzswSEE5MUJvQix3QkFBd0I7OEdBQXhCLHdCQUF3QixnVUF3TGxDLFVBQVU7OzJGQXhMQSx3QkFBd0I7a0JBRDdDLFNBQVM7MkpBbUNFLEVBQUU7c0JBRFosS0FBSztnQkFlSSxLQUFLO3NCQURkLEtBQUs7Z0JBT0ssSUFBSTtzQkFEZCxLQUFLO2dCQW1CQyxRQUFRO3NCQURkLEtBQUs7Z0JBWUMsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFxRkksVUFBVTtzQkFEbkIsU0FBUzt1QkFBQyxVQUFVO2dCQU9kLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPO2dCQVlWLElBQUk7c0JBRGQsS0FBSztnQkE2bkJOLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHknO1xyXG5pbXBvcnQgeyBTYXZlQWN0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9zYXZlLWFjdGlvbic7XHJcbmltcG9ydCB7IGdldEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZm9ybXMvbW9kZWxzL2Zvcm0tZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Zvcm1zL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWdlbmVyaWMtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHksIFRTZXJ2aWNlIGV4dGVuZHMgR2VuZXJpY1NlcnZpY2U8VEVudGl0eT4+IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4sIE9uQ2hhbmdlcyB7XHJcblx0LyoqXHJcblx0ICogVGhlIGFjdGlvbiBvZiB0aGUgZm9ybSAoYWRkIHwgZWRpdClcclxuXHQgKi9cclxuXHRwdWJsaWMgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcclxuXHJcblx0LyoqXHJcblx0ICogQWN0aW9uID0gZWRpdD9cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlIGFjdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBTYXZlQWN0aW9uOiB0eXBlb2YgU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0U2F2ZUFuZENsb3NlUm91dGU6IHN0cmluZyA9ICcuLi8uLi8nO1xyXG5cdHB1YmxpYyBhZGRTYXZlQW5kQ2xvc2VSb3V0ZTogc3RyaW5nID0gJy4uLyc7XHJcblx0cHVibGljIGFkZFNhdmVBbmRFZGl0Um91dGU6IHN0cmluZyA9ICcuLi9lZGl0Lyc7XHJcblx0cHVibGljIGFkZFNhdmVBbmROZXdSb3V0ZTogc3RyaW5nID0gJy4uL2FkZCc7XHJcblx0cHVibGljIGxpc3RSb3V0ZTogc3RyaW5nID0gdGhpcy5hZGRTYXZlQW5kQ2xvc2VSb3V0ZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGlkIG9mIHRoZSBpdGVtIHRvIGxvYWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2lkPzogbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaWQgb2YgdGhlIGl0ZW0gdG8gbG9hZFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBpZCgpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faWQ7IH1cclxuXHRwdWJsaWMgc2V0IGlkKGlkOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLl9pZCAhPSBpZCkge1xyXG5cdFx0XHR0aGlzLl9pZCA9IGlkO1xyXG5cdFx0XHR0aGlzLmFjdGlvbiA9ICdlZGl0JztcclxuXHRcdFx0dGhpcy5pc0VkaXRNb2RlID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5saXN0Um91dGUgPSB0aGlzLmVkaXRTYXZlQW5kQ2xvc2VSb3V0ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBjdXJyZW50IGl0ZW0gdG8gYWRkIG9yIGVkaXRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHByb3RlY3RlZCBfaXRlbT86IFRFbnRpdHk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBjdXJyZW50IGl0ZW0gdG8gYWRkIG9yIGVkaXRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgaXRlbSgpOiBURW50aXR5IHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2l0ZW07IH07XHJcblx0cHVibGljIHNldCBpdGVtKGl0ZW06IFRFbnRpdHkgfCB1bmRlZmluZWQpIHtcclxuXHRcdGlmICh0aGlzLl9pdGVtICE9IGl0ZW0pIHtcclxuXHRcdFx0dGhpcy5faXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMuaWQgPz89IGl0ZW0/LmlkO1xyXG5cdFx0XHR0aGlzLmJ1aWxkRmllbGRzKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIHRoZSByZXF1ZXN0IGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlcnJvcnM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJbmNsdWRlc1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGluY2x1ZGVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGUgaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBkYXRlSW5jbHVkZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb2plY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwcm9qZWN0aW9uPzogc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBwYXJhbXNcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBxdWVyeTogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBjdXJyZW50IGRhdGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRlICYgdGltZSBtYXNrXHJcblx0ICovXHJcblx0cHVibGljIGRhdGVUaW1lTWFzayA9IFsvWzAtM10vLCAvWzAtOV0vLCAnLicsIC9bMC0xXS8sIC9bMC05XS8sICcuJywgMiwgMCwgL1sxLTJdLywgL1swLTldLywgJyAnLCAvWzAtMl0vLCAvWzAtOV0vLCAnOicsIC9bMC01XS8sIC9bMC05XS9dO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRlIG1hc2tcclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0ZU1hc2sgPSBbL1swLTNdLywgL1swLTldLywgJy4nLCAvWzAtMV0vLCAvWzAtOV0vLCAnLicsIDIsIDAsIC9bMS0yXS8sIC9bMC05XS9dO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaW1lIG1hc2tcclxuXHQgKi9cclxuXHRwdWJsaWMgdGltZU1hc2sgPSBbL1swLTJdLywgL1swLTldLywgJzonLCAvWzAtNV0vLCAvWzAtOV0vXTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBwYXR0ZXJuIHRvIHZhbGlkYXRlIGRhdGVzXHJcblx0ICovXHJcblx0cHVibGljIGRhdGVQYXR0ZXJuOiBzdHJpbmcgPSBgKD86KD86MzEoXFxcXC98LXxcXFxcLikoPzowP1sxMzU3OF18MVswMl0pKVxcXFwxfCg/Oig/OjI5fDMwKShcXFxcL3wtfFxcXFwuKSg/OjA/WzEsMy05XXwxWzAtMl0pXFxcXDIpKSg/Oig/OjFbNi05XXxbMi05XVxcXFxkKT9cXFxcZHsyfSkkfF4oPzoyOShcXFxcL3wtfFxcXFwuKTA/MlxcXFwzKD86KD86KD86MVs2LTldfFsyLTldXFxcXGQpPyg/OjBbNDhdfFsyNDY4XVswNDhdfFsxMzU3OV1bMjZdKXwoPzooPzoxNnxbMjQ2OF1bMDQ4XXxbMzU3OV1bMjZdKTAwKSkpKSR8Xig/OjA/WzEtOV18MVxcXFxkfDJbMC04XSkoXFxcXC98LXxcXFxcLikoPzooPzowP1sxLTldKXwoPzoxWzAtMl0pKVxcXFw0KD86KD86MVs2LTldfFsyLTldXFxcXGQpP1xcXFxkezJ9KWA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBob25lIHByZWZpeCB2YWxpZGF0aW9uIHBhdHRlcm5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGhvbmVQcmVmaXhQYXR0ZXJuOiBzdHJpbmcgPSAnXigwXFxcXGR7Miw2fSkkJztcclxuXHJcblx0LyoqXHJcblx0ICogUGhvbmUgbnVtYmVyIHZhbGlkYXRpb24gcGF0dGVyblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwaG9uZU51bWJlclBhdHRlcm46IHN0cmluZyA9ICdeKFxcXFxkezMsMzB9KSQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXNzd29yZCB2YWxpZGF0aW9uIHBhdHRlcm5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGFzc3dvcmRQYXR0ZXJuOiBzdHJpbmcgPSAnXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlxcXFxkKSg/PS4qWyRAJCElKj8mIy5dKVtBLVphLXpcXFxcZCRAJCElKj8mIy5dezYsfSc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlZmF1bHRzIG1vZHVsZXMgYW5kIHRvb2xiYXJcclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yT3B0aW9ucyA9IHtcclxuXHRcdG1vZHVsZXM6IHtcclxuXHRcdFx0dG9vbGJhcjogW1xyXG5cdFx0XHRcdFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJ10sXHJcblx0XHRcdFx0W3sgJ2xpc3QnOiAnb3JkZXJlZCcgfSwgeyAnbGlzdCc6ICdidWxsZXQnIH1dLFxyXG5cdFx0XHRcdFt7ICdpbmRlbnQnOiAnLTEnIH0sIHsgJ2luZGVudCc6ICcrMScgfV0sXHJcblx0XHRcdFx0W3sgJ3NpemUnOiBbJ3NtYWxsJywgZmFsc2UsICdsYXJnZScsICdodWdlJ10gfV0sXHJcblx0XHRcdFx0W3sgJ2hlYWRlcic6IFsxLCAyLCAzLCA0LCA1LCA2LCBmYWxzZV0gfV0sXHJcblx0XHRcdFx0W3sgJ2NvbG9yJzogbmV3IEFycmF5PGFueT4oKSB9LCB7ICdiYWNrZ3JvdW5kJzogbmV3IEFycmF5PGFueT4oKSB9XSxcclxuXHRcdFx0XHRbJ2xpbmsnLCAnaW1hZ2UnXVxyXG5cdFx0XHRdLFxyXG5cdFx0XHRjbGlwYm9hcmQ6IHtcclxuXHRcdFx0XHRtYXRjaFZpc3VhbDogZmFsc2VcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0RlbGV0ZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogVG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJNZW51SXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUb29sYmFyIGFjdGlvbiBidXR0b25zXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJBY3Rpb25zOiBBY3Rpb25JdGVtPFRFbnRpdHksIElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4+W10gPSBbe1xyXG5cdFx0aWNvbjogJ3N5bmMnLFxyXG5cdFx0ZXZlbnQ6ICgpID0+IHRoaXMucmVsb2FkUGFnZSgpLFxyXG5cdH1dO1xyXG5cclxuXHQvKipcclxuXHQgKiBNYXRTdGVwcGVyIHJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0U3RlcHBlcilcclxuXHRwcm90ZWN0ZWQgbWF0U3RlcHBlcj86IE1hdFN0ZXBwZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIHRoZSBpbnB1dCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbignZm9jdXMnKVxyXG5cdHB1YmxpYyBpbnB1dDogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBfZm9ybTogRm9ybUdyb3VwXHJcblx0ICovXHJcblx0cHVibGljIF9mb3JtPzogTmdGb3JtIHwgRm9ybUdyb3VwO1xyXG5cclxuXHQvKipcclxuXHQgKiBGb3JtIGdyb3VwXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGZvcm0oKTogTmdGb3JtIHwgRm9ybUdyb3VwIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2Zvcm0gfTtcclxuXHRwdWJsaWMgc2V0IGZvcm0oZm9ybTogTmdGb3JtIHwgRm9ybUdyb3VwIHwgdW5kZWZpbmVkKSB7XHJcblx0XHR0aGlzLl9mb3JtID0gZm9ybTtcclxuXHRcdHRoaXMub25BZnRlckZvcm1CdWlsZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBmb3JtIHZhbHVlXHJcblx0ICovXHJcblx0cHVibGljIGFic3RyYWN0IGdldCBmb3JtVmFsdWUoKTogVEVudGl0eSB8IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogZm9ybURlZmluaXRpb246IEZvcm1EZWZpbml0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGZvcm1EZWZpbml0aW9uPzogRm9ybURlZmluaXRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIGZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cFtdXHJcblx0ICovXHJcblx0cHVibGljIGZpZWxkR3JvdXBzPzogRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIHNlcnZpY2UgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgZW50aXR5Q3RvcjogVHlwZTxURW50aXR5PixcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihyb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdFx0dGhpcy5saXN0Um91dGUgPSB0aGlzLmFkZFNhdmVBbmRDbG9zZVJvdXRlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIGFmdGVyIHRoZSBjb25zdHJ1Y3RvciwgaW5pdGlhbGl6aW5nIGlucHV0IHByb3BlcnRpZXMsIFxyXG5cdCAqIGFuZCB0aGUgZmlyc3QgY2FsbCB0byBuZ09uQ2hhbmdlcy5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0XHR0aGlzLmluaXQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmhhbmRsZUV4cGFuc2lvblBhbmVsQ2hhbmdlcyA9IHRoaXMuaXNFZGl0TW9kZTtcclxuXHRcdHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuXHRcdC8qIFNldCBwYWdlIHRpdGxlICovXHJcblx0XHR0aGlzLnRpdGxlID0gdGhpcy50aXRsZVNlcnZpY2UuZ2V0VGl0bGUoKTtcclxuXHJcblx0XHQvKiBTZXQgZm9jdXMgKi9cclxuXHRcdHRoaXMuZm9jdXMoKTtcclxuXHJcblx0XHQvKiBcclxuXHRcdCAqIEZvcmNlIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgc2luY2UgY2hhbmdlIGRldGVjdGlvbnMgXHJcblx0XHQgKiBoYXZlIGZpbmlzaGVkIHdoZW4gYG5nQWZ0ZXJWaWV3SW5pdGAgaXMgZXhlY3V0ZWRcclxuXHRcdCAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG5cdFx0LyogTGlzdGVuIGZvciBzdGVwcGVyIHNlbGVjdGlvbiBjaGFuZ2VzICovXHJcblx0XHR0aGlzLm1hdFN0ZXBwZXI/LnNlbGVjdGlvbkNoYW5nZT8uc3Vic2NyaWJlKChldmVudDogU3RlcHBlclNlbGVjdGlvbkV2ZW50KSA9PiB0aGlzLm9uQWZ0ZXJTdGVwQ2hhbmdlKGV2ZW50KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgYmVmb3JlIGFueSBvdGhlciBsaWZlY3ljbGUgaG9vay4gVXNlIGl0IHRvIGluamVjdCBkZXBlbmRlbmNpZXMsIFxyXG5cdCAqIGJ1dCBhdm9pZCBhbnkgc2VyaW91cyB3b3JrIGhlcmUuXHJcblx0ICogQHBhcmFtIGNoYW5nZXMgXHJcblx0ICovXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQoY2hhbmdlcz8uaWQ/LmN1cnJlbnRWYWx1ZSAmJiBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmlkLnByZXZpb3VzVmFsdWUpIHx8XHJcblx0XHRcdChjaGFuZ2VzPy5pdGVtPy5jdXJyZW50VmFsdWUgJiYgY2hhbmdlcy5pdGVtLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZSlcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLmxvYWRJdGVtKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2FkcyBhbiBpdGVtIGJ5IElEXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRJdGVtKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuaXNFZGl0TW9kZSAmJiB0aGlzLnNlcnZpY2U/LmVuZHBvaW50KSB7XHJcblx0XHRcdHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdHRoaXMubG9hZEl0ZW1Bc3luYygpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMuaXNMb2FkaW5nID0gZmFsc2UsXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4gdGhpcy5wYXJzZUVycm9ycyhlcnJvcilcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2FkcyBhbiBpdGVtIGJ5IElEIGFzeW5jbHlcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZEl0ZW1Bc3luYygpOiBPYnNlcnZhYmxlPFRFbnRpdHk+IHtcclxuXHRcdGlmICh0aGlzLmlkKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0KHRoaXMuaWQsIE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSB8fCB7fSwgeyBpbmNsdWRlczogdGhpcy5pbmNsdWRlcz8ubGVuZ3RoID8gdGhpcy5pbmNsdWRlcyA6IHRoaXMudXBkYXRlSW5jbHVkZXMsIHByb2plY3Rpb246IHRoaXMucHJvamVjdGlvbj8uam9pbignLCcpIH0pLCB7ICdEaXNhYmxlLUNhY2hlJzogJ1llcycgfSkucGlwZShcclxuXHRcdFx0XHRtYXAoeCA9PiBPYmplY3QuYXNzaWduKHRoaXMubmV3SW5zdGFuY2UoKSwgeCkpLFxyXG5cdFx0XHRcdHRhcCh4ID0+IHtcclxuXHRcdFx0XHRcdC8qIFNldCB0aGUgbG9hZGVkIGl0ZW0gKi9cclxuXHRcdFx0XHRcdHRoaXMuaXRlbSA9IE9iamVjdC5hc3NpZ24odGhpcy5uZXdJbnN0YW5jZSgpLCA8VEVudGl0eT54KTtcclxuXHJcblx0XHRcdFx0XHQvKiBCdWlsZCB0aGUgZm9ybSAqL1xyXG5cdFx0XHRcdFx0dGhpcy5idWlsZEZvcm0oKTtcclxuXHJcblx0XHRcdFx0XHQvKiBUcmlnZ2VyIGV2ZW50IGFmdGVySXRlbUxvYWRlZCAqL1xyXG5cdFx0XHRcdFx0dGhpcy5vbkFmdGVySXRlbUxvYWRlZCgpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG5ldyBPYnNlcnZhYmxlKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyBkYXRhIGludG8gZGF0YWJhc2UuXHJcblx0ICogQHBhcmFtIGFjdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzYXZlKGFjdGlvbjogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlLCBmb3JtPzogTmdGb3JtIHwgRm9ybUdyb3VwKTogdm9pZCB7XHJcblx0XHQvKiBWYWxpZGF0ZSB0aGUgZm9ybSAqL1xyXG5cdFx0dGhpcy52YWxpZGF0ZUZvcm0oZm9ybSk7XHJcblxyXG5cdFx0LyogQ2hlY2sgaWYgdGhlIGZvcm0gaXMgdmFsaWQgKi9cclxuXHRcdGZvcm0gPSB0aGlzLmZvcm0gfHwgZm9ybTtcclxuXHRcdGlmIChmb3JtICYmICF0aGlzLmlzRm9ybVZhbGlkKGZvcm0pKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBJZiB3ZSdyYSBpbiBlZGl0IG1vZGUsIHVwZGF0ZSB0aGUgcmVjb3JkICovXHJcblx0XHRpZiAodGhpcy5pc0VkaXRNb2RlKSB7XHJcblx0XHRcdC8qIFRoZSBkYXRhIGhhcyBub3QgY2hhbmdlZD8gKi9cclxuXHRcdFx0aWYgKGZvcm0gJiYgZm9ybS5wcmlzdGluZSkge1xyXG5cdFx0XHRcdHRoaXMub25BZnRlclN1Ym1pdChhY3Rpb24pO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQSBmbGFnIHRvIHByZXZlbnQgc2VuZGluZyB0aGUgZm9ybSB0d2ljZSAqL1xyXG5cdFx0XHR0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuXHJcblx0XHRcdC8qIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLnVwZGF0ZSh7IHBhcmFtczogVXRpbHMudG9IdHRwUGFyYW1zKHsgaW5jbHVkZXM6IHRoaXMudXBkYXRlSW5jbHVkZXMgfSkgfSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHRcdC8qIEFwcGx5IHNhdmVkIGRhdGEgdG8gdGhlIGZvcm0gKi9cclxuXHRcdFx0XHRcdHRoaXMub25BZnRlclN1Ym1pdChhY3Rpb24sIHJlc3BvbnNlKTtcclxuXHJcblx0XHRcdFx0XHQvKiBJZiB0aGUgdXNlciBjbGlja3MgJ2FwcGx5JyByZWxvYWQgdGhlIHBhZ2UgKi9cclxuXHRcdFx0XHRcdGlmIChhY3Rpb24gPT0gU2F2ZUFjdGlvbi5TYXZlQW5kRWRpdCkge1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5yZWxvYWQub2JzZXJ2ZWQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJlbG9hZC5lbWl0KHRoaXMuZm9ybVZhbHVlKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJlbG9hZFBhZ2UoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4gdGhpcy5wYXJzZUVycm9ycyhlcnJvcilcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogT3RoZXJ3aXNlLCBjcmVhdGUgYSBuZXcgb25lICovXHJcblx0XHRlbHNlIHtcclxuXHRcdFx0LyogQSBmbGFnIHRvIHByZXZlbnQgc2VuZGluZyB0aGUgZm9ybSB0d2ljZSAqL1xyXG5cdFx0XHR0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuXHJcblx0XHRcdC8qIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLmNyZWF0ZTxURW50aXR5PigpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlkID0gcmVzcG9uc2U/LmlkO1xyXG5cdFx0XHRcdFx0dGhpcy5vbkFmdGVyU3VibWl0KGFjdGlvbiwgcmVzcG9uc2UpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChmb3JtKSB7XHJcblx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgY3RyID0gZm9ybSEuY29udHJvbHNba2V5XTtcclxuXHRcdFx0XHRcdFx0XHRjdHIubWFya0FzUHJpc3RpbmUoKTtcclxuXHRcdFx0XHRcdFx0XHRjdHIubWFya0FzVW50b3VjaGVkKCk7XHJcblx0XHRcdFx0XHRcdFx0Y3RyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLnBhcnNlRXJyb3JzKGVycm9yKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBEZXRlY3QgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyBkYXRhIGFuZCBuYXZpZ2F0ZXMgdG8gZWRpdCB2aWV3XHJcblx0ICovXHJcblx0cHVibGljIGFwcGx5KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zYXZlKFNhdmVBY3Rpb24uU2F2ZUFuZEVkaXQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyB0aGUgY3VycmVudCByZWNvcmQuXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2hvd0RlbGV0ZUl0ZW1EaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRpZiAoYWNjZXB0ICYmIHRoaXMuaWQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZGVsZXRlKHRoaXMuaWQhLCB1bmRlZmluZWQsIHsgaGVhZGVyczogdGhpcy50b0h0dHBIZWFkZXJzKHsgJ1Nob3ctTWVzc2FnZSc6ICd5ZXMnIH0pIH0pXHJcblx0XHRcdFx0XHQuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5iYWNrKCk7XHJcblx0XHRcdFx0XHR9LCBlcnJvciA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZGVidWcoZXJyb3IpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5pdHMgdGhlIGZvcm1cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEdldCB0aGUgZW50aXR5IElEIGZyb20gdGhlIHF1ZXJ5ICovXHJcblx0XHRpZiAoIXRoaXMuaWQgJiYgIXRoaXMuaXRlbSkge1xyXG5cdFx0XHQvKiBBc3NpZ24gcXVlcnkgcGFyYW1zIGludG8gcXVlcnkgb2JqZWN0ICovXHJcblx0XHRcdGxldCBpZ25vcmVkUGFyYW1zOiBzdHJpbmdbXSA9IFsnaWQnLCAncmV0dXJudXJsJywgJ3BhbmVsSWQnXTtcclxuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLnF1ZXJ5LFxyXG5cdFx0XHRcdHRoaXMuc2FuaXRpemVPYmplY3QodGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMgfHwge30sIC4uLmlnbm9yZWRQYXJhbXMpLFxyXG5cdFx0XHRcdHRoaXMuc2FuaXRpemVPYmplY3QodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhPy5xdWVyeSB8fCB7fSwgLi4uaWdub3JlZFBhcmFtcyksXHJcblx0XHRcdFx0dGhpcy5zYW5pdGl6ZU9iamVjdCh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIHx8IHt9LCAuLi5pZ25vcmVkUGFyYW1zKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0LyogR2V0IGlkIGZyb20gdGhlIHVybCAqL1xyXG5cdFx0XHRsZXQgaWQgPSA8YW55PnRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpO1xyXG5cdFx0XHRpZiAoaWQgPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5pZCA9IGlkO1xyXG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLmlkICYmIHRoaXMucm91dGUuc25hcHNob3Q/LmRhdGE/LmlkKSB7XHJcblx0XHRcdFx0dGhpcy5pZCA9IHRoaXMucm91dGUuc25hcHNob3Q/LmRhdGE/LmlkO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLm9uQWZ0ZXJTZXRJZCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVEVudGl0eSAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzRWRpdE1vZGUgJiYgIXRoaXMuZm9ybSkge1xyXG5cdFx0XHR0aGlzLml0ZW0gPSBPYmplY3QuYXNzaWduKHRoaXMubmV3SW5zdGFuY2UoKSwgdGhpcy5pdGVtIHx8IHt9LCB0aGlzLnF1ZXJ5IHx8IHt9KTtcclxuXHRcdFx0dGhpcy5idWlsZEZvcm0oKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgcGFuZWwgSUQgZnJvbSBxdWVyeSAqL1xyXG5cdFx0dGhpcy5zdWJ0aXRsZSB8fD0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8uZGF0YT8uc3VidGl0bGU7XHJcblxyXG5cdFx0LyogQWRkIGxpc3QgbW5ldSBpdGVtcyAqL1xyXG5cdFx0dGhpcy5hZGRUb29sYmFyTWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBCdWlsZHMgdGhlIGZvcm0gZmllbGRzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGJ1aWxkRmllbGRzKCk6IHZvaWQge1xyXG5cdFx0LyogR2V0IGZvcm0gZGVmaW5pdGlvbiAqL1xyXG5cdFx0dGhpcy5mb3JtRGVmaW5pdGlvbiA9IGdldEZvcm1EZWZpbml0aW9uKHRoaXMubmV3SW5zdGFuY2UoKSk7XHJcblxyXG5cdFx0LyogU2V0IGluY2x1ZGVzIGZyb20gZm9ybSBkZWZpbml0aW9uLCBpZiBhbnkgKi9cclxuXHRcdHRoaXMuZm9ybURlZmluaXRpb24/LmluY2x1ZGVzPy5mb3JFYWNoKHggPT4gdGhpcy5pbmNsdWRlKHguZW50aXR5LCB4LnVwZGF0ZSkpO1xyXG5cclxuXHRcdC8qIEFkZCB0b29sYmFyIG1lbnUgaXRlbXMsIGlmIGFueSAqL1xyXG5cdFx0aWYgKHRoaXMuZm9ybURlZmluaXRpb24/LnRvb2xiYXJNZW51SXRlbXM/Lmxlbmd0aCkge1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMgPz89IFtdO1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMgPSB0aGlzLnRvb2xiYXJNZW51SXRlbXMuY29uY2F0KC4uLnRoaXMuZm9ybURlZmluaXRpb24/LnRvb2xiYXJNZW51SXRlbXMpO1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMuZm9yRWFjaCgoeCwgaSkgPT4geC5pbmRleCA/Pz0gaSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ3JlYXRlIHRoZSBmcm9tIGZpZWxkcyB1c2luZyB0aGUgZW50aXR5IHR5cGUgKi9cclxuXHRcdHRoaXMuZmllbGRHcm91cHMgPSB0aGlzLmZvcm1EZWZpbml0aW9uPy5maWVsZEdyb3VwcztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJ1aWxkcyBhIG5ldyBmb3JtXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGJ1aWxkRm9ybSgpOiB2b2lkIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBWYWxpZGF0ZXMgdGhlIGZvcm1cclxuXHQgKiBAcGFyYW0gZm9ybSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdmFsaWRhdGVGb3JtKGZvcm0/OiBOZ0Zvcm0gfCBGb3JtR3JvdXApOiB2b2lkIHtcclxuXHRcdHZhciBmb3JtID0gZm9ybSB8fCB0aGlzLmZvcm07XHJcblxyXG5cdFx0LyogU2V0IHRoZSBmb3JtIGFzIHN1Ym1pdHRlZCAqL1xyXG5cdFx0aWYgKGZvcm0gJiYgZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG5cdFx0XHQvKiBTZXQgZm9ybSBhcyBzdWJtaXR0ZWQgKi9cclxuXHRcdFx0KGZvcm0gYXMgYW55KVsnc3VibWl0dGVkJ10gPSB0cnVlO1xyXG5cclxuXHRcdFx0LyogVXBkYXRlIHZhbHVlIGFuZCB2YWxpZGl0eSAqL1xyXG5cdFx0XHRmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBQcmludCBzb21lIGRlYnVnIGluZm9ybWF0aW9uICovXHJcblx0XHR0aGlzLmRlYnVnRm9ybShmb3JtKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFZhbGlkYXRlcyB0aGUgZm9ybVxyXG5cdCAqIEBwYXJhbSBmb3JtIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0Zvcm1WYWxpZChmb3JtPzogTmdGb3JtIHwgRm9ybUdyb3VwKTogYm9vbGVhbiB7XHJcblx0XHQvKiBQcmludCBzb21lIGRlYnVnIGluZm9ybWF0aW9uICovXHJcblx0XHR0aGlzLmRlYnVnRm9ybShmb3JtKTtcclxuXHJcblx0XHQvKiBJZiB0aGUgZm9ybSBpc3Qgbm90IHZhbGlkLi4gKi9cclxuXHRcdGlmIChmb3JtICYmICFmb3JtLnZhbGlkKSB7XHJcblx0XHRcdC8qIE1hcmsgaW52YWxpZCBjb250cm9scyBhcyBkaXJ0dHkgYW5kIHRvdWNoZWQgKi9cclxuXHRcdFx0T2JqZWN0LmtleXMoZm9ybS5jb250cm9scylcclxuXHRcdFx0XHQuZmlsdGVyKHggPT4gIWZvcm0uY29udHJvbHNbeF0udmFsaWQpXHJcblx0XHRcdFx0LmZvckVhY2goa2V5ID0+IHRoaXMuaW52YWxpZGF0ZUNvbnRyb2woZm9ybS5jb250cm9sc1trZXldKSk7XHJcblxyXG5cdFx0XHQvKiBTaG93IGVycm9yIG1lc3NhZ2VzICovXHJcblx0XHRcdChhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0LyogV2FpdCB1bnRpbCAnbWF0LWVycm9yJyBkaXNwbGF5ZWQgKi9cclxuXHRcdFx0XHRhd2FpdCBuZXcgUHJvbWlzZSh5ID0+IHNldFRpbWVvdXQoeSwgMjAwKSk7XHJcblxyXG5cdFx0XHRcdC8qIFBhcnNlIHRoZSBlcnJvciBtZXNzYWdlcyAqL1xyXG5cdFx0XHRcdHZhciBlcnJvcnMgPSBBcnJheTxzdHJpbmc+KCk7XHJcblx0XHRcdFx0T2JqZWN0LmtleXMoZm9ybS5jb250cm9scylcclxuXHRcdFx0XHRcdC5maWx0ZXIoeCA9PiAhZm9ybS5jb250cm9sc1t4XS52YWxpZClcclxuXHRcdFx0XHRcdC5mb3JFYWNoKGtleSA9PiB7XHJcblx0XHRcdFx0XHRcdC8qIEdldCBlcnJvciB0ZXh0ICovXHJcblx0XHRcdFx0XHRcdHZhciBlcnJvciA9IHRoaXMuZ2V0RWxlbWVudEVycm9yKChmb3JtLmNvbnRyb2xzW2tleV0gYXMgYW55KT8ubmF0aXZlRWxlbWVudCk7XHJcblx0XHRcdFx0XHRcdGlmIChlcnJvcikge1xyXG5cdFx0XHRcdFx0XHRcdGVycm9ycy5wdXNoKGVycm9yKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblxyXG5cdFx0XHRcdC8qIEJ1aWxkIGVycm9yIG1lc3NhZ2UgKi9cclxuXHRcdFx0XHR2YXIgbWVzc2FnZSA9IGVycm9ycy5sZW5ndGggPyBlcnJvcnMuc2xpY2UoMCwgMykuam9pbignXFxuJykgOiAkbG9jYWxpemVgOkBAc25hY2tiYXIuZXJyb3IucmVxdWlyZWQtZmllbGRzOkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSByZXF1aXJlZC5gO1xyXG5cclxuXHRcdFx0XHQvKiBzaG93IGEgbm90aWNlICovXHJcblx0XHRcdFx0dGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihtZXNzYWdlLCAnT2snLCB7IGR1cmF0aW9uOiAzMDAwLCBwYW5lbENsYXNzOiBbJ2Vycm9yJ10gfSk7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9KSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVzZXRzIGZvcm0gY29udHJvbHNcclxuXHQgKiBAcGFyYW0gZm9ybSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVzZXRGb3JtKGZvcm06IE5nRm9ybSk6IHZvaWQge1xyXG5cdFx0aWYgKCFmb3JtKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcblx0XHRcdGxldCBjdHIgPSBmb3JtLmNvbnRyb2xzW2tleV07XHJcblx0XHRcdGN0ci5tYXJrQXNQcmlzdGluZSgpO1xyXG5cdFx0XHRjdHIubWFya0FzVW50b3VjaGVkKCk7XHJcblx0XHRcdGN0ci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEludmFsaWRhdGUgY29udHJvbHMgcmVjdXJzaXZlbHlcclxuXHQgKiBAcGFyYW0gY29udHJvbCBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW52YWxpZGF0ZUNvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XHJcblx0XHQvKiBDaGVjayB0aGUgY29udHJvbCBhZ2FpbnN0IG51bGwgKi9cclxuXHRcdGlmICghY29udHJvbCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2hlY2sgaWYgdGhlIGNvbnRyb2wgaXMgYSBncm91cCAqL1xyXG5cdFx0bGV0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwO1xyXG5cdFx0aWYgKGZvcm1Hcm91cD8uY29udHJvbHMpIHtcclxuXHRcdFx0T2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKVxyXG5cdFx0XHRcdC5maWx0ZXIoeCA9PiAhZm9ybUdyb3VwLmNvbnRyb2xzW3hdLnZhbGlkKVxyXG5cdFx0XHRcdC5mb3JFYWNoKHggPT4gdGhpcy5pbnZhbGlkYXRlQ29udHJvbChmb3JtR3JvdXAuY29udHJvbHNbeF0pKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdFx0Y29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBmb3JtIGVycm9yc1xyXG5cdCAqIEBwYXJhbSBmb3JtIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkZWJ1Z0Zvcm0oZm9ybT86IE5nRm9ybSB8IEZvcm1Hcm91cCk6IHZvaWQge1xyXG5cdFx0aWYgKGZvcm0gJiYgdGhpcy5kZWJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnRm9ybTonLCBmb3JtKTtcclxuXHRcdFx0T2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gZm9ybS5jb250cm9sc1trZXldLmVycm9ycztcclxuXHRcdFx0XHRpZiAoY29udHJvbEVycm9ycyAhPSBudWxsKSB7XHJcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKGtleUVycm9yID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0tleSBjb250cm9sOiAnICsga2V5ICsgJywga2V5RXJyb3I6ICcgKyBrZXlFcnJvciArICcsIGVyciB2YWx1ZTogJywgY29udHJvbEVycm9yc1trZXlFcnJvcl0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCB0b29sYmFyIG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYWRkVG9vbGJhck1lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCAnRGVsZXRlJyBtZW51IGl0ZW0gKi9cclxuXHRcdGlmICh0aGlzLmRlbGV0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMucHVzaCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLmRlbGV0ZSgpLFxyXG5cdFx0XHRcdGRpc2FibGU6ICgpID0+ICF0aGlzLmlkLFxyXG5cdFx0XHRcdGhpZGU6ICgpID0+ICF0aGlzLmNhbkRlbGV0ZSgpLFxyXG5cdFx0XHRcdGluZGV4OiAxMDAwXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLnRvb2xiYXJNZW51SXRlbXMubGVuZ3RoKSB7XHJcblx0XHRcdC8qIFNvcnQgdGhlIG1lbnUgaXRlbXMgYnkgaW5kZXggKi9cclxuXHRcdFx0VXRpbHMuc29ydEFycmF5KHRoaXMudG9vbGJhck1lbnVJdGVtcywgJ2luZGV4Jyk7XHJcblxyXG5cdFx0XHQvKiBBZGQgdGhlIHRvb2xiYXIgbWVudSBpdGVtcyB0byB0aGUgdGhlIHRvb2xiYXIgYWN0aW9ucyAqL1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJBY3Rpb25zLnB1c2goeyBpY29uOiAnbW9yZV92ZXJ0JywgaXRlbXM6IHRoaXMudG9vbGJhck1lbnVJdGVtcyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvYWRzIHRoZSBwcmV2aW91cyBVUkwgaW4gdGhlIGhpc3RvcnkgbGlzdC5cclxuXHQgKiBAcGFyYW0gYWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGJhY2soYWN0aW9uOiBTYXZlQWN0aW9uID0gU2F2ZUFjdGlvbi5TYXZlQW5kQ2xvc2UpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJlbG9hZC5vYnNlcnZlZCkge1xyXG5cdFx0XHR0aGlzLnJlbG9hZC5lbWl0KHRoaXMuZm9ybVZhbHVlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmIChhY3Rpb24gPT0gU2F2ZUFjdGlvbi5TYXZlQW5kQ2xvc2UgJiYgdGhpcy5yZXR1cm5VcmwpIHtcclxuXHRcdFx0XHR0aGlzLm5hdmlnYXRlVG9SZXR1cm5VcmwoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0VkaXRNb2RlKSB7XHJcblx0XHRcdFx0XHRpZiAoYWN0aW9uID09IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24gPT0gU2F2ZUFjdGlvbi5TYXZlQW5kRWRpdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJlbG9hZFBhZ2UoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbiA9PSBTYXZlQWN0aW9uLlNhdmVBbmRDbG9zZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uID09IFNhdmVBY3Rpb24uU2F2ZUFuZEVkaXQgJiYgPG51bWJlcj50aGlzLmlkID4gMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7dGhpcy5hZGRTYXZlQW5kRWRpdFJvdXRlfSR7dGhpcy5pZH1gXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24gPT0gU2F2ZUFjdGlvbi5TYXZlQW5kTmV3KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuYWZ0ZXJSZWxvYWQoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgcmV0dXJuIHVybFxyXG5cdCAqIEBwYXJhbSByZXR1cm5VcmwgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFJldHVyblVybChyZXR1cm5Vcmw6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0c3VwZXIuc2V0UmV0dXJuVXJsKHJldHVyblVybCk7XHJcblx0XHR0aGlzLmxpc3RSb3V0ZSA9IHRoaXMucmV0dXJuVXJsIHx8IHRoaXMubGlzdFJvdXRlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVEVudGl0eVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBuZXdJbnN0YW5jZShpbml0PzogUGFydGlhbDxURW50aXR5Pik6IFRFbnRpdHkge1xyXG5cdFx0cmV0dXJuIG5ldyB0aGlzLmVudGl0eUN0b3IoaW5pdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaHR0cE9wdGlvbnMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNyZWF0ZTxURW50aXR5PihodHRwT3B0aW9ucz86IE9iamVjdCk6IE9ic2VydmFibGU8VEVudGl0eT4ge1xyXG5cdFx0dGhpcy5vbkJlZm9yZUNyZWF0ZSgpO1xyXG5cdFx0cmV0dXJuIHRoaXMuc2VydmljZS5jcmVhdGU8VEVudGl0eT4oXHJcblx0XHRcdHRoaXMuZm9ybVZhbHVlLFxyXG5cdFx0XHR1bmRlZmluZWQsXHJcblx0XHRcdE9iamVjdC5hc3NpZ24oaHR0cE9wdGlvbnMgfHwge30sIHsgaGVhZGVyczogdGhpcy50b0h0dHBIZWFkZXJzKHsgJ1Nob3ctTWVzc2FnZSc6ICd5ZXMnIH0pIH0pLFxyXG5cdFx0XHRmYWxzZVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBodHRwT3B0aW9ucyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgdXBkYXRlKGh0dHBPcHRpb25zPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxURW50aXR5PiB7XHJcblx0XHR0aGlzLm9uQmVmb3JlVXBkYXRlKCk7XHJcblx0XHRyZXR1cm4gdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLmlkISxcclxuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLml0ZW0hLCB0aGlzLmZvcm1WYWx1ZSksXHJcblx0XHRcdHVuZGVmaW5lZCxcclxuXHRcdFx0T2JqZWN0LmFzc2lnbihodHRwT3B0aW9ucyB8fCB7fSwgeyBoZWFkZXJzOiB0aGlzLnRvSHR0cEhlYWRlcnMoeyAnU2hvdy1NZXNzYWdlJzogJ3llcycgfSksIH0pLFxyXG5cdFx0XHRmYWxzZVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKiBAcGFyYW0gaW5jIFxyXG5cdCAqIEBwYXJhbSB1cGRhdGUgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGluY2x1ZGUoaW5jOiBzdHJpbmcsIHVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblx0XHR0aGlzLmluY2x1ZGVzLnB1c2goaW5jKTtcclxuXHRcdGlmICh1cGRhdGUpIHtcclxuXHRcdFx0dGhpcy51cGRhdGVJbmNsdWRlcy5wdXNoKGluYyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkZWxldGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRGVsZXRlKCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuaXRlbT8uaGFzT3duUHJvcGVydHkoJ2RlbGV0YWJsZScpIHx8ICh0aGlzLml0ZW0gYXMgYW55KVsnZGVsZXRhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpZCBpcyBzZXQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJTZXRJZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmlkKSB7XHJcblx0XHRcdHRoaXMubG9hZEl0ZW0oKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgc3RlcCBoYXMgY2hhbmdlZC5cclxuXHQgKiBAcGFyYW0gJGV2ZW50IFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyU3RlcENoYW5nZSgkZXZlbnQ6IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCk6IHZvaWQgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXR5IGhhcyBiZWVuIGxvYWRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckl0ZW1Mb2FkZWQoKTogdm9pZCB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCBiZWZvcmUgdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkJlZm9yZUZvcm1CdWlsZCgpOiB2b2lkIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG5cdCAqIERpc2FibGVzIHRoZSBmb3JtIGNvbnRyb2xzLCBpZiBbZGlzYWJsZV0gaXMgdHJ1ZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyRm9ybUJ1aWxkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuZm9ybSAmJiB0aGlzLmRpc2FibGVkKSB7XHJcblx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG5cdFx0XHRcdGxldCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmZvcm0hLmNvbnRyb2xzW2tleV07XHJcblx0XHRcdFx0Y29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdHkgaGFzIGJlZW4gY3JlYXRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25CZWZvcmVDcmVhdGUoKTogdm9pZCB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdHkgaGFzIGJlZW4gdXBkYXRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25CZWZvcmVVcGRhdGUoKTogdm9pZCB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIGJlZm9yZSBkYXRhIHN1Ym1pdGlvblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBiZWZvcmVTdWJtaXQoXzogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlKTogdm9pZCB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCBhZnRlciBkYXRhIHN1Ym1pdGlvblxyXG5cdCAqIEBwYXJhbSBhY3Rpb24gXHJcblx0ICogQHBhcmFtIHJlc3BvbnNlIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVyU3VibWl0KGFjdGlvbjogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlLCByZXNwb25zZTogYW55ID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHR0aGlzLmJhY2soYWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGxlZCBhZnRlciBwYWdlIHJlbG9hZGVkXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFmdGVyUmVsb2FkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pdGVtID0gT2JqZWN0LmFzc2lnbih0aGlzLm5ld0luc3RhbmNlKCksIHRoaXMucXVlcnkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBmb2N1cyB0byBmaXJzdCBpbnB1dFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBmb2N1cygpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmlucHV0ICYmIHRoaXMuaW5wdXQuZmlyc3QgJiYgdGhpcy5pbnB1dC5maXJzdC5uYXRpdmVFbGVtZW50KSB7XHJcblx0XHRcdHRoaXMuaW5wdXQuZmlyc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBlbGVtZW50IGVycm9yXHJcblx0ICogQHBhcmFtIG5hdGl2ZUVsZW1lbnQgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldEVsZW1lbnRFcnJvcihuYXRpdmVFbGVtZW50OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG5cdFx0LyogR2V0IHBhcmFuZXQgZWxlbWVudCAnbWF0LWZvcm0tZmllbGQnICovXHJcblx0XHR2YXIgbWF0Rm9ybUZpZWxkID0gbmF0aXZlRWxlbWVudD8uY2xvc2VzdCgnLm1hdC1mb3JtLWZpZWxkJyk7XHJcblx0XHRpZiAoIW1hdEZvcm1GaWVsZCkge1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEdldCBjaGlsZCBlbGVtZW50ICdtYXQtZXJyb3InICovXHJcblx0XHR2YXIgbWF0RXJyb3JzID0gbWF0Rm9ybUZpZWxkLnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtZXJyb3InKTtcclxuXHRcdGlmICghbWF0RXJyb3JzKSB7XHJcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogR2V0IGNoaWxkIGVsZW1lbnQgJ21hdC1sYWJlbCcgKi9cclxuXHRcdHZhciBtYXRMYWJlbCA9IG1hdEZvcm1GaWVsZC5xdWVyeVNlbGVjdG9yKCdtYXQtbGFiZWwnKTtcclxuXHRcdGlmICghbWF0TGFiZWwpIHtcclxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBHZXQgZXJyb3IgdGV4dHMgKi9cclxuXHRcdHZhciBlcnJvcnNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG1hdEVycm9ycylcclxuXHRcdFx0Py5maWx0ZXIoKHg6IGFueSkgPT4geC50ZXh0Q29udGVudClcclxuXHRcdFx0Py5tYXAoKHg6IGFueSkgPT4geC50ZXh0Q29udGVudCk7XHJcblxyXG5cdFx0cmV0dXJuIGAnJHttYXRMYWJlbC50ZXh0Q29udGVudH0nOiAke2Vycm9yc0FycmF5Py5qb2luKCcsICcpfWA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNwb25kcyB0byB1c2VyLWluaXRpYXRlZCBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcblx0aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0aWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdGNhc2UgJ3MnOlxyXG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdHRoaXMuc2F2ZShTYXZlQWN0aW9uLlNhdmVBbmRDbG9zZSk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdFx0Y2FzZSAnZCc6XHJcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5zYXZlKFNhdmVBY3Rpb24uU2F2ZUFuZE5ldyk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdFx0Y2FzZSAnZSc6XHJcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5zYXZlKFNhdmVBY3Rpb24uU2F2ZUFuZEVkaXQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBDYW5jZWwgdGhlIGZvcm0sIGlmIHRoZSB1c2VyIHByZXNzIHRoZSBFU0Mga2V5ICovXHJcblx0XHRpZiAoZXZlbnQua2V5Q29kZSA9PSAyNykge1xyXG5cdFx0XHR0aGlzLmJhY2soKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iXX0=
@@ -33,10 +33,10 @@ export class MenuListProjectionResolve {
33
33
  });
34
34
  let settings = ServiceLocator.getService(MenuSettings);
35
35
  if (AuthHelper.hasRole(GlobalRoles.Administrator) && (settings?.multitenantable || settings?.multiClients)) {
36
- projection.push('clientJoins(client(displayName:clientName))');
36
+ projection.push('clientJoins(client(displayName))');
37
37
  }
38
38
  if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && (settings?.multitenantable || settings?.multiDepartments)) {
39
- projection.push('departmentJoins(department(displayName:departmentName))');
39
+ projection.push('departmentJoins(department(displayName))');
40
40
  }
41
41
  }
42
42
  return projection;
@@ -48,4 +48,4 @@ export class MenuListProjectionResolve {
48
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MenuListProjectionResolve, decorators: [{
49
49
  type: Injectable
50
50
  }], ctorParameters: () => [{ type: i1.OidcSecurityService }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LXByb2plY3Rpb24ucmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL21lbnUvcmVzb2x2ZXJzL21lbnUtbGlzdC1wcm9qZWN0aW9uLnJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBR3ZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHlCQUF5QjtJQU1kO0lBSnBCOzs7T0FHRztJQUNILFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUssQ0FBQztJQUVsRTs7T0FFRztJQUNILE9BQU87UUFDSCxJQUFJLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRCxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQ3BELElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDWixVQUFVLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtvQkFDeEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRztvQkFDbEIsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlO2lCQUNyQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFdkQsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLElBQUksUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFO29CQUN4RyxVQUFVLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7aUJBQ2xFO2dCQUVELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxJQUFJLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO29CQUNySyxVQUFVLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7aUJBQzlFO2FBQ0o7WUFFRCxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzswSEFuQ1EseUJBQXlCOzhIQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IE9pZGNTZWN1cml0eVNlcnZpY2UgfSBmcm9tIFwiYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50XCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFJvbGVzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY29uc3RhbnRzL2dsb2JhbC1yb2xlc1wiO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSBcIi4uLy4uL2Jhc2UvaGVscGVycy9hdXRoLWhlbHBlclwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvc2VydmljZS1sb2NhdG9yXCI7XHJcbmltcG9ydCB7IE1lbnVTZXR0aW5ncyB9IGZyb20gXCIuLi9tb2RlbHMvbWVudS1zZXR0aW5nc1wiO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBJbmNsdWRlcyByZXNvbHZlIHNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1lbnVMaXN0UHJvamVjdGlvblJlc29sdmUge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBvaWRjU2VjdXJpdHlTZXJ2aWNlIFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9pZGNTZWN1cml0eVNlcnZpY2U6IE9pZGNTZWN1cml0eVNlcnZpY2UsKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc29sdmVzIGluY2x1ZGVzXHJcbiAgICAgKi9cclxuICAgIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHZhciBwcm9qZWN0aW9uOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5vaWRjU2VjdXJpdHlTZXJ2aWNlLmNoZWNrQXV0aCgpLnBpcGUobWFwKHggPT4ge1xyXG4gICAgICAgICAgICBBdXRoSGVscGVyLnVzZXIuaXNBdXRoZW50aWNhdGVkID0geC5pc0F1dGhlbnRpY2F0ZWQ7XHJcbiAgICAgICAgICAgIGlmICh4LnVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBBdXRoSGVscGVyLnVzZXIgPSBPYmplY3QuYXNzaWduKHgudXNlckRhdGEsIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogeC51c2VyRGF0YS5zdWIsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBdXRoZW50aWNhdGVkOiB4LmlzQXV0aGVudGljYXRlZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzID0gU2VydmljZUxvY2F0b3IuZ2V0U2VydmljZShNZW51U2V0dGluZ3MpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuQWRtaW5pc3RyYXRvcikgJiYgKHNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgfHwgc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0aW9uLnB1c2goJ2NsaWVudEpvaW5zKGNsaWVudChkaXNwbGF5TmFtZTpjbGllbnROYW1lKSknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoKEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5BZG1pbmlzdHJhdG9yKSB8fCBBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuQ2xpZW50QWRtaW5pc3RyYXRvcikpICYmIChzZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2plY3Rpb24ucHVzaCgnZGVwYXJ0bWVudEpvaW5zKGRlcGFydG1lbnQoZGlzcGxheU5hbWU6ZGVwYXJ0bWVudE5hbWUpKScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcHJvamVjdGlvbjtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbn0iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LXByb2plY3Rpb24ucmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL21lbnUvcmVzb2x2ZXJzL21lbnUtbGlzdC1wcm9qZWN0aW9uLnJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBR3ZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHlCQUF5QjtJQU1kO0lBSnBCOzs7T0FHRztJQUNILFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUssQ0FBQztJQUVsRTs7T0FFRztJQUNILE9BQU87UUFDSCxJQUFJLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRCxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQ3BELElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDWixVQUFVLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtvQkFDeEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRztvQkFDbEIsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlO2lCQUNyQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFdkQsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLElBQUksUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFO29CQUN4RyxVQUFVLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7aUJBQ3ZEO2dCQUVELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxJQUFJLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO29CQUNySyxVQUFVLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7aUJBQy9EO2FBQ0o7WUFFRCxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzswSEFuQ1EseUJBQXlCOzhIQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IE9pZGNTZWN1cml0eVNlcnZpY2UgfSBmcm9tIFwiYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50XCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFJvbGVzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY29uc3RhbnRzL2dsb2JhbC1yb2xlc1wiO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSBcIi4uLy4uL2Jhc2UvaGVscGVycy9hdXRoLWhlbHBlclwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gXCIuLi8uLi9jb21tb24vc2VydmljZXMvc2VydmljZS1sb2NhdG9yXCI7XHJcbmltcG9ydCB7IE1lbnVTZXR0aW5ncyB9IGZyb20gXCIuLi9tb2RlbHMvbWVudS1zZXR0aW5nc1wiO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBJbmNsdWRlcyByZXNvbHZlIHNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1lbnVMaXN0UHJvamVjdGlvblJlc29sdmUge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBvaWRjU2VjdXJpdHlTZXJ2aWNlIFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9pZGNTZWN1cml0eVNlcnZpY2U6IE9pZGNTZWN1cml0eVNlcnZpY2UsKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc29sdmVzIGluY2x1ZGVzXHJcbiAgICAgKi9cclxuICAgIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHZhciBwcm9qZWN0aW9uOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5vaWRjU2VjdXJpdHlTZXJ2aWNlLmNoZWNrQXV0aCgpLnBpcGUobWFwKHggPT4ge1xyXG4gICAgICAgICAgICBBdXRoSGVscGVyLnVzZXIuaXNBdXRoZW50aWNhdGVkID0geC5pc0F1dGhlbnRpY2F0ZWQ7XHJcbiAgICAgICAgICAgIGlmICh4LnVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBBdXRoSGVscGVyLnVzZXIgPSBPYmplY3QuYXNzaWduKHgudXNlckRhdGEsIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogeC51c2VyRGF0YS5zdWIsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBdXRoZW50aWNhdGVkOiB4LmlzQXV0aGVudGljYXRlZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzID0gU2VydmljZUxvY2F0b3IuZ2V0U2VydmljZShNZW51U2V0dGluZ3MpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuQWRtaW5pc3RyYXRvcikgJiYgKHNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgfHwgc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0aW9uLnB1c2goJ2NsaWVudEpvaW5zKGNsaWVudChkaXNwbGF5TmFtZSkpJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKChBdXRoSGVscGVyLmhhc1JvbGUoR2xvYmFsUm9sZXMuQWRtaW5pc3RyYXRvcikgfHwgQXV0aEhlbHBlci5oYXNSb2xlKEdsb2JhbFJvbGVzLkNsaWVudEFkbWluaXN0cmF0b3IpKSAmJiAoc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCBzZXR0aW5ncz8ubXVsdGlEZXBhcnRtZW50cykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0aW9uLnB1c2goJ2RlcGFydG1lbnRKb2lucyhkZXBhcnRtZW50KGRpc3BsYXlOYW1lKSknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHByb2plY3Rpb247XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG59Il19
@@ -8454,10 +8454,10 @@ class MenuListProjectionResolve {
8454
8454
  });
8455
8455
  let settings = ServiceLocator.getService(MenuSettings);
8456
8456
  if (AuthHelper.hasRole(GlobalRoles.Administrator) && (settings?.multitenantable || settings?.multiClients)) {
8457
- projection.push('clientJoins(client(displayName:clientName))');
8457
+ projection.push('clientJoins(client(displayName))');
8458
8458
  }
8459
8459
  if ((AuthHelper.hasRole(GlobalRoles.Administrator) || AuthHelper.hasRole(GlobalRoles.ClientAdministrator)) && (settings?.multitenantable || settings?.multiDepartments)) {
8460
- projection.push('departmentJoins(department(displayName:departmentName))');
8460
+ projection.push('departmentJoins(department(displayName))');
8461
8461
  }
8462
8462
  }
8463
8463
  return projection;
@@ -14671,7 +14671,7 @@ class GenericFormBaseComponent extends BaseComponent {
14671
14671
  /**
14672
14672
  * Password validation pattern
14673
14673
  */
14674
- passwordPattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{6,}';
14674
+ passwordPattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&#.])[A-Za-z\\d$@$!%*?&#.]{6,}';
14675
14675
  /**
14676
14676
  * Defaults modules and toolbar
14677
14677
  */