@theseam/ui-common 0.4.14 → 0.4.17

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.
Files changed (35) hide show
  1. package/esm2020/google-maps/google-maps/google-maps.component.mjs +20 -9
  2. package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +2 -1
  3. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  4. package/esm2020/google-maps/google-maps.service.mjs +6 -3
  5. package/esm2020/services/preferences/preferences-accessor.mjs +1 -1
  6. package/esm2020/services/preferences/preferences-manager.service.mjs +1 -1
  7. package/esm2020/services/preferences/preferences-record.mjs +1 -1
  8. package/esm2020/services/preferences/preferences.models.mjs +1 -1
  9. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +1 -1
  10. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  11. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  12. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  13. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  14. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  15. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  16. package/esm2020/widget/preferences/widget-preferences.models.mjs +1 -1
  17. package/esm2020/widget/preferences/widget-preferences.service.mjs +1 -1
  18. package/esm2020/widget/preferences/widget-preferences.token.mjs +1 -1
  19. package/esm2020/widget/widget.models.mjs +1 -1
  20. package/fesm2015/theseam-ui-common-google-maps.mjs +28 -12
  21. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  22. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  23. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  24. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  25. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  26. package/fesm2020/theseam-ui-common-google-maps.mjs +27 -12
  27. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  28. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  29. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  30. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  31. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  32. package/google-maps/google-maps/google-maps.component.d.ts +4 -2
  33. package/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.d.ts +1 -0
  34. package/google-maps/google-maps.service.d.ts +2 -0
  35. package/package.json +1 -1
@@ -82,6 +82,7 @@ export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
82
82
  this.zoom = 14;
83
83
  this.longitude = -98.570209;
84
84
  this.latitude = 37.633814;
85
+ this.padding = 0;
85
86
  this.mapReady = new EventEmitter();
86
87
  this._options = {
87
88
  mapTypeControl: true,
@@ -117,6 +118,7 @@ export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
117
118
  }
118
119
  }));
119
120
  this._googleMaps.setBaseLatLng(this.latitude, this.longitude);
121
+ this._googleMaps.setPadding(this.padding);
120
122
  this._gmApiLoaded = this._googleMapsApiLoader.load().pipe(map(() => true), catchError(() => of(false)));
121
123
  }
122
124
  ngOnInit() {
@@ -175,6 +177,9 @@ export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
175
177
  if (Object.prototype.hasOwnProperty.call(changes, 'editingEnabled')) {
176
178
  this._googleMaps.setEditingEnabled(this.editingEnabled);
177
179
  }
180
+ if (Object.prototype.hasOwnProperty.call(changes, 'padding')) {
181
+ this._googleMaps.setPadding(this.padding);
182
+ }
178
183
  }
179
184
  writeValue(value) {
180
185
  this.value = value;
@@ -207,20 +212,24 @@ export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
207
212
  _onMapReady(theMap) {
208
213
  this._googleMaps.setMap(theMap);
209
214
  this._googleMaps.setData(this._mapValueManager.value);
210
- // NOTE: AgmMap has a race condition problem that causes the input latitude,
211
- // longitude, and zoom to get ignored, before googlemaps emits
212
- // 'center_changed'. This should avoid the issue, until we stop using AgmMap
213
- // or upgrade to a more recent version that may not have the issue anymore.
214
- // TODO: Check if the switch to '@angular/google-maps' fixed this problem.
215
- this._googleMaps.reCenterOnFeatures();
216
- this._googleMaps.googleMap?.setZoom(this.zoom);
215
+ // NOTE: The input zoom level was getting reset after this function ran,
216
+ // so putting in this idle listener to wait until the map is fully rendered
217
+ // to set the zoom.
218
+ // Calling reCenterOnFeatures() after setZoom() ensures that maps with pre-drawn shapes
219
+ // will display correctly
220
+ this.idleListener = this._googleMaps.googleMap?.addListener('idle', () => {
221
+ this._googleMaps.googleMap?.setZoom(this.zoom);
222
+ this._googleMaps.reCenterOnFeatures();
223
+ this.mapReady.emit(this._googleMaps.googleMap);
224
+ this.idleListener?.remove();
225
+ });
217
226
  }
218
227
  _onClickDeleteFeature() {
219
228
  this._googleMaps.deleteSelection();
220
229
  }
221
230
  }
222
231
  TheSeamGoogleMapsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamGoogleMapsComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i2.GoogleMapsService }, { token: i3.MapValueManagerService }, { token: i4.TheSeamGoogleMapsApiLoader }], target: i0.ɵɵFactoryTarget.Component });
