@skyux/flyout 9.14.0 → 9.15.0

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.
@@ -120,7 +120,7 @@ export class SkyFlyoutComponent {
120
120
  this.#setUserData();
121
121
  }
122
122
  }
123
- attach(component, config) {
123
+ attach(component, config, environmentInjector) {
124
124
  this.#cleanTemplate();
125
125
  // Emit the closed event on any previously opened flyout instance
126
126
  if (this.#flyoutInstance) {
@@ -159,8 +159,9 @@ export class SkyFlyoutComponent {
159
159
  this.config.primaryAction && this.config.primaryAction.label
160
160
  ? this.config.primaryAction.label
161
161
  : this.#getString('skyux_flyout_primary_action_button');
162
+ environmentInjector ||= this.#environmentInjector;
162
163
  const componentRef = this.#dynamicComponentSvc.createComponent(component, {
163
- environmentInjector: this.#environmentInjector,
164
+ environmentInjector: environmentInjector,
164
165
  providers: this.config.providers,
165
166
  viewContainerRef: this.target,
166
167
  });
@@ -536,4 +537,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
536
537
  type: HostListener,
537
538
  args: ['window:resize', ['$event']]
538
539
  }] } });
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mbHlvdXQvc3JjL2xpYi9tb2R1bGVzL2ZseW91dC9mbHlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ZseW91dC9zcmMvbGliL21vZHVsZXMvZmx5b3V0L2ZseW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFJTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFF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QVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3dCQUN4QixjQUFjO3FCQUNmOzBFQWlETSxTQUFTO3NCQUpmLFNBQVM7dUJBQUMsV0FBVyxFQUFFO3dCQUN0QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT00sTUFBTTtzQkFKWixTQUFTO3VCQUFDLFFBQVEsRUFBRTt3QkFDbkIsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT00sWUFBWTtzQkFKbEIsU0FBUzt1QkFBQyxjQUFjLEVBQUU7d0JBQ3pCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkEyQ00sY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbmltYXRpb25FdmVudCxcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEhvc3RMaXN0ZW5lcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIFNLWV9TVEFDS0lOR19DT05URVhULFxuICBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgU2t5TWVkaWFCcmVha3BvaW50cyxcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVVJQ29uZmlnU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lIcmVmTW9kdWxlIH0gZnJvbSAnQHNreXV4L3JvdXRlcic7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Rmx5b3V0UmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1mbHlvdXQtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreUZseW91dEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9mbHlvdXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUZseW91dEluc3RhbmNlIH0gZnJvbSAnLi9mbHlvdXQtaW5zdGFuY2UnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0SXRlcmF0b3JDb21wb25lbnQgfSBmcm9tICcuL2ZseW91dC1pdGVyYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICcuL2ZseW91dC1tZWRpYS1xdWVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUZseW91dEFjdGlvbiB9IGZyb20gJy4vdHlwZXMvZmx5b3V0LWFjdGlvbic7XG5pbXBvcnQgeyBTa3lGbHlvdXRCZWZvcmVDbG9zZUhhbmRsZXIgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1iZWZvcmUtY2xvc2UtaGFuZGxlcic7XG5pbXBvcnQgeyBTa3lGbHlvdXRDb25maWcgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1jb25maWcnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0Q29uZmlnSW50ZXJuYWwgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1jb25maWctaW50ZXJuYWwnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0TWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvZmx5b3V0LW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0TWVzc2FnZVR5cGUgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0UGVybWFsaW5rIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtcGVybWFsaW5rJztcblxuY29uc3QgRkxZT1VUX09QRU5fU1RBVEUgPSAnZmx5b3V0T3Blbic7XG5jb25zdCBGTFlPVVRfQ0xPU0VEX1NUQVRFID0gJ2ZseW91dENsb3NlZCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktZmx5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZseW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZseW91dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lGbHlvdXRBZGFwdGVyU2VydmljZSxcbiAgICBTa3lGbHlvdXRNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNreU1lZGlhUXVlcnlTZXJ2aWNlLCB1c2VFeGlzdGluZzogU2t5Rmx5b3V0TWVkaWFRdWVyeVNlcnZpY2UgfSxcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2ZseW91dFN0YXRlJywgW1xuICAgICAgc3RhdGUoRkxZT1VUX09QRU5fU1RBVEUsIHN0eWxlKHsgdHJhbnNmb3JtOiAnaW5pdGlhbCcgfSkpLFxuICAgICAgc3RhdGUoRkxZT1VUX0NMT1NFRF9TVEFURSwgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSksXG4gICAgICAgIGFuaW1hdGUoMjUwKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihgKiA8PT4gKmAsIGFuaW1hdGUoJzI1MG1zIGVhc2UtaW4nKSksXG4gICAgXSksXG4gIF0sXG4gIC8vIEFsbG93IGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGlsZCBjb21wb25lbnRzLlxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGltcG9ydHM6IFtcbiAgICBBMTF5TW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgU2t5SHJlZk1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUZseW91dEl0ZXJhdG9yQ29tcG9uZW50LFxuICAgIFNreUZseW91dFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rmx5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBwdWJsaWMgY29uZmlnOiBTa3lGbHlvdXRDb25maWdJbnRlcm5hbCA9IHtcbiAgICBkZWZhdWx0V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoIC8gMixcbiAgICBtaW5XaWR0aDogMzIwLFxuICAgIG1heFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAvIDIsXG4gICAgcHJvdmlkZXJzOiBbXSxcbiAgfTtcbiAgcHVibGljIGVuYWJsZVRyYXBGb2N1cyA9IGZhbHNlO1xuICBwdWJsaWMgZW5hYmxlVHJhcEZvY3VzQXV0b0NhcHR1cmUgPSBmYWxzZTtcbiAgcHVibGljIGZseW91dElkID0gYHNreS1mbHlvdXQtJHsrK25leHRJZH1gO1xuICBwdWJsaWMgZmx5b3V0U3RhdGUgPSBGTFlPVVRfQ0xPU0VEX1NUQVRFO1xuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG4gIHB1YmxpYyBpc09wZW5pbmcgPSBmYWxzZTtcblxuICBwdWJsaWMgZmx5b3V0V2lkdGggPSAwO1xuICBwdWJsaWMgaW5zdGFuY2VSZWFkeSA9IGZhbHNlO1xuICBwdWJsaWMgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBwdWJsaWMgaXNGdWxsc2NyZWVuID0gZmFsc2U7XG4gIHB1YmxpYyByZXNpemVLZXlDb250cm9sQWN0aXZlID0gZmFsc2U7XG5cbiAgI3hDb29yZCA9IDA7XG4gICN3aW5kb3dCdWZmZXJTaXplID0gMjA7XG5cbiAgcHVibGljIGdldCBtZXNzYWdlU3RyZWFtKCk6IFN1YmplY3Q8U2t5Rmx5b3V0TWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLiNfbWVzc2FnZVN0cmVhbTtcbiAgfVxuXG4gIHB1YmxpYyBwZXJtYWxpbms6IFNreUZseW91dFBlcm1hbGluayA9IHt9O1xuXG4gIHB1YmxpYyBwZXJtYWxpbmtMYWJlbCA9ICcnO1xuXG4gIHB1YmxpYyBwcmltYXJ5QWN0aW9uOiBTa3lGbHlvdXRBY3Rpb24gPSB7fTtcblxuICBwdWJsaWMgcHJpbWFyeUFjdGlvbkxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHdpZHRoU3RlcCA9IDEwO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2ZseW91dFJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGZseW91dFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0YXJnZXQnLCB7XG4gICAgcmVhZDogVmlld0NvbnRhaW5lclJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyB0YXJnZXQ6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnZmx5b3V0SGVhZGVyJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgZmx5b3V0SGVhZGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCB6SW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxMDAxKTtcblxuICAjZmx5b3V0SW5zdGFuY2U6IFNreUZseW91dEluc3RhbmNlPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfbWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUZseW91dE1lc3NhZ2U+KCk7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXIgPSBpbmplY3QoU2t5Rmx5b3V0QWRhcHRlclNlcnZpY2UpO1xuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjZHluYW1pY0NvbXBvbmVudFN2YyA9IGluamVjdChTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSAjZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgcmVhZG9ubHkgI2ZseW91dE1lZGlhUXVlcnlTZXJ2aWNlID0gaW5qZWN0KFNreUZseW91dE1lZGlhUXVlcnlTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICByZWFkb25seSAjcmVzb3VyY2VzU2VydmljZSA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3VpQ29uZmlnU2VydmljZSA9IGluamVjdChTa3lVSUNvbmZpZ1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEFsbCBjb21tYW5kcyBmbG93IHRocm91Z2ggdGhlIG1lc3NhZ2Ugc3RyZWFtLlxuICAgIHRoaXMubWVzc2FnZVN0cmVhbVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLiNoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5mbHlvdXRIZWFkZXIpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXIuYWRqdXN0SGVhZGVyRm9ySGVscCh0aGlzLmZseW91dEhlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25XaW5kb3dSZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuI2ZseW91dE1lZGlhUXVlcnlTZXJ2aWNlLmlzV2lkdGhXaXRoaW5CcmVha3BvaW50KFxuICAgICAgICBldmVudC50YXJnZXQuaW5uZXJXaWR0aCxcbiAgICAgICAgU2t5TWVkaWFCcmVha3BvaW50cy54cyxcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3MoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHRoaXMuZmx5b3V0V2lkdGgpO1xuICAgIH1cblxuICAgIHRoaXMuI3NldEZ1bGxzY3JlZW4oKTtcblxuICAgIGlmIChldmVudC50YXJnZXQuaW5uZXJXaWR0aCAtIHRoaXMuZmx5b3V0V2lkdGggPCB0aGlzLiN3aW5kb3dCdWZmZXJTaXplKSB7XG4gICAgICB0aGlzLmZseW91dFdpZHRoID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGggLSB0aGlzLiN3aW5kb3dCdWZmZXJTaXplO1xuICAgICAgdGhpcy4jeENvb3JkID0gdGhpcy4jd2luZG93QnVmZmVyU2l6ZTtcbiAgICAgIHRoaXMuI3NldFVzZXJEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGF0dGFjaDxUPihcbiAgICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gICAgY29uZmlnPzogU2t5Rmx5b3V0Q29uZmlnLFxuICApOiBTa3lGbHlvdXRJbnN0YW5jZTxUPiB7XG4gICAgdGhpcy4jY2xlYW5UZW1wbGF0ZSgpO1xuXG4gICAgLy8gRW1pdCB0aGUgY2xvc2VkIGV2ZW50IG9uIGFueSBwcmV2aW91c2x5IG9wZW5lZCBmbHlvdXQgaW5zdGFuY2VcbiAgICBpZiAodGhpcy4jZmx5b3V0SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuI25vdGlmeUNsb3NlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgZGVmYXVsdFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAvIDIsXG4gICAgICAgIG1pbldpZHRoOiAzMjAsXG4gICAgICAgIG1heFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAvIDIsXG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNLWV9TVEFDS0lOR19DT05URVhULFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgekluZGV4OiB0aGlzLnpJbmRleCRcbiAgICAgICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGNvbmZpZyxcbiAgICApO1xuICAgIGlmIChjb25maWc/LmRlZmF1bHRXaWR0aCAmJiAhY29uZmlnPy5tYXhXaWR0aCkge1xuICAgICAgdGhpcy5jb25maWcubWF4V2lkdGggPSBjb25maWc/LmRlZmF1bHRXaWR0aDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZy5zaG93SXRlcmF0b3IgPSB0aGlzLmNvbmZpZy5zaG93SXRlcmF0b3IgfHwgZmFsc2U7XG4gICAgdGhpcy5jb25maWcuaXRlcmF0b3JOZXh0QnV0dG9uRGlzYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JOZXh0QnV0dG9uRGlzYWJsZWQgfHwgZmFsc2U7XG4gICAgdGhpcy5jb25maWcuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkRpc2FibGVkID1cbiAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yUHJldmlvdXNCdXR0b25EaXNhYmxlZCB8fCBmYWxzZTtcblxuICAgIHRoaXMucGVybWFsaW5rID0gdGhpcy5jb25maWcucGVybWFsaW5rID8/IHt9O1xuICAgIHRoaXMucGVybWFsaW5rTGFiZWwgPVxuICAgICAgdGhpcy5jb25maWcucGVybWFsaW5rICYmIHRoaXMuY29uZmlnLnBlcm1hbGluay5sYWJlbFxuICAgICAgICA/IHRoaXMuY29uZmlnLnBlcm1hbGluay5sYWJlbFxuICAgICAgICA6IHRoaXMuI2dldFN0cmluZygnc2t5dXhfZmx5b3V0X3Blcm1hbGlua19idXR0b24nKTtcblxuICAgIHRoaXMucHJpbWFyeUFjdGlvbiA9IHRoaXMuY29uZmlnLnByaW1hcnlBY3Rpb24gPz8ge307XG4gICAgdGhpcy5wcmltYXJ5QWN0aW9uTGFiZWwgPVxuICAgICAgdGhpcy5jb25maWcucHJpbWFyeUFjdGlvbiAmJiB0aGlzLmNvbmZpZy5wcmltYXJ5QWN0aW9uLmxhYmVsXG4gICAgICAgID8gdGhpcy5jb25maWcucHJpbWFyeUFjdGlvbi5sYWJlbFxuICAgICAgICA6IHRoaXMuI2dldFN0cmluZygnc2t5dXhfZmx5b3V0X3ByaW1hcnlfYWN0aW9uX2J1dHRvbicpO1xuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy4jZHluYW1pY0NvbXBvbmVudFN2Yy5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLiNlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiB0aGlzLmNvbmZpZy5wcm92aWRlcnMsXG4gICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRhcmdldCxcbiAgICB9KTtcblxuICAgIC8qIHNhZmV0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY29tcG9uZW50UmVmKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbHlvdXQncyBpbnRlcm5hbCBjb21wb25lbnQgY291bGQgbm90IGJlIGNyZWF0ZWRcIik7XG4gICAgfVxuXG4gICAgdGhpcy4jZmx5b3V0SW5zdGFuY2UgPSB0aGlzLiNjcmVhdGVGbHlvdXRJbnN0YW5jZTxUPihjb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuXG4gICAgLy8gVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB3ZSBkbyBub3QgcmVuZGVyIHRoZSBmbHlvdXQgdW50aWwgd2UgaGF2ZSBhdHRhY2hlZCB0aGUgY29tcG9uZW50LlxuICAgIC8vIFRoaXMgYWxsb3dzIHRoZSBhcmlhLWxhYmVsbGVkYnkgdG8gZnVuY3Rpb24gY29ycmVjdGx5LlxuICAgIHRoaXMuaW5zdGFuY2VSZWFkeSA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyBPcGVuIHRoZSBmbHlvdXQgaW1tZWRpYXRlbHkuXG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtLm5leHQoe1xuICAgICAgdHlwZTogU2t5Rmx5b3V0TWVzc2FnZVR5cGUuT3BlbixcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5zZXR0aW5nc0tleSkge1xuICAgICAgdGhpcy4jdWlDb25maWdTZXJ2aWNlXG4gICAgICAgIC5nZXRDb25maWcodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuZmx5b3V0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB2YWx1ZS5mbHlvdXRXaWR0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQmFkIGRhdGEsIG9yIGNvbmZpZyBpcyB0aGUgZGVmYXVsdCBjb25maWcuXG4gICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoID0gdGhpcy5jb25maWcuZGVmYXVsdFdpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiNjaGVja0luaXRpYWxTaXplKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZseW91dFdpZHRoID0gdGhpcy5jb25maWcuZGVmYXVsdFdpZHRoO1xuICAgICAgdGhpcy4jY2hlY2tJbml0aWFsU2l6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNmbHlvdXRJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7XG4gICAgICB0eXBlOiBTa3lGbHlvdXRNZXNzYWdlVHlwZS5DbG9zZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbnZva2VQcmltYXJ5QWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByaW1hcnlBY3Rpb24uY2FsbGJhY2spIHtcbiAgICAgIHRoaXMucHJpbWFyeUFjdGlvbi5jYWxsYmFjaygpO1xuXG4gICAgICBpZiAodGhpcy5wcmltYXJ5QWN0aW9uLmNsb3NlQWZ0ZXJJbnZva2luZykge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbmltYXRpb25TdGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlUmVhZHkgJiYgdGhpcy5pc09wZW5pbmdcbiAgICAgID8gRkxZT1VUX09QRU5fU1RBVEVcbiAgICAgIDogRkxZT1VUX0NMT1NFRF9TVEFURTtcbiAgfVxuXG4gIHB1YmxpYyBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50b1N0YXRlID09PSBGTFlPVVRfT1BFTl9TVEFURSkge1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChldmVudC50b1N0YXRlID09PSBGTFlPVVRfQ0xPU0VEX1NUQVRFKSB7XG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy4jbm90aWZ5Q2xvc2VkKCk7XG4gICAgICB0aGlzLiNjbGVhblRlbXBsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSGVhZGVyR3JhYkhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25SZXNpemVIYW5kbGVNb3VzZURvd24oZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uSGVhZGVyR3JhYkhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLiNoYW5kbGVSZXNpemVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZUhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLiNoYW5kbGVSZXNpemVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZUhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMuI3hDb29yZCA9IGV2ZW50LmNsaWVudFg7XG5cbiAgICB0aGlzLiNhZGFwdGVyLnRvZ2dsZUlmcmFtZVBvaW50ZXJFdmVudHMoZmFsc2UpO1xuXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobW92ZUV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vbk1vdXNlTW92ZShtb3ZlRXZlbnQpO1xuICAgICAgfSk7XG5cbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobW91c2VVcEV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vbkhhbmRsZVJlbGVhc2UobW91c2VVcEV2ZW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuI3hDb29yZDtcbiAgICBsZXQgd2lkdGggPSB0aGlzLmZseW91dFdpZHRoO1xuXG4gICAgd2lkdGggLT0gb2Zmc2V0WDtcblxuICAgIGlmICh3aWR0aCA8IHRoaXMuY29uZmlnLm1pbldpZHRoIHx8IHdpZHRoID4gdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggLSB3aWR0aCA8IHRoaXMuI3dpbmRvd0J1ZmZlclNpemUpIHtcbiAgICAgIHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSB0aGlzLiN3aW5kb3dCdWZmZXJTaXplO1xuICAgICAgdGhpcy4jeENvb3JkID0gdGhpcy4jd2luZG93QnVmZmVyU2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jeENvb3JkID0gZXZlbnQuY2xpZW50WDtcbiAgICB9XG5cbiAgICB0aGlzLmZseW91dFdpZHRoID0gd2lkdGg7XG5cbiAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHRoaXMuZmx5b3V0V2lkdGgpO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25IYW5kbGVSZWxlYXNlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy4jYWRhcHRlci50b2dnbGVJZnJhbWVQb2ludGVyRXZlbnRzKHRydWUpO1xuICAgICAgICB0aGlzLiNzZXRVc2VyRGF0YSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVyYXRvclByZXZpb3VzQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jZmx5b3V0SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuI2ZseW91dEluc3RhbmNlLml0ZXJhdG9yUHJldmlvdXNCdXR0b25DbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSXRlcmF0b3JOZXh0QnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jZmx5b3V0SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuI2ZseW91dEluc3RhbmNlLml0ZXJhdG9yTmV4dEJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlRmx5b3V0SW5zdGFuY2U8VD4oY29tcG9uZW50OiBUKTogU2t5Rmx5b3V0SW5zdGFuY2U8VD4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNreUZseW91dEluc3RhbmNlPFQ+KGNvbXBvbmVudCk7XG5cbiAgICBpbnN0YW5jZS5ob3N0Q29udHJvbGxlclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dChtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgI2hhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNPcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNpbml0Rm9jdXNUcmFwKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuI2ZseW91dEluc3RhbmNlPy5iZWZvcmVDbG9zZSBhcyBTdWJqZWN0PGFueT4pPy5vYnNlcnZlcnNcbiAgICAgICAgICAgIC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICBtZXNzYWdlLmRhdGE/Lmlnbm9yZUJlZm9yZUNsb3NlXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzT3BlbmluZyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICh0aGlzLiNmbHlvdXRJbnN0YW5jZT8uYmVmb3JlQ2xvc2UgYXMgU3ViamVjdDxhbnk+KT8ubmV4dChcbiAgICAgICAgICAgIG5ldyBTa3lGbHlvdXRCZWZvcmVDbG9zZUhhbmRsZXIoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaXNPcGVuaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkVuYWJsZUl0ZXJhdG9yTmV4dEJ1dHRvbjpcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JOZXh0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuRW5hYmxlSXRlcmF0b3JQcmV2aW91c0J1dHRvbjpcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkRpc2FibGVJdGVyYXRvck5leHRCdXR0b246XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yTmV4dEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuRGlzYWJsZUl0ZXJhdG9yUHJldmlvdXNCdXR0b246XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yUHJldmlvdXNCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI25vdGlmeUNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNmbHlvdXRJbnN0YW5jZT8uY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLiNmbHlvdXRJbnN0YW5jZT8uY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjY2xlYW5UZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhcmdldD8uY2xlYXIoKTtcbiAgfVxuXG4gICN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLiNmbHlvdXRNZWRpYVF1ZXJ5U2VydmljZS5zZXRCcmVha3BvaW50Rm9yV2lkdGgod2lkdGgpO1xuXG4gICAgY29uc3QgbmV3QnJlYWtwb2ludCA9IHRoaXMuI2ZseW91dE1lZGlhUXVlcnlTZXJ2aWNlLmN1cnJlbnQ7XG5cbiAgICB0aGlzLiNhZGFwdGVyLnNldFJlc3BvbnNpdmVDbGFzcyh0aGlzLiNlbGVtZW50UmVmLCBuZXdCcmVha3BvaW50KTtcbiAgfVxuXG4gICNzZXRGdWxsc2NyZWVuKCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuI3dpbmRvd0J1ZmZlclNpemUgPCB0aGlzLmNvbmZpZy5taW5XaWR0aCkge1xuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNzZXRVc2VyRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpIHtcbiAgICAgIHRoaXMuI3VpQ29uZmlnU2VydmljZVxuICAgICAgICAuc2V0Q29uZmlnKHRoaXMuY29uZmlnLnNldHRpbmdzS2V5LCB7XG4gICAgICAgICAgZmx5b3V0V2lkdGg6IHRoaXMuZmx5b3V0V2lkdGgsXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICgpID0+IHt9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IHNhdmUgZmx5b3V0IGRhdGEuJyk7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNjaGVja0luaXRpYWxTaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZseW91dFdpZHRoIDwgdGhpcy5jb25maWcubWluV2lkdGgpIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB0aGlzLmNvbmZpZy5taW5XaWR0aDtcbiAgICAgIHRoaXMuI3NldFVzZXJEYXRhKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZseW91dFdpZHRoID4gdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB0aGlzLmNvbmZpZy5tYXhXaWR0aDtcbiAgICAgIHRoaXMuI3NldFVzZXJEYXRhKCk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGZseW91dCBkb2VzIG5vdCBsb2FkIGxhcmdlciB0aGFuIHRoZSB3aW5kb3cgYW5kIGl0cyBidWZmZXJcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggLSB0aGlzLmZseW91dFdpZHRoIDwgdGhpcy4jd2luZG93QnVmZmVyU2l6ZSkge1xuICAgICAgdGhpcy5mbHlvdXRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy4jd2luZG93QnVmZmVyU2l6ZTtcbiAgICAgIHRoaXMuI3hDb29yZCA9IHRoaXMuI3dpbmRvd0J1ZmZlclNpemU7XG4gICAgICB0aGlzLiNzZXRVc2VyRGF0YSgpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuI2ZseW91dE1lZGlhUXVlcnlTZXJ2aWNlLmlzV2lkdGhXaXRoaW5CcmVha3BvaW50KFxuICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgU2t5TWVkaWFCcmVha3BvaW50cy54cyxcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3Mod2luZG93LmlubmVyV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHRoaXMuZmx5b3V0V2lkdGgpO1xuICAgIH1cblxuICAgIHRoaXMuI3NldEZ1bGxzY3JlZW4oKTtcbiAgfVxuXG4gICNnZXRTdHJpbmcoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE5lZWQgdG8gaW1wbGVtZW50IHRoZSBhc3luYyBgZ2V0U3RyaW5nYCBtZXRob2QgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgcmV0dXJuIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nRm9yTG9jYWxlKHsgbG9jYWxlOiAnZW4tVVMnIH0sIGtleSk7XG4gIH1cblxuICAjaGFuZGxlUmVzaXplS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgY29uc3Qga2V5UHJlc3NlZCA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ2Fycm93JywgJycpO1xuICAgICAgc3dpdGNoIChrZXlQcmVzc2VkKSB7XG4gICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgdGhpcy5yZXNpemVLZXlDb250cm9sQWN0aXZlID0gIXRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUtleUNvbnRyb2xBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgaWYgKHRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZSkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmZseW91dFdpZHRoIDwgdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5mbHlvdXRXaWR0aCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggKyB0aGlzLndpZHRoU3RlcCxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5tYXhXaWR0aCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUtleUNvbnRyb2xBY3RpdmUpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAodGhpcy5mbHlvdXRXaWR0aCA+IHRoaXMuY29uZmlnLm1pbldpZHRoKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoIC0gdGhpcy53aWR0aFN0ZXAsXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcubWluV2lkdGgsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2hlbiB0aGUgem9uZSBpcyBzdGFibGUuICovXG4gICNleGVjdXRlT25TdGFibGUoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNuZ1pvbmUuaXNTdGFibGUpIHtcbiAgICAgIGZuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI25nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmbik7XG4gICAgfVxuICB9XG5cbiAgI2luaXRGb2N1c1RyYXAoKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVUcmFwRm9jdXNBdXRvQ2FwdHVyZSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlVHJhcEZvY3VzID0gZmFsc2U7XG4gICAgLy8gV2FpdGluZyBmb3Igem9uZSB0byBiZSBzdGFibGUgd2lsbCBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlQWZ0ZXJDaGVja2VkRXJyb3IuXG4gICAgdGhpcy4jZXhlY3V0ZU9uU3RhYmxlKCgpID0+IHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhcEZvY3VzQXV0b0NhcHR1cmUgPSB0cnVlO1xuICAgICAgdGhpcy5lbmFibGVUcmFwRm9jdXMgPSB0cnVlO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWZseW91dFwiXG4gIHRhYmluZGV4PVwiLTFcIlxuICBbYXR0ci5yb2xlXT1cImNvbmZpZy5hcmlhUm9sZSA/IGNvbmZpZy5hcmlhUm9sZSA6ICdkaWFsb2cnXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjb25maWcuYXJpYURlc2NyaWJlZEJ5XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcuYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImNvbmZpZy5hcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLmFyaWEtbW9kYWxdPVwiXG4gICAgY29uZmlnLmFyaWFSb2xlID09PSAnZGlhbG9nJyB8fCAhY29uZmlnLmFyaWFSb2xlID8gdHJ1ZSA6IGZhbHNlXG4gIFwiXG4gIFthdHRyLmhpZGRlbl09XCIhaW5zdGFuY2VSZWFkeSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICBbaWRdPVwiZmx5b3V0SWRcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1mbHlvdXQtaGlkZGVuJzogIWlzT3BlbiAmJiAhaXNPcGVuaW5nLFxuICAgICdza3ktZmx5b3V0LWZ1bGxzY3JlZW4nOiBpc0Z1bGxzY3JlZW5cbiAgfVwiXG4gIFtzdHlsZS56LWluZGV4XT1cInpJbmRleCQgfCBhc3luY1wiXG4gIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAnc2t5LXNoYWRvdyc6ICdkZWZhdWx0JyxcbiAgICAnc2t5LWVsZXZhdGlvbi04JzogJ21vZGVybidcbiAgfVwiXG4gIChAZmx5b3V0U3RhdGUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIlxuICBbQGZseW91dFN0YXRlXT1cImdldEFuaW1hdGlvblN0YXRlKClcIlxuICBbc3R5bGUud2lkdGgucHhdPVwiZmx5b3V0V2lkdGhcIlxuICAjZmx5b3V0UmVmXG4gIFtjZGtUcmFwRm9jdXNdPVwiZW5hYmxlVHJhcEZvY3VzXCJcbiAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cImVuYWJsZVRyYXBGb2N1c0F1dG9DYXB0dXJlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWZseW91dC1oZWFkZXJcIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktcGFkZGluZy1zcXVpc2gtbGFyZ2UnOiAnZGVmYXVsdCdcbiAgICB9XCJcbiAgICBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXgkIHwgYXN5bmNcIlxuICAgICNmbHlvdXRIZWFkZXJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmx5b3V0LWhlYWRlci1jb250ZW50XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3Mgc2t5LW1hcmdpbi1pbmxpbmUtc20gc2t5LWZseW91dC1oZWFkZXItZ3JhYi1oYW5kbGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfZmx5b3V0X3Jlc2l6ZV9oYW5kbGUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgKGtleWRvd24pPVwib25IZWFkZXJHcmFiSGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhlYWRlckdyYWJIYW5kbGVNb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uPVwidGlsZS1kcmFnXCIgc2l6ZT1cImxnXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8c2t5LWZseW91dC1pdGVyYXRvclxuICAgICAgICAqbmdJZj1cImNvbmZpZy5zaG93SXRlcmF0b3JcIlxuICAgICAgICBbbmV4dEJ1dHRvbkRpc2FibGVkXT1cImNvbmZpZy5pdGVyYXRvck5leHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgIFtwcmV2aW91c0J1dHRvbkRpc2FibGVkXT1cImNvbmZpZy5pdGVyYXRvclByZXZpb3VzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAobmV4dEJ1dHRvbkNsaWNrKT1cIm9uSXRlcmF0b3JOZXh0QnV0dG9uQ2xpY2soKVwiXG4gICAgICAgIChwcmV2aW91c0J1dHRvbkNsaWNrKT1cIm9uSXRlcmF0b3JQcmV2aW91c0J1dHRvbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgPC9za3ktZmx5b3V0LWl0ZXJhdG9yPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmx5b3V0LWhlYWRlci1idXR0b25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGVybWFsaW5rVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJpbWFyeUFjdGlvblRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tY2xvc2Ugc2t5LWxhYmVsLWljb24tdGhlbWUtZGVmYXVsdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9mbHlvdXRfY2xvc2UnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktYnRuLWRlZmF1bHQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1idG4taWNvbi1ib3JkZXJsZXNzJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNsb3NlXCIgLz5cbiAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwiY2xvc2VcIiBzaXplPVwibGdcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2t5LWZseW91dC1jb250ZW50XCI+XG4gICAgPGRpdiAjdGFyZ2V0PjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWZseW91dC1yZXNpemUtaGFuZGxlXCJcbiAgICByb2xlPVwic2VwYXJhdG9yXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJmbHlvdXRJZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfZmx5b3V0X3Jlc2l6ZV9oYW5kbGUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cImNvbmZpZy5tYXhXaWR0aFwiXG4gICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJjb25maWcubWluV2lkdGhcIlxuICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwiZmx5b3V0V2lkdGhcIlxuICAgIChrZXlkb3duKT1cIm9uUmVzaXplSGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplSGFuZGxlTW91c2VEb3duKCRldmVudClcIlxuICA+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwZXJtYWxpbmtUZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInBlcm1hbGlua1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJwZXJtYWxpbmsudXJsXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tcGVybWFsaW5rIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgICBbc2t5SHJlZl09XCJwZXJtYWxpbmsudXJsXCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktYnRuLWRlZmF1bHQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1idG4tYm9yZGVybGVzcyc6ICdtb2Rlcm4nXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBlcm1hbGlua0xhYmVsIH19XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwicGVybWFsaW5rLnJvdXRlXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tcGVybWFsaW5rIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgICBbcm91dGVyTGlua109XCJwZXJtYWxpbmsucm91dGUuY29tbWFuZHNcIlxuICAgICAgICBbZnJhZ21lbnRdPVwicGVybWFsaW5rLnJvdXRlLmV4dHJhcz8uZnJhZ21lbnRcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1idG4tZGVmYXVsdCc6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnc2t5LWJ0bi1ib3JkZXJsZXNzJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIFtxdWVyeVBhcmFtc109XCJwZXJtYWxpbmsucm91dGUuZXh0cmFzPy5xdWVyeVBhcmFtc1wiXG4gICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInBlcm1hbGluay5yb3V0ZS5leHRyYXM/LnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICBbc3RhdGVdPVwicGVybWFsaW5rLnJvdXRlLmV4dHJhcz8uc3RhdGVcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBlcm1hbGlua0xhYmVsIH19XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJpbWFyeUFjdGlvblRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwicHJpbWFyeUFjdGlvbiAmJiBwcmltYXJ5QWN0aW9uLmNhbGxiYWNrXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1mbHlvdXQtYnRuLXByaW1hcnktYWN0aW9uIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgKGNsaWNrKT1cImludm9rZVByaW1hcnlBY3Rpb24oKVwiXG4gICAgPlxuICAgICAge3sgcHJpbWFyeUFjdGlvbkxhYmVsIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mbHlvdXQvc3JjL2xpYi9tb2R1bGVzL2ZseW91dC9mbHlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ZseW91dC9zcmMvbGliL21vZHVsZXMvZmx5b3V0L2ZseW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFJTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFF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QyxPQUFPLFdBQ3ZDO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsY0FBYztxQkFDZjswRUFpRE0sU0FBUztzQkFKZixTQUFTO3VCQUFDLFdBQVcsRUFBRTt3QkFDdEIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLE1BQU07c0JBSlosU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLFlBQVk7c0JBSmxCLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBMkNNLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQW5pbWF0aW9uRXZlbnQsXG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBIb3N0TGlzdGVuZXIsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gIFNreU1lZGlhQnJlYWtwb2ludHMsXG4gIFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxuICBTa3lVSUNvbmZpZ1NlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5SHJlZk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9yb3V0ZXInO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZseW91dFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZmx5b3V0LXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lGbHlvdXRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vZmx5b3V0LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGbHlvdXRJbnN0YW5jZSB9IGZyb20gJy4vZmx5b3V0LWluc3RhbmNlJztcbmltcG9ydCB7IFNreUZseW91dEl0ZXJhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9mbHlvdXQtaXRlcmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUZseW91dE1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi9mbHlvdXQtbWVkaWEtcXVlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGbHlvdXRBY3Rpb24gfSBmcm9tICcuL3R5cGVzL2ZseW91dC1hY3Rpb24nO1xuaW1wb3J0IHsgU2t5Rmx5b3V0QmVmb3JlQ2xvc2VIYW5kbGVyIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtYmVmb3JlLWNsb3NlLWhhbmRsZXInO1xuaW1wb3J0IHsgU2t5Rmx5b3V0Q29uZmlnIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtY29uZmlnJztcbmltcG9ydCB7IFNreUZseW91dENvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtY29uZmlnLWludGVybmFsJztcbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1tZXNzYWdlJztcbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreUZseW91dFBlcm1hbGluayB9IGZyb20gJy4vdHlwZXMvZmx5b3V0LXBlcm1hbGluayc7XG5cbmNvbnN0IEZMWU9VVF9PUEVOX1NUQVRFID0gJ2ZseW91dE9wZW4nO1xuY29uc3QgRkxZT1VUX0NMT1NFRF9TVEFURSA9ICdmbHlvdXRDbG9zZWQnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2t5LWZseW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mbHlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbHlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5Rmx5b3V0QWRhcHRlclNlcnZpY2UsXG4gICAgU2t5Rmx5b3V0TWVkaWFRdWVyeVNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBTa3lNZWRpYVF1ZXJ5U2VydmljZSwgdXNlRXhpc3Rpbmc6IFNreUZseW91dE1lZGlhUXVlcnlTZXJ2aWNlIH0sXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmbHlvdXRTdGF0ZScsIFtcbiAgICAgIHN0YXRlKEZMWU9VVF9PUEVOX1NUQVRFLCBzdHlsZSh7IHRyYW5zZm9ybTogJ2luaXRpYWwnIH0pKSxcbiAgICAgIHN0YXRlKEZMWU9VVF9DTE9TRURfU1RBVEUsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSkpLFxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKDI1MCksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oYCogPD0+ICpgLCBhbmltYXRlKCcyNTBtcyBlYXNlLWluJykpLFxuICAgIF0pLFxuICBdLFxuICAvLyBBbGxvdyBhdXRvbWF0aWMgY2hhbmdlIGRldGVjdGlvbiBmb3IgY2hpbGQgY29tcG9uZW50cy5cbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBpbXBvcnRzOiBbXG4gICAgQTExeU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIFNreUhyZWZNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lGbHlvdXRJdGVyYXRvckNvbXBvbmVudCxcbiAgICBTa3lGbHlvdXRSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUZseW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIGNvbmZpZzogU2t5Rmx5b3V0Q29uZmlnSW50ZXJuYWwgPSB7XG4gICAgZGVmYXVsdFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAvIDIsXG4gICAgbWluV2lkdGg6IDMyMCxcbiAgICBtYXhXaWR0aDogd2luZG93LmlubmVyV2lkdGggLyAyLFxuICAgIHByb3ZpZGVyczogW10sXG4gIH07XG4gIHB1YmxpYyBlbmFibGVUcmFwRm9jdXMgPSBmYWxzZTtcbiAgcHVibGljIGVuYWJsZVRyYXBGb2N1c0F1dG9DYXB0dXJlID0gZmFsc2U7XG4gIHB1YmxpYyBmbHlvdXRJZCA9IGBza3ktZmx5b3V0LSR7KytuZXh0SWR9YDtcbiAgcHVibGljIGZseW91dFN0YXRlID0gRkxZT1VUX0NMT1NFRF9TVEFURTtcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNPcGVuaW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGZseW91dFdpZHRoID0gMDtcbiAgcHVibGljIGluc3RhbmNlUmVhZHkgPSBmYWxzZTtcbiAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgcHVibGljIGlzRnVsbHNjcmVlbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVzaXplS2V5Q29udHJvbEFjdGl2ZSA9IGZhbHNlO1xuXG4gICN4Q29vcmQgPSAwO1xuICAjd2luZG93QnVmZmVyU2l6ZSA9IDIwO1xuXG4gIHB1YmxpYyBnZXQgbWVzc2FnZVN0cmVhbSgpOiBTdWJqZWN0PFNreUZseW91dE1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy4jX21lc3NhZ2VTdHJlYW07XG4gIH1cblxuICBwdWJsaWMgcGVybWFsaW5rOiBTa3lGbHlvdXRQZXJtYWxpbmsgPSB7fTtcblxuICBwdWJsaWMgcGVybWFsaW5rTGFiZWwgPSAnJztcblxuICBwdWJsaWMgcHJpbWFyeUFjdGlvbjogU2t5Rmx5b3V0QWN0aW9uID0ge307XG5cbiAgcHVibGljIHByaW1hcnlBY3Rpb25MYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3aWR0aFN0ZXAgPSAxMDtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAVmlld0NoaWxkKCdmbHlvdXRSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBmbHlvdXRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndGFyZ2V0Jywge1xuICAgIHJlYWQ6IFZpZXdDb250YWluZXJSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgdGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZseW91dEhlYWRlcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGZseW91dEhlYWRlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgekluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMTAwMSk7XG5cbiAgI2ZseW91dEluc3RhbmNlOiBTa3lGbHlvdXRJbnN0YW5jZTxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX21lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lGbHlvdXRNZXNzYWdlPigpO1xuXG4gIHJlYWRvbmx5ICNhZGFwdGVyID0gaW5qZWN0KFNreUZseW91dEFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2R5bmFtaWNDb21wb25lbnRTdmMgPSBpbmplY3QoU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNmbHlvdXRNZWRpYVF1ZXJ5U2VydmljZSA9IGluamVjdChTa3lGbHlvdXRNZWRpYVF1ZXJ5U2VydmljZSk7XG4gIHJlYWRvbmx5ICNuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlc1NlcnZpY2UgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG4gIHJlYWRvbmx5ICN1aUNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoU2t5VUlDb25maWdTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBbGwgY29tbWFuZHMgZmxvdyB0aHJvdWdoIHRoZSBtZXNzYWdlIHN0cmVhbS5cbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreUZseW91dE1lc3NhZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuZmx5b3V0SGVhZGVyKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyLmFkanVzdEhlYWRlckZvckhlbHAodGhpcy5mbHlvdXRIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uV2luZG93UmVzaXplKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNmbHlvdXRNZWRpYVF1ZXJ5U2VydmljZS5pc1dpZHRoV2l0aGluQnJlYWtwb2ludChcbiAgICAgICAgZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgsXG4gICAgICAgIFNreU1lZGlhQnJlYWtwb2ludHMueHMsXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jdXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyh0aGlzLmZseW91dFdpZHRoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNzZXRGdWxsc2NyZWVuKCk7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGggLSB0aGlzLmZseW91dFdpZHRoIDwgdGhpcy4jd2luZG93QnVmZmVyU2l6ZSkge1xuICAgICAgdGhpcy5mbHlvdXRXaWR0aCA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIC0gdGhpcy4jd2luZG93QnVmZmVyU2l6ZTtcbiAgICAgIHRoaXMuI3hDb29yZCA9IHRoaXMuI3dpbmRvd0J1ZmZlclNpemU7XG4gICAgICB0aGlzLiNzZXRVc2VyRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhdHRhY2g8VD4oXG4gICAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICAgIGNvbmZpZz86IFNreUZseW91dENvbmZpZyxcbiAgICBlbnZpcm9ubWVudEluamVjdG9yPzogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgKTogU2t5Rmx5b3V0SW5zdGFuY2U8VD4ge1xuICAgIHRoaXMuI2NsZWFuVGVtcGxhdGUoKTtcblxuICAgIC8vIEVtaXQgdGhlIGNsb3NlZCBldmVudCBvbiBhbnkgcHJldmlvdXNseSBvcGVuZWQgZmx5b3V0IGluc3RhbmNlXG4gICAgaWYgKHRoaXMuI2ZseW91dEluc3RhbmNlKSB7XG4gICAgICB0aGlzLiNub3RpZnlDbG9zZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGRlZmF1bHRXaWR0aDogd2luZG93LmlubmVyV2lkdGggLyAyLFxuICAgICAgICBtaW5XaWR0aDogMzIwLFxuICAgICAgICBtYXhXaWR0aDogd2luZG93LmlubmVyV2lkdGggLyAyLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgICAgICAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgICAgICAgIHpJbmRleDogdGhpcy56SW5kZXgkXG4gICAgICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBjb25maWcsXG4gICAgKTtcbiAgICBpZiAoY29uZmlnPy5kZWZhdWx0V2lkdGggJiYgIWNvbmZpZz8ubWF4V2lkdGgpIHtcbiAgICAgIHRoaXMuY29uZmlnLm1heFdpZHRoID0gY29uZmlnPy5kZWZhdWx0V2lkdGg7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcuc2hvd0l0ZXJhdG9yID0gdGhpcy5jb25maWcuc2hvd0l0ZXJhdG9yIHx8IGZhbHNlO1xuICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yTmV4dEJ1dHRvbkRpc2FibGVkID1cbiAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yTmV4dEJ1dHRvbkRpc2FibGVkIHx8IGZhbHNlO1xuICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yUHJldmlvdXNCdXR0b25EaXNhYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZy5pdGVyYXRvclByZXZpb3VzQnV0dG9uRGlzYWJsZWQgfHwgZmFsc2U7XG5cbiAgICB0aGlzLnBlcm1hbGluayA9IHRoaXMuY29uZmlnLnBlcm1hbGluayA/PyB7fTtcbiAgICB0aGlzLnBlcm1hbGlua0xhYmVsID1cbiAgICAgIHRoaXMuY29uZmlnLnBlcm1hbGluayAmJiB0aGlzLmNvbmZpZy5wZXJtYWxpbmsubGFiZWxcbiAgICAgICAgPyB0aGlzLmNvbmZpZy5wZXJtYWxpbmsubGFiZWxcbiAgICAgICAgOiB0aGlzLiNnZXRTdHJpbmcoJ3NreXV4X2ZseW91dF9wZXJtYWxpbmtfYnV0dG9uJyk7XG5cbiAgICB0aGlzLnByaW1hcnlBY3Rpb24gPSB0aGlzLmNvbmZpZy5wcmltYXJ5QWN0aW9uID8/IHt9O1xuICAgIHRoaXMucHJpbWFyeUFjdGlvbkxhYmVsID1cbiAgICAgIHRoaXMuY29uZmlnLnByaW1hcnlBY3Rpb24gJiYgdGhpcy5jb25maWcucHJpbWFyeUFjdGlvbi5sYWJlbFxuICAgICAgICA/IHRoaXMuY29uZmlnLnByaW1hcnlBY3Rpb24ubGFiZWxcbiAgICAgICAgOiB0aGlzLiNnZXRTdHJpbmcoJ3NreXV4X2ZseW91dF9wcmltYXJ5X2FjdGlvbl9idXR0b24nKTtcblxuICAgIGVudmlyb25tZW50SW5qZWN0b3IgfHw9IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3I7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy4jZHluYW1pY0NvbXBvbmVudFN2Yy5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiB0aGlzLmNvbmZpZy5wcm92aWRlcnMsXG4gICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRhcmdldCxcbiAgICB9KTtcblxuICAgIC8qIHNhZmV0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghY29tcG9uZW50UmVmKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbHlvdXQncyBpbnRlcm5hbCBjb21wb25lbnQgY291bGQgbm90IGJlIGNyZWF0ZWRcIik7XG4gICAgfVxuXG4gICAgdGhpcy4jZmx5b3V0SW5zdGFuY2UgPSB0aGlzLiNjcmVhdGVGbHlvdXRJbnN0YW5jZTxUPihjb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuXG4gICAgLy8gVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB3ZSBkbyBub3QgcmVuZGVyIHRoZSBmbHlvdXQgdW50aWwgd2UgaGF2ZSBhdHRhY2hlZCB0aGUgY29tcG9uZW50LlxuICAgIC8vIFRoaXMgYWxsb3dzIHRoZSBhcmlhLWxhYmVsbGVkYnkgdG8gZnVuY3Rpb24gY29ycmVjdGx5LlxuICAgIHRoaXMuaW5zdGFuY2VSZWFkeSA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyBPcGVuIHRoZSBmbHlvdXQgaW1tZWRpYXRlbHkuXG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtLm5leHQoe1xuICAgICAgdHlwZTogU2t5Rmx5b3V0TWVzc2FnZVR5cGUuT3BlbixcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5zZXR0aW5nc0tleSkge1xuICAgICAgdGhpcy4jdWlDb25maWdTZXJ2aWNlXG4gICAgICAgIC5nZXRDb25maWcodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuZmx5b3V0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB2YWx1ZS5mbHlvdXRXaWR0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQmFkIGRhdGEsIG9yIGNvbmZpZyBpcyB0aGUgZGVmYXVsdCBjb25maWcuXG4gICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoID0gdGhpcy5jb25maWcuZGVmYXVsdFdpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiNjaGVja0luaXRpYWxTaXplKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZseW91dFdpZHRoID0gdGhpcy5jb25maWcuZGVmYXVsdFdpZHRoO1xuICAgICAgdGhpcy4jY2hlY2tJbml0aWFsU2l6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNmbHlvdXRJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dCh7XG4gICAgICB0eXBlOiBTa3lGbHlvdXRNZXNzYWdlVHlwZS5DbG9zZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbnZva2VQcmltYXJ5QWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByaW1hcnlBY3Rpb24uY2FsbGJhY2spIHtcbiAgICAgIHRoaXMucHJpbWFyeUFjdGlvbi5jYWxsYmFjaygpO1xuXG4gICAgICBpZiAodGhpcy5wcmltYXJ5QWN0aW9uLmNsb3NlQWZ0ZXJJbnZva2luZykge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbmltYXRpb25TdGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlUmVhZHkgJiYgdGhpcy5pc09wZW5pbmdcbiAgICAgID8gRkxZT1VUX09QRU5fU1RBVEVcbiAgICAgIDogRkxZT1VUX0NMT1NFRF9TVEFURTtcbiAgfVxuXG4gIHB1YmxpYyBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50b1N0YXRlID09PSBGTFlPVVRfT1BFTl9TVEFURSkge1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChldmVudC50b1N0YXRlID09PSBGTFlPVVRfQ0xPU0VEX1NUQVRFKSB7XG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy4jbm90aWZ5Q2xvc2VkKCk7XG4gICAgICB0aGlzLiNjbGVhblRlbXBsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSGVhZGVyR3JhYkhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25SZXNpemVIYW5kbGVNb3VzZURvd24oZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uSGVhZGVyR3JhYkhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLiNoYW5kbGVSZXNpemVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZUhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLiNoYW5kbGVSZXNpemVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZUhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMuI3hDb29yZCA9IGV2ZW50LmNsaWVudFg7XG5cbiAgICB0aGlzLiNhZGFwdGVyLnRvZ2dsZUlmcmFtZVBvaW50ZXJFdmVudHMoZmFsc2UpO1xuXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobW92ZUV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vbk1vdXNlTW92ZShtb3ZlRXZlbnQpO1xuICAgICAgfSk7XG5cbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzRHJhZ2dpbmc7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobW91c2VVcEV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vbkhhbmRsZVJlbGVhc2UobW91c2VVcEV2ZW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuI3hDb29yZDtcbiAgICBsZXQgd2lkdGggPSB0aGlzLmZseW91dFdpZHRoO1xuXG4gICAgd2lkdGggLT0gb2Zmc2V0WDtcblxuICAgIGlmICh3aWR0aCA8IHRoaXMuY29uZmlnLm1pbldpZHRoIHx8IHdpZHRoID4gdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggLSB3aWR0aCA8IHRoaXMuI3dpbmRvd0J1ZmZlclNpemUpIHtcbiAgICAgIHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSB0aGlzLiN3aW5kb3dCdWZmZXJTaXplO1xuICAgICAgdGhpcy4jeENvb3JkID0gdGhpcy4jd2luZG93QnVmZmVyU2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jeENvb3JkID0gZXZlbnQuY2xpZW50WDtcbiAgICB9XG5cbiAgICB0aGlzLmZseW91dFdpZHRoID0gd2lkdGg7XG5cbiAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHRoaXMuZmx5b3V0V2lkdGgpO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25IYW5kbGVSZWxlYXNlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy4jYWRhcHRlci50b2dnbGVJZnJhbWVQb2ludGVyRXZlbnRzKHRydWUpO1xuICAgICAgICB0aGlzLiNzZXRVc2VyRGF0YSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVyYXRvclByZXZpb3VzQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jZmx5b3V0SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuI2ZseW91dEluc3RhbmNlLml0ZXJhdG9yUHJldmlvdXNCdXR0b25DbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSXRlcmF0b3JOZXh0QnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jZmx5b3V0SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuI2ZseW91dEluc3RhbmNlLml0ZXJhdG9yTmV4dEJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlRmx5b3V0SW5zdGFuY2U8VD4oY29tcG9uZW50OiBUKTogU2t5Rmx5b3V0SW5zdGFuY2U8VD4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNreUZseW91dEluc3RhbmNlPFQ+KGNvbXBvbmVudCk7XG5cbiAgICBpbnN0YW5jZS5ob3N0Q29udHJvbGxlclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTdHJlYW0ubmV4dChtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgI2hhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNPcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNpbml0Rm9jdXNUcmFwKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuI2ZseW91dEluc3RhbmNlPy5iZWZvcmVDbG9zZSBhcyBTdWJqZWN0PGFueT4pPy5vYnNlcnZlcnNcbiAgICAgICAgICAgIC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICBtZXNzYWdlLmRhdGE/Lmlnbm9yZUJlZm9yZUNsb3NlXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzT3BlbmluZyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICh0aGlzLiNmbHlvdXRJbnN0YW5jZT8uYmVmb3JlQ2xvc2UgYXMgU3ViamVjdDxhbnk+KT8ubmV4dChcbiAgICAgICAgICAgIG5ldyBTa3lGbHlvdXRCZWZvcmVDbG9zZUhhbmRsZXIoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaXNPcGVuaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkVuYWJsZUl0ZXJhdG9yTmV4dEJ1dHRvbjpcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JOZXh0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuRW5hYmxlSXRlcmF0b3JQcmV2aW91c0J1dHRvbjpcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0b3JQcmV2aW91c0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUZseW91dE1lc3NhZ2VUeXBlLkRpc2FibGVJdGVyYXRvck5leHRCdXR0b246XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yTmV4dEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Rmx5b3V0TWVzc2FnZVR5cGUuRGlzYWJsZUl0ZXJhdG9yUHJldmlvdXNCdXR0b246XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdG9yUHJldmlvdXNCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI25vdGlmeUNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNmbHlvdXRJbnN0YW5jZT8uY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLiNmbHlvdXRJbnN0YW5jZT8uY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjY2xlYW5UZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhcmdldD8uY2xlYXIoKTtcbiAgfVxuXG4gICN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLiNmbHlvdXRNZWRpYVF1ZXJ5U2VydmljZS5zZXRCcmVha3BvaW50Rm9yV2lkdGgod2lkdGgpO1xuXG4gICAgY29uc3QgbmV3QnJlYWtwb2ludCA9IHRoaXMuI2ZseW91dE1lZGlhUXVlcnlTZXJ2aWNlLmN1cnJlbnQ7XG5cbiAgICB0aGlzLiNhZGFwdGVyLnNldFJlc3BvbnNpdmVDbGFzcyh0aGlzLiNlbGVtZW50UmVmLCBuZXdCcmVha3BvaW50KTtcbiAgfVxuXG4gICNzZXRGdWxsc2NyZWVuKCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuI3dpbmRvd0J1ZmZlclNpemUgPCB0aGlzLmNvbmZpZy5taW5XaWR0aCkge1xuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNzZXRVc2VyRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2V0dGluZ3NLZXkpIHtcbiAgICAgIHRoaXMuI3VpQ29uZmlnU2VydmljZVxuICAgICAgICAuc2V0Q29uZmlnKHRoaXMuY29uZmlnLnNldHRpbmdzS2V5LCB7XG4gICAgICAgICAgZmx5b3V0V2lkdGg6IHRoaXMuZmx5b3V0V2lkdGgsXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICAgICgpID0+IHt9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IHNhdmUgZmx5b3V0IGRhdGEuJyk7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNjaGVja0luaXRpYWxTaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZseW91dFdpZHRoIDwgdGhpcy5jb25maWcubWluV2lkdGgpIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB0aGlzLmNvbmZpZy5taW5XaWR0aDtcbiAgICAgIHRoaXMuI3NldFVzZXJEYXRhKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZseW91dFdpZHRoID4gdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSB0aGlzLmNvbmZpZy5tYXhXaWR0aDtcbiAgICAgIHRoaXMuI3NldFVzZXJEYXRhKCk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGZseW91dCBkb2VzIG5vdCBsb2FkIGxhcmdlciB0aGFuIHRoZSB3aW5kb3cgYW5kIGl0cyBidWZmZXJcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggLSB0aGlzLmZseW91dFdpZHRoIDwgdGhpcy4jd2luZG93QnVmZmVyU2l6ZSkge1xuICAgICAgdGhpcy5mbHlvdXRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy4jd2luZG93QnVmZmVyU2l6ZTtcbiAgICAgIHRoaXMuI3hDb29yZCA9IHRoaXMuI3dpbmRvd0J1ZmZlclNpemU7XG4gICAgICB0aGlzLiNzZXRVc2VyRGF0YSgpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuI2ZseW91dE1lZGlhUXVlcnlTZXJ2aWNlLmlzV2lkdGhXaXRoaW5CcmVha3BvaW50KFxuICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgU2t5TWVkaWFCcmVha3BvaW50cy54cyxcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUJyZWFrcG9pbnRBbmRSZXNwb25zaXZlQ2xhc3Mod2luZG93LmlubmVyV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHRoaXMuZmx5b3V0V2lkdGgpO1xuICAgIH1cblxuICAgIHRoaXMuI3NldEZ1bGxzY3JlZW4oKTtcbiAgfVxuXG4gICNnZXRTdHJpbmcoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE5lZWQgdG8gaW1wbGVtZW50IHRoZSBhc3luYyBgZ2V0U3RyaW5nYCBtZXRob2QgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgcmV0dXJuIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nRm9yTG9jYWxlKHsgbG9jYWxlOiAnZW4tVVMnIH0sIGtleSk7XG4gIH1cblxuICAjaGFuZGxlUmVzaXplS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgY29uc3Qga2V5UHJlc3NlZCA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ2Fycm93JywgJycpO1xuICAgICAgc3dpdGNoIChrZXlQcmVzc2VkKSB7XG4gICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgdGhpcy5yZXNpemVLZXlDb250cm9sQWN0aXZlID0gIXRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUtleUNvbnRyb2xBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgaWYgKHRoaXMucmVzaXplS2V5Q29udHJvbEFjdGl2ZSkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmZseW91dFdpZHRoIDwgdGhpcy5jb25maWcubWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5mbHlvdXRXaWR0aCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggKyB0aGlzLndpZHRoU3RlcCxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5tYXhXaWR0aCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUtleUNvbnRyb2xBY3RpdmUpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICBpZiAodGhpcy5mbHlvdXRXaWR0aCA+IHRoaXMuY29uZmlnLm1pbldpZHRoKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmx5b3V0V2lkdGggPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLmZseW91dFdpZHRoIC0gdGhpcy53aWR0aFN0ZXAsXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcubWluV2lkdGgsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2hlbiB0aGUgem9uZSBpcyBzdGFibGUuICovXG4gICNleGVjdXRlT25TdGFibGUoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNuZ1pvbmUuaXNTdGFibGUpIHtcbiAgICAgIGZuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI25nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmbik7XG4gICAgfVxuICB9XG5cbiAgI2luaXRGb2N1c1RyYXAoKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVUcmFwRm9jdXNBdXRvQ2FwdHVyZSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlVHJhcEZvY3VzID0gZmFsc2U7XG4gICAgLy8gV2FpdGluZyBmb3Igem9uZSB0byBiZSBzdGFibGUgd2lsbCBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlQWZ0ZXJDaGVja2VkRXJyb3IuXG4gICAgdGhpcy4jZXhlY3V0ZU9uU3RhYmxlKCgpID0+IHtcbiAgICAgIHRoaXMuZW5hYmxlVHJhcEZvY3VzQXV0b0NhcHR1cmUgPSB0cnVlO1xuICAgICAgdGhpcy5lbmFibGVUcmFwRm9jdXMgPSB0cnVlO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWZseW91dFwiXG4gIHRhYmluZGV4PVwiLTFcIlxuICBbYXR0ci5yb2xlXT1cImNvbmZpZy5hcmlhUm9sZSA/IGNvbmZpZy5hcmlhUm9sZSA6ICdkaWFsb2cnXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjb25maWcuYXJpYURlc2NyaWJlZEJ5XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcuYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImNvbmZpZy5hcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLmFyaWEtbW9kYWxdPVwiXG4gICAgY29uZmlnLmFyaWFSb2xlID09PSAnZGlhbG9nJyB8fCAhY29uZmlnLmFyaWFSb2xlID8gdHJ1ZSA6IGZhbHNlXG4gIFwiXG4gIFthdHRyLmhpZGRlbl09XCIhaW5zdGFuY2VSZWFkeSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICBbaWRdPVwiZmx5b3V0SWRcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1mbHlvdXQtaGlkZGVuJzogIWlzT3BlbiAmJiAhaXNPcGVuaW5nLFxuICAgICdza3ktZmx5b3V0LWZ1bGxzY3JlZW4nOiBpc0Z1bGxzY3JlZW5cbiAgfVwiXG4gIFtzdHlsZS56LWluZGV4XT1cInpJbmRleCQgfCBhc3luY1wiXG4gIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAnc2t5LXNoYWRvdyc6ICdkZWZhdWx0JyxcbiAgICAnc2t5LWVsZXZhdGlvbi04JzogJ21vZGVybidcbiAgfVwiXG4gIChAZmx5b3V0U3RhdGUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIlxuICBbQGZseW91dFN0YXRlXT1cImdldEFuaW1hdGlvblN0YXRlKClcIlxuICBbc3R5bGUud2lkdGgucHhdPVwiZmx5b3V0V2lkdGhcIlxuICAjZmx5b3V0UmVmXG4gIFtjZGtUcmFwRm9jdXNdPVwiZW5hYmxlVHJhcEZvY3VzXCJcbiAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cImVuYWJsZVRyYXBGb2N1c0F1dG9DYXB0dXJlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWZseW91dC1oZWFkZXJcIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktcGFkZGluZy1zcXVpc2gtbGFyZ2UnOiAnZGVmYXVsdCdcbiAgICB9XCJcbiAgICBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXgkIHwgYXN5bmNcIlxuICAgICNmbHlvdXRIZWFkZXJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmx5b3V0LWhlYWRlci1jb250ZW50XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3Mgc2t5LW1hcmdpbi1pbmxpbmUtc20gc2t5LWZseW91dC1oZWFkZXItZ3JhYi1oYW5kbGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfZmx5b3V0X3Jlc2l6ZV9oYW5kbGUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgKGtleWRvd24pPVwib25IZWFkZXJHcmFiSGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhlYWRlckdyYWJIYW5kbGVNb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uPVwidGlsZS1kcmFnXCIgc2l6ZT1cImxnXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8c2t5LWZseW91dC1pdGVyYXRvclxuICAgICAgICAqbmdJZj1cImNvbmZpZy5zaG93SXRlcmF0b3JcIlxuICAgICAgICBbbmV4dEJ1dHRvbkRpc2FibGVkXT1cImNvbmZpZy5pdGVyYXRvck5leHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgIFtwcmV2aW91c0J1dHRvbkRpc2FibGVkXT1cImNvbmZpZy5pdGVyYXRvclByZXZpb3VzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAobmV4dEJ1dHRvbkNsaWNrKT1cIm9uSXRlcmF0b3JOZXh0QnV0dG9uQ2xpY2soKVwiXG4gICAgICAgIChwcmV2aW91c0J1dHRvbkNsaWNrKT1cIm9uSXRlcmF0b3JQcmV2aW91c0J1dHRvbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgPC9za3ktZmx5b3V0LWl0ZXJhdG9yPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmx5b3V0LWhlYWRlci1idXR0b25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGVybWFsaW5rVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJpbWFyeUFjdGlvblRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tY2xvc2Ugc2t5LWxhYmVsLWljb24tdGhlbWUtZGVmYXVsdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9mbHlvdXRfY2xvc2UnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktYnRuLWRlZmF1bHQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1idG4taWNvbi1ib3JkZXJsZXNzJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNsb3NlXCIgLz5cbiAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwiY2xvc2VcIiBzaXplPVwibGdcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2t5LWZseW91dC1jb250ZW50XCI+XG4gICAgPGRpdiAjdGFyZ2V0PjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWZseW91dC1yZXNpemUtaGFuZGxlXCJcbiAgICByb2xlPVwic2VwYXJhdG9yXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJmbHlvdXRJZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfZmx5b3V0X3Jlc2l6ZV9oYW5kbGUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cImNvbmZpZy5tYXhXaWR0aFwiXG4gICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJjb25maWcubWluV2lkdGhcIlxuICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwiZmx5b3V0V2lkdGhcIlxuICAgIChrZXlkb3duKT1cIm9uUmVzaXplSGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplSGFuZGxlTW91c2VEb3duKCRldmVudClcIlxuICA+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwZXJtYWxpbmtUZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInBlcm1hbGlua1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJwZXJtYWxpbmsudXJsXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tcGVybWFsaW5rIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgICBbc2t5SHJlZl09XCJwZXJtYWxpbmsudXJsXCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktYnRuLWRlZmF1bHQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1idG4tYm9yZGVybGVzcyc6ICdtb2Rlcm4nXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBlcm1hbGlua0xhYmVsIH19XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwicGVybWFsaW5rLnJvdXRlXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWZseW91dC1idG4tcGVybWFsaW5rIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgICBbcm91dGVyTGlua109XCJwZXJtYWxpbmsucm91dGUuY29tbWFuZHNcIlxuICAgICAgICBbZnJhZ21lbnRdPVwicGVybWFsaW5rLnJvdXRlLmV4dHJhcz8uZnJhZ21lbnRcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1idG4tZGVmYXVsdCc6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnc2t5LWJ0bi1ib3JkZXJsZXNzJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIFtxdWVyeVBhcmFtc109XCJwZXJtYWxpbmsucm91dGUuZXh0cmFzPy5xdWVyeVBhcmFtc1wiXG4gICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInBlcm1hbGluay5yb3V0ZS5leHRyYXM/LnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICBbc3RhdGVdPVwicGVybWFsaW5rLnJvdXRlLmV4dHJhcz8uc3RhdGVcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBlcm1hbGlua0xhYmVsIH19XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJpbWFyeUFjdGlvblRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwicHJpbWFyeUFjdGlvbiAmJiBwcmltYXJ5QWN0aW9uLmNhbGxiYWNrXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1mbHlvdXQtYnRuLXByaW1hcnktYWN0aW9uIHNreS1tYXJnaW4taW5saW5lLWRlZmF1bHRcIlxuICAgICAgKGNsaWNrKT1cImludm9rZVByaW1hcnlBY3Rpb24oKVwiXG4gICAgPlxuICAgICAge3sgcHJpbWFyeUFjdGlvbkxhYmVsIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,4 +1,4 @@
1
- import { Injectable, } from '@angular/core';
1
+ import { EnvironmentInjector, Injectable, inject, } from '@angular/core';
2
2
  import { NavigationStart } from '@angular/router';
