@covalent/guided-tour 5.0.1 → 5.1.0-beta.1

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.
@@ -69,7 +69,7 @@
69
69
  height: $mat-icon-button-size;
70
70
  flex-shrink: 0;
71
71
  line-height: $mat-icon-button-size;
72
- border-radius: $mat-icon-button-border-radius;
72
+ border-radius: 50%;
73
73
  }
74
74
 
75
75
  .shepherd-void-button {
@@ -4,10 +4,10 @@ import { CovalentGuidedTourService } from './guided-tour.service';
4
4
  import * as i0 from "@angular/core";
5
5
  export class CovalentGuidedTourModule {
6
6
  }
7
- CovalentGuidedTourModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- CovalentGuidedTourModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, imports: [CommonModule] });
9
- CovalentGuidedTourModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, providers: [CovalentGuidedTourService], imports: [CommonModule] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, decorators: [{
7
+ CovalentGuidedTourModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ CovalentGuidedTourModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, imports: [CommonModule] });
9
+ CovalentGuidedTourModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, providers: [CovalentGuidedTourService], imports: [CommonModule] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [CommonModule],
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
16
16
  exports: [],
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVFsRSxNQUFNLE9BQU8sd0JBQXdCOztzSEFBeEIsd0JBQXdCO3VIQUF4Qix3QkFBd0IsWUFMekIsWUFBWTt1SEFLWCx3QkFBd0IsYUFKeEIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUQ1QixZQUFZOzRGQUtYLHdCQUF3QjtrQkFOcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN0QyxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvdmFsZW50R3VpZGVkVG91clNlcnZpY2UgfSBmcm9tICcuL2d1aWRlZC10b3VyLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbQ292YWxlbnRHdWlkZWRUb3VyU2VydmljZV0sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudEd1aWRlZFRvdXJNb2R1bGUge31cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQVFsRSxNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsWUFMekIsWUFBWTtzSEFLWCx3QkFBd0IsYUFKeEIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUQ1QixZQUFZOzJGQUtYLHdCQUF3QjtrQkFOcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN0QyxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvdmFsZW50R3VpZGVkVG91clNlcnZpY2UgfSBmcm9tICcuL2d1aWRlZC10b3VyLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbQ292YWxlbnRHdWlkZWRUb3VyU2VydmljZV0sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudEd1aWRlZFRvdXJNb2R1bGUge31cbiJdfQ==
@@ -155,9 +155,9 @@ export class CovalentGuidedTourService extends CovalentGuidedTour {
155
155
  return routedSteps;
156
156
  }
157
157
  }
158
- CovalentGuidedTourService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
159
- CovalentGuidedTourService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService });
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService, decorators: [{
158
+ CovalentGuidedTourService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
159
+ CovalentGuidedTourService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService });
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService, decorators: [{
161
161
  type: Injectable
162
162
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.HttpClient }]; } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ndWlkZWQtdG91ci9zcmMvbGliL2d1aWRlZC10b3VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBR2QsZUFBZSxHQUVoQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsR0FJbkIsTUFBTSxlQUFlLENBQUM7Ozs7QUFjdkI7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ3BCLG1DQUFxQixDQUFBO0lBQ3JCLCtCQUFpQixDQUFBO0lBQ2pCLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLCtCQUFpQixDQUFBO0lBQ2pCLG1DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFSVyxVQUFVLEtBQVYsVUFBVSxRQVFyQjtBQVNELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFHL0QsWUFDVSxPQUFlLEVBQ2YsTUFBc0IsRUFDdEIsV0FBdUI7UUFFL0IsS0FBSyxFQUFFLENBQUM7UUFKQSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFMekIsY0FBUyxHQUE2QixJQUFJLEdBQUcsRUFBdUIsQ0FBQztRQUNyRSxrQkFBYSxHQUF3QixJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQU9yRSxPQUFPLENBQUMsTUFBTTthQUNYLElBQUksQ0FDSCxNQUFNLENBQ0osQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FDekIsS0FBSyxZQUFZLGVBQWU7WUFDaEMsS0FBSyxDQUFDLGlCQUFpQixLQUFLLFVBQVUsQ0FDekMsQ0FDRjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBZTtRQUN4QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUNoQixRQUFnQixFQUNoQixJQUEwQjtRQUUxQixNQUFNLFVBQVUsR0FDZCxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9ELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUM3RCxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sWUFBWSxHQUFrQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDNUQsSUFBSSxDQUFDLHdCQUF3QixDQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQ2pFLENBQ0YsQ0FBQztZQUNGLDRFQUE0RTtZQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQ3hDLENBQUMsU0FBMkIsRUFBRSxFQUFFO2dCQUM5QixNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELE1BQU0sRUFDSixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQ3RCLEdBQUcsU0FBUyxDQUFDO2dCQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUU7d0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztxQkFDcEM7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTt3QkFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ25EO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDeEM7aUJBQ0Y7WUFDSCxDQUFDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLFFBQVEsMkNBQTJDLENBQUMsQ0FBQztZQUMxRSxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsa0RBQWtEO0lBQ2xELHVCQUF1QixDQUFDLGFBQXFCLE1BQU07UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25DLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsR0FBRyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDMUIsZ0NBQWdDO2dCQUNoQyxNQUFNLFlBQVksR0FBb0IsSUFBSSxlQUFlLENBQ3ZELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUN2QixDQUFDO2dCQUNGLHlCQUF5QjtnQkFDekIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDaEMsa0NBQWtDO2dCQUNsQyxJQUFJLEdBQUcsR0FDTCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVE7b0JBQ3hCLElBQUk7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO29CQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQzNCLEdBQUcsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN0QztnQkFDRCwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNyRDtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFVBQW1CO1FBQ3RELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsTUFBTSxXQUFXLEdBQWUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFTO2lCQUN0RSxPQUFPLENBQUM7WUFDWCxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQXNCLEVBQUUsRUFBRTtnQkFDdEQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtvQkFDbkMsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7aUJBQzlCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQWU7UUFDckMsTUFBTSxPQUFPLEdBQXVCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUk7WUFDRixPQUFPLE1BQU0sT0FBTztpQkFDakIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUNIO2lCQUNBLFNBQVMsRUFBRSxDQUFDO1NBQ2hCO1FBQUMsTUFBTTtZQUNOLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHdCQUF3QixDQUM5QixXQUE4QjtRQUU5QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBcUIsRUFBRSxFQUFFO1lBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLG9GQUFvRjtnQkFDcEYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQzFCLE1BQU0saUJBQWlCLEdBQXdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztvQkFDdEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRTt3QkFDNUIsT0FBTyxJQUFJLENBQUMsT0FBTzs2QkFDaEIsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7NkJBQ3ZDLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQ1QsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO3dCQUM3QixDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDLENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDL0Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7dUhBcEtVLHlCQUF5QjsySEFBekIseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgUGFyYW1NYXAsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgRXZlbnQgYXMgTmF2aWdhdGlvbkV2ZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7IHRhcCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvdmFsZW50R3VpZGVkVG91cixcbiAgSVRvdXJTdGVwLFxuICBJVG91ck9wdGlvbnMsXG4gIFRvdXJTdGVwQnV0dG9uLFxufSBmcm9tICcuL2d1aWRlZC50b3VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91ciBleHRlbmRzIElUb3VyT3B0aW9ucyB7XG4gIHN0ZXBzOiBJR3VpZGVkVG91clN0ZXBbXTtcbiAgZmluaXNoQnV0dG9uVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91clN0ZXAgZXh0ZW5kcyBJVG91clN0ZXAge1xuICByb3V0aW5nPzoge1xuICAgIHJvdXRlOiBzdHJpbmc7XG4gICAgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcztcbiAgfTtcbn1cblxuLyoqXG4gKiAgUm91dGVyIGVuYWJsZWQgU2hlcGhlcmQgdG91clxuICovXG5leHBvcnQgZW51bSBUb3VyRXZlbnRzIHtcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxuICBjYW5jZWwgPSAnY2FuY2VsJyxcbiAgaGlkZSA9ICdoaWRlJyxcbiAgc2hvdyA9ICdzaG93JyxcbiAgc3RhcnQgPSAnc3RhcnQnLFxuICBhY3RpdmUgPSAnYWN0aXZlJyxcbiAgaW5hY3RpdmUgPSAnaW5hY3RpdmUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHdWlkZWRUb3VyRXZlbnQge1xuICBzdGVwOiBhbnk7XG4gIHByZXZpb3VzOiBhbnk7XG4gIHRvdXI6IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91clNlcnZpY2UgZXh0ZW5kcyBDb3ZhbGVudEd1aWRlZFRvdXIge1xuICBwcml2YXRlIF90b3Vyc01hcDogTWFwPHN0cmluZywgSUd1aWRlZFRvdXI+ID0gbmV3IE1hcDxzdHJpbmcsIElHdWlkZWRUb3VyPigpO1xuICBwcml2YXRlIF90b3VyU3RlcFVSTHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIF9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogTmF2aWdhdGlvbkV2ZW50KSA9PlxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgJiZcbiAgICAgICAgICAgIGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zaGVwaGVyZFRvdXIuaXNBY3RpdmUoKSkge1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNhbmNlbCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHRvdXJFdmVudCQoc3RyOiBUb3VyRXZlbnRzKTogT2JzZXJ2YWJsZTxJR3VpZGVkVG91ckV2ZW50PiB7XG4gICAgcmV0dXJuIGZyb21FdmVudCh0aGlzLnNoZXBoZXJkVG91ciwgc3RyKTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyVG91cihcbiAgICB0b3VyTmFtZTogc3RyaW5nLFxuICAgIHRvdXI6IElHdWlkZWRUb3VyIHwgc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGd1aWRlZFRvdXI6IElHdWlkZWRUb3VyID1cbiAgICAgIHR5cGVvZiB0b3VyID09PSAnc3RyaW5nJyA/IGF3YWl0IHRoaXMuX2xvYWRUb3VyKHRvdXIpIDogdG91cjtcbiAgICB0aGlzLl90b3Vyc01hcC5zZXQodG91ck5hbWUsIGd1aWRlZFRvdXIpO1xuICB9XG5cbiAgc3RhcnRUb3VyKHRvdXJOYW1lOiBzdHJpbmcpOiBTaGVwaGVyZC5Ub3VyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZWRUb3VyID0gdGhpcy5fZ2V0VG91cih0b3VyTmFtZSk7XG4gICAgdGhpcy5maW5pc2goKTtcbiAgICBpZiAoZ3VpZGVkVG91ciAmJiBndWlkZWRUb3VyLnN0ZXBzICYmIGd1aWRlZFRvdXIuc3RlcHMubGVuZ3RoKSB7XG4gICAgICAvLyByZW1vdmUgc3RlcHMgZnJvbSB0b3VyIHNpbmNlIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGVtIGZpcnN0XG4gICAgICB0aGlzLm5ld1RvdXIoT2JqZWN0LmFzc2lnbih7fSwgZ3VpZGVkVG91ciwgeyBzdGVwczogdW5kZWZpbmVkIH0pKTtcbiAgICAgIGNvbnN0IHRvdXJJbnN0YW5jZTogU2hlcGhlcmQuVG91ciA9IHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKFxuICAgICAgICB0aGlzLl9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICAgICAgICB0aGlzLl9wcmVwYXJlVG91cihndWlkZWRUb3VyLnN0ZXBzLCBndWlkZWRUb3VyLmZpbmlzaEJ1dHRvblRleHQpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICAvLyBpbml0IHJvdXRlIHRyYW5zaXRpb24gaWYgc3RlcCBVUkwgaXMgZGlmZmVyZW50IHRoZW4gdGhlIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgICB0aGlzLnRvdXJFdmVudCQoVG91ckV2ZW50cy5zaG93KS5zdWJzY3JpYmUoXG4gICAgICAgICh0b3VyRXZlbnQ6IElHdWlkZWRUb3VyRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VVJMOiBzdHJpbmcgPSB0aGlzLl9yb3V0ZXIudXJsLnNwbGl0KC9bPyNdLylbMF07XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgc3RlcDogeyBpZCwgb3B0aW9ucyB9LFxuICAgICAgICAgIH0gPSB0b3VyRXZlbnQ7XG4gICAgICAgICAgaWYgKHRoaXMuX3RvdXJTdGVwVVJMcy5oYXMoaWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwUm91dGUgPSB0aGlzLl90b3VyU3RlcFVSTHMuZ2V0KGlkKTtcbiAgICAgICAgICAgIGlmIChzdGVwUm91dGUgIT09IGN1cnJlbnRVUkwpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtzdGVwUm91dGVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yb3V0aW5nKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3RvdXJTdGVwVVJMcy5zZXQoaWQsIG9wdGlvbnMucm91dGluZy5yb3V0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl90b3VyU3RlcFVSTHMuc2V0KGlkLCBjdXJyZW50VVJMKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICByZXR1cm4gdG91ckluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGBUb3VyICR7dG91ck5hbWV9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGFub3RoZXIgdG91ci5gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRmluZHMgdGhlIHJpZ2h0IHJlZ2lzdGVyZWQgdG91ciBieSB1c2luZyBxdWVyeVBhcmFtc1xuICAvLyBmaW5pc2hlcyBhbnkgb3RoZXIgdG91ciBhbmQgc3RhcnRzIHRoZSBuZXcgb25lLlxuICBpbml0aWFsaXplT25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtOiBzdHJpbmcgPSAndG91cicpOiBPYnNlcnZhYmxlPFBhcmFtTWFwPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgdGFwKChwYXJhbXM6IFBhcmFtTWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdXJQYXJhbSA9IHBhcmFtcy5nZXQocXVlcnlQYXJhbSk7XG4gICAgICAgIGlmICh0b3VyUGFyYW0pIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0VG91cih0b3VyUGFyYW0pO1xuICAgICAgICAgIC8vIGdldCBjdXJyZW50IHNlYXJjaCBwYXJhbWV0ZXJzXG4gICAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gZGVsZXRlIHRvdXIgcXVlcnlQYXJhbVxuICAgICAgICAgIHNlYXJjaFBhcmFtcy5kZWxldGUocXVlcnlQYXJhbSk7XG4gICAgICAgICAgLy8gYnVpbGQgbmV3IFVSTCBzdHJpbmcgd2l0aG91dCBpdFxuICAgICAgICAgIGxldCB1cmw6IHN0cmluZyA9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgK1xuICAgICAgICAgICAgJy8vJyArXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdCArXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgaWYgKHNlYXJjaFBhcmFtcy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICB1cmwgKz0gJz8nICsgc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHJlcGxhY2Ugc3RhdGUgaW4gaGlzdG9yeSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuYXZpZ2F0aW9uXG4gICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsgcGF0aDogdXJsIH0sICcnLCB1cmwpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXROZXh0QnRuRGlzYWJpbGl0eShzdGVwSWQ6IHN0cmluZywgaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCkpIHtcbiAgICAgIGNvbnN0IHN0ZXBPcHRpb25zOiBJVG91clN0ZXAgPSAodGhpcy5zaGVwaGVyZFRvdXIuZ2V0QnlJZChzdGVwSWQpIGFzIGFueSlcbiAgICAgICAgLm9wdGlvbnM7XG4gICAgICBzdGVwT3B0aW9ucy5idXR0b25zPy5mb3JFYWNoKChidXR0b246IFRvdXJTdGVwQnV0dG9uKSA9PiB7XG4gICAgICAgIGlmIChidXR0b24udGV4dCA9PT0gJ2NoZXZyb25fcmlnaHQnKSB7XG4gICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCk/LnVwZGF0ZVN0ZXBPcHRpb25zKHN0ZXBPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkVG91cih0b3VyVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHRvdXJVcmwpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxdWVzdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdFNldDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHRTZXQpKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VG91cihrZXk6IHN0cmluZyk6IElHdWlkZWRUb3VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdG91cnNNYXAuZ2V0KGtleSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICByb3V0ZWRTdGVwczogSUd1aWRlZFRvdXJTdGVwW11cbiAgKTogSUd1aWRlZFRvdXJTdGVwW10ge1xuICAgIHJvdXRlZFN0ZXBzLmZvckVhY2goKHN0ZXA6IElHdWlkZWRUb3VyU3RlcCkgPT4ge1xuICAgICAgaWYgKHN0ZXAucm91dGluZykge1xuICAgICAgICBjb25zdCByb3V0ZTogc3RyaW5nID0gc3RlcC5yb3V0aW5nLnJvdXRlO1xuICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGJlZm9yZVNob3dQcm9taXNlLCB0aGVuIHdlIHNhdmUgaXQgYW5kIGNhbGwgaXQgYWZ0ZXIgdGhlIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKHN0ZXAuYmVmb3JlU2hvd1Byb21pc2UpIHtcbiAgICAgICAgICBjb25zdCBiZWZvcmVTaG93UHJvbWlzZTogKCkgPT4gUHJvbWlzZTx2b2lkPiA9IHN0ZXAuYmVmb3JlU2hvd1Byb21pc2U7XG4gICAgICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXJcbiAgICAgICAgICAgICAgLm5hdmlnYXRlKFtyb3V0ZV0sIHN0ZXAucm91dGluZz8uZXh0cmFzKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJlZm9yZVNob3dQcm9taXNlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvdXRlZFN0ZXBzO1xuICB9XG59XG4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1ndWlkZWQtdG91ci9zcmMvbGliL2d1aWRlZC10b3VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBR2QsZUFBZSxHQUVoQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsR0FJbkIsTUFBTSxlQUFlLENBQUM7Ozs7QUFjdkI7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ3BCLG1DQUFxQixDQUFBO0lBQ3JCLCtCQUFpQixDQUFBO0lBQ2pCLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLCtCQUFpQixDQUFBO0lBQ2pCLG1DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFSVyxVQUFVLEtBQVYsVUFBVSxRQVFyQjtBQVNELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFHL0QsWUFDVSxPQUFlLEVBQ2YsTUFBc0IsRUFDdEIsV0FBdUI7UUFFL0IsS0FBSyxFQUFFLENBQUM7UUFKQSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFMekIsY0FB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QzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHdCQUF3QixDQUM5QixXQUE4QjtRQUU5QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBcUIsRUFBRSxFQUFFO1lBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLG9GQUFvRjtnQkFDcEYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQzFCLE1BQU0saUJBQWlCLEdBQXdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztvQkFDdEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRTt3QkFDNUIsT0FBTyxJQUFJLENBQUMsT0FBTzs2QkFDaEIsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7NkJBQ3ZDLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQ1QsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO3dCQUM3QixDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDLENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDL0Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7c0hBcEtVLHlCQUF5QjswSEFBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgUGFyYW1NYXAsXG4gIE5hdmlnYXRpb25FeHRyYXMsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgRXZlbnQgYXMgTmF2aWdhdGlvbkV2ZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IFNoZXBoZXJkIGZyb20gJ3NoZXBoZXJkLmpzJztcbmltcG9ydCB7IHRhcCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvdmFsZW50R3VpZGVkVG91cixcbiAgSVRvdXJTdGVwLFxuICBJVG91ck9wdGlvbnMsXG4gIFRvdXJTdGVwQnV0dG9uLFxufSBmcm9tICcuL2d1aWRlZC50b3VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91ciBleHRlbmRzIElUb3VyT3B0aW9ucyB7XG4gIHN0ZXBzOiBJR3VpZGVkVG91clN0ZXBbXTtcbiAgZmluaXNoQnV0dG9uVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91clN0ZXAgZXh0ZW5kcyBJVG91clN0ZXAge1xuICByb3V0aW5nPzoge1xuICAgIHJvdXRlOiBzdHJpbmc7XG4gICAgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcztcbiAgfTtcbn1cblxuLyoqXG4gKiAgUm91dGVyIGVuYWJsZWQgU2hlcGhlcmQgdG91clxuICovXG5leHBvcnQgZW51bSBUb3VyRXZlbnRzIHtcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxuICBjYW5jZWwgPSAnY2FuY2VsJyxcbiAgaGlkZSA9ICdoaWRlJyxcbiAgc2hvdyA9ICdzaG93JyxcbiAgc3RhcnQgPSAnc3RhcnQnLFxuICBhY3RpdmUgPSAnYWN0aXZlJyxcbiAgaW5hY3RpdmUgPSAnaW5hY3RpdmUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHdWlkZWRUb3VyRXZlbnQge1xuICBzdGVwOiBhbnk7XG4gIHByZXZpb3VzOiBhbnk7XG4gIHRvdXI6IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91clNlcnZpY2UgZXh0ZW5kcyBDb3ZhbGVudEd1aWRlZFRvdXIge1xuICBwcml2YXRlIF90b3Vyc01hcDogTWFwPHN0cmluZywgSUd1aWRlZFRvdXI+ID0gbmV3IE1hcDxzdHJpbmcsIElHdWlkZWRUb3VyPigpO1xuICBwcml2YXRlIF90b3VyU3RlcFVSTHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIF9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogTmF2aWdhdGlvbkV2ZW50KSA9PlxuICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgJiZcbiAgICAgICAgICAgIGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zaGVwaGVyZFRvdXIuaXNBY3RpdmUoKSkge1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNhbmNlbCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHRvdXJFdmVudCQoc3RyOiBUb3VyRXZlbnRzKTogT2JzZXJ2YWJsZTxJR3VpZGVkVG91ckV2ZW50PiB7XG4gICAgcmV0dXJuIGZyb21FdmVudCh0aGlzLnNoZXBoZXJkVG91ciwgc3RyKTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyVG91cihcbiAgICB0b3VyTmFtZTogc3RyaW5nLFxuICAgIHRvdXI6IElHdWlkZWRUb3VyIHwgc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGd1aWRlZFRvdXI6IElHdWlkZWRUb3VyID1cbiAgICAgIHR5cGVvZiB0b3VyID09PSAnc3RyaW5nJyA/IGF3YWl0IHRoaXMuX2xvYWRUb3VyKHRvdXIpIDogdG91cjtcbiAgICB0aGlzLl90b3Vyc01hcC5zZXQodG91ck5hbWUsIGd1aWRlZFRvdXIpO1xuICB9XG5cbiAgc3RhcnRUb3VyKHRvdXJOYW1lOiBzdHJpbmcpOiBTaGVwaGVyZC5Ub3VyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZWRUb3VyID0gdGhpcy5fZ2V0VG91cih0b3VyTmFtZSk7XG4gICAgdGhpcy5maW5pc2goKTtcbiAgICBpZiAoZ3VpZGVkVG91ciAmJiBndWlkZWRUb3VyLnN0ZXBzICYmIGd1aWRlZFRvdXIuc3RlcHMubGVuZ3RoKSB7XG4gICAgICAvLyByZW1vdmUgc3RlcHMgZnJvbSB0b3VyIHNpbmNlIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGVtIGZpcnN0XG4gICAgICB0aGlzLm5ld1RvdXIoT2JqZWN0LmFzc2lnbih7fSwgZ3VpZGVkVG91ciwgeyBzdGVwczogdW5kZWZpbmVkIH0pKTtcbiAgICAgIGNvbnN0IHRvdXJJbnN0YW5jZTogU2hlcGhlcmQuVG91ciA9IHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKFxuICAgICAgICB0aGlzLl9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICAgICAgICB0aGlzLl9wcmVwYXJlVG91cihndWlkZWRUb3VyLnN0ZXBzLCBndWlkZWRUb3VyLmZpbmlzaEJ1dHRvblRleHQpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICAvLyBpbml0IHJvdXRlIHRyYW5zaXRpb24gaWYgc3RlcCBVUkwgaXMgZGlmZmVyZW50IHRoZW4gdGhlIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgICB0aGlzLnRvdXJFdmVudCQoVG91ckV2ZW50cy5zaG93KS5zdWJzY3JpYmUoXG4gICAgICAgICh0b3VyRXZlbnQ6IElHdWlkZWRUb3VyRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VVJMOiBzdHJpbmcgPSB0aGlzLl9yb3V0ZXIudXJsLnNwbGl0KC9bPyNdLylbMF07XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgc3RlcDogeyBpZCwgb3B0aW9ucyB9LFxuICAgICAgICAgIH0gPSB0b3VyRXZlbnQ7XG4gICAgICAgICAgaWYgKHRoaXMuX3RvdXJTdGVwVVJMcy5oYXMoaWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwUm91dGUgPSB0aGlzLl90b3VyU3RlcFVSTHMuZ2V0KGlkKTtcbiAgICAgICAgICAgIGlmIChzdGVwUm91dGUgIT09IGN1cnJlbnRVUkwpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtzdGVwUm91dGVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yb3V0aW5nKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3RvdXJTdGVwVVJMcy5zZXQoaWQsIG9wdGlvbnMucm91dGluZy5yb3V0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl90b3VyU3RlcFVSTHMuc2V0KGlkLCBjdXJyZW50VVJMKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICByZXR1cm4gdG91ckluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGBUb3VyICR7dG91ck5hbWV9IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGFub3RoZXIgdG91ci5gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRmluZHMgdGhlIHJpZ2h0IHJlZ2lzdGVyZWQgdG91ciBieSB1c2luZyBxdWVyeVBhcmFtc1xuICAvLyBmaW5pc2hlcyBhbnkgb3RoZXIgdG91ciBhbmQgc3RhcnRzIHRoZSBuZXcgb25lLlxuICBpbml0aWFsaXplT25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtOiBzdHJpbmcgPSAndG91cicpOiBPYnNlcnZhYmxlPFBhcmFtTWFwPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgdGFwKChwYXJhbXM6IFBhcmFtTWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdXJQYXJhbSA9IHBhcmFtcy5nZXQocXVlcnlQYXJhbSk7XG4gICAgICAgIGlmICh0b3VyUGFyYW0pIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0VG91cih0b3VyUGFyYW0pO1xuICAgICAgICAgIC8vIGdldCBjdXJyZW50IHNlYXJjaCBwYXJhbWV0ZXJzXG4gICAgICAgICAgY29uc3Qgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gZGVsZXRlIHRvdXIgcXVlcnlQYXJhbVxuICAgICAgICAgIHNlYXJjaFBhcmFtcy5kZWxldGUocXVlcnlQYXJhbSk7XG4gICAgICAgICAgLy8gYnVpbGQgbmV3IFVSTCBzdHJpbmcgd2l0aG91dCBpdFxuICAgICAgICAgIGxldCB1cmw6IHN0cmluZyA9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgK1xuICAgICAgICAgICAgJy8vJyArXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdCArXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgaWYgKHNlYXJjaFBhcmFtcy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICB1cmwgKz0gJz8nICsgc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHJlcGxhY2Ugc3RhdGUgaW4gaGlzdG9yeSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuYXZpZ2F0aW9uXG4gICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsgcGF0aDogdXJsIH0sICcnLCB1cmwpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXROZXh0QnRuRGlzYWJpbGl0eShzdGVwSWQ6IHN0cmluZywgaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCkpIHtcbiAgICAgIGNvbnN0IHN0ZXBPcHRpb25zOiBJVG91clN0ZXAgPSAodGhpcy5zaGVwaGVyZFRvdXIuZ2V0QnlJZChzdGVwSWQpIGFzIGFueSlcbiAgICAgICAgLm9wdGlvbnM7XG4gICAgICBzdGVwT3B0aW9ucy5idXR0b25zPy5mb3JFYWNoKChidXR0b246IFRvdXJTdGVwQnV0dG9uKSA9PiB7XG4gICAgICAgIGlmIChidXR0b24udGV4dCA9PT0gJ2NoZXZyb25fcmlnaHQnKSB7XG4gICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRCeUlkKHN0ZXBJZCk/LnVwZGF0ZVN0ZXBPcHRpb25zKHN0ZXBPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkVG91cih0b3VyVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHRvdXJVcmwpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxdWVzdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdFNldDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHRTZXQpKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VG91cihrZXk6IHN0cmluZyk6IElHdWlkZWRUb3VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdG91cnNNYXAuZ2V0KGtleSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVSb3V0ZXNGb3JTdGVwcyhcbiAgICByb3V0ZWRTdGVwczogSUd1aWRlZFRvdXJTdGVwW11cbiAgKTogSUd1aWRlZFRvdXJTdGVwW10ge1xuICAgIHJvdXRlZFN0ZXBzLmZvckVhY2goKHN0ZXA6IElHdWlkZWRUb3VyU3RlcCkgPT4ge1xuICAgICAgaWYgKHN0ZXAucm91dGluZykge1xuICAgICAgICBjb25zdCByb3V0ZTogc3RyaW5nID0gc3RlcC5yb3V0aW5nLnJvdXRlO1xuICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGJlZm9yZVNob3dQcm9taXNlLCB0aGVuIHdlIHNhdmUgaXQgYW5kIGNhbGwgaXQgYWZ0ZXIgdGhlIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKHN0ZXAuYmVmb3JlU2hvd1Byb21pc2UpIHtcbiAgICAgICAgICBjb25zdCBiZWZvcmVTaG93UHJvbWlzZTogKCkgPT4gUHJvbWlzZTx2b2lkPiA9IHN0ZXAuYmVmb3JlU2hvd1Byb21pc2U7XG4gICAgICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXJcbiAgICAgICAgICAgICAgLm5hdmlnYXRlKFtyb3V0ZV0sIHN0ZXAucm91dGluZz8uZXh0cmFzKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJlZm9yZVNob3dQcm9taXNlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5iZWZvcmVTaG93UHJvbWlzZSA9ICgpID0+IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvdXRlZFN0ZXBzO1xuICB9XG59XG4iXX0=
@@ -31,8 +31,8 @@ const defaultStepOptions = {
31
31
  enabled: true,
32
32
  },