223
- TheSeamGoogleMapsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamGoogleMapsComponent, selector: "seam-google-maps", inputs: { disabled: "disabled", value: "value", tabIndex: "tabIndex", fileDropEnabled: "fileDropEnabled", fileUploadControlEnabled: "fileUploadControlEnabled", fullscreenControlEnabled: "fullscreenControlEnabled", reCenterControlEnabled: "reCenterControlEnabled", mapTypeControlEnabled: "mapTypeControlEnabled", streetViewControlEnabled: "streetViewControlEnabled", allowDrawingHoleInPolygon: "allowDrawingHoleInPolygon", editingEnabled: "editingEnabled", fileImportHandler: "fileImportHandler", zoom: "zoom", longitude: "longitude", latitude: "latitude" }, outputs: { mapReady: "mapReady" }, host: { properties: { "attr.disabled": "this._attrDisabled", "attr.tabindex": "this._attrTabIndex" } }, providers: [
232
+ TheSeamGoogleMapsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamGoogleMapsComponent, selector: "seam-google-maps", inputs: { disabled: "disabled", value: "value", tabIndex: "tabIndex", fileDropEnabled: "fileDropEnabled", fileUploadControlEnabled: "fileUploadControlEnabled", fullscreenControlEnabled: "fullscreenControlEnabled", reCenterControlEnabled: "reCenterControlEnabled", mapTypeControlEnabled: "mapTypeControlEnabled", streetViewControlEnabled: "streetViewControlEnabled", allowDrawingHoleInPolygon: "allowDrawingHoleInPolygon", editingEnabled: "editingEnabled", fileImportHandler: "fileImportHandler", zoom: "zoom", longitude: "longitude", latitude: "latitude", padding: "padding" }, outputs: { mapReady: "mapReady" }, host: { properties: { "attr.disabled": "this._attrDisabled", "attr.tabindex": "this._attrTabIndex" } }, providers: [
224
233
  MapValueManagerService,
225
234
  GoogleMapsService,
226
235
  { provide: MAP_CONTROLS_SERVICE, useClass: GoogleMapsControlsService },
@@ -313,10 +322,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
313
322
  type: Input
314
323
  }], latitude: [{
315
324
  type: Input
325
+ }], padding: [{
326
+ type: Input
316
327
  }], mapReady: [{
317
328
  type: Output
318
329
  }], featureContextMenu: [{
319
330
  type: ViewChild,
320
331
  args: ['featureContextMenu', { static: true, read: MenuComponent }]
321
332
  }] } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlHLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDOUUsT0FBTyxFQUE4QixZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzlHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUd2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMzRSxPQUFPLEVBQ0wsK0NBQStDLEdBQ2hELE1BQU0sc0ZBQXNGLENBQUE7QUFDN0YsT0FBTyxFQUNMLDZDQUE2QyxHQUM5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TixVQUFVO3FCQUNYLGFBQ1U7d0JBQ1Qsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSx5QkFBeUIsRUFBRTt3QkFDdEU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsZ0RBQWdEOzRCQUNoRCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZ0JBQWdCOzBPQXFDdEIsS0FBSztzQkFEUixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFVbUIsZUFBZTtzQkFBdkMsS0FBSztnQkFFbUIsd0JBQXdCO3NCQUFoRCxLQUFLO2dCQUNtQix3QkFBd0I7c0JBQWhELEtBQUs7Z0JBQ21CLHNCQUFzQjtzQkFBOUMsS0FBSztnQkFDbUIscUJBQXFCO3NCQUE3QyxLQUFLO2dCQUNtQix3QkFBd0I7c0JBQWhELEtBQUs7Z0JBRW1CLHlCQUF5QjtzQkFBakQsS0FBSztnQkFFbUIsY0FBYztzQkFBdEMsS0FBSztnQkFHRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBTUYsYUFBYTtzQkFEaEIsV0FBVzt1QkFBQyxlQUFlO2dCQUl4QixhQUFhO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBTUosSUFBSTtzQkFBM0IsS0FBSztnQkFDa0IsU0FBUztzQkFBaEMsS0FBSztnQkFDa0IsUUFBUTtzQkFBL0IsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUV3RSxrQkFBa0I7c0JBQWhHLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFDcm9zc2hhaXJzLCBmYUZpbGVJbXBvcnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQgeyBDYW5EaXNhYmxlLCBDYW5EaXNhYmxlQ3RvciwgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciwgbWl4aW5EaXNhYmxlZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tZW51J1xuXG5pbXBvcnQgeyBUaGVTZWFtR29vZ2xlTWFwc0FwaUxvYWRlciB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLWFwaS1sb2FkZXIvZ29vZ2xlLW1hcHMtYXBpLWxvYWRlcidcbmltcG9ydCB7IEdvb2dsZU1hcHNDb250cm9sc1NlcnZpY2UgfSBmcm9tICcuLi9nb29nbGUtbWFwcy1jb250cm9scy5zZXJ2aWNlJ1xuaW1wb3J0IHtcbiAgVGhlU2VhbUdvb2dsZU1hcHNSZWNlbnRlckJ1dHRvbkNvbnRyb2xDb21wb25lbnQsXG59IGZyb20gJy4uL2dvb2dsZS1tYXBzLXJlY2VudGVyLWJ1dHRvbi1jb250cm9sL2dvb2dsZS1tYXBzLXJlY2VudGVyLWJ1dHRvbi1jb250cm9sLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIFRoZVNlYW1Hb29nbGVNYXBzVXBsb2FkQnV0dG9uQ29udHJvbENvbXBvbmVudCxcbn0gZnJvbSAnLi4vZ29vZ2xlLW1hcHMtdXBsb2FkLWJ1dHRvbi1jb250cm9sL2dvb2dsZS1tYXBzLXVwbG9hZC1idXR0b24tY29udHJvbC5jb21wb25lbnQnXG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXBDb250cm9sLCBNQVBfQ09OVFJPTFNfU0VSVklDRSB9IGZyb20gJy4uL21hcC1jb250cm9scy1zZXJ2aWNlJ1xuaW1wb3J0IHsgTWFwVmFsdWUsIE1hcFZhbHVlTWFuYWdlclNlcnZpY2UsIE1hcFZhbHVlU291cmNlIH0gZnJvbSAnLi4vbWFwLXZhbHVlLW1hbmFnZXIuc2VydmljZSdcblxuaW50ZXJmYWNlIFRoZVNlYW1NYXBDb250ZXh0TWVudUl0ZW0ge1xuICBsYWJlbDogc3RyaW5nXG4gIGFjdGlvbjogKGl0ZW06IFRoZVNlYW1NYXBDb250ZXh0TWVudUl0ZW0pID0+IHZvaWRcbn1cblxuY2xhc3MgVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnRCYXNlIHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbn1cblxuY29uc3QgX1RoZVNlYW1Hb29nbGVNYXBzTWl4aW5CYXNlOiBDYW5EaXNhYmxlQ3RvciAmXG4gIHR5cGVvZiBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudEJhc2UgPVxuICAgIG1peGluRGlzYWJsZWQoVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnRCYXNlKVxuXG4vKipcbiAqIEEgd3JhcHBlciBmb3IgZ29vZ2xlbWFwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWdvb2dsZS1tYXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dvb2dsZS1tYXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ29vZ2xlLW1hcHMuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbXG4gICAgJ2Rpc2FibGVkJyxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTWFwVmFsdWVNYW5hZ2VyU2VydmljZSxcbiAgICBHb29nbGVNYXBzU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IE1BUF9DT05UUk9MU19TRVJWSUNFLCB1c2VDbGFzczogR29vZ2xlTWFwc0NvbnRyb2xzU2VydmljZSB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZXhwb3J0QXM6ICdzZWFtR29vZ2xlTWFwcycsXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1Hb29nbGVNYXBzQ29tcG9uZW50IGV4dGVuZHMgX1RoZVNlYW1Hb29nbGVNYXBzTWl4aW5CYXNlXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQ2FuRGlzYWJsZSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV96b29tOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbG9uZ2l0dWRlOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGF0aXR1ZGU6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9maWxlRHJvcEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Z1bGxzY3JlZW5Db250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZUNlbnRlckNvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX21hcFR5cGVDb250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdHJlZXRWaWV3Q29udHJvbEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9lZGl0aW5nRW5hYmxlZDogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICByZWFkb25seSBfZ21BcGlMb2FkZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICByZWFkb25seSBfZmlsZVVwbG9hZENvbnRyb2xEZWY6IE1hcENvbnRyb2wgPSB7XG4gICAgY29tcG9uZW50OiBUaGVTZWFtR29vZ2xlTWFwc1VwbG9hZEJ1dHRvbkNvbnRyb2xDb21wb25lbnQsXG4gICAgZGF0YTogeyBsYWJlbDogJ0ltcG9ydCBHZW8gRmlsZScsIGljb246IGZhRmlsZUltcG9ydCB9LFxuICAgIHBvc2l0aW9uOiA2IC8qIGdvb2dsZS5tYXBzLkNvbnRyb2xQb3NpdGlvbi5MRUZUX0JPVFRPTSAqLyxcbiAgfVxuXG4gIHJlYWRvbmx5IF9yZUNlbnRlckNvbnRyb2xEZWY6IE1hcENvbnRyb2wgPSB7XG4gICAgY29tcG9uZW50OiBUaGVTZWFtR29vZ2xlTWFwc1JlY2VudGVyQnV0dG9uQ29udHJvbENvbXBvbmVudCxcbiAgICBkYXRhOiB7IGxhYmVsOiAnQ2VudGVyIG9uIEZpZWxkJywgaWNvbjogZmFDcm9zc2hhaXJzIH0sXG4gICAgcG9zaXRpb246IDkgLyogZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uLlJJR0hUX0JPVFRPTSAqLyxcbiAgfVxuXG4gIHByaXZhdGUgX2ZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbiA9IG51bGxcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IE1hcFZhbHVlKSB7XG4gICAgdGhpcy5fbWFwVmFsdWVNYW5hZ2VyLnNldFZhbHVlKHZhbHVlLCBNYXBWYWx1ZVNvdXJjZS5JbnB1dClcbiAgfVxuICBnZXQgdmFsdWUoKTogTWFwVmFsdWUge1xuICAgIHJldHVybiB0aGlzLl9tYXBWYWx1ZU1hbmFnZXIudmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7IHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIH1cbiAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7IHJldHVybiB0aGlzLl90YWJJbmRleCB9XG4gIC8qKlxuICAgKiBTZXQgdGhlIHRhYiBpbmRleCB0byBgLTFgIHRvIGFsbG93IHRoZSByb290IGVsZW1lbnQgb2YgdGhlXG4gICAqIGNvbXBvbmVudCB0byByZWNlaXZlIGBmb2N1c2AgZXZlbnQgZnJvbSBqYXZhc2NyaXB0LCBidXQgbm90IGdldCBmb2N1c2VkIGJ5XG4gICAqIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIF90YWJJbmRleCA9IC0xXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGZpbGVEcm9wRW5hYmxlZCA9IHRydWVcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGZ1bGxzY3JlZW5Db250cm9sRW5hYmxlZCA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHJlQ2VudGVyQ29udHJvbEVuYWJsZWQgPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBtYXBUeXBlQ29udHJvbEVuYWJsZWQgPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdHJlZXRWaWV3Q29udHJvbEVuYWJsZWQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uID0gZmFsc2VcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZWRpdGluZ0VuYWJsZWQgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IGZpbGVJbXBvcnRIYW5kbGVyKHZhbHVlOiAoKGZpbGU6IEZpbGUpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0RmlsZUlucHV0SGFuZGxlcih2YWx1ZSlcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBfYXR0ckRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBnZXQgX2F0dHJUYWJJbmRleCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6ICh0aGlzLnRhYkluZGV4IHx8IDApIH1cblxuICBvbkNoYW5nZTogYW55XG4gIG9uVG91Y2hlZDogYW55XG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgem9vbSA9IDE0XG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxvbmdpdHVkZSA9IC05OC41NzAyMDlcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbGF0aXR1ZGUgPSAzNy42MzM4MTRcblxuICBAT3V0cHV0KCkgbWFwUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICBAVmlld0NoaWxkKCdmZWF0dXJlQ29udGV4dE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogTWVudUNvbXBvbmVudCB9KSBwdWJsaWMgZmVhdHVyZUNvbnRleHRNZW51ITogTWVudUNvbXBvbmVudFxuXG4gIF9vcHRpb25zID0ge1xuICAgIG1hcFR5cGVDb250cm9sOiB0cnVlLFxuICAgIG1hcFR5cGVJZDogJ2h5YnJpZCcsXG4gICAgc3RyZWV0Vmlld0NvbnRyb2w6IGZhbHNlLFxuICAgIGZ1bGxzY3JlZW5Db250cm9sOiB0aGlzLmZ1bGxzY3JlZW5Db250cm9sRW5hYmxlZCxcbiAgfVxuXG4gIHJlYWRvbmx5IF9jb250ZXh0TWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxUaGVTZWFtTWFwQ29udGV4dE1lbnVJdGVtW10+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9nb29nbGVNYXBzOiBHb29nbGVNYXBzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tYXBWYWx1ZU1hbmFnZXI6IE1hcFZhbHVlTWFuYWdlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZ29vZ2xlTWFwc0FwaUxvYWRlcjogVGhlU2VhbUdvb2dsZU1hcHNBcGlMb2FkZXIsXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpXG5cbiAgICB0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCB0cnVlKS5waXBlKFxuICAgICAgdGFwKG9yaWdpbiA9PiB7IHRoaXMuX2ZvY3VzT3JpZ2luID0gb3JpZ2luIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuX21hcFZhbHVlTWFuYWdlci52YWx1ZUNoYW5nZWQucGlwZShcbiAgICAgIHRhcChjaGFuZ2UgPT4ge1xuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkgeyB0aGlzLm9uQ2hhbmdlKGNoYW5nZS52YWx1ZSkgfVxuICAgICAgICBpZiAodGhpcy5vblRvdWNoZWQpIHsgdGhpcy5vblRvdWNoZWQoKSB9XG4gICAgICB9KSxcbiAgICAgIHRhcChjaGFuZ2VkID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2dvb2dsZU1hcHMubWFwUmVhZHkgJiYgY2hhbmdlZC5zb3VyY2UgIT09IE1hcFZhbHVlU291cmNlLkZlYXR1cmVDaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLl9nb29nbGVNYXBzLnNldERhdGEoY2hhbmdlZC52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSksXG4gICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgdGhpcy5fY29udGV4dE1lbnVJdGVtcyQgPSB0aGlzLl9nb29nbGVNYXBzLmVkaXRpbmdFbmFibGVkJC5waXBlKFxuICAgICAgbWFwKGVuYWJsZWQgPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogVGhlU2VhbU1hcENvbnRleHRNZW51SXRlbVtdID0gW11cbiAgICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgICBpdGVtcy5wdXNoKHsgbGFiZWw6ICdEZWxldGUnLCBhY3Rpb246ICgpID0+IHRoaXMuX29uQ2xpY2tEZWxldGVGZWF0dXJlKCkgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXNcbiAgICAgIH0pLFxuICAgICAgdGFwKGl0ZW1zID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0RmVhdHVyZUNvbnRleHRNZW51KG51bGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRGZWF0dXJlQ29udGV4dE1lbnUodGhpcy5mZWF0dXJlQ29udGV4dE1lbnUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRCYXNlTGF0TG5nKHRoaXMubGF0aXR1ZGUsIHRoaXMubG9uZ2l0dWRlKVxuXG4gICAgdGhpcy5fZ21BcGlMb2FkZWQgPSB0aGlzLl9nb29nbGVNYXBzQXBpTG9hZGVyLmxvYWQoKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpLFxuICAgIClcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih3aW5kb3csICdrZXlkb3duJykucGlwZShcbiAgICAgIHRhcCgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICAgIGlmICh0aGlzLl9nb29nbGVNYXBzLmlzRWRpdGluZ0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICB0aGlzLl9nb29nbGVNYXBzLmRlbGV0ZVNlbGVjdGlvbigpXG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAnRXNjYXBlJzogdGhpcy5fZ29vZ2xlTWFwcy5zdG9wRHJhd2luZygpOyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgYnJlYWtcbiAgICAgICAgICBjYXNlICdDb250ZXh0TWVudSc6IHRoaXMuX2dvb2dsZU1hcHMub3BlbkNvbnRleHRNZW51KCk7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBicmVha1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSxcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZilcblxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgbGV0IHVwZGF0ZUJhc2UgPSBmYWxzZVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2xhdGl0dWRlJykpIHtcbiAgICAgIHRoaXMubGF0aXR1ZGUgPSBjaGFuZ2VzLmxhdGl0dWRlLmN1cnJlbnRWYWx1ZVxuICAgICAgdXBkYXRlQmFzZSA9IHRydWVcbiAgICB9XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnbG9uZ2l0dWRlJykpIHtcbiAgICAgIHRoaXMubG9uZ2l0dWRlID0gY2hhbmdlcy5sb25naXR1ZGUuY3VycmVudFZhbHVlXG4gICAgICB1cGRhdGVCYXNlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodXBkYXRlQmFzZSkge1xuICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRCYXNlTGF0TG5nKHRoaXMubGF0aXR1ZGUsIHRoaXMubG9uZ2l0dWRlKVxuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2FsbG93RHJhd2luZ0hvbGVJblBvbHlnb24nKSkge1xuICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5hbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uKHRoaXMuYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbilcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdmdWxsc2NyZWVuQ29udHJvbEVuYWJsZWQnKSkge1xuICAgICAgY29uc3QgZnVsbHNjcmVlbkNvbnRyb2wgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5mdWxsc2NyZWVuQ29udHJvbEVuYWJsZWQuY3VycmVudFZhbHVlKVxuICAgICAgaWYgKGZ1bGxzY3JlZW5Db250cm9sICE9PSB0aGlzLl9vcHRpb25zLmZ1bGxzY3JlZW5Db250cm9sKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB7XG4gICAgICAgICAgLi4udGhpcy5fb3B0aW9ucyxcbiAgICAgICAgICBmdWxsc2NyZWVuQ29udHJvbCxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2VkaXRpbmdFbmFibGVkJykpIHtcbiAgICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0RWRpdGluZ0VuYWJsZWQodGhpcy5lZGl0aW5nRW5hYmxlZClcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBNYXBWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuXG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmblxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG4gIH1cblxuICBwdWJsaWMgZml0Qm91bmRzKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzIHwgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzTGl0ZXJhbCwgcGFkZGluZz86IG51bWJlciB8IGdvb2dsZS5tYXBzLlBhZGRpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9nb29nbGVNYXBzLmZpdEJvdW5kcyhib3VuZHMsIHBhZGRpbmcpXG4gIH1cblxuICBwdWJsaWMgZ2V0R2VvSnNvbigpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXBzLmdldEdlb0pzb24oKVxuICB9XG5cbiAgcHVibGljIGhhc0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c09yaWdpbiAhPT0gbnVsbCAmJiB0aGlzLl9mb2N1c09yaWdpbiAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgYnV0dG9uLiAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cygpXG4gIH1cblxuICBwcml2YXRlIF9nZXRIb3N0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gIH1cblxuICBfb25NYXBSZWFkeSh0aGVNYXA6IGdvb2dsZS5tYXBzLk1hcCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0TWFwKHRoZU1hcClcbiAgICB0aGlzLl9nb29nbGVNYXBzLnNldERhdGEodGhpcy5fbWFwVmFsdWVNYW5hZ2VyLnZhbHVlKVxuICAgIC8vIE5PVEU6IEFnbU1hcCBoYXMgYSByYWNlIGNvbmRpdGlvbiBwcm9ibGVtIHRoYXQgY2F1c2VzIHRoZSBpbnB1dCBsYXRpdHVkZSxcbiAgICAvLyBsb25naXR1ZGUsIGFuZCB6b29tIHRvIGdldCBpZ25vcmVkLCBiZWZvcmUgZ29vZ2xlbWFwcyBlbWl0c1xuICAgIC8vICdjZW50ZXJfY2hhbmdlZCcuIFRoaXMgc2hvdWxkIGF2b2lkIHRoZSBpc3N1ZSwgdW50aWwgd2Ugc3RvcCB1c2luZyBBZ21NYXBcbiAgICAvLyBvciB1cGdyYWRlIHRvIGEgbW9yZSByZWNlbnQgdmVyc2lvbiB0aGF0IG1heSBub3QgaGF2ZSB0aGUgaXNzdWUgYW55bW9yZS5cbiAgICAvLyBUT0RPOiBDaGVjayBpZiB0aGUgc3dpdGNoIHRvICdAYW5ndWxhci9nb29nbGUtbWFwcycgZml4ZWQgdGhpcyBwcm9ibGVtLlxuICAgIHRoaXMuX2dvb2dsZU1hcHMucmVDZW50ZXJPbkZlYXR1cmVzKClcbiAgICB0aGlzLl9nb29nbGVNYXBzLmdvb2dsZU1hcD8uc2V0Wm9vbSh0aGlzLnpvb20pXG4gIH1cblxuICBfb25DbGlja0RlbGV0ZUZlYXR1cmUoKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5kZWxldGVTZWxlY3Rpb24oKVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJfZ21BcGlMb2FkZWQgfCBhc3luY1wiPlxuICA8Z29vZ2xlLW1hcFxuICAgIGhlaWdodD1cIjEwMCVcIlxuICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgW2NlbnRlcl09XCJ7IGxhdDogbGF0aXR1ZGUsIGxuZzogbG9uZ2l0dWRlIH1cIlxuICAgIFt6b29tXT1cInpvb21cIlxuICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAobWFwSW5pdGlhbGl6ZWQpPVwiX29uTWFwUmVhZHkoJGFueSgkZXZlbnQpKVwiXG4gICAgPlxuICA8L2dvb2dsZS1tYXA+XG48L25nLWNvbnRhaW5lcj5cbjxzZWFtLW1lbnUgI2ZlYXR1cmVDb250ZXh0TWVudT5cbiAgPGJ1dHRvbiBzZWFtTWVudUl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2NvbnRleHRNZW51SXRlbXMkIHwgYXN5bmNcIiAoY2xpY2spPVwiaXRlbS5hY3Rpb24oaXRlbSlcIj57eyBpdGVtLmxhYmVsIH19PC9idXR0b24+XG48L3NlYW0tbWVudT5cbjxzZWFtLW1hcC1maWxlLWRyb3AgKm5nSWY9XCJmaWxlRHJvcEVuYWJsZWRcIj48L3NlYW0tbWFwLWZpbGUtZHJvcD5cblxuPHNlYW0tbWFwLWNvbnRyb2wgKm5nSWY9XCJmaWxlVXBsb2FkQ29udHJvbEVuYWJsZWRcIiBbZGVmXT1cIl9maWxlVXBsb2FkQ29udHJvbERlZlwiPjwvc2VhbS1tYXAtY29udHJvbD5cbjxzZWFtLW1hcC1jb250cm9sICpuZ0lmPVwicmVDZW50ZXJDb250cm9sRW5hYmxlZFwiIFtkZWZdPVwiX3JlQ2VudGVyQ29udHJvbERlZlwiPjwvc2VhbS1tYXAtY29udHJvbD5cbiJdfQ==
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlHLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDOUUsT0FBTyxFQUE4QixZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzlHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUd2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMzRSxPQUFPLEVBQ0wsK0NBQStDLEdBQ2hELE1BQU0sc0ZBQXNGLENBQUE7QUFDN0YsT0FBTyxFQUNMLDZDQUE2QyxHQUM5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QjtzQkFBaEQsS0FBSztnQkFFbUIseUJBQXlCO3NCQUFqRCxLQUFLO2dCQUVtQixjQUFjO3NCQUF0QyxLQUFLO2dCQUdGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFNRixhQUFhO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBSXhCLGFBQWE7c0JBRGhCLFdBQVc7dUJBQUMsZUFBZTtnQkFNSixJQUFJO3NCQUEzQixLQUFLO2dCQUNrQixTQUFTO3NCQUFoQyxLQUFLO2dCQUNrQixRQUFRO3NCQUEvQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUV3RSxrQkFBa0I7c0JBQWhHLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFDcm9zc2hhaXJzLCBmYUZpbGVJbXBvcnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQgeyBDYW5EaXNhYmxlLCBDYW5EaXNhYmxlQ3RvciwgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciwgbWl4aW5EaXNhYmxlZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tZW51J1xuXG5pbXBvcnQgeyBUaGVTZWFtR29vZ2xlTWFwc0FwaUxvYWRlciB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLWFwaS1sb2FkZXIvZ29vZ2xlLW1hcHMtYXBpLWxvYWRlcidcbmltcG9ydCB7IEdvb2dsZU1hcHNDb250cm9sc1NlcnZpY2UgfSBmcm9tICcuLi9nb29nbGUtbWFwcy1jb250cm9scy5zZXJ2aWNlJ1xuaW1wb3J0IHtcbiAgVGhlU2VhbUdvb2dsZU1hcHNSZWNlbnRlckJ1dHRvbkNvbnRyb2xDb21wb25lbnQsXG59IGZyb20gJy4uL2dvb2dsZS1tYXBzLXJlY2VudGVyLWJ1dHRvbi1jb250cm9sL2dvb2dsZS1tYXBzLXJlY2VudGVyLWJ1dHRvbi1jb250cm9sLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIFRoZVNlYW1Hb29nbGVNYXBzVXBsb2FkQnV0dG9uQ29udHJvbENvbXBvbmVudCxcbn0gZnJvbSAnLi4vZ29vZ2xlLW1hcHMtdXBsb2FkLWJ1dHRvbi1jb250cm9sL2dvb2dsZS1tYXBzLXVwbG9hZC1idXR0b24tY29udHJvbC5jb21wb25lbnQnXG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXBDb250cm9sLCBNQVBfQ09OVFJPTFNfU0VSVklDRSB9IGZyb20gJy4uL21hcC1jb250cm9scy1zZXJ2aWNlJ1xuaW1wb3J0IHsgTWFwVmFsdWUsIE1hcFZhbHVlTWFuYWdlclNlcnZpY2UsIE1hcFZhbHVlU291cmNlIH0gZnJvbSAnLi4vbWFwLXZhbHVlLW1hbmFnZXIuc2VydmljZSdcblxuaW50ZXJmYWNlIFRoZVNlYW1NYXBDb250ZXh0TWVudUl0ZW0ge1xuICBsYWJlbDogc3RyaW5nXG4gIGFjdGlvbjogKGl0ZW06IFRoZVNlYW1NYXBDb250ZXh0TWVudUl0ZW0pID0+IHZvaWRcbn1cblxuY2xhc3MgVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnRCYXNlIHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbn1cblxuY29uc3QgX1RoZVNlYW1Hb29nbGVNYXBzTWl4aW5CYXNlOiBDYW5EaXNhYmxlQ3RvciAmXG4gIHR5cGVvZiBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudEJhc2UgPVxuICAgIG1peGluRGlzYWJsZWQoVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnRCYXNlKVxuXG4vKipcbiAqIEEgd3JhcHBlciBmb3IgZ29vZ2xlbWFwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWdvb2dsZS1tYXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dvb2dsZS1tYXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ29vZ2xlLW1hcHMuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbXG4gICAgJ2Rpc2FibGVkJyxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTWFwVmFsdWVNYW5hZ2VyU2VydmljZSxcbiAgICBHb29nbGVNYXBzU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IE1BUF9DT05UUk9MU19TRVJWSUNFLCB1c2VDbGFzczogR29vZ2xlTWFwc0NvbnRyb2xzU2VydmljZSB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZXhwb3J0QXM6ICdzZWFtR29vZ2xlTWFwcycsXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1Hb29nbGVNYXBzQ29tcG9uZW50IGV4dGVuZHMgX1RoZVNlYW1Hb29nbGVNYXBzTWl4aW5CYXNlXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQ2FuRGlzYWJsZSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV96b29tOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbG9uZ2l0dWRlOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGF0aXR1ZGU6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9maWxlRHJvcEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Z1bGxzY3JlZW5Db250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZUNlbnRlckNvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX21hcFR5cGVDb250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdHJlZXRWaWV3Q29udHJvbEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbjogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9lZGl0aW5nRW5hYmxlZDogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICByZWFkb25seSBfZ21BcGlMb2FkZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICByZWFkb25seSBfZmlsZVVwbG9hZENvbnRyb2xEZWY6IE1hcENvbnRyb2wgPSB7XG4gICAgY29tcG9uZW50OiBUaGVTZWFtR29vZ2xlTWFwc1VwbG9hZEJ1dHRvbkNvbnRyb2xDb21wb25lbnQsXG4gICAgZGF0YTogeyBsYWJlbDogJ0ltcG9ydCBHZW8gRmlsZScsIGljb246IGZhRmlsZUltcG9ydCB9LFxuICAgIHBvc2l0aW9uOiA2IC8qIGdvb2dsZS5tYXBzLkNvbnRyb2xQb3NpdGlvbi5MRUZUX0JPVFRPTSAqLyxcbiAgfVxuXG4gIHJlYWRvbmx5IF9yZUNlbnRlckNvbnRyb2xEZWY6IE1hcENvbnRyb2wgPSB7XG4gICAgY29tcG9uZW50OiBUaGVTZWFtR29vZ2xlTWFwc1JlY2VudGVyQnV0dG9uQ29udHJvbENvbXBvbmVudCxcbiAgICBkYXRhOiB7IGxhYmVsOiAnQ2VudGVyIG9uIEZpZWxkJywgaWNvbjogZmFDcm9zc2hhaXJzIH0sXG4gICAgcG9zaXRpb246IDkgLyogZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uLlJJR0hUX0JPVFRPTSAqLyxcbiAgfVxuXG4gIHByaXZhdGUgX2ZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbiA9IG51bGxcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IE1hcFZhbHVlKSB7XG4gICAgdGhpcy5fbWFwVmFsdWVNYW5hZ2VyLnNldFZhbHVlKHZhbHVlLCBNYXBWYWx1ZVNvdXJjZS5JbnB1dClcbiAgfVxuICBnZXQgdmFsdWUoKTogTWFwVmFsdWUge1xuICAgIHJldHVybiB0aGlzLl9tYXBWYWx1ZU1hbmFnZXIudmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7IHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIH1cbiAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7IHJldHVybiB0aGlzLl90YWJJbmRleCB9XG4gIC8qKlxuICAgKiBTZXQgdGhlIHRhYiBpbmRleCB0byBgLTFgIHRvIGFsbG93IHRoZSByb290IGVsZW1lbnQgb2YgdGhlXG4gICAqIGNvbXBvbmVudCB0byByZWNlaXZlIGBmb2N1c2AgZXZlbnQgZnJvbSBqYXZhc2NyaXB0LCBidXQgbm90IGdldCBmb2N1c2VkIGJ5XG4gICAqIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIF90YWJJbmRleCA9IC0xXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGZpbGVEcm9wRW5hYmxlZCA9IHRydWVcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGZ1bGxzY3JlZW5Db250cm9sRW5hYmxlZCA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHJlQ2VudGVyQ29udHJvbEVuYWJsZWQgPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBtYXBUeXBlQ29udHJvbEVuYWJsZWQgPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdHJlZXRWaWV3Q29udHJvbEVuYWJsZWQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uID0gZmFsc2VcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZWRpdGluZ0VuYWJsZWQgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IGZpbGVJbXBvcnRIYW5kbGVyKHZhbHVlOiAoKGZpbGU6IEZpbGUpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0RmlsZUlucHV0SGFuZGxlcih2YWx1ZSlcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBfYXR0ckRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBnZXQgX2F0dHJUYWJJbmRleCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6ICh0aGlzLnRhYkluZGV4IHx8IDApIH1cblxuICBvbkNoYW5nZTogYW55XG4gIG9uVG91Y2hlZDogYW55XG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgem9vbSA9IDE0XG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxvbmdpdHVkZSA9IC05OC41NzAyMDlcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbGF0aXR1ZGUgPSAzNy42MzM4MTRcblxuICBASW5wdXQoKSBwYWRkaW5nOiBudW1iZXIgfCBnb29nbGUubWFwcy5QYWRkaW5nIHwgdW5kZWZpbmVkID0gMFxuXG4gIEBPdXRwdXQoKSBtYXBSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Z29vZ2xlLm1hcHMuTWFwIHwgdW5kZWZpbmVkPigpXG5cbiAgQFZpZXdDaGlsZCgnZmVhdHVyZUNvbnRleHRNZW51JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IE1lbnVDb21wb25lbnQgfSkgcHVibGljIGZlYXR1cmVDb250ZXh0TWVudSE6IE1lbnVDb21wb25lbnRcblxuICBfb3B0aW9ucyA9IHtcbiAgICBtYXBUeXBlQ29udHJvbDogdHJ1ZSxcbiAgICBtYXBUeXBlSWQ6ICdoeWJyaWQnLFxuICAgIHN0cmVldFZpZXdDb250cm9sOiBmYWxzZSxcbiAgICBmdWxsc2NyZWVuQ29udHJvbDogdGhpcy5mdWxsc2NyZWVuQ29udHJvbEVuYWJsZWQsXG4gIH1cblxuICByZWFkb25seSBfY29udGV4dE1lbnVJdGVtcyQ6IE9ic2VydmFibGU8VGhlU2VhbU1hcENvbnRleHRNZW51SXRlbVtdPlxuXG4gIHByaXZhdGUgaWRsZUxpc3RlbmVyOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lciB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZ29vZ2xlTWFwczogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWFwVmFsdWVNYW5hZ2VyOiBNYXBWYWx1ZU1hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2dvb2dsZU1hcHNBcGlMb2FkZXI6IFRoZVNlYW1Hb29nbGVNYXBzQXBpTG9hZGVyLFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKVxuXG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSkucGlwZShcbiAgICAgIHRhcChvcmlnaW4gPT4geyB0aGlzLl9mb2N1c09yaWdpbiA9IG9yaWdpbiB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSxcbiAgICApLnN1YnNjcmliZSgpXG5cbiAgICB0aGlzLl9tYXBWYWx1ZU1hbmFnZXIudmFsdWVDaGFuZ2VkLnBpcGUoXG4gICAgICB0YXAoY2hhbmdlID0+IHtcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHsgdGhpcy5vbkNoYW5nZShjaGFuZ2UudmFsdWUpIH1cbiAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7IHRoaXMub25Ub3VjaGVkKCkgfVxuICAgICAgfSksXG4gICAgICB0YXAoY2hhbmdlZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9nb29nbGVNYXBzLm1hcFJlYWR5ICYmIGNoYW5nZWQuc291cmNlICE9PSBNYXBWYWx1ZVNvdXJjZS5GZWF0dXJlQ2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXREYXRhKGNoYW5nZWQudmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuX2NvbnRleHRNZW51SXRlbXMkID0gdGhpcy5fZ29vZ2xlTWFwcy5lZGl0aW5nRW5hYmxlZCQucGlwZShcbiAgICAgIG1hcChlbmFibGVkID0+IHtcbiAgICAgICAgY29uc3QgaXRlbXM6IFRoZVNlYW1NYXBDb250ZXh0TWVudUl0ZW1bXSA9IFtdXG4gICAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7IGxhYmVsOiAnRGVsZXRlJywgYWN0aW9uOiAoKSA9PiB0aGlzLl9vbkNsaWNrRGVsZXRlRmVhdHVyZSgpIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zXG4gICAgICB9KSxcbiAgICAgIHRhcChpdGVtcyA9PiB7XG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9nb29nbGVNYXBzLnNldEZlYXR1cmVDb250ZXh0TWVudShudWxsKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0RmVhdHVyZUNvbnRleHRNZW51KHRoaXMuZmVhdHVyZUNvbnRleHRNZW51KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0QmFzZUxhdExuZyh0aGlzLmxhdGl0dWRlLCB0aGlzLmxvbmdpdHVkZSlcblxuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0UGFkZGluZyh0aGlzLnBhZGRpbmcpXG5cbiAgICB0aGlzLl9nbUFwaUxvYWRlZCA9IHRoaXMuX2dvb2dsZU1hcHNBcGlMb2FkZXIubG9hZCgpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKGZhbHNlKSksXG4gICAgKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHdpbmRvdywgJ2tleWRvd24nKS5waXBlKFxuICAgICAgdGFwKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgICAgaWYgKHRoaXMuX2dvb2dsZU1hcHMuaXNFZGl0aW5nRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2dvb2dsZU1hcHMuZGVsZXRlU2VsZWN0aW9uKClcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICdFc2NhcGUnOiB0aGlzLl9nb29nbGVNYXBzLnN0b3BEcmF3aW5nKCk7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBicmVha1xuICAgICAgICAgIGNhc2UgJ0NvbnRleHRNZW51JzogdGhpcy5fZ29vZ2xlTWFwcy5vcGVuQ29udGV4dE1lbnUoKTsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKVxuXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBsZXQgdXBkYXRlQmFzZSA9IGZhbHNlXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnbGF0aXR1ZGUnKSkge1xuICAgICAgdGhpcy5sYXRpdHVkZSA9IGNoYW5nZXMubGF0aXR1ZGUuY3VycmVudFZhbHVlXG4gICAgICB1cGRhdGVCYXNlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdsb25naXR1ZGUnKSkge1xuICAgICAgdGhpcy5sb25naXR1ZGUgPSBjaGFuZ2VzLmxvbmdpdHVkZS5jdXJyZW50VmFsdWVcbiAgICAgIHVwZGF0ZUJhc2UgPSB0cnVlXG4gICAgfVxuICAgIGlmICh1cGRhdGVCYXNlKSB7XG4gICAgICB0aGlzLl9nb29nbGVNYXBzLnNldEJhc2VMYXRMbmcodGhpcy5sYXRpdHVkZSwgdGhpcy5sb25naXR1ZGUpXG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbicpKSB7XG4gICAgICB0aGlzLl9nb29nbGVNYXBzLmFsbG93RHJhd2luZ0hvbGVJblBvbHlnb24odGhpcy5hbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uKVxuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2Z1bGxzY3JlZW5Db250cm9sRW5hYmxlZCcpKSB7XG4gICAgICBjb25zdCBmdWxsc2NyZWVuQ29udHJvbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShjaGFuZ2VzLmZ1bGxzY3JlZW5Db250cm9sRW5hYmxlZC5jdXJyZW50VmFsdWUpXG4gICAgICBpZiAoZnVsbHNjcmVlbkNvbnRyb2wgIT09IHRoaXMuX29wdGlvbnMuZnVsbHNjcmVlbkNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi50aGlzLl9vcHRpb25zLFxuICAgICAgICAgIGZ1bGxzY3JlZW5Db250cm9sLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnZWRpdGluZ0VuYWJsZWQnKSkge1xuICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRFZGl0aW5nRW5hYmxlZCh0aGlzLmVkaXRpbmdFbmFibGVkKVxuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ3BhZGRpbmcnKSkge1xuICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRQYWRkaW5nKHRoaXMucGFkZGluZylcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBNYXBWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuXG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmblxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG4gIH1cblxuICBwdWJsaWMgZml0Qm91bmRzKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzIHwgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzTGl0ZXJhbCwgcGFkZGluZz86IG51bWJlciB8IGdvb2dsZS5tYXBzLlBhZGRpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9nb29nbGVNYXBzLmZpdEJvdW5kcyhib3VuZHMsIHBhZGRpbmcpXG4gIH1cblxuICBwdWJsaWMgZ2V0R2VvSnNvbigpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXBzLmdldEdlb0pzb24oKVxuICB9XG5cbiAgcHVibGljIGhhc0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c09yaWdpbiAhPT0gbnVsbCAmJiB0aGlzLl9mb2N1c09yaWdpbiAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgYnV0dG9uLiAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cygpXG4gIH1cblxuICBwcml2YXRlIF9nZXRIb3N0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gIH1cblxuICBfb25NYXBSZWFkeSh0aGVNYXA6IGdvb2dsZS5tYXBzLk1hcCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0TWFwKHRoZU1hcClcbiAgICB0aGlzLl9nb29nbGVNYXBzLnNldERhdGEodGhpcy5fbWFwVmFsdWVNYW5hZ2VyLnZhbHVlKVxuXG4gICAgLy8gTk9URTogVGhlIGlucHV0IHpvb20gbGV2ZWwgd2FzIGdldHRpbmcgcmVzZXQgYWZ0ZXIgdGhpcyBmdW5jdGlvbiByYW4sXG4gICAgLy8gc28gcHV0dGluZyBpbiB0aGlzIGlkbGUgbGlzdGVuZXIgdG8gd2FpdCB1bnRpbCB0aGUgbWFwIGlzIGZ1bGx5IHJlbmRlcmVkXG4gICAgLy8gdG8gc2V0IHRoZSB6b29tLlxuICAgIC8vIENhbGxpbmcgcmVDZW50ZXJPbkZlYXR1cmVzKCkgYWZ0ZXIgc2V0Wm9vbSgpIGVuc3VyZXMgdGhhdCBtYXBzIHdpdGggcHJlLWRyYXduIHNoYXBlc1xuICAgIC8vIHdpbGwgZGlzcGxheSBjb3JyZWN0bHlcbiAgICB0aGlzLmlkbGVMaXN0ZW5lciA9IHRoaXMuX2dvb2dsZU1hcHMuZ29vZ2xlTWFwPy5hZGRMaXN0ZW5lcignaWRsZScsICgpID0+IHtcbiAgICAgIHRoaXMuX2dvb2dsZU1hcHMuZ29vZ2xlTWFwPy5zZXRab29tKHRoaXMuem9vbSlcbiAgICAgIHRoaXMuX2dvb2dsZU1hcHMucmVDZW50ZXJPbkZlYXR1cmVzKClcbiAgICAgIHRoaXMubWFwUmVhZHkuZW1pdCh0aGlzLl9nb29nbGVNYXBzLmdvb2dsZU1hcClcblxuICAgICAgdGhpcy5pZGxlTGlzdGVuZXI/LnJlbW92ZSgpXG4gICAgfSlcblxuICB9XG5cbiAgX29uQ2xpY2tEZWxldGVGZWF0dXJlKCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuZGVsZXRlU2VsZWN0aW9uKClcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiX2dtQXBpTG9hZGVkIHwgYXN5bmNcIj5cbiAgPGdvb2dsZS1tYXBcbiAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICB3aWR0aD1cIjEwMCVcIlxuICAgIFtjZW50ZXJdPVwieyBsYXQ6IGxhdGl0dWRlLCBsbmc6IGxvbmdpdHVkZSB9XCJcbiAgICBbem9vbV09XCJ6b29tXCJcbiAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgKG1hcEluaXRpYWxpemVkKT1cIl9vbk1hcFJlYWR5KCRhbnkoJGV2ZW50KSlcIlxuICAgID5cbiAgPC9nb29nbGUtbWFwPlxuPC9uZy1jb250YWluZXI+XG48c2VhbS1tZW51ICNmZWF0dXJlQ29udGV4dE1lbnU+XG4gIDxidXR0b24gc2VhbU1lbnVJdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9jb250ZXh0TWVudUl0ZW1zJCB8IGFzeW5jXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uKGl0ZW0pXCI+e3sgaXRlbS5sYWJlbCB9fTwvYnV0dG9uPlxuPC9zZWFtLW1lbnU+XG48c2VhbS1tYXAtZmlsZS1kcm9wICpuZ0lmPVwiZmlsZURyb3BFbmFibGVkXCI+PC9zZWFtLW1hcC1maWxlLWRyb3A+XG5cbjxzZWFtLW1hcC1jb250cm9sICpuZ0lmPVwiZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkXCIgW2RlZl09XCJfZmlsZVVwbG9hZENvbnRyb2xEZWZcIj48L3NlYW0tbWFwLWNvbnRyb2w+XG48c2VhbS1tYXAtY29udHJvbCAqbmdJZj1cInJlQ2VudGVyQ29udHJvbEVuYWJsZWRcIiBbZGVmXT1cIl9yZUNlbnRlckNvbnRyb2xEZWZcIj48L3NlYW0tbWFwLWNvbnRyb2w+XG4iXX0=
@@ -66,6 +66,7 @@ export class TheSeamLazyMapsApiLoader extends TheSeamGoogleMapsApiLoader {
66
66
  libraries: this._config.libraries,
67
67
  region: this._config.region,
68
68
  language: this._config.language || (this._localeId !== 'en-US' ? this._localeId : null),
69
+ loading: this._config.loading || 'async'
69
70
  };
