@fundamental-ngx/platform 0.44.0-rc.6 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2022/action-bar/action-bar.component.mjs +3 -3
  2. package/esm2022/button/button.component.mjs +4 -3
  3. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -2
  4. package/esm2022/feed-input/feed-input.component.mjs +3 -2
  5. package/esm2022/form/checkbox/checkbox.component.mjs +6 -5
  6. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +3 -3
  7. package/esm2022/form/date-picker/date-picker.component.mjs +7 -6
  8. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -5
  9. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +3 -2
  10. package/esm2022/form/form-group/form-field/form-field.component.mjs +4 -3
  11. package/esm2022/form/form-group/form-group.component.mjs +3 -3
  12. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +3 -3
  13. package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +4 -3
  14. package/esm2022/form/radio-group/radio/radio.component.mjs +4 -3
  15. package/esm2022/form/select/commons/base-select.mjs +3 -3
  16. package/esm2022/form/select/select/select.component.mjs +4 -4
  17. package/esm2022/form/text-area/text-area.component.mjs +4 -4
  18. package/esm2022/form/time-picker/time-picker.component.mjs +3 -2
  19. package/esm2022/list/base-list-item.mjs +5 -5
  20. package/esm2022/page-footer/page-footer.component.mjs +3 -2
  21. package/esm2022/search-field/search-field.component.mjs +4 -4
  22. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +7 -6
  23. package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +3 -2
  24. package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +3 -3
  25. package/esm2022/thumbnail/thumbnail.component.mjs +3 -3
  26. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +5 -5
  27. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -3
  28. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +3 -2
  29. package/esm2022/value-help-dialog/components/value-help-dialog-search/value-help-dialog-search.component.mjs +3 -2
  30. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +5 -5
  31. package/fesm2022/fundamental-ngx-platform-action-bar.mjs +2 -2
  32. package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-platform-button.mjs +3 -3
  34. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -1
  36. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -1
  38. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-platform-form.mjs +31 -30
  40. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-platform-list.mjs +4 -4
  42. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -1
  44. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-platform-search-field.mjs +3 -3
  46. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +7 -7
  48. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +4 -4
  50. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +11 -10
  52. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +9 -8
  54. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  55. package/fundamental-ngx-platform-v0.44.0.tgz +0 -0
  56. package/package.json +4 -4
  57. package/schematics/ng-add/index.js +1 -1
  58. package/fundamental-ngx-platform-v0.44.0-rc.6.tgz +0 -0
@@ -3,6 +3,7 @@ import { ControlContainer, NgControl, NgForm } from '@angular/forms';
3
3
  import { RadioButtonComponent as CoreRadioButtonComponent } from '@fundamental-ngx/core/radio';