33
33
  };
34
- const MAT_ICON_BUTTON = 'mat-icon-button material-icons mat-button-base';
35
- const MAT_BUTTON = 'mat-button-base mat-button';
34
+ const MAT_ICON_BUTTON = 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';
35
+ const MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';
36
36
  const MAT_BUTTON_INVISIBLE = 'shepherd-void-button';
37
37
  export class CovalentGuidedTour extends TourButtonsActions {
38
38
  constructor(stepOptions = defaultStepOptions) {
@@ -435,4 +435,4 @@ export class CovalentGuidedTour extends TourButtonsActions {
435
435
  });
436
436
  }
437
437
  }
438
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLnRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2xpYi9ndWlkZWQudG91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRSxNQUFNLENBQU4sSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFpQixDQUFBO0lBQ2pCLHlDQUE2QixDQUFBO0lBQzdCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQXNDRCxNQUFlLGtCQUFrQjtDQVFoQztBQUVELE1BQU0sc0NBQXNDLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBRTFDLE1BQU0sZ0JBQWdCLEdBQWE7SUFDakMsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLFdBQVc7SUFDdEIsVUFBVSxDQUFDLE9BQU87SUFDbEIsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLEtBQUs7Q0FDakIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUF3QixJQUFJLEdBQUcsQ0FBaUI7SUFDN0QsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO0NBQ1osQ0FBQyxDQUFDO0FB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QUMsR0FBRyxFQUFFO3dCQUNkLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDZCxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2lCQUNOO3FCQUFNLElBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7b0JBQ3ZDLGtEQUFrRDtvQkFDbEQsTUFBTSxRQUFRLEdBQXFCLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFO3dCQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7NEJBQ3BDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFDZCxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ2xCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt5QkFDdkI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBRUgscUNBQXFDO29CQUNyQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTt3QkFDN0IsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN4QixDQUFDLENBQUMsQ0FBQztvQkFDSCxpREFBaUQ7b0JBQ2pELFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO3dCQUN4QixTQUFTLEVBQUUsSUFBSTt3QkFDZixPQUFPLEVBQUUsSUFBSTt3QkFDYixVQUFVLEVBQUUsSUFBSTtxQkFDakIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTaGVwaGVyZCBmcm9tICdzaGVwaGVyZC5qcyc7XG5pbXBvcnQge1xuICB0aW1lcixcbiAgU3ViamVjdCxcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBtZXJnZSxcbiAgU3Vic2NyaXB0aW9uLFxuICBmcm9tRXZlbnQsXG4gIGZvcmtKb2luLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgc2tpcFdoaWxlLCBmaWx0ZXIsIHNraXAsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBUb3VyU3RlcCA9IFNoZXBoZXJkLlN0ZXAuU3RlcE9wdGlvbnM7XG5leHBvcnQgdHlwZSBUb3VyU3RlcEJ1dHRvbiA9IFNoZXBoZXJkLlN0ZXAuU3RlcE9wdGlvbnNCdXR0b247XG5cbmV4cG9ydCBlbnVtIElUb3VyRXZlbnQge1xuICAnY2xpY2snID0gJ2NsaWNrJyxcbiAgJ3BvaW50ZXJvdmVyJyA9ICdwb2ludGVyb3ZlcicsXG4gICdrZXl1cCcgPSAna2V5dXAnLFxuICAnYWRkZWQnID0gJ2FkZGVkJywgLy8gYWRkZWQgdG8gRE9NXG4gICdyZW1vdmVkJyA9ICdyZW1vdmVkJywgLy8gcmVtb3ZlZCBmcm9tIERPTVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyRXZlbnRPbiB7XG4gIHNlbGVjdG9yPzogc3RyaW5nOyAvLyBjc3Mgc2VsZWN0b3JcbiAgZXZlbnQ/OiBrZXlvZiB0eXBlb2YgSVRvdXJFdmVudDsgLy8gY2xpY2ssIHBvaW50ZXJvdmVyLCBrZXl1cCwgYWRkZWQsIHJlbW92ZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91ckV2ZW50T25PcHRpb25zIHtcbiAgdGltZUJlZm9yZVNob3c/OiBudW1iZXI7IC8vIGRlbGF5IGJlZm9yZSBzdGVwIGlzIGRpc3BsYXllZFxuICBpbnRlcnZhbD86IG51bWJlcjsgLy8gdGltZSBiZXR3ZWVuIHNlYXJjaGVzIGZvciBlbGVtZW50LCBkZWZhdWx0cyB0byA1MDBtc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyT3B0aW9ucyBleHRlbmRzIFNoZXBoZXJkLlRvdXIuVG91ck9wdGlvbnMge1xuICBhYm9ydE9uPzogSVRvdXJFdmVudE9uW107IC8vIGV2ZW50cyB0byBhYm9ydCBvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyU3RlcEF0dGFjaFRvT3B0aW9ucyBleHRlbmRzIElUb3VyRXZlbnRPbk9wdGlvbnMge1xuICBoaWdobGlnaHQ/OiBib29sZWFuO1xuICByZXRyaWVzPzogbnVtYmVyOyAvLyAjIG51bSBvZiBhdHRlbXB0cyB0byBmaW5kIGVsZW1lbnRcbiAgc2tpcElmTm90Rm91bmQ/OiBib29sZWFuOyAvLyBpZiBlbGVtZW50IGlzIG5vdCBmb3VuZCBhZnRlciBuIHJldHJpZXMsIG1vdmUgb24gdG8gbmV4dCBzdGVwXG4gIGVsc2U/OiBzdHJpbmc7IC8vIGlmIGVsZW1lbnQgaXMgbm90IGZvdW5kLCBnbyB0byBzdGVwIHdpdGggdGhpcyBpZFxuICBnb0JhY2tUbz86IHN0cmluZzsgLy8gYmFjayBidXR0b24gZ29lcyBiYWNrIHRvIHN0ZXAgd2l0aCB0aGlzIGlkXG4gIHNraXBGcm9tU3RlcENvdW50PzogYm9vbGVhbjsgLy8gc2hvdy9oaWRlIHByb2dyZXNzIG9uIHN0ZXBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91clN0ZXBBZHZhbmNlT25PcHRpb25zIGV4dGVuZHMgSVRvdXJFdmVudE9uT3B0aW9ucyB7XG4gIGp1bXBUbz86IHN0cmluZzsgLy8gbmV4dCBidXR0b24gd2lsbCBqdW1wIHRvIHN0ZXAgd2l0aCB0aGlzIGlkXG4gIGFsbG93R29CYWNrPzogYm9vbGVhbjsgLy8gYWxsb3cgYmFjayB3aXRoaW4gdGhpcyBzdGVwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJTdGVwIGV4dGVuZHMgVG91clN0ZXAge1xuICBhdHRhY2hUb09wdGlvbnM/OiBJVG91clN0ZXBBdHRhY2hUb09wdGlvbnM7XG4gIGFkdmFuY2VPbk9wdGlvbnM/OiBJVG91clN0ZXBBZHZhbmNlT25PcHRpb25zO1xuICBhZHZhbmNlT24/OiBJVG91ckV2ZW50T25bXSB8IElUb3VyRXZlbnRPbiB8IGFueTtcbiAgYWJvcnRPbj86IElUb3VyRXZlbnRPbltdO1xuICBjb3VudD86IG51bWJlcjtcbn1cblxuYWJzdHJhY3QgY2xhc3MgVG91ckJ1dHRvbnNBY3Rpb25zIHtcbiAgYWJzdHJhY3QgbmV4dCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGJhY2soKTogdm9pZDtcblxuICBhYnN0cmFjdCBjYW5jZWwoKTogdm9pZDtcblxuICBhYnN0cmFjdCBmaW5pc2goKTogdm9pZDtcbn1cblxuY29uc3QgU0hFUEhFUkRfREVGQVVMVF9GSU5EX1RJTUVfQkVGT1JFX1NIT1cgPSAxMDA7XG5jb25zdCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfSU5URVJWQUwgPSA1MDA7XG5jb25zdCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfQVRURU1QVFMgPSAyMDtcblxuY29uc3Qgb3ZlcnJpZGRlbkV2ZW50czogc3RyaW5nW10gPSBbXG4gIElUb3VyRXZlbnQuY2xpY2ssXG4gIElUb3VyRXZlbnQucG9pbnRlcm92ZXIsXG4gIElUb3VyRXZlbnQucmVtb3ZlZCxcbiAgSVRvdXJFdmVudC5hZGRlZCxcbiAgSVRvdXJFdmVudC5rZXl1cCxcbl07XG5cbmNvbnN0IGtleUV2ZW50czogTWFwPG51bWJlciwgc3RyaW5nPiA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KFtcbiAgWzEzLCAnZW50ZXInXSxcbiAgWzI3LCAnZXNjJ10sXG5dKTtcblxuY29uc3QgZGVmYXVsdFN0ZXBPcHRpb25zOiBUb3VyU3RlcCA9IHtcbiAgc2Nyb2xsVG86IHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSxcbiAgY2FuY2VsSWNvbjoge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gIH0sXG59O1xuXG5jb25zdCBNQVRfSUNPTl9CVVRUT04gPSAnbWF0LWljb24tYnV0dG9uIG1hdGVyaWFsLWljb25zIG1hdC1idXR0b24tYmFzZSc7XG5jb25zdCBNQVRfQlVUVE9OID0gJ21hdC1idXR0b24tYmFzZSBtYXQtYnV0dG9uJztcbmNvbnN0IE1BVF9CVVRUT05fSU5WSVNJQkxFID0gJ3NoZXBoZXJkLXZvaWQtYnV0dG9uJztcblxuZXhwb3J0IGNsYXNzIENvdmFsZW50R3VpZGVkVG91ciBleHRlbmRzIFRvdXJCdXR0b25zQWN0aW9ucyB7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZEV2ZW50JCE6IFN1YmplY3Q8dm9pZD47XG5cbiAgc2hlcGhlcmRUb3VyITogU2hlcGhlcmQuVG91cjtcbiAgc3RlcE9wdGlvbnM6IElUb3VyU3RlcDtcblxuICBjb25zdHJ1Y3RvcihzdGVwT3B0aW9uczogSVRvdXJTdGVwID0gZGVmYXVsdFN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc3RlcE9wdGlvbnMgPSBzdGVwT3B0aW9ucztcbiAgICB0aGlzLm5ld1RvdXIoKTtcbiAgfVxuXG4gIG5ld1RvdXIob3B0cz86IElUb3VyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyID0gbmV3IFNoZXBoZXJkLlRvdXIoXG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICB7XG4gICAgICAgICAgZGVmYXVsdFN0ZXBPcHRpb25zOiB0aGlzLnN0ZXBPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLy8gbGlzdGVuIHRvIGNhbmNlbCBhbmQgY29tcGxldGUgdG8gY2xlYW4gdXAgYWJvcnRPbiBldmVudHNcbiAgICBtZXJnZShcbiAgICAgIGZyb21FdmVudCh0aGlzLnNoZXBoZXJkVG91ciwgJ2NhbmNlbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCAnY29tcGxldGUnKVxuICAgIClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICBpZiAob3B0cyAmJiBvcHRzLmFib3J0T24pIHtcbiAgICAgIGNvbnN0IGFib3J0QXJyJDogU3ViamVjdDx2b2lkPltdID0gW107XG4gICAgICBvcHRzLmFib3J0T24uZm9yRWFjaCgoYWJvcnRPbjogSVRvdXJFdmVudE9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgYWJvcnRBcnIkLnB1c2goYWJvcnRFdmVudCQpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnQoYWJvcnRPbiwgdW5kZWZpbmVkLCBhYm9ydEV2ZW50JCwgdGhpcy5fZGVzdHJveWVkRXZlbnQkKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhYm9ydFN1YnM6IFN1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLmFib3J0QXJyJClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmNhbmNlbCgpO1xuICB9XG5cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gIH1cblxuICBmaW5pc2goKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZFN0ZXBzKHN0ZXBzOiBJVG91clN0ZXBbXSk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLmFkZFN0ZXBzKHRoaXMuX3ByZXBhcmVUb3VyKHN0ZXBzKSk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5zdGFydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wcmVwYXJlVG91cihcbiAgICBvcmlnaW5hbFN0ZXBzOiBJVG91clN0ZXBbXSxcbiAgICBmaW5pc2hMYWJlbDogc3RyaW5nID0gJ2ZpbmlzaCdcbiAgKTogSVRvdXJTdGVwW10ge1xuICAgIC8vIGNyZWF0ZSBTdWJqZWN0cyBmb3IgYmFjayBhbmQgZm9yd2FyZCBldmVudHNcbiAgICBjb25zdCBiYWNrRXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBjb25zdCBmb3J3YXJkRXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBsZXQgX2JhY2tGbG93ID0gZmFsc2U7XG4gICAgLy8gY3JlYXRlIFN1YmplY3QgZm9yIHlvdXIgZW5kXG4gICAgY29uc3QgZGVzdHJveWVkRXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgdGhlIHN0ZXAgcHJvZ3Jlc3MgaW4gdGhlIGZvb3RlciBvZiB0aGUgc2hlcGhlcmQgdG9vbHRpcFxuICAgICAqL1xuICAgIGNvbnN0IGFwcGVuZFByb2dyZXNzRnVuYyA9IGZ1bmN0aW9uICh0aGlzOiBhbnkpOiB2b2lkIHtcbiAgICAgIC8vIGdldCBhbGwgdGhlIGZvb3RlcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSBET01cbiAgICAgIGNvbnN0IGZvb3RlcnM6IEVsZW1lbnRbXSA9IEFycmF5LmZyb208RWxlbWVudD4oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zaGVwaGVyZC1mb290ZXInKVxuICAgICAgKTtcbiAgICAgIC8vIGdldCB0aGUgbGFzdCBmb290ZXIgc2luY2UgU2hlcGhlcmQgYWx3YXlzIHB1dHMgdGhlIGFjdGl2ZSBvbmUgYXQgdGhlIGVuZFxuICAgICAgY29uc3QgZm9vdGVyOiBFbGVtZW50ID0gZm9vdGVyc1tmb290ZXJzLmxlbmd0aCAtIDFdO1xuICAgICAgLy8gZ2VuZXJhdGUgc3RlcHMgaHRtbCBlbGVtZW50XG4gICAgICBjb25zdCBwcm9ncmVzczogSFRNTFNwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgcHJvZ3Jlc3MuY2xhc3NOYW1lID0gJ3NoZXBoZXJkLXByb2dyZXNzJztcbiAgICAgIHByb2dyZXNzLmlubmVyVGV4dCA9IGAke3RoaXMuc2hlcGhlcmRUb3VyLmN1cnJlbnRTdGVwLm9wdGlvbnMuY291bnR9LyR7c3RlcFRvdGFsfWA7XG4gICAgICAvLyBpbnNlcnQgaW50byB0aGUgZm9vdGVyIGJlZm9yZSB0aGUgZmlyc3QgYnV0dG9uXG4gICAgICBmb290ZXIuaW5zZXJ0QmVmb3JlKHByb2dyZXNzLCBmb290ZXIucXVlcnlTZWxlY3RvcignLnNoZXBoZXJkLWJ1dHRvbicpKTtcbiAgICB9O1xuXG4gICAgbGV0IHN0ZXBUb3RhbCA9IDA7XG4gICAgY29uc3Qgc3RlcHM6IElUb3VyU3RlcFtdID0gb3JpZ2luYWxTdGVwcy5tYXAoKHN0ZXA6IElUb3VyU3RlcCkgPT4ge1xuICAgICAgbGV0IHNob3dQcm9ncmVzczogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgLy9cbiAgICAgIH07XG4gICAgICBpZiAoc3RlcC5hdHRhY2hUb09wdGlvbnM/LnNraXBGcm9tU3RlcENvdW50ID09PSB0cnVlKSB7XG4gICAgICAgIHNob3dQcm9ncmVzcyA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucz8uc2tpcEZyb21TdGVwQ291bnQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucz8uc2tpcEZyb21TdGVwQ291bnQgPT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgc3RlcC5jb3VudCA9ICsrc3RlcFRvdGFsO1xuICAgICAgICBzaG93UHJvZ3Jlc3MgPSBhcHBlbmRQcm9ncmVzc0Z1bmMuYmluZCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGVwLCB7XG4gICAgICAgIHdoZW46IHtcbiAgICAgICAgICBzaG93OiBzaG93UHJvZ3Jlc3MsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbmlzaEJ1dHRvbjogVG91clN0ZXBCdXR0b24gPSB7XG4gICAgICB0ZXh0OiBmaW5pc2hMYWJlbCxcbiAgICAgIGFjdGlvbjogdGhpc1snZmluaXNoJ10uYmluZCh0aGlzKSxcbiAgICAgIGNsYXNzZXM6IE1BVF9CVVRUT04sXG4gICAgfTtcblxuICAgIGNvbnN0IHZvaWRCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgdGV4dDogJycsXG4gICAgICBhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0sXG4gICAgICBjbGFzc2VzOiBNQVRfQlVUVE9OX0lOVklTSUJMRSxcbiAgICB9O1xuXG4gICAgLy8gbGlzdGVuIHRvIHRoZSBkZXN0cm95ZWQgZXZlbnQgdG8gY2xlYW4gdXAgYWxsIHRoZSBzdHJlYW1zXG4gICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGJhY2tFdmVudCQuY29tcGxldGUoKTtcbiAgICAgIGZvcndhcmRFdmVudCQuY29tcGxldGUoKTtcbiAgICAgIGRlc3Ryb3llZEV2ZW50JC5uZXh0KCk7XG4gICAgICBkZXN0cm95ZWRFdmVudCQuY29tcGxldGUoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRvdGFsU3RlcHM6IG51bWJlciA9IHN0ZXBzLmxlbmd0aDtcbiAgICBzdGVwcy5mb3JFYWNoKChzdGVwOiBJVG91clN0ZXAsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIC8vIGNyZWF0ZSBidXR0b25zIHNwZWNpZmljIGZvciB0aGUgc3RlcFxuICAgICAgLy8gdGhpcyBpcyBkb25lIHRvIGNyZWF0ZSBtb3JlIGNvbnRyb2wgb24gZXZlbnRzXG4gICAgICBjb25zdCBuZXh0QnV0dG9uOiBUb3VyU3RlcEJ1dHRvbiA9IHtcbiAgICAgICAgdGV4dDogJ2NoZXZyb25fcmlnaHQnLFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAvLyBpbnRlcmNlcHQgdGhlIG5leHQgYWN0aW9uIGFuZCB0cmlnZ2VyIGV2ZW50XG4gICAgICAgICAgZm9yd2FyZEV2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIubmV4dCgpO1xuICAgICAgICB9LFxuICAgICAgICBjbGFzc2VzOiBNQVRfSUNPTl9CVVRUT04sXG4gICAgICB9O1xuICAgICAgY29uc3QgYmFja0J1dHRvbjogVG91clN0ZXBCdXR0b24gPSB7XG4gICAgICAgIHRleHQ6ICdjaGV2cm9uX2xlZnQnLFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAvLyBpbnRlcmNlcHQgdGhlIGJhY2sgYWN0aW9uIGFuZCB0cmlnZ2VyIGV2ZW50XG4gICAgICAgICAgYmFja0V2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgX2JhY2tGbG93ID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjaGVjayBpZiAnZ29CYWNrVG8nIGlzIHNldCB0byBqdW1wIHRvIGEgcGFydGljdWxhciBzdGVwLCBlbHNlIGp1c3QgZ28gYmFja1xuICAgICAgICAgIGlmIChzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy5nb0JhY2tUbykge1xuICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuc2hvdyhzdGVwLmF0dGFjaFRvT3B0aW9ucy5nb0JhY2tUbywgZmFsc2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5iYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjbGFzc2VzOlxuICAgICAgICAgIHN0ZXAuYWR2YW5jZU9uT3B0aW9ucz8uYWxsb3dHb0JhY2sgPT09IGZhbHNlXG4gICAgICAgICAgICA/IE1BVF9CVVRUT05fSU5WSVNJQkxFXG4gICAgICAgICAgICA6IE1BVF9JQ09OX0JVVFRPTixcbiAgICAgIH07XG5cbiAgICAgIC8vIGNoZWNrIGlmIGhpZ2hsaWdodCB3YXMgcHJvdmlkZWQgZm9yIHRoZSBzdGVwLCBlbHNlIGZhbGxiYWNrIGludG8gc2hlcGhlcmRzIHVzYWdlXG4gICAgICBzdGVwLmhpZ2hsaWdodENsYXNzID1cbiAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuaGlnaGxpZ2h0XG4gICAgICAgICAgPyAnc2hlcGhlcmQtaGlnaGxpZ2h0J1xuICAgICAgICAgIDogc3RlcC5oaWdobGlnaHRDbGFzcztcblxuICAgICAgLy8gQWRkaW5nIGJ1dHRvbnMgaW4gdGhlIHN0ZXBzIGlmIG5vIGJ1dHRvbnMgYXJlIGRlZmluZWRcbiAgICAgIGlmICghc3RlcC5idXR0b25zIHx8IHN0ZXAuYnV0dG9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgIHN0ZXAuYnV0dG9ucyA9IFtuZXh0QnV0dG9uXTtcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PT0gdG90YWxTdGVwcyAtIDEpIHtcbiAgICAgICAgICAvLyBsYXN0IHN0ZXBcbiAgICAgICAgICBzdGVwLmJ1dHRvbnMgPSBbYmFja0J1dHRvbiwgZmluaXNoQnV0dG9uXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGVwLmJ1dHRvbnMgPSBbYmFja0J1dHRvbiwgbmV4dEJ1dHRvbl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2tzIFwiYWR2YW5jZU9uXCIgdG8gb3ZlcnJpZGUgbGlzdGVuZXJzXG4gICAgICBsZXQgYWR2YW5jZU9uOiBJVG91ckV2ZW50T25bXSB8IElUb3VyRXZlbnRPbiA9IHN0ZXAuYWR2YW5jZU9uO1xuICAgICAgLy8gcmVtb3ZlIHRoZSBzaGVwaGVyZCBcImFkdmFuY2VPblwiIGluZmF2b3Igb2Ygb3VycyBpZiB0aGUgZXZlbnQgaXMgcGFydCBvZiBvdXIgbGlzdFxuICAgICAgaWYgKFxuICAgICAgICAodHlwZW9mIGFkdmFuY2VPbiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAhQXJyYXkuaXNBcnJheShhZHZhbmNlT24pICYmXG4gICAgICAgICAgYWR2YW5jZU9uLmV2ZW50ICYmXG4gICAgICAgICAgb3ZlcnJpZGRlbkV2ZW50cy5pbmRleE9mKGFkdmFuY2VPbi5ldmVudC5zcGxpdCgnLicpWzBdKSA+IC0xKSB8fFxuICAgICAgICBhZHZhbmNlT24gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgKSB7XG4gICAgICAgIHN0ZXAuYWR2YW5jZU9uID0gdW5kZWZpbmVkO1xuICAgICAgICBzdGVwLmJ1dHRvbnMgPVxuICAgICAgICAgIHN0ZXAuYWR2YW5jZU9uT3B0aW9ucyAmJiBzdGVwLmFkdmFuY2VPbk9wdGlvbnMuYWxsb3dHb0JhY2tcbiAgICAgICAgICAgID8gW2JhY2tCdXR0b24sIHZvaWRCdXR0b25dXG4gICAgICAgICAgICA6IFt2b2lkQnV0dG9uXTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZHMgYSBkZWZhdWx0IGJlZm9yZVNob3dQcm9taXNlIGZ1bmN0aW9uXG4gICAgICBzdGVwLmJlZm9yZVNob3dQcm9taXNlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6ICh2YWx1ZT86IGFueSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDYXBhYmlsaXRpZXNTZXR1cDogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChhZHZhbmNlT24gJiYgIXN0ZXAuYWR2YW5jZU9uKSB7XG4gICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhZHZhbmNlT24pKSB7XG4gICAgICAgICAgICAgICAgYWR2YW5jZU9uID0gW2FkdmFuY2VPbl07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBhZHZhbmNlQXJyJDogU3ViamVjdDx2b2lkPltdID0gW107XG4gICAgICAgICAgICAgIGFkdmFuY2VPbi5mb3JFYWNoKChfOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkdmFuY2VFdmVudCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICAgICAgICAgIGFkdmFuY2VBcnIkLnB1c2goYWR2YW5jZUV2ZW50JCk7XG5cbiAgICAgICAgICAgICAgICAvLyB3ZSBzdGFydCBhIHRpbWVyIG9mIGF0dGVtcHRzIHRvIGZpbmQgYW4gZWxlbWVudCBpbiB0aGUgZG9tXG4gICAgICAgICAgICAgICAgdGhpcy5fYmluZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIHN0ZXAuYWR2YW5jZU9uT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2VFdmVudCQsXG4gICAgICAgICAgICAgICAgICBkZXN0cm95ZWRFdmVudCRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZVN1YnM6IFN1YnNjcmlwdGlvbiA9IGZvcmtKb2luKC4uLmFkdmFuY2VBcnIkKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChtZXJnZShkZXN0cm95ZWRFdmVudCQsIGJhY2tFdmVudCQpKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gYWR2YW5jZSB0byBhIHNwZWNpZmljIHN0ZXAsIGVsc2UgYWR2YW5jZSB0byBuZXh0IHN0ZXBcbiAgICAgICAgICAgICAgICAgIGlmIChzdGVwLmFkdmFuY2VPbk9wdGlvbnMgJiYgc3RlcC5hZHZhbmNlT25PcHRpb25zLmp1bXBUbykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5zaG93KHN0ZXAuYWR2YW5jZU9uT3B0aW9ucy5qdW1wVG8pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZm9yd2FyZEV2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICBhZHZhbmNlU3Vicy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiBhYm9ydE9uIHdhcyBwYXNzZWQgb24gdGhlIHN0ZXAsIHdlIGJpbmQgdGhlIGV2ZW50IGFuZCBleGVjdXRlIGNvbXBsZXRlXG4gICAgICAgICAgICBpZiAoc3RlcC5hYm9ydE9uKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFib3J0QXJyJDogU3ViamVjdDx2b2lkPltdID0gW107XG4gICAgICAgICAgICAgIHN0ZXAuYWJvcnRPbi5mb3JFYWNoKChhYm9ydE9uOiBJVG91ckV2ZW50T24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhYm9ydEV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgICAgICAgICAgYWJvcnRBcnIkLnB1c2goYWJvcnRFdmVudCQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2JpbmRFdmVudChcbiAgICAgICAgICAgICAgICAgIGFib3J0T24sXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBhYm9ydEV2ZW50JCxcbiAgICAgICAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGFib3J0U3ViczogU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4uYWJvcnRBcnIkKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCwgYmFja0V2ZW50JCwgZm9yd2FyZEV2ZW50JCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgIGFib3J0U3Vicy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBfc3RvcFRpbWVyJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgICAgY29uc3QgX3JldHJpZXNSZWFjaGVkJDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgICAgICAgIGNvbnN0IF9yZXRyeUF0dGVtcHRzJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPVxuICAgICAgICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcblxuICAgICAgICAgIGxldCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIC8vIGNoZWNrcyBpZiBcImF0dGFjaFRvXCIgaXMgYSBzdHJpbmcgb3IgYW4gb2JqZWN0IHRvIGdldCB0aGUgaWQgb2YgYW4gZWxlbWVudFxuICAgICAgICAgIGlmICh0eXBlb2Ygc3RlcC5hdHRhY2hUbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlkID0gc3RlcC5hdHRhY2hUbztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIHN0ZXAuYXR0YWNoVG8gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICB0eXBlb2Ygc3RlcC5hdHRhY2hUby5lbGVtZW50ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWQgPSBzdGVwLmF0dGFjaFRvLmVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIHdlIGhhdmUgYW4gaWQgYXMgYSBzdHJpbmcgaW4gZWl0aGVyIGNhc2UsIHdlIHVzZSBpdCAod2UgaWdub3JlIGl0IGlmIGl0cyBIVE1MRWxlbWVudClcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgc3RlcCBpcyB0aGUgZmlyc3Qgc3RlcCBvZiB0aGUgdG91ciwgd2Ugc2V0IHRoZSBidXR0b25zIHRvIGJlIG9ubHkgXCJuZXh0XCJcbiAgICAgICAgICAgIC8vIHdlIGhhZCB0byB1c2UgYGFueWAgc2luY2UgdGhlIHRvdXIgZG9lc250IGV4cG9zZSB0aGUgc3RlcHMgaW4gYW55IGZhc2hpb24gbm9yIGEgd2F5IHRvIGNoZWNrIGlmIHdlIGhhdmUgbW9kaWZpZWQgdGhlbSBhdCBhbGxcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuZ2V0Q3VycmVudFN0ZXAoKSA9PT1cbiAgICAgICAgICAgICAgKDxhbnk+dGhpcy5zaGVwaGVyZFRvdXIpLnN0ZXBzWzBdXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuZ2V0Q3VycmVudFN0ZXAoKT8udXBkYXRlU3RlcE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IG9yaWdpbmFsU3RlcHNbaW5kZXhdLmFkdmFuY2VPblxuICAgICAgICAgICAgICAgICAgPyBbdm9pZEJ1dHRvbl1cbiAgICAgICAgICAgICAgICAgIDogW25leHRCdXR0b25dLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHRvIHRoZSBhdHRlbXB0cyBvYnNlcnZhYmxlIHRvIG5vdGlmeSBkZWV2ZWxvcGVyIHdoZW4gbnVtYmVyIGhhcyBiZWVuIHJlYWNoZWRcbiAgICAgICAgICAgIF9yZXRyeUF0dGVtcHRzJFxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgodmFsOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMucmV0cmllcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbCA8IHN0ZXAuYXR0YWNoVG9PcHRpb25zLnJldHJpZXM7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdmFsIDwgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0FUVEVNUFRTO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZShfc3RvcFRpbWVyJC5hc09ic2VydmFibGUoKSwgZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChhdHRlbXB0czogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5uZXh0KDEpO1xuICAgICAgICAgICAgICAgIF9yZXRyaWVzUmVhY2hlZCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAvLyBpZiBhdHRlbXB0cyBoYXZlIGJlZW4gcmVhY2hlZCwgd2UgY2hlY2sgXCJza2lwSWZOb3RGb3VuZFwiIHRvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcFxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmXG4gICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucy5za2lwSWZOb3RGb3VuZFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgZ2V0IHRvIHRoaXMgc3RlcCBjb21pbmcgYmFjayBmcm9tIGEgc3RlcCBhbmQgaXQgd2FzbnQgZm91bmRcbiAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgZWl0aGVyIGNoZWNrIGlmIGl0cyB0aGUgZmlyc3Qgc3RlcCBhbmQgdHJ5IGdvaW5nIGZvcndhcmRcbiAgICAgICAgICAgICAgICAgIC8vIG9yIHdlIGtlZXAgZ29pbmcgYmFjayB1bnRpbCB3ZSBmaW5kIGEgc3RlcCB0aGF0IGFjdHVhbGx5IGV4aXN0c1xuICAgICAgICAgICAgICAgICAgaWYgKF9iYWNrRmxvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgKDxhbnk+dGhpcy5zaGVwaGVyZFRvdXIpLnN0ZXBzLmluZGV4T2YoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpXG4gICAgICAgICAgICAgICAgICAgICAgKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF9iYWNrRmxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGVzdHJveXMgY3VycmVudCBzdGVwIGlmIHdlIG5lZWQgdG8gc2tpcCBpdCB0byByZW1vdmUgaXQgZnJvbSB0aGUgdG91clxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuc2hlcGhlcmRUb3VyLmdldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwPy5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIucmVtb3ZlU3RlcChjdXJyZW50U3RlcD8uaWQgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuZWxzZSkge1xuICAgICAgICAgICAgICAgICAgLy8gaWYgXCJza2lwSWZOb3RGb3VuZFwiIGlzIG5vdCB0cnVlLCB0aGVuIHdlIGNoZWNrIGlmIFwiZWxzZVwiIGhhcyBiZWVuIHNldCB0byBqdW1wIHRvIGEgc3BlY2lmaWMgc3RlcFxuICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuc2hvdyhzdGVwLmF0dGFjaFRvT3B0aW9ucy5lbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgYFJldHJpZXMgcmVhY2hlZCB0cnlpbmcgdG8gZmluZCAke2lkfS4gUmV0cmllZCAgJHthdHRlbXB0c30gdGltZXMuYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIC8vIGVsc2Ugd2Ugc2hvdyB0aGUgc3RlcCByZWdhcmRsZXNzXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gd2Ugc3RhcnQgYSB0aW1lciBvZiBhdHRlbXB0cyB0byBmaW5kIGFuIGVsZW1lbnQgaW4gdGhlIGRvbVxuICAgICAgICAgICAgdGltZXIoXG4gICAgICAgICAgICAgIChzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy50aW1lQmVmb3JlU2hvdykgfHxcbiAgICAgICAgICAgICAgICBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyxcbiAgICAgICAgICAgICAgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLmludGVydmFsKSB8fFxuICAgICAgICAgICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9JTlRFUlZBTFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyB0aGUgdGltZXIgd2lsbCBjb250aW51ZSBlaXRoZXIgdW50aWwgd2UgZmluZCB0aGUgZWxlbWVudCBvciB0aGUgbnVtYmVyIG9mIGF0dGVtcHRzIGhhcyBiZWVuIHJlYWNoZWRcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoX3N0b3BUaW1lciQsIF9yZXRyaWVzUmVhY2hlZCQsIGRlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoaWQgPz8gJycpO1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBlbGVtZW50IGhhcyBiZWVuIGZvdW5kLCB3ZSBzdG9wIHRoZSB0aW1lciBhbmQgcmVzb2x2ZSB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENhcGFiaWxpdGllc1NldHVwKCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIF9yZXRyeUF0dGVtcHRzJC5uZXh0KF9yZXRyeUF0dGVtcHRzJC52YWx1ZSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIHN0b3AgZmluZCBpbnRlcnZhbCBpZiB1c2VyIHN0b3BzIHRoZSB0b3VyXG4gICAgICAgICAgICBkZXN0cm95ZWRFdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgX3N0b3BUaW1lciQubmV4dCgpO1xuICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICBfcmV0cmllc1JlYWNoZWQkLm5leHQoMSk7XG4gICAgICAgICAgICAgIF9yZXRyaWVzUmVhY2hlZCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXNvbHZlIG9ic2VydmFibGUgdW50aWwgdGhlIHRpbWVCZWZvcmVTaG93IGhhcyBwYXNzc2VkIG9yIHVzZSBkZWZhdWx0XG4gICAgICAgICAgICB0aW1lcihcbiAgICAgICAgICAgICAgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICAgICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9USU1FX0JFRk9SRV9TSE9XXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChtZXJnZShkZXN0cm95ZWRFdmVudCQpKSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RlcHM7XG4gIH1cblxuICBwcml2YXRlIF9iaW5kRXZlbnQoXG4gICAgZXZlbnRPbjogSVRvdXJFdmVudE9uLFxuICAgIGV2ZW50T25PcHRpb25zOiBJVG91ckV2ZW50T25PcHRpb25zIHwgdW5kZWZpbmVkLFxuICAgIGV2ZW50JDogU3ViamVjdDx2b2lkPixcbiAgICBkZXN0cm95ZWRFdmVudCQ6IFN1YmplY3Q8dm9pZD5cbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBldmVudE9uLnNlbGVjdG9yID8/ICcnO1xuICAgIGNvbnN0IGV2ZW50ID0gZXZlbnRPbi5ldmVudDtcbiAgICAvLyB3ZSBzdGFydCBhIHRpbWVyIG9mIGF0dGVtcHRzIHRvIGZpbmQgYW4gZWxlbWVudCBpbiB0aGUgZG9tXG4gICAgY29uc3QgdGltZXJTdWJzOiBTdWJzY3JpcHRpb24gPSB0aW1lcihcbiAgICAgIChldmVudE9uT3B0aW9ucyAmJiBldmVudE9uT3B0aW9ucy50aW1lQmVmb3JlU2hvdykgfHxcbiAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX1RJTUVfQkVGT1JFX1NIT1csXG4gICAgICAoZXZlbnRPbk9wdGlvbnMgJiYgZXZlbnRPbk9wdGlvbnMuaW50ZXJ2YWwpIHx8XG4gICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9JTlRFUlZBTFxuICAgIClcbiAgICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQsIHdlIHN0b3AgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgdGltZXJTdWJzLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICBpZiAoZXZlbnQgPT09IElUb3VyRXZlbnQuYWRkZWQpIHtcbiAgICAgICAgICAgIC8vIGlmIGV2ZW50IGlzIFwiQWRkZWRcIiB0cmlnZ2VyIGEgc29vbiBhcyB0aGlzIGlzIGF0dGFjaGVkLlxuICAgICAgICAgICAgZXZlbnQkLm5leHQoKTtcbiAgICAgICAgICAgIGV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBldmVudCA9PT0gSVRvdXJFdmVudC5jbGljayB8fFxuICAgICAgICAgICAgZXZlbnQgPT09IElUb3VyRXZlbnQucG9pbnRlcm92ZXIgfHxcbiAgICAgICAgICAgIChldmVudCAmJiBldmVudC5pbmRleE9mKElUb3VyRXZlbnQua2V5dXApID4gLTEpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyB3ZSB1c2Ugbm9ybWFsIGxpc3RlbmVycyBmb3IgbW91c2VldmVudHNcbiAgICAgICAgICAgIGNvbnN0IG1haW5FdmVudCA9IGV2ZW50Py5zcGxpdCgnLicpWzBdO1xuICAgICAgICAgICAgY29uc3Qgc3ViRXZlbnQgPSBldmVudD8uc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgICAgIGZyb21FdmVudChlbGVtZW50LCBtYWluRXZlbnQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoJGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gb25seSB0cmlnZ2VyIGlmIHRoZSBldmVudCBpcyBhIGtleWJvYXJkIGV2ZW50IGFuZCBwYXJ0IG9mIG91dCBsaXN0XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5RXZlbnRzLmdldCgkZXZlbnQua2V5Q29kZSkgPT09IHN1YkV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKGV2ZW50JC5hc09ic2VydmFibGUoKSwgZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSBJVG91ckV2ZW50LnJlbW92ZWQpIHtcbiAgICAgICAgICAgIC8vIGFuZCB3ZSB3aWxsIHVzZSBNdXRhdGlvbk9ic2VydmVyIGZvciBET00gZXZlbnRzXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICBldmVudCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBzdG9wIGxpc3RlbmluaW5nIGlmIHRvdXIgaXMgY2xvc2VkXG4gICAgICAgICAgICBkZXN0cm95ZWRFdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBvYnNlcnZlIGZvciBhbnkgRE9NIGludGVyYWN0aW9uIGluIHRoZSBlbGVtZW50XG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLnRvdXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItZ3VpZGVkLXRvdXIvc3JjL2xpYi9ndWlkZWQudG91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUszRSxNQUFNLENBQU4sSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLDZCQUFpQixDQUFBO0lBQ2pCLHlDQUE2QixDQUFBO0lBQzdCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLGlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQXNDRCxNQUFlLGtCQUFrQjtDQVFoQztBQUVELE1BQU0sc0NBQXNDLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBRTFDLE1BQU0sZ0JBQWdCLEdBQWE7SUFDakMsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLFdBQVc7SUFDdEIsVUFBVSxDQUFDLE9BQU87SUFDbEIsVUFBVSxDQUFDLEtBQUs7SUFDaEIsVUFBVSxDQUFDLEtBQUs7Q0FDakIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUF3QixJQUFJLEdBQUcsQ0FBaUI7SUFDN0QsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDO0NBQ1osQ0FBQyxDQUFDO0FB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QUFDLEdBQUcsRUFBRTt3QkFDZCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2QsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztpQkFDTjtxQkFBTSxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFO29CQUN2QyxrREFBa0Q7b0JBQ2xELE1BQU0sUUFBUSxHQUFxQixJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRTt3QkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUNwQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7NEJBQ2QsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUNsQixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7eUJBQ3ZCO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUVILHFDQUFxQztvQkFDckMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQzdCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDeEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsaURBQWlEO29CQUNqRCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLElBQUk7d0JBQ2IsVUFBVSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQztpQkFDSjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2hlcGhlcmQgZnJvbSAnc2hlcGhlcmQuanMnO1xuaW1wb3J0IHtcbiAgdGltZXIsXG4gIFN1YmplY3QsXG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgbWVyZ2UsXG4gIFN1YnNjcmlwdGlvbixcbiAgZnJvbUV2ZW50LFxuICBmb3JrSm9pbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHNraXBXaGlsZSwgZmlsdGVyLCBza2lwLCBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgVG91clN0ZXAgPSBTaGVwaGVyZC5TdGVwLlN0ZXBPcHRpb25zO1xuZXhwb3J0IHR5cGUgVG91clN0ZXBCdXR0b24gPSBTaGVwaGVyZC5TdGVwLlN0ZXBPcHRpb25zQnV0dG9uO1xuXG5leHBvcnQgZW51bSBJVG91ckV2ZW50IHtcbiAgJ2NsaWNrJyA9ICdjbGljaycsXG4gICdwb2ludGVyb3ZlcicgPSAncG9pbnRlcm92ZXInLFxuICAna2V5dXAnID0gJ2tleXVwJyxcbiAgJ2FkZGVkJyA9ICdhZGRlZCcsIC8vIGFkZGVkIHRvIERPTVxuICAncmVtb3ZlZCcgPSAncmVtb3ZlZCcsIC8vIHJlbW92ZWQgZnJvbSBET01cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91ckV2ZW50T24ge1xuICBzZWxlY3Rvcj86IHN0cmluZzsgLy8gY3NzIHNlbGVjdG9yXG4gIGV2ZW50Pzoga2V5b2YgdHlwZW9mIElUb3VyRXZlbnQ7IC8vIGNsaWNrLCBwb2ludGVyb3Zlciwga2V5dXAsIGFkZGVkLCByZW1vdmVkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJFdmVudE9uT3B0aW9ucyB7XG4gIHRpbWVCZWZvcmVTaG93PzogbnVtYmVyOyAvLyBkZWxheSBiZWZvcmUgc3RlcCBpcyBkaXNwbGF5ZWRcbiAgaW50ZXJ2YWw/OiBudW1iZXI7IC8vIHRpbWUgYmV0d2VlbiBzZWFyY2hlcyBmb3IgZWxlbWVudCwgZGVmYXVsdHMgdG8gNTAwbXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91ck9wdGlvbnMgZXh0ZW5kcyBTaGVwaGVyZC5Ub3VyLlRvdXJPcHRpb25zIHtcbiAgYWJvcnRPbj86IElUb3VyRXZlbnRPbltdOyAvLyBldmVudHMgdG8gYWJvcnQgb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVG91clN0ZXBBdHRhY2hUb09wdGlvbnMgZXh0ZW5kcyBJVG91ckV2ZW50T25PcHRpb25zIHtcbiAgaGlnaGxpZ2h0PzogYm9vbGVhbjtcbiAgcmV0cmllcz86IG51bWJlcjsgLy8gIyBudW0gb2YgYXR0ZW1wdHMgdG8gZmluZCBlbGVtZW50XG4gIHNraXBJZk5vdEZvdW5kPzogYm9vbGVhbjsgLy8gaWYgZWxlbWVudCBpcyBub3QgZm91bmQgYWZ0ZXIgbiByZXRyaWVzLCBtb3ZlIG9uIHRvIG5leHQgc3RlcFxuICBlbHNlPzogc3RyaW5nOyAvLyBpZiBlbGVtZW50IGlzIG5vdCBmb3VuZCwgZ28gdG8gc3RlcCB3aXRoIHRoaXMgaWRcbiAgZ29CYWNrVG8/OiBzdHJpbmc7IC8vIGJhY2sgYnV0dG9uIGdvZXMgYmFjayB0byBzdGVwIHdpdGggdGhpcyBpZFxuICBza2lwRnJvbVN0ZXBDb3VudD86IGJvb2xlYW47IC8vIHNob3cvaGlkZSBwcm9ncmVzcyBvbiBzdGVwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvdXJTdGVwQWR2YW5jZU9uT3B0aW9ucyBleHRlbmRzIElUb3VyRXZlbnRPbk9wdGlvbnMge1xuICBqdW1wVG8/OiBzdHJpbmc7IC8vIG5leHQgYnV0dG9uIHdpbGwganVtcCB0byBzdGVwIHdpdGggdGhpcyBpZFxuICBhbGxvd0dvQmFjaz86IGJvb2xlYW47IC8vIGFsbG93IGJhY2sgd2l0aGluIHRoaXMgc3RlcFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb3VyU3RlcCBleHRlbmRzIFRvdXJTdGVwIHtcbiAgYXR0YWNoVG9PcHRpb25zPzogSVRvdXJTdGVwQXR0YWNoVG9PcHRpb25zO1xuICBhZHZhbmNlT25PcHRpb25zPzogSVRvdXJTdGVwQWR2YW5jZU9uT3B0aW9ucztcbiAgYWR2YW5jZU9uPzogSVRvdXJFdmVudE9uW10gfCBJVG91ckV2ZW50T24gfCBhbnk7XG4gIGFib3J0T24/OiBJVG91ckV2ZW50T25bXTtcbiAgY291bnQ/OiBudW1iZXI7XG59XG5cbmFic3RyYWN0IGNsYXNzIFRvdXJCdXR0b25zQWN0aW9ucyB7XG4gIGFic3RyYWN0IG5leHQoKTogdm9pZDtcblxuICBhYnN0cmFjdCBiYWNrKCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgY2FuY2VsKCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgZmluaXNoKCk6IHZvaWQ7XG59XG5cbmNvbnN0IFNIRVBIRVJEX0RFRkFVTFRfRklORF9USU1FX0JFRk9SRV9TSE9XID0gMTAwO1xuY29uc3QgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMID0gNTAwO1xuY29uc3QgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0FUVEVNUFRTID0gMjA7XG5cbmNvbnN0IG92ZXJyaWRkZW5FdmVudHM6IHN0cmluZ1tdID0gW1xuICBJVG91ckV2ZW50LmNsaWNrLFxuICBJVG91ckV2ZW50LnBvaW50ZXJvdmVyLFxuICBJVG91ckV2ZW50LnJlbW92ZWQsXG4gIElUb3VyRXZlbnQuYWRkZWQsXG4gIElUb3VyRXZlbnQua2V5dXAsXG5dO1xuXG5jb25zdCBrZXlFdmVudHM6IE1hcDxudW1iZXIsIHN0cmluZz4gPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPihbXG4gIFsxMywgJ2VudGVyJ10sXG4gIFsyNywgJ2VzYyddLFxuXSk7XG5cbmNvbnN0IGRlZmF1bHRTdGVwT3B0aW9uczogVG91clN0ZXAgPSB7XG4gIHNjcm9sbFRvOiB7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0sXG4gIGNhbmNlbEljb246IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICB9LFxufTtcblxuY29uc3QgTUFUX0lDT05fQlVUVE9OID1cbiAgJ21kYy1pY29uLWJ1dHRvbiBtYXRlcmlhbC1pY29ucyBtYXQtbWRjLWljb24tYnV0dG9uIG1hdC1tZGMtYnV0dG9uLWJhc2UnO1xuY29uc3QgTUFUX0JVVFRPTiA9ICdtZGMtYnV0dG9uIG1hdC1tZGMtYnV0dG9uIG1hdC1tZGMtYnV0dG9uLWJhc2UnO1xuY29uc3QgTUFUX0JVVFRPTl9JTlZJU0lCTEUgPSAnc2hlcGhlcmQtdm9pZC1idXR0b24nO1xuXG5leHBvcnQgY2xhc3MgQ292YWxlbnRHdWlkZWRUb3VyIGV4dGVuZHMgVG91ckJ1dHRvbnNBY3Rpb25zIHtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkRXZlbnQkITogU3ViamVjdDx2b2lkPjtcblxuICBzaGVwaGVyZFRvdXIhOiBTaGVwaGVyZC5Ub3VyO1xuICBzdGVwT3B0aW9uczogSVRvdXJTdGVwO1xuXG4gIGNvbnN0cnVjdG9yKHN0ZXBPcHRpb25zOiBJVG91clN0ZXAgPSBkZWZhdWx0U3RlcE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5zdGVwT3B0aW9ucyA9IHN0ZXBPcHRpb25zO1xuICAgIHRoaXMubmV3VG91cigpO1xuICB9XG5cbiAgbmV3VG91cihvcHRzPzogSVRvdXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIgPSBuZXcgU2hlcGhlcmQuVG91cihcbiAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHtcbiAgICAgICAgICBkZWZhdWx0U3RlcE9wdGlvbnM6IHRoaXMuc3RlcE9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIG9wdHNcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5fZGVzdHJveWVkRXZlbnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvLyBsaXN0ZW4gdG8gY2FuY2VsIGFuZCBjb21wbGV0ZSB0byBjbGVhbiB1cCBhYm9ydE9uIGV2ZW50c1xuICAgIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuc2hlcGhlcmRUb3VyLCAnY2FuY2VsJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5zaGVwaGVyZFRvdXIsICdjb21wbGV0ZScpXG4gICAgKVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWRFdmVudCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWRFdmVudCQuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gaWYgYWJvcnRPbiB3YXMgcGFzc2VkLCB3ZSBiaW5kIHRoZSBldmVudCBhbmQgZXhlY3V0ZSBjb21wbGV0ZVxuICAgIGlmIChvcHRzICYmIG9wdHMuYWJvcnRPbikge1xuICAgICAgY29uc3QgYWJvcnRBcnIkOiBTdWJqZWN0PHZvaWQ+W10gPSBbXTtcbiAgICAgIG9wdHMuYWJvcnRPbi5mb3JFYWNoKChhYm9ydE9uOiBJVG91ckV2ZW50T24pID0+IHtcbiAgICAgICAgY29uc3QgYWJvcnRFdmVudCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICBhYm9ydEFyciQucHVzaChhYm9ydEV2ZW50JCk7XG4gICAgICAgIHRoaXMuX2JpbmRFdmVudChhYm9ydE9uLCB1bmRlZmluZWQsIGFib3J0RXZlbnQkLCB0aGlzLl9kZXN0cm95ZWRFdmVudCQpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFib3J0U3ViczogU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4uYWJvcnRBcnIkKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIuY29tcGxldGUoKTtcbiAgICAgICAgICBhYm9ydFN1YnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5iYWNrKCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuY2FuY2VsKCk7XG4gIH1cblxuICBuZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgfVxuXG4gIGZpbmlzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNoZXBoZXJkVG91ci5jb21wbGV0ZSgpO1xuICB9XG5cbiAgYWRkU3RlcHMoc3RlcHM6IElUb3VyU3RlcFtdKTogdm9pZCB7XG4gICAgdGhpcy5zaGVwaGVyZFRvdXIuYWRkU3RlcHModGhpcy5fcHJlcGFyZVRvdXIoc3RlcHMpKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuc2hlcGhlcmRUb3VyLnN0YXJ0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3ByZXBhcmVUb3VyKFxuICAgIG9yaWdpbmFsU3RlcHM6IElUb3VyU3RlcFtdLFxuICAgIGZpbmlzaExhYmVsOiBzdHJpbmcgPSAnZmluaXNoJ1xuICApOiBJVG91clN0ZXBbXSB7XG4gICAgLy8gY3JlYXRlIFN1YmplY3RzIGZvciBiYWNrIGFuZCBmb3J3YXJkIGV2ZW50c1xuICAgIGNvbnN0IGJhY2tFdmVudCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGNvbnN0IGZvcndhcmRFdmVudCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGxldCBfYmFja0Zsb3cgPSBmYWxzZTtcbiAgICAvLyBjcmVhdGUgU3ViamVjdCBmb3IgeW91ciBlbmRcbiAgICBjb25zdCBkZXN0cm95ZWRFdmVudCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWRkcyB0aGUgc3RlcCBwcm9ncmVzcyBpbiB0aGUgZm9vdGVyIG9mIHRoZSBzaGVwaGVyZCB0b29sdGlwXG4gICAgICovXG4gICAgY29uc3QgYXBwZW5kUHJvZ3Jlc3NGdW5jID0gZnVuY3Rpb24gKHRoaXM6IGFueSk6IHZvaWQge1xuICAgICAgLy8gZ2V0IGFsbCB0aGUgZm9vdGVycyB0aGF0IGFyZSBhdmFpbGFibGUgaW4gdGhlIERPTVxuICAgICAgY29uc3QgZm9vdGVyczogRWxlbWVudFtdID0gQXJyYXkuZnJvbTxFbGVtZW50PihcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNoZXBoZXJkLWZvb3RlcicpXG4gICAgICApO1xuICAgICAgLy8gZ2V0IHRoZSBsYXN0IGZvb3RlciBzaW5jZSBTaGVwaGVyZCBhbHdheXMgcHV0cyB0aGUgYWN0aXZlIG9uZSBhdCB0aGUgZW5kXG4gICAgICBjb25zdCBmb290ZXI6IEVsZW1lbnQgPSBmb290ZXJzW2Zvb3RlcnMubGVuZ3RoIC0gMV07XG4gICAgICAvLyBnZW5lcmF0ZSBzdGVwcyBodG1sIGVsZW1lbnRcbiAgICAgIGNvbnN0IHByb2dyZXNzOiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBwcm9ncmVzcy5jbGFzc05hbWUgPSAnc2hlcGhlcmQtcHJvZ3Jlc3MnO1xuICAgICAgcHJvZ3Jlc3MuaW5uZXJUZXh0ID0gYCR7dGhpcy5zaGVwaGVyZFRvdXIuY3VycmVudFN0ZXAub3B0aW9ucy5jb3VudH0vJHtzdGVwVG90YWx9YDtcbiAgICAgIC8vIGluc2VydCBpbnRvIHRoZSBmb290ZXIgYmVmb3JlIHRoZSBmaXJzdCBidXR0b25cbiAgICAgIGZvb3Rlci5pbnNlcnRCZWZvcmUocHJvZ3Jlc3MsIGZvb3Rlci5xdWVyeVNlbGVjdG9yKCcuc2hlcGhlcmQtYnV0dG9uJykpO1xuICAgIH07XG5cbiAgICBsZXQgc3RlcFRvdGFsID0gMDtcbiAgICBjb25zdCBzdGVwczogSVRvdXJTdGVwW10gPSBvcmlnaW5hbFN0ZXBzLm1hcCgoc3RlcDogSVRvdXJTdGVwKSA9PiB7XG4gICAgICBsZXQgc2hvd1Byb2dyZXNzOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAvL1xuICAgICAgfTtcbiAgICAgIGlmIChzdGVwLmF0dGFjaFRvT3B0aW9ucz8uc2tpcEZyb21TdGVwQ291bnQgPT09IHRydWUpIHtcbiAgICAgICAgc2hvd1Byb2dyZXNzID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zPy5za2lwRnJvbVN0ZXBDb3VudCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zPy5za2lwRnJvbVN0ZXBDb3VudCA9PT0gZmFsc2VcbiAgICAgICkge1xuICAgICAgICBzdGVwLmNvdW50ID0gKytzdGVwVG90YWw7XG4gICAgICAgIHNob3dQcm9ncmVzcyA9IGFwcGVuZFByb2dyZXNzRnVuYy5iaW5kKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0ZXAsIHtcbiAgICAgICAgd2hlbjoge1xuICAgICAgICAgIHNob3c6IHNob3dQcm9ncmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZmluaXNoQnV0dG9uOiBUb3VyU3RlcEJ1dHRvbiA9IHtcbiAgICAgIHRleHQ6IGZpbmlzaExhYmVsLFxuICAgICAgYWN0aW9uOiB0aGlzWydmaW5pc2gnXS5iaW5kKHRoaXMpLFxuICAgICAgY2xhc3NlczogTUFUX0JVVFRPTixcbiAgICB9O1xuXG4gICAgY29uc3Qgdm9pZEJ1dHRvbjogVG91clN0ZXBCdXR0b24gPSB7XG4gICAgICB0ZXh0OiAnJyxcbiAgICAgIGFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSxcbiAgICAgIGNsYXNzZXM6IE1BVF9CVVRUT05fSU5WSVNJQkxFLFxuICAgIH07XG5cbiAgICAvLyBsaXN0ZW4gdG8gdGhlIGRlc3Ryb3llZCBldmVudCB0byBjbGVhbiB1cCBhbGwgdGhlIHN0cmVhbXNcbiAgICB0aGlzLl9kZXN0cm95ZWRFdmVudCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgYmFja0V2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgZm9yd2FyZEV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgZGVzdHJveWVkRXZlbnQkLm5leHQoKTtcbiAgICAgIGRlc3Ryb3llZEV2ZW50JC5jb21wbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWxTdGVwczogbnVtYmVyID0gc3RlcHMubGVuZ3RoO1xuICAgIHN0ZXBzLmZvckVhY2goKHN0ZXA6IElUb3VyU3RlcCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgLy8gY3JlYXRlIGJ1dHRvbnMgc3BlY2lmaWMgZm9yIHRoZSBzdGVwXG4gICAgICAvLyB0aGlzIGlzIGRvbmUgdG8gY3JlYXRlIG1vcmUgY29udHJvbCBvbiBldmVudHNcbiAgICAgIGNvbnN0IG5leHRCdXR0b246IFRvdXJTdGVwQnV0dG9uID0ge1xuICAgICAgICB0ZXh0OiAnY2hldnJvbl9yaWdodCcsXG4gICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIGludGVyY2VwdCB0aGUgbmV4dCBhY3Rpb24gYW5kIHRyaWdnZXIgZXZlbnRcbiAgICAgICAgICBmb3J3YXJkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6IE1BVF9JQ09OX0JVVFRPTixcbiAgICAgIH07XG4gICAgICBjb25zdCBiYWNrQnV0dG9uOiBUb3VyU3RlcEJ1dHRvbiA9IHtcbiAgICAgICAgdGV4dDogJ2NoZXZyb25fbGVmdCcsXG4gICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIC8vIGludGVyY2VwdCB0aGUgYmFjayBhY3Rpb24gYW5kIHRyaWdnZXIgZXZlbnRcbiAgICAgICAgICBiYWNrRXZlbnQkLm5leHQoKTtcbiAgICAgICAgICBfYmFja0Zsb3cgPSB0cnVlO1xuICAgICAgICAgIC8vIGNoZWNrIGlmICdnb0JhY2tUbycgaXMgc2V0IHRvIGp1bXAgdG8gYSBwYXJ0aWN1bGFyIHN0ZXAsIGVsc2UganVzdCBnbyBiYWNrXG4gICAgICAgICAgaWYgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLmdvQmFja1RvKSB7XG4gICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5zaG93KHN0ZXAuYXR0YWNoVG9PcHRpb25zLmdvQmFja1RvLCBmYWxzZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmJhY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6XG4gICAgICAgICAgc3RlcC5hZHZhbmNlT25PcHRpb25zPy5hbGxvd0dvQmFjayA9PT0gZmFsc2VcbiAgICAgICAgICAgID8gTUFUX0JVVFRPTl9JTlZJU0lCTEVcbiAgICAgICAgICAgIDogTUFUX0lDT05fQlVUVE9OLFxuICAgICAgfTtcblxuICAgICAgLy8gY2hlY2sgaWYgaGlnaGxpZ2h0IHdhcyBwcm92aWRlZCBmb3IgdGhlIHN0ZXAsIGVsc2UgZmFsbGJhY2sgaW50byBzaGVwaGVyZHMgdXNhZ2VcbiAgICAgIHN0ZXAuaGlnaGxpZ2h0Q2xhc3MgPVxuICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy5oaWdobGlnaHRcbiAgICAgICAgICA/ICdzaGVwaGVyZC1oaWdobGlnaHQnXG4gICAgICAgICAgOiBzdGVwLmhpZ2hsaWdodENsYXNzO1xuXG4gICAgICAvLyBBZGRpbmcgYnV0dG9ucyBpbiB0aGUgc3RlcHMgaWYgbm8gYnV0dG9ucyBhcmUgZGVmaW5lZFxuICAgICAgaWYgKCFzdGVwLmJ1dHRvbnMgfHwgc3RlcC5idXR0b25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAvLyBmaXJzdCBzdGVwXG4gICAgICAgICAgc3RlcC5idXR0b25zID0gW25leHRCdXR0b25dO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSB0b3RhbFN0ZXBzIC0gMSkge1xuICAgICAgICAgIC8vIGxhc3Qgc3RlcFxuICAgICAgICAgIHN0ZXAuYnV0dG9ucyA9IFtiYWNrQnV0dG9uLCBmaW5pc2hCdXR0b25dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ZXAuYnV0dG9ucyA9IFtiYWNrQnV0dG9uLCBuZXh0QnV0dG9uXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjaGVja3MgXCJhZHZhbmNlT25cIiB0byBvdmVycmlkZSBsaXN0ZW5lcnNcbiAgICAgIGxldCBhZHZhbmNlT246IElUb3VyRXZlbnRPbltdIHwgSVRvdXJFdmVudE9uID0gc3RlcC5hZHZhbmNlT247XG4gICAgICAvLyByZW1vdmUgdGhlIHNoZXBoZXJkIFwiYWR2YW5jZU9uXCIgaW5mYXZvciBvZiBvdXJzIGlmIHRoZSBldmVudCBpcyBwYXJ0IG9mIG91ciBsaXN0XG4gICAgICBpZiAoXG4gICAgICAgICh0eXBlb2YgYWR2YW5jZU9uID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGFkdmFuY2VPbikgJiZcbiAgICAgICAgICBhZHZhbmNlT24uZXZlbnQgJiZcbiAgICAgICAgICBvdmVycmlkZGVuRXZlbnRzLmluZGV4T2YoYWR2YW5jZU9uLmV2ZW50LnNwbGl0KCcuJylbMF0pID4gLTEpIHx8XG4gICAgICAgIGFkdmFuY2VPbiBpbnN0YW5jZW9mIEFycmF5XG4gICAgICApIHtcbiAgICAgICAgc3RlcC5hZHZhbmNlT24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHN0ZXAuYnV0dG9ucyA9XG4gICAgICAgICAgc3RlcC5hZHZhbmNlT25PcHRpb25zICYmIHN0ZXAuYWR2YW5jZU9uT3B0aW9ucy5hbGxvd0dvQmFja1xuICAgICAgICAgICAgPyBbYmFja0J1dHRvbiwgdm9pZEJ1dHRvbl1cbiAgICAgICAgICAgIDogW3ZvaWRCdXR0b25dO1xuICAgICAgfVxuICAgICAgLy8gYWRkcyBhIGRlZmF1bHQgYmVmb3JlU2hvd1Byb21pc2UgZnVuY3Rpb25cbiAgICAgIHN0ZXAuYmVmb3JlU2hvd1Byb21pc2UgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogKHZhbHVlPzogYW55KSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWRkaXRpb25hbENhcGFiaWxpdGllc1NldHVwOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFkdmFuY2VPbiAmJiAhc3RlcC5hZHZhbmNlT24pIHtcbiAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFkdmFuY2VPbikpIHtcbiAgICAgICAgICAgICAgICBhZHZhbmNlT24gPSBbYWR2YW5jZU9uXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IGFkdmFuY2VBcnIkOiBTdWJqZWN0PHZvaWQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgYWR2YW5jZU9uLmZvckVhY2goKF86IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWR2YW5jZUV2ZW50JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgICAgICAgICAgYWR2YW5jZUFyciQucHVzaChhZHZhbmNlRXZlbnQkKTtcblxuICAgICAgICAgICAgICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICAgICAgICAgICAgICB0aGlzLl9iaW5kRXZlbnQoXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgc3RlcC5hZHZhbmNlT25PcHRpb25zLFxuICAgICAgICAgICAgICAgICAgYWR2YW5jZUV2ZW50JCxcbiAgICAgICAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBhZHZhbmNlU3ViczogU3Vic2NyaXB0aW9uID0gZm9ya0pvaW4oLi4uYWR2YW5jZUFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCwgYmFja0V2ZW50JCkpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBhZHZhbmNlIHRvIGEgc3BlY2lmaWMgc3RlcCwgZWxzZSBhZHZhbmNlIHRvIG5leHQgc3RlcFxuICAgICAgICAgICAgICAgICAgaWYgKHN0ZXAuYWR2YW5jZU9uT3B0aW9ucyAmJiBzdGVwLmFkdmFuY2VPbk9wdGlvbnMuanVtcFRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLnNob3coc3RlcC5hZHZhbmNlT25PcHRpb25zLmp1bXBUbyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBmb3J3YXJkRXZlbnQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIGFib3J0T24gd2FzIHBhc3NlZCBvbiB0aGUgc3RlcCwgd2UgYmluZCB0aGUgZXZlbnQgYW5kIGV4ZWN1dGUgY29tcGxldGVcbiAgICAgICAgICAgIGlmIChzdGVwLmFib3J0T24pIHtcbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRBcnIkOiBTdWJqZWN0PHZvaWQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgc3RlcC5hYm9ydE9uLmZvckVhY2goKGFib3J0T246IElUb3VyRXZlbnRPbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFib3J0RXZlbnQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICAgICAgICBhYm9ydEFyciQucHVzaChhYm9ydEV2ZW50JCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmluZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgYWJvcnRPbixcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGFib3J0RXZlbnQkLFxuICAgICAgICAgICAgICAgICAgZGVzdHJveWVkRXZlbnQkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYWJvcnRTdWJzOiBTdWJzY3JpcHRpb24gPSBtZXJnZSguLi5hYm9ydEFyciQpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZGVzdHJveWVkRXZlbnQkLCBiYWNrRXZlbnQkLCBmb3J3YXJkRXZlbnQkKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgYWJvcnRTdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IF9zdG9wVGltZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgICBjb25zdCBfcmV0cmllc1JlYWNoZWQkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgICAgY29uc3QgX3JldHJ5QXR0ZW1wdHMkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9XG4gICAgICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuXG4gICAgICAgICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgLy8gY2hlY2tzIGlmIFwiYXR0YWNoVG9cIiBpcyBhIHN0cmluZyBvciBhbiBvYmplY3QgdG8gZ2V0IHRoZSBpZCBvZiBhbiBlbGVtZW50XG4gICAgICAgICAgaWYgKHR5cGVvZiBzdGVwLmF0dGFjaFRvID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWQgPSBzdGVwLmF0dGFjaFRvO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0eXBlb2Ygc3RlcC5hdHRhY2hUbyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzdGVwLmF0dGFjaFRvLmVsZW1lbnQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZCA9IHN0ZXAuYXR0YWNoVG8uZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiBpZCBhcyBhIHN0cmluZyBpbiBlaXRoZXIgY2FzZSwgd2UgdXNlIGl0ICh3ZSBpZ25vcmUgaXQgaWYgaXRzIEhUTUxFbGVtZW50KVxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBzdGVwIGlzIHRoZSBmaXJzdCBzdGVwIG9mIHRoZSB0b3VyLCB3ZSBzZXQgdGhlIGJ1dHRvbnMgdG8gYmUgb25seSBcIm5leHRcIlxuICAgICAgICAgICAgLy8gd2UgaGFkIHRvIHVzZSBgYW55YCBzaW5jZSB0aGUgdG91ciBkb2VzbnQgZXhwb3NlIHRoZSBzdGVwcyBpbiBhbnkgZmFzaGlvbiBub3IgYSB3YXkgdG8gY2hlY2sgaWYgd2UgaGF2ZSBtb2RpZmllZCB0aGVtIGF0IGFsbFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpID09PVxuICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHNbMF1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5nZXRDdXJyZW50U3RlcCgpPy51cGRhdGVTdGVwT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgYnV0dG9uczogb3JpZ2luYWxTdGVwc1tpbmRleF0uYWR2YW5jZU9uXG4gICAgICAgICAgICAgICAgICA/IFt2b2lkQnV0dG9uXVxuICAgICAgICAgICAgICAgICAgOiBbbmV4dEJ1dHRvbl0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdG8gdGhlIGF0dGVtcHRzIG9ic2VydmFibGUgdG8gbm90aWZ5IGRlZXZlbG9wZXIgd2hlbiBudW1iZXIgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCh2YWw6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICAgICBzdGVwLmF0dGFjaFRvT3B0aW9ucy5yZXRyaWVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsIDwgc3RlcC5hdHRhY2hUb09wdGlvbnMucmV0cmllcztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPCBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfQVRURU1QVFM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKF9zdG9wVGltZXIkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGF0dGVtcHRzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBfcmV0cmllc1JlYWNoZWQkLm5leHQoMSk7XG4gICAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIC8vIGlmIGF0dGVtcHRzIGhhdmUgYmVlbiByZWFjaGVkLCB3ZSBjaGVjayBcInNraXBJZk5vdEZvdW5kXCIgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RlcC5hdHRhY2hUb09wdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnNraXBJZk5vdEZvdW5kXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnZXQgdG8gdGhpcyBzdGVwIGNvbWluZyBiYWNrIGZyb20gYSBzdGVwIGFuZCBpdCB3YXNudCBmb3VuZFxuICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBlaXRoZXIgY2hlY2sgaWYgaXRzIHRoZSBmaXJzdCBzdGVwIGFuZCB0cnkgZ29pbmcgZm9yd2FyZFxuICAgICAgICAgICAgICAgICAgLy8gb3Igd2Uga2VlcCBnb2luZyBiYWNrIHVudGlsIHdlIGZpbmQgYSBzdGVwIHRoYXQgYWN0dWFsbHkgZXhpc3RzXG4gICAgICAgICAgICAgICAgICBpZiAoX2JhY2tGbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAoPGFueT50aGlzLnNoZXBoZXJkVG91cikuc3RlcHMuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLmdldEN1cnJlbnRTdGVwKClcbiAgICAgICAgICAgICAgICAgICAgICApID09PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hlcGhlcmRUb3VyLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5iYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2JhY2tGbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZXN0cm95cyBjdXJyZW50IHN0ZXAgaWYgd2UgbmVlZCB0byBza2lwIGl0IHRvIHJlbW92ZSBpdCBmcm9tIHRoZSB0b3VyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5zaGVwaGVyZFRvdXIuZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGVwaGVyZFRvdXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5yZW1vdmVTdGVwKGN1cnJlbnRTdGVwPy5pZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLmF0dGFjaFRvT3B0aW9ucyAmJiBzdGVwLmF0dGFjaFRvT3B0aW9ucy5lbHNlKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiBcInNraXBJZk5vdEZvdW5kXCIgaXMgbm90IHRydWUsIHRoZW4gd2UgY2hlY2sgaWYgXCJlbHNlXCIgaGFzIGJlZW4gc2V0IHRvIGp1bXAgdG8gYSBzcGVjaWZpYyBzdGVwXG4gICAgICAgICAgICAgICAgICB0aGlzLnNoZXBoZXJkVG91ci5zaG93KHN0ZXAuYXR0YWNoVG9PcHRpb25zLmVsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBgUmV0cmllcyByZWFjaGVkIHRyeWluZyB0byBmaW5kICR7aWR9LiBSZXRyaWVkICAke2F0dGVtcHRzfSB0aW1lcy5gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gZWxzZSB3ZSBzaG93IHRoZSBzdGVwIHJlZ2FyZGxlc3NcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyB3ZSBzdGFydCBhIHRpbWVyIG9mIGF0dGVtcHRzIHRvIGZpbmQgYW4gZWxlbWVudCBpbiB0aGUgZG9tXG4gICAgICAgICAgICB0aW1lcihcbiAgICAgICAgICAgICAgKHN0ZXAuYXR0YWNoVG9PcHRpb25zICYmIHN0ZXAuYXR0YWNoVG9PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICAgICAgICAgIFNIRVBIRVJEX0RFRkFVTFRfRklORF9USU1FX0JFRk9SRV9TSE9XLFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMuaW50ZXJ2YWwpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0aW1lciB3aWxsIGNvbnRpbnVlIGVpdGhlciB1bnRpbCB3ZSBmaW5kIHRoZSBlbGVtZW50IG9yIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgaGFzIGJlZW4gcmVhY2hlZFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZShfc3RvcFRpbWVyJCwgX3JldHJpZXNSZWFjaGVkJCwgZGVzdHJveWVkRXZlbnQkKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpZCA/PyAnJyk7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQsIHdlIHN0b3AgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzU2V0dXAoKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgX3JldHJ5QXR0ZW1wdHMkLm5leHQoX3JldHJ5QXR0ZW1wdHMkLnZhbHVlICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gc3RvcCBmaW5kIGludGVydmFsIGlmIHVzZXIgc3RvcHMgdGhlIHRvdXJcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBfc3RvcFRpbWVyJC5uZXh0KCk7XG4gICAgICAgICAgICAgIF9zdG9wVGltZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIF9yZXRyaWVzUmVhY2hlZCQubmV4dCgxKTtcbiAgICAgICAgICAgICAgX3JldHJpZXNSZWFjaGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJlc29sdmUgb2JzZXJ2YWJsZSB1bnRpbCB0aGUgdGltZUJlZm9yZVNob3cgaGFzIHBhc3NzZWQgb3IgdXNlIGRlZmF1bHRcbiAgICAgICAgICAgIHRpbWVyKFxuICAgICAgICAgICAgICAoc3RlcC5hdHRhY2hUb09wdGlvbnMgJiYgc3RlcC5hdHRhY2hUb09wdGlvbnMudGltZUJlZm9yZVNob3cpIHx8XG4gICAgICAgICAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX1RJTUVfQkVGT1JFX1NIT1dcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKGRlc3Ryb3llZEV2ZW50JCkpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRFdmVudChcbiAgICBldmVudE9uOiBJVG91ckV2ZW50T24sXG4gICAgZXZlbnRPbk9wdGlvbnM6IElUb3VyRXZlbnRPbk9wdGlvbnMgfCB1bmRlZmluZWQsXG4gICAgZXZlbnQkOiBTdWJqZWN0PHZvaWQ+LFxuICAgIGRlc3Ryb3llZEV2ZW50JDogU3ViamVjdDx2b2lkPlxuICApOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGV2ZW50T24uc2VsZWN0b3IgPz8gJyc7XG4gICAgY29uc3QgZXZlbnQgPSBldmVudE9uLmV2ZW50O1xuICAgIC8vIHdlIHN0YXJ0IGEgdGltZXIgb2YgYXR0ZW1wdHMgdG8gZmluZCBhbiBlbGVtZW50IGluIHRoZSBkb21cbiAgICBjb25zdCB0aW1lclN1YnM6IFN1YnNjcmlwdGlvbiA9IHRpbWVyKFxuICAgICAgKGV2ZW50T25PcHRpb25zICYmIGV2ZW50T25PcHRpb25zLnRpbWVCZWZvcmVTaG93KSB8fFxuICAgICAgICBTSEVQSEVSRF9ERUZBVUxUX0ZJTkRfVElNRV9CRUZPUkVfU0hPVyxcbiAgICAgIChldmVudE9uT3B0aW9ucyAmJiBldmVudE9uT3B0aW9ucy5pbnRlcnZhbCkgfHxcbiAgICAgICAgU0hFUEhFUkRfREVGQVVMVF9GSU5EX0lOVEVSVkFMXG4gICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3llZEV2ZW50JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgYmVlbiBmb3VuZCwgd2Ugc3RvcCB0aGUgdGltZXIgYW5kIHJlc29sdmUgdGhlIHByb21pc2VcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICB0aW1lclN1YnMudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIGlmIChldmVudCA9PT0gSVRvdXJFdmVudC5hZGRlZCkge1xuICAgICAgICAgICAgLy8gaWYgZXZlbnQgaXMgXCJBZGRlZFwiIHRyaWdnZXIgYSBzb29uIGFzIHRoaXMgaXMgYXR0YWNoZWQuXG4gICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGV2ZW50ID09PSBJVG91ckV2ZW50LmNsaWNrIHx8XG4gICAgICAgICAgICBldmVudCA9PT0gSVRvdXJFdmVudC5wb2ludGVyb3ZlciB8fFxuICAgICAgICAgICAgKGV2ZW50ICYmIGV2ZW50LmluZGV4T2YoSVRvdXJFdmVudC5rZXl1cCkgPiAtMSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBub3JtYWwgbGlzdGVuZXJzIGZvciBtb3VzZWV2ZW50c1xuICAgICAgICAgICAgY29uc3QgbWFpbkV2ZW50ID0gZXZlbnQ/LnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgICBjb25zdCBzdWJFdmVudCA9IGV2ZW50Py5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsIG1haW5FdmVudClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgaWYgdGhlIGV2ZW50IGlzIGEga2V5Ym9hcmQgZXZlbnQgYW5kIHBhcnQgb2Ygb3V0IGxpc3RcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlFdmVudHMuZ2V0KCRldmVudC5rZXlDb2RlKSA9PT0gc3ViRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UoZXZlbnQkLmFzT2JzZXJ2YWJsZSgpLCBkZXN0cm95ZWRFdmVudCQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09IElUb3VyRXZlbnQucmVtb3ZlZCkge1xuICAgICAgICAgICAgLy8gYW5kIHdlIHdpbGwgdXNlIE11dGF0aW9uT2JzZXJ2ZXIgZm9yIERPTSBldmVudHNcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIHN0b3AgbGlzdGVuaW5pbmcgaWYgdG91ciBpcyBjbG9zZWRcbiAgICAgICAgICAgIGRlc3Ryb3llZEV2ZW50JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIG9ic2VydmUgZm9yIGFueSBET00gaW50ZXJhY3Rpb24gaW4gdGhlIGVsZW1lbnRcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -39,8 +39,8 @@ const defaultStepOptions = {
39
39
  enabled: true,
40
40
  },