70
71
  const params = Object.keys(queryParams)
71
72
  // Remove undefined or null params.
@@ -100,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
100
101
  type: Inject,
101
102
  args: [THESEAM_LAZY_MAPS_API_CONFIG]
102
103
  }] }]; } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1nb29nbGUtbWFwcy1hcGktbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzLWFwaS1sb2FkZXIvbGF6eS1nb29nbGUtbWFwcy1hcGktbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRTNDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQVNyRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBaUMsOEJBQThCLENBQUMsQ0FBQTtBQTREOUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLDBCQUEwQjtJQU10RSxZQUNzQyxTQUFpQixFQUNNLE1BQXVDO1FBRWxHLEtBQUssRUFBRSxDQUFBO1FBSDZCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDTSxXQUFNLEdBQU4sTUFBTSxDQUFpQztRQUxqRixlQUFVLEdBQVcseUJBQXlCLENBQUE7UUFDOUMsaUJBQVksR0FBVywrQkFBK0IsQ0FBQTtRQU92RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDdkMsMENBQTBDO1lBQzFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3JCO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFD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QUksV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztZQUMvRSx1QkFBdUI7YUFDdEIsTUFBTSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ2xELENBQUMsQ0FBQztZQUNGLDBDQUEwQzthQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRTtZQUNqQixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBb0MsQ0FBQTtRQUM1RyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxLQUFxQyxFQUFFLEVBQUU7WUFDN0MsT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3RDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVaLE9BQU8sR0FBRyxXQUFXLElBQUksTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQzs7cUhBNUZVLHdCQUF3QixrQkFPekIsU0FBUyxhQUNHLDRCQUE0Qjt5SEFSdkMsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVU7OzBCQVFOLE1BQU07MkJBQUMsU0FBUzs7MEJBQ2hCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5cbmltcG9ydCB7IFRoZVNlYW1Hb29nbGVNYXBzQXBpTG9hZGVyIH0gZnJvbSAnLi9nb29nbGUtbWFwcy1hcGktbG9hZGVyJ1xuXG5pbnRlcmZhY2UgR29vZ2xlTWFwc1dpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIGdtX2F1dGhGYWlsdXJlPzogKCkgPT4gdm9pZFxuICBnb29nbGU/OiB0eXBlb2YgZ29vZ2xlXG59XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBHb29nbGVNYXBzV2luZG93XG5cbi8qKlxuICogVG9rZW4gZm9yIHRoZSBjb25maWcgb2YgdGhlIExhenlNYXBzQVBJTG9hZGVyLiBQbGVhc2UgcHJvdmlkZSBhbiBvYmplY3Qgb2ZcbiAqIHR5cGUge0BsaW5rIFRoZVNlYW1MYXp5TWFwc0FwaUxvYWRlcn0uXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0xBWllfTUFQU19BUElfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRoZVNlYW1MYXp5TWFwc0FwaUxvYWRlckNvbmZpZz4oJ1RIRVNFQU1fTEFaWV9NQVBTX0FQSV9DT05GSUcnKVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB7QGxpbmsgVGhlU2VhbUxhenlNYXBzQXBpTG9hZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtTGF6eU1hcHNBcGlMb2FkZXJDb25maWcge1xuICAvKipcbiAgICogVGhlIEdvb2dsZSBNYXBzIEFQSSBLZXkgKHNlZTpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvZ2V0LWFwaS1rZXkpXG4gICAqL1xuICBhcGlLZXk/OiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIEdvb2dsZSBNYXBzIGNsaWVudCBJRCAoZm9yIHByZW1pdW0gcGxhbnMpLiBXaGVuIHlvdSBoYXZlIGEgR29vZ2xlIE1hcHNcbiAgICogQVBJcyBQcmVtaXVtIFBsYW4gbGljZW5zZSwgeW91IG11c3QgYXV0aGVudGljYXRlIHlvdXIgYXBwbGljYXRpb24gd2l0aFxuICAgKiBlaXRoZXIgYW4gQVBJIGtleSBvciBhIGNsaWVudCBJRC4gVGhlIEdvb2dsZSBNYXBzIEFQSSB3aWxsIGZhaWwgdG8gbG9hZCBpZlxuICAgKiBib3RoIGEgY2xpZW50IElEIGFuZCBhbiBBUEkga2V5IGFyZSBpbmNsdWRlZC5cbiAgICovXG4gIGNsaWVudElkPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBHb29nbGUgTWFwcyBjaGFubmVsIG5hbWUgKGZvciBwcmVtaXVtIHBsYW5zKS4gQSBjaGFubmVsIHBhcmFtZXRlciBpcyBhblxuICAgKiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgeW91IHRvIHRyYWNrIHVzYWdlIHVuZGVyIHlvdXIgY2xpZW50IElEIGJ5XG4gICAqIGFzc2lnbmluZyBhIGRpc3RpbmN0IGNoYW5uZWwgdG8gZWFjaCBvZiB5b3VyIGFwcGxpY2F0aW9ucy5cbiAgICovXG4gIGNoYW5uZWw/OiBzdHJpbmdcblxuICAvKipcbiAgICogR29vZ2xlIE1hcHMgQVBJIHZlcnNpb24uXG4gICAqL1xuICBhcGlWZXJzaW9uPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFVybCB1c2VkIGZvciB0aGUgYDxzY3JpcHQ+YCB0YWcuXG4gICAqL1xuICB1cmw/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGljaCBHb29nbGUgTWFwcyBsaWJyYXJpZXMgc2hvdWxkIGdldCBsb2FkZWQuXG4gICAqL1xuICBsaWJyYXJpZXM/OiBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiaWFzIGZvciB0aGUgbWFwIGJlaGF2aW9yIGlzIFVTLiBJZiB5b3Ugd2lzaCB0byBhbHRlciB5b3VyXG4gICAqIGFwcGxpY2F0aW9uIHRvIHNlcnZlIGRpZmZlcmVudCBtYXAgdGlsZXMgb3IgYmlhcyB0aGUgYXBwbGljYXRpb24sIHlvdSBjYW5cbiAgICogb3ZlcndyaXRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIChVUykgYnkgZGVmaW5pbmcgYSBgcmVnaW9uYC4gU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2Jhc2ljcyNSZWdpb25cbiAgICovXG4gIHJlZ2lvbj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgR29vZ2xlIE1hcHMgQVBJIHVzZXMgdGhlIGJyb3dzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2Ugd2hlbiBkaXNwbGF5aW5nXG4gICAqIHRleHR1YWwgaW5mb3JtYXRpb24uIElmIHlvdSB3aXNoIHRvIG92ZXJ3cml0ZSB0aGlzIGJlaGF2aW9yIGFuZCBmb3JjZSB0aGVcbiAgICogQVBJIHRvIHVzZSBhIGdpdmVuIGxhbmd1YWdlLCB5b3UgY2FuIHVzZSB0aGlzIHNldHRpbmcuIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9iYXNpY3MjTGFuZ3VhZ2VcbiAgICovXG4gIGxhbmd1YWdlPzogc3RyaW5nXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaGVTZWFtTGF6eU1hcHNBcGlMb2FkZXIgZXh0ZW5kcyBUaGVTZWFtR29vZ2xlTWFwc0FwaUxvYWRlciB7XG4gIHByb3RlY3RlZCBfc2NyaXB0TG9hZGluZ1Byb21pc2U/OiBQcm9taXNlPHZvaWQ+XG4gIHByb3RlY3RlZCByZWFkb25seSBfY29uZmlnOiBUaGVTZWFtTGF6eU1hcHNBcGlMb2FkZXJDb25maWdcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9TQ1JJUFRfSUQ6IHN0cmluZyA9ICdzZWFtR29vZ2xlTWFwc0FwaVNjcmlwdCdcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGxiYWNrTmFtZTogc3RyaW5nID0gYF9fc2VhbUxhenlHb29nbGVNYXBzQXBpTG9hZGVyYFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGVJZDogc3RyaW5nLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9MQVpZX01BUFNfQVBJX0NPTkZJRykgcmVhZG9ubHkgY29uZmlnPzogVGhlU2VhbUxhenlNYXBzQXBpTG9hZGVyQ29uZmlnLFxuICApIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnIHx8IHt9XG4gIH1cblxuICBwdWJsaWMgbG9hZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAod2luZG93Lmdvb2dsZSAmJiB3aW5kb3cuZ29vZ2xlLm1hcHMpIHtcbiAgICAgIC8vIEdvb2dsZSBtYXBzIGFscmVhZHkgbG9hZGVkIG9uIHRoZSBwYWdlLlxuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2NyaXB0TG9hZGluZ1Byb21pc2UpIHtcbiAgICAgIHJldHVybiBmcm9tKHRoaXMuX3NjcmlwdExvYWRpbmdQcm9taXNlKVxuICAgIH1cblxuICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpbiBITVIgc2l0dWF0aW9ucyBvciBTdGFja2JsaXR6LmlvIGVkaXRvcnMuXG4gICAgY29uc3Qgc2NyaXB0T25QYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5fU0NSSVBUX0lEKVxuICAgIGlmIChzY3JpcHRPblBhZ2UpIHtcbiAgICAgIHRoaXMuX2Fzc2lnblNjcmlwdExvYWRpbmdQcm9taXNlKHNjcmlwdE9uUGFnZSlcbiAgICAgIHJldHVybiBmcm9tKHRoaXMuX2dldFNjcmlwdExvYWRpbmdQcm9taXNlKCkpXG4gICAgfVxuXG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcbiAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnXG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZVxuICAgIHNjcmlwdC5kZWZlciA9IHRydWVcbiAgICBzY3JpcHQuaWQgPSB0aGlzLl9TQ1JJUFRfSURcbiAgICBzY3JpcHQuc3JjID0gdGhpcy5fZ2V0U2NyaXB0U3JjKHRoaXMuY2FsbGJhY2tOYW1lKVxuICAgIHRoaXMuX2Fzc2lnblNjcmlwdExvYWRpbmdQcm9taXNlKHNjcmlwdClcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdClcbiAgICByZXR1cm4gZnJvbSh0aGlzLl9nZXRTY3JpcHRMb2FkaW5nUHJvbWlzZSgpKVxuICB9XG5cbiAgcHJpdmF0ZSBfYXNzaWduU2NyaXB0TG9hZGluZ1Byb21pc2Uoc2NyaXB0RWxlbTogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9zY3JpcHRMb2FkaW5nUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHdpbiA9IHdpbmRvdyBhcyBhbnlcbiAgICAgIHdpblt0aGlzLmNhbGxiYWNrTmFtZV0gPSAoKSA9PiB7IHJlc29sdmUoKSB9XG5cbiAgICAgIHNjcmlwdEVsZW0ub25lcnJvciA9IChlcnJvcjogRXZlbnQgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9nZXRTY3JpcHRMb2FkaW5nUHJvbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3NjcmlwdExvYWRpbmdQcm9taXNlKSB7XG4gICAgICB0aHJvdyBFcnJvcihgX3NjcmlwdExvYWRpbmdQcm9taXNlIGhhcyBub3QgYmVlbiBhc3NpZ25lZC5gKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2NyaXB0TG9hZGluZ1Byb21pc2VcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0U2NyaXB0U3JjKGNhbGxiYWNrTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBob3N0QW5kUGF0aDogc3RyaW5nID0gdGhpcy5fY29uZmlnLnVybCB8fCAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzJ1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCB9ID0ge1xuICAgICAgdjogdGhpcy5fY29uZmlnLmFwaVZlcnNpb24gfHwgJ3F1YXJ0ZXJseScsXG4gICAgICBjYWxsYmFjazogY2FsbGJhY2tOYW1lLFxuICAgICAga2V5OiB0aGlzLl9jb25maWcuYXBpS2V5LFxuICAgICAgY2xpZW50OiB0aGlzLl9jb25maWcuY2xpZW50SWQsXG4gICAgICBjaGFubmVsOiB0aGlzLl9jb25maWcuY2hhbm5lbCxcbiAgICAgIGxpYnJhcmllczogdGhpcy5fY29uZmlnLmxpYnJhcmllcyxcbiAgICAgIHJlZ2lvbjogdGhpcy5fY29uZmlnLnJlZ2lvbixcbiAgICAgIGxhbmd1YWdlOiB0aGlzLl9jb25maWcubGFuZ3VhZ2UgfHwgKHRoaXMuX2xvY2FsZUlkICE9PSAnZW4tVVMnID8gdGhpcy5fbG9jYWxlSWQgOiBudWxsKSxcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXM6IHN0cmluZyA9IE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKVxuICAgICAgLy8gUmVtb3ZlIHVuZGVmaW5lZCBvciBudWxsIHBhcmFtcy5cbiAgICAgIC5maWx0ZXIoKGs6IHN0cmluZykgPT4gcXVlcnlQYXJhbXNba10gIT09IHVuZGVmaW5lZCAmJiBxdWVyeVBhcmFtc1trXSAhPT0gbnVsbClcbiAgICAgIC8vIFJlbW92ZSBlbXB0eSBhcnJheXMuXG4gICAgICAuZmlsdGVyKChrOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW0gPSBxdWVyeVBhcmFtc1trXVxuICAgICAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkocGFyYW0pIHx8IHBhcmFtLmxlbmd0aCA+IDBcbiAgICAgIH0pXG4gICAgICAvLyBKb2luIGFycmF5cyBhcyBjb21tYSBzZXBlcmF0ZWQgc3RyaW5ncy5cbiAgICAgIC5tYXAoKGs6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbSA9IHF1ZXJ5UGFyYW1zW2tdXG4gICAgICAgIHJldHVybiB7IGtleTogaywgdmFsdWU6IEFycmF5LmlzQXJyYXkocGFyYW0pID8gcGFyYW0uam9pbignLCcpIDogcGFyYW0gfSBhcyB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1cbiAgICAgIH0pXG4gICAgICAubWFwKChlbnRyeTogeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlbnRyeS5rZXl9PSR7ZW50cnkudmFsdWV9YFxuICAgICAgfSlcbiAgICAgIC5qb2luKCcmJylcblxuICAgIHJldHVybiBgJHtob3N0QW5kUGF0aH0/JHtwYXJhbXN9YFxuICB9XG59XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1nb29nbGUtbWFwcy1hcGktbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzLWFwaS1sb2FkZXIvbGF6eS1nb29nbGUtbWFwcy1hcGktbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRTNDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQVNyRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBaUMsOEJBQThCLENBQUMsQ0FBQTtBQThEOUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLDBCQUEwQjtJQU10RSxZQUNzQyxTQUFpQixFQUNNLE1BQXVDO1FBRWxHLEtBQUssRUFBRSxDQUFBO1FBSDZCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDTSxXQUFNLEdBQU4sTUFBTSxDQUFpQztRQUxqRixlQUFVLEdBQVcseUJBQXlCLENBQUE7UUFDOUMsaUJBQVksR0FBVywrQkFBK0IsQ0FBQTtRQU92RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDdkMsMENBQTBDO1lBQzFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3JCO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFD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b3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTE9DQUxFX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5cbmltcG9ydCB7IFRoZVNlYW1Hb29nbGVNYXBzQXBpTG9hZGVyIH0gZnJvbSAnLi9nb29nbGUtbWFwcy1hcGktbG9hZGVyJ1xuXG5pbnRlcmZhY2UgR29vZ2xlTWFwc1dpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIGdtX2F1dGhGYWlsdXJlPzogKCkgPT4gdm9pZFxuICBnb29nbGU/OiB0eXBlb2YgZ29vZ2xlXG59XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBHb29nbGVNYXBzV2luZG93XG5cbi8qKlxuICogVG9rZW4gZm9yIHRoZSBjb25maWcgb2YgdGhlIExhenlNYXBzQVBJTG9hZGVyLiBQbGVhc2UgcHJvdmlkZSBhbiBvYmplY3Qgb2ZcbiAqIHR5cGUge0BsaW5rIFRoZVNlYW1MYXp5TWFwc0FwaUxvYWRlcn0uXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVTRUFNX0xBWllfTUFQU19BUElfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRoZVNlYW1MYXp5TWFwc0FwaUxvYWRlckNvbmZpZz4oJ1RIRVNFQU1fTEFaWV9NQVBTX0FQSV9DT05GSUcnKVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB7QGxpbmsgVGhlU2VhbUxhenlNYXBzQXBpTG9hZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtTGF6eU1hcHNBcGlMb2FkZXJDb25maWcge1xuICAvKipcbiAgICogVGhlIEdvb2dsZSBNYXBzIEFQSSBLZXkgKHNlZTpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvZ2V0LWFwaS1rZXkpXG4gICAqL1xuICBhcGlLZXk/OiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIEdvb2dsZSBNYXBzIGNsaWVudCBJRCAoZm9yIHByZW1pdW0gcGxhbnMpLiBXaGVuIHlvdSBoYXZlIGEgR29vZ2xlIE1hcHNcbiAgICogQVBJcyBQcmVtaXVtIFBsYW4gbGljZW5zZSwgeW91IG11c3QgYXV0aGVudGljYXRlIHlvdXIgYXBwbGljYXRpb24gd2l0aFxuICAgKiBlaXRoZXIgYW4gQVBJIGtleSBvciBhIGNsaWVudCBJRC4gVGhlIEdvb2dsZSBNYXBzIEFQSSB3aWxsIGZhaWwgdG8gbG9hZCBpZlxuICAgKiBib3RoIGEgY2xpZW50IElEIGFuZCBhbiBBUEkga2V5IGFyZSBpbmNsdWRlZC5cbiAgICovXG4gIGNsaWVudElkPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBHb29nbGUgTWFwcyBjaGFubmVsIG5hbWUgKGZvciBwcmVtaXVtIHBsYW5zKS4gQSBjaGFubmVsIHBhcmFtZXRlciBpcyBhblxuICAgKiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgeW91IHRvIHRyYWNrIHVzYWdlIHVuZGVyIHlvdXIgY2xpZW50IElEIGJ5XG4gICAqIGFzc2lnbmluZyBhIGRpc3RpbmN0IGNoYW5uZWwgdG8gZWFjaCBvZiB5b3VyIGFwcGxpY2F0aW9ucy5cbiAgICovXG4gIGNoYW5uZWw/OiBzdHJpbmdcblxuICAvKipcbiAgICogR29vZ2xlIE1hcHMgQVBJIHZlcnNpb24uXG4gICAqL1xuICBhcGlWZXJzaW9uPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFVybCB1c2VkIGZvciB0aGUgYDxzY3JpcHQ+YCB0YWcuXG4gICAqL1xuICB1cmw/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGljaCBHb29nbGUgTWFwcyBsaWJyYXJpZXMgc2hvdWxkIGdldCBsb2FkZWQuXG4gICAqL1xuICBsaWJyYXJpZXM/OiBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiaWFzIGZvciB0aGUgbWFwIGJlaGF2aW9yIGlzIFVTLiBJZiB5b3Ugd2lzaCB0byBhbHRlciB5b3VyXG4gICAqIGFwcGxpY2F0aW9uIHRvIHNlcnZlIGRpZmZlcmVudCBtYXAgdGlsZXMgb3IgYmlhcyB0aGUgYXBwbGljYXRpb24sIHlvdSBjYW5cbiAgICogb3ZlcndyaXRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIChVUykgYnkgZGVmaW5pbmcgYSBgcmVnaW9uYC4gU2VlXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2Jhc2ljcyNSZWdpb25cbiAgICovXG4gIHJlZ2lvbj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgR29vZ2xlIE1hcHMgQVBJIHVzZXMgdGhlIGJyb3dzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2Ugd2hlbiBkaXNwbGF5aW5nXG4gICAqIHRleHR1YWwgaW5mb3JtYXRpb24uIElmIHlvdSB3aXNoIHRvIG92ZXJ3cml0ZSB0aGlzIGJlaGF2aW9yIGFuZCBmb3JjZSB0aGVcbiAgICogQVBJIHRvIHVzZSBhIGdpdmVuIGxhbmd1YWdlLCB5b3UgY2FuIHVzZSB0aGlzIHNldHRpbmcuIFNlZVxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9iYXNpY3MjTGFuZ3VhZ2VcbiAgICovXG4gIGxhbmd1YWdlPzogc3RyaW5nXG5cbiAgbG9hZGluZz86IHN0cmluZ1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGhlU2VhbUxhenlNYXBzQXBpTG9hZGVyIGV4dGVuZHMgVGhlU2VhbUdvb2dsZU1hcHNBcGlMb2FkZXIge1xuICBwcm90ZWN0ZWQgX3NjcmlwdExvYWRpbmdQcm9taXNlPzogUHJvbWlzZTx2b2lkPlxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogVGhlU2VhbUxhenlNYXBzQXBpTG9hZGVyQ29uZmlnXG4gIHByb3RlY3RlZCByZWFkb25seSBfU0NSSVBUX0lEOiBzdHJpbmcgPSAnc2VhbUdvb2dsZU1hcHNBcGlTY3JpcHQnXG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxsYmFja05hbWU6IHN0cmluZyA9IGBfX3NlYW1MYXp5R29vZ2xlTWFwc0FwaUxvYWRlcmBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSByZWFkb25seSBfbG9jYWxlSWQ6IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRIRVNFQU1fTEFaWV9NQVBTX0FQSV9DT05GSUcpIHJlYWRvbmx5IGNvbmZpZz86IFRoZVNlYW1MYXp5TWFwc0FwaUxvYWRlckNvbmZpZyxcbiAgKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZyB8fCB7fVxuICB9XG5cbiAgcHVibGljIGxvYWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKHdpbmRvdy5nb29nbGUgJiYgd2luZG93Lmdvb2dsZS5tYXBzKSB7XG4gICAgICAvLyBHb29nbGUgbWFwcyBhbHJlYWR5IGxvYWRlZCBvbiB0aGUgcGFnZS5cbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NjcmlwdExvYWRpbmdQcm9taXNlKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLl9zY3JpcHRMb2FkaW5nUHJvbWlzZSlcbiAgICB9XG5cbiAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaW4gSE1SIHNpdHVhdGlvbnMgb3IgU3RhY2tibGl0ei5pbyBlZGl0b3JzLlxuICAgIGNvbnN0IHNjcmlwdE9uUGFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX1NDUklQVF9JRClcbiAgICBpZiAoc2NyaXB0T25QYWdlKSB7XG4gICAgICB0aGlzLl9hc3NpZ25TY3JpcHRMb2FkaW5nUHJvbWlzZShzY3JpcHRPblBhZ2UpXG4gICAgICByZXR1cm4gZnJvbSh0aGlzLl9nZXRTY3JpcHRMb2FkaW5nUHJvbWlzZSgpKVxuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpXG4gICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0J1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWVcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlXG4gICAgc2NyaXB0LmlkID0gdGhpcy5fU0NSSVBUX0lEXG4gICAgc2NyaXB0LnNyYyA9IHRoaXMuX2dldFNjcmlwdFNyYyh0aGlzLmNhbGxiYWNrTmFtZSlcbiAgICB0aGlzLl9hc3NpZ25TY3JpcHRMb2FkaW5nUHJvbWlzZShzY3JpcHQpXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpXG4gICAgcmV0dXJuIGZyb20odGhpcy5fZ2V0U2NyaXB0TG9hZGluZ1Byb21pc2UoKSlcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNjcmlwdExvYWRpbmdQcm9taXNlKHNjcmlwdEVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fc2NyaXB0TG9hZGluZ1Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB3aW4gPSB3aW5kb3cgYXMgYW55XG4gICAgICB3aW5bdGhpcy5jYWxsYmFja05hbWVdID0gKCkgPT4geyByZXNvbHZlKCkgfVxuXG4gICAgICBzY3JpcHRFbGVtLm9uZXJyb3IgPSAoZXJyb3I6IEV2ZW50IHwgc3RyaW5nKSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2NyaXB0TG9hZGluZ1Byb21pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9zY3JpcHRMb2FkaW5nUHJvbWlzZSkge1xuICAgICAgdGhyb3cgRXJyb3IoYF9zY3JpcHRMb2FkaW5nUHJvbWlzZSBoYXMgbm90IGJlZW4gYXNzaWduZWQuYClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NjcmlwdExvYWRpbmdQcm9taXNlXG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldFNjcmlwdFNyYyhjYWxsYmFja05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaG9zdEFuZFBhdGg6IHN0cmluZyA9IHRoaXMuX2NvbmZpZy51cmwgfHwgJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcydcbiAgICBjb25zdCBxdWVyeVBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGwgfSA9IHtcbiAgICAgIHY6IHRoaXMuX2NvbmZpZy5hcGlWZXJzaW9uIHx8ICdxdWFydGVybHknLFxuICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrTmFtZSxcbiAgICAgIGtleTogdGhpcy5fY29uZmlnLmFwaUtleSxcbiAgICAgIGNsaWVudDogdGhpcy5fY29uZmlnLmNsaWVudElkLFxuICAgICAgY2hhbm5lbDogdGhpcy5fY29uZmlnLmNoYW5uZWwsXG4gICAgICBsaWJyYXJpZXM6IHRoaXMuX2NvbmZpZy5saWJyYXJpZXMsXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXG4gICAgICBsYW5ndWFnZTogdGhpcy5fY29uZmlnLmxhbmd1YWdlIHx8ICh0aGlzLl9sb2NhbGVJZCAhPT0gJ2VuLVVTJyA/IHRoaXMuX2xvY2FsZUlkIDogbnVsbCksXG4gICAgICBsb2FkaW5nOiB0aGlzLl9jb25maWcubG9hZGluZyB8fCAnYXN5bmMnXG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhxdWVyeVBhcmFtcylcbiAgICAgIC8vIFJlbW92ZSB1bmRlZmluZWQgb3IgbnVsbCBwYXJhbXMuXG4gICAgICAuZmlsdGVyKChrOiBzdHJpbmcpID0+IHF1ZXJ5UGFyYW1zW2tdICE9PSB1bmRlZmluZWQgJiYgcXVlcnlQYXJhbXNba10gIT09IG51bGwpXG4gICAgICAvLyBSZW1vdmUgZW1wdHkgYXJyYXlzLlxuICAgICAgLmZpbHRlcigoazogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtID0gcXVlcnlQYXJhbXNba11cbiAgICAgICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHBhcmFtKSB8fCBwYXJhbS5sZW5ndGggPiAwXG4gICAgICB9KVxuICAgICAgLy8gSm9pbiBhcnJheXMgYXMgY29tbWEgc2VwZXJhdGVkIHN0cmluZ3MuXG4gICAgICAubWFwKChrOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW0gPSBxdWVyeVBhcmFtc1trXVxuICAgICAgICByZXR1cm4geyBrZXk6IGssIHZhbHVlOiBBcnJheS5pc0FycmF5KHBhcmFtKSA/IHBhcmFtLmpvaW4oJywnKSA6IHBhcmFtIH0gYXMgeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9XG4gICAgICB9KVxuICAgICAgLm1hcCgoZW50cnk6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICByZXR1cm4gYCR7ZW50cnkua2V5fT0ke2VudHJ5LnZhbHVlfWBcbiAgICAgIH0pXG4gICAgICAuam9pbignJicpXG5cbiAgICByZXR1cm4gYCR7aG9zdEFuZFBhdGh9PyR7cGFyYW1zfWBcbiAgfVxufVxuIl19