3
3
  import { Subject, fromEvent } from 'rxjs';
4
4
  import { take, takeUntil, takeWhile } from 'rxjs/operators';
@@ -19,6 +19,7 @@ export class SkyFlyoutService {
19
19
  #coreAdapter;
20
20
  #windowRef;
21
21
  #dynamicComponentService;
22
+ #environmentInjector = inject(EnvironmentInjector);
22
23
  #router;
23
24
  #ngZone;
24
25
  constructor(coreAdapter, windowRef, dynamicComponentService, router, ngZone) {
@@ -75,7 +76,7 @@ export class SkyFlyoutService {
75
76
  }
76
77
  });
77
78
  }
78
- const flyout = SkyFlyoutService.host.instance.attach(component, config);
79
+ const flyout = SkyFlyoutService.host.instance.attach(component, config, this.#environmentInjector);
79
80
  this.#addListeners(flyout);
80
81
  return flyout;
81
82
  }
@@ -185,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
185
186
  providedIn: 'any',
186
187
  }]
187
188
  }], ctorParameters: function () { return [{ type: i1.SkyCoreAdapterService }, { type: i1.SkyAppWindowRef }, { type: i1.SkyDynamicComponentLegacyService }, { type: i2.Router }, { type: i0.NgZone }]; } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZmx5b3V0L3NyYy9saWIvbW9kdWxlcy9mbHlvdXQvZmx5b3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsR0FJWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFRMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFbkU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0Isa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFeEMsWUFBWSxDQUF3QjtJQUNwQyxVQUFVLENBQWtCO0lBQzVCLHdCQUF3QixDQUE2QjtJQUNyRCxPQUFPLENBQVM7SUFDaEIsT0FBTyxDQUFTO0lBRWhCLFlBQ0UsV0FBa0MsRUFDbEMsU0FBMEIsRUFDMUIsdUJBQW1ELEVBQ25ELE1BQWMsRUFDZCxNQUFjO1FBRWQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElB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VyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQzs4R0FWVSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZyQixLQUFLOzsyRkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBTa3lBcHBXaW5kb3dSZWYsXG4gIFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgU2t5RHluYW1pY0NvbXBvbmVudExlZ2FjeVNlcnZpY2UsXG4gIFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZseW91dEluc3RhbmNlIH0gZnJvbSAnLi9mbHlvdXQtaW5zdGFuY2UnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9mbHlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUZseW91dENsb3NlQXJncyB9IGZyb20gJy4vdHlwZXMvZmx5b3V0LWNsb3NlLWFyZ3MnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0Q29uZmlnIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtY29uZmlnJztcbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1tZXNzYWdlJztcbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtbWVzc2FnZS10eXBlJztcblxuLyoqXG4gKiBMYXVuY2hlcyBmbHlvdXRzIGFuZCBwcm92aWRlcyBhIGNvbW1vbiBsb29rIGFuZCBmZWVsLlxuICogVGhpcyBzZXJ2aWNlIGR5bmFtaWNhbGx5IGdlbmVyYXRlcyB0aGUgZmx5b3V0IGNvbXBvbmVudCBhbmQgYXBwZW5kcyBpdCBkaXJlY3RseSB0byB0aGVcbiAqIGRvY3VtZW50J3MgYGJvZHlgIGVsZW1lbnQuIFRoZSBgU2t5Rmx5b3V0SW5zdGFuY2VgIGNsYXNzIHdhdGNoZXMgZm9yIGFuZCB0cmlnZ2VycyBmbHlvdXQgZXZlbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rmx5b3V0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIGhvc3Q6IENvbXBvbmVudFJlZjxTa3lGbHlvdXRDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICNyZW1vdmVBZnRlckNsb3NlZCA9IGZhbHNlO1xuICAjaXNPcGVuaW5nID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAjY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZTtcbiAgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuICAjZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlO1xuICAjcm91dGVyOiBSb3V0ZXI7XG4gICNuZ1pvbmU6IE5nWm9uZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICByb3V0ZXI6IFJvdXRlcixcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXIgPSBjb3JlQWRhcHRlcjtcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UgPSBkeW5hbWljQ29tcG9uZW50U2VydmljZTtcbiAgICB0aGlzLiNyb3V0ZXIgPSByb3V0ZXI7XG4gICAgdGhpcy4jbmdab25lID0gbmdab25lO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZUxpc3RlbmVycygpO1xuICAgIGlmIChTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpIHtcbiAgICAgIHRoaXMuI3JlbW92ZUhvc3RDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBmbHlvdXQuIFRoaXMgbWV0aG9kIGFsc28gcmVtb3ZlcyB0aGUgZmx5b3V0J3MgSFRNTCBlbGVtZW50cyBmcm9tIHRoZSBET00uXG4gICAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyB1c2VkIHdoZW4gY2xvc2luZyB0aGUgZmx5b3V0LlxuICAgKi9cbiAgcHVibGljIGNsb3NlKGFyZ3M/OiBTa3lGbHlvdXRDbG9zZUFyZ3MpOiB2b2lkIHtcbiAgICBpZiAoU2t5Rmx5b3V0U2VydmljZS5ob3N0ICYmICF0aGlzLiNpc09wZW5pbmcpIHtcbiAgICAgIFNreUZseW91dFNlcnZpY2UuaG9zdC5pbnN0YW5jZS5tZXNzYWdlU3RyZWFtLm5leHQoe1xuICAgICAgICB0eXBlOiBTa3lGbHlvdXRNZXNzYWdlVHlwZS5DbG9zZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGlnbm9yZUJlZm9yZUNsb3NlOiBhcmdzID8gYXJncy5pZ25vcmVCZWZvcmVDbG9zZSA6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZmx5b3V0IGFuZCBkaXNwbGF5cyB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGNvbXBvbmVudCBTcGVjaWZpZXMgdGhlIGNvbXBvbmVudCB0byByZW5kZXIuXG4gICAqIEBwYXJhbSBjb25maWcgU3BlY2lmaWVzIHRoZSBmbHlvdXQgY29uZmlndXJhdGlvbiBwYXNzZWQgdG8gdGhlIHNwZWNpZmllZCBjb21wb25lbnQncyBjb25zdHJ1Y3Rvci5cbiAgICovXG4gIHB1YmxpYyBvcGVuPFQ+KFxuICAgIGNvbXBvbmVudDogVHlwZTxUPixcbiAgICBjb25maWc/OiBTa3lGbHlvdXRDb25maWcsXG4gICk6IFNreUZseW91dEluc3RhbmNlPFQ+IHtcbiAgICAvLyBpc09wZW5pbmcgZmxhZyB3aWxsIHByZXZlbnQgY2xvc2UoKSBmcm9tIGZpcmluZyB3aGVuIG9wZW4oKSBpcyBhbHNvIGZpcmVkLlxuICAgIHRoaXMuI2lzT3BlbmluZyA9IHRydWU7XG4gICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2lzT3BlbmluZyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgaWYgKCFTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpIHtcbiAgICAgIFNreUZseW91dFNlcnZpY2UuaG9zdCA9IHRoaXMuI2NyZWF0ZUhvc3RDb21wb25lbnQoKTtcblxuICAgICAgdGhpcy4jcm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gU2t5Rmx5b3V0U2VydmljZS5ob3N0ICE9PSB1bmRlZmluZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuXG4gICAgICAgICAgICAvLyBTYW5pdHkgY2hlY2sgLSBpZiB0aGUgaG9zdCBzdGlsbCBleGlzdHMgYWZ0ZXIgYW5pbWF0aW9ucyBzaG91bGQgaGF2ZSBjb21wbGV0ZWQgLSByZW1vdmUgaG9zdFxuICAgICAgICAgICAgdGhpcy4jbmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFNreUZseW91dFNlcnZpY2UuaG9zdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuI3JlbW92ZUhvc3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmbHlvdXQgPSBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QuaW5zdGFuY2UuYXR0YWNoKGNvbXBvbmVudCwgY29uZmlnKTtcblxuICAgIHRoaXMuI2FkZExpc3RlbmVycyhmbHlvdXQpO1xuXG4gICAgcmV0dXJuIGZseW91dDtcbiAgfVxuXG4gICNjcmVhdGVIb3N0Q29tcG9uZW50KCk6IENvbXBvbmVudFJlZjxTa3lGbHlvdXRDb21wb25lbnQ+IHtcbiAgICBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QgPVxuICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFNreUZseW91dENvbXBvbmVudCk7XG4gICAgcmV0dXJuIFNreUZseW91dFNlcnZpY2UuaG9zdDtcbiAgfVxuXG4gICNyZW1vdmVIb3N0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgIGlmIChTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpIHtcbiAgICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpO1xuICAgICAgU2t5Rmx5b3V0U2VydmljZS5ob3N0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRMaXN0ZW5lcnM8VD4oZmx5b3V0OiBTa3lGbHlvdXRJbnN0YW5jZTxUPik6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFNreUZseW91dFNlcnZpY2UuaG9zdCkge1xuICAgICAgY29uc3QgZmx5b3V0SW5zdGFuY2UgPSBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QuaW5zdGFuY2U7XG5cbiAgICAgIGxldCBkb0Nsb3NlID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlcyB3aGVuIHRvIGNsb3NlIGEgZmx5b3V0LlxuICAgICAgICogTm90ZTogV2UncmUgdXNpbmcgYG1vdXNldXBgIGluIG9yZGVyIHRvIGNhcHR1cmUgdGhlIHBhcmVudCBvZiBjZXJ0YWluIHRhcmdldHMgdGhhdCB3aWxsIGJlXG4gICAgICAgKiBkZWxldGVkIGltbWVkaWF0ZWx5IGFmdGVyIGJlaW5nIGNsaWNrZWQuIElmIHdlIHVzZSBgY2xpY2tgLCB0aGUgZXZlbnQgaXMgZmlyZWQgYWZ0ZXIgdGhlXG4gICAgICAgKiBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGNoZWNrIHRoZSBwYXJlbnQncyB6LWluZGV4XG4gICAgICAgKiByZWxhdGl2ZSB0byB0aGUgZmx5b3V0J3MgY29udGFpbmVyLlxuICAgICAgICovXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBkb0Nsb3NlID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoU2t5Rmx5b3V0U2VydmljZS5ob3N0Py5pbnN0YW5jZS5pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZseW91dEluc3RhbmNlLmZseW91dFJlZj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNBYm92ZSA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQgPT09IGRvY3VtZW50IHx8ICFldmVudC50YXJnZXRcbiAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICA6IHRoaXMuI2NvcmVBZGFwdGVyLmlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgZmx5b3V0SW5zdGFuY2UuZmx5b3V0UmVmPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghaXNBYm92ZSkge1xuICAgICAgICAgICAgZG9DbG9zZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBDaGVjayBpZiB3ZSBzaG91bGQgY2xvc2UgdGhlIGZseW91dCBzcGVjaWZpY2FsbHkgb24gYSBgY2xpY2tgIGV2ZW50IHNvIHRoYXQgd2UgY2FuIGtlZXBcbiAgICAgICAqIGl0IG9wZW4gd2hlbiBjb25zdW1lcnMgZmlyZSBhbm90aGVyIGBjbGlja2AgZXZlbnQgb24gYSB0cmlnZ2VyIGJ1dHRvbi4gU2luY2UgdGhlIGNvbnN1bWVyXG4gICAgICAgKiB3aWxsIGxpa2VseSB1c2UgYSBgY2xpY2tgIGV2ZW50IHRvIG9wZW4gdGhlIGZseW91dCwgd2Ugd2FudCB0byB3YWl0IGZvciB0aGF0IGV2ZW50IHRvIGZpcmVcbiAgICAgICAqIGJlZm9yZSBkZXRlcm1pbmluZyBpZiB0aGUgZmx5b3V0IHNob3VsZCBiZSBjbG9zZWQuXG4gICAgICAgKi9cbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2NsaWNrJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoZG9DbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3JlbW92ZUFmdGVyQ2xvc2VkID0gZmFsc2U7XG4gICAgICBmbHlvdXRJbnN0YW5jZS5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFNreUZseW91dE1lc3NhZ2VUeXBlLkNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLiNyZW1vdmVBZnRlckNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiNpc09wZW5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBmbHlvdXQuY2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jcmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLiNyZW1vdmVBZnRlckNsb3NlZCkge1xuICAgICAgICAgIHRoaXMuI3JlbW92ZUhvc3RDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQodHJ1ZSk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICB9XG59XG5cbi8qKlxuICogTGF1bmNoZXMgZmx5b3V0cyBhbmQgcHJvdmlkZXMgYSBjb21tb24gbG9vayBhbmQgZmVlbC5cbiAqIFRoaXMgc2VydmljZSBkeW5hbWljYWxseSBnZW5lcmF0ZXMgdGhlIGZseW91dCBjb21wb25lbnQgYW5kIGFwcGVuZHMgaXQgZGlyZWN0bHkgdG8gdGhlXG4gKiBkb2N1bWVudCdzIGBib2R5YCBlbGVtZW50LiBUaGUgYFNreUZseW91dEluc3RhbmNlYCBjbGFzcyB3YXRjaGVzIGZvciBhbmQgdHJpZ2dlcnMgZmx5b3V0IGV2ZW50cy5cbiAqIEBpbnRlcm5hbFxuICogQGRlcHJlY2F0ZWQgVXNlIGBTa3lGbHlvdXRTZXJ2aWNlYCB0byBvcGVuIGEgc3RhbmRhbG9uZSBjb21wb25lbnQgaW5zdGVhZC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rmx5b3V0TGVnYWN5U2VydmljZSBleHRlbmRzIFNreUZseW91dFNlcnZpY2Uge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50TGVnYWN5U2VydmljZSxcbiAgICByb3V0ZXI6IFJvdXRlcixcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgc3VwZXIoY29yZUFkYXB0ZXIsIHdpbmRvd1JlZiwgZHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIHJvdXRlciwgbmdab25lKTtcbiAgfVxufVxuIl19
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZmx5b3V0L3NyYy9saWIvbW9kdWxlcy9mbHlvdXQvZmx5b3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixVQUFVLEVBSVYsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQVExRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUl4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUVuRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUV4QyxZQUFZLENBQXdCO0lBQ3BDLFVBQVUsQ0FBa0I7SUFDNUIsd0JBQXdCLENBQTZCO0lBQ3JELG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sQ0FBUztJQUNoQixPQUFPLENBQVM7SUFFaEIsWUFDRSxXQUFrQyxFQUNsQyxTQUEwQixFQUMxQix1QkFBbUQsRUFDbkQsTUFBYyxFQUNkLE1BQWM7UUFFZCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMs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MUQsMEJBQTBCO0lBQzFCLFlBQ0UsV0FBa0MsRUFDbEMsU0FBMEIsRUFDMUIsdUJBQXlELEVBQ3pELE1BQWMsRUFDZCxNQUFjO1FBRWQsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBVlUsc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGckIsS0FBSzs7MkZBRU4sc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFR5cGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBTa3lBcHBXaW5kb3dSZWYsXG4gIFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgU2t5RHluYW1pY0NvbXBvbmVudExlZ2FjeVNlcnZpY2UsXG4gIFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZseW91dEluc3RhbmNlIH0gZnJvbSAnLi9mbHlvdXQtaW5zdGFuY2UnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9mbHlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUZseW91dENsb3NlQXJncyB9IGZyb20gJy4vdHlwZXMvZmx5b3V0LWNsb3NlLWFyZ3MnO1xuaW1wb3J0IHsgU2t5Rmx5b3V0Q29uZmlnIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtY29uZmlnJztcbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2ZseW91dC1tZXNzYWdlJztcbmltcG9ydCB7IFNreUZseW91dE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9mbHlvdXQtbWVzc2FnZS10eXBlJztcblxuLyoqXG4gKiBMYXVuY2hlcyBmbHlvdXRzIGFuZCBwcm92aWRlcyBhIGNvbW1vbiBsb29rIGFuZCBmZWVsLlxuICogVGhpcyBzZXJ2aWNlIGR5bmFtaWNhbGx5IGdlbmVyYXRlcyB0aGUgZmx5b3V0IGNvbXBvbmVudCBhbmQgYXBwZW5kcyBpdCBkaXJlY3RseSB0byB0aGVcbiAqIGRvY3VtZW50J3MgYGJvZHlgIGVsZW1lbnQuIFRoZSBgU2t5Rmx5b3V0SW5zdGFuY2VgIGNsYXNzIHdhdGNoZXMgZm9yIGFuZCB0cmlnZ2VycyBmbHlvdXQgZXZlbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rmx5b3V0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIGhvc3Q6IENvbXBvbmVudFJlZjxTa3lGbHlvdXRDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICNyZW1vdmVBZnRlckNsb3NlZCA9IGZhbHNlO1xuICAjaXNPcGVuaW5nID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAjY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZTtcbiAgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuICAjZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlO1xuICAjZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgI3JvdXRlcjogUm91dGVyO1xuICAjbmdab25lOiBOZ1pvbmU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgICB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZixcbiAgICBkeW5hbWljQ29tcG9uZW50U2VydmljZTogU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jd2luZG93UmVmID0gd2luZG93UmVmO1xuICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlID0gZHluYW1pY0NvbXBvbmVudFNlcnZpY2U7XG4gICAgdGhpcy4jcm91dGVyID0gcm91dGVyO1xuICAgIHRoaXMuI25nWm9uZSA9IG5nWm9uZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVMaXN0ZW5lcnMoKTtcbiAgICBpZiAoU2t5Rmx5b3V0U2VydmljZS5ob3N0KSB7XG4gICAgICB0aGlzLiNyZW1vdmVIb3N0Q29tcG9uZW50KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZmx5b3V0LiBUaGlzIG1ldGhvZCBhbHNvIHJlbW92ZXMgdGhlIGZseW91dCdzIEhUTUwgZWxlbWVudHMgZnJvbSB0aGUgRE9NLlxuICAgKiBAcGFyYW0gYXJncyBBcmd1bWVudHMgdXNlZCB3aGVuIGNsb3NpbmcgdGhlIGZseW91dC5cbiAgICovXG4gIHB1YmxpYyBjbG9zZShhcmdzPzogU2t5Rmx5b3V0Q2xvc2VBcmdzKTogdm9pZCB7XG4gICAgaWYgKFNreUZseW91dFNlcnZpY2UuaG9zdCAmJiAhdGhpcy4jaXNPcGVuaW5nKSB7XG4gICAgICBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QuaW5zdGFuY2UubWVzc2FnZVN0cmVhbS5uZXh0KHtcbiAgICAgICAgdHlwZTogU2t5Rmx5b3V0TWVzc2FnZVR5cGUuQ2xvc2UsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBpZ25vcmVCZWZvcmVDbG9zZTogYXJncyA/IGFyZ3MuaWdub3JlQmVmb3JlQ2xvc2UgOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIGZseW91dCBhbmQgZGlzcGxheXMgdGhlIHNwZWNpZmllZCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgU3BlY2lmaWVzIHRoZSBjb21wb25lbnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0gY29uZmlnIFNwZWNpZmllcyB0aGUgZmx5b3V0IGNvbmZpZ3VyYXRpb24gcGFzc2VkIHRvIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50J3MgY29uc3RydWN0b3IuXG4gICAqL1xuICBwdWJsaWMgb3BlbjxUPihcbiAgICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gICAgY29uZmlnPzogU2t5Rmx5b3V0Q29uZmlnLFxuICApOiBTa3lGbHlvdXRJbnN0YW5jZTxUPiB7XG4gICAgLy8gaXNPcGVuaW5nIGZsYWcgd2lsbCBwcmV2ZW50IGNsb3NlKCkgZnJvbSBmaXJpbmcgd2hlbiBvcGVuKCkgaXMgYWxzbyBmaXJlZC5cbiAgICB0aGlzLiNpc09wZW5pbmcgPSB0cnVlO1xuICAgIHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNpc09wZW5pbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGlmICghU2t5Rmx5b3V0U2VydmljZS5ob3N0KSB7XG4gICAgICBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QgPSB0aGlzLiNjcmVhdGVIb3N0Q29tcG9uZW50KCk7XG5cbiAgICAgIHRoaXMuI3JvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IFNreUZseW91dFNlcnZpY2UuaG9zdCAhPT0gdW5kZWZpbmVkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcblxuICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrIC0gaWYgdGhlIGhvc3Qgc3RpbGwgZXhpc3RzIGFmdGVyIGFuaW1hdGlvbnMgc2hvdWxkIGhhdmUgY29tcGxldGVkIC0gcmVtb3ZlIGhvc3RcbiAgICAgICAgICAgIHRoaXMuI25nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNyZW1vdmVIb3N0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmx5b3V0ID0gU2t5Rmx5b3V0U2VydmljZS5ob3N0Lmluc3RhbmNlLmF0dGFjaChcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgKTtcblxuICAgIHRoaXMuI2FkZExpc3RlbmVycyhmbHlvdXQpO1xuXG4gICAgcmV0dXJuIGZseW91dDtcbiAgfVxuXG4gICNjcmVhdGVIb3N0Q29tcG9uZW50KCk6IENvbXBvbmVudFJlZjxTa3lGbHlvdXRDb21wb25lbnQ+IHtcbiAgICBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QgPVxuICAgICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFNreUZseW91dENvbXBvbmVudCk7XG4gICAgcmV0dXJuIFNreUZseW91dFNlcnZpY2UuaG9zdDtcbiAgfVxuXG4gICNyZW1vdmVIb3N0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgIGlmIChTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpIHtcbiAgICAgIHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlbW92ZUNvbXBvbmVudChTa3lGbHlvdXRTZXJ2aWNlLmhvc3QpO1xuICAgICAgU2t5Rmx5b3V0U2VydmljZS5ob3N0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRMaXN0ZW5lcnM8VD4oZmx5b3V0OiBTa3lGbHlvdXRJbnN0YW5jZTxUPik6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFNreUZseW91dFNlcnZpY2UuaG9zdCkge1xuICAgICAgY29uc3QgZmx5b3V0SW5zdGFuY2UgPSBTa3lGbHlvdXRTZXJ2aWNlLmhvc3QuaW5zdGFuY2U7XG5cbiAgICAgIGxldCBkb0Nsb3NlID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlcyB3aGVuIHRvIGNsb3NlIGEgZmx5b3V0LlxuICAgICAgICogTm90ZTogV2UncmUgdXNpbmcgYG1vdXNldXBgIGluIG9yZGVyIHRvIGNhcHR1cmUgdGhlIHBhcmVudCBvZiBjZXJ0YWluIHRhcmdldHMgdGhhdCB3aWxsIGJlXG4gICAgICAgKiBkZWxldGVkIGltbWVkaWF0ZWx5IGFmdGVyIGJlaW5nIGNsaWNrZWQuIElmIHdlIHVzZSBgY2xpY2tgLCB0aGUgZXZlbnQgaXMgZmlyZWQgYWZ0ZXIgdGhlXG4gICAgICAgKiBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGNoZWNrIHRoZSBwYXJlbnQncyB6LWluZGV4XG4gICAgICAgKiByZWxhdGl2ZSB0byB0aGUgZmx5b3V0J3MgY29udGFpbmVyLlxuICAgICAgICovXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBkb0Nsb3NlID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoU2t5Rmx5b3V0U2VydmljZS5ob3N0Py5pbnN0YW5jZS5pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZseW91dEluc3RhbmNlLmZseW91dFJlZj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNBYm92ZSA9XG4gICAgICAgICAgICBldmVudC50YXJnZXQgPT09IGRvY3VtZW50IHx8ICFldmVudC50YXJnZXRcbiAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICA6IHRoaXMuI2NvcmVBZGFwdGVyLmlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgZmx5b3V0SW5zdGFuY2UuZmx5b3V0UmVmPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghaXNBYm92ZSkge1xuICAgICAgICAgICAgZG9DbG9zZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBDaGVjayBpZiB3ZSBzaG91bGQgY2xvc2UgdGhlIGZseW91dCBzcGVjaWZpY2FsbHkgb24gYSBgY2xpY2tgIGV2ZW50IHNvIHRoYXQgd2UgY2FuIGtlZXBcbiAgICAgICAqIGl0IG9wZW4gd2hlbiBjb25zdW1lcnMgZmlyZSBhbm90aGVyIGBjbGlja2AgZXZlbnQgb24gYSB0cmlnZ2VyIGJ1dHRvbi4gU2luY2UgdGhlIGNvbnN1bWVyXG4gICAgICAgKiB3aWxsIGxpa2VseSB1c2UgYSBgY2xpY2tgIGV2ZW50IHRvIG9wZW4gdGhlIGZseW91dCwgd2Ugd2FudCB0byB3YWl0IGZvciB0aGF0IGV2ZW50IHRvIGZpcmVcbiAgICAgICAqIGJlZm9yZSBkZXRlcm1pbmluZyBpZiB0aGUgZmx5b3V0IHNob3VsZCBiZSBjbG9zZWQuXG4gICAgICAgKi9cbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2NsaWNrJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoZG9DbG9zZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3JlbW92ZUFmdGVyQ2xvc2VkID0gZmFsc2U7XG4gICAgICBmbHlvdXRJbnN0YW5jZS5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Rmx5b3V0TWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFNreUZseW91dE1lc3NhZ2VUeXBlLkNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLiNyZW1vdmVBZnRlckNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiNpc09wZW5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBmbHlvdXQuY2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jcmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLiNyZW1vdmVBZnRlckNsb3NlZCkge1xuICAgICAgICAgIHRoaXMuI3JlbW92ZUhvc3RDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQodHJ1ZSk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICB9XG59XG5cbi8qKlxuICogTGF1bmNoZXMgZmx5b3V0cyBhbmQgcHJvdmlkZXMgYSBjb21tb24gbG9vayBhbmQgZmVlbC5cbiAqIFRoaXMgc2VydmljZSBkeW5hbWljYWxseSBnZW5lcmF0ZXMgdGhlIGZseW91dCBjb21wb25lbnQgYW5kIGFwcGVuZHMgaXQgZGlyZWN0bHkgdG8gdGhlXG4gKiBkb2N1bWVudCdzIGBib2R5YCBlbGVtZW50LiBUaGUgYFNreUZseW91dEluc3RhbmNlYCBjbGFzcyB3YXRjaGVzIGZvciBhbmQgdHJpZ2dlcnMgZmx5b3V0IGV2ZW50cy5cbiAqIEBpbnRlcm5hbFxuICogQGRlcHJlY2F0ZWQgVXNlIGBTa3lGbHlvdXRTZXJ2aWNlYCB0byBvcGVuIGEgc3RhbmRhbG9uZSBjb21wb25lbnQgaW5zdGVhZC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rmx5b3V0TGVnYWN5U2VydmljZSBleHRlbmRzIFNreUZseW91dFNlcnZpY2Uge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50TGVnYWN5U2VydmljZSxcbiAgICByb3V0ZXI6IFJvdXRlcixcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgc3VwZXIoY29yZUFkYXB0ZXIsIHdpbmRvd1JlZiwgZHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIHJvdXRlciwgbmdab25lKTtcbiAgfVxufVxuIl19
@@ -488,7 +488,7 @@ class SkyFlyoutComponent {
488
488
  this.#setUserData();
489
489
  }
