@libs-ui/services-diagram-draw 0.2.357-1 → 0.2.357-3

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.
@@ -24,6 +24,7 @@ const canvasConfig = signal({
24
24
  WIDTH_ELEMENT_DEFAULT: 165,
25
25
  HEIGHT_ELEMENT_DEFAULT: 48,
26
26
  ADD_ICON_DIAMETER: 24,
27
+ I18N_END_NODE: 'i18n_end_journey_new',
27
28
  });
28
29
  export const canvasConfigReadonly = canvasConfig.asReadonly();
29
30
  export const storeDataDefault = {
@@ -715,4 +716,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
715
716
  providedIn: 'root',
716
717
  }]
717
718
  }] });
718
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS1kcmF3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvZGlhZ3JhbS1kcmF3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2xELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQUVoRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQWdCO0lBQ3pDLDZDQUE2QyxFQUFFLEVBQUU7SUFDakQsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQiw2QkFBNkIsRUFBRSxFQUFFO0lBQ2pDLHFDQUFxQyxFQUFFLEVBQUU7SUFDekMsOEJBQThCLEVBQUUsR0FBRztJQUNuQyxvQkFBb0IsRUFBRSxFQUFFO0lBQ3hCLHdCQUF3QixFQUFFLFFBQVE7SUFDbEMsd0JBQXdCLEVBQUUsR0FBRztJQUM3Qiw4Q0FBOEMsRUFBRSxFQUFFO0lBRWxELGdCQUFnQixFQUFFLEVBQUU7SUFDcEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsb0JBQW9CLEVBQUUsRUFBRTtJQUN4QiwwQkFBMEIsRUFBRSxDQUFDO0lBRTdCLGlCQUFpQixFQUFFLE1BQU07SUFDekIscUJBQXFCLEVBQUUsVUFBVTtJQUNqQyxxQkFBcUIsRUFBRSxHQUFHO0lBQzFCLHNCQUFzQixFQUFFLEVBQUU7SUFFMUIsaUJBQWlCLEVBQUUsRUFBRTtDQUN0QixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsZUFBZSxFQUFFLENBQUM7SUFDbEIsY0FBYyxFQUFFLENBQUM7SUFDakIsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtDQUNyRixDQUFDO0FBSUYsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixZQUFZLEdBQUcsTUFBTSxDQUFrQyxTQUFTLENBQUMsQ0FBQztJQUMxRSxXQUFXLEdBQUcsTUFBTSxDQUE0QixVQUFVLENBQUMsQ0FBQztJQUNwRCxVQUFVLEdBQUcsTUFBTSxDQUE2QixTQUFTLENBQUMsQ0FBQztJQUMzRCxhQUFhLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELDhEQUE4RDtJQUM3QyxhQUFhLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztJQUVqRSwwQkFBMEI7SUFDbEIsZUFBZSxDQUEyRDtJQUMxRSxtQkFBbUIsR0FBaUosRUFBRSxDQUFDO0lBQ3ZLLG1CQUFtQixHQUE0QixFQUFFLENBQUM7SUFDekMsZUFBZSxHQUFHLElBQUksR0FBRyxFQUF1RixDQUFDO0lBRTNILGNBQWMsQ0FBQyxFQUEyRDtRQUMvRSxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsTUFBMkI7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLE1BQThCO1FBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFnQyxFQUFFLFNBQW1CLEVBQUUsU0FBa0I7UUFDeEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLGVBQWUsSUFBSSxnQkFBZ0IsQ0FBQztRQUMzRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3hDLCtDQUErQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7YUFBTSxDQUFDO1lBQ04scUNBQXFDLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3pFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxZQUFZLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzVELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxJQUFJLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGNBQXNCLEVBQUUsUUFBZ0MsRUFBRSxNQUE2QjtRQUNwSCxJQUFJLGNBQWMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsY0FBYyxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQywrQkFBK0I7UUFDN0UsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3hDLCtDQUErQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUgsQ0FBQzthQUFNLENBQUM7WUFDTixxQ0FBcUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFTyxlQUFlLENBQUMsUUFBZ0M7UUFDdEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ2xDLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFDRCxJQUFJLGNBQWMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksY0FBYyxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3hHLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDckMsT0FBTztZQUNULENBQUM7WUFFRCxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN6QyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztnQkFDL0UsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRyxDQUFDO2dCQUVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1QixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxRQUFnQztRQUMxQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsUUFBMkI7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBdUIsRUFBRSxNQUE4QixFQUFFLFlBQVksR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM1RixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN6QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsWUFBWSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0csSUFBSSxFQUFFLENBQUMsZUFBZTtvQkFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdKLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTt3QkFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLOzRCQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2pDLElBQUksQ0FBQyxDQUFDLFFBQVE7NEJBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUMzQyxJQUFJLENBQUMsQ0FBQyxlQUFlOzRCQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzNMLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUVsQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN4QixJQUFJLEVBQUUsQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEtBQUssU0FBUztnQkFBRSxPQUFPO1lBQ3ZFLElBQUksRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLE1BQU07Z0JBQUUsT0FBTztZQUU5TixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4RSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRW5CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDMUcsSUFBSSxhQUFhLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQzdDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25FLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNO3dCQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDckQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBRWhELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBNEIsQ0FBQztvQkFDeEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDNUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM3QixTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUU3QixJQUFJLEtBQThCLENBQUM7b0JBQ25DLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDaEQsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQ25ELENBQUM7b0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLElBQUksS0FBSyxDQUFDLFNBQVM7d0JBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNuRixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDaEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO3dCQUNyQixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQzt3QkFDM0MsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7d0JBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDOzRCQUN4QyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRzsrQkFDUCxTQUFTLGFBQWEsU0FBUzs7O2dCQUc5QyxDQUFDOzRCQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsU0FBUyxJQUFJLENBQUM7NEJBQzFELEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxHQUFHLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQ2hGLENBQUM7NkJBQU0sQ0FBQzs0QkFDTixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRzsrQkFDUCxTQUFTLGFBQWEsU0FBUzs7O2dCQUc5QyxDQUFDOzRCQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUM7NEJBQzlFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsU0FBUyxJQUFJLENBQUM7d0JBQzNELENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUM7WUFDekMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUztnQkFBRSxPQUFPO1lBQy9DLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLE1BQU07Z0JBQUUsT0FBTztZQUVwSCxNQUFNLEVBQUUsR0FBRyxTQUFTLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxRQUFRO29CQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQzdCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUNuRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUM7b0JBQ3ZELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQztvQkFDekQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ3RDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQ2hELFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQ2pELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDbkMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsbUJBQW1CO29CQUNqRSxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QixDQUFDLFFBQWdDLEVBQUUsWUFBWSxHQUFHLElBQUksRUFBRSxNQUE4QjtRQUNySCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDekUsb0VBQW9FO2dCQUNwRSxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsWUFBWSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBRUQsNkRBQTZEO1lBQzdELElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBRUQseUJBQXlCO1lBQ3pCLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDbEMsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNsRCxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ2pFLENBQUM7b0JBQ0QsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ3hHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMvRCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsOERBQThEO0lBQ3RELFVBQVUsQ0FBQyxPQUF3QixFQUFFLE1BQXlDLEVBQUUsZUFBd0IsRUFBRSxpQkFBMEI7UUFDMUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDckMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLGVBQWUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUUsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUV6RyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBNEIsQ0FBQztRQUU5RCxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFekMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFcEQsSUFBSSxlQUFlLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQStCO1FBRTdGLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUQsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQztRQUM3RCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQzlFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDeEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssb0JBQW9CLENBQUMsT0FBd0IsRUFBRSxTQUFzQjtRQUMzRSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekUsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUN6QyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUVuQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7UUFFaEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDeEMscURBQXFEO1lBQ3JELEtBQUssQ0FBQyxTQUFTLEdBQUc7c0JBQ0YsU0FBUyxhQUFhLFNBQVM7OztPQUc5QyxDQUFDO1lBQ0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsSUFBSSxDQUFDO1lBQ3pELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUMvRSxDQUFDO2FBQU0sQ0FBQztZQUNOLHVEQUF1RDtZQUN2RCxLQUFLLENBQUMsU0FBUyxHQUFHO3NCQUNGLFNBQVMsYUFBYSxTQUFTOzs7T0FHOUMsQ0FBQztZQUNGLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxJQUFJLENBQUM7UUFDMUQsQ0FBQztRQUVELFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxrQkFBa0IsQ0FBQyxRQUFnQztRQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUN0RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFFRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDekMsSUFBSSxNQUFNLENBQUMsdUJBQXVCLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDakcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDbEIsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEMsQ0FBQzt3QkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pDLENBQUM7b0JBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQTZCO1FBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxRQUFRLENBQUMsU0FBUyxHQUFHLGdCQUFnQixNQUFNLENBQUMsY0FBYyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDbkYsUUFBUSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUUxQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDckMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUNyQyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQztRQUNsRSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztRQUN0RCxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDckMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUV0QyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3hDOzs7O2VBSUc7WUFDSCxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQztZQUN4QyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDTjs7O2VBR0c7WUFDSCxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZUFBZSxDQUFDLFlBQStCLEVBQUUsTUFBdUcsRUFBRSxTQUE2QixFQUFFLHVCQUFnRDtRQUN2TyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLGNBQWMsRUFBRSxhQUF3QyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCO2dCQUFFLE9BQU87WUFFakUsSUFBSSxFQUFFLENBQUMsWUFBWSxLQUFLLG9CQUFvQixFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDckUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDOUIsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLENBQUM7d0JBQUUsT0FBTztvQkFFdEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDbkksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDdEksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLENBQUM7b0JBQUUsT0FBTztnQkFFMUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQy9HLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLFlBQStCLEVBQUUsV0FBd0M7UUFDM0YsT0FBTywrQkFBK0IsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsY0FBYztRQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxjQUFjLEVBQUUsYUFBd0MsQ0FBQztRQUNoRyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDdkIsU0FBUyxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU8sZ0JBQWdCLENBQ3RCLFNBQXNCLEVBQ3RCLEdBQVcsRUFDWCxJQUFZLEVBQ1osT0FBd0IsRUFDeEIsTUFBeUMsRUFDekMsTUFBdUc7UUFFdkcsTUFBTSxjQUFjLEdBQXdDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDL0YsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1FBQ3RGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztRQUV4RixtQkFBbUI7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUVuRSw2RUFBNkU7UUFDN0UsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sS0FBSyxHQUFHLE1BQU0sR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLE1BQU0sR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRW5DLHVFQUF1RTtRQUN2RSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7UUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7O2FBRWYsTUFBTTtjQUNMLE9BQU87O2VBRU4sS0FBSztnQkFDSixLQUFLOztLQUVoQixDQUFDO1FBRUYsd0VBQXdFO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMscUNBQXFDO1FBRTdFLDhDQUE4QztRQUM5QyxNQUFNLGFBQWEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFOUUsb0RBQW9EO1FBQ3BELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUMvQixNQUFNLGFBQWEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFN0MsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxvQkFBb0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ3RELE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxlQUFlLElBQUksU0FBUyxDQUFDO1lBQzNDLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLElBQUksU0FBUyxDQUFDO1lBQzVDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO1lBQ25DLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxZQUFZLElBQUksS0FBSyxDQUFDO1lBRTlDLGdCQUFnQixDQUFDLFNBQVMsRUFBRTtnQkFDMUIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLEdBQUcsRUFBRSxHQUFHLFlBQVksSUFBSTtnQkFDeEIsSUFBSSxFQUFFLEdBQUcsYUFBYSxJQUFJO2dCQUMxQixLQUFLLEVBQUUsR0FBRyxJQUFJLElBQUk7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSTtnQkFDbkIsYUFBYSxFQUFFLE1BQU07Z0JBQ3JCLE9BQU8sRUFBRSxNQUFNO2dCQUNmLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixjQUFjLEVBQUUsUUFBUTtnQkFDeEIsVUFBVSxFQUFFLG9CQUFvQjtnQkFDaEMsTUFBTSxFQUFFLE1BQU07YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsU0FBUyxHQUFHOztxQkFFVCxJQUFJO3NCQUNILElBQUk7Z0NBQ00sRUFBRTs2QkFDTCxZQUFZO3VCQUNsQixPQUFPOzs7OztzREFLd0IsU0FBUztTQUN0RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtZQUMxQixNQUFNLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDekIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixJQUFJLFNBQVMsQ0FBQztZQUNyRCxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLElBQUkseUJBQXlCLENBQUM7WUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLElBQUksUUFBUSxDQUFDO1lBQ3pELE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUM7WUFFL0MsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO2dCQUMxQixHQUFHLEVBQUUsR0FBRyxhQUFhLElBQUk7Z0JBQ3pCLElBQUksRUFBRSxHQUFHLGNBQWMsSUFBSTtnQkFDM0IsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJO2dCQUNwQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUk7Z0JBQ3JCLFlBQVksRUFBRSxHQUFHLFdBQVcsSUFBSTtnQkFDaEMsZUFBZSxFQUFFLE9BQU87Z0JBQ3hCLE1BQU0sRUFBRSxPQUFPLGdCQUFnQixJQUFJLFdBQVcsRUFBRTtnQkFDaEQsVUFBVSxFQUFFLHVDQUF1QzthQUNwRCxDQUFDLENBQUM7WUFFSCx1REFBdUQ7WUFDdkQsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEYsQ0FBQyxDQUFDO1FBRUYsYUFBYSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBWSxFQUFFLEVBQUU7WUFDckQsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLGNBQWMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQVksRUFBRSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQyxZQUFZO2dCQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFZLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBcUIsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFZLEVBQUUsRUFBRTtZQUNoRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlELE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLHFCQUFxQixDQUFDLEVBQW1CLEVBQUUsTUFBNkI7UUFDOUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLEVBQUU7WUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvRyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsRUFBbUIsRUFBRSxNQUE2QjtRQUMvRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxPQUFPLEVBQUUsVUFBVSxLQUFLLFNBQVM7WUFBRSxPQUFPLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLG9CQUFvQixFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDL0wsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxJQUFJLG9CQUFvQixFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDdkosQ0FBQztJQUVPLG1CQUFtQixDQUFDLEVBQW1CO1FBQzdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7UUFDOUIsSUFBSSxFQUFFO1lBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZUFBZSxJQUFJLG9CQUFvQixFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0csT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZUFBZSxJQUFJLG9CQUFvQixFQUFFLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0csQ0FBQztJQUVPLG9CQUFvQixDQUFDLEVBQW1CO1FBQzlDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZKLENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEY7O09BRUc7SUFDSyxvQkFBb0IsQ0FBQyxFQUFtQjtRQUM5QyxNQUFNLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqSCxPQUFPLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxFQUFtQjtRQUMvQyxNQUFNLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLG9CQUFvQixFQUFFLENBQUMsc0JBQXNCLENBQUM7UUFDeEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUU5QixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDeEcsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxJQUFJLG9CQUFvQixFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6Ryx1RkFBdUY7UUFDdkYsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQixDQUFDLEVBQW1CLEVBQUUsTUFBNkI7UUFDL0UsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRCxrREFBa0Q7UUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixJQUFJLENBQUMsQ0FBQztRQUNwRCxPQUFPLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxFQUFtQixFQUFFLE1BQTZCO1FBQ2hGLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQixFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztRQUV4RCwyQ0FBMkM7UUFDM0MsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLEVBQUUsRUFBRSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxJQUFJLG9CQUFvQixFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkgsQ0FBQztRQUNELDREQUE0RDtRQUM1RCxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO3dHQTV1QlUsd0JBQXdCOzRHQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRHJhd0xpbmVEYXRhSW5wdXQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWRyYXctbGluZSc7XG5pbXBvcnQgeyBzZXRTdHlsZXNFbGVtZW50IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgSVJ1bGVDb25uZWN0YWJsZSwgVERyb3Bab25lQ2FuRHJvcEZuIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NhbnZhcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURhdGFEaWFncmFtQ29uZmlnU3ZnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Nvb3JkaW5hdGVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJQ2FudmFzQ29uZmlnLCBJQ3VzdG9tQ2FudmFzQ29uZmlnLCBJRGlhZ3JhbUVsZW1lbnQsIElEaWFncmFtRWxlbWVudEJyYW5jaCwgSURyb3Bab25lSW5kaWNhdG9yU3R5bGUgfSBmcm9tICcuL2ludGVyZmFjZXMvZGlhZ3JhbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSU5hdmlnYXRpb25MaW5lU3R5bGVDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvbmF2aWdhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9MaWJEaWFncmFtQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbCB9IGZyb20gJy4vdXRpbHMvY2FsY3VsYXRvci1lbGVtZW50LnV0aWwnO1xuaW1wb3J0IHsgYXBwbHlFbGVtZW50U3R5bGUsIHNldEF0dHJpYnV0ZVN2Z0FuZEFwcGVuZCB9IGZyb20gJy4vdXRpbHMvZGlhZ3JhbS51dGlsJztcbmltcG9ydCB7IE1vTGliRGlhZ3JhbUhvcml6b250YWxDYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsIH0gZnJvbSAnLi91dGlscy9ob3Jpem9udGFsL2NhbGN1bGF0b3ItY29vcmRpbmF0ZXMudXRpbCc7XG5pbXBvcnQgeyBMaWJzVWlEaWFncmFtRHJhd05hdmlnYXRpb25VdGlsIH0gZnJvbSAnLi91dGlscy9uYXZpZ2F0aW9uL2J1aWxkLW5hdmlnYXRpb24tZGF0YS51dGlsJztcblxuY29uc3QgY2FudmFzQ29uZmlnID0gc2lnbmFsPElDYW52YXNDb25maWc+KHtcbiAgRUxFTUVOVF9XSURUSF9ERUZBVUxUX0JSQU5DSF9XSEVOX05PVF9FTEVNRU5UOiA2MCxcbiAgRUxFTUVOVF9NQVJHSU5fREVGQVVMVDogNjAsXG4gIEVMRU1FTlRfTUFSR0lOX0RFRkFVTFRfQlJBTkNIOiAxNixcbiAgRUxFTUVOVF9NQVJHSU5fQkVUV0VFTl9CUkFOQ0hfREVGQVVMVDogNjAsXG4gIERFRkFVTFRfQlJBTkNIX1dIRU5fTk9fRUxFTUVOVDogMTAwLFxuICBFTEVNRU5UX0hFSUdIVF9DVVJWRTogMTAsXG4gIEVMRU1FTlRfU1ZHX1NUUk9LRV9DT0xPUjogJzljYTJhZCcsXG4gIEVMRU1FTlRfU1ZHX1NUUk9LRV9XSURUSDogJzEnLFxuICBFTEVNRU5UX01BUkdJTl9ERUZBVUxUX0JSQU5DSF9UT19FTEVNRU5UX0ZJUlNUOiA3OCxcblxuICBESVNUQU5DRV9UT19XQUlUOiAzMCxcbiAgV0FJVF9UT19FTEVNRU5UOiA1MCxcbiAgRUxFTUVOVF9XQUlUX0RFRkFVTFQ6IDI4LFxuICBESVNUQU5DRV9XQUlUX1RPX05FWFRfTElORTogNCxcblxuICBUWVBFX0VMRU1FTlRfRVhJVDogJ0VYSVQnLFxuICBUWVBFX0VMRU1FTlRfV09SS0ZMT1c6ICdXT1JLRkxPVycsXG4gIFdJRFRIX0VMRU1FTlRfREVGQVVMVDogMTY1LFxuICBIRUlHSFRfRUxFTUVOVF9ERUZBVUxUOiA0OCxcblxuICBBRERfSUNPTl9ESUFNRVRFUjogMjQsXG59KTtcblxuZXhwb3J0IGNvbnN0IGNhbnZhc0NvbmZpZ1JlYWRvbmx5ID0gY2FudmFzQ29uZmlnLmFzUmVhZG9ubHkoKTtcbmV4cG9ydCBjb25zdCBzdG9yZURhdGFEZWZhdWx0ID0ge1xuICBwb3NpdGlvbk1heExlZnQ6IDAsXG4gIHBvc2l0aW9uTWF4VG9wOiAwLFxuICB3aWR0aEhlaWdodFN2Z0NhbnZhczogeyBoZWlnaHRTdmc6IHdpbmRvdy5pbm5lckhlaWdodCwgd2lkdGhTdmc6IHdpbmRvdy5pbm5lcldpZHRoIH0sXG59O1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURpYWdyYW1EcmF3U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQ2FudmFzID0gc2lnbmFsPElDdXN0b21DYW52YXNDb25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gc2lnbmFsPCd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc+KCd2ZXJ0aWNhbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRTdmcgPSBzaWduYWw8U1ZHUGF0aEVsZW1lbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlU3ZnRCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRSZWZzID0gc2lnbmFsPENvbXBvbmVudFJlZjxhbnk+W10+KFtdKTtcblxuICAvLyBWaXJ0dWFsaXphdGlvbiBUcmFja2luZ1xuICBwcml2YXRlIHZpcnR1YWxWaWV3cG9ydD86IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gIHByaXZhdGUgdmlydHVhbEZsYXRFbGVtZW50czogeyBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQ7IGJyYW5jaD86IElEaWFncmFtRWxlbWVudEJyYW5jaDsgc2hvdWxkU2hvd0Fycm93OiBib29sZWFuOyBpc090aGVyQ29uZmlnOiBib29sZWFuOyBwYXJlbnRJZD86IHN0cmluZyB8IG51bWJlciB9W10gPSBbXTtcbiAgcHJpdmF0ZSB2aXJ0dWFsRmxhdEJyYW5jaGVzOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2hbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpcnR1YWxOb2Rlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCB7IGNvbXBvbmVudD86IENvbXBvbmVudFJlZjxhbnk+OyBhcnJvdz86IEhUTUxFbGVtZW50OyBsYWJlbD86IEhUTUxFbGVtZW50IH0+KCk7XG5cbiAgcHVibGljIHVwZGF0ZVZpZXdwb3J0KHZwOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9KSB7XG4gICAgdGhpcy52aXJ0dWFsVmlld3BvcnQgPSB2cDtcbiAgICBpZiAodGhpcy5jb25maWdDYW52YXMoKT8udXNlVmlydHVhbGl6YXRpb25UZW1wbGF0ZSkge1xuICAgICAgdGhpcy5hcHBseVZpcnR1YWxpemF0aW9uRGlmZigpO1xuICAgIH1cbiAgfVxuXG4gIHNldCBzZXRDb25maWcoY29uZmlnOiBJQ3VzdG9tQ2FudmFzQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWdDYW52YXMuc2V0KGNvbmZpZyk7XG4gIH1cblxuICBzZXQgc2V0Q29uZmlnQ2FudmFzKGNvbmZpZzogUGFydGlhbDxJQ2FudmFzQ29uZmlnPikge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2FudmFzQ29uZmlnLnVwZGF0ZSgoY3VycmVudCkgPT4gKHsgLi4uY3VycmVudCwgLi4uY29uZmlnIH0pKTtcbiAgfVxuXG4gIGNvbmZpZ1hZRWxlbWVudHMoZWxlbWVudHM6IEFycmF5PElEaWFncmFtRWxlbWVudD4sIHVwZGF0ZVNWRz86IGJvb2xlYW4sIHBvc2l0aW9uWD86IG51bWJlcikge1xuICAgIGNvbnN0IHN0b3JlRGF0YSA9IHRoaXMuY29uZmlnQ2FudmFzKCk/LnN0b3JlRGF0YURlZmluZSA/PyBzdG9yZURhdGFEZWZhdWx0O1xuICAgIGNvbnN0IG1heExlZnRPcmlnaW4gPSBzdG9yZURhdGEucG9zaXRpb25NYXhMZWZ0O1xuICAgIGNvbnN0IG1heFRvcE9yaWdpbiA9IHN0b3JlRGF0YS5wb3NpdGlvbk1heFRvcCA/PyAwO1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICBNb0xpYkRpYWdyYW1Ib3Jpem9udGFsQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGVsZW1lbnRzLCBzdG9yZURhdGEsIHBvc2l0aW9uWCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE1vTGliRGlhZ3JhbUNhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwuc2V0WFlFbGVtZW50cyhlbGVtZW50cywgc3RvcmVEYXRhLCBwb3NpdGlvblgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1heExlZnROZXcgPSBzdG9yZURhdGEucG9zaXRpb25NYXhMZWZ0O1xuICAgIGNvbnN0IG1heFRvcE5ldyA9IHN0b3JlRGF0YS5wb3NpdGlvbk1heFRvcCA/PyAwO1xuXG4gICAgaWYgKCF0aGlzLmVsZW1lbnRTdmcoKSkge1xuICAgICAgdGhpcy5lbGVtZW50U3ZnLnNldChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BhdGgnKSk7XG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGVTVkcgJiYgdGhpcy5jb25maWdDYW52YXMoKT8uc3ZnQ29udGFpbmVyICYmIHRoaXMuZWxlbWVudFN2ZygpKSB7XG4gICAgICBzZXRBdHRyaWJ1dGVTdmdBbmRBcHBlbmQodGhpcy5jb25maWdDYW52YXMoKT8uc3ZnQ29udGFpbmVyLCB0aGlzLmVsZW1lbnRTdmcoKSwgJycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyAmJiBtYXhUb3BPcmlnaW4gIT09IG1heFRvcE5ldykge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbkVsZW1lbnRzKG1heFRvcE5ldywgZWxlbWVudHMsIHN0b3JlRGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uKCkgPT09ICd2ZXJ0aWNhbCcgJiYgbWF4TGVmdE9yaWdpbiAhPT0gbWF4TGVmdE5ldykge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbkVsZW1lbnRzKG1heExlZnROZXcsIGVsZW1lbnRzLCBzdG9yZURhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVsZW1lbnRTdmcoKSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVTdmdELnNldCgnJyk7XG4gICAgICB0aGlzLmJ1aWxkU3ZnRWxlbWVudChlbGVtZW50cyk7XG4gICAgICB0aGlzLmVsZW1lbnRTdmcoKT8uc2V0QXR0cmlidXRlKCdkJywgdGhpcy5hdHRyaWJ1dGVTdmdEKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25FbGVtZW50cyhwb3NpdGlvbk9mZnNldDogbnVtYmVyLCBlbGVtZW50czogQXJyYXk8SURpYWdyYW1FbGVtZW50PiwgY29uZmlnOiBJRGF0YURpYWdyYW1Db25maWdTdmcpIHtcbiAgICBpZiAocG9zaXRpb25PZmZzZXQgJiYgcG9zaXRpb25PZmZzZXQgPCAwKSB7XG4gICAgICBwb3NpdGlvbk9mZnNldCA9IHBvc2l0aW9uT2Zmc2V0ICogLTEgKyAyMDA7IC8vIDEwMCBsw6Aga2hv4bqjbmcgY8OhY2ggY8OhY2ggYmnDqm5cbiAgICB9XG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICBNb0xpYkRpYWdyYW1Ib3Jpem9udGFsQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGVsZW1lbnRzLCB7IC4uLmNvbmZpZywgdXBkYXRlU1ZHOiB0cnVlIH0sIHBvc2l0aW9uT2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgTW9MaWJEaWFncmFtQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGVsZW1lbnRzLCB7IC4uLmNvbmZpZywgdXBkYXRlU1ZHOiB0cnVlIH0sIHBvc2l0aW9uT2Zmc2V0KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRTdmcoKSkge1xuICAgICAgdGhpcy5lbGVtZW50U3ZnLnNldChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BhdGgnKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmVsZW1lbnRTdmcoKSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVTdmdELnNldCgnJyk7XG4gICAgICB0aGlzLmJ1aWxkU3ZnRWxlbWVudChlbGVtZW50cyk7XG4gICAgICB0aGlzLmVsZW1lbnRTdmcoKT8uc2V0QXR0cmlidXRlKCdkJywgdGhpcy5hdHRyaWJ1dGVTdmdEKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdmdFbGVtZW50KGVsZW1lbnRzOiBBcnJheTxJRGlhZ3JhbUVsZW1lbnQ+KSB7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoY3VycmVudEVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChjdXJyZW50RWxlbWVudC5hdHRyaWJ1dGVTdmdEKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlU3ZnRC51cGRhdGUoKHByZXYpID0+IGAke3ByZXYgPz8gJyd9ICR7Y3VycmVudEVsZW1lbnQuYXR0cmlidXRlU3ZnRH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50RWxlbWVudC5ub2RlT3RoZXJDb25maWc/LmF0dHJpYnV0ZVN2Z0QpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTdmdELnVwZGF0ZSgocHJldikgPT4gYCR7cHJldiA/PyAnJ30gJHtjdXJyZW50RWxlbWVudC5ub2RlT3RoZXJDb25maWc/LmF0dHJpYnV0ZVN2Z0R9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIWN1cnJlbnRFbGVtZW50LmJyYW5jaGVzPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50RWxlbWVudC5icmFuY2hlcy5mb3JFYWNoKChicmFuY2gpID0+IHtcbiAgICAgICAgaWYgKGJyYW5jaC5hdHRyaWJ1dGVTdmdEKSB7XG4gICAgICAgICAgdGhpcy5hdHRyaWJ1dGVTdmdELnVwZGF0ZSgocHJldikgPT4gYCR7cHJldiA/PyAnJ30gJHticmFuY2guYXR0cmlidXRlU3ZnRH1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYnJhbmNoLm5vZGVPdGhlckNvbmZpZz8uYXR0cmlidXRlU3ZnRCkge1xuICAgICAgICAgIHRoaXMuYXR0cmlidXRlU3ZnRC51cGRhdGUoKHByZXYpID0+IGAke3ByZXYgPz8gJyd9ICR7YnJhbmNoLm5vZGVPdGhlckNvbmZpZz8uYXR0cmlidXRlU3ZnRH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYnJhbmNoLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRTdmdFbGVtZW50KGJyYW5jaC5lbGVtZW50cyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdOG6pXQgY+G6oyBub2RlcyB04burIGVsZW1lbnRzIGFycmF5XG4gICAqL1xuICByZW5kZXJOb2RlcyhlbGVtZW50czogQXJyYXk8SURpYWdyYW1FbGVtZW50Pikge1xuICAgIGlmICh0aGlzLmNvbmZpZ0NhbnZhcygpPy51c2VWaXJ0dWFsaXphdGlvblRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmV4dHJhY3RWaXJ0dWFsRWxlbWVudHMoZWxlbWVudHMpO1xuICAgICAgdGhpcy5hcHBseVZpcnR1YWxpemF0aW9uRGlmZigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJOb2RlcygpO1xuICAgIHRoaXMucmVuZGVyRWxlbWVudHNSZWN1cnNpdmVseShlbGVtZW50cywgdHJ1ZSk7XG4gICAgdGhpcy5yZW5kZXJCcmFuY2hMYWJlbHMoZWxlbWVudHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0VmlydHVhbEVsZW1lbnRzKGVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSkge1xuICAgIHRoaXMudmlydHVhbEZsYXRFbGVtZW50cyA9IFtdO1xuICAgIHRoaXMudmlydHVhbEZsYXRCcmFuY2hlcyA9IFtdO1xuICAgIGNvbnN0IHNjYW4gPSAobGlzdDogSURpYWdyYW1FbGVtZW50W10sIGJyYW5jaD86IElEaWFncmFtRWxlbWVudEJyYW5jaCwgaXNGaXJzdExldmVsID0gdHJ1ZSkgPT4ge1xuICAgICAgbGlzdC5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hvdWxkU2hvd0Fycm93ID0gIShpc0ZpcnN0TGV2ZWwgJiYgaW5kZXggPT09IDApO1xuICAgICAgICB0aGlzLnZpcnR1YWxGbGF0RWxlbWVudHMucHVzaCh7IGVsZW1lbnQ6IGVsLCBicmFuY2gsIGlzT3RoZXJDb25maWc6IGZhbHNlLCBzaG91bGRTaG93QXJyb3csIHBhcmVudElkOiBlbC5pZCB9KTtcbiAgICAgICAgaWYgKGVsLm5vZGVPdGhlckNvbmZpZykgdGhpcy52aXJ0dWFsRmxhdEVsZW1lbnRzLnB1c2goeyBlbGVtZW50OiBlbC5ub2RlT3RoZXJDb25maWcsIGJyYW5jaCwgaXNPdGhlckNvbmZpZzogdHJ1ZSwgc2hvdWxkU2hvd0Fycm93OiBmYWxzZSwgcGFyZW50SWQ6IGVsLmlkIH0pO1xuICAgICAgICBpZiAoZWwuYnJhbmNoZXMpIHtcbiAgICAgICAgICBlbC5icmFuY2hlcy5mb3JFYWNoKChiLCBiSW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghYi5sYWJlbCkgYi5sYWJlbCA9IGBOaMOhbmggJHtiSW5kZXggKyAxfWA7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxGbGF0QnJhbmNoZXMucHVzaChiKTtcbiAgICAgICAgICAgIGlmIChiLmVsZW1lbnRzKSBzY2FuKGIuZWxlbWVudHMsIGIsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChiLm5vZGVPdGhlckNvbmZpZykgdGhpcy52aXJ0dWFsRmxhdEVsZW1lbnRzLnB1c2goeyBlbGVtZW50OiBiLm5vZGVPdGhlckNvbmZpZywgYnJhbmNoOiBiLCBpc090aGVyQ29uZmlnOiB0cnVlLCBzaG91bGRTaG93QXJyb3c6IGZhbHNlLCBwYXJlbnRJZDogJ2JyYW5jaF8nICsgYkluZGV4ICsgJ18nICsgZWwuaWQgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgc2NhbihlbGVtZW50cywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlWaXJ0dWFsaXphdGlvbkRpZmYoKSB7XG4gICAgY29uc3QgdnAgPSB0aGlzLnZpcnR1YWxWaWV3cG9ydDtcbiAgICBpZiAoIXZwKSByZXR1cm47XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdDYW52YXMoKTtcbiAgICBjb25zdCBjb250YWluZXIgPSBjb25maWc/Lm5vZGVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghY29udGFpbmVyIHx8ICFjb25maWcpIHJldHVybjtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IDMwMDtcbiAgICBjb25zdCB2aXNpYmxlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICB0aGlzLnZpcnR1YWxGbGF0RWxlbWVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBpdGVtLmVsZW1lbnQ7XG4gICAgICBpZiAoZWwudHJhbnNsYXRlWCA9PT0gdW5kZWZpbmVkIHx8IGVsLnRyYW5zbGF0ZVkgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgaWYgKGVsLnRyYW5zbGF0ZVggKyAoZWwuc3BlY2lmaWNfd2lkdGggfHwgMTY1KSA8IHZwLnggLSBidWZmZXIgfHwgZWwudHJhbnNsYXRlWCA+IHZwLnggKyB2cC53aWR0aCArIGJ1ZmZlciB8fCBlbC50cmFuc2xhdGVZICsgKGVsLnNwZWNpZmljX2hlaWdodCB8fCA0OCkgPCB2cC55IC0gYnVmZmVyIHx8IGVsLnRyYW5zbGF0ZVkgPiB2cC55ICsgdnAuaGVpZ2h0ICsgYnVmZmVyKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKGl0ZW0ucGFyZW50SWQpICsgKGl0ZW0uaXNPdGhlckNvbmZpZyA/ICdfb3RoZXInIDogJycpO1xuICAgICAgdmlzaWJsZUlkcy5hZGQoaWQpO1xuXG4gICAgICBpZiAoIXRoaXMudmlydHVhbE5vZGVzTWFwLmhhcyhpZCkpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IGl0ZW0uaXNPdGhlckNvbmZpZyA/IGNvbmZpZy5ub2RlT3RoZXJDb25maWdDb21wb25lbnRUeXBlIDogY29uZmlnLm5vZGVDb21wb25lbnRUeXBlO1xuICAgICAgICBpZiAoY29tcG9uZW50VHlwZSAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICAgIGNvbnN0IHJlZiA9IGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICAgICAgICByZWYuc2V0SW5wdXQoJ2VsZW1lbnQnLCBlbCk7XG4gICAgICAgICAgaWYgKGl0ZW0uYnJhbmNoKSByZWYuc2V0SW5wdXQoJ2JyYW5jaCcsIGl0ZW0uYnJhbmNoKTtcbiAgICAgICAgICByZWYuc2V0SW5wdXQoJ29yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbigpKTtcblxuICAgICAgICAgIGNvbnN0IGRvbUVsID0gcmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgZG9tRWwuY2xhc3NMaXN0LmFkZCgnZGlhZ3JhbS1ub2RlLWR5bmFtaWMnKTtcbiAgICAgICAgICBhcHBseUVsZW1lbnRTdHlsZShkb21FbCwgZWwpO1xuICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb21FbCk7XG5cbiAgICAgICAgICBsZXQgYXJyb3c6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChpdGVtLnNob3VsZFNob3dBcnJvdyAmJiAhaXRlbS5pc090aGVyQ29uZmlnKSB7XG4gICAgICAgICAgICBhcnJvdyA9IHRoaXMuY3JlYXRlQXJyb3dJbmRpY2F0b3IoZWwsIGNvbnRhaW5lcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudmlydHVhbE5vZGVzTWFwLnNldChpZCwgeyBjb21wb25lbnQ6IHJlZiwgYXJyb3cgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy52aXJ0dWFsTm9kZXNNYXAuZ2V0KGlkKTtcbiAgICAgICAgaWYgKGNhY2hlKSB7XG4gICAgICAgICAgaWYgKGNhY2hlLmNvbXBvbmVudCkgYXBwbHlFbGVtZW50U3R5bGUoY2FjaGUuY29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIGVsKTtcbiAgICAgICAgICBpZiAoY2FjaGUuYXJyb3cpIHtcbiAgICAgICAgICAgIGNvbnN0IGFycm93U2l6ZSA9IDE2O1xuICAgICAgICAgICAgY29uc3Qgbm9kZVdpZHRoID0gZWwuc3BlY2lmaWNfd2lkdGggPz8gMTY1O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUhlaWdodCA9IGVsLnNwZWNpZmljX2hlaWdodCA/PyA0ODtcbiAgICAgICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICBjYWNoZS5hcnJvdy5pbm5lckhUTUwgPSBgXG4gICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIke2Fycm93U2l6ZX1cIiBoZWlnaHQ9XCIke2Fycm93U2l6ZX1cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDRMMTYgOEw4IDEyWlwiIGZpbGw9XCIjOWNhM2FmXCIvPlxuICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICAgIGNhY2hlLmFycm93LnN0eWxlLmxlZnQgPSBgJHtlbC50cmFuc2xhdGVYIC0gYXJyb3dTaXplfXB4YDtcbiAgICAgICAgICAgICAgY2FjaGUuYXJyb3cuc3R5bGUudG9wID0gYCR7ZWwudHJhbnNsYXRlWSArIG5vZGVIZWlnaHQgLyAyIC0gYXJyb3dTaXplIC8gMn1weGA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjYWNoZS5hcnJvdy5pbm5lckhUTUwgPSBgXG4gICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIke2Fycm93U2l6ZX1cIiBoZWlnaHQ9XCIke2Fycm93U2l6ZX1cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDE2TDQgMTJIMTJMOCAxNlpcIiBmaWxsPVwiIzljYTNhZlwiLz5cbiAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICBjYWNoZS5hcnJvdy5zdHlsZS5sZWZ0ID0gYCR7ZWwudHJhbnNsYXRlWCArIG5vZGVXaWR0aCAvIDIgLSBhcnJvd1NpemUgLyAyfXB4YDtcbiAgICAgICAgICAgICAgY2FjaGUuYXJyb3cuc3R5bGUudG9wID0gYCR7ZWwudHJhbnNsYXRlWSAtIGFycm93U2l6ZX1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnZpcnR1YWxGbGF0QnJhbmNoZXMuZm9yRWFjaCgoYnJhbmNoLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgeCA9IGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeDtcbiAgICAgIGNvbnN0IHkgPSBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3k7XG4gICAgICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHkgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgaWYgKHggPCB2cC54IC0gYnVmZmVyIHx8IHggPiB2cC54ICsgdnAud2lkdGggKyBidWZmZXIgfHwgeSA8IHZwLnkgLSBidWZmZXIgfHwgeSA+IHZwLnkgKyB2cC5oZWlnaHQgKyBidWZmZXIpIHJldHVybjtcblxuICAgICAgY29uc3QgaWQgPSAnYnJhbmNoXycgKyBpbmRleCArICdfJyArIE1hdGgucm91bmQoeCkgKyAnXycgKyBNYXRoLnJvdW5kKHkpO1xuICAgICAgdmlzaWJsZUlkcy5hZGQoaWQpO1xuXG4gICAgICBpZiAoIXRoaXMudmlydHVhbE5vZGVzTWFwLmhhcyhpZCkpIHtcbiAgICAgICAgY29uc3QgbGFiZWxEaXYgPSB0aGlzLmNyZWF0ZUJyYW5jaExhYmVsKGJyYW5jaCk7XG4gICAgICAgIGlmIChsYWJlbERpdikgdGhpcy52aXJ0dWFsTm9kZXNNYXAuc2V0KGlkLCB7IGxhYmVsOiBsYWJlbERpdiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy52aXJ0dWFsTm9kZXNNYXAuZ2V0KGlkKTtcbiAgICAgICAgaWYgKGNhY2hlPy5sYWJlbCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsRGl2ID0gY2FjaGUubGFiZWw7XG4gICAgICAgICAgY29uc3QgbGFiZWxSZWN0ID0gbGFiZWxEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3QgbGFiZWxXID0gbGFiZWxSZWN0LndpZHRoIHx8IGxhYmVsRGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICAgIGNvbnN0IGxhYmVsSCA9IGxhYmVsUmVjdC5oZWlnaHQgfHwgbGFiZWxEaXYub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uKCkgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICAgIGxhYmVsRGl2LnN0eWxlLmxlZnQgPSBgJHt4IC0gbGFiZWxXIC8gMiAtIDR9cHhgO1xuICAgICAgICAgICAgbGFiZWxEaXYuc3R5bGUudG9wID0gYCR7eSAtIGxhYmVsSCAvIDIgKyA0fXB4YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFiZWxEaXYuc3R5bGUubGVmdCA9IGAke3ggKyA0fXB4YDtcbiAgICAgICAgICAgIGxhYmVsRGl2LnN0eWxlLnRvcCA9IGAke3kgLSBsYWJlbEggLyAyfXB4YDsgLy8gY2VudGVyIG92ZXIgd2lyZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgQXJyYXkuZnJvbSh0aGlzLnZpcnR1YWxOb2Rlc01hcC5lbnRyaWVzKCkpLmZvckVhY2goKFtpZCwgY2FjaGVdKSA9PiB7XG4gICAgICBpZiAoIXZpc2libGVJZHMuaGFzKGlkKSkge1xuICAgICAgICBjYWNoZS5jb21wb25lbnQ/LmRlc3Ryb3koKTtcbiAgICAgICAgY2FjaGUuYXJyb3c/LnJlbW92ZSgpO1xuICAgICAgICBjYWNoZS5sYWJlbD8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMudmlydHVhbE5vZGVzTWFwLmRlbGV0ZShpZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGVsZW1lbnRzIHbDoCBicmFuY2hlcyBt4buZdCBjw6FjaCDEkeG7hyBxdXlcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRWxlbWVudHNSZWN1cnNpdmVseShlbGVtZW50czogQXJyYXk8SURpYWdyYW1FbGVtZW50PiwgaXNGaXJzdExldmVsID0gdHJ1ZSwgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoKSB7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnRyYW5zbGF0ZVggIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50LnRyYW5zbGF0ZVkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBNYWluIG5vZGU6IGPDsyBhcnJvdyBu4bq/dSBraMO0bmcgcGjhuqNpIGVsZW1lbnQgxJHhuqd1IHRpw6puIGPhu6dhIGxldmVsIMSR4bqndVxuICAgICAgICBjb25zdCBzaG91bGRTaG93QXJyb3cgPSAhKGlzRmlyc3RMZXZlbCAmJiBpbmRleCA9PT0gMCk7XG4gICAgICAgIHRoaXMuY3JlYXRlTm9kZShlbGVtZW50LCBicmFuY2gsIHNob3VsZFNob3dBcnJvdywgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW5kZXIgbm9kZU90aGVyQ29uZmlnIG7hur91IGPDsyAobm9kZXMgcGjhu6UpIC0gS0jDlE5HIGPDsyBhcnJvd1xuICAgICAgaWYgKGVsZW1lbnQubm9kZU90aGVyQ29uZmlnPy50cmFuc2xhdGVYICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudC5ub2RlT3RoZXJDb25maWcudHJhbnNsYXRlWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlTm9kZShlbGVtZW50Lm5vZGVPdGhlckNvbmZpZywgYnJhbmNoLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbmRlciBicmFuY2hlcyBu4bq/dSBjw7NcbiAgICAgIGlmIChlbGVtZW50LmJyYW5jaGVzICYmIGVsZW1lbnQuYnJhbmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBlbGVtZW50LmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgIGlmIChicmFuY2guZWxlbWVudHMgJiYgYnJhbmNoLmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRWxlbWVudHNSZWN1cnNpdmVseShicmFuY2guZWxlbWVudHMsIGZhbHNlLCBicmFuY2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYnJhbmNoLm5vZGVPdGhlckNvbmZpZz8udHJhbnNsYXRlWCAhPT0gdW5kZWZpbmVkICYmIGJyYW5jaC5ub2RlT3RoZXJDb25maWcudHJhbnNsYXRlWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU5vZGUoYnJhbmNoLm5vZGVPdGhlckNvbmZpZywgYnJhbmNoLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBU4bqhbyBt4buZdCBub2RlIGNvbXBvbmVudCDEkeG7mW5nXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwcml2YXRlIGNyZWF0ZU5vZGUoZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCB8IHVuZGVmaW5lZCwgc2hvdWxkU2hvd0Fycm93OiBib29sZWFuLCBpc05vZGVPdGhlckNvbmZpZzogYm9vbGVhbik6IENvbXBvbmVudFJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ0NhbnZhcygpO1xuICAgIGlmICghY29uZmlnPy52aWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy51c2VWaXJ0dWFsaXphdGlvblRlbXBsYXRlKSB7XG4gICAgICBpZiAoY29uZmlnLm5vZGVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGlmIChzaG91bGRTaG93QXJyb3cgJiYgIWlzTm9kZU90aGVyQ29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVBcnJvd0luZGljYXRvcihlbGVtZW50LCBjb25maWcubm9kZXNDb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gaXNOb2RlT3RoZXJDb25maWcgPyBjb25maWcubm9kZU90aGVyQ29uZmlnQ29tcG9uZW50VHlwZSA6IGNvbmZpZy5ub2RlQ29tcG9uZW50VHlwZTtcblxuICAgIGlmICghY29tcG9uZW50VHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICBjb25zdCBlbCA9IGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdlbGVtZW50JywgZWxlbWVudCk7XG4gICAgaWYgKGJyYW5jaCkge1xuICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KCdicmFuY2gnLCBicmFuY2gpO1xuICAgIH1cbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ29yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbigpKTtcbiAgICBlbC5jbGFzc0xpc3QuYWRkKCdkaWFncmFtLW5vZGUtZHluYW1pYycpO1xuXG4gICAgYXBwbHlFbGVtZW50U3R5bGUoZWwsIGVsZW1lbnQpO1xuXG4gICAgaWYgKGNvbmZpZy5ub2Rlc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uZmlnLm5vZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZWwpO1xuXG4gICAgICBpZiAoc2hvdWxkU2hvd0Fycm93ICYmICFpc05vZGVPdGhlckNvbmZpZykge1xuICAgICAgICB0aGlzLmNyZWF0ZUFycm93SW5kaWNhdG9yKGVsZW1lbnQsIGNvbmZpZy5ub2Rlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZnMudXBkYXRlKChyZWZzKSA9PiBbLi4ucmVmcywgY29tcG9uZW50UmVmXSk7IC8vIEzGsHUgcmVmZXJlbmNlIMSR4buDIGNsZWFudXAgc2F1XG5cbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHThuqV0IGPhuqMgbm9kZXMgxJHDoyB04bqhb1xuICAgKi9cbiAgY2xlYXJOb2RlcygpIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMoKS5mb3JFYWNoKChyZWYpID0+IHtcbiAgICAgIHJlZi5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWZzLnNldChbXSk7XG5cbiAgICBBcnJheS5mcm9tKHRoaXMudmlydHVhbE5vZGVzTWFwLnZhbHVlcygpKS5mb3JFYWNoKChjYWNoZSkgPT4ge1xuICAgICAgY2FjaGUuY29tcG9uZW50Py5kZXN0cm95KCk7XG4gICAgICBjYWNoZS5hcnJvdz8ucmVtb3ZlKCk7XG4gICAgICBjYWNoZS5sYWJlbD8ucmVtb3ZlKCk7XG4gICAgfSk7XG4gICAgdGhpcy52aXJ0dWFsTm9kZXNNYXAuY2xlYXIoKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnQ2FudmFzKCk7XG4gICAgY29uc3Qgbm9kZXNDb250YWluZXIgPSBjb25maWc/Lm5vZGVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChub2Rlc0NvbnRhaW5lcikge1xuICAgICAgaWYgKCFjb25maWc/LnVzZVZpcnR1YWxpemF0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3QgZHluYW1pY05vZGVzID0gbm9kZXNDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLmRpYWdyYW0tbm9kZS1keW5hbWljJyk7XG4gICAgICAgIGR5bmFtaWNOb2Rlcy5mb3JFYWNoKChub2RlOiBFbGVtZW50KSA9PiBub2RlLnJlbW92ZSgpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhYmVscyA9IG5vZGVzQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5icmFuY2gtbGFiZWwnKTtcbiAgICAgIGxhYmVscy5mb3JFYWNoKChsYWJlbDogRWxlbWVudCkgPT4gbGFiZWwucmVtb3ZlKCkpO1xuICAgICAgY29uc3QgYXJyb3dzID0gbm9kZXNDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLm5vZGUtYXJyb3ctaW5kaWNhdG9yJyk7XG4gICAgICBhcnJvd3MuZm9yRWFjaCgoYXJyb3c6IEVsZW1lbnQpID0+IGFycm93LnJlbW92ZSgpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVOG6oW8gbcWpaSB0w6puIGluZGljYXRvciBjaOG7iSBoxrDhu5tuZyB2w6BvIG5vZGUuXG4gICAqIC0gdmVydGljYWw6ICAgbcWpaSB0w6puIOKWvCBwaMOtYSBUUsOKTiBub2RlICAobHXhu5NuZyB0csOqbiDihpIgeHXhu5FuZylcbiAgICogLSBob3Jpem9udGFsOiBtxalpIHTDqm4g4pa6IHBow61hIFRSw4FJIG5vZGUgIChsdeG7k25nIHRyw6FpIOKGkiBwaOG6o2kpXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFycm93SW5kaWNhdG9yKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZWxlbWVudC50cmFuc2xhdGVYID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC50cmFuc2xhdGVZID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhcnJvdy5jbGFzc05hbWUgPSAnbm9kZS1hcnJvdy1pbmRpY2F0b3InO1xuICAgIGFycm93LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBhcnJvdy5zdHlsZS56SW5kZXggPSAnMSc7XG4gICAgYXJyb3cuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcblxuICAgIGNvbnN0IGFycm93U2l6ZSA9IDE2O1xuICAgIGNvbnN0IG5vZGVXaWR0aCA9IGVsZW1lbnQuc3BlY2lmaWNfd2lkdGggPz8gMDtcbiAgICBjb25zdCBub2RlSGVpZ2h0ID0gZWxlbWVudC5zcGVjaWZpY19oZWlnaHQgPz8gMDtcblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgLy8gTcWpaSB0w6puIOKWuiDhu58gYsOqbiBUUsOBSSBub2RlLCBjxINuIGdp4buvYSB0aGVvIGNoaeG7gXUgY2FvXG4gICAgICBhcnJvdy5pbm5lckhUTUwgPSBgXG4gICAgICAgIDxzdmcgd2lkdGg9XCIke2Fycm93U2l6ZX1cIiBoZWlnaHQ9XCIke2Fycm93U2l6ZX1cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDRMMTYgOEw4IDEyWlwiIGZpbGw9XCIjOWNhM2FmXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIGA7XG4gICAgICBhcnJvdy5zdHlsZS5sZWZ0ID0gYCR7ZWxlbWVudC50cmFuc2xhdGVYIC0gYXJyb3dTaXplfXB4YDtcbiAgICAgIGFycm93LnN0eWxlLnRvcCA9IGAke2VsZW1lbnQudHJhbnNsYXRlWSArIG5vZGVIZWlnaHQgLyAyIC0gYXJyb3dTaXplIC8gMn1weGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE3FqWkgdMOqbiDilrwg4bufIHBow61hIFRSw4pOIG5vZGUsIGPEg24gZ2nhu69hIHRoZW8gY2hp4buBdSBy4buZbmdcbiAgICAgIGFycm93LmlubmVySFRNTCA9IGBcbiAgICAgICAgPHN2ZyB3aWR0aD1cIiR7YXJyb3dTaXplfVwiIGhlaWdodD1cIiR7YXJyb3dTaXplfVwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMTZMNCAxMkgxMkw4IDE2WlwiIGZpbGw9XCIjOWNhM2FmXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIGA7XG4gICAgICBhcnJvdy5zdHlsZS5sZWZ0ID0gYCR7ZWxlbWVudC50cmFuc2xhdGVYICsgbm9kZVdpZHRoIC8gMiAtIGFycm93U2l6ZSAvIDJ9cHhgO1xuICAgICAgYXJyb3cuc3R5bGUudG9wID0gYCR7ZWxlbWVudC50cmFuc2xhdGVZIC0gYXJyb3dTaXplfXB4YDtcbiAgICB9XG5cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIHJldHVybiBhcnJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYnJhbmNoIGxhYmVscyAodGV4dCBhbm5vdGF0aW9ucyBvbiBicmFuY2hlcylcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQnJhbmNoTGFiZWxzKGVsZW1lbnRzOiBBcnJheTxJRGlhZ3JhbUVsZW1lbnQ+KSB7XG4gICAgY29uc3Qgc3ZnQ29udGFpbmVyID0gdGhpcy5jb25maWdDYW52YXMoKT8uc3ZnQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghc3ZnQ29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuYnJhbmNoZXMgJiYgZWxlbWVudC5icmFuY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVsZW1lbnQuYnJhbmNoZXMuZm9yRWFjaCgoYnJhbmNoLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggIT09IHVuZGVmaW5lZCAmJiBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCFicmFuY2gubGFiZWwpIHtcbiAgICAgICAgICAgICAgYnJhbmNoLmxhYmVsID0gYE5ow6FuaCAke2luZGV4ICsgMX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jcmVhdGVCcmFuY2hMYWJlbChicmFuY2gpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChicmFuY2guZWxlbWVudHMgJiYgYnJhbmNoLmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQnJhbmNoTGFiZWxzKGJyYW5jaC5lbGVtZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnJhbmNoTGFiZWwoYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdDYW52YXMoKTtcbiAgICBjb25zdCBjb250YWluZXIgPSBjb25maWc/Lm5vZGVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGxhYmVsRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGFiZWxEaXYuY2xhc3NOYW1lID0gYGJyYW5jaC1sYWJlbCAke2JyYW5jaC5sYWJlbENsYXNzTmFtZSB8fCAnbGlicy11aS1mb250LWg3cid9YDtcbiAgICBsYWJlbERpdi50ZXh0Q29udGVudCA9IGJyYW5jaC5sYWJlbCB8fCAnJztcblxuICAgIGxhYmVsRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBsYWJlbERpdi5zdHlsZS5wYWRkaW5nID0gJzJweCA3cHgnO1xuICAgIGxhYmVsRGl2LnN0eWxlLmJvcmRlclJhZGl1cyA9ICcxMHB4JztcbiAgICBsYWJlbERpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBicmFuY2gubGFiZWxCZ0NvbG9yIHx8ICcjZjNmNGY2JztcbiAgICBsYWJlbERpdi5zdHlsZS5jb2xvciA9IGJyYW5jaC5sYWJlbENvbG9yIHx8ICcjMzc0MTUxJztcbiAgICBsYWJlbERpdi5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7XG4gICAgbGFiZWxEaXYuc3R5bGUuekluZGV4ID0gJzInO1xuICAgIGxhYmVsRGl2LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG5cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGFiZWxEaXYpO1xuXG4gICAgY29uc3Qgc3RhcnRYID0gYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF94ID8/IDA7XG4gICAgY29uc3Qgc3RhcnRZID0gYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF95ID8/IDA7XG4gICAgY29uc3QgbGFiZWxXID0gbGFiZWxEaXYub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgbGFiZWxIID0gbGFiZWxEaXYub2Zmc2V0SGVpZ2h0IHx8IDE4O1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAvKipcbiAgICAgICAqIEhvcml6b250YWw6IGxhYmVsIG7hurFtIFRSw4pOIMSRxrDhu51uZyBsaW5lIG7hurFtIG5nYW5nLlxuICAgICAgICogc3BlY2lmaWNfc3RhcnRfYnJhbmNoID0gxJFp4buDbSBi4bqvdCDEkeG6p3UgxJFv4bqhbiB0aOG6s25nIG5nYW5nIMSR4bq/biBlbGVtZW50LlxuICAgICAgICogxJDhurd0IGxhYmVsIHThu4tuaCB0aeG6v24gc2FuZyBwaOG6o2kgOHB4IHThu6sgbmdv4bq3dCBuaMOhbmgsIHbDoCBjxINuIGdp4buvYSBkw6J5LlxuICAgICAgICovXG4gICAgICBsYWJlbERpdi5zdHlsZS5sZWZ0ID0gYCR7c3RhcnRYICsgNH1weGA7XG4gICAgICBsYWJlbERpdi5zdHlsZS50b3AgPSBgJHtzdGFydFkgLSBsYWJlbEggLyAyfXB4YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBWZXJ0aWNhbDogbGFiZWwgbuG6sW0gQsOKTiBUUsOBSSDEkcaw4budbmcgbmdhbmcsIGPEg24gZ2nhu69hIHRoZW8gWS5cbiAgICAgICAqIHNwZWNpZmljX3N0YXJ0X2JyYW5jaCA9IMSRaeG7g20gxJHhuqd1IMSRb+G6oW4gdGjhurNuZyDEkeG6v24gZWxlbWVudCAoc2F1IGN1cnZlKS5cbiAgICAgICAqL1xuICAgICAgbGFiZWxEaXYuc3R5bGUubGVmdCA9IGAke3N0YXJ0WCAtIGxhYmVsVyAvIDIgLSA0fXB4YDtcbiAgICAgIGxhYmVsRGl2LnN0eWxlLnRvcCA9IGAke3N0YXJ0WSAtIGxhYmVsSCAvIDIgKyA0fXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsRGl2O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBk4bqldSBcIitcIiB04bqhaSBt4buXaSB24buLIHRyw60gY8OzIHRo4buDIHRo4bqjIGVsZW1lbnQgdOG7qyBzaWRlYmFyLlxuICAgKiBTZXJ2aWNlIHThu7EgdOG6oW8gRE9NIGVsZW1lbnRzIHbDoCBpbmplY3QgdsOgbyBub2Rlc0NvbnRhaW5lci5cbiAgICogQHBhcmFtIGZsYXRFbGVtZW50cyBEYW5oIHPDoWNoIGZsYXQgZWxlbWVudHMgxJHDoyB0w61uaCB0b8OhbiB24buLIHRyw61cbiAgICogQHBhcmFtIG9uRHJvcCBDYWxsYmFjayBraGkgbmfGsOG7nWkgZMO5bmcgdGjhuqMgZWxlbWVudCB2w6BvIG3hu5l0IFwiK1wiXG4gICAqIEBwYXJhbSBjYW5Ecm9wRm4gKHTDuXkgY2jhu41uKSBGdW5jdGlvbiBraeG7g20gdHJhIMSRaeG7gXUga2nhu4duIGhp4buDbiB0aOG7iyBkcm9wIHpvbmUuXG4gICAqIGBgYFxuICAgKi9cbiAgcmVuZGVyRHJvcFpvbmVzKGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10sIG9uRHJvcDogKGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2ggfCB1bmRlZmluZWQsIGRyYWdEYXRhOiBzdHJpbmcpID0+IHZvaWQsIGNhbkRyb3BGbjogVERyb3Bab25lQ2FuRHJvcEZuLCBydWxlQ29ubmVjdGFibGVFbGVtZW50czogQXJyYXk8SVJ1bGVDb25uZWN0YWJsZT4pOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyRHJvcFpvbmVzKCk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb25maWdDYW52YXMoKT8ubm9kZXNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcblxuICAgIGZsYXRFbGVtZW50cy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgaWYgKGVsLmNvZGUgPT09IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuVFlQRV9FTEVNRU5UX0VYSVQpIHJldHVybjtcblxuICAgICAgaWYgKGVsLmVsZW1lbnRfdHlwZSA9PT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfV09SS0ZMT1cpIHtcbiAgICAgICAgZWwuYnJhbmNoZXM/LmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICAgIGlmIChjYW5Ecm9wRm4odW5kZWZpbmVkLCBlbCwgYnJhbmNoLCBydWxlQ29ubmVjdGFibGVFbGVtZW50cykpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IHRvcCA9IHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5jYWxjRHJvcFpvbmVUb3BCcmFuY2hIKGVsLCBicmFuY2gpIDogdGhpcy5jYWxjRHJvcFpvbmVUb3BCcmFuY2goZWwsIGJyYW5jaCk7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5jYWxjRHJvcFpvbmVMZWZ0QnJhbmNoSChlbCwgYnJhbmNoKSA6IHRoaXMuY2FsY0Ryb3Bab25lTGVmdEJyYW5jaChlbCwgYnJhbmNoKTtcbiAgICAgICAgICB0aGlzLmNyZWF0ZURyb3Bab25lRWwoY29udGFpbmVyLCB0b3AsIGxlZnQsIGVsLCBicmFuY2gsIG9uRHJvcCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjYW5Ecm9wRm4odW5kZWZpbmVkLCBlbCwgdW5kZWZpbmVkLCBydWxlQ29ubmVjdGFibGVFbGVtZW50cykpIHJldHVybjtcblxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyA/IHRoaXMuY2FsY0Ryb3Bab25lVG9wTm9kZUgoZWwpIDogdGhpcy5jYWxjRHJvcFpvbmVUb3BOb2RlKGVsKTtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5jYWxjRHJvcFpvbmVMZWZ0Tm9kZUgoZWwpIDogdGhpcy5jYWxjRHJvcFpvbmVMZWZ0Tm9kZShlbCk7XG4gICAgICAgIHRoaXMuY3JlYXRlRHJvcFpvbmVFbChjb250YWluZXIsIHRvcCwgbGVmdCwgZWwsIHVuZGVmaW5lZCwgb25Ecm9wKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBk4buvIGxp4buHdSBuYXZpZ2F0aW9uIGxpbmUgKG5leHRfb3RoZXJfaWQpIHThu6sgZmxhdCBlbGVtZW50cyDEkeG7gyByZW5kZXIgcXVhIGRyYXctbGluZSBkaXJlY3RpdmUuXG4gICAqIFNlcnZpY2UgdOG7sSDEkeG7jWMgYG9yaWVudGF0aW9uKClgIMSR4buDIGNo4buNbiBwYXR0ZXJuIGVuZHBvaW50IHBow7kgaOG7o3AuXG4gICAqIENhbGxlciBjaOG7iSBj4bqnbiB0cnV54buBbiB2w6BvIGBkcmF3TGluZUZ1bmN0aW9uQ29udHJvbC5zZXREYXRhKC4uLilgLlxuICAgKi9cbiAgYnVpbGROYXZpZ2F0aW9uRGF0YShmbGF0RWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdLCBzdHlsZUNvbmZpZz86IElOYXZpZ2F0aW9uTGluZVN0eWxlQ29uZmlnKTogSURyYXdMaW5lRGF0YUlucHV0W10ge1xuICAgIHJldHVybiBMaWJzVWlEaWFncmFtRHJhd05hdmlnYXRpb25VdGlsLmJ1aWxkTmF2aWdhdGlvbkRhdGEoZmxhdEVsZW1lbnRzLCB0aGlzLm9yaWVudGF0aW9uKCksIHN0eWxlQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBYw7NhIHThuqV0IGPhuqMgZHJvcCB6b25lIFwiK1wiIGto4buPaSBET00gKi9cbiAgY2xlYXJEcm9wWm9uZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb25maWdDYW52YXMoKT8ubm9kZXNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcbiAgICBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLmRpYWdyYW0tZHJvcC16b25lJykuZm9yRWFjaCgoZWwpID0+IGVsLnJlbW92ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRHJvcFpvbmVFbChcbiAgICBjb250YWluZXI6IEhUTUxFbGVtZW50LFxuICAgIHRvcDogbnVtYmVyLFxuICAgIGxlZnQ6IG51bWJlcixcbiAgICBlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsXG4gICAgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2ggfCB1bmRlZmluZWQsXG4gICAgb25Ecm9wOiAoZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCB8IHVuZGVmaW5lZCwgZHJhZ0RhdGE6IHN0cmluZykgPT4gdm9pZFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpbmRpY2F0b3JTdHlsZTogSURyb3Bab25lSW5kaWNhdG9yU3R5bGUgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ0NhbnZhcygpPy5kcm9wWm9uZVN0eWxlO1xuICAgIGNvbnN0IFJFQ1RfVyA9IGVsZW1lbnQuc3BlY2lmaWNfd2lkdGggPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5XSURUSF9FTEVNRU5UX0RFRkFVTFQ7XG4gICAgY29uc3QgUkVDVF9IID0gZWxlbWVudC5zcGVjaWZpY19oZWlnaHQgPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5IRUlHSFRfRUxFTUVOVF9ERUZBVUxUO1xuXG4gICAgLy8gVMOibSBj4bunYSBuw7p0IHRyw7JuXG4gICAgY29uc3QgY2VudGVyWCA9IGxlZnQgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gdG9wICsgY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5BRERfSUNPTl9ESUFNRVRFUiAvIDI7XG5cbiAgICAvLyBIaXQgem9uZSB2w7QgaMOsbmg6IHLhu5luZyBoxqFuIHJlY3RhbmdsZSBt4buZdCBraG/huqNuIHBhZGRpbmcgxJHhu4MgYuG6r3QgZHJhZyBz4bubbSBoxqFuXG4gICAgY29uc3QgSElUX1BBRCA9IDIwO1xuICAgIGNvbnN0IEhJVF9XID0gUkVDVF9XICsgSElUX1BBRCAqIDI7XG4gICAgY29uc3QgSElUX0ggPSBSRUNUX0ggKyBISVRfUEFEICogMjtcbiAgICBjb25zdCBoaXRMZWZ0ID0gY2VudGVyWCAtIEhJVF9XIC8gMjtcbiAgICBjb25zdCBoaXRUb3AgPSBjZW50ZXJZIC0gSElUX0ggLyAyO1xuXG4gICAgLy8g4pSA4pSAIEhpdCB6b25lICh3cmFwcGVyIHbDtCBow6xuaCwgdsO5bmcgbmjhuq1uIGRyYWcgcuG7mW5nKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBjb25zdCBoaXRab25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaGl0Wm9uZS5jbGFzc05hbWUgPSAnZGlhZ3JhbS1kcm9wLXpvbmUnO1xuICAgIGhpdFpvbmUuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHtoaXRUb3B9cHg7XG4gICAgICBsZWZ0OiAke2hpdExlZnR9cHg7XG4gICAgICB6LWluZGV4OiA5O1xuICAgICAgd2lkdGg6ICR7SElUX1d9cHg7XG4gICAgICBoZWlnaHQ6ICR7SElUX0h9cHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYDtcblxuICAgIC8vIOKUgOKUgCBJbmRpY2F0b3IgKGNvbiBiw6puIHRyb25nLCBwaOG6p24gaGnhu4NuIHRo4buLKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICBjb25zdCBpbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBpbmRpY2F0b3Iuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJzsgLy8gdHLDoW5oIHRyYW5oIGNo4bqlcCBldmVudCB24bubaSBoaXRab25lXG5cbiAgICAvLyBW4buLIHRyw60gZG90IHRyb25nIGhpdFpvbmUgKGPEg24gZ2nhu69hIGhpdFpvbmUpXG4gICAgY29uc3QgZG90T2Zmc2V0TGVmdCA9IEhJVF9XIC8gMiAtIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVIgLyAyO1xuICAgIGNvbnN0IGRvdE9mZnNldFRvcCA9IEhJVF9IIC8gMiAtIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVIgLyAyO1xuXG4gICAgLy8gVuG7iyB0csOtIHJlY3RhbmdsZSB0cm9uZyBoaXRab25lIChjxINuIGdp4buvYSBoaXRab25lKVxuICAgIGNvbnN0IHJlY3RPZmZzZXRMZWZ0ID0gSElUX1BBRDtcbiAgICBjb25zdCByZWN0T2Zmc2V0VG9wID0gSElUX0ggLyAyIC0gUkVDVF9IIC8gMjtcblxuICAgIGNvbnN0IGFwcGx5RG90U3R5bGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gaW5kaWNhdG9yU3R5bGU7XG4gICAgICBjb25zdCBzaXplID0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5BRERfSUNPTl9ESUFNRVRFUjtcbiAgICAgIGNvbnN0IGJnID0gcz8uYmFja2dyb3VuZENvbG9yID8/ICcjM2I4MmY2JztcbiAgICAgIGNvbnN0IGljb25Db2xvciA9IHM/Lmljb25Db2xvciA/PyAnI2ZmZmZmZic7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gcz8ub3BhY2l0eSA/PyAwLjk1O1xuICAgICAgY29uc3QgYm9yZGVyUmFkaXVzID0gcz8uYm9yZGVyUmFkaXVzID8/ICc1MCUnO1xuXG4gICAgICBzZXRTdHlsZXNFbGVtZW50KGluZGljYXRvciwge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiBgJHtkb3RPZmZzZXRUb3B9cHhgLFxuICAgICAgICBsZWZ0OiBgJHtkb3RPZmZzZXRMZWZ0fXB4YCxcbiAgICAgICAgd2lkdGg6IGAke3NpemV9cHhgLFxuICAgICAgICBoZWlnaHQ6IGAke3NpemV9cHhgLFxuICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMC4xNXMgZWFzZScsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzPy5yZW5kZXJJbmRpY2F0b3IpIHtcbiAgICAgICAgaW5kaWNhdG9yLmlubmVySFRNTCA9IHMucmVuZGVySW5kaWNhdG9yKHNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kaWNhdG9yLmlubmVySFRNTCA9IGBcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiXG4gICAgICAgICAgICB3aWR0aDogJHtzaXplfXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAke3NpemV9cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2JnfTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyUmFkaXVzfTtcbiAgICAgICAgICAgIG9wYWNpdHk6ICR7b3BhY2l0eX07XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgICAgXCI+PGkgY2xhc3M9XCJsaWJzLXVpLWljb24tYWRkIGJlZm9yZTp0ZXh0LVske2ljb25Db2xvcn1dXCI+PC9pPjwvZGl2PlxuICAgICAgICBgO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBhcHBseVJlY3RTdHlsZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHMgPSBpbmRpY2F0b3JTdHlsZTtcbiAgICAgIGNvbnN0IGhvdmVyQmcgPSBzPy5ob3ZlckJhY2tncm91bmRDb2xvciA/PyAnI2VlZjRmZic7XG4gICAgICBjb25zdCBob3ZlckJvcmRlciA9IHM/LmhvdmVyQm9yZGVyQ29sb3IgPz8gJ3JnYmEoNTksIDEzMCwgMjQ2LCAwLjcpJztcbiAgICAgIGNvbnN0IGhvdmVyQm9yZGVyU3R5bGUgPSBzPy5ob3ZlckJvcmRlclN0eWxlID8/ICdkYXNoZWQnO1xuICAgICAgY29uc3QgaG92ZXJSYWRpdXMgPSBzPy5ob3ZlckJvcmRlclJhZGl1cyA/PyAxMDtcblxuICAgICAgc2V0U3R5bGVzRWxlbWVudChpbmRpY2F0b3IsIHtcbiAgICAgICAgdG9wOiBgJHtyZWN0T2Zmc2V0VG9wfXB4YCxcbiAgICAgICAgbGVmdDogYCR7cmVjdE9mZnNldExlZnR9cHhgLFxuICAgICAgICB3aWR0aDogYCR7UkVDVF9XfXB4YCxcbiAgICAgICAgaGVpZ2h0OiBgJHtSRUNUX0h9cHhgLFxuICAgICAgICBib3JkZXJSYWRpdXM6IGAke2hvdmVyUmFkaXVzfXB4YCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBob3ZlckJnLFxuICAgICAgICBib3JkZXI6IGAycHggJHtob3ZlckJvcmRlclN0eWxlfSAke2hvdmVyQm9yZGVyfWAsXG4gICAgICAgIHRyYW5zaXRpb246ICdhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBO4bq/dSBjw7MgaMOgbSByZW5kZXIgxJHhu5luZyBjaG8gdHLhuqFuZyB0aMOhaSBob3ZlciDigJQgZ+G7jWkgbsOzXG4gICAgICBpbmRpY2F0b3IuaW5uZXJIVE1MID0gcz8ucmVuZGVySG92ZXJJbmRpY2F0b3IgPyBzLnJlbmRlckhvdmVySW5kaWNhdG9yKCkgOiAnJztcbiAgICB9O1xuXG4gICAgYXBwbHlEb3RTdHlsZSgpO1xuICAgIGhpdFpvbmUuYXBwZW5kQ2hpbGQoaW5kaWNhdG9yKTtcblxuICAgIGhpdFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGU6IERyYWdFdmVudCkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXBwbHlSZWN0U3R5bGUoKTtcbiAgICB9KTtcblxuICAgIGhpdFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZTogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoZS5kYXRhVHJhbnNmZXIpIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgfSk7XG5cbiAgICBoaXRab25lLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIChlOiBEcmFnRXZlbnQpID0+IHtcbiAgICAgIGlmICghaGl0Wm9uZS5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgYXBwbHlEb3RTdHlsZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaGl0Wm9uZS5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGU6IERyYWdFdmVudCkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IHJhdyA9IGUuZGF0YVRyYW5zZmVyPy5nZXREYXRhKCdhcHBsaWNhdGlvbi9qc29uJykgPz8gJyc7XG4gICAgICBvbkRyb3AoZWxlbWVudCwgYnJhbmNoLCByYXcpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhpdFpvbmUpO1xuICB9XG5cbiAgLy8g4pSA4pSAIFZlcnRpY2FsIGRyb3Agem9uZSBoZWxwZXJzIChleGlzdGluZykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lVG9wQnJhbmNoKGVsOiBJRGlhZ3JhbUVsZW1lbnQsIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoKTogbnVtYmVyIHtcbiAgICBjb25zdCBvYyA9IGJyYW5jaC5ub2RlT3RoZXJDb25maWc7XG4gICAgaWYgKG9jKSByZXR1cm4gKG9jLnNwZWNpZmljX3kgPz8gMCkgKyAob2Muc3BlY2lmaWNfaGVpZ2h0ID8/IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9XQUlUX0RFRkFVTFQpICsgMTA7XG4gICAgcmV0dXJuIChicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPz8gMCkgKyAzMDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lTGVmdEJyYW5jaChlbDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCk6IG51bWJlciB7XG4gICAgY29uc3QgZmlyc3RFbCA9IGJyYW5jaC5lbGVtZW50cz8uWzBdO1xuICAgIGlmIChmaXJzdEVsPy50cmFuc2xhdGVYICE9PSB1bmRlZmluZWQpIHJldHVybiBmaXJzdEVsLnRyYW5zbGF0ZVggKyAoZmlyc3RFbC5zcGVjaWZpY193aWR0aCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLldJRFRIX0VMRU1FTlRfREVGQVVMVCkgLyAyIC0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5BRERfSUNPTl9ESUFNRVRFUiAvIDI7XG4gICAgcmV0dXJuIChlbC50cmFuc2xhdGVYID8/IDApICsgKGVsLnNwZWNpZmljX3dpZHRoID8/IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuV0lEVEhfRUxFTUVOVF9ERUZBVUxUKSAvIDIgLSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSIC8gMjtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lVG9wTm9kZShlbDogSURpYWdyYW1FbGVtZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBvYyA9IGVsLm5vZGVPdGhlckNvbmZpZztcbiAgICBpZiAob2MpIHJldHVybiAob2Muc3BlY2lmaWNfeSA/PyAwKSArIChvYy5zcGVjaWZpY19oZWlnaHQgPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVCkgKyAxMDtcbiAgICByZXR1cm4gKGVsLnRyYW5zbGF0ZVkgPz8gMCkgKyAoZWwuc3BlY2lmaWNfaGVpZ2h0ID8/IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuSEVJR0hUX0VMRU1FTlRfREVGQVVMVCkgKyAxMDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lTGVmdE5vZGUoZWw6IElEaWFncmFtRWxlbWVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChlbC50cmFuc2xhdGVYID8/IDApICsgKGVsLnNwZWNpZmljX3dpZHRoID8/IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuV0lEVEhfRUxFTUVOVF9ERUZBVUxUKSAvIDIgLSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSIC8gMjtcbiAgfVxuXG4gIC8vIOKUgOKUgCBIb3Jpem9udGFsIGRyb3Agem9uZSBoZWxwZXJzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvKipcbiAgICogSG9yaXpvbnRhbCBub2RlOiBcIitcIiBu4bqxbSBnaeG7r2EgxJHGsOG7nW5nIGxpbmUgbuG7kWkgMiBub2RlIOKAlCBjxINuIGdp4buvYSBZIGPhu6dhIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGNEcm9wWm9uZVRvcE5vZGVIKGVsOiBJRGlhZ3JhbUVsZW1lbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IEQgPSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSO1xuICAgIGNvbnN0IGNlbnRlclkgPSAoZWwudHJhbnNsYXRlWSA/PyAwKSArIChlbC5zcGVjaWZpY19oZWlnaHQgPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5IRUlHSFRfRUxFTUVOVF9ERUZBVUxUKSAvIDI7XG4gICAgcmV0dXJuIGNlbnRlclkgLSBEIC8gMjtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lTGVmdE5vZGVIKGVsOiBJRGlhZ3JhbUVsZW1lbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IEQgPSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSO1xuICAgIGNvbnN0IE0gPSBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfTUFSR0lOX0RFRkFVTFQ7XG4gICAgY29uc3Qgb2MgPSBlbC5ub2RlT3RoZXJDb25maWc7XG5cbiAgICBpZiAob2MpIHtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gKG9jLnNwZWNpZmljX3ggPz8gMCkgKyAob2Muc3BlY2lmaWNfd2lkdGggPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVCk7XG4gICAgICByZXR1cm4gcmlnaHQgKyBNIC8gMiAtIEQgLyAyO1xuICAgIH1cblxuICAgIGNvbnN0IHJpZ2h0ID0gKGVsLnRyYW5zbGF0ZVggPz8gMCkgKyAoZWwuc3BlY2lmaWNfd2lkdGggPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5XSURUSF9FTEVNRU5UX0RFRkFVTFQpO1xuICAgIC8vIE1pZHBvaW50IGPhu6dhIGtob+G6o25nIHRy4buRbmcgZ2nhu69hIG5vZGUgdsOgIG5vZGUgdGnhur9wIHRoZW8gKGdhcCA9IEVMRU1FTlRfTUFSR0lOX0RFRkFVTFQpXG4gICAgcmV0dXJuIHJpZ2h0ICsgTSAvIDIgLSBEIC8gMjtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIGJyYW5jaDogXCIrXCIgbuG6sW0gY8SDbiBnaeG7r2EgWSBj4bunYSBicmFuY2ggbGluZSwgc2F1IHBo4bqnbiB04butIGN14buRaSB0cm9uZyBuaMOhbmguXG4gICAqL1xuICBwcml2YXRlIGNhbGNEcm9wWm9uZVRvcEJyYW5jaEgoZWw6IElEaWFncmFtRWxlbWVudCwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gpOiBudW1iZXIge1xuICAgIGNvbnN0IEQgPSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSO1xuICAgIC8vIHNwZWNpZmljX3N0YXJ0X2JyYW5jaF95ID0gdMOibSBZIGPhu6dhIMSRxrDhu51uZyBuaMOhbmhcbiAgICBjb25zdCBjZW50ZXJZID0gYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF95ID8/IDA7XG4gICAgcmV0dXJuIGNlbnRlclkgLSBEIC8gMjtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lTGVmdEJyYW5jaEgoZWw6IElEaWFncmFtRWxlbWVudCwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gpOiBudW1iZXIge1xuICAgIGNvbnN0IEQgPSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSO1xuICAgIGNvbnN0IE0gPSBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfTUFSR0lOX0RFRkFVTFQ7XG5cbiAgICAvLyBTYXUgbm9kZU90aGVyQ29uZmlnIGPhu6dhIG5ow6FuaCAoY+G7lSBuaMOhbmgpXG4gICAgY29uc3Qgb2MgPSBicmFuY2gubm9kZU90aGVyQ29uZmlnO1xuICAgIGlmIChvYz8uc3BlY2lmaWNfeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gKG9jLnNwZWNpZmljX3ggPz8gMCkgKyAob2Muc3BlY2lmaWNfd2lkdGggPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVCkgKyBNIC8gMiAtIEQgLyAyO1xuICAgIH1cbiAgICAvLyBO4bq/dSBuaMOhbmgga2jDtG5nIGPDsyBub2RlT3RoZXJDb25maWc6IMSR4bq3dCBzYXUgxJFp4buDbSBy4bq9IG5ow6FuaFxuICAgIHJldHVybiAoYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF94ID8/IDApICsgTSAvIDIgLSBEIC8gMjtcbiAgfVxufVxuIl19
719
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS1kcmF3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvZGlhZ3JhbS1kcmF3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2xELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQUVoRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQWdCO0lBQ3pDLDZDQUE2QyxFQUFFLEVBQUU7SUFDakQsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQiw2QkFBNkIsRUFBRSxFQUFFO0lBQ2pDLHFDQUFxQyxFQUFFLEVBQUU7SUFDekMsOEJBQThCLEVBQUUsR0FBRztJQUNuQyxvQkFBb0IsRUFBRSxFQUFFO0lBQ3hCLHdCQUF3QixFQUFFLFFBQVE7SUFDbEMsd0JBQXdCLEVBQUUsR0FBRztJQUM3Qiw4Q0FBOEMsRUFBRSxFQUFFO0lBRWxELGdCQUFnQixFQUFFLEVBQUU7SUFDcEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsb0JBQW9CLEVBQUUsRUFBRTtJQUN4QiwwQkFBMEIsRUFBRSxDQUFDO0lBRTdCLGlCQUFpQixFQUFFLE1BQU07SUFDekIscUJBQXFCLEVBQUUsVUFBVTtJQUNqQyxxQkFBcUIsRUFBRSxHQUFHO0lBQzFCLHNCQUFzQixFQUFFLEVBQUU7SUFFMUIsaUJBQWlCLEVBQUUs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RCxNQUFNLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLHNCQUFzQixDQUFDO1FBRXhELDJDQUEyQztRQUMzQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ2xDLElBQUksRUFBRSxFQUFFLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuSCxDQUFDO1FBQ0QsNERBQTREO1FBQzVELE9BQU8sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7d0dBNXVCVSx3QkFBd0I7NEdBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEcmF3TGluZURhdGFJbnB1dCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtZHJhdy1saW5lJztcbmltcG9ydCB7IHNldFN0eWxlc0VsZW1lbnQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJUnVsZUNvbm5lY3RhYmxlLCBURHJvcFpvbmVDYW5Ecm9wRm4gfSBmcm9tICcuL2ludGVyZmFjZXMvY2FudmFzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0YURpYWdyYW1Db25maWdTdmcgfSBmcm9tICcuL2ludGVyZmFjZXMvY29vcmRpbmF0ZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElDYW52YXNDb25maWcsIElDdXN0b21DYW52YXNDb25maWcsIElEaWFncmFtRWxlbWVudCwgSURpYWdyYW1FbGVtZW50QnJhbmNoLCBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTmF2aWdhdGlvbkxpbmVTdHlsZUNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9uYXZpZ2F0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNb0xpYkRpYWdyYW1DYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsIH0gZnJvbSAnLi91dGlscy9jYWxjdWxhdG9yLWVsZW1lbnQudXRpbCc7XG5pbXBvcnQgeyBhcHBseUVsZW1lbnRTdHlsZSwgc2V0QXR0cmlidXRlU3ZnQW5kQXBwZW5kIH0gZnJvbSAnLi91dGlscy9kaWFncmFtLnV0aWwnO1xuaW1wb3J0IHsgTW9MaWJEaWFncmFtSG9yaXpvbnRhbENhbGN1bGF0b3JDb29yZGluYXRlc1V0aWwgfSBmcm9tICcuL3V0aWxzL2hvcml6b250YWwvY2FsY3VsYXRvci1jb29yZGluYXRlcy51dGlsJztcbmltcG9ydCB7IExpYnNVaURpYWdyYW1EcmF3TmF2aWdhdGlvblV0aWwgfSBmcm9tICcuL3V0aWxzL25hdmlnYXRpb24vYnVpbGQtbmF2aWdhdGlvbi1kYXRhLnV0aWwnO1xuXG5jb25zdCBjYW52YXNDb25maWcgPSBzaWduYWw8SUNhbnZhc0NvbmZpZz4oe1xuICBFTEVNRU5UX1dJRFRIX0RFRkFVTFRfQlJBTkNIX1dIRU5fTk9UX0VMRU1FTlQ6IDYwLFxuICBFTEVNRU5UX01BUkdJTl9ERUZBVUxUOiA2MCxcbiAgRUxFTUVOVF9NQVJHSU5fREVGQVVMVF9CUkFOQ0g6IDE2LFxuICBFTEVNRU5UX01BUkdJTl9CRVRXRUVOX0JSQU5DSF9ERUZBVUxUOiA2MCxcbiAgREVGQVVMVF9CUkFOQ0hfV0hFTl9OT19FTEVNRU5UOiAxMDAsXG4gIEVMRU1FTlRfSEVJR0hUX0NVUlZFOiAxMCxcbiAgRUxFTUVOVF9TVkdfU1RST0tFX0NPTE9SOiAnOWNhMmFkJyxcbiAgRUxFTUVOVF9TVkdfU1RST0tFX1dJRFRIOiAnMScsXG4gIEVMRU1FTlRfTUFSR0lOX0RFRkFVTFRfQlJBTkNIX1RPX0VMRU1FTlRfRklSU1Q6IDc4LFxuXG4gIERJU1RBTkNFX1RPX1dBSVQ6IDMwLFxuICBXQUlUX1RPX0VMRU1FTlQ6IDUwLFxuICBFTEVNRU5UX1dBSVRfREVGQVVMVDogMjgsXG4gIERJU1RBTkNFX1dBSVRfVE9fTkVYVF9MSU5FOiA0LFxuXG4gIFRZUEVfRUxFTUVOVF9FWElUOiAnRVhJVCcsXG4gIFRZUEVfRUxFTUVOVF9XT1JLRkxPVzogJ1dPUktGTE9XJyxcbiAgV0lEVEhfRUxFTUVOVF9ERUZBVUxUOiAxNjUsXG4gIEhFSUdIVF9FTEVNRU5UX0RFRkFVTFQ6IDQ4LFxuXG4gIEFERF9JQ09OX0RJQU1FVEVSOiAyNCxcbiAgSTE4Tl9FTkRfTk9ERTogJ2kxOG5fZW5kX2pvdXJuZXlfbmV3Jyxcbn0pO1xuXG5leHBvcnQgY29uc3QgY2FudmFzQ29uZmlnUmVhZG9ubHkgPSBjYW52YXNDb25maWcuYXNSZWFkb25seSgpO1xuZXhwb3J0IGNvbnN0IHN0b3JlRGF0YURlZmF1bHQgPSB7XG4gIHBvc2l0aW9uTWF4TGVmdDogMCxcbiAgcG9zaXRpb25NYXhUb3A6IDAsXG4gIHdpZHRoSGVpZ2h0U3ZnQ2FudmFzOiB7IGhlaWdodFN2Zzogd2luZG93LmlubmVySGVpZ2h0LCB3aWR0aFN2Zzogd2luZG93LmlubmVyV2lkdGggfSxcbn07XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpRGlhZ3JhbURyYXdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdDYW52YXMgPSBzaWduYWw8SUN1c3RvbUNhbnZhc0NvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb3JpZW50YXRpb24gPSBzaWduYWw8J3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJz4oJ3ZlcnRpY2FsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFN2ZyA9IHNpZ25hbDxTVkdQYXRoRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdHRyaWJ1dGVTdmdEID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudFJlZnMgPSBzaWduYWw8Q29tcG9uZW50UmVmPGFueT5bXT4oW10pO1xuXG4gIC8vIFZpcnR1YWxpemF0aW9uIFRyYWNraW5nXG4gIHByaXZhdGUgdmlydHVhbFZpZXdwb3J0PzogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcbiAgcHJpdmF0ZSB2aXJ0dWFsRmxhdEVsZW1lbnRzOiB7IGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudDsgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoOyBzaG91bGRTaG93QXJyb3c6IGJvb2xlYW47IGlzT3RoZXJDb25maWc6IGJvb2xlYW47IHBhcmVudElkPzogc3RyaW5nIHwgbnVtYmVyIH1bXSA9IFtdO1xuICBwcml2YXRlIHZpcnR1YWxGbGF0QnJhbmNoZXM6IElEaWFncmFtRWxlbWVudEJyYW5jaFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbE5vZGVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHsgY29tcG9uZW50PzogQ29tcG9uZW50UmVmPGFueT47IGFycm93PzogSFRNTEVsZW1lbnQ7IGxhYmVsPzogSFRNTEVsZW1lbnQgfT4oKTtcblxuICBwdWJsaWMgdXBkYXRlVmlld3BvcnQodnA6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0pIHtcbiAgICB0aGlzLnZpcnR1YWxWaWV3cG9ydCA9IHZwO1xuICAgIGlmICh0aGlzLmNvbmZpZ0NhbnZhcygpPy51c2VWaXJ0dWFsaXphdGlvblRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmFwcGx5VmlydHVhbGl6YXRpb25EaWZmKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0IHNldENvbmZpZyhjb25maWc6IElDdXN0b21DYW52YXNDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZ0NhbnZhcy5zZXQoY29uZmlnKTtcbiAgfVxuXG4gIHNldCBzZXRDb25maWdDYW52YXMoY29uZmlnOiBQYXJ0aWFsPElDYW52YXNDb25maWc+KSB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYW52YXNDb25maWcudXBkYXRlKChjdXJyZW50KSA9PiAoeyAuLi5jdXJyZW50LCAuLi5jb25maWcgfSkpO1xuICB9XG5cbiAgY29uZmlnWFlFbGVtZW50cyhlbGVtZW50czogQXJyYXk8SURpYWdyYW1FbGVtZW50PiwgdXBkYXRlU1ZHPzogYm9vbGVhbiwgcG9zaXRpb25YPzogbnVtYmVyKSB7XG4gICAgY29uc3Qgc3RvcmVEYXRhID0gdGhpcy5jb25maWdDYW52YXMoKT8uc3RvcmVEYXRhRGVmaW5lID8/IHN0b3JlRGF0YURlZmF1bHQ7XG4gICAgY29uc3QgbWF4TGVmdE9yaWdpbiA9IHN0b3JlRGF0YS5wb3NpdGlvbk1heExlZnQ7XG4gICAgY29uc3QgbWF4VG9wT3JpZ2luID0gc3RvcmVEYXRhLnBvc2l0aW9uTWF4VG9wID8/IDA7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIE1vTGliRGlhZ3JhbUhvcml6b250YWxDYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsLnNldFhZRWxlbWVudHMoZWxlbWVudHMsIHN0b3JlRGF0YSwgcG9zaXRpb25YKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTW9MaWJEaWFncmFtQ2FsY3VsYXRvckNvb3JkaW5hdGVzVXRpbC5zZXRYWUVsZW1lbnRzKGVsZW1lbnRzLCBzdG9yZURhdGEsIHBvc2l0aW9uWCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4TGVmdE5ldyA9IHN0b3JlRGF0YS5wb3NpdGlvbk1heExlZnQ7XG4gICAgY29uc3QgbWF4VG9wTmV3ID0gc3RvcmVEYXRhLnBvc2l0aW9uTWF4VG9wID8/IDA7XG5cbiAgICBpZiAoIXRoaXMuZWxlbWVudFN2ZygpKSB7XG4gICAgICB0aGlzLmVsZW1lbnRTdmcuc2V0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncGF0aCcpKTtcbiAgICB9XG5cbiAgICBpZiAoIXVwZGF0ZVNWRyAmJiB0aGlzLmNvbmZpZ0NhbnZhcygpPy5zdmdDb250YWluZXIgJiYgdGhpcy5lbGVtZW50U3ZnKCkpIHtcbiAgICAgIHNldEF0dHJpYnV0ZVN2Z0FuZEFwcGVuZCh0aGlzLmNvbmZpZ0NhbnZhcygpPy5zdmdDb250YWluZXIsIHRoaXMuZWxlbWVudFN2ZygpLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnICYmIG1heFRvcE9yaWdpbiAhPT0gbWF4VG9wTmV3KSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uRWxlbWVudHMobWF4VG9wTmV3LCBlbGVtZW50cywgc3RvcmVEYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ3ZlcnRpY2FsJyAmJiBtYXhMZWZ0T3JpZ2luICE9PSBtYXhMZWZ0TmV3KSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uRWxlbWVudHMobWF4TGVmdE5ldywgZWxlbWVudHMsIHN0b3JlRGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWxlbWVudFN2ZygpKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZVN2Z0Quc2V0KCcnKTtcbiAgICAgIHRoaXMuYnVpbGRTdmdFbGVtZW50KGVsZW1lbnRzKTtcbiAgICAgIHRoaXMuZWxlbWVudFN2ZygpPy5zZXRBdHRyaWJ1dGUoJ2QnLCB0aGlzLmF0dHJpYnV0ZVN2Z0QoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbkVsZW1lbnRzKHBvc2l0aW9uT2Zmc2V0OiBudW1iZXIsIGVsZW1lbnRzOiBBcnJheTxJRGlhZ3JhbUVsZW1lbnQ+LCBjb25maWc6IElEYXRhRGlhZ3JhbUNvbmZpZ1N2Zykge1xuICAgIGlmIChwb3NpdGlvbk9mZnNldCAmJiBwb3NpdGlvbk9mZnNldCA8IDApIHtcbiAgICAgIHBvc2l0aW9uT2Zmc2V0ID0gcG9zaXRpb25PZmZzZXQgKiAtMSArIDIwMDsgLy8gMTAwIGzDoCBraG/huqNuZyBjw6FjaCBjw6FjaCBiacOqblxuICAgIH1cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIE1vTGliRGlhZ3JhbUhvcml6b250YWxDYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsLnNldFhZRWxlbWVudHMoZWxlbWVudHMsIHsgLi4uY29uZmlnLCB1cGRhdGVTVkc6IHRydWUgfSwgcG9zaXRpb25PZmZzZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBNb0xpYkRpYWdyYW1DYWxjdWxhdG9yQ29vcmRpbmF0ZXNVdGlsLnNldFhZRWxlbWVudHMoZWxlbWVudHMsIHsgLi4uY29uZmlnLCB1cGRhdGVTVkc6IHRydWUgfSwgcG9zaXRpb25PZmZzZXQpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZWxlbWVudFN2ZygpKSB7XG4gICAgICB0aGlzLmVsZW1lbnRTdmcuc2V0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncGF0aCcpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZWxlbWVudFN2ZygpKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZVN2Z0Quc2V0KCcnKTtcbiAgICAgIHRoaXMuYnVpbGRTdmdFbGVtZW50KGVsZW1lbnRzKTtcbiAgICAgIHRoaXMuZWxlbWVudFN2ZygpPy5zZXRBdHRyaWJ1dGUoJ2QnLCB0aGlzLmF0dHJpYnV0ZVN2Z0QoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN2Z0VsZW1lbnQoZWxlbWVudHM6IEFycmF5PElEaWFncmFtRWxlbWVudD4pIHtcbiAgICBlbGVtZW50cy5mb3JFYWNoKChjdXJyZW50RWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmF0dHJpYnV0ZVN2Z0QpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVTdmdELnVwZGF0ZSgocHJldikgPT4gYCR7cHJldiA/PyAnJ30gJHtjdXJyZW50RWxlbWVudC5hdHRyaWJ1dGVTdmdEfWApO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRFbGVtZW50Lm5vZGVPdGhlckNvbmZpZz8uYXR0cmlidXRlU3ZnRCkge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZVN2Z0QudXBkYXRlKChwcmV2KSA9PiBgJHtwcmV2ID8/ICcnfSAke2N1cnJlbnRFbGVtZW50Lm5vZGVPdGhlckNvbmZpZz8uYXR0cmlidXRlU3ZnRH1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghY3VycmVudEVsZW1lbnQuYnJhbmNoZXM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRFbGVtZW50LmJyYW5jaGVzLmZvckVhY2goKGJyYW5jaCkgPT4ge1xuICAgICAgICBpZiAoYnJhbmNoLmF0dHJpYnV0ZVN2Z0QpIHtcbiAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVN2Z0QudXBkYXRlKChwcmV2KSA9PiBgJHtwcmV2ID8/ICcnfSAke2JyYW5jaC5hdHRyaWJ1dGVTdmdEfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChicmFuY2gubm9kZU90aGVyQ29uZmlnPy5hdHRyaWJ1dGVTdmdEKSB7XG4gICAgICAgICAgdGhpcy5hdHRyaWJ1dGVTdmdELnVwZGF0ZSgocHJldikgPT4gYCR7cHJldiA/PyAnJ30gJHticmFuY2gubm9kZU90aGVyQ29uZmlnPy5hdHRyaWJ1dGVTdmdEfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFicmFuY2guZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWlsZFN2Z0VsZW1lbnQoYnJhbmNoLmVsZW1lbnRzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB04bqldCBj4bqjIG5vZGVzIHThu6sgZWxlbWVudHMgYXJyYXlcbiAgICovXG4gIHJlbmRlck5vZGVzKGVsZW1lbnRzOiBBcnJheTxJRGlhZ3JhbUVsZW1lbnQ+KSB7XG4gICAgaWYgKHRoaXMuY29uZmlnQ2FudmFzKCk/LnVzZVZpcnR1YWxpemF0aW9uVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZXh0cmFjdFZpcnR1YWxFbGVtZW50cyhlbGVtZW50cyk7XG4gICAgICB0aGlzLmFwcGx5VmlydHVhbGl6YXRpb25EaWZmKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhck5vZGVzKCk7XG4gICAgdGhpcy5yZW5kZXJFbGVtZW50c1JlY3Vyc2l2ZWx5KGVsZW1lbnRzLCB0cnVlKTtcbiAgICB0aGlzLnJlbmRlckJyYW5jaExhYmVscyhlbGVtZW50cyk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RWaXJ0dWFsRWxlbWVudHMoZWxlbWVudHM6IElEaWFncmFtRWxlbWVudFtdKSB7XG4gICAgdGhpcy52aXJ0dWFsRmxhdEVsZW1lbnRzID0gW107XG4gICAgdGhpcy52aXJ0dWFsRmxhdEJyYW5jaGVzID0gW107XG4gICAgY29uc3Qgc2NhbiA9IChsaXN0OiBJRGlhZ3JhbUVsZW1lbnRbXSwgYnJhbmNoPzogSURpYWdyYW1FbGVtZW50QnJhbmNoLCBpc0ZpcnN0TGV2ZWwgPSB0cnVlKSA9PiB7XG4gICAgICBsaXN0LmZvckVhY2goKGVsLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRTaG93QXJyb3cgPSAhKGlzRmlyc3RMZXZlbCAmJiBpbmRleCA9PT0gMCk7XG4gICAgICAgIHRoaXMudmlydHVhbEZsYXRFbGVtZW50cy5wdXNoKHsgZWxlbWVudDogZWwsIGJyYW5jaCwgaXNPdGhlckNvbmZpZzogZmFsc2UsIHNob3VsZFNob3dBcnJvdywgcGFyZW50SWQ6IGVsLmlkIH0pO1xuICAgICAgICBpZiAoZWwubm9kZU90aGVyQ29uZmlnKSB0aGlzLnZpcnR1YWxGbGF0RWxlbWVudHMucHVzaCh7IGVsZW1lbnQ6IGVsLm5vZGVPdGhlckNvbmZpZywgYnJhbmNoLCBpc090aGVyQ29uZmlnOiB0cnVlLCBzaG91bGRTaG93QXJyb3c6IGZhbHNlLCBwYXJlbnRJZDogZWwuaWQgfSk7XG4gICAgICAgIGlmIChlbC5icmFuY2hlcykge1xuICAgICAgICAgIGVsLmJyYW5jaGVzLmZvckVhY2goKGIsIGJJbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFiLmxhYmVsKSBiLmxhYmVsID0gYE5ow6FuaCAke2JJbmRleCArIDF9YDtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbEZsYXRCcmFuY2hlcy5wdXNoKGIpO1xuICAgICAgICAgICAgaWYgKGIuZWxlbWVudHMpIHNjYW4oYi5lbGVtZW50cywgYiwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKGIubm9kZU90aGVyQ29uZmlnKSB0aGlzLnZpcnR1YWxGbGF0RWxlbWVudHMucHVzaCh7IGVsZW1lbnQ6IGIubm9kZU90aGVyQ29uZmlnLCBicmFuY2g6IGIsIGlzT3RoZXJDb25maWc6IHRydWUsIHNob3VsZFNob3dBcnJvdzogZmFsc2UsIHBhcmVudElkOiAnYnJhbmNoXycgKyBiSW5kZXggKyAnXycgKyBlbC5pZCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBzY2FuKGVsZW1lbnRzLCB1bmRlZmluZWQsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZpcnR1YWxpemF0aW9uRGlmZigpIHtcbiAgICBjb25zdCB2cCA9IHRoaXMudmlydHVhbFZpZXdwb3J0O1xuICAgIGlmICghdnApIHJldHVybjtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ0NhbnZhcygpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbmZpZz8ubm9kZXNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWNvbmZpZykgcmV0dXJuO1xuXG4gICAgY29uc3QgYnVmZmVyID0gMzAwO1xuICAgIGNvbnN0IHZpc2libGVJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIHRoaXMudmlydHVhbEZsYXRFbGVtZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGl0ZW0uZWxlbWVudDtcbiAgICAgIGlmIChlbC50cmFuc2xhdGVYID09PSB1bmRlZmluZWQgfHwgZWwudHJhbnNsYXRlWSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICBpZiAoZWwudHJhbnNsYXRlWCArIChlbC5zcGVjaWZpY193aWR0aCB8fCAxNjUpIDwgdnAueCAtIGJ1ZmZlciB8fCBlbC50cmFuc2xhdGVYID4gdnAueCArIHZwLndpZHRoICsgYnVmZmVyIHx8IGVsLnRyYW5zbGF0ZVkgKyAoZWwuc3BlY2lmaWNfaGVpZ2h0IHx8IDQ4KSA8IHZwLnkgLSBidWZmZXIgfHwgZWwudHJhbnNsYXRlWSA+IHZwLnkgKyB2cC5oZWlnaHQgKyBidWZmZXIpIHJldHVybjtcblxuICAgICAgY29uc3QgaWQgPSBTdHJpbmcoaXRlbS5wYXJlbnRJZCkgKyAoaXRlbS5pc090aGVyQ29uZmlnID8gJ19vdGhlcicgOiAnJyk7XG4gICAgICB2aXNpYmxlSWRzLmFkZChpZCk7XG5cbiAgICAgIGlmICghdGhpcy52aXJ0dWFsTm9kZXNNYXAuaGFzKGlkKSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gaXRlbS5pc090aGVyQ29uZmlnID8gY29uZmlnLm5vZGVPdGhlckNvbmZpZ0NvbXBvbmVudFR5cGUgOiBjb25maWcubm9kZUNvbXBvbmVudFR5cGU7XG4gICAgICAgIGlmIChjb21wb25lbnRUeXBlICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgY29uc3QgcmVmID0gY29uZmlnLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICAgIHJlZi5zZXRJbnB1dCgnZWxlbWVudCcsIGVsKTtcbiAgICAgICAgICBpZiAoaXRlbS5icmFuY2gpIHJlZi5zZXRJbnB1dCgnYnJhbmNoJywgaXRlbS5icmFuY2gpO1xuICAgICAgICAgIHJlZi5zZXRJbnB1dCgnb3JpZW50YXRpb24nLCB0aGlzLm9yaWVudGF0aW9uKCkpO1xuXG4gICAgICAgICAgY29uc3QgZG9tRWwgPSByZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBkb21FbC5jbGFzc0xpc3QuYWRkKCdkaWFncmFtLW5vZGUtZHluYW1pYycpO1xuICAgICAgICAgIGFwcGx5RWxlbWVudFN0eWxlKGRvbUVsLCBlbCk7XG4gICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRvbUVsKTtcblxuICAgICAgICAgIGxldCBhcnJvdzogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKGl0ZW0uc2hvdWxkU2hvd0Fycm93ICYmICFpdGVtLmlzT3RoZXJDb25maWcpIHtcbiAgICAgICAgICAgIGFycm93ID0gdGhpcy5jcmVhdGVBcnJvd0luZGljYXRvcihlbCwgY29udGFpbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXNNYXAuc2V0KGlkLCB7IGNvbXBvbmVudDogcmVmLCBhcnJvdyB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLnZpcnR1YWxOb2Rlc01hcC5nZXQoaWQpO1xuICAgICAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgICBpZiAoY2FjaGUuY29tcG9uZW50KSBhcHBseUVsZW1lbnRTdHlsZShjYWNoZS5jb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgZWwpO1xuICAgICAgICAgIGlmIChjYWNoZS5hcnJvdykge1xuICAgICAgICAgICAgY29uc3QgYXJyb3dTaXplID0gMTY7XG4gICAgICAgICAgICBjb25zdCBub2RlV2lkdGggPSBlbC5zcGVjaWZpY193aWR0aCA/PyAxNjU7XG4gICAgICAgICAgICBjb25zdCBub2RlSGVpZ2h0ID0gZWwuc3BlY2lmaWNfaGVpZ2h0ID8/IDQ4O1xuICAgICAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICAgIGNhY2hlLmFycm93LmlubmVySFRNTCA9IGBcbiAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIiR7YXJyb3dTaXplfVwiIGhlaWdodD1cIiR7YXJyb3dTaXplfVwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggNEwxNiA4TDggMTJaXCIgZmlsbD1cIiM5Y2EzYWZcIi8+XG4gICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICAgICAgY2FjaGUuYXJyb3cuc3R5bGUubGVmdCA9IGAke2VsLnRyYW5zbGF0ZVggLSBhcnJvd1NpemV9cHhgO1xuICAgICAgICAgICAgICBjYWNoZS5hcnJvdy5zdHlsZS50b3AgPSBgJHtlbC50cmFuc2xhdGVZICsgbm9kZUhlaWdodCAvIDIgLSBhcnJvd1NpemUgLyAyfXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNhY2hlLmFycm93LmlubmVySFRNTCA9IGBcbiAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIiR7YXJyb3dTaXplfVwiIGhlaWdodD1cIiR7YXJyb3dTaXplfVwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMTZMNCAxMkgxMkw4IDE2WlwiIGZpbGw9XCIjOWNhM2FmXCIvPlxuICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICAgIGNhY2hlLmFycm93LnN0eWxlLmxlZnQgPSBgJHtlbC50cmFuc2xhdGVYICsgbm9kZVdpZHRoIC8gMiAtIGFycm93U2l6ZSAvIDJ9cHhgO1xuICAgICAgICAgICAgICBjYWNoZS5hcnJvdy5zdHlsZS50b3AgPSBgJHtlbC50cmFuc2xhdGVZIC0gYXJyb3dTaXplfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudmlydHVhbEZsYXRCcmFuY2hlcy5mb3JFYWNoKChicmFuY2gsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB4ID0gYnJhbmNoLnNwZWNpZmljX3N0YXJ0X2JyYW5jaF94O1xuICAgICAgY29uc3QgeSA9IGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeTtcbiAgICAgIGlmICh4ID09PSB1bmRlZmluZWQgfHwgeSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICBpZiAoeCA8IHZwLnggLSBidWZmZXIgfHwgeCA+IHZwLnggKyB2cC53aWR0aCArIGJ1ZmZlciB8fCB5IDwgdnAueSAtIGJ1ZmZlciB8fCB5ID4gdnAueSArIHZwLmhlaWdodCArIGJ1ZmZlcikgcmV0dXJuO1xuXG4gICAgICBjb25zdCBpZCA9ICdicmFuY2hfJyArIGluZGV4ICsgJ18nICsgTWF0aC5yb3VuZCh4KSArICdfJyArIE1hdGgucm91bmQoeSk7XG4gICAgICB2aXNpYmxlSWRzLmFkZChpZCk7XG5cbiAgICAgIGlmICghdGhpcy52aXJ0dWFsTm9kZXNNYXAuaGFzKGlkKSkge1xuICAgICAgICBjb25zdCBsYWJlbERpdiA9IHRoaXMuY3JlYXRlQnJhbmNoTGFiZWwoYnJhbmNoKTtcbiAgICAgICAgaWYgKGxhYmVsRGl2KSB0aGlzLnZpcnR1YWxOb2Rlc01hcC5zZXQoaWQsIHsgbGFiZWw6IGxhYmVsRGl2IH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLnZpcnR1YWxOb2Rlc01hcC5nZXQoaWQpO1xuICAgICAgICBpZiAoY2FjaGU/LmxhYmVsKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWxEaXYgPSBjYWNoZS5sYWJlbDtcbiAgICAgICAgICBjb25zdCBsYWJlbFJlY3QgPSBsYWJlbERpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBjb25zdCBsYWJlbFcgPSBsYWJlbFJlY3Qud2lkdGggfHwgbGFiZWxEaXYub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgY29uc3QgbGFiZWxIID0gbGFiZWxSZWN0LmhlaWdodCB8fCBsYWJlbERpdi5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgbGFiZWxEaXYuc3R5bGUubGVmdCA9IGAke3ggLSBsYWJlbFcgLyAyIC0gNH1weGA7XG4gICAgICAgICAgICBsYWJlbERpdi5zdHlsZS50b3AgPSBgJHt5IC0gbGFiZWxIIC8gMiArIDR9cHhgO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYWJlbERpdi5zdHlsZS5sZWZ0ID0gYCR7eCArIDR9cHhgO1xuICAgICAgICAgICAgbGFiZWxEaXYuc3R5bGUudG9wID0gYCR7eSAtIGxhYmVsSCAvIDJ9cHhgOyAvLyBjZW50ZXIgb3ZlciB3aXJlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBBcnJheS5mcm9tKHRoaXMudmlydHVhbE5vZGVzTWFwLmVudHJpZXMoKSkuZm9yRWFjaCgoW2lkLCBjYWNoZV0pID0+IHtcbiAgICAgIGlmICghdmlzaWJsZUlkcy5oYXMoaWQpKSB7XG4gICAgICAgIGNhY2hlLmNvbXBvbmVudD8uZGVzdHJveSgpO1xuICAgICAgICBjYWNoZS5hcnJvdz8ucmVtb3ZlKCk7XG4gICAgICAgIGNhY2hlLmxhYmVsPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXNNYXAuZGVsZXRlKGlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgZWxlbWVudHMgdsOgIGJyYW5jaGVzIG3hu5l0IGPDoWNoIMSR4buHIHF1eVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJFbGVtZW50c1JlY3Vyc2l2ZWx5KGVsZW1lbnRzOiBBcnJheTxJRGlhZ3JhbUVsZW1lbnQ+LCBpc0ZpcnN0TGV2ZWwgPSB0cnVlLCBicmFuY2g/OiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gpIHtcbiAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHJhbnNsYXRlWCAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQudHJhbnNsYXRlWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIE1haW4gbm9kZTogY8OzIGFycm93IG7hur91IGtow7RuZyBwaOG6o2kgZWxlbWVudCDEkeG6p3UgdGnDqm4gY+G7p2EgbGV2ZWwgxJHhuqd1XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3dBcnJvdyA9ICEoaXNGaXJzdExldmVsICYmIGluZGV4ID09PSAwKTtcbiAgICAgICAgdGhpcy5jcmVhdGVOb2RlKGVsZW1lbnQsIGJyYW5jaCwgc2hvdWxkU2hvd0Fycm93LCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbmRlciBub2RlT3RoZXJDb25maWcgbuG6v3UgY8OzIChub2RlcyBwaOG7pSkgLSBLSMOUTkcgY8OzIGFycm93XG4gICAgICBpZiAoZWxlbWVudC5ub2RlT3RoZXJDb25maWc/LnRyYW5zbGF0ZVggIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50Lm5vZGVPdGhlckNvbmZpZy50cmFuc2xhdGVZICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVOb2RlKGVsZW1lbnQubm9kZU90aGVyQ29uZmlnLCBicmFuY2gsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVuZGVyIGJyYW5jaGVzIG7hur91IGPDs1xuICAgICAgaWYgKGVsZW1lbnQuYnJhbmNoZXMgJiYgZWxlbWVudC5icmFuY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVsZW1lbnQuYnJhbmNoZXMuZm9yRWFjaCgoYnJhbmNoKSA9PiB7XG4gICAgICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cyAmJiBicmFuY2guZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJFbGVtZW50c1JlY3Vyc2l2ZWx5KGJyYW5jaC5lbGVtZW50cywgZmFsc2UsIGJyYW5jaCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChicmFuY2gubm9kZU90aGVyQ29uZmlnPy50cmFuc2xhdGVYICE9PSB1bmRlZmluZWQgJiYgYnJhbmNoLm5vZGVPdGhlckNvbmZpZy50cmFuc2xhdGVZICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTm9kZShicmFuY2gubm9kZU90aGVyQ29uZmlnLCBicmFuY2gsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFThuqFvIG3hu5l0IG5vZGUgY29tcG9uZW50IMSR4buZbmdcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByaXZhdGUgY3JlYXRlTm9kZShlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoIHwgdW5kZWZpbmVkLCBzaG91bGRTaG93QXJyb3c6IGJvb2xlYW4sIGlzTm9kZU90aGVyQ29uZmlnOiBib29sZWFuKTogQ29tcG9uZW50UmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnQ2FudmFzKCk7XG4gICAgaWYgKCFjb25maWc/LnZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnVzZVZpcnR1YWxpemF0aW9uVGVtcGxhdGUpIHtcbiAgICAgIGlmIChjb25maWcubm9kZXNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHNob3VsZFNob3dBcnJvdyAmJiAhaXNOb2RlT3RoZXJDb25maWcpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUFycm93SW5kaWNhdG9yKGVsZW1lbnQsIGNvbmZpZy5ub2Rlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBpc05vZGVPdGhlckNvbmZpZyA/IGNvbmZpZy5ub2RlT3RoZXJDb25maWdDb21wb25lbnRUeXBlIDogY29uZmlnLm5vZGVDb21wb25lbnRUeXBlO1xuXG4gICAgaWYgKCFjb21wb25lbnRUeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gY29uZmlnLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgIGNvbnN0IGVsID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ2VsZW1lbnQnLCBlbGVtZW50KTtcbiAgICBpZiAoYnJhbmNoKSB7XG4gICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ2JyYW5jaCcsIGJyYW5jaCk7XG4gICAgfVxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb3JpZW50YXRpb24nLCB0aGlzLm9yaWVudGF0aW9uKCkpO1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2RpYWdyYW0tbm9kZS1keW5hbWljJyk7XG5cbiAgICBhcHBseUVsZW1lbnRTdHlsZShlbCwgZWxlbWVudCk7XG5cbiAgICBpZiAoY29uZmlnLm5vZGVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25maWcubm9kZXNDb250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlbCk7XG5cbiAgICAgIGlmIChzaG91bGRTaG93QXJyb3cgJiYgIWlzTm9kZU90aGVyQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQXJyb3dJbmRpY2F0b3IoZWxlbWVudCwgY29uZmlnLm5vZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmcy51cGRhdGUoKHJlZnMpID0+IFsuLi5yZWZzLCBjb21wb25lbnRSZWZdKTsgLy8gTMawdSByZWZlcmVuY2UgxJHhu4MgY2xlYW51cCBzYXVcblxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdOG6pXQgY+G6oyBub2RlcyDEkcOjIHThuqFvXG4gICAqL1xuICBjbGVhck5vZGVzKCkge1xuICAgIHRoaXMuY29tcG9uZW50UmVmcygpLmZvckVhY2goKHJlZikgPT4ge1xuICAgICAgcmVmLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuc2V0KFtdKTtcblxuICAgIEFycmF5LmZyb20odGhpcy52aXJ0dWFsTm9kZXNNYXAudmFsdWVzKCkpLmZvckVhY2goKGNhY2hlKSA9PiB7XG4gICAgICBjYWNoZS5jb21wb25lbnQ/LmRlc3Ryb3koKTtcbiAgICAgIGNhY2hlLmFycm93Py5yZW1vdmUoKTtcbiAgICAgIGNhY2hlLmxhYmVsPy5yZW1vdmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLnZpcnR1YWxOb2Rlc01hcC5jbGVhcigpO1xuXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdDYW52YXMoKTtcbiAgICBjb25zdCBub2Rlc0NvbnRhaW5lciA9IGNvbmZpZz8ubm9kZXNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKG5vZGVzQ29udGFpbmVyKSB7XG4gICAgICBpZiAoIWNvbmZpZz8udXNlVmlydHVhbGl6YXRpb25UZW1wbGF0ZSkge1xuICAgICAgICBjb25zdCBkeW5hbWljTm9kZXMgPSBub2Rlc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcuZGlhZ3JhbS1ub2RlLWR5bmFtaWMnKTtcbiAgICAgICAgZHluYW1pY05vZGVzLmZvckVhY2goKG5vZGU6IEVsZW1lbnQpID0+IG5vZGUucmVtb3ZlKCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFiZWxzID0gbm9kZXNDb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLmJyYW5jaC1sYWJlbCcpO1xuICAgICAgbGFiZWxzLmZvckVhY2goKGxhYmVsOiBFbGVtZW50KSA9PiBsYWJlbC5yZW1vdmUoKSk7XG4gICAgICBjb25zdCBhcnJvd3MgPSBub2Rlc0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcubm9kZS1hcnJvdy1pbmRpY2F0b3InKTtcbiAgICAgIGFycm93cy5mb3JFYWNoKChhcnJvdzogRWxlbWVudCkgPT4gYXJyb3cucmVtb3ZlKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBU4bqhbyBtxalpIHTDqm4gaW5kaWNhdG9yIGNo4buJIGjGsOG7m25nIHbDoG8gbm9kZS5cbiAgICogLSB2ZXJ0aWNhbDogICBtxalpIHTDqm4g4pa8IHBow61hIFRSw4pOIG5vZGUgIChsdeG7k25nIHRyw6puIOKGkiB4deG7kW5nKVxuICAgKiAtIGhvcml6b250YWw6IG3FqWkgdMOqbiDilrogcGjDrWEgVFLDgUkgbm9kZSAgKGx14buTbmcgdHLDoWkg4oaSIHBo4bqjaSlcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQXJyb3dJbmRpY2F0b3IoZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBjb250YWluZXI6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGlmIChlbGVtZW50LnRyYW5zbGF0ZVggPT09IHVuZGVmaW5lZCB8fCBlbGVtZW50LnRyYW5zbGF0ZVkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBhcnJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFycm93LmNsYXNzTmFtZSA9ICdub2RlLWFycm93LWluZGljYXRvcic7XG4gICAgYXJyb3cuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGFycm93LnN0eWxlLnpJbmRleCA9ICcxJztcbiAgICBhcnJvdy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXG4gICAgY29uc3QgYXJyb3dTaXplID0gMTY7XG4gICAgY29uc3Qgbm9kZVdpZHRoID0gZWxlbWVudC5zcGVjaWZpY193aWR0aCA/PyAwO1xuICAgIGNvbnN0IG5vZGVIZWlnaHQgPSBlbGVtZW50LnNwZWNpZmljX2hlaWdodCA/PyAwO1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAvLyBNxalpIHTDqm4g4pa6IOG7nyBiw6puIFRSw4FJIG5vZGUsIGPEg24gZ2nhu69hIHRoZW8gY2hp4buBdSBjYW9cbiAgICAgIGFycm93LmlubmVySFRNTCA9IGBcbiAgICAgICAgPHN2ZyB3aWR0aD1cIiR7YXJyb3dTaXplfVwiIGhlaWdodD1cIiR7YXJyb3dTaXplfVwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggNEwxNiA4TDggMTJaXCIgZmlsbD1cIiM5Y2EzYWZcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgYDtcbiAgICAgIGFycm93LnN0eWxlLmxlZnQgPSBgJHtlbGVtZW50LnRyYW5zbGF0ZVggLSBhcnJvd1NpemV9cHhgO1xuICAgICAgYXJyb3cuc3R5bGUudG9wID0gYCR7ZWxlbWVudC50cmFuc2xhdGVZICsgbm9kZUhlaWdodCAvIDIgLSBhcnJvd1NpemUgLyAyfXB4YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTcWpaSB0w6puIOKWvCDhu58gcGjDrWEgVFLDik4gbm9kZSwgY8SDbiBnaeG7r2EgdGhlbyBjaGnhu4F1IHLhu5luZ1xuICAgICAgYXJyb3cuaW5uZXJIVE1MID0gYFxuICAgICAgICA8c3ZnIHdpZHRoPVwiJHthcnJvd1NpemV9XCIgaGVpZ2h0PVwiJHthcnJvd1NpemV9XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxNkw0IDEySDEyTDggMTZaXCIgZmlsbD1cIiM5Y2EzYWZcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgYDtcbiAgICAgIGFycm93LnN0eWxlLmxlZnQgPSBgJHtlbGVtZW50LnRyYW5zbGF0ZVggKyBub2RlV2lkdGggLyAyIC0gYXJyb3dTaXplIC8gMn1weGA7XG4gICAgICBhcnJvdy5zdHlsZS50b3AgPSBgJHtlbGVtZW50LnRyYW5zbGF0ZVkgLSBhcnJvd1NpemV9cHhgO1xuICAgIH1cblxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChhcnJvdyk7XG4gICAgcmV0dXJuIGFycm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBicmFuY2ggbGFiZWxzICh0ZXh0IGFubm90YXRpb25zIG9uIGJyYW5jaGVzKVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJCcmFuY2hMYWJlbHMoZWxlbWVudHM6IEFycmF5PElEaWFncmFtRWxlbWVudD4pIHtcbiAgICBjb25zdCBzdmdDb250YWluZXIgPSB0aGlzLmNvbmZpZ0NhbnZhcygpPy5zdmdDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFzdmdDb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5icmFuY2hlcyAmJiBlbGVtZW50LmJyYW5jaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZWxlbWVudC5icmFuY2hlcy5mb3JFYWNoKChicmFuY2gsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeCAhPT0gdW5kZWZpbmVkICYmIGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoIWJyYW5jaC5sYWJlbCkge1xuICAgICAgICAgICAgICBicmFuY2gubGFiZWwgPSBgTmjDoW5oICR7aW5kZXggKyAxfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUJyYW5jaExhYmVsKGJyYW5jaCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJyYW5jaC5lbGVtZW50cyAmJiBicmFuY2guZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJCcmFuY2hMYWJlbHMoYnJhbmNoLmVsZW1lbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCcmFuY2hMYWJlbChicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ0NhbnZhcygpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbmZpZz8ubm9kZXNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBsYWJlbERpdi5jbGFzc05hbWUgPSBgYnJhbmNoLWxhYmVsICR7YnJhbmNoLmxhYmVsQ2xhc3NOYW1lIHx8ICdsaWJzLXVpLWZvbnQtaDdyJ31gO1xuICAgIGxhYmVsRGl2LnRleHRDb250ZW50ID0gYnJhbmNoLmxhYmVsIHx8ICcnO1xuXG4gICAgbGFiZWxEaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGxhYmVsRGl2LnN0eWxlLnBhZGRpbmcgPSAnMnB4IDdweCc7XG4gICAgbGFiZWxEaXYuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzEwcHgnO1xuICAgIGxhYmVsRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJyYW5jaC5sYWJlbEJnQ29sb3IgfHwgJyNmM2Y0ZjYnO1xuICAgIGxhYmVsRGl2LnN0eWxlLmNvbG9yID0gYnJhbmNoLmxhYmVsQ29sb3IgfHwgJyMzNzQxNTEnO1xuICAgIGxhYmVsRGl2LnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcbiAgICBsYWJlbERpdi5zdHlsZS56SW5kZXggPSAnMic7XG4gICAgbGFiZWxEaXYuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcblxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChsYWJlbERpdik7XG5cbiAgICBjb25zdCBzdGFydFggPSBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPz8gMDtcbiAgICBjb25zdCBzdGFydFkgPSBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPz8gMDtcbiAgICBjb25zdCBsYWJlbFcgPSBsYWJlbERpdi5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBsYWJlbEggPSBsYWJlbERpdi5vZmZzZXRIZWlnaHQgfHwgMTg7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIC8qKlxuICAgICAgICogSG9yaXpvbnRhbDogbGFiZWwgbuG6sW0gVFLDik4gxJHGsOG7nW5nIGxpbmUgbuG6sW0gbmdhbmcuXG4gICAgICAgKiBzcGVjaWZpY19zdGFydF9icmFuY2ggPSDEkWnhu4NtIGLhuq90IMSR4bqndSDEkW/huqFuIHRo4bqzbmcgbmdhbmcgxJHhur9uIGVsZW1lbnQuXG4gICAgICAgKiDEkOG6t3QgbGFiZWwgdOG7i25oIHRp4bq/biBzYW5nIHBo4bqjaSA4cHggdOG7qyBuZ2/hurd0IG5ow6FuaCwgdsOgIGPEg24gZ2nhu69hIGTDonkuXG4gICAgICAgKi9cbiAgICAgIGxhYmVsRGl2LnN0eWxlLmxlZnQgPSBgJHtzdGFydFggKyA0fXB4YDtcbiAgICAgIGxhYmVsRGl2LnN0eWxlLnRvcCA9IGAke3N0YXJ0WSAtIGxhYmVsSCAvIDJ9cHhgO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKipcbiAgICAgICAqIFZlcnRpY2FsOiBsYWJlbCBu4bqxbSBCw4pOIFRSw4FJIMSRxrDhu51uZyBuZ2FuZywgY8SDbiBnaeG7r2EgdGhlbyBZLlxuICAgICAgICogc3BlY2lmaWNfc3RhcnRfYnJhbmNoID0gxJFp4buDbSDEkeG6p3UgxJFv4bqhbiB0aOG6s25nIMSR4bq/biBlbGVtZW50IChzYXUgY3VydmUpLlxuICAgICAgICovXG4gICAgICBsYWJlbERpdi5zdHlsZS5sZWZ0ID0gYCR7c3RhcnRYIC0gbGFiZWxXIC8gMiAtIDR9cHhgO1xuICAgICAgbGFiZWxEaXYuc3R5bGUudG9wID0gYCR7c3RhcnRZIC0gbGFiZWxIIC8gMiArIDR9cHhgO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWxEaXY7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGThuqV1IFwiK1wiIHThuqFpIG3hu5dpIHbhu4sgdHLDrSBjw7MgdGjhu4MgdGjhuqMgZWxlbWVudCB04burIHNpZGViYXIuXG4gICAqIFNlcnZpY2UgdOG7sSB04bqhbyBET00gZWxlbWVudHMgdsOgIGluamVjdCB2w6BvIG5vZGVzQ29udGFpbmVyLlxuICAgKiBAcGFyYW0gZmxhdEVsZW1lbnRzIERhbmggc8OhY2ggZmxhdCBlbGVtZW50cyDEkcOjIHTDrW5oIHRvw6FuIHbhu4sgdHLDrVxuICAgKiBAcGFyYW0gb25Ecm9wIENhbGxiYWNrIGtoaSBuZ8aw4budaSBkw7luZyB0aOG6oyBlbGVtZW50IHbDoG8gbeG7mXQgXCIrXCJcbiAgICogQHBhcmFtIGNhbkRyb3BGbiAodMO5eSBjaOG7jW4pIEZ1bmN0aW9uIGtp4buDbSB0cmEgxJFp4buBdSBraeG7h24gaGnhu4NuIHRo4buLIGRyb3Agem9uZS5cbiAgICogYGBgXG4gICAqL1xuICByZW5kZXJEcm9wWm9uZXMoZmxhdEVsZW1lbnRzOiBJRGlhZ3JhbUVsZW1lbnRbXSwgb25Ecm9wOiAoZWxlbWVudDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCB8IHVuZGVmaW5lZCwgZHJhZ0RhdGE6IHN0cmluZykgPT4gdm9pZCwgY2FuRHJvcEZuOiBURHJvcFpvbmVDYW5Ecm9wRm4sIHJ1bGVDb25uZWN0YWJsZUVsZW1lbnRzOiBBcnJheTxJUnVsZUNvbm5lY3RhYmxlPik6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJEcm9wWm9uZXMoKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbmZpZ0NhbnZhcygpPy5ub2Rlc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgZmxhdEVsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBpZiAoZWwuY29kZSA9PT0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5UWVBFX0VMRU1FTlRfRVhJVCkgcmV0dXJuO1xuXG4gICAgICBpZiAoZWwuZWxlbWVudF90eXBlID09PSBjYW52YXNDb25maWdSZWFkb25seSgpLlRZUEVfRUxFTUVOVF9XT1JLRkxPVykge1xuICAgICAgICBlbC5icmFuY2hlcz8uZm9yRWFjaCgoYnJhbmNoKSA9PiB7XG4gICAgICAgICAgaWYgKGNhbkRyb3BGbih1bmRlZmluZWQsIGVsLCBicmFuY2gsIHJ1bGVDb25uZWN0YWJsZUVsZW1lbnRzKSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0gdGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLmNhbGNEcm9wWm9uZVRvcEJyYW5jaEgoZWwsIGJyYW5jaCkgOiB0aGlzLmNhbGNEcm9wWm9uZVRvcEJyYW5jaChlbCwgYnJhbmNoKTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLmNhbGNEcm9wWm9uZUxlZnRCcmFuY2hIKGVsLCBicmFuY2gpIDogdGhpcy5jYWxjRHJvcFpvbmVMZWZ0QnJhbmNoKGVsLCBicmFuY2gpO1xuICAgICAgICAgIHRoaXMuY3JlYXRlRHJvcFpvbmVFbChjb250YWluZXIsIHRvcCwgbGVmdCwgZWwsIGJyYW5jaCwgb25Ecm9wKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWNhbkRyb3BGbih1bmRlZmluZWQsIGVsLCB1bmRlZmluZWQsIHJ1bGVDb25uZWN0YWJsZUVsZW1lbnRzKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRvcCA9IHRoaXMub3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5jYWxjRHJvcFpvbmVUb3BOb2RlSChlbCkgOiB0aGlzLmNhbGNEcm9wWm9uZVRvcE5vZGUoZWwpO1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLmNhbGNEcm9wWm9uZUxlZnROb2RlSChlbCkgOiB0aGlzLmNhbGNEcm9wWm9uZUxlZnROb2RlKGVsKTtcbiAgICAgICAgdGhpcy5jcmVhdGVEcm9wWm9uZUVsKGNvbnRhaW5lciwgdG9wLCBsZWZ0LCBlbCwgdW5kZWZpbmVkLCBvbkRyb3ApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGThu68gbGnhu4d1IG5hdmlnYXRpb24gbGluZSAobmV4dF9vdGhlcl9pZCkgdOG7qyBmbGF0IGVsZW1lbnRzIMSR4buDIHJlbmRlciBxdWEgZHJhdy1saW5lIGRpcmVjdGl2ZS5cbiAgICogU2VydmljZSB04buxIMSR4buNYyBgb3JpZW50YXRpb24oKWAgxJHhu4MgY2jhu41uIHBhdHRlcm4gZW5kcG9pbnQgcGjDuSBo4bujcC5cbiAgICogQ2FsbGVyIGNo4buJIGPhuqduIHRydXnhu4FuIHbDoG8gYGRyYXdMaW5lRnVuY3Rpb25Db250cm9sLnNldERhdGEoLi4uKWAuXG4gICAqL1xuICBidWlsZE5hdmlnYXRpb25EYXRhKGZsYXRFbGVtZW50czogSURpYWdyYW1FbGVtZW50W10sIHN0eWxlQ29uZmlnPzogSU5hdmlnYXRpb25MaW5lU3R5bGVDb25maWcpOiBJRHJhd0xpbmVEYXRhSW5wdXRbXSB7XG4gICAgcmV0dXJuIExpYnNVaURpYWdyYW1EcmF3TmF2aWdhdGlvblV0aWwuYnVpbGROYXZpZ2F0aW9uRGF0YShmbGF0RWxlbWVudHMsIHRoaXMub3JpZW50YXRpb24oKSwgc3R5bGVDb25maWcpO1xuICB9XG5cbiAgLyoqIFjDs2EgdOG6pXQgY+G6oyBkcm9wIHpvbmUgXCIrXCIga2jhu49pIERPTSAqL1xuICBjbGVhckRyb3Bab25lcygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbmZpZ0NhbnZhcygpPy5ub2Rlc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcuZGlhZ3JhbS1kcm9wLXpvbmUnKS5mb3JFYWNoKChlbCkgPT4gZWwucmVtb3ZlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEcm9wWm9uZUVsKFxuICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgdG9wOiBudW1iZXIsXG4gICAgbGVmdDogbnVtYmVyLFxuICAgIGVsZW1lbnQ6IElEaWFncmFtRWxlbWVudCxcbiAgICBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCB8IHVuZGVmaW5lZCxcbiAgICBvbkRyb3A6IChlbGVtZW50OiBJRGlhZ3JhbUVsZW1lbnQsIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoIHwgdW5kZWZpbmVkLCBkcmFnRGF0YTogc3RyaW5nKSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGluZGljYXRvclN0eWxlOiBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZSB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnQ2FudmFzKCk/LmRyb3Bab25lU3R5bGU7XG4gICAgY29uc3QgUkVDVF9XID0gZWxlbWVudC5zcGVjaWZpY193aWR0aCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLldJRFRIX0VMRU1FTlRfREVGQVVMVDtcbiAgICBjb25zdCBSRUNUX0ggPSBlbGVtZW50LnNwZWNpZmljX2hlaWdodCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLkhFSUdIVF9FTEVNRU5UX0RFRkFVTFQ7XG5cbiAgICAvLyBUw6JtIGPhu6dhIG7DunQgdHLDsm5cbiAgICBjb25zdCBjZW50ZXJYID0gbGVmdCArIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVIgLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSB0b3AgKyBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSIC8gMjtcblxuICAgIC8vIEhpdCB6b25lIHbDtCBow6xuaDogcuG7mW5nIGjGoW4gcmVjdGFuZ2xlIG3hu5l0IGtob+G6o24gcGFkZGluZyDEkeG7gyBi4bqvdCBkcmFnIHPhu5ttIGjGoW5cbiAgICBjb25zdCBISVRfUEFEID0gMjA7XG4gICAgY29uc3QgSElUX1cgPSBSRUNUX1cgKyBISVRfUEFEICogMjtcbiAgICBjb25zdCBISVRfSCA9IFJFQ1RfSCArIEhJVF9QQUQgKiAyO1xuICAgIGNvbnN0IGhpdExlZnQgPSBjZW50ZXJYIC0gSElUX1cgLyAyO1xuICAgIGNvbnN0IGhpdFRvcCA9IGNlbnRlclkgLSBISVRfSCAvIDI7XG5cbiAgICAvLyDilIDilIAgSGl0IHpvbmUgKHdyYXBwZXIgdsO0IGjDrG5oLCB2w7luZyBuaOG6rW4gZHJhZyBy4buZbmcpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIGNvbnN0IGhpdFpvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBoaXRab25lLmNsYXNzTmFtZSA9ICdkaWFncmFtLWRyb3Atem9uZSc7XG4gICAgaGl0Wm9uZS5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAke2hpdFRvcH1weDtcbiAgICAgIGxlZnQ6ICR7aGl0TGVmdH1weDtcbiAgICAgIHotaW5kZXg6IDk7XG4gICAgICB3aWR0aDogJHtISVRfV31weDtcbiAgICAgIGhlaWdodDogJHtISVRfSH1weDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgO1xuXG4gICAgLy8g4pSA4pSAIEluZGljYXRvciAoY29uIGLDqm4gdHJvbmcsIHBo4bqnbiBoaeG7g24gdGjhu4spIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIGNvbnN0IGluZGljYXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGluZGljYXRvci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyB0csOhbmggdHJhbmggY2jhuqVwIGV2ZW50IHbhu5tpIGhpdFpvbmVcblxuICAgIC8vIFbhu4sgdHLDrSBkb3QgdHJvbmcgaGl0Wm9uZSAoY8SDbiBnaeG7r2EgaGl0Wm9uZSlcbiAgICBjb25zdCBkb3RPZmZzZXRMZWZ0ID0gSElUX1cgLyAyIC0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5BRERfSUNPTl9ESUFNRVRFUiAvIDI7XG4gICAgY29uc3QgZG90T2Zmc2V0VG9wID0gSElUX0ggLyAyIC0gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5BRERfSUNPTl9ESUFNRVRFUiAvIDI7XG5cbiAgICAvLyBW4buLIHRyw60gcmVjdGFuZ2xlIHRyb25nIGhpdFpvbmUgKGPEg24gZ2nhu69hIGhpdFpvbmUpXG4gICAgY29uc3QgcmVjdE9mZnNldExlZnQgPSBISVRfUEFEO1xuICAgIGNvbnN0IHJlY3RPZmZzZXRUb3AgPSBISVRfSCAvIDIgLSBSRUNUX0ggLyAyO1xuXG4gICAgY29uc3QgYXBwbHlEb3RTdHlsZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHMgPSBpbmRpY2F0b3JTdHlsZTtcbiAgICAgIGNvbnN0IHNpemUgPSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSO1xuICAgICAgY29uc3QgYmcgPSBzPy5iYWNrZ3JvdW5kQ29sb3IgPz8gJyMzYjgyZjYnO1xuICAgICAgY29uc3QgaWNvbkNvbG9yID0gcz8uaWNvbkNvbG9yID8/ICcjZmZmZmZmJztcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBzPy5vcGFjaXR5ID8/IDAuOTU7XG4gICAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBzPy5ib3JkZXJSYWRpdXMgPz8gJzUwJSc7XG5cbiAgICAgIHNldFN0eWxlc0VsZW1lbnQoaW5kaWNhdG9yLCB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IGAke2RvdE9mZnNldFRvcH1weGAsXG4gICAgICAgIGxlZnQ6IGAke2RvdE9mZnNldExlZnR9cHhgLFxuICAgICAgICB3aWR0aDogYCR7c2l6ZX1weGAsXG4gICAgICAgIGhlaWdodDogYCR7c2l6ZX1weGAsXG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAwLjE1cyBlYXNlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHM/LnJlbmRlckluZGljYXRvcikge1xuICAgICAgICBpbmRpY2F0b3IuaW5uZXJIVE1MID0gcy5yZW5kZXJJbmRpY2F0b3Ioc2l6ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2F0b3IuaW5uZXJIVE1MID0gYFxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJcbiAgICAgICAgICAgIHdpZHRoOiAke3NpemV9cHg7XG4gICAgICAgICAgICBoZWlnaHQ6ICR7c2l6ZX1weDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7Ymd9O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXJSYWRpdXN9O1xuICAgICAgICAgICAgb3BhY2l0eTogJHtvcGFjaXR5fTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICBcIj48aSBjbGFzcz1cImxpYnMtdWktaWNvbi1hZGQgYmVmb3JlOnRleHQtWyR7aWNvbkNvbG9yfV1cIj48L2k+PC9kaXY+XG4gICAgICAgIGA7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFwcGx5UmVjdFN0eWxlID0gKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IGluZGljYXRvclN0eWxlO1xuICAgICAgY29uc3QgaG92ZXJCZyA9IHM/LmhvdmVyQmFja2dyb3VuZENvbG9yID8/ICcjZWVmNGZmJztcbiAgICAgIGNvbnN0IGhvdmVyQm9yZGVyID0gcz8uaG92ZXJCb3JkZXJDb2xvciA/PyAncmdiYSg1OSwgMTMwLCAyNDYsIDAuNyknO1xuICAgICAgY29uc3QgaG92ZXJCb3JkZXJTdHlsZSA9IHM/LmhvdmVyQm9yZGVyU3R5bGUgPz8gJ2Rhc2hlZCc7XG4gICAgICBjb25zdCBob3ZlclJhZGl1cyA9IHM/LmhvdmVyQm9yZGVyUmFkaXVzID8/IDEwO1xuXG4gICAgICBzZXRTdHlsZXNFbGVtZW50KGluZGljYXRvciwge1xuICAgICAgICB0b3A6IGAke3JlY3RPZmZzZXRUb3B9cHhgLFxuICAgICAgICBsZWZ0OiBgJHtyZWN0T2Zmc2V0TGVmdH1weGAsXG4gICAgICAgIHdpZHRoOiBgJHtSRUNUX1d9cHhgLFxuICAgICAgICBoZWlnaHQ6IGAke1JFQ1RfSH1weGAsXG4gICAgICAgIGJvcmRlclJhZGl1czogYCR7aG92ZXJSYWRpdXN9cHhgLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhvdmVyQmcsXG4gICAgICAgIGJvcmRlcjogYDJweCAke2hvdmVyQm9yZGVyU3R5bGV9ICR7aG92ZXJCb3JkZXJ9YCxcbiAgICAgICAgdHJhbnNpdGlvbjogJ2FsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIE7hur91IGPDsyBow6BtIHJlbmRlciDEkeG7mW5nIGNobyB0cuG6oW5nIHRow6FpIGhvdmVyIOKAlCBn4buNaSBuw7NcbiAgICAgIGluZGljYXRvci5pbm5lckhUTUwgPSBzPy5yZW5kZXJIb3ZlckluZGljYXRvciA/IHMucmVuZGVySG92ZXJJbmRpY2F0b3IoKSA6ICcnO1xuICAgIH07XG5cbiAgICBhcHBseURvdFN0eWxlKCk7XG4gICAgaGl0Wm9uZS5hcHBlbmRDaGlsZChpbmRpY2F0b3IpO1xuXG4gICAgaGl0Wm9uZS5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCAoZTogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBhcHBseVJlY3RTdHlsZSgpO1xuICAgIH0pO1xuXG4gICAgaGl0Wm9uZS5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIChlOiBEcmFnRXZlbnQpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChlLmRhdGFUcmFuc2ZlcikgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICB9KTtcblxuICAgIGhpdFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGU6IERyYWdFdmVudCkgPT4ge1xuICAgICAgaWYgKCFoaXRab25lLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICBhcHBseURvdFN0eWxlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBoaXRab25lLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCAoZTogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uc3QgcmF3ID0gZS5kYXRhVHJhbnNmZXI/LmdldERhdGEoJ2FwcGxpY2F0aW9uL2pzb24nKSA/PyAnJztcbiAgICAgIG9uRHJvcChlbGVtZW50LCBicmFuY2gsIHJhdyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaGl0Wm9uZSk7XG4gIH1cblxuICAvLyDilIDilIAgVmVydGljYWwgZHJvcCB6b25lIGhlbHBlcnMgKGV4aXN0aW5nKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgcHJpdmF0ZSBjYWxjRHJvcFpvbmVUb3BCcmFuY2goZWw6IElEaWFncmFtRWxlbWVudCwgYnJhbmNoOiBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gpOiBudW1iZXIge1xuICAgIGNvbnN0IG9jID0gYnJhbmNoLm5vZGVPdGhlckNvbmZpZztcbiAgICBpZiAob2MpIHJldHVybiAob2Muc3BlY2lmaWNfeSA/PyAwKSArIChvYy5zcGVjaWZpY19oZWlnaHQgPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5FTEVNRU5UX1dBSVRfREVGQVVMVCkgKyAxMDtcbiAgICByZXR1cm4gKGJyYW5jaC5zcGVjaWZpY19zdGFydF9icmFuY2hfeSA/PyAwKSArIDMwO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjRHJvcFpvbmVMZWZ0QnJhbmNoKGVsOiBJRGlhZ3JhbUVsZW1lbnQsIGJyYW5jaDogSURpYWdyYW1FbGVtZW50QnJhbmNoKTogbnVtYmVyIHtcbiAgICBjb25zdCBmaXJzdEVsID0gYnJhbmNoLmVsZW1lbnRzPy5bMF07XG4gICAgaWYgKGZpcnN0RWw/LnRyYW5zbGF0ZVggIT09IHVuZGVmaW5lZCkgcmV0dXJuIGZpcnN0RWwudHJhbnNsYXRlWCArIChmaXJzdEVsLnNwZWNpZmljX3dpZHRoID8/IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuV0lEVEhfRUxFTUVOVF9ERUZBVUxUKSAvIDIgLSBjYW52YXNDb25maWdSZWFkb25seSgpLkFERF9JQ09OX0RJQU1FVEVSIC8gMjtcbiAgICByZXR1cm4gKGVsLnRyYW5zbGF0ZVggPz8gMCkgKyAoZWwuc3BlY2lmaWNfd2lkdGggPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5XSURUSF9FTEVNRU5UX0RFRkFVTFQpIC8gMiAtIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVIgLyAyO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjRHJvcFpvbmVUb3BOb2RlKGVsOiBJRGlhZ3JhbUVsZW1lbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IG9jID0gZWwubm9kZU90aGVyQ29uZmlnO1xuICAgIGlmIChvYykgcmV0dXJuIChvYy5zcGVjaWZpY195ID8/IDApICsgKG9jLnNwZWNpZmljX2hlaWdodCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfV0FJVF9ERUZBVUxUKSArIDEwO1xuICAgIHJldHVybiAoZWwudHJhbnNsYXRlWSA/PyAwKSArIChlbC5zcGVjaWZpY19oZWlnaHQgPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5IRUlHSFRfRUxFTUVOVF9ERUZBVUxUKSArIDEwO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjRHJvcFpvbmVMZWZ0Tm9kZShlbDogSURpYWdyYW1FbGVtZW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGVsLnRyYW5zbGF0ZVggPz8gMCkgKyAoZWwuc3BlY2lmaWNfd2lkdGggPz8gY2FudmFzQ29uZmlnUmVhZG9ubHkoKS5XSURUSF9FTEVNRU5UX0RFRkFVTFQpIC8gMiAtIGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVIgLyAyO1xuICB9XG5cbiAgLy8g4pSA4pSAIEhvcml6b250YWwgZHJvcCB6b25lIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIG5vZGU6IFwiK1wiIG7hurFtIGdp4buvYSDEkcaw4budbmcgbGluZSBu4buRaSAyIG5vZGUg4oCUIGPEg24gZ2nhu69hIFkgY+G7p2EgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lVG9wTm9kZUgoZWw6IElEaWFncmFtRWxlbWVudCk6IG51bWJlciB7XG4gICAgY29uc3QgRCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVI7XG4gICAgY29uc3QgY2VudGVyWSA9IChlbC50cmFuc2xhdGVZID8/IDApICsgKGVsLnNwZWNpZmljX2hlaWdodCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLkhFSUdIVF9FTEVNRU5UX0RFRkFVTFQpIC8gMjtcbiAgICByZXR1cm4gY2VudGVyWSAtIEQgLyAyO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjRHJvcFpvbmVMZWZ0Tm9kZUgoZWw6IElEaWFncmFtRWxlbWVudCk6IG51bWJlciB7XG4gICAgY29uc3QgRCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVI7XG4gICAgY29uc3QgTSA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9NQVJHSU5fREVGQVVMVDtcbiAgICBjb25zdCBvYyA9IGVsLm5vZGVPdGhlckNvbmZpZztcblxuICAgIGlmIChvYykge1xuICAgICAgY29uc3QgcmlnaHQgPSAob2Muc3BlY2lmaWNfeCA/PyAwKSArIChvYy5zcGVjaWZpY193aWR0aCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfV0FJVF9ERUZBVUxUKTtcbiAgICAgIHJldHVybiByaWdodCArIE0gLyAyIC0gRCAvIDI7XG4gICAgfVxuXG4gICAgY29uc3QgcmlnaHQgPSAoZWwudHJhbnNsYXRlWCA/PyAwKSArIChlbC5zcGVjaWZpY193aWR0aCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLldJRFRIX0VMRU1FTlRfREVGQVVMVCk7XG4gICAgLy8gTWlkcG9pbnQgY+G7p2Ega2hv4bqjbmcgdHLhu5FuZyBnaeG7r2Egbm9kZSB2w6Agbm9kZSB0aeG6v3AgdGhlbyAoZ2FwID0gRUxFTUVOVF9NQVJHSU5fREVGQVVMVClcbiAgICByZXR1cm4gcmlnaHQgKyBNIC8gMiAtIEQgLyAyO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWwgYnJhbmNoOiBcIitcIiBu4bqxbSBjxINuIGdp4buvYSBZIGPhu6dhIGJyYW5jaCBsaW5lLCBzYXUgcGjhuqduIHThu60gY3Xhu5FpIHRyb25nIG5ow6FuaC5cbiAgICovXG4gIHByaXZhdGUgY2FsY0Ryb3Bab25lVG9wQnJhbmNoSChlbDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCk6IG51bWJlciB7XG4gICAgY29uc3QgRCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVI7XG4gICAgLy8gc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPSB0w6JtIFkgY+G7p2EgxJHGsOG7nW5nIG5ow6FuaFxuICAgIGNvbnN0IGNlbnRlclkgPSBicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3kgPz8gMDtcbiAgICByZXR1cm4gY2VudGVyWSAtIEQgLyAyO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjRHJvcFpvbmVMZWZ0QnJhbmNoSChlbDogSURpYWdyYW1FbGVtZW50LCBicmFuY2g6IElEaWFncmFtRWxlbWVudEJyYW5jaCk6IG51bWJlciB7XG4gICAgY29uc3QgRCA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuQUREX0lDT05fRElBTUVURVI7XG4gICAgY29uc3QgTSA9IGNhbnZhc0NvbmZpZ1JlYWRvbmx5KCkuRUxFTUVOVF9NQVJHSU5fREVGQVVMVDtcblxuICAgIC8vIFNhdSBub2RlT3RoZXJDb25maWcgY+G7p2EgbmjDoW5oIChj4buVIG5ow6FuaClcbiAgICBjb25zdCBvYyA9IGJyYW5jaC5ub2RlT3RoZXJDb25maWc7XG4gICAgaWYgKG9jPy5zcGVjaWZpY194ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAob2Muc3BlY2lmaWNfeCA/PyAwKSArIChvYy5zcGVjaWZpY193aWR0aCA/PyBjYW52YXNDb25maWdSZWFkb25seSgpLkVMRU1FTlRfV0FJVF9ERUZBVUxUKSArIE0gLyAyIC0gRCAvIDI7XG4gICAgfVxuICAgIC8vIE7hur91IG5ow6FuaCBraMO0bmcgY8OzIG5vZGVPdGhlckNvbmZpZzogxJHhurd0IHNhdSDEkWnhu4NtIHLhur0gbmjDoW5oXG4gICAgcmV0dXJuIChicmFuY2guc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3ggPz8gMCkgKyBNIC8gMiAtIEQgLyAyO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFncmFtRWxlbWVudCB7XG4gIC8vIGNvbmZpZyDEkeG7gyB24bq9IGRpYWdyYW1cbiAgY29kZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgYnJhbmNoZXM/OiBBcnJheTxJRGlhZ3JhbUVsZW1lbnRCcmFuY2g+O1xuICBzcGVjaWZpY194PzogbnVtYmVyO1xuICBzcGVjaWZpY195PzogbnVtYmVyO1xuICBzcGVjaWZpY193aWR0aD86IG51bWJlcjtcbiAgc3BlY2lmaWNfaGVpZ2h0PzogbnVtYmVyO1xuICBlbGVtZW50U3ZnPzogU1ZHUGF0aEVsZW1lbnQ7XG4gIGF0dHJpYnV0ZVN2Z0Q/OiBzdHJpbmc7XG4gIG1heEhlaWdodEJyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kX2JyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kPzogbnVtYmVyO1xuICB0cmFuc2xhdGVYPzogbnVtYmVyO1xuICB0cmFuc2xhdGVZPzogbnVtYmVyO1xuICBhdHRyaWJ1dGVTdmdEQ29ubmVjdFRvT3RoZXJFbGVtZW50PzogQXJyYXk8e1xuICAgIGVsZW1lbnRTdmc/OiBTVkdQYXRoRWxlbWVudDtcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH0+O1xuICBwcmVfb3RoZXJfaWQ/OiBBcnJheTxzdHJpbmc+O1xuICBuZXh0X290aGVyX2lkPzogQXJyYXk8c3RyaW5nPjtcbiAgc3ViQ29kZU9mRWxlbWVudD86IHN0cmluZztcbiAgbmV4dF9pZD86IHN0cmluZztcbiAgbm9kZU90aGVyQ29uZmlnPzogSURpYWdyYW1FbGVtZW50O1xuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICAvLyBjb25maWcgY+G7p2EgZWxlbWVudCBj4bqnbiBjw7NcbiAgaWQ/OiBzdHJpbmc7XG4gIGVsZW1lbnRfdHlwZT86IHN0cmluZztcbiAgc3BlY2lmaWNfY291bnRlcl9jdXJyZW50X2NvZGU/OiBudW1iZXI7IC8vIGzGsHUgbOG6oWkgxJHhu4MgdMSDbmcgY2hvIGPDoWMga2jhu5FpIHRp4bq/cCB0aGVvIGtoaSBrw6lvIHbDoG87XG4gIHByZV9pZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gge1xuICBjb2RlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZzsgLy8gTGFiZWwgaGnhu4NuIHRo4buLIHRyw6puIGJyYW5jaCAodmQ6IFwiMTAwIFByb2ZpbGVzXCIsIFwiQ8OybiBs4bqhaVwiKVxuICBsYWJlbEJnQ29sb3I/OiBzdHJpbmc7IC8vIEJhY2tncm91bmQgY29sb3IgY+G7p2EgbGFiZWwgKHZkOiBcIiNmM2Y0ZjZcIilcbiAgbGFiZWxDb2xvcj86IHN0cmluZzsgLy8gQmFja2dyb3VuZCBjb2xvciBj4bunYSBsYWJlbCAodmQ6IFwiIzM3NDE1MVwiKVxuICBsYWJlbENsYXNzTmFtZT86IHN0cmluZzsgLy8gY2xhc3MgbmFtZSBj4bunYSBsYWJlbFxuICBlbGVtZW50czogQXJyYXk8SURpYWdyYW1FbGVtZW50PjtcbiAgZWxlbWVudFN2Zz86IFNWR1BhdGhFbGVtZW50O1xuICBhdHRyaWJ1dGVTdmdEPzogc3RyaW5nO1xuICBvblRoZVNpZGU/OiAnYWJvdmUnIHwgJ3VuZGVyJyB8ICdjZW50ZXInO1xuICBwb3NpdGlvbk1heExlZnQ/OiBudW1iZXI7XG4gIHBvc2l0aW9uTWF4VG9wPzogbnVtYmVyO1xuICBzcGVjaWZpY19zdGFydF9icmFuY2hfeD86IG51bWJlcjtcbiAgc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3k/OiBudW1iZXI7XG4gIHdpZHRoQnJhbmNoPzoge1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGFib3ZlPzogbnVtYmVyO1xuICAgIHVuZGVyPzogbnVtYmVyO1xuICB9O1xuICBuZXh0X290aGVyX2lkPzogQXJyYXk8c3RyaW5nPjtcbiAgaXNEaXJlY3Rpb24/OiBib29sZWFuOyAvLyBiaeG6v24gbsOgeSBkw7luZyBz4butIGThu6VuZyB04bqhbSDEkeG7gyBjaGVjayB4ZW0gbmjDoW5oIGPDsyDEkcaw4bujYyDEkWnhu4F1IGjGsOG7m25nIGhheSBraMO0bmc7XG5cbiAgbm9kZU90aGVyQ29uZmlnPzogSURpYWdyYW1FbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYW52YXNDb25maWcge1xuICBFTEVNRU5UX1dJRFRIX0RFRkFVTFRfQlJBTkNIX1dIRU5fTk9UX0VMRU1FTlQ6IG51bWJlcjtcbiAgRUxFTUVOVF9NQVJHSU5fREVGQVVMVDogbnVtYmVyO1xuICBFTEVNRU5UX01BUkdJTl9ERUZBVUxUX0JSQU5DSDogbnVtYmVyO1xuICBFTEVNRU5UX01BUkdJTl9CRVRXRUVOX0JSQU5DSF9ERUZBVUxUOiBudW1iZXI7XG4gIERFRkFVTFRfQlJBTkNIX1dIRU5fTk9fRUxFTUVOVDogbnVtYmVyO1xuICBFTEVNRU5UX0hFSUdIVF9DVVJWRTogbnVtYmVyO1xuICBFTEVNRU5UX1NWR19TVFJPS0VfQ09MT1I6IHN0cmluZztcbiAgRUxFTUVOVF9TVkdfU1RST0tFX1dJRFRIOiBzdHJpbmc7XG4gIEVMRU1FTlRfTUFSR0lOX0RFRkFVTFRfQlJBTkNIX1RPX0VMRU1FTlRfRklSU1Q6IG51bWJlcjtcblxuICAvLyBjb25maWcgb3RoZXIgbm9kZVxuICBESVNUQU5DRV9UT19XQUlUOiBudW1iZXI7XG4gIFdBSVRfVE9fRUxFTUVOVDogbnVtYmVyO1xuICBFTEVNRU5UX1dBSVRfREVGQVVMVDogbnVtYmVyO1xuICBESVNUQU5DRV9XQUlUX1RPX05FWFRfTElORTogbnVtYmVyO1xuXG4gIC8vIGNvbmZpZyBlbGVtZW50XG4gIFRZUEVfRUxFTUVOVF9FWElUOiBzdHJpbmc7XG4gIFRZUEVfRUxFTUVOVF9XT1JLRkxPVzogc3RyaW5nO1xuICBXSURUSF9FTEVNRU5UX0RFRkFVTFQ6IG51bWJlcjtcbiAgSEVJR0hUX0VMRU1FTlRfREVGQVVMVDogbnVtYmVyO1xuXG4gIEFERF9JQ09OX0RJQU1FVEVSOiBudW1iZXI7XG59XG5cbi8qKlxuICogU3R5bGUgY29uZmlnIGNobyBpbmRpY2F0b3IgKG7DunQgXCIrXCIpIGPhu6dhIGRyb3Agem9uZS5cbiAqIFThuqV0IGPhuqMgY8OhYyBmaWVsZCDEkeG7gXUgb3B0aW9uYWwg4oCTIGdpw6EgdHLhu4sgbsOgbyBraMO0bmcgdHJ1eeG7gW4gc+G6vSBkw7luZyBt4bq3YyDEkeG7i25oLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEcm9wWm9uZUluZGljYXRvclN0eWxlIHtcbiAgYm9yZGVyUmFkaXVzPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGljb25Db2xvcj86IHN0cmluZztcbiAgb3BhY2l0eT86IG51bWJlcjtcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGhvdmVyQm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGhvdmVyQm9yZGVyU3R5bGU/OiBzdHJpbmc7XG4gIGhvdmVyQm9yZGVyUmFkaXVzPzogbnVtYmVyO1xuXG4gIC8qKiBIw6BtIHJlbmRlciAqKsSR4buZbmcqKiBu4buZaSBkdW5nIGluZGljYXRvciDhu58gdHLhuqFuZyB0aMOhaSBiw6xuaCB0aMaw4budbmcuICovXG4gIHJlbmRlckluZGljYXRvcj86IChzaXplOiBudW1iZXIpID0+IHN0cmluZztcblxuICAvKiogSMOgbSByZW5kZXIgKirEkeG7mW5nKiogbuG7mWkgZHVuZyBpbmRpY2F0b3Ig4bufIHRy4bqhbmcgdGjDoWkgaG92ZXIvZHJhZy1lbnRlci4qL1xuICByZW5kZXJIb3ZlckluZGljYXRvcj86ICgpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ3VzdG9tQ2FudmFzQ29uZmlnIHtcbiAgc3RvcmVEYXRhRGVmaW5lOiBJRGlhZ3JhbVN0b3JlRGF0YTtcbiAgc3ZnQ29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIG5vZGVzQ29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHZpZXdDb250YWluZXJSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBub2RlQ29tcG9uZW50VHlwZT86IFR5cGU8YW55PjsgLy8gQ29tcG9uZW50IGNobyBtYWluIG5vZGVzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIG5vZGVPdGhlckNvbmZpZ0NvbXBvbmVudFR5cGU/OiBUeXBlPGFueT47IC8vIENvbXBvbmVudCBjaG8gbm9kZU90aGVyQ29uZmlnXG4gIHVzZVZpcnR1YWxpemF0aW9uVGVtcGxhdGU/OiBib29sZWFuO1xuICAvKiogVHXhu7MgY2jhu4luaCBzdHlsZSBjaG8gaW5kaWNhdG9yIChuw7p0IFwiK1wiKSBj4bunYSBkcm9wIHpvbmUgKi9cbiAgZHJvcFpvbmVTdHlsZT86IElEcm9wWm9uZUluZGljYXRvclN0eWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFncmFtU3RvcmVEYXRhIHtcbiAgcG9zaXRpb25NYXhMZWZ0OiBudW1iZXI7XG4gIHBvc2l0aW9uTWF4VG9wOiBudW1iZXI7XG4gIHdpZHRoSGVpZ2h0U3ZnQ2FudmFzOiB7IGhlaWdodFN2ZzogbnVtYmVyOyB3aWR0aFN2ZzogbnVtYmVyIH07XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2RpYWdyYW0tZHJhdy9zcmMvaW50ZXJmYWNlcy9kaWFncmFtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFncmFtRWxlbWVudCB7XG4gIC8vIGNvbmZpZyDEkeG7gyB24bq9IGRpYWdyYW1cbiAgY29kZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgYnJhbmNoZXM/OiBBcnJheTxJRGlhZ3JhbUVsZW1lbnRCcmFuY2g+O1xuICBzcGVjaWZpY194PzogbnVtYmVyO1xuICBzcGVjaWZpY195PzogbnVtYmVyO1xuICBzcGVjaWZpY193aWR0aD86IG51bWJlcjtcbiAgc3BlY2lmaWNfaGVpZ2h0PzogbnVtYmVyO1xuICBlbGVtZW50U3ZnPzogU1ZHUGF0aEVsZW1lbnQ7XG4gIGF0dHJpYnV0ZVN2Z0Q/OiBzdHJpbmc7XG4gIG1heEhlaWdodEJyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kX2JyYW5jaD86IG51bWJlcjtcbiAgcG9zaXRpb25fZW5kPzogbnVtYmVyO1xuICB0cmFuc2xhdGVYPzogbnVtYmVyO1xuICB0cmFuc2xhdGVZPzogbnVtYmVyO1xuICBhdHRyaWJ1dGVTdmdEQ29ubmVjdFRvT3RoZXJFbGVtZW50PzogQXJyYXk8e1xuICAgIGVsZW1lbnRTdmc/OiBTVkdQYXRoRWxlbWVudDtcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH0+O1xuICBwcmVfb3RoZXJfaWQ/OiBBcnJheTxzdHJpbmc+O1xuICBuZXh0X290aGVyX2lkPzogQXJyYXk8c3RyaW5nPjtcbiAgc3ViQ29kZU9mRWxlbWVudD86IHN0cmluZztcbiAgbmV4dF9pZD86IHN0cmluZztcbiAgbm9kZU90aGVyQ29uZmlnPzogSURpYWdyYW1FbGVtZW50O1xuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICAvLyBjb25maWcgY+G7p2EgZWxlbWVudCBj4bqnbiBjw7NcbiAgaWQ/OiBzdHJpbmc7XG4gIGVsZW1lbnRfdHlwZT86IHN0cmluZztcbiAgc3BlY2lmaWNfY291bnRlcl9jdXJyZW50X2NvZGU/OiBudW1iZXI7IC8vIGzGsHUgbOG6oWkgxJHhu4MgdMSDbmcgY2hvIGPDoWMga2jhu5FpIHRp4bq/cCB0aGVvIGtoaSBrw6lvIHbDoG87XG4gIHByZV9pZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbUVsZW1lbnRCcmFuY2gge1xuICBjb2RlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZzsgLy8gTGFiZWwgaGnhu4NuIHRo4buLIHRyw6puIGJyYW5jaCAodmQ6IFwiMTAwIFByb2ZpbGVzXCIsIFwiQ8OybiBs4bqhaVwiKVxuICBsYWJlbEJnQ29sb3I/OiBzdHJpbmc7IC8vIEJhY2tncm91bmQgY29sb3IgY+G7p2EgbGFiZWwgKHZkOiBcIiNmM2Y0ZjZcIilcbiAgbGFiZWxDb2xvcj86IHN0cmluZzsgLy8gQmFja2dyb3VuZCBjb2xvciBj4bunYSBsYWJlbCAodmQ6IFwiIzM3NDE1MVwiKVxuICBsYWJlbENsYXNzTmFtZT86IHN0cmluZzsgLy8gY2xhc3MgbmFtZSBj4bunYSBsYWJlbFxuICBlbGVtZW50czogQXJyYXk8SURpYWdyYW1FbGVtZW50PjtcbiAgZWxlbWVudFN2Zz86IFNWR1BhdGhFbGVtZW50O1xuICBhdHRyaWJ1dGVTdmdEPzogc3RyaW5nO1xuICBvblRoZVNpZGU/OiAnYWJvdmUnIHwgJ3VuZGVyJyB8ICdjZW50ZXInO1xuICBwb3NpdGlvbk1heExlZnQ/OiBudW1iZXI7XG4gIHBvc2l0aW9uTWF4VG9wPzogbnVtYmVyO1xuICBzcGVjaWZpY19zdGFydF9icmFuY2hfeD86IG51bWJlcjtcbiAgc3BlY2lmaWNfc3RhcnRfYnJhbmNoX3k/OiBudW1iZXI7XG4gIHdpZHRoQnJhbmNoPzoge1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGFib3ZlPzogbnVtYmVyO1xuICAgIHVuZGVyPzogbnVtYmVyO1xuICB9O1xuICBuZXh0X290aGVyX2lkPzogQXJyYXk8c3RyaW5nPjtcbiAgaXNEaXJlY3Rpb24/OiBib29sZWFuOyAvLyBiaeG6v24gbsOgeSBkw7luZyBz4butIGThu6VuZyB04bqhbSDEkeG7gyBjaGVjayB4ZW0gbmjDoW5oIGPDsyDEkcaw4bujYyDEkWnhu4F1IGjGsOG7m25nIGhheSBraMO0bmc7XG5cbiAgbm9kZU90aGVyQ29uZmlnPzogSURpYWdyYW1FbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYW52YXNDb25maWcge1xuICBFTEVNRU5UX1dJRFRIX0RFRkFVTFRfQlJBTkNIX1dIRU5fTk9UX0VMRU1FTlQ6IG51bWJlcjtcbiAgRUxFTUVOVF9NQVJHSU5fREVGQVVMVDogbnVtYmVyO1xuICBFTEVNRU5UX01BUkdJTl9ERUZBVUxUX0JSQU5DSDogbnVtYmVyO1xuICBFTEVNRU5UX01BUkdJTl9CRVRXRUVOX0JSQU5DSF9ERUZBVUxUOiBudW1iZXI7XG4gIERFRkFVTFRfQlJBTkNIX1dIRU5fTk9fRUxFTUVOVDogbnVtYmVyO1xuICBFTEVNRU5UX0hFSUdIVF9DVVJWRTogbnVtYmVyO1xuICBFTEVNRU5UX1NWR19TVFJPS0VfQ09MT1I6IHN0cmluZztcbiAgRUxFTUVOVF9TVkdfU1RST0tFX1dJRFRIOiBzdHJpbmc7XG4gIEVMRU1FTlRfTUFSR0lOX0RFRkFVTFRfQlJBTkNIX1RPX0VMRU1FTlRfRklSU1Q6IG51bWJlcjtcblxuICAvLyBjb25maWcgb3RoZXIgbm9kZVxuICBESVNUQU5DRV9UT19XQUlUOiBudW1iZXI7XG4gIFdBSVRfVE9fRUxFTUVOVDogbnVtYmVyO1xuICBFTEVNRU5UX1dBSVRfREVGQVVMVDogbnVtYmVyO1xuICBESVNUQU5DRV9XQUlUX1RPX05FWFRfTElORTogbnVtYmVyO1xuXG4gIC8vIGNvbmZpZyBlbGVtZW50XG4gIFRZUEVfRUxFTUVOVF9FWElUOiBzdHJpbmc7XG4gIFRZUEVfRUxFTUVOVF9XT1JLRkxPVzogc3RyaW5nO1xuICBXSURUSF9FTEVNRU5UX0RFRkFVTFQ6IG51bWJlcjtcbiAgSEVJR0hUX0VMRU1FTlRfREVGQVVMVDogbnVtYmVyO1xuXG4gIEFERF9JQ09OX0RJQU1FVEVSOiBudW1iZXI7XG5cbiAgSTE4Tl9FTkRfTk9ERTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0eWxlIGNvbmZpZyBjaG8gaW5kaWNhdG9yIChuw7p0IFwiK1wiKSBj4bunYSBkcm9wIHpvbmUuXG4gKiBU4bqldCBj4bqjIGPDoWMgZmllbGQgxJHhu4F1IG9wdGlvbmFsIOKAkyBnacOhIHRy4buLIG7DoG8ga2jDtG5nIHRydXnhu4FuIHPhur0gZMO5bmcgbeG6t2MgxJHhu4tuaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZSB7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBpY29uQ29sb3I/OiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIGhvdmVyQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBob3ZlckJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBob3ZlckJvcmRlclN0eWxlPzogc3RyaW5nO1xuICBob3ZlckJvcmRlclJhZGl1cz86IG51bWJlcjtcblxuICAvKiogSMOgbSByZW5kZXIgKirEkeG7mW5nKiogbuG7mWkgZHVuZyBpbmRpY2F0b3Ig4bufIHRy4bqhbmcgdGjDoWkgYsOsbmggdGjGsOG7nW5nLiAqL1xuICByZW5kZXJJbmRpY2F0b3I/OiAoc2l6ZTogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEjDoG0gcmVuZGVyICoqxJHhu5luZyoqIG7hu5lpIGR1bmcgaW5kaWNhdG9yIOG7nyB0cuG6oW5nIHRow6FpIGhvdmVyL2RyYWctZW50ZXIuKi9cbiAgcmVuZGVySG92ZXJJbmRpY2F0b3I/OiAoKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUN1c3RvbUNhbnZhc0NvbmZpZyB7XG4gIHN0b3JlRGF0YURlZmluZTogSURpYWdyYW1TdG9yZURhdGE7XG4gIHN2Z0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBub2Rlc0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICB2aWV3Q29udGFpbmVyUmVmPzogVmlld0NvbnRhaW5lclJlZjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgbm9kZUNvbXBvbmVudFR5cGU/OiBUeXBlPGFueT47IC8vIENvbXBvbmVudCBjaG8gbWFpbiBub2Rlc1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBub2RlT3RoZXJDb25maWdDb21wb25lbnRUeXBlPzogVHlwZTxhbnk+OyAvLyBDb21wb25lbnQgY2hvIG5vZGVPdGhlckNvbmZpZ1xuICB1c2VWaXJ0dWFsaXphdGlvblRlbXBsYXRlPzogYm9vbGVhbjtcbiAgLyoqIFR14buzIGNo4buJbmggc3R5bGUgY2hvIGluZGljYXRvciAobsO6dCBcIitcIikgY+G7p2EgZHJvcCB6b25lICovXG4gIGRyb3Bab25lU3R5bGU/OiBJRHJvcFpvbmVJbmRpY2F0b3JTdHlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGlhZ3JhbVN0b3JlRGF0YSB7XG4gIHBvc2l0aW9uTWF4TGVmdDogbnVtYmVyO1xuICBwb3NpdGlvbk1heFRvcDogbnVtYmVyO1xuICB3aWR0aEhlaWdodFN2Z0NhbnZhczogeyBoZWlnaHRTdmc6IG51bWJlcjsgd2lkdGhTdmc6IG51bWJlciB9O1xufVxuIl19
@@ -1274,6 +1274,7 @@ const canvasConfig = signal({
1274
1274
  WIDTH_ELEMENT_DEFAULT: 165,
1275
1275
  HEIGHT_ELEMENT_DEFAULT: 48,
1276
1276
  ADD_ICON_DIAMETER: 24,
1277
+ I18N_END_NODE: 'i18n_end_journey_new',
1277
1278
  });