@@ -165,13 +165,13 @@ export class TheSeamGoogleMapsPlacesAutoCompleteComponent {
165
165
  }
166
166
  }
167
167
  TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
168
- TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamGoogleMapsPlacesAutoCompleteComponent, selector: "seam-google-maps-places-autocomplete", inputs: { label: "label", icon: "icon", disabled: "disabled", placeholder: "placeholder", autocorrect: "autocorrect", autocapitalize: "autocapitalize", tabIndex: "tabIndex", options: "options" }, outputs: { placeChanged: "placeChanged" }, host: { listeners: { "click": "_onClick(event)", "focus": "_onFocus($event)" }, properties: { "attr.tabindex": "this._attrTabIndex" } }, viewQueries: [{ propertyName: "_inputDirective", first: true, predicate: ["inp"], descendants: true, read: InputDirective, static: true }, { propertyName: "__autocompleteDirective", first: true, predicate: TheSeamGoogleMapsPlacesAutocompleteDirective, descendants: true, static: true }], exportAs: ["seamGoogleMapsPlacesAutoComplete"], ngImport: i0, template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\r\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\r\n</div>\r\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\r\n<input #inp=\"seamInput\"\r\n seamInput\r\n seamGoogleMapsPlacesAutocomplete\r\n [disabled]=\"disabled\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.autocorrect]=\"autocorrect\"\r\n [attr.autocapitalize]=\"autocapitalize\"\r\n [options]=\"_options\"\r\n/>\r\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4.TheSeamGoogleMapsPlacesAutocompleteDirective, selector: "input[seamGoogleMapsPlacesAutocomplete]", inputs: ["options"], outputs: ["placeChanged"], exportAs: ["seamGoogleMapsPlacesAutocomplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
+ TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamGoogleMapsPlacesAutoCompleteComponent, selector: "seam-google-maps-places-autocomplete", inputs: { label: "label", icon: "icon", disabled: "disabled", placeholder: "placeholder", autocorrect: "autocorrect", autocapitalize: "autocapitalize", tabIndex: "tabIndex", options: "options" }, outputs: { placeChanged: "placeChanged" }, host: { listeners: { "click": "_onClick(event)", "focus": "_onFocus($event)" }, properties: { "attr.tabindex": "this._attrTabIndex" } }, viewQueries: [{ propertyName: "_inputDirective", first: true, predicate: ["inp"], descendants: true, read: InputDirective, static: true }, { propertyName: "__autocompleteDirective", first: true, predicate: TheSeamGoogleMapsPlacesAutocompleteDirective, descendants: true, static: true }], exportAs: ["seamGoogleMapsPlacesAutoComplete"], ngImport: i0, template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\n</div>\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\n<input #inp=\"seamInput\"\n seamInput\n seamGoogleMapsPlacesAutocomplete\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocorrect]=\"autocorrect\"\n [attr.autocapitalize]=\"autocapitalize\"\n [options]=\"_options\"\n/>\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4.TheSeamGoogleMapsPlacesAutocompleteDirective, selector: "input[seamGoogleMapsPlacesAutocomplete]", inputs: ["options"], outputs: ["placeChanged"], exportAs: ["seamGoogleMapsPlacesAutocomplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
169
169
  __decorate([
170
170
  InputBoolean()
171
171
  ], TheSeamGoogleMapsPlacesAutoCompleteComponent.prototype, "disabled", void 0);