490
490
  }
491
- attach(component, config) {
491
+ attach(component, config, environmentInjector) {
492
492
  this.#cleanTemplate();
493
493
  // Emit the closed event on any previously opened flyout instance
494
494
  if (this.#flyoutInstance) {
@@ -527,8 +527,9 @@ class SkyFlyoutComponent {
527
527
  this.config.primaryAction && this.config.primaryAction.label
528
528
  ? this.config.primaryAction.label
529
529
  : this.#getString('skyux_flyout_primary_action_button');
530
+ environmentInjector ||= this.#environmentInjector;
530
531
  const componentRef = this.#dynamicComponentSvc.createComponent(component, {
531
- environmentInjector: this.#environmentInjector,
532
+ environmentInjector: environmentInjector,
532
533
  providers: this.config.providers,
533
534
  viewContainerRef: this.target,
534
535
  });
@@ -930,6 +931,7 @@ class SkyFlyoutService {
930
931
  #coreAdapter;
931
932
  #windowRef;
932
933
  #dynamicComponentService;
934
+ #environmentInjector = inject(EnvironmentInjector);
933
935
  #router;
934
936
  #ngZone;
935
937
  constructor(coreAdapter, windowRef, dynamicComponentService, router, ngZone) {
@@ -986,7 +988,7 @@ class SkyFlyoutService {
986
988
  }
987
989
  });
988
990
  }
989
- const flyout = SkyFlyoutService.host.instance.attach(component, config);
991
+ const flyout = SkyFlyoutService.host.instance.attach(component, config, this.#environmentInjector);
990
992
  this.#addListeners(flyout);
991
993
  return flyout;
992
994
  }