1278
1279
  const canvasConfigReadonly = canvasConfig.asReadonly();
1279
1280
  const storeDataDefault = {
@@ -2552,7 +2553,7 @@ class LibsUiDiagramDrawCanvasService {
2552
2553
  const exit = {
2553
2554
  element_type: canvasConfigReadonly().TYPE_ELEMENT_EXIT,
2554
2555
  code: canvasConfigReadonly().TYPE_ELEMENT_EXIT,
2555
- name: this.translateService.instant('i18n_end_journey_new'),
2556
+ name: this.translateService.instant(canvasConfigReadonly().I18N_END_NODE),
2556
2557
  specific_width: canvasConfigReadonly().WIDTH_ELEMENT_DEFAULT,
2557
2558
  specific_height: canvasConfigReadonly().HEIGHT_ELEMENT_DEFAULT,
2558
2559
  specific_x: 0,
@@ -2574,7 +2575,7 @@ class LibsUiDiagramDrawCanvasService {
2574
2575
  const exit = {
2575
2576
  element_type: canvasConfigReadonly().TYPE_ELEMENT_EXIT,
2576
2577
  code: canvasConfigReadonly().TYPE_ELEMENT_EXIT,
2577
- name: this.translateService.instant('i18n_end_journey_new'),
2578
+ name: this.translateService.instant(canvasConfigReadonly().I18N_END_NODE),
2578
2579
  specific_width: canvasConfigReadonly().WIDTH_ELEMENT_DEFAULT,
2579
2580
  specific_height: canvasConfigReadonly().HEIGHT_ELEMENT_DEFAULT,
2580
2581
  specific_x: 0,