41
41
  };
42
- const MAT_ICON_BUTTON = 'mat-icon-button material-icons mat-button-base';
43
- const MAT_BUTTON = 'mat-button-base mat-button';
42
+ const MAT_ICON_BUTTON = 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';
43
+ const MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';
44
44
  const MAT_BUTTON_INVISIBLE = 'shepherd-void-button';
45
45
  class CovalentGuidedTour extends TourButtonsActions {
46
46
  constructor(stepOptions = defaultStepOptions) {
@@ -602,18 +602,18 @@ class CovalentGuidedTourService extends CovalentGuidedTour {
602
602
  return routedSteps;
603
603
  }
604
604
  }
605
- CovalentGuidedTourService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
606
- CovalentGuidedTourService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService });
607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService, decorators: [{
605
+ CovalentGuidedTourService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
606
+ CovalentGuidedTourService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService });
607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService, decorators: [{
608
608
  type: Injectable
609
609
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.HttpClient }]; } });
610
610
 
611
611
  class CovalentGuidedTourModule {
612
612
  }
613
- CovalentGuidedTourModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
614
- CovalentGuidedTourModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, imports: [CommonModule] });
615
- CovalentGuidedTourModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, providers: [CovalentGuidedTourService], imports: [CommonModule] });
616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, decorators: [{
613
+ CovalentGuidedTourModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
614
+ CovalentGuidedTourModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, imports: [CommonModule] });
615
+ CovalentGuidedTourModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, providers: [CovalentGuidedTourService], imports: [CommonModule] });
616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, decorators: [{
617
617
  type: NgModule,
618
618
  args: [{
619
619
  imports: [CommonModule],
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-guided-tour.mjs","sources":["../../../../libs/angular-guided-tour/src/lib/guided.tour.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.service.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.module.ts","../../../../libs/angular-guided-tour/src/covalent-guided-tour.ts"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport {\n timer,\n Subject,\n BehaviorSubject,\n merge,\n Subscription,\n fromEvent,\n forkJoin,\n} from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\n\nexport type TourStep = Shepherd.Step.StepOptions;\nexport type TourStepButton = Shepherd.Step.StepOptionsButton;\n\nexport enum ITourEvent {\n 'click' = 'click',\n 'pointerover' = 'pointerover',\n 'keyup' = 'keyup',\n 'added' = 'added', // added to DOM\n 'removed' = 'removed', // removed from DOM\n}\n\nexport interface ITourEventOn {\n selector?: string; // css selector\n event?: keyof typeof ITourEvent; // click, pointerover, keyup, added, removed\n}\n\nexport interface ITourEventOnOptions {\n timeBeforeShow?: number; // delay before step is displayed\n interval?: number; // time between searches for element, defaults to 500ms\n}\n\nexport interface ITourOptions extends Shepherd.Tour.TourOptions {\n abortOn?: ITourEventOn[]; // events to abort on\n}\n\nexport interface ITourStepAttachToOptions extends ITourEventOnOptions {\n highlight?: boolean;\n retries?: number; // # num of attempts to find element\n skipIfNotFound?: boolean; // if element is not found after n retries, move on to next step\n else?: string; // if element is not found, go to step with this id\n goBackTo?: string; // back button goes back to step with this id\n skipFromStepCount?: boolean; // show/hide progress on step\n}\n\nexport interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {\n jumpTo?: string; // next button will jump to step with this id\n allowGoBack?: boolean; // allow back within this step\n}\n\nexport interface ITourStep extends TourStep {\n attachToOptions?: ITourStepAttachToOptions;\n advanceOnOptions?: ITourStepAdvanceOnOptions;\n advanceOn?: ITourEventOn[] | ITourEventOn | any;\n abortOn?: ITourEventOn[];\n count?: number;\n}\n\nabstract class TourButtonsActions {\n abstract next(): void;\n\n abstract back(): void;\n\n abstract cancel(): void;\n\n abstract finish(): void;\n}\n\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\n\nconst overriddenEvents: string[] = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\n\nconst keyEvents: Map<number, string> = new Map<number, string>([\n [13, 'enter'],\n [27, 'esc'],\n]);\n\nconst defaultStepOptions: TourStep = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\n\nconst MAT_ICON_BUTTON = 'mat-icon-button material-icons mat-button-base';\nconst MAT_BUTTON = 'mat-button-base mat-button';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\n\nexport class CovalentGuidedTour extends TourButtonsActions {\n private _destroyedEvent$!: Subject<void>;\n\n shepherdTour!: Shepherd.Tour;\n stepOptions: ITourStep;\n\n constructor(stepOptions: ITourStep = defaultStepOptions) {\n super();\n\n this.stepOptions = stepOptions;\n this.newTour();\n }\n\n newTour(opts?: ITourOptions): void {\n this.shepherdTour = new Shepherd.Tour(\n Object.assign(\n {\n defaultStepOptions: this.stepOptions,\n },\n opts\n )\n );\n\n this._destroyedEvent$ = new Subject<void>();\n // listen to cancel and complete to clean up abortOn events\n merge(\n fromEvent(this.shepherdTour, 'cancel'),\n fromEvent(this.shepherdTour, 'complete')\n )\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$: Subject<void>[] = [];\n opts.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n\n back(): void {\n this.shepherdTour.back();\n }\n\n cancel(): void {\n this.shepherdTour.cancel();\n }\n\n next(): void {\n this.shepherdTour.next();\n }\n\n finish(): void {\n this.shepherdTour.complete();\n }\n\n addSteps(steps: ITourStep[]): void {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n\n start(): void {\n this.shepherdTour.start();\n }\n\n protected _prepareTour(\n originalSteps: ITourStep[],\n finishLabel: string = 'finish'\n ): ITourStep[] {\n // create Subjects for back and forward events\n const backEvent$: Subject<void> = new Subject<void>();\n const forwardEvent$: Subject<void> = new Subject<void>();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$: Subject<void> = new Subject<void>();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function (this: any): void {\n // get all the footers that are available in the DOM\n const footers: Element[] = Array.from<Element>(\n document.querySelectorAll('.shepherd-footer')\n );\n // get the last footer since Shepherd always puts the active one at the end\n const footer: Element = footers[footers.length - 1];\n // generate steps html element\n const progress: HTMLSpanElement = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n\n let stepTotal = 0;\n const steps: ITourStep[] = originalSteps.map((step: ITourStep) => {\n let showProgress: () => void = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function (): void {\n return;\n };\n } else if (\n step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false\n ) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n\n const finishButton: TourStepButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n\n const voidButton: TourStepButton = {\n text: '',\n action(): void {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n\n const totalSteps: number = steps.length;\n steps.forEach((step: ITourStep, index: number) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton: TourStepButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton: TourStepButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n } else {\n this.shepherdTour.back();\n }\n },\n classes:\n step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n } else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n } else {\n step.buttons = [backButton, nextButton];\n }\n }\n\n // checks \"advanceOn\" to override listeners\n let advanceOn: ITourEventOn[] | ITourEventOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if (\n (typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array\n ) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve: (value?: any) => void) => {\n const additionalCapabilitiesSetup: () => void = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n\n const advanceArr$: Subject<void>[] = [];\n advanceOn.forEach((_: any, i: number) => {\n const advanceEvent$: Subject<void> = new Subject<void>();\n advanceArr$.push(advanceEvent$);\n\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(\n _,\n step.advanceOnOptions,\n advanceEvent$,\n destroyedEvent$\n );\n });\n const advanceSubs: Subscription = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n } else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$: Subject<void>[] = [];\n step.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(\n abortOn,\n undefined,\n abortEvent$,\n destroyedEvent$\n );\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(\n takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$))\n )\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n\n const _stopTimer$: Subject<void> = new Subject<void>();\n const _retriesReached$: Subject<number> = new Subject<number>();\n const _retryAttempts$: BehaviorSubject<number> =\n new BehaviorSubject<number>(-1);\n\n let id: string | undefined;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n } else if (\n typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string'\n ) {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (\n this.shepherdTour.getCurrentStep() ===\n (<any>this.shepherdTour).steps[0]\n ) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(\n skip(1),\n skipWhile((val: number) => {\n if (\n step.attachToOptions &&\n step.attachToOptions.retries !== undefined\n ) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }),\n takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$))\n )\n .subscribe((attempts: number) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (\n step.attachToOptions &&\n step.attachToOptions.skipIfNotFound\n ) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (\n (<any>this.shepherdTour).steps.indexOf(\n this.shepherdTour.getCurrentStep()\n ) === 0\n ) {\n this.shepherdTour.next();\n } else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n } else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n } else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n } else {\n // tslint:disable-next-line:no-console\n console.warn(\n `Retries reached trying to find ${id}. Retried ${attempts} times.`\n );\n // else we show the step regardless\n resolve();\n }\n });\n\n // we start a timer of attempts to find an element in the dom\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$))\n )\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n } else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n } else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW\n )\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n\n private _bindEvent(\n eventOn: ITourEventOn,\n eventOnOptions: ITourEventOnOptions | undefined,\n event$: Subject<void>,\n destroyedEvent$: Subject<void>\n ): void {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs: Subscription = timer(\n (eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n } else if (\n event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)\n ) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(\n filter(($event: Event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n } else {\n return true;\n }\n }),\n takeUntil(merge(event$.asObservable(), destroyedEvent$))\n )\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n } else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer: MutationObserver = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Router,\n ActivatedRoute,\n ParamMap,\n NavigationExtras,\n NavigationStart,\n Event as NavigationEvent,\n} from '@angular/router';\nimport Shepherd from 'shepherd.js';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { Observable, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n CovalentGuidedTour,\n ITourStep,\n ITourOptions,\n TourStepButton,\n} from './guided.tour';\n\nexport interface IGuidedTour extends ITourOptions {\n steps: IGuidedTourStep[];\n finishButtonText?: string;\n}\n\nexport interface IGuidedTourStep extends ITourStep {\n routing?: {\n route: string;\n extras?: NavigationExtras;\n };\n}\n\n/**\n * Router enabled Shepherd tour\n */\nexport enum TourEvents {\n complete = 'complete',\n cancel = 'cancel',\n hide = 'hide',\n show = 'show',\n start = 'start',\n active = 'active',\n inactive = 'inactive',\n}\n\nexport interface IGuidedTourEvent {\n step: any;\n previous: any;\n tour: any;\n}\n\n@Injectable()\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n private _toursMap: Map<string, IGuidedTour> = new Map<string, IGuidedTour>();\n private _tourStepURLs: Map<string, string> = new Map<string, string>();\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _httpClient: HttpClient\n ) {\n super();\n _router.events\n .pipe(\n filter(\n (event: NavigationEvent) =>\n event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n\n tourEvent$(str: TourEvents): Observable<IGuidedTourEvent> {\n return fromEvent(this.shepherdTour, str);\n }\n\n async registerTour(\n tourName: string,\n tour: IGuidedTour | string\n ): Promise<void> {\n const guidedTour: IGuidedTour =\n typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n\n startTour(tourName: string): Shepherd.Tour | undefined {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance: Shepherd.Tour = this.shepherdTour.addSteps(\n this._configureRoutesForSteps(\n this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)\n )\n );\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe(\n (tourEvent: IGuidedTourEvent) => {\n const currentURL: string = this._router.url.split(/[?#]/)[0];\n const {\n step: { id, options },\n } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n } else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n } else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n }\n );\n this.start();\n return tourInstance;\n } else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam: string = 'tour'): Observable<ParamMap> {\n return this._route.queryParamMap.pipe(\n debounceTime(100),\n tap((params: ParamMap) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams: URLSearchParams = new URLSearchParams(\n window.location.search\n );\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url: string =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n })\n );\n }\n\n setNextBtnDisability(stepId: string, isDisabled: boolean): void {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions: ITourStep = (this.shepherdTour.getById(stepId) as any)\n .options;\n stepOptions.buttons?.forEach((button: TourStepButton) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n\n private async _loadTour(tourUrl: string): Promise<any> {\n const request: Observable<object> = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(\n map((resultSet: any) => {\n return JSON.parse(JSON.stringify(resultSet));\n })\n )\n .toPromise();\n } catch {\n return undefined;\n }\n }\n\n private _getTour(key: string): IGuidedTour | undefined {\n return this._toursMap.get(key);\n }\n\n private _configureRoutesForSteps(\n routedSteps: IGuidedTourStep[]\n ): IGuidedTourStep[] {\n routedSteps.forEach((step: IGuidedTourStep) => {\n if (step.routing) {\n const route: string = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise: () => Promise<void> = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n } else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n\n return routedSteps;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n})\nexport class CovalentGuidedTourModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"covalent-guided-tour.mjs","sources":["../../../../libs/angular-guided-tour/src/lib/guided.tour.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.service.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.module.ts","../../../../libs/angular-guided-tour/src/covalent-guided-tour.ts"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport {\n timer,\n Subject,\n BehaviorSubject,\n merge,\n Subscription,\n fromEvent,\n forkJoin,\n} from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\n\nexport type TourStep = Shepherd.Step.StepOptions;\nexport type TourStepButton = Shepherd.Step.StepOptionsButton;\n\nexport enum ITourEvent {\n 'click' = 'click',\n 'pointerover' = 'pointerover',\n 'keyup' = 'keyup',\n 'added' = 'added', // added to DOM\n 'removed' = 'removed', // removed from DOM\n}\n\nexport interface ITourEventOn {\n selector?: string; // css selector\n event?: keyof typeof ITourEvent; // click, pointerover, keyup, added, removed\n}\n\nexport interface ITourEventOnOptions {\n timeBeforeShow?: number; // delay before step is displayed\n interval?: number; // time between searches for element, defaults to 500ms\n}\n\nexport interface ITourOptions extends Shepherd.Tour.TourOptions {\n abortOn?: ITourEventOn[]; // events to abort on\n}\n\nexport interface ITourStepAttachToOptions extends ITourEventOnOptions {\n highlight?: boolean;\n retries?: number; // # num of attempts to find element\n skipIfNotFound?: boolean; // if element is not found after n retries, move on to next step\n else?: string; // if element is not found, go to step with this id\n goBackTo?: string; // back button goes back to step with this id\n skipFromStepCount?: boolean; // show/hide progress on step\n}\n\nexport interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {\n jumpTo?: string; // next button will jump to step with this id\n allowGoBack?: boolean; // allow back within this step\n}\n\nexport interface ITourStep extends TourStep {\n attachToOptions?: ITourStepAttachToOptions;\n advanceOnOptions?: ITourStepAdvanceOnOptions;\n advanceOn?: ITourEventOn[] | ITourEventOn | any;\n abortOn?: ITourEventOn[];\n count?: number;\n}\n\nabstract class TourButtonsActions {\n abstract next(): void;\n\n abstract back(): void;\n\n abstract cancel(): void;\n\n abstract finish(): void;\n}\n\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\n\nconst overriddenEvents: string[] = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\n\nconst keyEvents: Map<number, string> = new Map<number, string>([\n [13, 'enter'],\n [27, 'esc'],\n]);\n\nconst defaultStepOptions: TourStep = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\n\nconst MAT_ICON_BUTTON =\n 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';\nconst MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\n\nexport class CovalentGuidedTour extends TourButtonsActions {\n private _destroyedEvent$!: Subject<void>;\n\n shepherdTour!: Shepherd.Tour;\n stepOptions: ITourStep;\n\n constructor(stepOptions: ITourStep = defaultStepOptions) {\n super();\n\n this.stepOptions = stepOptions;\n this.newTour();\n }\n\n newTour(opts?: ITourOptions): void {\n this.shepherdTour = new Shepherd.Tour(\n Object.assign(\n {\n defaultStepOptions: this.stepOptions,\n },\n opts\n )\n );\n\n this._destroyedEvent$ = new Subject<void>();\n // listen to cancel and complete to clean up abortOn events\n merge(\n fromEvent(this.shepherdTour, 'cancel'),\n fromEvent(this.shepherdTour, 'complete')\n )\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$: Subject<void>[] = [];\n opts.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n\n back(): void {\n this.shepherdTour.back();\n }\n\n cancel(): void {\n this.shepherdTour.cancel();\n }\n\n next(): void {\n this.shepherdTour.next();\n }\n\n finish(): void {\n this.shepherdTour.complete();\n }\n\n addSteps(steps: ITourStep[]): void {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n\n start(): void {\n this.shepherdTour.start();\n }\n\n protected _prepareTour(\n originalSteps: ITourStep[],\n finishLabel: string = 'finish'\n ): ITourStep[] {\n // create Subjects for back and forward events\n const backEvent$: Subject<void> = new Subject<void>();\n const forwardEvent$: Subject<void> = new Subject<void>();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$: Subject<void> = new Subject<void>();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function (this: any): void {\n // get all the footers that are available in the DOM\n const footers: Element[] = Array.from<Element>(\n document.querySelectorAll('.shepherd-footer')\n );\n // get the last footer since Shepherd always puts the active one at the end\n const footer: Element = footers[footers.length - 1];\n // generate steps html element\n const progress: HTMLSpanElement = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n\n let stepTotal = 0;\n const steps: ITourStep[] = originalSteps.map((step: ITourStep) => {\n let showProgress: () => void = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function (): void {\n return;\n };\n } else if (\n step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false\n ) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n\n const finishButton: TourStepButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n\n const voidButton: TourStepButton = {\n text: '',\n action(): void {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n\n const totalSteps: number = steps.length;\n steps.forEach((step: ITourStep, index: number) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton: TourStepButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton: TourStepButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n } else {\n this.shepherdTour.back();\n }\n },\n classes:\n step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n } else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n } else {\n step.buttons = [backButton, nextButton];\n }\n }\n\n // checks \"advanceOn\" to override listeners\n let advanceOn: ITourEventOn[] | ITourEventOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if (\n (typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array\n ) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve: (value?: any) => void) => {\n const additionalCapabilitiesSetup: () => void = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n\n const advanceArr$: Subject<void>[] = [];\n advanceOn.forEach((_: any, i: number) => {\n const advanceEvent$: Subject<void> = new Subject<void>();\n advanceArr$.push(advanceEvent$);\n\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(\n _,\n step.advanceOnOptions,\n advanceEvent$,\n destroyedEvent$\n );\n });\n const advanceSubs: Subscription = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n } else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$: Subject<void>[] = [];\n step.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(\n abortOn,\n undefined,\n abortEvent$,\n destroyedEvent$\n );\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(\n takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$))\n )\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n\n const _stopTimer$: Subject<void> = new Subject<void>();\n const _retriesReached$: Subject<number> = new Subject<number>();\n const _retryAttempts$: BehaviorSubject<number> =\n new BehaviorSubject<number>(-1);\n\n let id: string | undefined;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n } else if (\n typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string'\n ) {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (\n this.shepherdTour.getCurrentStep() ===\n (<any>this.shepherdTour).steps[0]\n ) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(\n skip(1),\n skipWhile((val: number) => {\n if (\n step.attachToOptions &&\n step.attachToOptions.retries !== undefined\n ) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }),\n takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$))\n )\n .subscribe((attempts: number) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (\n step.attachToOptions &&\n step.attachToOptions.skipIfNotFound\n ) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (\n (<any>this.shepherdTour).steps.indexOf(\n this.shepherdTour.getCurrentStep()\n ) === 0\n ) {\n this.shepherdTour.next();\n } else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n } else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n } else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n } else {\n // tslint:disable-next-line:no-console\n console.warn(\n `Retries reached trying to find ${id}. Retried ${attempts} times.`\n );\n // else we show the step regardless\n resolve();\n }\n });\n\n // we start a timer of attempts to find an element in the dom\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$))\n )\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n } else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n } else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW\n )\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n\n private _bindEvent(\n eventOn: ITourEventOn,\n eventOnOptions: ITourEventOnOptions | undefined,\n event$: Subject<void>,\n destroyedEvent$: Subject<void>\n ): void {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs: Subscription = timer(\n (eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n } else if (\n event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)\n ) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(\n filter(($event: Event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n } else {\n return true;\n }\n }),\n takeUntil(merge(event$.asObservable(), destroyedEvent$))\n )\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n } else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer: MutationObserver = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Router,\n ActivatedRoute,\n ParamMap,\n NavigationExtras,\n NavigationStart,\n Event as NavigationEvent,\n} from '@angular/router';\nimport Shepherd from 'shepherd.js';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { Observable, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n CovalentGuidedTour,\n ITourStep,\n ITourOptions,\n TourStepButton,\n} from './guided.tour';\n\nexport interface IGuidedTour extends ITourOptions {\n steps: IGuidedTourStep[];\n finishButtonText?: string;\n}\n\nexport interface IGuidedTourStep extends ITourStep {\n routing?: {\n route: string;\n extras?: NavigationExtras;\n };\n}\n\n/**\n * Router enabled Shepherd tour\n */\nexport enum TourEvents {\n complete = 'complete',\n cancel = 'cancel',\n hide = 'hide',\n show = 'show',\n start = 'start',\n active = 'active',\n inactive = 'inactive',\n}\n\nexport interface IGuidedTourEvent {\n step: any;\n previous: any;\n tour: any;\n}\n\n@Injectable()\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n private _toursMap: Map<string, IGuidedTour> = new Map<string, IGuidedTour>();\n private _tourStepURLs: Map<string, string> = new Map<string, string>();\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _httpClient: HttpClient\n ) {\n super();\n _router.events\n .pipe(\n filter(\n (event: NavigationEvent) =>\n event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n\n tourEvent$(str: TourEvents): Observable<IGuidedTourEvent> {\n return fromEvent(this.shepherdTour, str);\n }\n\n async registerTour(\n tourName: string,\n tour: IGuidedTour | string\n ): Promise<void> {\n const guidedTour: IGuidedTour =\n typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n\n startTour(tourName: string): Shepherd.Tour | undefined {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance: Shepherd.Tour = this.shepherdTour.addSteps(\n this._configureRoutesForSteps(\n this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)\n )\n );\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe(\n (tourEvent: IGuidedTourEvent) => {\n const currentURL: string = this._router.url.split(/[?#]/)[0];\n const {\n step: { id, options },\n } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n } else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n } else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n }\n );\n this.start();\n return tourInstance;\n } else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam: string = 'tour'): Observable<ParamMap> {\n return this._route.queryParamMap.pipe(\n debounceTime(100),\n tap((params: ParamMap) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams: URLSearchParams = new URLSearchParams(\n window.location.search\n );\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url: string =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n })\n );\n }\n\n setNextBtnDisability(stepId: string, isDisabled: boolean): void {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions: ITourStep = (this.shepherdTour.getById(stepId) as any)\n .options;\n stepOptions.buttons?.forEach((button: TourStepButton) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n\n private async _loadTour(tourUrl: string): Promise<any> {\n const request: Observable<object> = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(\n map((resultSet: any) => {\n return JSON.parse(JSON.stringify(resultSet));\n })\n )\n .toPromise();\n } catch {\n return undefined;\n }\n }\n\n private _getTour(key: string): IGuidedTour | undefined {\n return this._toursMap.get(key);\n }\n\n private _configureRoutesForSteps(\n routedSteps: IGuidedTourStep[]\n ): IGuidedTourStep[] {\n routedSteps.forEach((step: IGuidedTourStep) => {\n if (step.routing) {\n const route: string = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise: () => Promise<void> = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n } else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n\n return routedSteps;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n})\nexport class CovalentGuidedTourModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;AAeY,IAAA,WAMX;AAND,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAqB,CAAA;AACvB,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA,CAAA;AAsCD,MAAe,kBAAkB,CAAA;AAQhC,CAAA;AAED,MAAM,sCAAsC,GAAG,GAAG,CAAC;AACnD,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAC3C,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C,MAAM,gBAAgB,GAAa;AACjC,IAAA,UAAU,CAAC,KAAK;AAChB,IAAA,UAAU,CAAC,WAAW;AACtB,IAAA,UAAU,CAAC,OAAO;AAClB,IAAA,UAAU,CAAC,KAAK;AAChB,IAAA,UAAU,CAAC,KAAK;CACjB,CAAC;AAEF,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAiB;IAC7D,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,KAAK,CAAC;AACZ,CAAA,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAa;IACnC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;AACjD,IAAA,UAAU,EAAE;AACV,QAAA,OAAO,EAAE,IAAI;AACd,KAAA;CACF,CAAC;AAEF,MAAM,eAAe,GACnB,wEAAwE,CAAC;AAC3E,MAAM,UAAU,GAAG,+CAA+C,CAAC;AACnE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE9C,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;IAMxD,WAAY,CAAA,cAAyB,kBAAkB,EAAA;AACrD,QAAA,KAAK,EAAE,CAAC;AAER,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAED,IAAA,OAAO,CAAC,IAAmB,EAAA;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,CACnC,MAAM,CAAC,MAAM,CACX;YACE,kBAAkB,EAAE,IAAI,CAAC,WAAW;SACrC,EACD,IAAI,CACL,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAE5C,QAAA,KAAK,CACH,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EACtC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CACzC;aACE,IAAI,CAAC,KAAK,EAAE,CAAC;aACb,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACnC,SAAC,CAAC,CAAC;;AAGL,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YACxB,MAAM,SAAS,GAAoB,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAqB,KAAI;AAC7C,gBAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACvD,gBAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,SAAS,GAAiB,KAAK,CAAC,GAAG,SAAS,CAAC;AAChD,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBACtC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,WAAW,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KAC5B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAED,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;KACtD;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;AAES,IAAA,YAAY,CACpB,aAA0B,EAC1B,WAAA,GAAsB,QAAQ,EAAA;;AAG9B,QAAA,MAAM,UAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACtD,QAAA,MAAM,aAAa,GAAkB,IAAI,OAAO,EAAQ,CAAC;QACzD,IAAI,SAAS,GAAG,KAAK,CAAC;;AAEtB,QAAA,MAAM,eAAe,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAC3D;;AAEG;AACH,QAAA,MAAM,kBAAkB,GAAG,YAAA;;AAEzB,YAAA,MAAM,OAAO,GAAc,KAAK,CAAC,IAAI,CACnC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAC9C,CAAC;;YAEF,MAAM,MAAM,GAAY,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;YAEpD,MAAM,QAAQ,GAAoB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACjE,YAAA,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACzC,YAAA,QAAQ,CAAC,SAAS,GAAG,CAAG,EAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;;AAEnF,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC1E,SAAC,CAAC;QAEF,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,KAAK,GAAgB,aAAa,CAAC,GAAG,CAAC,CAAC,IAAe,KAAI;;YAC/D,IAAI,YAAY,GAAe,MAAK;;AAEpC,aAAC,CAAC;YACF,IAAI,CAAA,MAAA,IAAI,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAK,IAAI,EAAE;AACpD,gBAAA,YAAY,GAAG,YAAA;oBACb,OAAO;AACT,iBAAC,CAAC;AACH,aAAA;iBAAM,IACL,CAAA,MAAA,IAAI,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAK,SAAS;gBACrD,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,0CAAE,iBAAiB,MAAK,KAAK,EACjD;AACA,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,SAAS,CAAC;AACzB,gBAAA,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;AAC7B,gBAAA,IAAI,EAAE;AACJ,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA;AACF,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,YAAY,GAAmB;AACnC,YAAA,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,YAAA,OAAO,EAAE,UAAU;SACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAmB;AACjC,YAAA,IAAI,EAAE,EAAE;YACR,MAAM,GAAA;gBACJ,OAAO;aACR;AACD,YAAA,OAAO,EAAE,oBAAoB;SAC9B,CAAC;;AAGF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YACjD,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAe,EAAE,KAAa,KAAI;;;;AAG/C,YAAA,MAAM,UAAU,GAAmB;AACjC,gBAAA,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,MAAK;;oBAEX,aAAa,CAAC,IAAI,EAAE,CAAC;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;iBAC1B;AACD,gBAAA,OAAO,EAAE,eAAe;aACzB,CAAC;AACF,YAAA,MAAM,UAAU,GAAmB;AACjC,gBAAA,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,MAAK;;oBAEX,UAAU,CAAC,IAAI,EAAE,CAAC;oBAClB,SAAS,GAAG,IAAI,CAAC;;oBAEjB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AACzD,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9D,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,qBAAA;iBACF;gBACD,OAAO,EACL,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAK,KAAK;AAC1C,sBAAE,oBAAoB;AACtB,sBAAE,eAAe;aACtB,CAAC;;AAGF,YAAA,IAAI,CAAC,cAAc;AACjB,gBAAA,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS;AACpD,sBAAE,oBAAoB;AACtB,sBAAE,IAAI,CAAC,cAAc,CAAC;;AAG1B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,IAAI,KAAK,KAAK,CAAC,EAAE;;AAEf,oBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7B,iBAAA;AAAM,qBAAA,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC,EAAE;;oBAEnC,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC3C,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACzC,iBAAA;AACF,aAAA;;AAGD,YAAA,IAAI,SAAS,GAAkC,IAAI,CAAC,SAAS,CAAC;;AAE9D,YAAA,IACE,CAAC,OAAO,SAAS,KAAK,QAAQ;AAC5B,gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACzB,gBAAA,SAAS,CAAC,KAAK;AACf,gBAAA,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9D,SAAS,YAAY,KAAK,EAC1B;AACA,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO;AACV,oBAAA,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW;AACxD,0BAAE,CAAC,UAAU,EAAE,UAAU,CAAC;AAC1B,0BAAE,CAAC,UAAU,CAAC,CAAC;AACpB,aAAA;;AAED,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAK;AAC5B,gBAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAA8B,KAAI;;oBACpD,MAAM,2BAA2B,GAAe,MAAK;AACnD,wBAAA,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAChC,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC7B,gCAAA,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB,6BAAA;4BAED,MAAM,WAAW,GAAoB,EAAE,CAAC;4BACxC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,KAAI;AACtC,gCAAA,MAAM,aAAa,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACzD,gCAAA,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;AAGhC,gCAAA,IAAI,CAAC,UAAU,CACb,CAAC,EACD,IAAI,CAAC,gBAAgB,EACrB,aAAa,EACb,eAAe,CAChB,CAAC;AACJ,6BAAC,CAAC,CAAC;AACH,4BAAA,MAAM,WAAW,GAAiB,QAAQ,CAAC,GAAG,WAAW,CAAC;iCACvD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;iCACnD,SAAS,CAAC,MAAK;;gCAEd,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;oCACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtD,iCAAA;AAAM,qCAAA;AACL,oCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,iCAAA;gCACD,aAAa,CAAC,IAAI,EAAE,CAAC;gCACrB,WAAW,CAAC,WAAW,EAAE,CAAC;AAC5B,6BAAC,CAAC,CAAC;AACN,yBAAA;;wBAGD,IAAI,IAAI,CAAC,OAAO,EAAE;4BAChB,MAAM,SAAS,GAAoB,EAAE,CAAC;4BACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAqB,KAAI;AAC7C,gCAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACvD,gCAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gCAC5B,IAAI,CAAC,UAAU,CACb,OAAO,EACP,SAAS,EACT,WAAW,EACX,eAAe,CAChB,CAAC;AACJ,6BAAC,CAAC,CAAC;AAEH,4BAAA,MAAM,SAAS,GAAiB,KAAK,CAAC,GAAG,SAAS,CAAC;AAChD,iCAAA,IAAI,CACH,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAC7D;iCACA,SAAS,CAAC,MAAK;AACd,gCAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gCAC7B,SAAS,CAAC,WAAW,EAAE,CAAC;AAC1B,6BAAC,CAAC,CAAC;AACN,yBAAA;AACH,qBAAC,CAAC;AAEF,oBAAA,MAAM,WAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACvD,oBAAA,MAAM,gBAAgB,GAAoB,IAAI,OAAO,EAAU,CAAC;oBAChE,MAAM,eAAe,GACnB,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC,CAAC;AAElC,oBAAA,IAAI,EAAsB,CAAC;;AAE3B,oBAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACrC,wBAAA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpB,qBAAA;AAAM,yBAAA,IACL,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;AACjC,wBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,EACzC;AACA,wBAAA,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5B,qBAAA;;AAED,oBAAA,IAAI,EAAE,EAAE;;;AAGN,wBAAA,IACE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;AAC5B,4BAAA,IAAI,CAAC,YAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EACjC;4BACA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,CAAC;AACpD,gCAAA,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS;sCACnC,CAAC,UAAU,CAAC;sCACZ,CAAC,UAAU,CAAC;AACjB,6BAAA,CAAC,CAAC;AACJ,yBAAA;;wBAED,eAAe;6BACZ,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,GAAW,KAAI;4BACxB,IACE,IAAI,CAAC,eAAe;AACpB,gCAAA,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,SAAS,EAC1C;AACA,gCAAA,OAAO,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAC3C,6BAAA;4BACD,OAAO,GAAG,GAAG,8BAA8B,CAAC;AAC9C,yBAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC,CAC9D;AACA,6BAAA,SAAS,CAAC,CAAC,QAAgB,KAAI;;AAC9B,4BAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACzB,gBAAgB,CAAC,QAAQ,EAAE,CAAC;;4BAE5B,IACE,IAAI,CAAC,eAAe;AACpB,gCAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EACnC;;;;AAIA,gCAAA,IAAI,SAAS,EAAE;AACb,oCAAA,IACQ,IAAI,CAAC,YAAa,CAAC,KAAK,CAAC,OAAO,CACpC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CACnC,KAAK,CAAC,EACP;AACA,wCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,qCAAA;AAAM,yCAAA;AACL,wCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,qCAAA;oCACD,SAAS,GAAG,KAAK,CAAC;AACnB,iCAAA;AAAM,qCAAA;;oCAEL,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;AACvD,oCAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,OAAO,EAAE,CAAC;AACvB,oCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,oCAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC;AACrD,iCAAA;AACF,6BAAA;iCAAM,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;gCAE5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnD,6BAAA;AAAM,iCAAA;;gCAEL,OAAO,CAAC,IAAI,CACV,CAAA,+BAAA,EAAkC,EAAE,CAAc,WAAA,EAAA,QAAQ,CAAS,OAAA,CAAA,CACpE,CAAC;;AAEF,gCAAA,OAAO,EAAE,CAAC;AACX,6BAAA;AACH,yBAAC,CAAC,CAAC;;wBAGL,KAAK,CACH,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;4BAC1D,sCAAsC,EACxC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ;AACpD,4BAAA,8BAA8B,CACjC;6BACE,IAAI;;wBAEH,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CACjE;6BACA,SAAS,CAAC,MAAK;AACd,4BAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAF,IAAA,IAAA,EAAE,KAAF,KAAA,CAAA,GAAA,EAAE,GAAI,EAAE,CAAC,CAAC;;AAEjD,4BAAA,IAAI,OAAO,EAAE;gCACX,WAAW,CAAC,IAAI,EAAE,CAAC;gCACnB,WAAW,CAAC,QAAQ,EAAE,CAAC;AACvB,gCAAA,2BAA2B,EAAE,CAAC;AAC9B,gCAAA,OAAO,EAAE,CAAC;AACX,6BAAA;AAAM,iCAAA;gCACL,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjD,6BAAA;AACH,yBAAC,CAAC,CAAC;;AAGL,wBAAA,eAAe,CAAC,SAAS,CAAC,MAAK;4BAC7B,WAAW,CAAC,IAAI,EAAE,CAAC;4BACnB,WAAW,CAAC,QAAQ,EAAE,CAAC;AACvB,4BAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACzB,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AAC9B,yBAAC,CAAC,CAAC;AACJ,qBAAA;AAAM,yBAAA;;wBAEL,KAAK,CACH,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;AAC1D,4BAAA,sCAAsC,CACzC;6BACE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;6BACvC,SAAS,CAAC,MAAK;AACd,4BAAA,OAAO,EAAE,CAAC;AACZ,yBAAC,CAAC,CAAC;AACN,qBAAA;AACH,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,UAAU,CAChB,OAAqB,EACrB,cAA+C,EAC/C,MAAqB,EACrB,eAA8B,EAAA;;QAE9B,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;QAE5B,MAAM,SAAS,GAAiB,KAAK,CACnC,CAAC,cAAc,IAAI,cAAc,CAAC,cAAc;AAC9C,YAAA,sCAAsC,EACxC,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ;AACxC,YAAA,8BAA8B,CACjC;AACE,aAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;aAChC,SAAS,CAAC,MAAK;YACd,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAEjD,YAAA,IAAI,OAAO,EAAE;gBACX,SAAS,CAAC,WAAW,EAAE,CAAC;AAExB,gBAAA,IAAI,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;;oBAE9B,MAAM,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,CAAC,QAAQ,EAAE,CAAC;AACnB,iBAAA;AAAM,qBAAA,IACL,KAAK,KAAK,UAAU,CAAC,KAAK;oBAC1B,KAAK,KAAK,UAAU,CAAC,WAAW;AAChC,qBAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAC/C;;AAEA,oBAAA,MAAM,SAAS,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;AACvC,oBAAA,MAAM,QAAQ,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;AACtC,oBAAA,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1B,yBAAA,IAAI,CACH,MAAM,CAAC,CAAC,MAAa,KAAI;;wBAEvB,IAAI,MAAM,YAAY,aAAa,EAAE;4BACnC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC9C,gCAAA,OAAO,IAAI,CAAC;AACb,6BAAA;AACD,4BAAA,OAAO,KAAK,CAAC;AACd,yBAAA;AAAM,6BAAA;AACL,4BAAA,OAAO,IAAI,CAAC;AACb,yBAAA;AACH,qBAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC,CACzD;yBACA,SAAS,CAAC,MAAK;wBACd,MAAM,CAAC,IAAI,EAAE,CAAC;wBACd,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpB,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA,IAAI,KAAK,KAAK,UAAU,CAAC,OAAO,EAAE;;AAEvC,oBAAA,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,MAAK;wBAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;4BACpC,MAAM,CAAC,IAAI,EAAE,CAAC;4BACd,MAAM,CAAC,QAAQ,EAAE,CAAC;4BAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;AACvB,yBAAA;AACH,qBAAC,CAAC,CAAC;;AAGH,oBAAA,eAAe,CAAC,SAAS,CAAC,MAAK;wBAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxB,qBAAC,CAAC,CAAC;;AAEH,oBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACxB,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AACF;;AC1iBD;;AAEG;AACS,IAAA,WAQX;AARD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EARW,UAAU,KAAV,UAAU,GAQrB,EAAA,CAAA,CAAA,CAAA;AASK,MAAO,yBAA0B,SAAQ,kBAAkB,CAAA;AAG/D,IAAA,WAAA,CACU,OAAe,EACf,MAAsB,EACtB,WAAuB,EAAA;AAE/B,QAAA,KAAK,EAAE,CAAC;AAJA,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AACf,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AALzB,QAAA,IAAA,CAAA,SAAS,GAA6B,IAAI,GAAG,EAAuB,CAAC;AACrE,QAAA,IAAA,CAAA,aAAa,GAAwB,IAAI,GAAG,EAAkB,CAAC;AAOrE,QAAA,OAAO,CAAC,MAAM;aACX,IAAI,CACH,MAAM,CACJ,CAAC,KAAsB,KACrB,KAAK,YAAY,eAAe;AAChC,YAAA,KAAK,CAAC,iBAAiB,KAAK,UAAU,CACzC,CACF;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAED,IAAA,UAAU,CAAC,GAAe,EAAA;QACxB,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;KAC1C;IAEK,YAAY,CAChB,QAAgB,EAChB,IAA0B,EAAA;;YAE1B,MAAM,UAAU,GACd,OAAO,IAAI,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC1C,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,SAAS,CAAC,QAAgB,EAAA;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;;AAE7D,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAClE,MAAM,YAAY,GAAkB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAC5D,IAAI,CAAC,wBAAwB,CAC3B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,CACjE,CACF,CAAC;;AAEF,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CACxC,CAAC,SAA2B,KAAI;AAC9B,gBAAA,MAAM,UAAU,GAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,EACJ,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GACtB,GAAG,SAAS,CAAC;gBACd,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7C,IAAI,SAAS,KAAK,UAAU,EAAE;wBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACpC,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AAC9B,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACxC,qBAAA;AACF,iBAAA;AACH,aAAC,CACF,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,OAAO,YAAY,CAAC;AACrB,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAA,yCAAA,CAA2C,CAAC,CAAC;AAC1E,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;KACF;;;IAID,uBAAuB,CAAC,aAAqB,MAAM,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CACnC,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,CAAC,MAAgB,KAAI;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACzC,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;gBAE1B,MAAM,YAAY,GAAoB,IAAI,eAAe,CACvD,MAAM,CAAC,QAAQ,CAAC,MAAM,CACvB,CAAC;;AAEF,gBAAA,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;AAEhC,gBAAA,IAAI,GAAG,GACL,MAAM,CAAC,QAAQ,CAAC,QAAQ;oBACxB,IAAI;oBACJ,MAAM,CAAC,QAAQ,CAAC,IAAI;AACpB,oBAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC3B,gBAAA,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE;AAC3B,oBAAA,GAAG,IAAI,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;AACtC,iBAAA;;AAED,gBAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACrD,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,oBAAoB,CAAC,MAAc,EAAE,UAAmB,EAAA;;QACtD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,WAAW,GAAe,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAS;AACtE,iBAAA,OAAO,CAAC;YACX,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC,MAAsB,KAAI;AACtD,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;AACnC,oBAAA,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC9B,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACnE,SAAA;KACF;AAEa,IAAA,SAAS,CAAC,OAAe,EAAA;;YACrC,MAAM,OAAO,GAAuB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI;AACF,gBAAA,OAAO,MAAM,OAAO;AACjB,qBAAA,IAAI,CACH,GAAG,CAAC,CAAC,SAAc,KAAI;oBACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,iBAAC,CAAC,CACH;AACA,qBAAA,SAAS,EAAE,CAAC;AAChB,aAAA;YAAC,OAAM,EAAA,EAAA;AACN,gBAAA,OAAO,SAAS,CAAC;AAClB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAChC;AAEO,IAAA,wBAAwB,CAC9B,WAA8B,EAAA;AAE9B,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAqB,KAAI;YAC5C,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,MAAM,KAAK,GAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;gBAEzC,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,oBAAA,MAAM,iBAAiB,GAAwB,IAAI,CAAC,iBAAiB,CAAC;AACtE,oBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAK;;wBAC5B,OAAO,IAAI,CAAC,OAAO;6BAChB,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;6BACvC,IAAI,CAAC,MAAK;4BACT,OAAO,iBAAiB,EAAE,CAAC;AAC7B,yBAAC,CAAC,CAAC;AACP,qBAAC,CAAC;AACH,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,WAAW,CAAC;KACpB;;sHApKU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0HAAzB,yBAAyB,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;MC1CE,wBAAwB,CAAA;;qHAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YALzB,YAAY,CAAA,EAAA,CAAA,CAAA;AAKX,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAJxB,SAAA,EAAA,CAAC,yBAAyB,CAAC,YAD5B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAKX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,yBAAyB,CAAC;AACtC,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;iBACZ,CAAA;;;ACTD;;AAEG;;;;"}
@@ -38,8 +38,8 @@ const defaultStepOptions = {
38
38
  enabled: true,
39
39
  },
40
40
  };
41
- const MAT_ICON_BUTTON = 'mat-icon-button material-icons mat-button-base';
42
- const MAT_BUTTON = 'mat-button-base mat-button';
41
+ const MAT_ICON_BUTTON = 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';
42
+ const MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';
43
43
  const MAT_BUTTON_INVISIBLE = 'shepherd-void-button';
44
44
  class CovalentGuidedTour extends TourButtonsActions {
45
45
  constructor(stepOptions = defaultStepOptions) {
@@ -590,18 +590,18 @@ class CovalentGuidedTourService extends CovalentGuidedTour {
590
590
  return routedSteps;
591
591
  }
592
592
  }
593
- CovalentGuidedTourService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
594
- CovalentGuidedTourService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService });
595
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourService, decorators: [{
593
+ CovalentGuidedTourService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
594
+ CovalentGuidedTourService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService });
595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourService, decorators: [{
596
596
  type: Injectable
597
597
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.HttpClient }]; } });
598
598
 