4
4
  import { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';
5
5
  import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
6
+ import { warnOnce } from '@fundamental-ngx/core/utils';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/forms";
8
9
  import * as i2 from "@angular/common";
@@ -23,13 +24,13 @@ export class RadioButtonComponent extends BaseInput {
23
24
  */
24
25
  set stateType(state) {
25
26
  if (isDevMode()) {
26
- console.warn('"stateType" is deprecated. Use "state" instead');
27
+ warnOnce('"stateType" is deprecated. Use "state" instead');
27
28
  }
28
29
  super.state = state;
29
30
  }
30
31
  get stateType() {
31
32
  if (isDevMode()) {
32
- console.warn('"stateType" is deprecated. Use "state" instead');
33
+ warnOnce('"stateType" is deprecated. Use "state" instead');
33
34
  }
34
35
  return super.state;
35
36
  }
@@ -151,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
151
152
  type: ViewChild,
152
153
  args: [CoreRadioButtonComponent, { static: false }]
153
154
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vcmFkaW8tZ3JvdXAvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vcmFkaW8tZ3JvdXAvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckUsT0FBTyxFQUFFLG9CQUFvQixJQUFJLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFHLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBRWxGLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQU9qQixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsU0FBUztJQVcvQyw2QkFBNkI7SUFDN0IsSUFDSSxLQUFLLENBQUMsUUFBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ0wsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENB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QUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQWpJUSxvQkFBb0Isd1BBbUVlLGFBQWEseURBQ2IscUJBQXFCO2tHQXBFeEQsb0JBQW9CLHVWQXlEbEIsd0JBQXdCLHVFQzFGdkMsNHFCQXNCQTs7MkZEV2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLGtCQUFrQixtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNOzswQkFrRTFDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BELFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzRDQWpFakUsS0FBSztzQkFESixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFLRixLQUFLO3NCQURSLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixLQUFLO2dCQWdCTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFVBQVU7Z0JBV1osT0FBTztzQkFEZixNQUFNO2dCQUtDLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IGFzIENvcmVSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9yYWRpbyc7XG5pbXBvcnQgeyBCYXNlSW5wdXQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgUGxhdGZvcm1Gb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1yYWRpby1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9CdXR0b25Db21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBGb2N1c2FibGVPcHRpb24ge1xuICAgIC8qKiBzZXRzIHJhZGlvIGJ1dHRvbiB0b29sdGlwICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSW5jbHVkZXMgdGhlIFJhZGlvIGluIHRoZSBwYWdlIHRhYiBzZXF1ZW5jZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYkluZGV4ID0gLTE7XG5cbiAgICAvKiogdmFsdWUgZm9yIFJhZGlvIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogc2V0IHN0YXRlIG9mIGluZGl2aWR1YWwgcmFkaW8uVXNlZCBieSBSQkcgdG8gc2V0IHJhZGlvIHN0YXRlc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlVHlwZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignXCJzdGF0ZVR5cGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJzdGF0ZVwiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5zdGF0ZSA9IHN0YXRlO1xuICAgIH1cbiAgICBnZXQgc3RhdGVUeXBlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignXCJzdGF0ZVR5cGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJzdGF0ZVwiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIHVzZWQgZm9yIHJhZGlvIGJ1dHRvbiBjcmVhdGlvbiBpZiBsaXN0IHZhbHVlIHByZXNlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcmNlUmVuZGVyID0gZmFsc2U7XG5cbiAgICAvKiogcmVmZXJlbmNlIG9mIHRlbXBsYXRlICovXG4gICAgQFZpZXdDaGlsZCgncmVuZGVyZXInKVxuICAgIHJlbmRlcmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudFZhbHVlOiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiBSYWRpbyBjaGVja2VkIHN0YXR1cyAqL1xuICAgIF9pc0NoZWNrZWQgPSBmYWxzZTtcblxuICAgIC8qKiBjbGljayBldmVudCB0byBlbWl0ICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2hlY2tlZDogRXZlbnRFbWl0dGVyPFJhZGlvQnV0dG9uQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBBY2Nlc3MgcmFkaW8gYnV0dG9uIGNoaWxkIGVsZW1lbnQgcGFzc2VkIGFzIGNvbnRlbnQgb2YgcmFkaW8gYnV0dG9uIGdyb3VwICovXG4gICAgQFZpZXdDaGlsZChDb3JlUmFkaW9CdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgY29yZVJhZGlvQnV0dG9uOiBDb3JlUmFkaW9CdXR0b25Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFxuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQGhpZGRlbiBoYXZlIHRvIHNldCBkZWZhdWx0IGluaXRpYWwgdmFsdWVzIGFzIGJhc2UgY2xhc3MgaGFzIGNoZWNrIGFuZCB0aHJvd3MgZXJyb3JcbiAgICAgICAgdGhpcy5pZCA9IGBmZHAtcmFkaW8taWQtJHt1bmlxdWVJZH1gO1xuICAgICAgICB0aGlzLm5hbWUgPSBgZmRwLXJhZGlvLW5hbWUtJHt1bmlxdWVJZH1gO1xuICAgICAgICB1bmlxdWVJZCsrO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENvbnRyb2x2YWx1ZSBhY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbHVlQ2hhbmdlKHZhbHVlOiBhbnksIGVtaXRFdmVudCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBlbWl0RXZlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9pc0NoZWNrZWQgPSB0aGlzLl9jdXJyZW50VmFsdWUgPT09IHN1cGVyLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICh0aGlzLl9pc0NoZWNrZWQgJiYgZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQuZW1pdCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5faXNDaGVja2VkID8gMCA6IC0xO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBtZXRob2QgZm9yIGNkayBGb2N1c0tleW1hbmFnZXIgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlUmFkaW9CdXR0b24/LmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIG1ldGhvZCB0byBzZWxlY3QgcmFkaW8gYnV0dG9uICovXG4gICAgc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZUNoYW5nZShzdXBlci5nZXRWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogbWV0aG9kIHRvIHVuY2hlY2sgcmFkaW8gYnV0dG9uICovXG4gICAgdW5zZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHRpbmcgdGFiSW5kZXggZm9yIHJhZGlvIGFjY2Vzc2liaWxpdHkgKi9cbiAgICBzZXRUYWJJbmRleChpbmRleDogMCB8IC0xKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNyZW5kZXJlcj5cbiAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdGFiSW5kZXhdPVwiX2lzQ2hlY2tlZCA/IDAgOiB0YWJJbmRleFwiXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJhcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICBbbmdNb2RlbF09XCJfY3VycmVudFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3ZhbHVlQ2hhbmdlKCRldmVudCwgdHJ1ZSlcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZmQtcmFkaW8tYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcmNlUmVuZGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlbmRlcmVyXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vcmFkaW8tZ3JvdXAvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vcmFkaW8tZ3JvdXAvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckUsT0FBTyxFQUFFLG9CQUFvQixJQUFJLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFHLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztBQUV2RCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFPakIsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFXL0MsNkJBQTZCO0lBQzdCLElBQ0ksS0FBSyxDQUFDLFFBQWE7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFpQjtRQUMzQixJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2IsUUFBUSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDOUQ7UUFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1QsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNiLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUF3QkQsY0FBYztJQUNkLFlBQ0ksRUFBcUIsRUFDckIsVUFBc0IsRUFDRixTQUFvQixFQUNoQixnQkFBa0MsRUFDbEMsTUFBYyxFQUNpQixTQUE0QixFQUNwQixXQUFxQztRQUVwRyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQWpFdkY7O1dBRUc7UUFFSCxhQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUE2QmQsMkRBQTJEO1FBRTNELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBU3BCLG1DQUFtQztRQUNuQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLDBCQUEwQjtRQUVqQixZQUFPLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUM7UUFrQnRFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdkM7UUFDRCxzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsUUFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsUUFBUSxFQUFFLENBQUM7UUFDekMsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLEtBQVUsRUFBRSxTQUFTLEdBQUcsS0FBSztRQUN0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsS0FBSztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLE1BQU07UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELCtDQUErQztJQUMvQyxXQUFXLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBaklRLG9CQUFvQix3UEFtRWUsYUFBYSx5REFDYixxQkFBcUI7a0dBcEV4RCxvQkFBb0IsdVZBeURsQix3QkFBd0IsdUVDM0Z2Qyw0cUJBc0JBOzsyRkRZYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU07OzBCQWtFMUMsUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEQsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7NENBakVqRSxLQUFLO3NCQURKLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQUtGLEtBQUs7c0JBRFIsS0FBSztnQkFhRixTQUFTO3NCQURaLEtBQUs7Z0JBZ0JOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixRQUFRO3NCQURQLFNBQVM7dUJBQUMsVUFBVTtnQkFXWixPQUFPO3NCQURmLE1BQU07Z0JBS0MsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIGlzRGV2TW9kZSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgYXMgQ29yZVJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IEJhc2VJbnB1dCwgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLCBQbGF0Zm9ybUZvcm1GaWVsZCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXJhZGlvLWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEZvY3VzYWJsZU9wdGlvbiB7XG4gICAgLyoqIHNldHMgcmFkaW8gYnV0dG9uIHRvb2x0aXAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbmNsdWRlcyB0aGUgUmFkaW8gaW4gdGhlIHBhZ2UgdGFiIHNlcXVlbmNlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiSW5kZXggPSAtMTtcblxuICAgIC8qKiB2YWx1ZSBmb3IgUmFkaW8gYnV0dG9uICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBzZXQgc3RhdGUgb2YgaW5kaXZpZHVhbCByYWRpby5Vc2VkIGJ5IFJCRyB0byBzZXQgcmFkaW8gc3RhdGVzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc3RhdGVUeXBlKHN0YXRlOiBGb3JtU3RhdGVzKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoJ1wic3RhdGVUeXBlXCIgaXMgZGVwcmVjYXRlZC4gVXNlIFwic3RhdGVcIiBpbnN0ZWFkJyk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG4gICAgZ2V0IHN0YXRlVHlwZSgpOiBGb3JtU3RhdGVzIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICB3YXJuT25jZSgnXCJzdGF0ZVR5cGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJzdGF0ZVwiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIHVzZWQgZm9yIHJhZGlvIGJ1dHRvbiBjcmVhdGlvbiBpZiBsaXN0IHZhbHVlIHByZXNlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcmNlUmVuZGVyID0gZmFsc2U7XG5cbiAgICAvKiogcmVmZXJlbmNlIG9mIHRlbXBsYXRlICovXG4gICAgQFZpZXdDaGlsZCgncmVuZGVyZXInKVxuICAgIHJlbmRlcmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudFZhbHVlOiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiBSYWRpbyBjaGVja2VkIHN0YXR1cyAqL1xuICAgIF9pc0NoZWNrZWQgPSBmYWxzZTtcblxuICAgIC8qKiBjbGljayBldmVudCB0byBlbWl0ICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2hlY2tlZDogRXZlbnRFbWl0dGVyPFJhZGlvQnV0dG9uQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBBY2Nlc3MgcmFkaW8gYnV0dG9uIGNoaWxkIGVsZW1lbnQgcGFzc2VkIGFzIGNvbnRlbnQgb2YgcmFkaW8gYnV0dG9uIGdyb3VwICovXG4gICAgQFZpZXdDaGlsZChDb3JlUmFkaW9CdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHByaXZhdGUgY29yZVJhZGlvQnV0dG9uOiBDb3JlUmFkaW9CdXR0b25Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFxuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQGhpZGRlbiBoYXZlIHRvIHNldCBkZWZhdWx0IGluaXRpYWwgdmFsdWVzIGFzIGJhc2UgY2xhc3MgaGFzIGNoZWNrIGFuZCB0aHJvd3MgZXJyb3JcbiAgICAgICAgdGhpcy5pZCA9IGBmZHAtcmFkaW8taWQtJHt1bmlxdWVJZH1gO1xuICAgICAgICB0aGlzLm5hbWUgPSBgZmRwLXJhZGlvLW5hbWUtJHt1bmlxdWVJZH1gO1xuICAgICAgICB1bmlxdWVJZCsrO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENvbnRyb2x2YWx1ZSBhY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbHVlQ2hhbmdlKHZhbHVlOiBhbnksIGVtaXRFdmVudCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBlbWl0RXZlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9pc0NoZWNrZWQgPSB0aGlzLl9jdXJyZW50VmFsdWUgPT09IHN1cGVyLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICh0aGlzLl9pc0NoZWNrZWQgJiYgZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQuZW1pdCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYkluZGV4ID0gdGhpcy5faXNDaGVja2VkID8gMCA6IC0xO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBtZXRob2QgZm9yIGNkayBGb2N1c0tleW1hbmFnZXIgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlUmFkaW9CdXR0b24/LmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIG1ldGhvZCB0byBzZWxlY3QgcmFkaW8gYnV0dG9uICovXG4gICAgc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZUNoYW5nZShzdXBlci5nZXRWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogbWV0aG9kIHRvIHVuY2hlY2sgcmFkaW8gYnV0dG9uICovXG4gICAgdW5zZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHRpbmcgdGFiSW5kZXggZm9yIHJhZGlvIGFjY2Vzc2liaWxpdHkgKi9cbiAgICBzZXRUYWJJbmRleChpbmRleDogMCB8IC0xKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNyZW5kZXJlcj5cbiAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdGFiSW5kZXhdPVwiX2lzQ2hlY2tlZCA/IDAgOiB0YWJJbmRleFwiXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJhcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICBbbmdNb2RlbF09XCJfY3VycmVudFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3ZhbHVlQ2hhbmdlKCRldmVudCwgdHJ1ZSlcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZmQtcmFkaW8tYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcmNlUmVuZGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlbmRlcmVyXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -5,7 +5,7 @@ import { coerceNumberProperty } from '@angular/cdk/coercion';
5
5
  import { fromEvent, Subject, Subscription } from 'rxjs';
6
6
  import { takeUntil } from 'rxjs/operators';
7
7
  import { ListComponent } from '@fundamental-ngx/core/list';
8
- import { KeyUtil, TemplateDirective } from '@fundamental-ngx/cdk/utils';
8
+ import { KeyUtil, TemplateDirective, warnOnce } from '@fundamental-ngx/cdk/utils';
9
9
  import { CollectionBaseInput, PlatformFormFieldControl, isJsObject, isOptionItem, isString, PlatformFormField } from '@fundamental-ngx/platform/shared';
10
10
  import { SelectConfig } from '../select.config';
11
11
  import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
@@ -25,7 +25,7 @@ export class FdpSelectionChangeEvent {
25
25
  constructor(payload // Contains selected item
26
26
  ) {
27
27
  this.payload = payload;
28
- console.warn('FdpSelectionChangeEvent will be removed in future versions in favour of plain value emission');
28
+ warnOnce('FdpSelectionChangeEvent will be removed in future versions in favour of plain value emission');
29
29
  }
30
30
  }
31
31
  export class BaseSelect extends CollectionBaseInput {
@@ -389,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
389
389
  type: ContentChildren,
390
390
  args: [TemplateDirective]
391
391
  }] } });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9zZWxlY3QvY29tbW9ucy9iYXNlLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUVSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQStDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JILE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLGlCQUFpQixFQUNwQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7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S0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQVNOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFXRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBY04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFLRixJQUFJO3NCQURQLEtBQUs7Z0JBaUJOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsZUFBZTtzQkFEZCxlQUFlO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvcG92ZXJGaWxsTW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlTZXJ2aWNlLCBGb2N1c0VzY2FwZURpcmVjdGlvbiwgS2V5VXRpbCwgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25CYXNlSW5wdXQsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgIGlzSnNPYmplY3QsXG4gICAgaXNPcHRpb25JdGVtLFxuICAgIGlzU3RyaW5nLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFNlbGVjdENvbmZpZyB9IGZyb20gJy4uL3NlbGVjdC5jb25maWcnO1xuaW1wb3J0IHsgVGV4dEFsaWdubWVudCB9IGZyb20gJy4uLy4uL2NvbWJvYm94JztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkl0ZW0gfSBmcm9tICcuLy4uL21vZGVscy9zZWxlY3QubW9kZWxzJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxuZXhwb3J0IHR5cGUgRmRwU2VsZWN0RGF0YTxUPiA9IFNlbGVjdE9wdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8VFtdPiB8IFRbXTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogYEZkcFNlbGVjdGlvbkNoYW5nZUV2ZW50YCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm91ciBvZiBwbGFpbiB2YWx1ZSBlbWlzc2lvblxuICovXG5leHBvcnQgY2xhc3MgRmRwU2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIFNlbGVjdCBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50XG4gICAgICogQHBhcmFtIHBheWxvYWQgc2VsZWN0ZWQgdmFsdWVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBheWxvYWQ6IGFueSAvLyBDb250YWlucyBzZWxlY3RlZCBpdGVtXG4gICAgKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmRwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvdXIgb2YgcGxhaW4gdmFsdWUgZW1pc3Npb24nKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZWxlY3QgZXh0ZW5kcyBDb2xsZWN0aW9uQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogUHJvdmlkZXMgbWF4aW11bSBkZWZhdWx0IGhlaWdodCBmb3IgdGhlIG9wdGlvblBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBzaG91bGQgYmUgYnVpbHQgb24gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbGxzIHRoZSBzZWxlY3QgaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXAgPSBmYWxzZTtcblxuICAgIC8qKiBBIGZpZWxkIG5hbWUgdG8gdXNlIHRvIGdyb3VwIGRhdGEgYnkgKHN1cHBvcnQgZG90dGVkIG5vdGF0aW9uKSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGZpZWxkIHRvIHNob3cgZGF0YSBpbiBzZWNvbmRhcnkgY29sdW1uICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogU2hvdyB0aGUgc2Vjb25kIGNvbHVtbiAoQXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlY29uZGFyeVRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBHbHlwaCB0byBhZGQgaWNvbiBpbiB0aGUgc2VsZWN0IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ3NsaW0tYXJyb3ctZG93bic7XG5cbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gd2hpY2ggdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGFwcGVuZGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG86IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogVHJpZ2dlciB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlclZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIHNlbGVjdCBib2R5IHdpZHRoLlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogTGVhdmUgYmxhbmsgZm9yIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ24gdGV4dCBpbnNpZGUgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6IFRleHRBbGlnbm1lbnQgPSAncmlnaHQnO1xuXG4gICAgLyoqXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIHdpZHRoOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBpcyByZWFkb25seS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBzZWxlY3QuIEFwcGVhcnMgaW4gdGhlXG4gICAgICogdHJpZ2dlcmJveCBpZiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgdGhlIHBvcG92ZXIgb24gb3V0c2lkZSBjbGljay4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSB1c2VkIHRvIGJ1aWxkIGNvbnRyb2wgYm9keS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5ID0gbnVsbDtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbCA9IG51bGw7XG5cbiAgICAvKiogU2VsZWN0IElucHV0IE1vYmlsZSBDb25maWd1cmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVDb25maWc6IE1vYmlsZU1vZGVDb25maWcgPSB7IGhhc0Nsb3NlQnV0dG9uOiB0cnVlIH07XG5cbiAgICAvKipcbiAgICAgKiBTdHJpbmcgcmVuZGVyZWQgYXMgZmlyc3QgdmFsdWUgaW4gdGhlIHBvcHVwIHdoaWNoIGxldCB0aGUgdXNlciB0byBtYWtlICdubyBzZWxlY3Rpb24nIGZyb21cbiAgICAgKiBhdmFpbGFibGUgbGlzdCBvZiB2YWx1ZXMuIFdoZW4gdGhpcyBvcHRpb24gaXMgYWN0aXZlIGFuZCB1c2UgbWFrZSB0aGlzIHNlbGVjdGlvbiB3ZSBzYXZlIGFcbiAgICAgKiBOVUxMIHZhbHVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBub1ZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIG5vdCB0byB3cmFwIHRleHQgKi9cbiAgICBASW5wdXQoKVxuICAgIG5vV3JhcFRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBUdXJucyBvbi9vZmYgQWRqdXN0YWJsZSBXaWR0aCBmZWF0dXJlICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogRmlyc3QgQ29sdW1uIHJhdGlvICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlyc3RDb2x1bW5SYXRpbyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2ZpcnN0Q29sdW1uUmF0aW8gPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0Q29sdW1uUmF0aW8oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0Q29sdW1uUmF0aW87XG4gICAgfVxuXG4gICAgLyoqIFNlY29vbmQgQ29sdW1uIHJhdGlvICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2Vjb25kQ29sdW1uUmF0aW8odmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9zZWNvbmRDb2x1bW5SYXRpbyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc2Vjb25kQ29sdW1uUmF0aW8oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZENvbHVtblJhdGlvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1pbiB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbldpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIG1heFdpZHRoPzogbnVtYmVyO1xuXG4gICAgLyoqIERhdGEgZm9yIHN1Z2dlc3Rpb24gbGlzdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxpc3QodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbkl0ZW1zID0gdGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXModmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBsaXN0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25JdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjYW5DbG9zZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5tb2JpbGUgJiYgdGhpcy5tb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHQpO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaXRlbSBpcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZkcFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKExpc3RDb21wb25lbnQpXG4gICAgbGlzdENvbXBvbmVudDogTGlzdENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICAvKiogQ3VzdG9tIE9wdGlvbiBpdGVtIFRlbXBsYXRlXG4gICAgICogKiBAaGlkZGVuXG4gICAgICogKi9cbiAgICBfb3B0aW9uSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIFNlY29uZGFyeSBpdGVtIFRlbXBsYXRlXG4gICAgICogQGhpZGRlblxuICAgICAqICovXG4gICAgX3NlY29uZGFyeUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBTZWxlY3RlZCBvcHRpb24gaXRlbSBUZW1wbGF0ZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKiAqL1xuICAgIF9zZWxlY3RlZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbnRlbnREZW5zaXR5U2VydmljZTogQ29udGVudERlbnNpdHlTZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBvcHRpb24gaXRlbXNcbiAgICAgKiBAaGlkZGVuXG4gICAgICogKi9cbiAgICBfb3B0aW9uSXRlbXM6IFNlbGVjdE9wdGlvbkl0ZW1bXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlYXJjaElucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzZWxlY3QgaXMgb3BlbmVkLiAqL1xuICAgIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTmVlZCBmb3Igb3BlbmluZyBtb2JpbGUgdmVyc2lvblxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX29wZW5DaGFuZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmlyc3RDb2x1bW5SYXRpbzogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWNvbmRDb2x1bW5SYXRpbzogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0Zvcm06IE5nRm9ybSxcbiAgICAgICAgcHJvdGVjdGVkIHNlbGVjdENvbmZpZzogU2VsZWN0Q29uZmlnLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFxuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0V2luZG93UmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2Fzc2lnbkN1c3RvbVRlbXBsYXRlcygpO1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSXMgZW1wdHkgc2VhcmNoIGZpZWxkICovXG4gICAgZ2V0IGlzRW1wdHlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZShuZXdWYWx1ZTogYW55LCBlbWl0T25DaGFuZ2UgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoeyBwYXlsb2FkOiB0aGlzLnZhbHVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ2xvc2UgbGlzdCAqICovXG4gICAgY2xvc2UoZXZlbnQ6IE1vdXNlRXZlbnQgfCBudWxsID0gbnVsbCwgZm9yY2VDbG9zZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5pZCA9PT0gdGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9pc09wZW4gJiYgKGZvcmNlQ2xvc2UgfHwgdGhpcy5jYW5DbG9zZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fb3BlbkNoYW5nZS5uZXh0KHRoaXMuX2lzT3Blbik7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd0xpc3QoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gaXNPcGVuO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX29wZW5DaGFuZ2UubmV4dChpc09wZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVQcmVzc0VudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2YWx1ZTogU2VsZWN0T3B0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFTlRFUikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgcGFzc2VkIHRvIGxpc3QgY29tcG9uZW50ICovXG4gICAgaGFuZGxlTGlzdEZvY3VzRXNjYXBlKGRpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ2V0T3B0aW9uc0xpc3RXaWR0aCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uc0xpc3RXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzY3JvbGxCYXJXaWR0aCA9IGJvZHkub2Zmc2V0V2lkdGggLSBib2R5LmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLm1heFdpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSBzY3JvbGxCYXJXaWR0aCAtIHJlY3QubGVmdDtcbiAgICAgICAgdGhpcy5taW5XaWR0aCA9IHJlY3Qud2lkdGggLSAyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb3JpZ2luYWwgZGF0YSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydFRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0T3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zWzBdO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNPcHRpb25JdGVtID0gaXNPcHRpb25JdGVtKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcyBhcyBTZWxlY3RPcHRpb25JdGVtW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT2JqZWN0ID0gaXNKc09iamVjdChpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc1N0cmluZyA9IGlzU3RyaW5nKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc1N0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRQcmltaXRpdmVUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGRhdGEgdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRPYmplY3RzVG9PcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5zaG93U2Vjb25kYXJ5VGV4dCAmJiB0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9TZWNvbmRhcnlPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9iamVjdFtdIGRhdGEgdG8gU2Vjb25kYXJ5IE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXM8Sz4oaXRlbXM6IEtbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheVZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiB0aGlzLm9iamVjdEdldCh2YWx1ZSwgdGhpcy5zZWNvbmRhcnlLZXkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmxvb2t1cFZhbHVlKHZhbHVlKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBQcmltaXRpdmUgZGF0YShCb29sZWFuLCBTdHJpbmcsIE51bWJlcikgdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRQcmltaXRpdmVUb09wdGlvbkl0ZW1zKGl0ZW1zOiBzdHJpbmdbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7IGxhYmVsOiB2YWx1ZSwgdmFsdWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2UgKERlZmF1bHQpXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0T3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdE9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5kaXNwbGF5VmFsdWUodmFsdWUpLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEFzc2lnbiBjdXN0b20gdGVtcGxhdGVzXG4gICAgICogKi9cbiAgICBwcml2YXRlIF9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzLmZvckVhY2goKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRlbXBsYXRlLmdldE5hbWUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ19vcHRpb25JdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25JdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnX3NlY29uZGFyeUl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlY29uZGFyeUl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdfc2VsZWN0ZWRJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9zZWxlY3QvY29tbW9ucy9iYXNlLXNlbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUVSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBR0gsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixRQUFRLEVBQ1gsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixpQkFBaUIsRUFDcEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0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S0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQVNOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFXRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBY04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFLRixJQUFJO3NCQURQLEtBQUs7Z0JBaUJOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsZUFBZTtzQkFEZCxlQUFlO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvcG92ZXJGaWxsTW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eVNlcnZpY2UsXG4gICAgRm9jdXNFc2NhcGVEaXJlY3Rpb24sXG4gICAgS2V5VXRpbCxcbiAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICB3YXJuT25jZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25CYXNlSW5wdXQsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgIGlzSnNPYmplY3QsXG4gICAgaXNPcHRpb25JdGVtLFxuICAgIGlzU3RyaW5nLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFNlbGVjdENvbmZpZyB9IGZyb20gJy4uL3NlbGVjdC5jb25maWcnO1xuaW1wb3J0IHsgVGV4dEFsaWdubWVudCB9IGZyb20gJy4uLy4uL2NvbWJvYm94JztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkl0ZW0gfSBmcm9tICcuLy4uL21vZGVscy9zZWxlY3QubW9kZWxzJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxuZXhwb3J0IHR5cGUgRmRwU2VsZWN0RGF0YTxUPiA9IFNlbGVjdE9wdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8VFtdPiB8IFRbXTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogYEZkcFNlbGVjdGlvbkNoYW5nZUV2ZW50YCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm91ciBvZiBwbGFpbiB2YWx1ZSBlbWlzc2lvblxuICovXG5leHBvcnQgY2xhc3MgRmRwU2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIFNlbGVjdCBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50XG4gICAgICogQHBhcmFtIHBheWxvYWQgc2VsZWN0ZWQgdmFsdWVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBheWxvYWQ6IGFueSAvLyBDb250YWlucyBzZWxlY3RlZCBpdGVtXG4gICAgKSB7XG4gICAgICAgIHdhcm5PbmNlKCdGZHBTZWxlY3Rpb25DaGFuZ2VFdmVudCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm91ciBvZiBwbGFpbiB2YWx1ZSBlbWlzc2lvbicpO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVNlbGVjdCBleHRlbmRzIENvbGxlY3Rpb25CYXNlSW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBQcm92aWRlcyBtYXhpbXVtIGRlZmF1bHQgaGVpZ2h0IGZvciB0aGUgb3B0aW9uUGFuZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heEhlaWdodCA9ICcyNTBweCc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IHNob3VsZCBiZSBidWlsdCBvbiBtb2JpbGUgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogVGVsbHMgdGhlIHNlbGVjdCBpZiB3ZSBuZWVkIHRvIGdyb3VwIGl0ZW1zICovXG4gICAgQElucHV0KClcbiAgICBncm91cCA9IGZhbHNlO1xuXG4gICAgLyoqIEEgZmllbGQgbmFtZSB0byB1c2UgdG8gZ3JvdXAgZGF0YSBieSAoc3VwcG9ydCBkb3R0ZWQgbm90YXRpb24pICovXG4gICAgQElucHV0KClcbiAgICBncm91cEtleT86IHN0cmluZztcblxuICAgIC8qKiBUaGUgZmllbGQgdG8gc2hvdyBkYXRhIGluIHNlY29uZGFyeSBjb2x1bW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeUtleT86IHN0cmluZztcblxuICAgIC8qKiBTaG93IHRoZSBzZWNvbmQgY29sdW1uIChBcHBsaWNhYmxlIGZvciB0d28gY29sdW1ucyBsYXlvdXQpICovXG4gICAgQElucHV0KClcbiAgICBzaG93U2Vjb25kYXJ5VGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIEdseXBoIHRvIGFkZCBpY29uIGluIHRoZSBzZWxlY3QgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGggPSAnc2xpbS1hcnJvdy1kb3duJztcblxuICAgIC8qKiBUaGUgZWxlbWVudCB0byB3aGljaCB0aGUgcG9wb3ZlciBzaG91bGQgYmUgYXBwZW5kZWQuICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUbzogRWxlbWVudFJlZjtcblxuICAgIC8qKiBUcmlnZ2VyIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICB0cmlnZ2VyVmFsdWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgc2VsZWN0IGJvZHkgd2lkdGguXG4gICAgICogKiBgYXQtbGVhc3RgIHdpbGwgYXBwbHkgYSBtaW5pbXVtIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogKiBMZWF2ZSBibGFuayBmb3Igbm8gZWZmZWN0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbENvbnRyb2xNb2RlOiBQb3BvdmVyRmlsbE1vZGUgPSAnYXQtbGVhc3QnO1xuXG4gICAgLyoqIEhvcml6b250YWxseSBhbGlnbiB0ZXh0IGluc2lkZSB0aGUgc2Vjb25kIGNvbHVtbiAoQXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Vjb25kYXJ5VGV4dEFsaWdubWVudDogVGV4dEFsaWdubWVudCA9ICdyaWdodCc7XG5cbiAgICAvKipcbiAgICAgKiBNYXggd2lkdGggb2YgbGlzdCBjb250YWluZXJcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2lkdGg6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzZWxlY3QgY29tcG9uZW50IGlzIHJlYWRvbmx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBQbGFjZWhvbGRlciBmb3IgdGhlIHNlbGVjdC4gQXBwZWFycyBpbiB0aGVcbiAgICAgKiB0cmlnZ2VyYm94IGlmIG5vIG9wdGlvbiBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciBjbG9zZSB0aGUgcG9wb3ZlciBvbiBvdXRzaWRlIGNsaWNrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKiogQ3VzdG9tIHRlbXBsYXRlIHVzZWQgdG8gYnVpbGQgY29udHJvbCBib2R5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEJpbmRzIHRvIGNvbnRyb2wgYXJpYS1sYWJlbGxlZEJ5IGF0dHJpYnV0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkQnkgPSBudWxsO1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsID0gbnVsbDtcblxuICAgIC8qKiBTZWxlY3QgSW5wdXQgTW9iaWxlIENvbmZpZ3VyYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZyA9IHsgaGFzQ2xvc2VCdXR0b246IHRydWUgfTtcblxuICAgIC8qKlxuICAgICAqIFN0cmluZyByZW5kZXJlZCBhcyBmaXJzdCB2YWx1ZSBpbiB0aGUgcG9wdXAgd2hpY2ggbGV0IHRoZSB1c2VyIHRvIG1ha2UgJ25vIHNlbGVjdGlvbicgZnJvbVxuICAgICAqIGF2YWlsYWJsZSBsaXN0IG9mIHZhbHVlcy4gV2hlbiB0aGlzIG9wdGlvbiBpcyBhY3RpdmUgYW5kIHVzZSBtYWtlIHRoaXMgc2VsZWN0aW9uIHdlIHNhdmUgYVxuICAgICAqIE5VTEwgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5vVmFsdWVMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgbm90IHRvIHdyYXAgdGV4dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9XcmFwVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIFR1cm5zIG9uL29mZiBBZGp1c3RhYmxlIFdpZHRoIGZlYXR1cmUgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9SZXNpemUgPSBmYWxzZTtcblxuICAgIC8qKiBGaXJzdCBDb2x1bW4gcmF0aW8gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmaXJzdENvbHVtblJhdGlvKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fZmlyc3RDb2x1bW5SYXRpbyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RDb2x1bW5SYXRpbygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RDb2x1bW5SYXRpbztcbiAgICB9XG5cbiAgICAvKiogU2Vjb29uZCBDb2x1bW4gcmF0aW8gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWNvbmRDb2x1bW5SYXRpbyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3NlY29uZENvbHVtblJhdGlvID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBzZWNvbmRDb2x1bW5SYXRpbygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2Vjb25kQ29sdW1uUmF0aW87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWluIHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICpcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWluV2lkdGg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBNYXggd2lkdGggb2YgbGlzdCBjb250YWluZXJcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4V2lkdGg/OiBudW1iZXI7XG5cbiAgICAvKiogRGF0YSBmb3Igc3VnZ2VzdGlvbiBsaXN0ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbGlzdCh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9uSXRlbXMgPSB0aGlzLl9jb252ZXJ0VG9PcHRpb25JdGVtcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGxpc3QoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbkl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNhbkNsb3NlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLm1vYmlsZSAmJiB0aGlzLm1vYmlsZUNvbmZpZy5hcHByb3ZlQnV0dG9uVGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpdGVtIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmRwU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTGlzdENvbXBvbmVudClcbiAgICBsaXN0Q29tcG9uZW50OiBMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbVRlbXBsYXRlczogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICAgIC8qKiBDdXN0b20gT3B0aW9uIGl0ZW0gVGVtcGxhdGVcbiAgICAgKiAqIEBoaWRkZW5cbiAgICAgKiAqL1xuICAgIF9vcHRpb25JdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gU2Vjb25kYXJ5IGl0ZW0gVGVtcGxhdGVcbiAgICAgKiBAaGlkZGVuXG4gICAgICogKi9cbiAgICBfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIFNlbGVjdGVkIG9wdGlvbiBpdGVtIFRlbXBsYXRlXG4gICAgICogQGhpZGRlblxuICAgICAqICovXG4gICAgX3NlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29udGVudERlbnNpdHlTZXJ2aWNlOiBDb250ZW50RGVuc2l0eVNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIG9wdGlvbiBpdGVtc1xuICAgICAqIEBoaWRkZW5cbiAgICAgKiAqL1xuICAgIF9vcHRpb25JdGVtczogU2VsZWN0T3B0aW9uSXRlbVtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VhcmNoSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBpcyBvcGVuZWQuICovXG4gICAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBOZWVkIGZvciBvcGVuaW5nIG1vYmlsZSB2ZXJzaW9uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb3BlbkNoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maXJzdENvbHVtblJhdGlvOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlY29uZENvbHVtblJhdGlvOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0Q29uZmlnOiBTZWxlY3RDb25maWcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNkLCBlbGVtZW50UmVmLCBuZ0NvbnRyb2wsIGNvbnRyb2xDb250YWluZXIsIG5nRm9ybSwgZm9ybUZpZWxkLCBmb3JtQ29udHJvbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRXaW5kb3dSZXNpemUoKTtcbiAgICAgICAgdGhpcy5fYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBJcyBlbXB0eSBzZWFyY2ggZmllbGQgKi9cbiAgICBnZXQgaXNFbXB0eVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS50cmltKCkubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKG5ld1ZhbHVlOiBhbnksIGVtaXRPbkNoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGlmIChlbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7IHBheWxvYWQ6IHRoaXMudmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDbG9zZSBsaXN0ICogKi9cbiAgICBjbG9zZShldmVudDogTW91c2VFdmVudCB8IG51bGwgPSBudWxsLCBmb3JjZUNsb3NlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmlkID09PSB0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiAoZm9yY2VDbG9zZSB8fCB0aGlzLmNhbkNsb3NlKSkge1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9vcGVuQ2hhbmdlLm5leHQodGhpcy5faXNPcGVuKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93TGlzdChpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAhPT0gaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBpc09wZW47XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5fb3BlbkNoYW5nZS5uZXh0KGlzT3Blbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVByZXNzRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZhbHVlOiBTZWxlY3RPcHRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVOVEVSKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBwYXNzZWQgdG8gbGlzdCBjb21wb25lbnQgKi9cbiAgICBoYW5kbGVMaXN0Rm9jdXNFc2NhcGUoZGlyZWN0aW9uOiBGb2N1c0VzY2FwZURpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0V2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2dldE9wdGlvbnNMaXN0V2lkdGgoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRPcHRpb25zTGlzdFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gYm9keS5vZmZzZXRXaWR0aCAtIGJvZHkuY2xpZW50V2lkdGg7XG4gICAgICAgIHRoaXMubWF4V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbEJhcldpZHRoIC0gcmVjdC5sZWZ0O1xuICAgICAgICB0aGlzLm1pbldpZHRoID0gcmVjdC53aWR0aCAtIDI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvcmlnaW5hbCBkYXRhIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9PcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbMF07XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0gPSBpc09wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIFNlbGVjdE9wdGlvbkl0ZW1bXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNPYmplY3QgPSBpc0pzT2JqZWN0KGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzU3RyaW5nID0gaXNTdHJpbmcoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgZGF0YSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdE9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dTZWNvbmRhcnlUZXh0ICYmIHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gZGF0YSB0byBTZWNvbmRhcnkgT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRPYmplY3RzVG9TZWNvbmRhcnlPcHRpb25JdGVtczxLPihpdGVtczogS1tdKTogU2VsZWN0T3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdE9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5kaXNwbGF5VmFsdWUodmFsdWUpLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeVRleHQ6IHRoaXMub2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMubG9va3VwVmFsdWUodmFsdWUpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFByaW1pdGl2ZSBkYXRhKEJvb2xlYW4sIFN0cmluZywgTnVtYmVyKSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXM6IHN0cmluZ1tdKTogU2VsZWN0T3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdE9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHsgbGFiZWw6IHZhbHVlLCB2YWx1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9iamVjdFtdIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZSAoRGVmYXVsdClcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0T3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQXNzaWduIGN1c3RvbSB0ZW1wbGF0ZXNcbiAgICAgKiAqL1xuICAgIHByaXZhdGUgX2Fzc2lnbkN1c3RvbVRlbXBsYXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXMuZm9yRWFjaCgodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodGVtcGxhdGUuZ2V0TmFtZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnX29wdGlvbkl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vjb25kYXJ5SXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ19zZWxlY3RlZEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Host