172
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, decorators: [{
173
173
  type: Component,
174
- args: [{ selector: 'seam-google-maps-places-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'seamGoogleMapsPlacesAutoComplete', template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\r\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\r\n</div>\r\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\r\n<input #inp=\"seamInput\"\r\n seamInput\r\n seamGoogleMapsPlacesAutocomplete\r\n [disabled]=\"disabled\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.autocorrect]=\"autocorrect\"\r\n [attr.autocapitalize]=\"autocapitalize\"\r\n [options]=\"_options\"\r\n/>\r\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
174
+ args: [{ selector: 'seam-google-maps-places-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'seamGoogleMapsPlacesAutoComplete', template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\n</div>\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\n<input #inp=\"seamInput\"\n seamInput\n seamGoogleMapsPlacesAutocomplete\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocorrect]=\"autocorrect\"\n [attr.autocapitalize]=\"autocapitalize\"\n [options]=\"_options\"\n/>\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
175
175
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { label: [{
176
176
  type: Input
177
177
  }], icon: [{
@@ -206,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
206
206
  type: HostListener,
207
207
  args: ['focus', ['$event']]
208
208
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ29vZ2xlLW1hcHMvZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlL2dvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFNLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRzlELE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLDZDQUE2QyxDQUFBOzs7Ozs7QUFLM0o7O0dBRUc7QUFRSCxNQUFNLE9BQU8sNENBQTRD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b0UsQ0FDdkUsQ0FBQTtTQUNGO0lBQ0gsQ0FBQzs7eUlBcE5VLDRDQUE0Qzs2SEFBNUMsNENBQTRDLHVoQkFpRDdCLGNBQWMscUZBRTdCLDRDQUE0Qyw4R0N0RnpELDhoQkFhQTtBRG9DMkI7SUFBZixZQUFZLEVBQUU7OEVBQStCOzJGQWQ1Qyw0Q0FBNEM7a0JBUHhELFNBQVM7K0JBQ0Usc0NBQXNDLG1CQUcvQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGtDQUFrQztpR0FZbkMsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFbUIsUUFBUTtzQkFBaEMsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRCxRQUFRO3NCQURYLEtBQUs7Z0JBTUgsT0FBTztzQkFEVixLQUFLO2dCQWVhLFlBQVk7c0JBQTlCLE1BQU07Z0JBRW1ELGVBQWU7c0JBQXhFLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwRCx1QkFBdUI7c0JBRDFCLFNBQVM7dUJBQUMsNENBQTRDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVlyRSxhQUFhO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBSTVCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxPQUFPLENBQUU7Z0JBTWxDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXBUbywgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYVNlYXJjaExvY2F0aW9uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJ1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9mb3JtLWZpZWxkJ1xuaW1wb3J0IHsgU2VhbUljb24gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vaWNvbidcblxuaW1wb3J0IHsgU0VBTV9HT09HTEVfUExBQ0VTX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsIFRoZVNlYW1Hb29nbGVNYXBzUGxhY2VzQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZSdcblxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbnR5cGUgV2l0aFJlcXVpcmVkPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFQgJiB7IFtQIGluIEtdLT86IFRbUF0gfVxuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZXhwb3J0QXM6ICdzZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9Db21wbGV0ZSdcbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdCA9IG5ldyBTdWJqZWN0KClcblxuICBwcml2YXRlIF9wbGFjZUNoYW5nZWRQZW5kaW5nOiB7IG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55Piwgc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+IH1bXSA9IFtdXG5cbiAgcHVibGljIGF1dG9Db21wbGV0ZT86IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdTZWFyY2ggYnkgYWRkcmVzcywgcGxhY2Ugb3IgbmFtZSdcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGwgPSBmYVNlYXJjaExvY2F0aW9uXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGRpc2FibGVkOiBCb29sZWFuSW5wdXQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ0VudGVyIGFkZHJlc3MsIHBsYWNlIG9yIG5hbWUnXG5cbiAgQElucHV0KCkgYXV0b2NvcnJlY3Q6ICdvZmYnIHwgJ29uJyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnb2ZmJ1xuXG4gIEBJbnB1dCgpIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyB8ICdvbicgfCB1bmRlZmluZWQgfCBudWxsID0gJ29mZidcblxuICAvKipcbiAgICogU2V0IHRoZSB0YWIgaW5kZXggdG8gYC0xYCB0byBhbGxvdyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoZVxuICAgKiBjb21wb25lbnQgdG8gcmVjZWl2ZSBgZm9jdXNgIGV2ZW50IGZyb20gamF2YXNjcmlwdCwgYnV0IG5vdCBnZXQgZm9jdXNlZCBieVxuICAgKiBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgIEBJbnB1dCgpXG4gICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikgeyB0aGlzLl90YWJJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSB9XG4gICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3RhYkluZGV4IH1cbiAgIHByaXZhdGUgX3RhYkluZGV4ID0gLTFcblxuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZU9wdGlvbnMgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlIHx8IFNFQU1fR09PR0xFX1BMQUNFU19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TXG4gIH1cbiAgX29wdGlvbnM6IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVPcHRpb25zID0gU0VBTV9HT09HTEVfUExBQ0VTX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIGEgUGxhY2VSZXN1bHQgaXMgbWFkZSBhdmFpbGFibGUgZm9yIGEgUGxhY2UgdGhlXG4gICAqIHVzZXIgaGFzIHNlbGVjdGVkLiBJZiB0aGUgdXNlciBlbnRlcnMgdGhlIG5hbWUgb2YgYSBQbGFjZSB0aGF0IHdhcyBub3RcbiAgICogc3VnZ2VzdGVkIGJ5IHRoZSBjb250cm9sIGFuZCBwcmVzc2VzIHRoZSBFbnRlciBrZXksIG9yIGlmIGEgUGxhY2UgRGV0YWlsc1xuICAgKiByZXF1ZXN0IGZhaWxzLCB0aGUgUGxhY2VSZXN1bHQgY29udGFpbnMgdGhlIHVzZXIgaW5wdXQgaW4gdGhlIG5hbWVcbiAgICogcHJvcGVydHksIHdpdGggbm8gb3RoZXIgcHJvcGVydGllcyBkZWZpbmVkLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9wbGFjZXMtd2lkZ2V0I0F1dG9jb21wbGV0ZS5wbGFjZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGxhY2VDaGFuZ2VkOiBPYnNlcnZhYmxlPHZvaWQ+XG5cbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBJbnB1dERpcmVjdGl2ZSwgc3RhdGljOiB0cnVlIH0pIF9pbnB1dERpcmVjdGl2ZSE6IElucHV0RGlyZWN0aXZlXG5cbiAgQFZpZXdDaGlsZChUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2V0IF9fYXV0b2NvbXBsZXRlRGlyZWN0aXZlKHZhbHVlOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSkge1xuICAgIHRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZSA9IHZhbHVlXG4gICAgdGhpcy5fdW50aWxBdXRvQ29tcGxldGVSZWFkeSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9hdXRvQ29tcGxldGVEaXJlY3RpdmUuYXV0b0NvbXBsZXRlXG4gICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nLmZvckVhY2gocGVuZGluZyA9PiBwZW5kaW5nLm9ic2VydmFibGUuc3Vic2NyaWJlKHBlbmRpbmcuc3Vic2NyaWJlcikpXG4gICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nID0gW11cbiAgICB9KVxuICB9XG4gIF9hdXRvQ29tcGxldGVEaXJlY3RpdmUhOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfYXR0clRhYkluZGV4KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogKHRoaXMudGFiSW5kZXggfHwgMCkgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyAnZXZlbnQnIF0pXG4gIF9vbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5faW5wdXREaXJlY3RpdmUuZm9jdXMoKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbICckZXZlbnQnIF0pXG4gIF9vbkZvY3VzKCkge1xuICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlPy5mb2N1cygpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApIHtcbiAgICB0aGlzLnBsYWNlQ2hhbmdlZCA9IHRoaXMuX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdC5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY3JlYXRlUGxhY2VDaGFuZ2VkT2JzZXJ2YWJsZTxhbnk+KCkpXG4gICAgKVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHByaXZhdGUgX3VudGlsQXV0b0NvbXBsZXRlUmVhZHkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGludGVydmFsKDUwMCkucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZS5hdXRvQ29tcGxldGUpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcFRvKHVuZGVmaW5lZCksXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJvdW5kcyB0byB3aGljaCBwcmVkaWN0aW9ucyBhcmUgYmlhc2VkLlxuICAgKi9cbiAgIHB1YmxpYyBnZXRCb3VuZHMoKTogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLmdldEJvdW5kcygpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmllbGRzIHRvIGJlIGluY2x1ZGVkIGZvciB0aGUgUGxhY2UgaW4gdGhlIGRldGFpbHMgcmVzcG9uc2VcbiAgICogd2hlbiB0aGUgZGV0YWlscyBhcmUgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZC4gRm9yIGEgbGlzdCBvZiBmaWVsZHMgc2VlXG4gICAqIFtQbGFjZVJlc3VsdF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL3BsYWNlcy1zZXJ2aWNlI1BsYWNlUmVzdWx0KS5cbiAgICovXG4gIHB1YmxpYyBnZXRGaWVsZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICByZXR1cm4gKHRoaXMuYXV0b0NvbXBsZXRlIGFzIGFueSkuZ2V0RmllbGRzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZXRhaWxzIG9mIHRoZSBQbGFjZSBzZWxlY3RlZCBieSB1c2VyIGlmIHRoZSBkZXRhaWxzIHdlcmVcbiAgICogc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZC4gT3RoZXJ3aXNlIHJldHVybnMgYSBzdHViIFBsYWNlIG9iamVjdCwgd2l0aCB0aGVcbiAgICogbmFtZSBwcm9wZXJ0eSBzZXQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgIHB1YmxpYyBnZXRQbGFjZSgpOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuZ2V0UGxhY2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHByZWZlcnJlZCBhcmVhIHdpdGhpbiB3aGljaCB0byByZXR1cm4gUGxhY2UgcmVzdWx0cy4gUmVzdWx0cyBhcmVcbiAgICogYmlhc2VkIHRvd2FyZHMsIGJ1dCBub3QgcmVzdHJpY3RlZCB0bywgdGhpcyBhcmVhLlxuICAgKi9cbiAgcHVibGljIHNldEJvdW5kcyhib3VuZHM/OiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMgfCBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldEJvdW5kcyhib3VuZHMhKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCByZXN0cmljdGlvbnMuIENvbXBvbmVudCByZXN0cmljdGlvbnMgYXJlIHVzZWQgdG9cbiAgICogcmVzdHJpY3QgcHJlZGljdGlvbnMgdG8gb25seSB0aG9zZSB3aXRoaW4gdGhlIHBhcmVudCBjb21wb25lbnQuIEZvclxuICAgKiBleGFtcGxlLCB0aGUgY291bnRyeS5cbiAgICovXG4gIHB1YmxpYyBzZXRDb21wb25lbnRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zPzogZ29vZ2xlLm1hcHMucGxhY2VzLkNvbXBvbmVudFJlc3RyaWN0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRDb21wb25lbnRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zISlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmaWVsZHMgdG8gYmUgaW5jbHVkZWQgZm9yIHRoZSBQbGFjZSBpbiB0aGUgZGV0YWlscyByZXNwb25zZSB3aGVuXG4gICAqIHRoZSBkZXRhaWxzIGFyZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkLiBGb3IgYSBsaXN0IG9mIGZpZWxkcyBzZWVcbiAgICogW1BsYWNlUmVzdWx0XShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvcGxhY2VzLXNlcnZpY2UjUGxhY2VSZXN1bHQpLlxuICAgKi9cbiAgcHVibGljIHNldEZpZWxkcyhmaWVsZHM/OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRGaWVsZHMoZmllbGRzISlcbiAgfVxuXG4gIC8qKiAqL1xuICBwdWJsaWMgc2V0T3B0aW9ucyhvcHRpb25zPzogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuc2V0T3B0aW9ucyhvcHRpb25zISlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0eXBlcyBvZiBwcmVkaWN0aW9ucyB0byBiZSByZXR1cm5lZC4gRm9yIHN1cHBvcnRlZCB0eXBlcywgc2VlIHRoZVxuICAgKiBbZGV2ZWxvcGVyJ3MgZ3VpZGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3BsYWNlcy1hdXRvY29tcGxldGUjY29uc3RyYWluLXBsYWNlLXR5cGVzKS5cbiAgICogSWYgbm8gdHlwZXMgYXJlIHNwZWNpZmllZCwgYWxsIHR5cGVzIHdpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgc2V0VHlwZXModHlwZXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRUeXBlcyh0eXBlcyEpXG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgLyoqIFVuZm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKClcbiAgfVxuXG4gIHB1YmxpYyBnZXRIb3N0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQbGFjZUNoYW5nZWRPYnNlcnZhYmxlPFQ+KCk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxUPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIGlmICghdGhpcy5hdXRvQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5fcGxhY2VDaGFuZ2VkUGVuZGluZy5wdXNoKHsgb2JzZXJ2YWJsZSwgc3Vic2NyaWJlciB9KVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZS5wbGFjZUNoYW5nZWQuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgIHJldHVybiAoKSA9PiBzdWIudW5zdWJzY3JpYmUoKVxuICAgIH0pXG4gICAgcmV0dXJuIG9ic2VydmFibGVcbiAgfVxuXG4gIC8qKiBBc3NlcnRzIHRoYXQgdGhlIG1hcCBoYXMgYmVlbiBpbml0aWFsaXplZC4gKi9cbiAgcHJpdmF0ZSBfYXNzZXJ0SW5pdGlhbGl6ZWQoKTogYXNzZXJ0cyB0aGlzIGlzIFdpdGhSZXF1aXJlZDxUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9Db21wbGV0ZUNvbXBvbmVudCwgJ2F1dG9Db21wbGV0ZSc+IHtcbiAgICBpZiAoIXRoaXMuYXV0b0NvbXBsZXRlICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBhY2Nlc3MgR29vZ2xlIE1hcCBQbGFjZXMgaW5mb3JtYXRpb24gYmVmb3JlIHRoZSBBUEkgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuICcgK1xuICAgICAgICAgICdQbGVhc2Ugd2FpdCBmb3IgdGhlIEFQSSB0byBsb2FkIGJlZm9yZSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCBpdC4nLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lci0taWNvbi13cmFwcGVyXCI+XHJcbiAgPHNlYW0taWNvbiBbaWNvbl09XCJpY29uXCIgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgc2l6ZT1cImxnXCI+PC9zZWFtLWljb24+XHJcbjwvZGl2PlxyXG48bGFiZWwgKm5nSWY9XCJsYWJlbCB8fCBwbGFjZWhvbGRlclwiIFthdHRyLmZvcl09XCJpbnAuaWRcIiBjbGFzcz1cInNyLW9ubHlcIj57eyBsYWJlbCB8fCBwbGFjZWhvbGRlciB9fTwvbGFiZWw+XHJcbjxpbnB1dCAjaW5wPVwic2VhbUlucHV0XCJcclxuICBzZWFtSW5wdXRcclxuICBzZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZVxyXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gIFthdHRyLmF1dG9jb3JyZWN0XT1cImF1dG9jb3JyZWN0XCJcclxuICBbYXR0ci5hdXRvY2FwaXRhbGl6ZV09XCJhdXRvY2FwaXRhbGl6ZVwiXHJcbiAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxyXG4vPlxyXG4iXX0=
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ29vZ2xlLW1hcHMvZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlL2dvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFNLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRzlELE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLDZDQUE2QyxDQUFBOzs7Ozs7QUFLM0o7O0dBRUc7QUFRSCxNQUFNLE9BQU8sNENBQTRDO0lBc0J2RDs7OztPQUlHO0lBQ0YsSUFDSSxRQUFRLENBQUMsS0FBYSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzVFLElBQUksUUFBUSxLQUFhLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUM7SUFHakQsSUFDSSxPQUFPLENBQUMsS0FBZ0U7UUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLElBQUksK0NBQStDLENBQUE7SUFDMUUsQ0FBQztJQWdCRCxJQUNJLHVCQUF1QixDQUFDLEtBQW1EO1FBQzdFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUE7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQTtZQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7WUFDOUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHRCxJQUNJLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBR3hFLFFBQVEsQ0FBQyxLQUFpQjtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsWUFDbUIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF6RXpCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUNwQyw4QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBRWxELHlCQUFvQixHQUFtRSxFQUFFLENBQUE7UUFJeEYsVUFBSyxHQUE4QixrQ0FBa0MsQ0FBQTtRQUVyRSxTQUFJLEdBQWdDLGdCQUFnQixDQUFBO1FBRXBDLGFBQVEsR0FBaUIsS0FBSyxDQUFBO1FBRTlDLGdCQUFXLEdBQThCLDhCQUE4QixDQUFBO1FBRXZFLGdCQUFXLEdBQW9DLEtBQUssQ0FBQTtRQUVwRCxtQkFBYyxHQUFvQyxLQUFLLENBQUE7UUFVdkQsY0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBTXZCLGFBQVEsR0FBMkMsK0NBQStDLENBQUE7UUEwQ2hHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FDckQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUNwQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFPLENBQUMsQ0FDM0QsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLEVBQ3hELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQ2pCLENBQUE7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUztRQUNkLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3pCLE9BQVEsSUFBSSxDQUFDLFlBQW9CLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxRQUFRO1FBQ2QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsTUFBbUU7UUFDbEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDekIsb0VBQW9FO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTyxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx3QkFBd0IsQ0FBQyxZQUF1RDtRQUNyRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUN6QixvRUFBb0U7UUFDcEUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLFlBQWEsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE1BQWlCO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3pCLG9FQUFvRTtRQUNwRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU8sQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxNQUFNO0lBQ0MsVUFBVSxDQUFDLE9BQWdEO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3pCLG9FQUFvRTtRQUNwRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQVEsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLEtBQWdCO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3pCLG9FQUFvRTtRQUNwRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQU0sQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRCx5QkFBeUI7SUFDbEIsS0FBSztRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3hDLENBQUM7SUFFRCwyQkFBMkI7SUFDcEIsSUFBSTtRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUE7SUFDdkMsQ0FBQztJQUVPLDZCQUE2QjtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBSSxVQUFVLENBQUMsRUFBRTtZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO2dCQUMxRCxPQUFPLFNBQVMsQ0FBQTthQUNqQjtZQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTFFLE9BQU8sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2hDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxVQUFVLENBQUE7SUFDbkIsQ0FBQztJQUVELGlEQUFpRDtJQUN6QyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLEVBQUU7WUFDekUsTUFBTSxLQUFLLENBQ1QsbUZBQW1GO2dCQUNqRixvRUFBb0UsQ0FDdkUsQ0FBQTtTQUNGO0lBQ0gsQ0FBQzs7eUlBcE5VLDRDQUE0Qzs2SEFBNUMsNENBQTRDLHVoQkFpRDdCLGNBQWMscUZBRTdCLDRDQUE0Qyw4R0N0RnpELG9nQkFhQTtBRG9DMkI7SUFBZixZQUFZLEVBQUU7OEVBQStCOzJGQWQ1Qyw0Q0FBNEM7a0JBUHhELFNBQVM7K0JBQ0Usc0NBQXNDLG1CQUcvQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGtDQUFrQztpR0FZbkMsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFbUIsUUFBUTtzQkFBaEMsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRCxRQUFRO3NCQURYLEtBQUs7Z0JBTUgsT0FBTztzQkFEVixLQUFLO2dCQWVhLFlBQVk7c0JBQTlCLE1BQU07Z0JBRW1ELGVBQWU7c0JBQXhFLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwRCx1QkFBdUI7c0JBRDFCLFNBQVM7dUJBQUMsNENBQTRDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVlyRSxhQUFhO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBSTVCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxPQUFPLENBQUU7Z0JBTWxDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXBUbywgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYVNlYXJjaExvY2F0aW9uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJ1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9mb3JtLWZpZWxkJ1xuaW1wb3J0IHsgU2VhbUljb24gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vaWNvbidcblxuaW1wb3J0IHsgU0VBTV9HT09HTEVfUExBQ0VTX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsIFRoZVNlYW1Hb29nbGVNYXBzUGxhY2VzQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZSdcblxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbnR5cGUgV2l0aFJlcXVpcmVkPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFQgJiB7IFtQIGluIEtdLT86IFRbUF0gfVxuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZXhwb3J0QXM6ICdzZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9Db21wbGV0ZSdcbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdCA9IG5ldyBTdWJqZWN0KClcblxuICBwcml2YXRlIF9wbGFjZUNoYW5nZWRQZW5kaW5nOiB7IG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55Piwgc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+IH1bXSA9IFtdXG5cbiAgcHVibGljIGF1dG9Db21wbGV0ZT86IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdTZWFyY2ggYnkgYWRkcmVzcywgcGxhY2Ugb3IgbmFtZSdcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGwgPSBmYVNlYXJjaExvY2F0aW9uXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGRpc2FibGVkOiBCb29sZWFuSW5wdXQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ0VudGVyIGFkZHJlc3MsIHBsYWNlIG9yIG5hbWUnXG5cbiAgQElucHV0KCkgYXV0b2NvcnJlY3Q6ICdvZmYnIHwgJ29uJyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnb2ZmJ1xuXG4gIEBJbnB1dCgpIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyB8ICdvbicgfCB1bmRlZmluZWQgfCBudWxsID0gJ29mZidcblxuICAvKipcbiAgICogU2V0IHRoZSB0YWIgaW5kZXggdG8gYC0xYCB0byBhbGxvdyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoZVxuICAgKiBjb21wb25lbnQgdG8gcmVjZWl2ZSBgZm9jdXNgIGV2ZW50IGZyb20gamF2YXNjcmlwdCwgYnV0IG5vdCBnZXQgZm9jdXNlZCBieVxuICAgKiBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgIEBJbnB1dCgpXG4gICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikgeyB0aGlzLl90YWJJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSB9XG4gICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3RhYkluZGV4IH1cbiAgIHByaXZhdGUgX3RhYkluZGV4ID0gLTFcblxuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZU9wdGlvbnMgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlIHx8IFNFQU1fR09PR0xFX1BMQUNFU19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TXG4gIH1cbiAgX29wdGlvbnM6IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVPcHRpb25zID0gU0VBTV9HT09HTEVfUExBQ0VTX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIGEgUGxhY2VSZXN1bHQgaXMgbWFkZSBhdmFpbGFibGUgZm9yIGEgUGxhY2UgdGhlXG4gICAqIHVzZXIgaGFzIHNlbGVjdGVkLiBJZiB0aGUgdXNlciBlbnRlcnMgdGhlIG5hbWUgb2YgYSBQbGFjZSB0aGF0IHdhcyBub3RcbiAgICogc3VnZ2VzdGVkIGJ5IHRoZSBjb250cm9sIGFuZCBwcmVzc2VzIHRoZSBFbnRlciBrZXksIG9yIGlmIGEgUGxhY2UgRGV0YWlsc1xuICAgKiByZXF1ZXN0IGZhaWxzLCB0aGUgUGxhY2VSZXN1bHQgY29udGFpbnMgdGhlIHVzZXIgaW5wdXQgaW4gdGhlIG5hbWVcbiAgICogcHJvcGVydHksIHdpdGggbm8gb3RoZXIgcHJvcGVydGllcyBkZWZpbmVkLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9wbGFjZXMtd2lkZ2V0I0F1dG9jb21wbGV0ZS5wbGFjZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGxhY2VDaGFuZ2VkOiBPYnNlcnZhYmxlPHZvaWQ+XG5cbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBJbnB1dERpcmVjdGl2ZSwgc3RhdGljOiB0cnVlIH0pIF9pbnB1dERpcmVjdGl2ZSE6IElucHV0RGlyZWN0aXZlXG5cbiAgQFZpZXdDaGlsZChUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2V0IF9fYXV0b2NvbXBsZXRlRGlyZWN0aXZlKHZhbHVlOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSkge1xuICAgIHRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZSA9IHZhbHVlXG4gICAgdGhpcy5fdW50aWxBdXRvQ29tcGxldGVSZWFkeSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9hdXRvQ29tcGxldGVEaXJlY3RpdmUuYXV0b0NvbXBsZXRlXG4gICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nLmZvckVhY2gocGVuZGluZyA9PiBwZW5kaW5nLm9ic2VydmFibGUuc3Vic2NyaWJlKHBlbmRpbmcuc3Vic2NyaWJlcikpXG4gICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nID0gW11cbiAgICB9KVxuICB9XG4gIF9hdXRvQ29tcGxldGVEaXJlY3RpdmUhOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfYXR0clRhYkluZGV4KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogKHRoaXMudGFiSW5kZXggfHwgMCkgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyAnZXZlbnQnIF0pXG4gIF9vbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5faW5wdXREaXJlY3RpdmUuZm9jdXMoKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbICckZXZlbnQnIF0pXG4gIF9vbkZvY3VzKCkge1xuICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlPy5mb2N1cygpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApIHtcbiAgICB0aGlzLnBsYWNlQ2hhbmdlZCA9IHRoaXMuX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdC5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY3JlYXRlUGxhY2VDaGFuZ2VkT2JzZXJ2YWJsZTxhbnk+KCkpXG4gICAgKVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHByaXZhdGUgX3VudGlsQXV0b0NvbXBsZXRlUmVhZHkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGludGVydmFsKDUwMCkucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZS5hdXRvQ29tcGxldGUpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcFRvKHVuZGVmaW5lZCksXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJvdW5kcyB0byB3aGljaCBwcmVkaWN0aW9ucyBhcmUgYmlhc2VkLlxuICAgKi9cbiAgIHB1YmxpYyBnZXRCb3VuZHMoKTogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLmdldEJvdW5kcygpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmllbGRzIHRvIGJlIGluY2x1ZGVkIGZvciB0aGUgUGxhY2UgaW4gdGhlIGRldGFpbHMgcmVzcG9uc2VcbiAgICogd2hlbiB0aGUgZGV0YWlscyBhcmUgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZC4gRm9yIGEgbGlzdCBvZiBmaWVsZHMgc2VlXG4gICAqIFtQbGFjZVJlc3VsdF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL3BsYWNlcy1zZXJ2aWNlI1BsYWNlUmVzdWx0KS5cbiAgICovXG4gIHB1YmxpYyBnZXRGaWVsZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICByZXR1cm4gKHRoaXMuYXV0b0NvbXBsZXRlIGFzIGFueSkuZ2V0RmllbGRzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZXRhaWxzIG9mIHRoZSBQbGFjZSBzZWxlY3RlZCBieSB1c2VyIGlmIHRoZSBkZXRhaWxzIHdlcmVcbiAgICogc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZC4gT3RoZXJ3aXNlIHJldHVybnMgYSBzdHViIFBsYWNlIG9iamVjdCwgd2l0aCB0aGVcbiAgICogbmFtZSBwcm9wZXJ0eSBzZXQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgIHB1YmxpYyBnZXRQbGFjZSgpOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuZ2V0UGxhY2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHByZWZlcnJlZCBhcmVhIHdpdGhpbiB3aGljaCB0byByZXR1cm4gUGxhY2UgcmVzdWx0cy4gUmVzdWx0cyBhcmVcbiAgICogYmlhc2VkIHRvd2FyZHMsIGJ1dCBub3QgcmVzdHJpY3RlZCB0bywgdGhpcyBhcmVhLlxuICAgKi9cbiAgcHVibGljIHNldEJvdW5kcyhib3VuZHM/OiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMgfCBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldEJvdW5kcyhib3VuZHMhKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCByZXN0cmljdGlvbnMuIENvbXBvbmVudCByZXN0cmljdGlvbnMgYXJlIHVzZWQgdG9cbiAgICogcmVzdHJpY3QgcHJlZGljdGlvbnMgdG8gb25seSB0aG9zZSB3aXRoaW4gdGhlIHBhcmVudCBjb21wb25lbnQuIEZvclxuICAgKiBleGFtcGxlLCB0aGUgY291bnRyeS5cbiAgICovXG4gIHB1YmxpYyBzZXRDb21wb25lbnRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zPzogZ29vZ2xlLm1hcHMucGxhY2VzLkNvbXBvbmVudFJlc3RyaWN0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRDb21wb25lbnRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zISlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmaWVsZHMgdG8gYmUgaW5jbHVkZWQgZm9yIHRoZSBQbGFjZSBpbiB0aGUgZGV0YWlscyByZXNwb25zZSB3aGVuXG4gICAqIHRoZSBkZXRhaWxzIGFyZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkLiBGb3IgYSBsaXN0IG9mIGZpZWxkcyBzZWVcbiAgICogW1BsYWNlUmVzdWx0XShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvcGxhY2VzLXNlcnZpY2UjUGxhY2VSZXN1bHQpLlxuICAgKi9cbiAgcHVibGljIHNldEZpZWxkcyhmaWVsZHM/OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRGaWVsZHMoZmllbGRzISlcbiAgfVxuXG4gIC8qKiAqL1xuICBwdWJsaWMgc2V0T3B0aW9ucyhvcHRpb25zPzogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuc2V0T3B0aW9ucyhvcHRpb25zISlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0eXBlcyBvZiBwcmVkaWN0aW9ucyB0byBiZSByZXR1cm5lZC4gRm9yIHN1cHBvcnRlZCB0eXBlcywgc2VlIHRoZVxuICAgKiBbZGV2ZWxvcGVyJ3MgZ3VpZGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3BsYWNlcy1hdXRvY29tcGxldGUjY29uc3RyYWluLXBsYWNlLXR5cGVzKS5cbiAgICogSWYgbm8gdHlwZXMgYXJlIHNwZWNpZmllZCwgYWxsIHR5cGVzIHdpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBwdWJsaWMgc2V0VHlwZXModHlwZXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRUeXBlcyh0eXBlcyEpXG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgLyoqIFVuZm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKClcbiAgfVxuXG4gIHB1YmxpYyBnZXRIb3N0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQbGFjZUNoYW5nZWRPYnNlcnZhYmxlPFQ+KCk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZTxUPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIGlmICghdGhpcy5hdXRvQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5fcGxhY2VDaGFuZ2VkUGVuZGluZy5wdXNoKHsgb2JzZXJ2YWJsZSwgc3Vic2NyaWJlciB9KVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZS5wbGFjZUNoYW5nZWQuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgIHJldHVybiAoKSA9PiBzdWIudW5zdWJzY3JpYmUoKVxuICAgIH0pXG4gICAgcmV0dXJuIG9ic2VydmFibGVcbiAgfVxuXG4gIC8qKiBBc3NlcnRzIHRoYXQgdGhlIG1hcCBoYXMgYmVlbiBpbml0aWFsaXplZC4gKi9cbiAgcHJpdmF0ZSBfYXNzZXJ0SW5pdGlhbGl6ZWQoKTogYXNzZXJ0cyB0aGlzIGlzIFdpdGhSZXF1aXJlZDxUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9Db21wbGV0ZUNvbXBvbmVudCwgJ2F1dG9Db21wbGV0ZSc+IHtcbiAgICBpZiAoIXRoaXMuYXV0b0NvbXBsZXRlICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBhY2Nlc3MgR29vZ2xlIE1hcCBQbGFjZXMgaW5mb3JtYXRpb24gYmVmb3JlIHRoZSBBUEkgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuICcgK1xuICAgICAgICAgICdQbGVhc2Ugd2FpdCBmb3IgdGhlIEFQSSB0byBsb2FkIGJlZm9yZSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCBpdC4nLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lci0taWNvbi13cmFwcGVyXCI+XG4gIDxzZWFtLWljb24gW2ljb25dPVwiaWNvblwiIGNsYXNzPVwidGV4dC1tdXRlZFwiIHNpemU9XCJsZ1wiPjwvc2VhbS1pY29uPlxuPC9kaXY+XG48bGFiZWwgKm5nSWY9XCJsYWJlbCB8fCBwbGFjZWhvbGRlclwiIFthdHRyLmZvcl09XCJpbnAuaWRcIiBjbGFzcz1cInNyLW9ubHlcIj57eyBsYWJlbCB8fCBwbGFjZWhvbGRlciB9fTwvbGFiZWw+XG48aW5wdXQgI2lucD1cInNlYW1JbnB1dFwiXG4gIHNlYW1JbnB1dFxuICBzZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZVxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFthdHRyLmF1dG9jb3JyZWN0XT1cImF1dG9jb3JyZWN0XCJcbiAgW2F0dHIuYXV0b2NhcGl0YWxpemVdPVwiYXV0b2NhcGl0YWxpemVcIlxuICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4vPlxuIl19