599
599
  class CovalentGuidedTourModule {
600
600
  }
601
- CovalentGuidedTourModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
602
- CovalentGuidedTourModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, imports: [CommonModule] });
603
- CovalentGuidedTourModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, providers: [CovalentGuidedTourService], imports: [CommonModule] });
604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CovalentGuidedTourModule, decorators: [{
601
+ CovalentGuidedTourModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
602
+ CovalentGuidedTourModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, imports: [CommonModule] });
603
+ CovalentGuidedTourModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, providers: [CovalentGuidedTourService], imports: [CommonModule] });
604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentGuidedTourModule, decorators: [{
605
605
  type: NgModule,
606
606
  args: [{
607
607
  imports: [CommonModule],
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-guided-tour.mjs","sources":["../../../../libs/angular-guided-tour/src/lib/guided.tour.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.service.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.module.ts","../../../../libs/angular-guided-tour/src/covalent-guided-tour.ts"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport {\n timer,\n Subject,\n BehaviorSubject,\n merge,\n Subscription,\n fromEvent,\n forkJoin,\n} from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\n\nexport type TourStep = Shepherd.Step.StepOptions;\nexport type TourStepButton = Shepherd.Step.StepOptionsButton;\n\nexport enum ITourEvent {\n 'click' = 'click',\n 'pointerover' = 'pointerover',\n 'keyup' = 'keyup',\n 'added' = 'added', // added to DOM\n 'removed' = 'removed', // removed from DOM\n}\n\nexport interface ITourEventOn {\n selector?: string; // css selector\n event?: keyof typeof ITourEvent; // click, pointerover, keyup, added, removed\n}\n\nexport interface ITourEventOnOptions {\n timeBeforeShow?: number; // delay before step is displayed\n interval?: number; // time between searches for element, defaults to 500ms\n}\n\nexport interface ITourOptions extends Shepherd.Tour.TourOptions {\n abortOn?: ITourEventOn[]; // events to abort on\n}\n\nexport interface ITourStepAttachToOptions extends ITourEventOnOptions {\n highlight?: boolean;\n retries?: number; // # num of attempts to find element\n skipIfNotFound?: boolean; // if element is not found after n retries, move on to next step\n else?: string; // if element is not found, go to step with this id\n goBackTo?: string; // back button goes back to step with this id\n skipFromStepCount?: boolean; // show/hide progress on step\n}\n\nexport interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {\n jumpTo?: string; // next button will jump to step with this id\n allowGoBack?: boolean; // allow back within this step\n}\n\nexport interface ITourStep extends TourStep {\n attachToOptions?: ITourStepAttachToOptions;\n advanceOnOptions?: ITourStepAdvanceOnOptions;\n advanceOn?: ITourEventOn[] | ITourEventOn | any;\n abortOn?: ITourEventOn[];\n count?: number;\n}\n\nabstract class TourButtonsActions {\n abstract next(): void;\n\n abstract back(): void;\n\n abstract cancel(): void;\n\n abstract finish(): void;\n}\n\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\n\nconst overriddenEvents: string[] = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\n\nconst keyEvents: Map<number, string> = new Map<number, string>([\n [13, 'enter'],\n [27, 'esc'],\n]);\n\nconst defaultStepOptions: TourStep = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\n\nconst MAT_ICON_BUTTON = 'mat-icon-button material-icons mat-button-base';\nconst MAT_BUTTON = 'mat-button-base mat-button';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\n\nexport class CovalentGuidedTour extends TourButtonsActions {\n private _destroyedEvent$!: Subject<void>;\n\n shepherdTour!: Shepherd.Tour;\n stepOptions: ITourStep;\n\n constructor(stepOptions: ITourStep = defaultStepOptions) {\n super();\n\n this.stepOptions = stepOptions;\n this.newTour();\n }\n\n newTour(opts?: ITourOptions): void {\n this.shepherdTour = new Shepherd.Tour(\n Object.assign(\n {\n defaultStepOptions: this.stepOptions,\n },\n opts\n )\n );\n\n this._destroyedEvent$ = new Subject<void>();\n // listen to cancel and complete to clean up abortOn events\n merge(\n fromEvent(this.shepherdTour, 'cancel'),\n fromEvent(this.shepherdTour, 'complete')\n )\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$: Subject<void>[] = [];\n opts.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n\n back(): void {\n this.shepherdTour.back();\n }\n\n cancel(): void {\n this.shepherdTour.cancel();\n }\n\n next(): void {\n this.shepherdTour.next();\n }\n\n finish(): void {\n this.shepherdTour.complete();\n }\n\n addSteps(steps: ITourStep[]): void {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n\n start(): void {\n this.shepherdTour.start();\n }\n\n protected _prepareTour(\n originalSteps: ITourStep[],\n finishLabel: string = 'finish'\n ): ITourStep[] {\n // create Subjects for back and forward events\n const backEvent$: Subject<void> = new Subject<void>();\n const forwardEvent$: Subject<void> = new Subject<void>();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$: Subject<void> = new Subject<void>();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function (this: any): void {\n // get all the footers that are available in the DOM\n const footers: Element[] = Array.from<Element>(\n document.querySelectorAll('.shepherd-footer')\n );\n // get the last footer since Shepherd always puts the active one at the end\n const footer: Element = footers[footers.length - 1];\n // generate steps html element\n const progress: HTMLSpanElement = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n\n let stepTotal = 0;\n const steps: ITourStep[] = originalSteps.map((step: ITourStep) => {\n let showProgress: () => void = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function (): void {\n return;\n };\n } else if (\n step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false\n ) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n\n const finishButton: TourStepButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n\n const voidButton: TourStepButton = {\n text: '',\n action(): void {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n\n const totalSteps: number = steps.length;\n steps.forEach((step: ITourStep, index: number) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton: TourStepButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton: TourStepButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n } else {\n this.shepherdTour.back();\n }\n },\n classes:\n step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n } else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n } else {\n step.buttons = [backButton, nextButton];\n }\n }\n\n // checks \"advanceOn\" to override listeners\n let advanceOn: ITourEventOn[] | ITourEventOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if (\n (typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array\n ) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve: (value?: any) => void) => {\n const additionalCapabilitiesSetup: () => void = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n\n const advanceArr$: Subject<void>[] = [];\n advanceOn.forEach((_: any, i: number) => {\n const advanceEvent$: Subject<void> = new Subject<void>();\n advanceArr$.push(advanceEvent$);\n\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(\n _,\n step.advanceOnOptions,\n advanceEvent$,\n destroyedEvent$\n );\n });\n const advanceSubs: Subscription = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n } else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$: Subject<void>[] = [];\n step.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(\n abortOn,\n undefined,\n abortEvent$,\n destroyedEvent$\n );\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(\n takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$))\n )\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n\n const _stopTimer$: Subject<void> = new Subject<void>();\n const _retriesReached$: Subject<number> = new Subject<number>();\n const _retryAttempts$: BehaviorSubject<number> =\n new BehaviorSubject<number>(-1);\n\n let id: string | undefined;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n } else if (\n typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string'\n ) {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (\n this.shepherdTour.getCurrentStep() ===\n (<any>this.shepherdTour).steps[0]\n ) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(\n skip(1),\n skipWhile((val: number) => {\n if (\n step.attachToOptions &&\n step.attachToOptions.retries !== undefined\n ) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }),\n takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$))\n )\n .subscribe((attempts: number) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (\n step.attachToOptions &&\n step.attachToOptions.skipIfNotFound\n ) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (\n (<any>this.shepherdTour).steps.indexOf(\n this.shepherdTour.getCurrentStep()\n ) === 0\n ) {\n this.shepherdTour.next();\n } else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n } else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n } else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n } else {\n // tslint:disable-next-line:no-console\n console.warn(\n `Retries reached trying to find ${id}. Retried ${attempts} times.`\n );\n // else we show the step regardless\n resolve();\n }\n });\n\n // we start a timer of attempts to find an element in the dom\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$))\n )\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n } else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n } else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW\n )\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n\n private _bindEvent(\n eventOn: ITourEventOn,\n eventOnOptions: ITourEventOnOptions | undefined,\n event$: Subject<void>,\n destroyedEvent$: Subject<void>\n ): void {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs: Subscription = timer(\n (eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n } else if (\n event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)\n ) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(\n filter(($event: Event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n } else {\n return true;\n }\n }),\n takeUntil(merge(event$.asObservable(), destroyedEvent$))\n )\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n } else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer: MutationObserver = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Router,\n ActivatedRoute,\n ParamMap,\n NavigationExtras,\n NavigationStart,\n Event as NavigationEvent,\n} from '@angular/router';\nimport Shepherd from 'shepherd.js';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { Observable, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n CovalentGuidedTour,\n ITourStep,\n ITourOptions,\n TourStepButton,\n} from './guided.tour';\n\nexport interface IGuidedTour extends ITourOptions {\n steps: IGuidedTourStep[];\n finishButtonText?: string;\n}\n\nexport interface IGuidedTourStep extends ITourStep {\n routing?: {\n route: string;\n extras?: NavigationExtras;\n };\n}\n\n/**\n * Router enabled Shepherd tour\n */\nexport enum TourEvents {\n complete = 'complete',\n cancel = 'cancel',\n hide = 'hide',\n show = 'show',\n start = 'start',\n active = 'active',\n inactive = 'inactive',\n}\n\nexport interface IGuidedTourEvent {\n step: any;\n previous: any;\n tour: any;\n}\n\n@Injectable()\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n private _toursMap: Map<string, IGuidedTour> = new Map<string, IGuidedTour>();\n private _tourStepURLs: Map<string, string> = new Map<string, string>();\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _httpClient: HttpClient\n ) {\n super();\n _router.events\n .pipe(\n filter(\n (event: NavigationEvent) =>\n event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n\n tourEvent$(str: TourEvents): Observable<IGuidedTourEvent> {\n return fromEvent(this.shepherdTour, str);\n }\n\n async registerTour(\n tourName: string,\n tour: IGuidedTour | string\n ): Promise<void> {\n const guidedTour: IGuidedTour =\n typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n\n startTour(tourName: string): Shepherd.Tour | undefined {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance: Shepherd.Tour = this.shepherdTour.addSteps(\n this._configureRoutesForSteps(\n this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)\n )\n );\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe(\n (tourEvent: IGuidedTourEvent) => {\n const currentURL: string = this._router.url.split(/[?#]/)[0];\n const {\n step: { id, options },\n } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n } else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n } else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n }\n );\n this.start();\n return tourInstance;\n } else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam: string = 'tour'): Observable<ParamMap> {\n return this._route.queryParamMap.pipe(\n debounceTime(100),\n tap((params: ParamMap) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams: URLSearchParams = new URLSearchParams(\n window.location.search\n );\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url: string =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n })\n );\n }\n\n setNextBtnDisability(stepId: string, isDisabled: boolean): void {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions: ITourStep = (this.shepherdTour.getById(stepId) as any)\n .options;\n stepOptions.buttons?.forEach((button: TourStepButton) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n\n private async _loadTour(tourUrl: string): Promise<any> {\n const request: Observable<object> = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(\n map((resultSet: any) => {\n return JSON.parse(JSON.stringify(resultSet));\n })\n )\n .toPromise();\n } catch {\n return undefined;\n }\n }\n\n private _getTour(key: string): IGuidedTour | undefined {\n return this._toursMap.get(key);\n }\n\n private _configureRoutesForSteps(\n routedSteps: IGuidedTourStep[]\n ): IGuidedTourStep[] {\n routedSteps.forEach((step: IGuidedTourStep) => {\n if (step.routing) {\n const route: string = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise: () => Promise<void> = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n } else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n\n return routedSteps;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n})\nexport class CovalentGuidedTourModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"covalent-guided-tour.mjs","sources":["../../../../libs/angular-guided-tour/src/lib/guided.tour.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.service.ts","../../../../libs/angular-guided-tour/src/lib/guided-tour.module.ts","../../../../libs/angular-guided-tour/src/covalent-guided-tour.ts"],"sourcesContent":["import Shepherd from 'shepherd.js';\nimport {\n timer,\n Subject,\n BehaviorSubject,\n merge,\n Subscription,\n fromEvent,\n forkJoin,\n} from 'rxjs';\nimport { takeUntil, skipWhile, filter, skip, first } from 'rxjs/operators';\n\nexport type TourStep = Shepherd.Step.StepOptions;\nexport type TourStepButton = Shepherd.Step.StepOptionsButton;\n\nexport enum ITourEvent {\n 'click' = 'click',\n 'pointerover' = 'pointerover',\n 'keyup' = 'keyup',\n 'added' = 'added', // added to DOM\n 'removed' = 'removed', // removed from DOM\n}\n\nexport interface ITourEventOn {\n selector?: string; // css selector\n event?: keyof typeof ITourEvent; // click, pointerover, keyup, added, removed\n}\n\nexport interface ITourEventOnOptions {\n timeBeforeShow?: number; // delay before step is displayed\n interval?: number; // time between searches for element, defaults to 500ms\n}\n\nexport interface ITourOptions extends Shepherd.Tour.TourOptions {\n abortOn?: ITourEventOn[]; // events to abort on\n}\n\nexport interface ITourStepAttachToOptions extends ITourEventOnOptions {\n highlight?: boolean;\n retries?: number; // # num of attempts to find element\n skipIfNotFound?: boolean; // if element is not found after n retries, move on to next step\n else?: string; // if element is not found, go to step with this id\n goBackTo?: string; // back button goes back to step with this id\n skipFromStepCount?: boolean; // show/hide progress on step\n}\n\nexport interface ITourStepAdvanceOnOptions extends ITourEventOnOptions {\n jumpTo?: string; // next button will jump to step with this id\n allowGoBack?: boolean; // allow back within this step\n}\n\nexport interface ITourStep extends TourStep {\n attachToOptions?: ITourStepAttachToOptions;\n advanceOnOptions?: ITourStepAdvanceOnOptions;\n advanceOn?: ITourEventOn[] | ITourEventOn | any;\n abortOn?: ITourEventOn[];\n count?: number;\n}\n\nabstract class TourButtonsActions {\n abstract next(): void;\n\n abstract back(): void;\n\n abstract cancel(): void;\n\n abstract finish(): void;\n}\n\nconst SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW = 100;\nconst SHEPHERD_DEFAULT_FIND_INTERVAL = 500;\nconst SHEPHERD_DEFAULT_FIND_ATTEMPTS = 20;\n\nconst overriddenEvents: string[] = [\n ITourEvent.click,\n ITourEvent.pointerover,\n ITourEvent.removed,\n ITourEvent.added,\n ITourEvent.keyup,\n];\n\nconst keyEvents: Map<number, string> = new Map<number, string>([\n [13, 'enter'],\n [27, 'esc'],\n]);\n\nconst defaultStepOptions: TourStep = {\n scrollTo: { behavior: 'smooth', block: 'center' },\n cancelIcon: {\n enabled: true,\n },\n};\n\nconst MAT_ICON_BUTTON =\n 'mdc-icon-button material-icons mat-mdc-icon-button mat-mdc-button-base';\nconst MAT_BUTTON = 'mdc-button mat-mdc-button mat-mdc-button-base';\nconst MAT_BUTTON_INVISIBLE = 'shepherd-void-button';\n\nexport class CovalentGuidedTour extends TourButtonsActions {\n private _destroyedEvent$!: Subject<void>;\n\n shepherdTour!: Shepherd.Tour;\n stepOptions: ITourStep;\n\n constructor(stepOptions: ITourStep = defaultStepOptions) {\n super();\n\n this.stepOptions = stepOptions;\n this.newTour();\n }\n\n newTour(opts?: ITourOptions): void {\n this.shepherdTour = new Shepherd.Tour(\n Object.assign(\n {\n defaultStepOptions: this.stepOptions,\n },\n opts\n )\n );\n\n this._destroyedEvent$ = new Subject<void>();\n // listen to cancel and complete to clean up abortOn events\n merge(\n fromEvent(this.shepherdTour, 'cancel'),\n fromEvent(this.shepherdTour, 'complete')\n )\n .pipe(first())\n .subscribe(() => {\n this._destroyedEvent$.next();\n this._destroyedEvent$.complete();\n });\n\n // if abortOn was passed, we bind the event and execute complete\n if (opts && opts.abortOn) {\n const abortArr$: Subject<void>[] = [];\n opts.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(abortOn, undefined, abortEvent$, this._destroyedEvent$);\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(takeUntil(this._destroyedEvent$))\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n }\n\n back(): void {\n this.shepherdTour.back();\n }\n\n cancel(): void {\n this.shepherdTour.cancel();\n }\n\n next(): void {\n this.shepherdTour.next();\n }\n\n finish(): void {\n this.shepherdTour.complete();\n }\n\n addSteps(steps: ITourStep[]): void {\n this.shepherdTour.addSteps(this._prepareTour(steps));\n }\n\n start(): void {\n this.shepherdTour.start();\n }\n\n protected _prepareTour(\n originalSteps: ITourStep[],\n finishLabel: string = 'finish'\n ): ITourStep[] {\n // create Subjects for back and forward events\n const backEvent$: Subject<void> = new Subject<void>();\n const forwardEvent$: Subject<void> = new Subject<void>();\n let _backFlow = false;\n // create Subject for your end\n const destroyedEvent$: Subject<void> = new Subject<void>();\n /**\n * This function adds the step progress in the footer of the shepherd tooltip\n */\n const appendProgressFunc = function (this: any): void {\n // get all the footers that are available in the DOM\n const footers: Element[] = Array.from<Element>(\n document.querySelectorAll('.shepherd-footer')\n );\n // get the last footer since Shepherd always puts the active one at the end\n const footer: Element = footers[footers.length - 1];\n // generate steps html element\n const progress: HTMLSpanElement = document.createElement('span');\n progress.className = 'shepherd-progress';\n progress.innerText = `${this.shepherdTour.currentStep.options.count}/${stepTotal}`;\n // insert into the footer before the first button\n footer.insertBefore(progress, footer.querySelector('.shepherd-button'));\n };\n\n let stepTotal = 0;\n const steps: ITourStep[] = originalSteps.map((step: ITourStep) => {\n let showProgress: () => void = () => {\n //\n };\n if (step.attachToOptions?.skipFromStepCount === true) {\n showProgress = function (): void {\n return;\n };\n } else if (\n step.attachToOptions?.skipFromStepCount === undefined ||\n step.attachToOptions?.skipFromStepCount === false\n ) {\n step.count = ++stepTotal;\n showProgress = appendProgressFunc.bind(this);\n }\n return Object.assign({}, step, {\n when: {\n show: showProgress,\n },\n });\n });\n\n const finishButton: TourStepButton = {\n text: finishLabel,\n action: this['finish'].bind(this),\n classes: MAT_BUTTON,\n };\n\n const voidButton: TourStepButton = {\n text: '',\n action(): void {\n return;\n },\n classes: MAT_BUTTON_INVISIBLE,\n };\n\n // listen to the destroyed event to clean up all the streams\n this._destroyedEvent$.pipe(first()).subscribe(() => {\n backEvent$.complete();\n forwardEvent$.complete();\n destroyedEvent$.next();\n destroyedEvent$.complete();\n });\n\n const totalSteps: number = steps.length;\n steps.forEach((step: ITourStep, index: number) => {\n // create buttons specific for the step\n // this is done to create more control on events\n const nextButton: TourStepButton = {\n text: 'chevron_right',\n action: () => {\n // intercept the next action and trigger event\n forwardEvent$.next();\n this.shepherdTour.next();\n },\n classes: MAT_ICON_BUTTON,\n };\n const backButton: TourStepButton = {\n text: 'chevron_left',\n action: () => {\n // intercept the back action and trigger event\n backEvent$.next();\n _backFlow = true;\n // check if 'goBackTo' is set to jump to a particular step, else just go back\n if (step.attachToOptions && step.attachToOptions.goBackTo) {\n this.shepherdTour.show(step.attachToOptions.goBackTo, false);\n } else {\n this.shepherdTour.back();\n }\n },\n classes:\n step.advanceOnOptions?.allowGoBack === false\n ? MAT_BUTTON_INVISIBLE\n : MAT_ICON_BUTTON,\n };\n\n // check if highlight was provided for the step, else fallback into shepherds usage\n step.highlightClass =\n step.attachToOptions && step.attachToOptions.highlight\n ? 'shepherd-highlight'\n : step.highlightClass;\n\n // Adding buttons in the steps if no buttons are defined\n if (!step.buttons || step.buttons.length === 0) {\n if (index === 0) {\n // first step\n step.buttons = [nextButton];\n } else if (index === totalSteps - 1) {\n // last step\n step.buttons = [backButton, finishButton];\n } else {\n step.buttons = [backButton, nextButton];\n }\n }\n\n // checks \"advanceOn\" to override listeners\n let advanceOn: ITourEventOn[] | ITourEventOn = step.advanceOn;\n // remove the shepherd \"advanceOn\" infavor of ours if the event is part of our list\n if (\n (typeof advanceOn === 'object' &&\n !Array.isArray(advanceOn) &&\n advanceOn.event &&\n overriddenEvents.indexOf(advanceOn.event.split('.')[0]) > -1) ||\n advanceOn instanceof Array\n ) {\n step.advanceOn = undefined;\n step.buttons =\n step.advanceOnOptions && step.advanceOnOptions.allowGoBack\n ? [backButton, voidButton]\n : [voidButton];\n }\n // adds a default beforeShowPromise function\n step.beforeShowPromise = () => {\n return new Promise((resolve: (value?: any) => void) => {\n const additionalCapabilitiesSetup: () => void = () => {\n if (advanceOn && !step.advanceOn) {\n if (!Array.isArray(advanceOn)) {\n advanceOn = [advanceOn];\n }\n\n const advanceArr$: Subject<void>[] = [];\n advanceOn.forEach((_: any, i: number) => {\n const advanceEvent$: Subject<void> = new Subject<void>();\n advanceArr$.push(advanceEvent$);\n\n // we start a timer of attempts to find an element in the dom\n this._bindEvent(\n _,\n step.advanceOnOptions,\n advanceEvent$,\n destroyedEvent$\n );\n });\n const advanceSubs: Subscription = forkJoin(...advanceArr$)\n .pipe(takeUntil(merge(destroyedEvent$, backEvent$)))\n .subscribe(() => {\n // check if we need to advance to a specific step, else advance to next step\n if (step.advanceOnOptions && step.advanceOnOptions.jumpTo) {\n this.shepherdTour.show(step.advanceOnOptions.jumpTo);\n } else {\n this.shepherdTour.next();\n }\n forwardEvent$.next();\n advanceSubs.unsubscribe();\n });\n }\n\n // if abortOn was passed on the step, we bind the event and execute complete\n if (step.abortOn) {\n const abortArr$: Subject<void>[] = [];\n step.abortOn.forEach((abortOn: ITourEventOn) => {\n const abortEvent$: Subject<void> = new Subject<void>();\n abortArr$.push(abortEvent$);\n this._bindEvent(\n abortOn,\n undefined,\n abortEvent$,\n destroyedEvent$\n );\n });\n\n const abortSubs: Subscription = merge(...abortArr$)\n .pipe(\n takeUntil(merge(destroyedEvent$, backEvent$, forwardEvent$))\n )\n .subscribe(() => {\n this.shepherdTour.complete();\n abortSubs.unsubscribe();\n });\n }\n };\n\n const _stopTimer$: Subject<void> = new Subject<void>();\n const _retriesReached$: Subject<number> = new Subject<number>();\n const _retryAttempts$: BehaviorSubject<number> =\n new BehaviorSubject<number>(-1);\n\n let id: string | undefined;\n // checks if \"attachTo\" is a string or an object to get the id of an element\n if (typeof step.attachTo === 'string') {\n id = step.attachTo;\n } else if (\n typeof step.attachTo === 'object' &&\n typeof step.attachTo.element === 'string'\n ) {\n id = step.attachTo.element;\n }\n // if we have an id as a string in either case, we use it (we ignore it if its HTMLElement)\n if (id) {\n // if current step is the first step of the tour, we set the buttons to be only \"next\"\n // we had to use `any` since the tour doesnt expose the steps in any fashion nor a way to check if we have modified them at all\n if (\n this.shepherdTour.getCurrentStep() ===\n (<any>this.shepherdTour).steps[0]\n ) {\n this.shepherdTour.getCurrentStep()?.updateStepOptions({\n buttons: originalSteps[index].advanceOn\n ? [voidButton]\n : [nextButton],\n });\n }\n // register to the attempts observable to notify deeveloper when number has been reached\n _retryAttempts$\n .pipe(\n skip(1),\n skipWhile((val: number) => {\n if (\n step.attachToOptions &&\n step.attachToOptions.retries !== undefined\n ) {\n return val < step.attachToOptions.retries;\n }\n return val < SHEPHERD_DEFAULT_FIND_ATTEMPTS;\n }),\n takeUntil(merge(_stopTimer$.asObservable(), destroyedEvent$))\n )\n .subscribe((attempts: number) => {\n _retriesReached$.next(1);\n _retriesReached$.complete();\n // if attempts have been reached, we check \"skipIfNotFound\" to move on to the next step\n if (\n step.attachToOptions &&\n step.attachToOptions.skipIfNotFound\n ) {\n // if we get to this step coming back from a step and it wasnt found\n // then we either check if its the first step and try going forward\n // or we keep going back until we find a step that actually exists\n if (_backFlow) {\n if (\n (<any>this.shepherdTour).steps.indexOf(\n this.shepherdTour.getCurrentStep()\n ) === 0\n ) {\n this.shepherdTour.next();\n } else {\n this.shepherdTour.back();\n }\n _backFlow = false;\n } else {\n // destroys current step if we need to skip it to remove it from the tour\n const currentStep = this.shepherdTour.getCurrentStep();\n currentStep?.destroy();\n this.shepherdTour.next();\n this.shepherdTour.removeStep(currentStep?.id ?? '');\n }\n } else if (step.attachToOptions && step.attachToOptions.else) {\n // if \"skipIfNotFound\" is not true, then we check if \"else\" has been set to jump to a specific step\n this.shepherdTour.show(step.attachToOptions.else);\n } else {\n // tslint:disable-next-line:no-console\n console.warn(\n `Retries reached trying to find ${id}. Retried ${attempts} times.`\n );\n // else we show the step regardless\n resolve();\n }\n });\n\n // we start a timer of attempts to find an element in the dom\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (step.attachToOptions && step.attachToOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(\n // the timer will continue either until we find the element or the number of attempts has been reached\n takeUntil(merge(_stopTimer$, _retriesReached$, destroyedEvent$))\n )\n .subscribe(() => {\n const element = document.querySelector(id ?? '');\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n _stopTimer$.next();\n _stopTimer$.complete();\n additionalCapabilitiesSetup();\n resolve();\n } else {\n _retryAttempts$.next(_retryAttempts$.value + 1);\n }\n });\n\n // stop find interval if user stops the tour\n destroyedEvent$.subscribe(() => {\n _stopTimer$.next();\n _stopTimer$.complete();\n _retriesReached$.next(1);\n _retriesReached$.complete();\n });\n } else {\n // resolve observable until the timeBeforeShow has passsed or use default\n timer(\n (step.attachToOptions && step.attachToOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW\n )\n .pipe(takeUntil(merge(destroyedEvent$)))\n .subscribe(() => {\n resolve();\n });\n }\n });\n };\n });\n return steps;\n }\n\n private _bindEvent(\n eventOn: ITourEventOn,\n eventOnOptions: ITourEventOnOptions | undefined,\n event$: Subject<void>,\n destroyedEvent$: Subject<void>\n ): void {\n const selector = eventOn.selector ?? '';\n const event = eventOn.event;\n // we start a timer of attempts to find an element in the dom\n const timerSubs: Subscription = timer(\n (eventOnOptions && eventOnOptions.timeBeforeShow) ||\n SHEPHERD_DEFAULT_FIND_TIME_BEFORE_SHOW,\n (eventOnOptions && eventOnOptions.interval) ||\n SHEPHERD_DEFAULT_FIND_INTERVAL\n )\n .pipe(takeUntil(destroyedEvent$))\n .subscribe(() => {\n const element = document.querySelector(selector);\n // if the element has been found, we stop the timer and resolve the promise\n if (element) {\n timerSubs.unsubscribe();\n\n if (event === ITourEvent.added) {\n // if event is \"Added\" trigger a soon as this is attached.\n event$.next();\n event$.complete();\n } else if (\n event === ITourEvent.click ||\n event === ITourEvent.pointerover ||\n (event && event.indexOf(ITourEvent.keyup) > -1)\n ) {\n // we use normal listeners for mouseevents\n const mainEvent = event?.split('.')[0];\n const subEvent = event?.split('.')[1];\n fromEvent(element, mainEvent)\n .pipe(\n filter(($event: Event) => {\n // only trigger if the event is a keyboard event and part of out list\n if ($event instanceof KeyboardEvent) {\n if (keyEvents.get($event.keyCode) === subEvent) {\n return true;\n }\n return false;\n } else {\n return true;\n }\n }),\n takeUntil(merge(event$.asObservable(), destroyedEvent$))\n )\n .subscribe(() => {\n event$.next();\n event$.complete();\n });\n } else if (event === ITourEvent.removed) {\n // and we will use MutationObserver for DOM events\n const observer: MutationObserver = new MutationObserver(() => {\n if (!document.body.contains(element)) {\n event$.next();\n event$.complete();\n observer.disconnect();\n }\n });\n\n // stop listenining if tour is closed\n destroyedEvent$.subscribe(() => {\n observer.disconnect();\n });\n // observe for any DOM interaction in the element\n observer.observe(element, {\n childList: true,\n subtree: true,\n attributes: true,\n });\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Router,\n ActivatedRoute,\n ParamMap,\n NavigationExtras,\n NavigationStart,\n Event as NavigationEvent,\n} from '@angular/router';\nimport Shepherd from 'shepherd.js';\nimport { tap, map, filter } from 'rxjs/operators';\nimport { Observable, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n CovalentGuidedTour,\n ITourStep,\n ITourOptions,\n TourStepButton,\n} from './guided.tour';\n\nexport interface IGuidedTour extends ITourOptions {\n steps: IGuidedTourStep[];\n finishButtonText?: string;\n}\n\nexport interface IGuidedTourStep extends ITourStep {\n routing?: {\n route: string;\n extras?: NavigationExtras;\n };\n}\n\n/**\n * Router enabled Shepherd tour\n */\nexport enum TourEvents {\n complete = 'complete',\n cancel = 'cancel',\n hide = 'hide',\n show = 'show',\n start = 'start',\n active = 'active',\n inactive = 'inactive',\n}\n\nexport interface IGuidedTourEvent {\n step: any;\n previous: any;\n tour: any;\n}\n\n@Injectable()\nexport class CovalentGuidedTourService extends CovalentGuidedTour {\n private _toursMap: Map<string, IGuidedTour> = new Map<string, IGuidedTour>();\n private _tourStepURLs: Map<string, string> = new Map<string, string>();\n constructor(\n private _router: Router,\n private _route: ActivatedRoute,\n private _httpClient: HttpClient\n ) {\n super();\n _router.events\n .pipe(\n filter(\n (event: NavigationEvent) =>\n event instanceof NavigationStart &&\n event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n if (this.shepherdTour.isActive()) {\n this.shepherdTour.cancel();\n }\n });\n }\n\n tourEvent$(str: TourEvents): Observable<IGuidedTourEvent> {\n return fromEvent(this.shepherdTour, str);\n }\n\n async registerTour(\n tourName: string,\n tour: IGuidedTour | string\n ): Promise<void> {\n const guidedTour: IGuidedTour =\n typeof tour === 'string' ? await this._loadTour(tour) : tour;\n this._toursMap.set(tourName, guidedTour);\n }\n\n startTour(tourName: string): Shepherd.Tour | undefined {\n const guidedTour = this._getTour(tourName);\n this.finish();\n if (guidedTour && guidedTour.steps && guidedTour.steps.length) {\n // remove steps from tour since we need to preprocess them first\n this.newTour(Object.assign({}, guidedTour, { steps: undefined }));\n const tourInstance: Shepherd.Tour = this.shepherdTour.addSteps(\n this._configureRoutesForSteps(\n this._prepareTour(guidedTour.steps, guidedTour.finishButtonText)\n )\n );\n // init route transition if step URL is different then the current location.\n this.tourEvent$(TourEvents.show).subscribe(\n (tourEvent: IGuidedTourEvent) => {\n const currentURL: string = this._router.url.split(/[?#]/)[0];\n const {\n step: { id, options },\n } = tourEvent;\n if (this._tourStepURLs.has(id)) {\n const stepRoute = this._tourStepURLs.get(id);\n if (stepRoute !== currentURL) {\n this._router.navigate([stepRoute]);\n }\n } else {\n if (options && options.routing) {\n this._tourStepURLs.set(id, options.routing.route);\n } else {\n this._tourStepURLs.set(id, currentURL);\n }\n }\n }\n );\n this.start();\n return tourInstance;\n } else {\n // tslint:disable-next-line:no-console\n console.warn(`Tour ${tourName} does not exist. Please try another tour.`);\n return undefined;\n }\n }\n\n // Finds the right registered tour by using queryParams\n // finishes any other tour and starts the new one.\n initializeOnQueryParams(queryParam: string = 'tour'): Observable<ParamMap> {\n return this._route.queryParamMap.pipe(\n debounceTime(100),\n tap((params: ParamMap) => {\n const tourParam = params.get(queryParam);\n if (tourParam) {\n this.startTour(tourParam);\n // get current search parameters\n const searchParams: URLSearchParams = new URLSearchParams(\n window.location.search\n );\n // delete tour queryParam\n searchParams.delete(queryParam);\n // build new URL string without it\n let url: string =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname;\n if (searchParams.toString()) {\n url += '?' + searchParams.toString();\n }\n // replace state in history without triggering a navigation\n window.history.replaceState({ path: url }, '', url);\n }\n })\n );\n }\n\n setNextBtnDisability(stepId: string, isDisabled: boolean): void {\n if (this.shepherdTour.getById(stepId)) {\n const stepOptions: ITourStep = (this.shepherdTour.getById(stepId) as any)\n .options;\n stepOptions.buttons?.forEach((button: TourStepButton) => {\n if (button.text === 'chevron_right') {\n button.disabled = isDisabled;\n }\n });\n this.shepherdTour.getById(stepId)?.updateStepOptions(stepOptions);\n }\n }\n\n private async _loadTour(tourUrl: string): Promise<any> {\n const request: Observable<object> = this._httpClient.get(tourUrl);\n try {\n return await request\n .pipe(\n map((resultSet: any) => {\n return JSON.parse(JSON.stringify(resultSet));\n })\n )\n .toPromise();\n } catch {\n return undefined;\n }\n }\n\n private _getTour(key: string): IGuidedTour | undefined {\n return this._toursMap.get(key);\n }\n\n private _configureRoutesForSteps(\n routedSteps: IGuidedTourStep[]\n ): IGuidedTourStep[] {\n routedSteps.forEach((step: IGuidedTourStep) => {\n if (step.routing) {\n const route: string = step.routing.route;\n // if there is a beforeShowPromise, then we save it and call it after the navigation\n if (step.beforeShowPromise) {\n const beforeShowPromise: () => Promise<void> = step.beforeShowPromise;\n step.beforeShowPromise = () => {\n return this._router\n .navigate([route], step.routing?.extras)\n .then(() => {\n return beforeShowPromise();\n });\n };\n } else {\n step.beforeShowPromise = () => this._router.navigate([route]);\n }\n }\n });\n\n return routedSteps;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CovalentGuidedTourService } from './guided-tour.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CovalentGuidedTourService],\n declarations: [],\n exports: [],\n})\nexport class CovalentGuidedTourModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import Shepherd from 'shepherd.js';
2
- export declare type TourStep = Shepherd.Step.StepOptions;
3
- export declare type TourStepButton = Shepherd.Step.StepOptionsButton;
2
+ export type TourStep = Shepherd.Step.StepOptions;
3
+ export type TourStepButton = Shepherd.Step.StepOptionsButton;
4
4
  export declare enum ITourEvent {
5
5
  'click' = "click",
6
6
  'pointerover' = "pointerover",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@covalent/guided-tour",
3
- "version": "5.0.1",
3
+ "version": "5.1.0-beta.1",
4
4
  "description": "Covalent Guided Tour Module",
5
5
  "keywords": [
6
6
  "angular",
@@ -19,11 +19,11 @@
19
19
  },
20
20
  "license": "MIT",
21
21
  "peerDependencies": {
22
- "@angular/common": "^14.2.12",
23
- "@angular/core": "^14.2.12",
22
+ "@angular/common": "^15.2.5",
23
+ "@angular/core": "^15.2.5",
24
24
  "shepherd.js": "^9.0.0",
25
- "@angular/router": "^14.2.12",
26
- "rxjs": "^7.4.0"
25
+ "@angular/router": "15.2.5",
26
+ "rxjs": "7.8.0"
27
27
  },
28
28
  "dependencies": {
29
29
  "tslib": "^2.0.0"
@@ -71,6 +71,7 @@ $mat-icon-font: 'Material Icons', sans-serif;
71
71
  &.material-icons {
72
72
  font-family: $mat-icon-font;
73
73
  font-size: 24px;
74
+ border-radius: 50%;
74
75
  }
75
76
  }
76
77