2
2
  import { ControlContainer, NgControl, NgForm } from '@angular/forms';
3
3
  import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
4
4
  import { SelectComponent as CoreSelect } from '@fundamental-ngx/core/select';
5
- import { DynamicComponentService } from '@fundamental-ngx/cdk/utils';
5
+ import { DynamicComponentService, warnOnce } from '@fundamental-ngx/cdk/utils';
6
6
  import { PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';
7
7
  import { BaseSelect } from '../commons/base-select';
8
8
  import { SelectConfig } from '../select.config';
@@ -22,13 +22,13 @@ export class SelectComponent extends BaseSelect {
22
22
  */
23
23
  set selectState(state) {
24
24
  if (isDevMode()) {
25
- console.warn('"selectState" is deprecated. Use "state" instead');
25
+ warnOnce('"selectState" is deprecated. Use "state" instead');
26
26
  }
27
27
  super.state = state;
28
28
  }
29
29
  get selectState() {
30
30
  if (isDevMode()) {
31
- console.warn('"selectState" is deprecated. Use "state" instead');
31
+ warnOnce('"selectState" is deprecated. Use "state" instead');
32
32
  }
33
33
  return super.state;
34
34
  }
@@ -165,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
165
165
  type: ViewChild,
166
166
  args: [CoreSelect, { static: true }]
167
167
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsSUFBSSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBVWhELE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFDM0M7OztPQUdHO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxTQUFTLEVBQUUsRUFBRTtZ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aWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IGFzIENvcmVTZWxlY3QgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2VsZWN0JztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgUGxhdGZvcm1Gb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBCYXNlU2VsZWN0IH0gZnJvbSAnLi4vY29tbW9ucy9iYXNlLXNlbGVjdCc7XG5pbXBvcnQgeyBTZWxlY3RDb25maWcgfSBmcm9tICcuLi9zZWxlY3QuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRkRfRk9STV9GSUVMRF9DT05UUk9MLCB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VsZWN0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBIb2xkcyB0aGUgY29udHJvbCBzdGF0ZSBvZiBzZWxlY3RcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RTdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignXCJzZWxlY3RTdGF0ZVwiIGlzIGRlcHJlY2F0ZWQuIFVzZSBcInN0YXRlXCIgaW5zdGVhZCcpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLnN0YXRlID0gc3RhdGU7XG4gICAgfVxuICAgIGdldCBzZWxlY3RTdGF0ZSgpOiBGb3JtU3RhdGVzIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1wic2VsZWN0U3RhdGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJzdGF0ZVwiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlyZWN0bHkgc2V0cyB2YWx1ZSB0byB0aGUgY29tcG9uZW50IHRoYXQgYXQgdGhlIGVuZHMgdXAgYXQgd3JpdGVWYWx1ZSBhcyB3ZWxsIGZpcmVzXG4gICAgICogY2hhbmdlIGRldGVjdGlvbnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBTaG91bGQgc2VsZWN0IGJlIGlubGluZWQuICovXG4gICAgQElucHV0KClcbiAgICBpbmxpbmUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENvcmVTZWxlY3QsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgc2VsZWN0OiBDb3JlU2VsZWN0O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtLFxuICAgICAgICByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICByZWFkb25seSBfc2VsZWN0Q29uZmlnOiBTZWxlY3RDb25maWcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNkLCBlbGVtZW50UmVmLCBuZ0NvbnRyb2wsIGNvbnRyb2xDb250YWluZXIsIG5nRm9ybSwgX3NlbGVjdENvbmZpZywgZm9ybUZpZWxkLCBmb3JtQ29udHJvbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIC8vIHNldCBjb2x1bW5zIHJhdGlvIGZvciAyXG4gICAgICAgIGlmICh0aGlzLmZpcnN0Q29sdW1uUmF0aW8gJiYgdGhpcy5zZWNvbmRDb2x1bW5SYXRpbykge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29sdW1uc1JhdGlvKHRoaXMuZmlyc3RDb2x1bW5SYXRpbywgdGhpcy5zZWNvbmRDb2x1bW5SYXRpbyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXQgd2lkdGggdG8gYXZvaWQgcmVzaXplXG4gICAgICAgIGlmICh0aGlzLndpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sSXRlbSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mZC1zZWxlY3RfX3RleHQtY29udGVudCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29udHJvbEl0ZW0uc3R5bGUud2lkdGggPSB0aGlzLndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dGluZyBvcHRpb24gaXRlbXNcbiAgICAgICAgdGhpcy5zZWxlY3QuX29wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gb3B0aW9uLl9nZXRIdG1sRWxlbWVudCgpO1xuXG4gICAgICAgICAgICAvLyBzZXQgbWF4V2lkdGggZGVmYXVsdCBpcyA0MHJlbVxuICAgICAgICAgICAgaWYgKHRoaXMubWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25JdGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnbWF4LXdpZHRoOiAnICsgdGhpcy5tYXhXaWR0aCArICdweCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYnkgZGVmYXVsdCB0ZXh0IHdpbGwgYmUgb3ZlcmxhcHBlZCwgYmVsb3cgaXQgd2lsbCBoZWxwIHRvIHRydW5jYXRlXG4gICAgICAgICAgICBpZiAodGhpcy5ub1dyYXBUZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdFRpdGxlID0gb3B0aW9uSXRlbS5xdWVyeVNlbGVjdG9yKCcuZmQtbGlzdF9fdGl0bGUnKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdFRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RUaXRsZUlubmVySFRNTCA9IGxpc3RUaXRsZS5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RUaXRsZS5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgbGlzdFRpdGxlSW5uZXJIVE1MKTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRpdGxlLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGxpc3RUaXRsZUlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RUaXRsZS5jbGFzc0xpc3QuYWRkKCdmZC1saXN0X190aXRsZS0tbm8td3JhcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgaXMgc2VsZWN0ZWQgaXRlbSBzZWxlY3RlZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfaXNTZWxlY3RlZE9wdGlvbkl0ZW0oc2VsZWN0ZWRJdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IHRoaXMubG9va3VwVmFsdWUoc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblNlbGVjdGlvbih2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q29sdW1uc1JhdGlvKGZpcnN0Q29sdW1uUmF0aW86IG51bWJlciwgc2Vjb25kQ29sdW1uUmF0aW86IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB0b3RhbFByb3BvcnRpb25zID0gZmlyc3RDb2x1bW5SYXRpbyArIHNlY29uZENvbHVtblJhdGlvO1xuICAgICAgICBjb25zdCBmaXJzdENvbHVtblByb3BvcnRpb24gPSBNYXRoLnJvdW5kKChmaXJzdENvbHVtblJhdGlvIC8gdG90YWxQcm9wb3J0aW9ucykgKiAxMDApO1xuICAgICAgICBjb25zdCBzZWNvbmRDb2x1bW5Qcm9wb3J0aW9uID0gMTAwIC0gZmlyc3RDb2x1bW5Qcm9wb3J0aW9uO1xuXG4gICAgICAgIC8vIHNldHRpbmcgb3B0aW9uIGl0ZW1zXG4gICAgICAgIHRoaXMuc2VsZWN0Ll9vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IG9wdGlvbi5fZ2V0SHRtbEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlRWxlbWVudCA9IDxIVE1MRWxlbWVudD5vcHRpb25JdGVtLnF1ZXJ5U2VsZWN0b3IoJ1tmZC1saXN0LXRpdGxlXScpO1xuICAgICAgICAgICAgdGhpcy5fc2V0T3B0aW9uQXR0cmlidXRlKHRpdGxlRWxlbWVudCwgZmlyc3RDb2x1bW5Qcm9wb3J0aW9uKTtcblxuICAgICAgICAgICAgY29uc3Qgc2Vjb25kYXJ5RWxlbWVudCA9IDxIVE1MRWxlbWVudD5vcHRpb25JdGVtLnF1ZXJ5U2VsZWN0b3IoJ1tmZC1saXN0LXNlY29uZGFyeV0nKTtcbiAgICAgICAgICAgIHRoaXMuX3NldE9wdGlvbkF0dHJpYnV0ZShzZWNvbmRhcnlFbGVtZW50LCBzZWNvbmRDb2x1bW5Qcm9wb3J0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRPcHRpb25BdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHByb3BvcnRpb246IG51bWJlcik6IHZvaWQge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnd2lkdGg6ICcgKyBwcm9wb3J0aW9uICsgJyU7IG1heC13aWR0aDogJyArIHByb3BvcnRpb24gKyAnJScpO1xuICAgIH1cbn1cbiIsIjxmZC1zZWxlY3RcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtnbHlwaF09XCJnbHlwaFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgIFtjb250cm9sVGVtcGxhdGVdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICBbbWF4SGVpZ2h0XT1cIm1heEhlaWdodFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInZhbHVlXCJcbiAgICBbYXR0ci50b29sdGlwXT1cInZhbHVlXCJcbiAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbYXR0ci5yb2xlXT1cIidsaXN0Ym94J1wiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgIFtzdGF0ZU1lc3NhZ2VdPVwic3RhdGVNZXNzYWdlXCJcbiAgICBbbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgW21vYmlsZUNvbmZpZ109XCJtb2JpbGVDb25maWdcIlxuICAgIFtpbmxpbmVdPVwiaW5saW5lXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwiX29uU2VsZWN0aW9uKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bGkgZmQtb3B0aW9uICpuZ0lmPVwibm9WYWx1ZUxhYmVsXCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW3ZhbHVlXT1cIm51bGxcIj5cbiAgICAgICAge3sgbm9WYWx1ZUxhYmVsIH19XG4gICAgPC9saT5cbiAgICA8bGlcbiAgICAgICAgZmQtb3B0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9vcHRpb25JdGVtczsgaW5kZXggYXMgaW5kZXhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiISFpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAgICA8ZmQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiIFtnbHlwaF09XCJpdGVtLmljb25cIiBjbGFzcz1cImZkLXRlbXBsYXRlLWljb24gaWNvbi1tYXJnaW5cIj48L2ZkLWljb24+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IGl0ZW0sIGluZGV4OiBpbmRleCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBzZWNvbmRhcnlcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlY29uZGFyeVRleHRTb3VyY2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uSXRlbTogaXRlbSB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGk+XG48L2ZkLXNlbGVjdD5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgI2xpc3RJdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJfaXNTZWxlY3RlZE9wdGlvbkl0ZW0ob3B0aW9uSXRlbSkgJiYgISFfc2VsZWN0ZWRJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfc2VsZWN0ZWRJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUsIGluZGV4OiBpbmRleCB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShfaXNTZWxlY3RlZE9wdGlvbkl0ZW0ob3B0aW9uSXRlbSkgJiYgX3NlbGVjdGVkSXRlbVRlbXBsYXRlKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25JdGVtU291cmNlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IG9wdGlvbkl0ZW0sIGluZGV4OiBpbmRleCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgI29wdGlvbkl0ZW1Tb3VyY2U+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfb3B0aW9uSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwib3B0aW9uSXRlbS5sYWJlbFwiPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfb3B0aW9uSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9vcHRpb25JdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb25JdGVtLnZhbHVlLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiAjc2Vjb25kYXJ5VGV4dFNvdXJjZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NlY29uZGFyeVRleHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT1cInNlY29uZGFyeVRleHRBbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIGZkLWxpc3Qtc2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25JdGVtLnNlY29uZGFyeVRleHRcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWNvbmRhcnlJdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsSUFBSSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7OztBQVVoRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBQzNDOzs7T0FHRztJQUNILElBQ0ksV0FBVyxDQUFDLEtBQWlCO1FBQzdCLElBQUksU0FBUyxF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QUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUIsQ0FBQyxPQUFvQixFQUFFLFVBQWtCO1FBQ2hFLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7OEdBaElRLGVBQWUsdVRBZ0RvQixhQUFhLHlEQUNiLHFCQUFxQjtrR0FqRHhELGVBQWUsK0dBRmIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxrRUFzQy9FLFVBQVUscUZDdkV6Qiw2OEdBK0ZBOzsyRkQ1RGEsZUFBZTtrQkFSM0IsU0FBUzsrQkFDSSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MEJBNkNyRixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUdoQixRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwRCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0EzQzdELFdBQVc7c0JBRGQsS0FBSztnQkFtQkYsS0FBSztzQkFEUixLQUFLO2dCQVVOLE1BQU07c0JBREwsS0FBSztnQkFLTixNQUFNO3NCQURMLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIGlzRGV2TW9kZSxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuXG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgYXMgQ29yZVNlbGVjdCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zZWxlY3QnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgUGxhdGZvcm1Gb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBCYXNlU2VsZWN0IH0gZnJvbSAnLi4vY29tbW9ucy9iYXNlLXNlbGVjdCc7XG5pbXBvcnQgeyBTZWxlY3RDb25maWcgfSBmcm9tICcuLi9zZWxlY3QuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRkRfRk9STV9GSUVMRF9DT05UUk9MLCB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VsZWN0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBIb2xkcyB0aGUgY29udHJvbCBzdGF0ZSBvZiBzZWxlY3RcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RTdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKCdcInNlbGVjdFN0YXRlXCIgaXMgZGVwcmVjYXRlZC4gVXNlIFwic3RhdGVcIiBpbnN0ZWFkJyk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG4gICAgZ2V0IHNlbGVjdFN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKCdcInNlbGVjdFN0YXRlXCIgaXMgZGVwcmVjYXRlZC4gVXNlIFwic3RhdGVcIiBpbnN0ZWFkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVyLnN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpcmVjdGx5IHNldHMgdmFsdWUgdG8gdGhlIGNvbXBvbmVudCB0aGF0IGF0IHRoZSBlbmRzIHVwIGF0IHdyaXRlVmFsdWUgYXMgd2VsbCBmaXJlc1xuICAgICAqIGNoYW5nZSBkZXRlY3Rpb25zXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogU2hvdWxkIHNlbGVjdCBiZSBpbmxpbmVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5saW5lID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDb3JlU2VsZWN0LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHNlbGVjdDogQ29yZVNlbGVjdDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0Zvcm06IE5nRm9ybSxcbiAgICAgICAgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX3NlbGVjdENvbmZpZzogU2VsZWN0Q29uZmlnLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFxuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIF9zZWxlY3RDb25maWcsIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgICAgICAvLyBzZXQgY29sdW1ucyByYXRpbyBmb3IgMlxuICAgICAgICBpZiAodGhpcy5maXJzdENvbHVtblJhdGlvICYmIHRoaXMuc2Vjb25kQ29sdW1uUmF0aW8pIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbHVtbnNSYXRpbyh0aGlzLmZpcnN0Q29sdW1uUmF0aW8sIHRoaXMuc2Vjb25kQ29sdW1uUmF0aW8pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0IHdpZHRoIHRvIGF2b2lkIHJlc2l6ZVxuICAgICAgICBpZiAodGhpcy53aWR0aCkge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbEl0ZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZmQtc2VsZWN0X190ZXh0LWNvbnRlbnQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnRyb2xJdGVtLnN0eWxlLndpZHRoID0gdGhpcy53aWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldHRpbmcgb3B0aW9uIGl0ZW1zXG4gICAgICAgIHRoaXMuc2VsZWN0Ll9vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IG9wdGlvbi5fZ2V0SHRtbEVsZW1lbnQoKTtcblxuICAgICAgICAgICAgLy8gc2V0IG1heFdpZHRoIGRlZmF1bHQgaXMgNDByZW1cbiAgICAgICAgICAgIGlmICh0aGlzLm1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uSXRlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ21heC13aWR0aDogJyArIHRoaXMubWF4V2lkdGggKyAncHgnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgdGV4dCB3aWxsIGJlIG92ZXJsYXBwZWQsIGJlbG93IGl0IHdpbGwgaGVscCB0byB0cnVuY2F0ZVxuICAgICAgICAgICAgaWYgKHRoaXMubm9XcmFwVGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RUaXRsZSA9IG9wdGlvbkl0ZW0ucXVlcnlTZWxlY3RvcignLmZkLWxpc3RfX3RpdGxlJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0VGl0bGVJbm5lckhUTUwgPSBsaXN0VGl0bGUuaW5uZXJIVE1MO1xuICAgICAgICAgICAgICAgICAgICBsaXN0VGl0bGUuc2V0QXR0cmlidXRlKCd0aXRsZScsIGxpc3RUaXRsZUlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RUaXRsZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBsaXN0VGl0bGVJbm5lckhUTUwpO1xuICAgICAgICAgICAgICAgICAgICBsaXN0VGl0bGUuY2xhc3NMaXN0LmFkZCgnZmQtbGlzdF9fdGl0bGUtLW5vLXdyYXAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lIGlzIHNlbGVjdGVkIGl0ZW0gc2VsZWN0ZWRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2lzU2VsZWN0ZWRPcHRpb25JdGVtKHNlbGVjdGVkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSB0aGlzLmxvb2t1cFZhbHVlKHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWxlY3Rpb24odmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbHVtbnNSYXRpbyhmaXJzdENvbHVtblJhdGlvOiBudW1iZXIsIHNlY29uZENvbHVtblJhdGlvOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG90YWxQcm9wb3J0aW9ucyA9IGZpcnN0Q29sdW1uUmF0aW8gKyBzZWNvbmRDb2x1bW5SYXRpbztcbiAgICAgICAgY29uc3QgZmlyc3RDb2x1bW5Qcm9wb3J0aW9uID0gTWF0aC5yb3VuZCgoZmlyc3RDb2x1bW5SYXRpbyAvIHRvdGFsUHJvcG9ydGlvbnMpICogMTAwKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kQ29sdW1uUHJvcG9ydGlvbiA9IDEwMCAtIGZpcnN0Q29sdW1uUHJvcG9ydGlvbjtcblxuICAgICAgICAvLyBzZXR0aW5nIG9wdGlvbiBpdGVtc1xuICAgICAgICB0aGlzLnNlbGVjdC5fb3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbkl0ZW0gPSBvcHRpb24uX2dldEh0bWxFbGVtZW50KCk7XG4gICAgICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+b3B0aW9uSXRlbS5xdWVyeVNlbGVjdG9yKCdbZmQtbGlzdC10aXRsZV0nKTtcbiAgICAgICAgICAgIHRoaXMuX3NldE9wdGlvbkF0dHJpYnV0ZSh0aXRsZUVsZW1lbnQsIGZpcnN0Q29sdW1uUHJvcG9ydGlvbik7XG5cbiAgICAgICAgICAgIGNvbnN0IHNlY29uZGFyeUVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+b3B0aW9uSXRlbS5xdWVyeVNlbGVjdG9yKCdbZmQtbGlzdC1zZWNvbmRhcnldJyk7XG4gICAgICAgICAgICB0aGlzLl9zZXRPcHRpb25BdHRyaWJ1dGUoc2Vjb25kYXJ5RWxlbWVudCwgc2Vjb25kQ29sdW1uUHJvcG9ydGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0T3B0aW9uQXR0cmlidXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwcm9wb3J0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3dpZHRoOiAnICsgcHJvcG9ydGlvbiArICclOyBtYXgtd2lkdGg6ICcgKyBwcm9wb3J0aW9uICsgJyUnKTtcbiAgICB9XG59XG4iLCI8ZmQtc2VsZWN0XG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbZ2x5cGhdPVwiZ2x5cGhcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJjbG9zZU9uT3V0c2lkZUNsaWNrXCJcbiAgICBbY29udHJvbFRlbXBsYXRlXT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICBbZmlsbENvbnRyb2xNb2RlXT1cImZpbGxDb250cm9sTW9kZVwiXG4gICAgW21heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ2YWx1ZVwiXG4gICAgW2F0dHIudG9vbHRpcF09XCJ2YWx1ZVwiXG4gICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2F0dHIucm9sZV09XCInbGlzdGJveCdcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICBbc3RhdGVNZXNzYWdlXT1cInN0YXRlTWVzc2FnZVwiXG4gICAgW21vYmlsZV09XCJtb2JpbGVcIlxuICAgIFttb2JpbGVDb25maWddPVwibW9iaWxlQ29uZmlnXCJcbiAgICBbaW5saW5lXT1cImlubGluZVwiXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cIl9vblNlbGVjdGlvbigkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGxpIGZkLW9wdGlvbiAqbmdJZj1cIm5vVmFsdWVMYWJlbFwiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFt2YWx1ZV09XCJudWxsXCI+XG4gICAgICAgIHt7IG5vVmFsdWVMYWJlbCB9fVxuICAgIDwvbGk+XG4gICAgPGxpXG4gICAgICAgIGZkLW9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfb3B0aW9uSXRlbXM7IGluZGV4IGFzIGluZGV4XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiEhaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgICAgPGZkLWljb24gKm5nSWY9XCJpdGVtLmljb25cIiBbZ2x5cGhdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJmZC10ZW1wbGF0ZS1pY29uIGljb24tbWFyZ2luXCI+PC9mZC1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0SXRlbVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBpdGVtLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgc2Vjb25kYXJ5XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWNvbmRhcnlUZXh0U291cmNlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IGl0ZW0gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2xpPlxuPC9mZC1zZWxlY3Q+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiICNsaXN0SXRlbT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiX2lzU2VsZWN0ZWRPcHRpb25JdGVtKG9wdGlvbkl0ZW0pICYmICEhX3NlbGVjdGVkSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3NlbGVjdGVkSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb25JdGVtLnZhbHVlLCBpbmRleDogaW5kZXggfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoX2lzU2VsZWN0ZWRPcHRpb25JdGVtKG9wdGlvbkl0ZW0pICYmIF9zZWxlY3RlZEl0ZW1UZW1wbGF0ZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uSXRlbVNvdXJjZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiICNvcHRpb25JdGVtU291cmNlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX29wdGlvbkl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm9wdGlvbkl0ZW0ubGFiZWxcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX29wdGlvbkl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfb3B0aW9uSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uSXRlbS52YWx1ZSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LW9wdGlvbkl0ZW09XCJvcHRpb25JdGVtXCIgI3NlY29uZGFyeVRleHRTb3VyY2U+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTZWNvbmRhcnlUZXh0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlY29uZGFyeUl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09XCJzZWNvbmRhcnlUZXh0QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LXNlY29uZGFyeVxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9uSXRlbS5zZWNvbmRhcnlUZXh0XCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2Vjb25kYXJ5SXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3NlY29uZGFyeUl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb25JdGVtLnZhbHVlIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Host, HostListener, Inject, Input, isDevMode, Optional, Self, SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { ControlContainer, NgControl, NgForm } from '@angular/forms';
3
3
  import { BACKSPACE, DELETE } from '@angular/cdk/keycodes';
4
- import { KeyUtil } from '@fundamental-ngx/cdk/utils';
4
+ import { KeyUtil, warnOnce } from '@fundamental-ngx/cdk/utils';
5
5
  import { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';
6
6
  import { TextAreaConfig } from './text-area.config';
7
7
  import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
@@ -23,13 +23,13 @@ export class TextAreaComponent extends BaseInput {
23
23
  * set state of individual checkbox. Used by CBG to set checkbox states */
24
24
  set stateType(state) {
25
25
  if (isDevMode()) {
26
- console.warn('"stateType" is deprecated. Use "state" instead');
26
+ warnOnce('"stateType" is deprecated. Use "state" instead');
27
27
  }
28
28
  super.state = state;
29
29
  }
30
30
  get stateType() {
31
31
  if (isDevMode()) {
32
- console.warn('"stateType" is deprecated. Use "state" instead');
32
+ warnOnce('"stateType" is deprecated. Use "state" instead');
33
33
  }
34
34
  return super.state;
35
35
  }
@@ -360,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
360
360
  type: HostListener,
361
361
  args: ['keyup', ['$event']]
362
362
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBRVQsUUFBUSxFQUNSLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQUVsRixNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUlqRDs7O0dBR0c7QUFlSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQXVENUM7OzhFQUUwRTtJQUMxRSxJ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O2dCQU9OLE9BQU87c0JBRE4sS0FBSztnQkFPRixTQUFTO3NCQURaLEtBQUs7Z0JBa0JGLEtBQUs7c0JBRFIsS0FBSztnQkFpQk4sZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsU0FBUztnQkFtTHBCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQkFDS1NQQUNFLCBERUxFVEUgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQgeyBLZXlVdGlsLCBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlSW5wdXQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgUGxhdGZvcm1Gb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBUZXh0QXJlYUNvbmZpZyB9IGZyb20gJy4vdGV4dC1hcmVhLmNvbmZpZyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbmNvbnN0IFZBTElEX1dSQVBfVFlQRVMgPSBbJ2hhcmQnLCAnc29mdCcsICdvZmYnXTtcblxuZXhwb3J0IHR5cGUgV3JhcFR5cGUgPSAnaGFyZCcgfCAnc29mdCcgfCAnb2ZmJztcblxuLyoqXG4gKiBUZXh0YXJlYSBmaWVsZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNvbXBsaWFudCB3aXRoIFBsYXRmb3JtJ3MgRm9ybUdyb3VwL0Zvcm1GaWVsZCBkZXNpZ25cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXRleHRhcmVhJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3RleHQtYXJlYS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUZXh0QXJlYUNvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgaGVpZ2h0IHRvIHdoaWNoIHRoZSB0ZXh0YXJlYSB3aWxsIGdyb3cgd2hlbiBgZ3Jvd2luZ2AgaXMgc2V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiByb3dzIHRoYXQgd2lsbCBiZSB2aXNpYmxlIHdoZW4gYGdyb3dpbmdgIGlzIHNldC5cbiAgICAgKiBJZiBib3RoIGBncm93aW5nTWF4TGluZXNgIGFuZCBgaGVpZ2h0YCBhcmUgcHJvdmlkZWQsIGBoZWlnaHRgIHZhbHVlIHRha2VzIHByZWNlZGVuY2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncm93aW5nTWF4TGluZXM6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dGFyZWEgYGNvbHNgIGF0dHJpYnV0ZSB3cmFwcGVkLSB0aGUgbnVtYmVyIG9mIGxldHRlcnMgdmlzaWJsZSBwZXIgbGluZS5cbiAgICAgKiBJZiB3aWR0aCBpcyBzZXQgdG8gYXV0bywgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHM6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0YXJlYSBgd3JhcGAgYXR0cmlidXRlIC0gY2FuIGJlIG9uZSBvZiB0aHJlZTogJ29mZicsICdoYXJkJyBvciAnc29mdCcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB3cmFwVHlwZTogV3JhcFR5cGUgPSAnc29mdCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0ZXh0YXJlYSBpcyByZWFkb25seVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCB0byBlbnRlci5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIGBtYXhMZW5ndGhgIGhhcyBuYXRpdmUgdGV4dGFyZWEncyBiZWhhdmlvciBvZiBkaXNhbGxvd2luZyB0eXBpbmcgYmV5b25kIGBtYXhMZW5ndGhgLlxuICAgICAqIElmIGBzaG93RXhjZWVkZWRUZXh0YCBpcyB0cnVlLCB1c2VyIGlzIGFsbG93ZWQgdG8gdHlwZSBiZXlvbmQgYG1heExlbmd0aGAsIGJ1dCBlcnJvciBzdGF0ZXMgYW5kIGNvdW50ZXIgbWVzc2FnZXMgc2hvd2luZ1xuICAgICAqIHRoZSBleGNlZWRlZCBjb3VudCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhMZW5ndGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY291bnRlciBtZXNzYWdlIHNob3VsZCBiZSBzaG93bi5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIG5vIHN0YXRlIGNoYW5nZXMgb3IgZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiBVc2VyIGlzIHNpbXBseSBub3QgYWxsb3dlZCB0byB0eXBlXG4gICAgICogYmV5b25kIHRoZSBgbWF4TGVuZ3RoYCBjaGFyYWN0ZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0V4Y2VlZGVkVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIHRleHRhcmVhIGNhbiBncm93LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3Jvd2luZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBzZXQgc3RhdGUgb2YgaW5kaXZpZHVhbCBjaGVja2JveC4gVXNlZCBieSBDQkcgdG8gc2V0IGNoZWNrYm94IHN0YXRlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlVHlwZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignXCJzdGF0ZVR5cGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJzdGF0ZVwiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5zdGF0ZSA9IHN0YXRlO1xuICAgIH1cbiAgICBnZXQgc3RhdGVUeXBlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignXCJzdGF0ZVR5cGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJzdGF0ZVwiIGluc3RlYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHRleHRhcmVhJ3MgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiBjdXN0b20gdmFsdWUgbm90IHNldCwgd2Ugc2hvdWxkIHNldC9yZXNldCBjb3VudGVyIHRvIG1heGxlbmd0aCB2YWx1ZSB3aGVuIGl0IGJlY29tZXMgdW5kZWZpbmVkXG4gICAgICAgICAgICB0aGlzLmV4Y2VlZGVkQ2hhckNvdW50ID0gdGhpcy5tYXhMZW5ndGggPyB0aGlzLm1heExlbmd0aCA6IDA7XG4gICAgICAgICAgICAvLyByZXNldCBzdGF0ZSBieSByZXNldHRpbmcgdmFsdWVcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb3VudGVyJylcbiAgICBfdGV4dGFyZWFDb3VudGVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhc1RleHRFeGNlZWRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gZXhjZXNzIGNoYXJhY3RlciBjb3VudCAqL1xuICAgIGV4Y2VlZGVkQ2hhckNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIGEgc3RyaW5nIHBsYWNlaG9sZGVyIHRoYXQgdG9nZ2xlcyBiZXR3ZWVuICdyZW1haW5pbmcnIGFuZCAnZXhjZXNzJyBmb3IgdGhlIHNlbGVjdCBJQ1UgZXhwcmVzc2lvbiAqL1xuICAgIGNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9ICdyZW1haW5pbmcnO1xuXG4gICAgLyoqIEBoaWRkZW4gZmxhZyB0byBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbml0aWFsIHZhbHVlIHNldCAqL1xuICAgIGlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLyoqIHRvIGtlZXAgdHJhY2sgb2YgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHRhcmVhICovXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFDaGFyQ291bnQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1Bhc3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIGZvciBpMThuIGNvdW50ZXIgbWVzc2FnZSB0cmFuc2xhdGlvbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVtYWluaW5nVGV4dCA9ICdyZW1haW5pbmcnO1xuICAgIC8qKiBmb3IgaTE4biBjb3VudGVyIG1lc3NhZ2UgdHJhbnNsYXRpb24gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2Vzc1RleHQgPSAnZXhjZXNzJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAc2VlIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbC5leHRyYUNvbnRlbnRIZWlnaHRQeFxuICAgICAqL1xuICAgIGdldCBleHRyYUNvbnRlbnRIZWlnaHRQeCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dGFyZWFDb3VudGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9zaG91bGRUcmFja1RleHRMaW1pdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4TGVuZ3RoID4gMCAmJiAhdGhpcy5zaG93RXhjZWVkZWRUZXh0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBwcm90ZWN0ZWQgX3RleHRBcmVhQ29uZmlnOiBUZXh0QXJlYUNvbmZpZ1xuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXBUeXBlIHx8IFZBTElEX1dSQVBfVFlQRVMuaW5kZXhPZih0aGlzLndyYXBUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGV4dGFyZWEgd3JhcCB0eXBlICR7dGhpcy53cmFwVHlwZX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIG5vdCBjdXN0b20gc2V0LCBzZXQgY291bnRlciB0byBtYXggbGVuZ3RoIHZhbHVlLCBlbHNlIGl0IGNhbGN1bGF0ZXMgcmVtYWluaW5nL2V4Y2VlZGVkIGNoYXJhY3RlcnMuXG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoIHx8IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHNldCBtYXggaGVpZ2h0XG4gICAgICAgIHRoaXMuX3NldE1heEhlaWdodCgpO1xuXG4gICAgICAgIC8vIGRvbid0IHNldCBhbnkgZXJyb3Igc3RhdGUgaWYgd2UgYXJlIG5vdCBzaG93aW5nIGNvdW50ZXIgbWVzc2FnZVxuICAgICAgICBpZiAoIXRoaXMuX3Nob3VsZFRyYWNrVGV4dExpbWl0KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gdmFsdWUgaXMgY3VzdG9tIHNldChpbml0aWFsIHZhbHVlIGlzIHByZXNlbnQpLCB0aGUgaGVpZ2h0cyBkb24ndCBnZXRcbiAgICAgICAgLy8gc2V0IHRvIHNob3cgdGhlIGZ1bGwgdGV4dCBpbiB0aGUgbmdBZnRlclZpZXdJbml0IGltbWVkaWF0ZWx5LiB0aGVyZWZvcmUsIHdlIGNhbGwgYXV0b0dyb3dUZXh0QXJlYSBpblxuICAgICAgICAvLyBuZ0FmdGVyVmlld0NoZWNrZWQgYW5kIGRldGVjdCBjaGFuZ2VzIGFnYWluLlxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmlzVmFsdWVDdXN0b21TZXQpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b0dyb3dUZXh0QXJlYSgpOyAvLyBpZiBhcHBsaWNhYmxlLCBncm93IHRoZSB0ZXh0YXJlYSB3aGVuIHZhbHVlIGlzIGN1c3RvbSBzZXRcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3RleHRhcmVhOiBuZ0FmdGVyVmlld0NoZWNrZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiB3cml0ZSB2YWx1ZSBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSA/PyAnJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCd0ZXh0YXJlYTogd3JpdGVWYWx1ZScpO1xuICAgIH1cblxuICAgIC8qKiB1cGRhdGUgdGhlIGNvdW50ZXIgbWVzc2FnZSBhbmQgcmVsYXRlZCBpbnRlcmFjdGlvbnMgKi9cbiAgICB1cGRhdGVDb3VudGVySW50ZXJhY3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA9IHRoaXMudmFsdWU/Lmxlbmd0aCA/PyAwO1xuXG4gICAgICAgIGlmICh0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgLy8gbmV3bHkgYWRkZWQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaXRlcmF0aW9uLCByZW1vdmUgaWYgaXNzdWUgZm91bmRcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVMZW5ndGhPbkN1c3RvbVNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIGlmIGV4Y2VlZGVkIG1heGxlbmd0aCB3aGVuIHNldCBhcyBhIHZhbHVlIGluIGNvZGUsIGhpZ2hsaWdodCB0aGUgZXhjZWVkZWQgdGV4dC4gKi9cbiAgICB2YWxpZGF0ZUxlbmd0aE9uQ3VzdG9tU2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUGFzdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5tYXhMZW5ndGgsIHRoaXMuX3RleHRBcmVhQ2hhckNvdW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudGVyRXhjZXNzT3JSZW1haW5pbmcgPSB0aGlzLmV4Y2Vzc1RleHQ7XG4gICAgICAgICAgICB0aGlzLmV4Y2VlZGVkQ2hhckNvdW50ID0gdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgLSB0aGlzLm1heExlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5yZW1haW5pbmdUZXh0O1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoIC0gdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1Bhc3RlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBoYW5kbGUgZXhjZWVkZWQgbWF4bGVuZ3RoIGNhc2Ugd2hlbiB0ZXh0IGlzIHBhc3RlZCAqL1xuICAgIGhhbmRsZVBhc3RlSW50ZXJhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzUGFzdGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBXcmFwcGVkIGluIHRpbWVvdXQgdG8gbWFrZSBzZWxlY3RpbmcgcmFuZ2Ugd29ya2luZ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpKTtcbiAgICB9XG5cbiAgICAvKiogaGFuZGxlIGF1dG8gZ3Jvd2luZyBvZiB0ZXh0YXJlYSAqL1xuICAgIGF1dG9Hcm93VGV4dEFyZWEoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdyb3dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2luaGVyaXQnO1xuICAgICAgICAgICAgY29uc3QgdGV4dGFyZWFUb3RhbEhlaWdodCA9IHRoaXMuX2dldFRleHRhcmVhVG90YWxIZWlnaHQoKTtcbiAgICAgICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHBhcnNlSW50KHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0IGFzIHN0cmluZywgMTApO1xuICAgICAgICAgICAgaWYgKG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0YXJlYVRvdGFsSGVpZ2h0IDw9IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRleHRhcmVhVG90YWxIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbWF4SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gbm8gYm91bmQgbWF4IGhlaWdodCwga2VlcCBncm93aW5nXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0ZXh0YXJlYVRvdGFsSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBsaW5lIGhlaWdodCBvZiB0ZXh0YXJlYVxuICAgICAqL1xuICAgIGdldFRleHRhcmVhTGluZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbXB1dGVkIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fdGFyZ2V0RWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaGVpZ2h0XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAyMDsgLy8gZGVmYXVsdCBsaW5lIGhlaWdodCBpZiBub3RoaW5nIGlzIGRlZmluZWRcbiAgICB9XG5cbiAgICAvKiogd2hlbiBiYWNrcHJlc3Mgb3IgZGVsZXRlIGtleSBpcyBwcmVzc2VkIHdoZW4gc2hvd0V4Y2VlZGVkVGV4dCBmaWVsZCBpcyBub3Qgc2V0LCBzaW1wbHkgcmVtb3ZlIGV4Y2VzcyBjaGFyYWN0ZXJzLFxuICAgIC8qIGVsc2UgaGFuZGxlIGF1dG9ncm93IGNhc2VcbiAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVCYWNrUHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgbm90IHNob3dpbmcgZXhjZWVkZWQgdGV4dCBtZXNzYWdlL2ludGVyYWN0aW9ucyBvciBncm93aW5nLCBhbmQgY3VzdG9tIHZhbHVlIHNldFxuICAgICAgICBpZiAodGhpcy5ncm93aW5nKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9Hcm93VGV4dEFyZWEoKTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWx1ZUN1c3RvbVNldCA9IGZhbHNlOyAvLyBzZXQgaXQgdG8gZmFsc2UgZmlyc3QgdGltZSBpdCBjb21lcyBoZXJlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFRyYWNrVGV4dExpbWl0ICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbREVMRVRFLCBCQUNLU1BBQ0VdKSkge1xuICAgICAgICAgICAgLy8gZm9yIHRoZSBjdXN0b20gdmFsdWUgc2V0IGFuZCBzaG93RXhjZWVkZWRUZXh0PWZhbHNlIGNhc2UsIG9uIGFueSBrZXkgcHJlc3MsIHJlbW92ZSBleGNlc3MgY2hhcmFjdGVyc1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBleGNlc3MgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCwgdGhpcy5tYXhMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTsgLy8gc2luY2UgdmFsdWUgaXMgbm93IGNoYW5nZWQsIGl0IGlzIG5vIGxvbmdlciBjdXN0b20gc2V0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IHRoZSB1cGRhdGVkIHN0YXRlIHdoZW4gY2hhcmFjdGVyIGNvdW50IGJyZWFjaGVzIGBtYXhMZW5ndGhgXG4gICAgICovXG4gICAgZ2V0VXBkYXRlZFN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICBpZiAodGhpcy5fZ2V0Q29udGVudExlbmd0aCgpID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzVGV4dEV4Y2VlZGVkID0gdHJ1ZTsgLy8gc2V0IGZsYWcgZm9yIGVycm9yIG1lc3NhZ2UgdG8gYWxzbyBjaGFuZ2UgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5leGNlc3NUZXh0O1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc1RleHRFeGNlZWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9IHRoaXMucmVtYWluaW5nVGV4dDtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTsgLy8gcmV0dXJuIGFueSBvdGhlciBlcnJvcnMgZm91bmQgYnkgcGFyZW50IGZvcm0gZmllbGRcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBOYXRpdmUgZWxlbWVudCAgKi9cbiAgICBnZXQgX3RhcmdldEVsZW1lbnQoKTogSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGdldCB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0YXJlYSBjb250ZW50ICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29udGVudExlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgY29udGVudExlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLl90YXJnZXRFbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZW50TGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGdldCB0aGUgdG90YWwgaGVpZ2h0IGluY2x1ZGluZyBib3JkZXJzIGFuZCBzY3JvbGwgaGVpZ2h0ICovXG4gICAgcHJpdmF0ZSBfZ2V0VGV4dGFyZWFUb3RhbEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbXB1dGVkIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICAgICAgY29uc3QgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl90YXJnZXRFbGVtZW50KTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBoZWlnaHRcbiAgICAgICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSwgMTApICtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICtcbiAgICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSwgMTApO1xuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gc2V0IGluaXRpYWwgbWF4IGhlaWdodCAqKi9cbiAgICBwcml2YXRlIF9zZXRNYXhIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdyb3dpbmcgJiYgdGhpcy5fdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3Jvd2luZ01heExpbmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLmdyb3dpbmdNYXhMaW5lcyAqIHRoaXMuZ2V0VGV4dGFyZWFMaW5lSGVpZ2h0KCkgKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3dpbmdNYXhMaW5lcykge1xuICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZS4gcm93cyBhdHRyaWJ1dGUgdGFrZXMgY2FyZS5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgICAjaW5wdXRFbGVtZW50UmVmXG4gICAgZmQtZm9ybS1jb250cm9sXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZCArICctY291bnRlcidcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbYXR0ci5yb3dzXT1cImdyb3dpbmcgPyAyIDogaGVpZ2h0ID8gMiA6IGdyb3dpbmdNYXhMaW5lc1wiXG4gICAgW2F0dHIuY29sc109XCJjb2xzXCJcbiAgICBbYXR0ci53cmFwXT1cIndyYXBUeXBlXCJcbiAgICBbYXR0ci5tYXhsZW5ndGhdPVwiIXNob3dFeGNlZWRlZFRleHQgPyBtYXhMZW5ndGggOiBudWxsXCJcbiAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/IHRydWUgOiBudWxsXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbc3RhdGVdPVwiZ2V0VXBkYXRlZFN0YXRlKClcIlxuICAgIChwYXN0ZSk9XCJoYW5kbGVQYXN0ZUludGVyYWN0aW9uKClcIlxuICAgIChibHVyKT1cIl9vbkZvY3VzQ2hhbmdlZChmYWxzZSlcIlxuICAgIChmb2N1cyk9XCJfb25Gb2N1c0NoYW5nZWQodHJ1ZSlcIlxuPjwvdGV4dGFyZWE+XG5cbjwhLS0gSUNVIHJlY29tbWVuZHMgZnVsbCB0ZXh0IGluIGZvcm1hdCAtLT5cbjxkaXZcbiAgICBjbGFzcz1cImZkLXRleHRhcmVhLWNvdW50ZXJcIlxuICAgICpuZ0lmPVwic2hvd0V4Y2VlZGVkVGV4dFwiXG4gICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgIFthdHRyLmlkXT1cImlkICsgJy1jb3VudGVyJ1wiXG4gICAgI2NvdW50ZXJcbj5cbiAgICA8IS0tIHJlbmRlciBzcGFjZXMgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIHZhbHVlIHdoaWxlIHRyYW5zbGF0aW9uIHN0cmluZyBpcyBsb2FkaW5nIGluIG9yZGVyIHRvIGF2b2lkIGNvbnRlbnQganVtcHMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9PT0gJ2V4Y2Vzcyc7IGVsc2UgY2hhcmFjdGVyc1JlbWFpbmluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJcbiAgICAgICAgICAgICAgICAoZXhjZWVkZWRDaGFyQ291bnQgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1UZXh0YXJlYS5jb3VudGVyTWVzc2FnZUNoYXJhY3RlcnNPdmVyVGhlTGltaXRTaW5ndWxhcidcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1UZXh0YXJlYS5jb3VudGVyTWVzc2FnZUNoYXJhY3RlcnNPdmVyVGhlTGltaXRQbHVyYWwnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBjb3VudDogZXhjZWVkZWRDaGFyQ291bnQgfSA6ICcmbmJzcDsmbmJzcDsnXG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2hhcmFjdGVyc1JlbWFpbmluZz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiXG4gICAgICAgICAgICAgICAgKGV4Y2VlZGVkQ2hhckNvdW50ID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzUmVtYWluaW5nU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzUmVtYWluaW5nUGx1cmFsJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGV4Y2VlZGVkQ2hhckNvdW50IH0gOiAnJm5ic3A7Jm5ic3A7J1xuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBRVQsUUFBUSxFQUNSLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sRUFBWSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFFbEYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFJakQ7OztHQUdHO0FBZUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFNBQVM7SUF1RDVDOzs4RUFF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TztzQkFETixLQUFLO2dCQU9GLFNBQVM7c0JBRFosS0FBSztnQkFrQkYsS0FBSztzQkFEUixLQUFLO2dCQWlCTixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxTQUFTO2dCQW1McEIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3QsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCQUNLU1BBQ0UsIERFTEVURSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IEtleVV0aWwsIE51bGxhYmxlLCB3YXJuT25jZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlSW5wdXQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgUGxhdGZvcm1Gb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBUZXh0QXJlYUNvbmZpZyB9IGZyb20gJy4vdGV4dC1hcmVhLmNvbmZpZyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbmNvbnN0IFZBTElEX1dSQVBfVFlQRVMgPSBbJ2hhcmQnLCAnc29mdCcsICdvZmYnXTtcblxuZXhwb3J0IHR5cGUgV3JhcFR5cGUgPSAnaGFyZCcgfCAnc29mdCcgfCAnb2ZmJztcblxuLyoqXG4gKiBUZXh0YXJlYSBmaWVsZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNvbXBsaWFudCB3aXRoIFBsYXRmb3JtJ3MgRm9ybUdyb3VwL0Zvcm1GaWVsZCBkZXNpZ25cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXRleHRhcmVhJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3RleHQtYXJlYS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUZXh0QXJlYUNvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgaGVpZ2h0IHRvIHdoaWNoIHRoZSB0ZXh0YXJlYSB3aWxsIGdyb3cgd2hlbiBgZ3Jvd2luZ2AgaXMgc2V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiByb3dzIHRoYXQgd2lsbCBiZSB2aXNpYmxlIHdoZW4gYGdyb3dpbmdgIGlzIHNldC5cbiAgICAgKiBJZiBib3RoIGBncm93aW5nTWF4TGluZXNgIGFuZCBgaGVpZ2h0YCBhcmUgcHJvdmlkZWQsIGBoZWlnaHRgIHZhbHVlIHRha2VzIHByZWNlZGVuY2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncm93aW5nTWF4TGluZXM6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dGFyZWEgYGNvbHNgIGF0dHJpYnV0ZSB3cmFwcGVkLSB0aGUgbnVtYmVyIG9mIGxldHRlcnMgdmlzaWJsZSBwZXIgbGluZS5cbiAgICAgKiBJZiB3aWR0aCBpcyBzZXQgdG8gYXV0bywgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHM6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0YXJlYSBgd3JhcGAgYXR0cmlidXRlIC0gY2FuIGJlIG9uZSBvZiB0aHJlZTogJ29mZicsICdoYXJkJyBvciAnc29mdCcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB3cmFwVHlwZTogV3JhcFR5cGUgPSAnc29mdCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0ZXh0YXJlYSBpcyByZWFkb25seVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCB0byBlbnRlci5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIGBtYXhMZW5ndGhgIGhhcyBuYXRpdmUgdGV4dGFyZWEncyBiZWhhdmlvciBvZiBkaXNhbGxvd2luZyB0eXBpbmcgYmV5b25kIGBtYXhMZW5ndGhgLlxuICAgICAqIElmIGBzaG93RXhjZWVkZWRUZXh0YCBpcyB0cnVlLCB1c2VyIGlzIGFsbG93ZWQgdG8gdHlwZSBiZXlvbmQgYG1heExlbmd0aGAsIGJ1dCBlcnJvciBzdGF0ZXMgYW5kIGNvdW50ZXIgbWVzc2FnZXMgc2hvd2luZ1xuICAgICAqIHRoZSBleGNlZWRlZCBjb3VudCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhMZW5ndGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY291bnRlciBtZXNzYWdlIHNob3VsZCBiZSBzaG93bi5cbiAgICAgKiBJZiBgc2hvd0V4Y2VlZGVkVGV4dGAgaXMgZmFsc2UsIG5vIHN0YXRlIGNoYW5nZXMgb3IgZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiBVc2VyIGlzIHNpbXBseSBub3QgYWxsb3dlZCB0byB0eXBlXG4gICAgICogYmV5b25kIHRoZSBgbWF4TGVuZ3RoYCBjaGFyYWN0ZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0V4Y2VlZGVkVGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIHRleHRhcmVhIGNhbiBncm93LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3Jvd2luZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBzZXQgc3RhdGUgb2YgaW5kaXZpZHVhbCBjaGVja2JveC4gVXNlZCBieSBDQkcgdG8gc2V0IGNoZWNrYm94IHN0YXRlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlVHlwZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKCdcInN0YXRlVHlwZVwiIGlzIGRlcHJlY2F0ZWQuIFVzZSBcInN0YXRlXCIgaW5zdGVhZCcpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLnN0YXRlID0gc3RhdGU7XG4gICAgfVxuICAgIGdldCBzdGF0ZVR5cGUoKTogRm9ybVN0YXRlcyB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgd2Fybk9uY2UoJ1wic3RhdGVUeXBlXCIgaXMgZGVwcmVjYXRlZC4gVXNlIFwic3RhdGVcIiBpbnN0ZWFkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVyLnN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0YXJlYSdzIHZhbHVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHdoZW4gY3VzdG9tIHZhbHVlIG5vdCBzZXQsIHdlIHNob3VsZCBzZXQvcmVzZXQgY291bnRlciB0byBtYXhsZW5ndGggdmFsdWUgd2hlbiBpdCBiZWNvbWVzIHVuZGVmaW5lZFxuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMubWF4TGVuZ3RoID8gdGhpcy5tYXhMZW5ndGggOiAwO1xuICAgICAgICAgICAgLy8gcmVzZXQgc3RhdGUgYnkgcmVzZXR0aW5nIHZhbHVlXG4gICAgICAgICAgICBzdXBlci5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY291bnRlcicpXG4gICAgX3RleHRhcmVhQ291bnRlcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYXNUZXh0RXhjZWVkZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIGV4Y2VzcyBjaGFyYWN0ZXIgY291bnQgKi9cbiAgICBleGNlZWRlZENoYXJDb3VudCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBhIHN0cmluZyBwbGFjZWhvbGRlciB0aGF0IHRvZ2dsZXMgYmV0d2VlbiAncmVtYWluaW5nJyBhbmQgJ2V4Y2VzcycgZm9yIHRoZSBzZWxlY3QgSUNVIGV4cHJlc3Npb24gKi9cbiAgICBjb3VudGVyRXhjZXNzT3JSZW1haW5pbmcgPSAncmVtYWluaW5nJztcblxuICAgIC8qKiBAaGlkZGVuIGZsYWcgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYW4gaW5pdGlhbCB2YWx1ZSBzZXQgKi9cbiAgICBpc1ZhbHVlQ3VzdG9tU2V0ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8qKiB0byBrZWVwIHRyYWNrIG9mIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0YXJlYSAqL1xuICAgIHByaXZhdGUgX3RleHRBcmVhQ2hhckNvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNQYXN0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBmb3IgaTE4biBjb3VudGVyIG1lc3NhZ2UgdHJhbnNsYXRpb24gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbWFpbmluZ1RleHQgPSAncmVtYWluaW5nJztcbiAgICAvKiogZm9yIGkxOG4gY291bnRlciBtZXNzYWdlIHRyYW5zbGF0aW9uICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNlc3NUZXh0ID0gJ2V4Y2Vzcyc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHNlZSBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wuZXh0cmFDb250ZW50SGVpZ2h0UHhcbiAgICAgKi9cbiAgICBnZXQgZXh0cmFDb250ZW50SGVpZ2h0UHgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRhcmVhQ291bnRlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfc2hvdWxkVHJhY2tUZXh0TGltaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA+IDAgJiYgIXRoaXMuc2hvd0V4Y2VlZGVkVGV4dDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgcHJvdGVjdGVkIF90ZXh0QXJlYUNvbmZpZzogVGV4dEFyZWFDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2QsIGVsZW1lbnRSZWYsIG5nQ29udHJvbCwgY29udHJvbENvbnRhaW5lciwgbmdGb3JtLCBmb3JtRmllbGQsIGZvcm1Db250cm9sKTtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy53cmFwVHlwZSB8fCBWQUxJRF9XUkFQX1RZUEVTLmluZGV4T2YodGhpcy53cmFwVHlwZSkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRleHRhcmVhIHdyYXAgdHlwZSAke3RoaXMud3JhcFR5cGV9IGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBub3QgY3VzdG9tIHNldCwgc2V0IGNvdW50ZXIgdG8gbWF4IGxlbmd0aCB2YWx1ZSwgZWxzZSBpdCBjYWxjdWxhdGVzIHJlbWFpbmluZy9leGNlZWRlZCBjaGFyYWN0ZXJzLlxuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXhjZWVkZWRDaGFyQ291bnQgPSB0aGlzLm1heExlbmd0aCB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbHVlQ3VzdG9tU2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBzZXQgbWF4IGhlaWdodFxuICAgICAgICB0aGlzLl9zZXRNYXhIZWlnaHQoKTtcblxuICAgICAgICAvLyBkb24ndCBzZXQgYW55IGVycm9yIHN0YXRlIGlmIHdlIGFyZSBub3Qgc2hvd2luZyBjb3VudGVyIG1lc3NhZ2VcbiAgICAgICAgaWYgKCF0aGlzLl9zaG91bGRUcmFja1RleHRMaW1pdCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICAvLyB3aGVuIHZhbHVlIGlzIGN1c3RvbSBzZXQoaW5pdGlhbCB2YWx1ZSBpcyBwcmVzZW50KSwgdGhlIGhlaWdodHMgZG9uJ3QgZ2V0XG4gICAgICAgIC8vIHNldCB0byBzaG93IHRoZSBmdWxsIHRleHQgaW4gdGhlIG5nQWZ0ZXJWaWV3SW5pdCBpbW1lZGlhdGVseS4gdGhlcmVmb3JlLCB3ZSBjYWxsIGF1dG9Hcm93VGV4dEFyZWEgaW5cbiAgICAgICAgLy8gbmdBZnRlclZpZXdDaGVja2VkIGFuZCBkZXRlY3QgY2hhbmdlcyBhZ2Fpbi5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5pc1ZhbHVlQ3VzdG9tU2V0KSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9Hcm93VGV4dEFyZWEoKTsgLy8gaWYgYXBwbGljYWJsZSwgZ3JvdyB0aGUgdGV4dGFyZWEgd2hlbiB2YWx1ZSBpcyBjdXN0b20gc2V0XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCd0ZXh0YXJlYTogbmdBZnRlclZpZXdDaGVja2VkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogd3JpdGUgdmFsdWUgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUgPz8gJycpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50ZXJJbnRlcmFjdGlvbnMoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgndGV4dGFyZWE6IHdyaXRlVmFsdWUnKTtcbiAgICB9XG5cbiAgICAvKiogdXBkYXRlIHRoZSBjb3VudGVyIG1lc3NhZ2UgYW5kIHJlbGF0ZWQgaW50ZXJhY3Rpb25zICovXG4gICAgdXBkYXRlQ291bnRlckludGVyYWN0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgPSB0aGlzLnZhbHVlPy5sZW5ndGggPz8gMDtcblxuICAgICAgICBpZiAodGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIG5ld2x5IGFkZGVkIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGl0ZXJhdGlvbiwgcmVtb3ZlIGlmIGlzc3VlIGZvdW5kXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlTGVuZ3RoT25DdXN0b21TZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBpZiBleGNlZWRlZCBtYXhsZW5ndGggd2hlbiBzZXQgYXMgYSB2YWx1ZSBpbiBjb2RlLCBoaWdobGlnaHQgdGhlIGV4Y2VlZGVkIHRleHQuICovXG4gICAgdmFsaWRhdGVMZW5ndGhPbkN1c3RvbVNldCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3RleHRBcmVhQ2hhckNvdW50ID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1Bhc3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHRoaXMubWF4TGVuZ3RoLCB0aGlzLl90ZXh0QXJlYUNoYXJDb3VudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY291bnRlckV4Y2Vzc09yUmVtYWluaW5nID0gdGhpcy5leGNlc3NUZXh0O1xuICAgICAgICAgICAgdGhpcy5leGNlZWRlZENoYXJDb3VudCA9IHRoaXMuX3RleHRBcmVhQ2hhckNvdW50IC0gdGhpcy5tYXhMZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9IHRoaXMucmVtYWluaW5nVGV4dDtcbiAgICAgICAgICAgIHRoaXMuZXhjZWVkZWRDaGFyQ291bnQgPSB0aGlzLm1heExlbmd0aCAtIHRoaXMuX3RleHRBcmVhQ2hhckNvdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXNQYXN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogaGFuZGxlIGV4Y2VlZGVkIG1heGxlbmd0aCBjYXNlIHdoZW4gdGV4dCBpcyBwYXN0ZWQgKi9cbiAgICBoYW5kbGVQYXN0ZUludGVyYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1Bhc3RlZCA9IHRydWU7XG5cbiAgICAgICAgLy8gV3JhcHBlZCBpbiB0aW1lb3V0IHRvIG1ha2Ugc2VsZWN0aW5nIHJhbmdlIHdvcmtpbmdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUNvdW50ZXJJbnRlcmFjdGlvbnMoKSk7XG4gICAgfVxuXG4gICAgLyoqIGhhbmRsZSBhdXRvIGdyb3dpbmcgb2YgdGV4dGFyZWEgKi9cbiAgICBhdXRvR3Jvd1RleHRBcmVhKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ncm93aW5nKSB7XG4gICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICdpbmhlcml0JztcbiAgICAgICAgICAgIGNvbnN0IHRleHRhcmVhVG90YWxIZWlnaHQgPSB0aGlzLl9nZXRUZXh0YXJlYVRvdGFsSGVpZ2h0KCk7XG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBwYXJzZUludCh0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLm1heEhlaWdodCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgICAgIGlmIChtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGV4dGFyZWFUb3RhbEhlaWdodCA8PSBtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0ZXh0YXJlYVRvdGFsSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLmhlaWdodCA9IG1heEhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIG5vIGJvdW5kIG1heCBoZWlnaHQsIGtlZXAgZ3Jvd2luZ1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGV4dGFyZWFUb3RhbEhlaWdodCArICdweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgbGluZSBoZWlnaHQgb2YgdGV4dGFyZWFcbiAgICAgKi9cbiAgICBnZXRUZXh0YXJlYUxpbmVIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gR2V0IHRoZSBjb21wdXRlZCBzdHlsZXMgZm9yIHRoZSBlbGVtZW50XG4gICAgICAgIGlmICh0aGlzLl90YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX3RhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGhlaWdodFxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoJ2xpbmUtaGVpZ2h0JyksIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMjA7IC8vIGRlZmF1bHQgbGluZSBoZWlnaHQgaWYgbm90aGluZyBpcyBkZWZpbmVkXG4gICAgfVxuXG4gICAgLyoqIHdoZW4gYmFja3ByZXNzIG9yIGRlbGV0ZSBrZXkgaXMgcHJlc3NlZCB3aGVuIHNob3dFeGNlZWRlZFRleHQgZmllbGQgaXMgbm90IHNldCwgc2ltcGx5IHJlbW92ZSBleGNlc3MgY2hhcmFjdGVycyxcbiAgICAvKiBlbHNlIGhhbmRsZSBhdXRvZ3JvdyBjYXNlXG4gICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlQmFja1ByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIGlmIG5vdCBzaG93aW5nIGV4Y2VlZGVkIHRleHQgbWVzc2FnZS9pbnRlcmFjdGlvbnMgb3IgZ3Jvd2luZywgYW5kIGN1c3RvbSB2YWx1ZSBzZXRcbiAgICAgICAgaWYgKHRoaXMuZ3Jvd2luZykge1xuICAgICAgICAgICAgdGhpcy5hdXRvR3Jvd1RleHRBcmVhKCk7XG4gICAgICAgICAgICB0aGlzLmlzVmFsdWVDdXN0b21TZXQgPSBmYWxzZTsgLy8gc2V0IGl0IHRvIGZhbHNlIGZpcnN0IHRpbWUgaXQgY29tZXMgaGVyZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRUcmFja1RleHRMaW1pdCAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RFTEVURSwgQkFDS1NQQUNFXSkpIHtcbiAgICAgICAgICAgIC8vIGZvciB0aGUgY3VzdG9tIHZhbHVlIHNldCBhbmQgc2hvd0V4Y2VlZGVkVGV4dD1mYWxzZSBjYXNlLCBvbiBhbnkga2V5IHByZXNzLCByZW1vdmUgZXhjZXNzIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGV4dEFyZWFDaGFyQ291bnQgPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZXhjZXNzIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyaW5nKDAsIHRoaXMubWF4TGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1ZhbHVlQ3VzdG9tU2V0ID0gZmFsc2U7IC8vIHNpbmNlIHZhbHVlIGlzIG5vdyBjaGFuZ2VkLCBpdCBpcyBubyBsb25nZXIgY3VzdG9tIHNldFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB0aGUgdXBkYXRlZCBzdGF0ZSB3aGVuIGNoYXJhY3RlciBjb3VudCBicmVhY2hlcyBgbWF4TGVuZ3RoYFxuICAgICAqL1xuICAgIGdldFVwZGF0ZWRTdGF0ZSgpOiBGb3JtU3RhdGVzIHtcbiAgICAgICAgaWYgKHRoaXMuX2dldENvbnRlbnRMZW5ndGgoKSA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhc1RleHRFeGNlZWRlZCA9IHRydWU7IC8vIHNldCBmbGFnIGZvciBlcnJvciBtZXNzYWdlIHRvIGFsc28gY2hhbmdlIGFjY29yZGluZ2x5XG4gICAgICAgICAgICB0aGlzLmNvdW50ZXJFeGNlc3NPclJlbWFpbmluZyA9IHRoaXMuZXhjZXNzVGV4dDtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYXNUZXh0RXhjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3VudGVyRXhjZXNzT3JSZW1haW5pbmcgPSB0aGlzLnJlbWFpbmluZ1RleHQ7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGU7IC8vIHJldHVybiBhbnkgb3RoZXIgZXJyb3JzIGZvdW5kIGJ5IHBhcmVudCBmb3JtIGZpZWxkXG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTmF0aXZlIGVsZW1lbnQgICovXG4gICAgZ2V0IF90YXJnZXRFbGVtZW50KCk6IEhUTUxUZXh0QXJlYUVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBnZXQgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dGFyZWEgY29udGVudCAqL1xuICAgIHByaXZhdGUgX2dldENvbnRlbnRMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNvbnRlbnRMZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLl90YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gdGhpcy5fdGFyZ2V0RWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGVudExlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBnZXQgdGhlIHRvdGFsIGhlaWdodCBpbmNsdWRpbmcgYm9yZGVycyBhbmQgc2Nyb2xsIGhlaWdodCAqL1xuICAgIHByaXZhdGUgX2dldFRleHRhcmVhVG90YWxIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gR2V0IHRoZSBjb21wdXRlZCBzdHlsZXMgZm9yIHRoZSBlbGVtZW50XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fdGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaGVpZ2h0XG4gICAgICAgIGNvbnN0IGhlaWdodCA9XG4gICAgICAgICAgICBwYXJzZUludChjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItdG9wLXdpZHRoJyksIDEwKSArXG4gICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnNjcm9sbEhlaWdodCArXG4gICAgICAgICAgICBwYXJzZUludChjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItYm90dG9tLXdpZHRoJyksIDEwKTtcblxuICAgICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIHNldCBpbml0aWFsIG1heCBoZWlnaHQgKiovXG4gICAgcHJpdmF0ZSBfc2V0TWF4SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ncm93aW5nICYmIHRoaXMuX3RhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3dpbmdNYXhMaW5lcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5ncm93aW5nTWF4TGluZXMgKiB0aGlzLmdldFRleHRhcmVhTGluZUhlaWdodCgpICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ncm93aW5nTWF4TGluZXMpIHtcbiAgICAgICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvIGhlcmUuIHJvd3MgYXR0cmlidXRlIHRha2VzIGNhcmUuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHRleHRhcmVhXG4gICAgI2lucHV0RWxlbWVudFJlZlxuICAgIGZkLWZvcm0tY29udHJvbFxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWNvdW50ZXInXCJcbiAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2F0dHIucm93c109XCJncm93aW5nID8gMiA6IGhlaWdodCA/IDIgOiBncm93aW5nTWF4TGluZXNcIlxuICAgIFthdHRyLmNvbHNdPVwiY29sc1wiXG4gICAgW2F0dHIud3JhcF09XCJ3cmFwVHlwZVwiXG4gICAgW2F0dHIubWF4bGVuZ3RoXT1cIiFzaG93RXhjZWVkZWRUZXh0ID8gbWF4TGVuZ3RoIDogbnVsbFwiXG4gICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyB0cnVlIDogbnVsbFwiXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgW3N0YXRlXT1cImdldFVwZGF0ZWRTdGF0ZSgpXCJcbiAgICAocGFzdGUpPVwiaGFuZGxlUGFzdGVJbnRlcmFjdGlvbigpXCJcbiAgICAoYmx1cik9XCJfb25Gb2N1c0NoYW5nZWQoZmFsc2UpXCJcbiAgICAoZm9jdXMpPVwiX29uRm9jdXNDaGFuZ2VkKHRydWUpXCJcbj48L3RleHRhcmVhPlxuXG48IS0tIElDVSByZWNvbW1lbmRzIGZ1bGwgdGV4dCBpbiBmb3JtYXQgLS0+XG48ZGl2XG4gICAgY2xhc3M9XCJmZC10ZXh0YXJlYS1jb3VudGVyXCJcbiAgICAqbmdJZj1cInNob3dFeGNlZWRlZFRleHRcIlxuICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICBbYXR0ci5pZF09XCJpZCArICctY291bnRlcidcIlxuICAgICNjb3VudGVyXG4+XG4gICAgPCEtLSByZW5kZXIgc3BhY2VzIGluc3RlYWQgb2YgdGhlIGFjdHVhbCB2YWx1ZSB3aGlsZSB0cmFuc2xhdGlvbiBzdHJpbmcgaXMgbG9hZGluZyBpbiBvcmRlciB0byBhdm9pZCBjb250ZW50IGp1bXBzIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb3VudGVyRXhjZXNzT3JSZW1haW5pbmcgPT09ICdleGNlc3MnOyBlbHNlIGNoYXJhY3RlcnNSZW1haW5pbmdcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiXG4gICAgICAgICAgICAgICAgKGV4Y2VlZGVkQ2hhckNvdW50ID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzT3ZlclRoZUxpbWl0U2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVGV4dGFyZWEuY291bnRlck1lc3NhZ2VDaGFyYWN0ZXJzT3ZlclRoZUxpbWl0UGx1cmFsJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGV4Y2VlZGVkQ2hhckNvdW50IH0gOiAnJm5ic3A7Jm5ic3A7J1xuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2NoYXJhY3RlcnNSZW1haW5pbmc+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cIlxuICAgICAgICAgICAgICAgIChleGNlZWRlZENoYXJDb3VudCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVRleHRhcmVhLmNvdW50ZXJNZXNzYWdlQ2hhcmFjdGVyc1JlbWFpbmluZ1Npbmd1bGFyJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVRleHRhcmVhLmNvdW50ZXJNZXNzYWdlQ2hhcmFjdGVyc1JlbWFpbmluZ1BsdXJhbCdcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGNvdW50OiBleGNlZWRlZENoYXJDb3VudCB9IDogJyZuYnNwOyZuYnNwOydcbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19