@senior-agronegocio/angular-components 0.0.9875 → 0.0.9876

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.
@@ -1,8 +1,5 @@
1
- import { LibTranslationModule } from '../../lib-translation.module';
2
- import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
3
- import { LocaleModule, LocalizedDatePipe } from '@seniorsistemas/angular-components';
1
+ import { CommonModule, CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
2
+ import { LocalizedDatePipe } from '@seniorsistemas/angular-components';
4
3
  import { KilogramPipe } from '../../pipe/kilogram';
5
- export declare const imports: (typeof LibTranslationModule | (import("@angular/compiler/src/core").ModuleWithProviders & {
6
- ngModule: LocaleModule;
7
- }))[];
8
- export declare const providers: (typeof KilogramPipe | typeof DecimalPipe | typeof CurrencyPipe | typeof DatePipe | typeof LocalizedDatePipe)[];
4
+ export declare const imports: (typeof CommonModule | import("@angular/compiler/src/core").ModuleWithProviders)[];
5
+ export declare const providers: (typeof KilogramPipe | typeof DecimalPipe | typeof DatePipe | typeof LocalizedDatePipe | typeof CurrencyPipe)[];
@@ -62,7 +62,7 @@ let FinancialTitleTableComponent = class FinancialTitleTableComponent {
62
62
  this.getFields("branch", "agro.angular_components.branch", ["branch.cod", "branch.desc"], FieldType.String, null),
63
63
  this.getFields("producer", "agro.angular_components.producer", ["producer.cod", "producer.desc"], FieldType.String, null),
64
64
  ...this.gridColumns.filter((col) => !["valuePaid", "valueNet"].includes(col.field)),
65
- this.getFields("valueFees", "agro.angular_components.value_fees", ["values.feesValue"], FieldType.Money, null),
65
+ this.getFields("valueFees", "agro.angular_components.value_fees", ["values.interestValue"], FieldType.Money, null),
66
66
  this.getFields("valueFine", "agro.angular_components.value_fine", ["values.fineValue"], FieldType.Money, null),
67
67
  this.getFields("valueCharge", "agro.angular_components.value_charge", ["values.chargeValue"], FieldType.Money, null),
68
68
  this.getFields("valueCorrection", "agro.angular_components.value_correction", ["values.monetaryCorrectionValue"], FieldType.Money, null),
@@ -413,4 +413,4 @@ FinancialTitleTableComponent = __decorate([
413
413
  })
414
414
  ], FinancialTitleTableComponent);
415
415
  export { FinancialTitleTableComponent };
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXNCN0UsSUFBYSw0QkFBNEIsR0FBekMsTUFB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QUMsQ0FBQyxXQUFXLENBQUMsSUFBSTtTQUMxRCxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7O1lBcGFtQyxxQkFBcUI7WUFDZCxvQkFBb0I7WUFDdEIsY0FBYzs7QUExQzFCO0lBQXhCLFNBQVMsQ0FBQyxZQUFZLENBQUM7MkRBQWM7QUFFN0I7SUFBUixLQUFLLEVBQUU7NkRBQWlDO0FBQ2hDO0lBQVIsS0FBSyxFQUFFOzhEQUF3QztBQUN0QztJQUFULE1BQU0sRUFBRTtxRUFBNkM7QUFMN0MsNEJBQTRCO0lBTHhDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx5QkFBeUI7UUFDbkMsazFSQUFxRDs7S0FFeEQsQ0FBQztHQUNXLDRCQUE0QixDQTZjeEM7U0E3Y1ksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgbG9jYWxlUHQgZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3B0XCI7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCYWRnZUNvbG9ycywgQnV0dG9uUHJpb3JpdHksIEJ1dHRvblNpemUsIEZpZWxkVHlwZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IExhenlMb2FkRXZlbnQsIE1lc3NhZ2VTZXJ2aWNlLCBUYWJsZSB9IGZyb20gXCJwcmltZW5nXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi8uLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmluYW5jaWFsVGl0bGVPcHRpb25zIH0gZnJvbSBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFncm9GaW5hbmNpYWxTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT3JkZXJCeVR5cGUsIFRpdGxlRmllbGRzT3JkZXJCeSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UsXHJcbiAgICBGaW5hbmNpYWxUaXRsZUxpc3REdG8sXHJcbiAgICBSZWNPcmRlckJ5LFxyXG4gICAgUmVjb3JkVGl0bGVEdG8sXHJcbiAgICBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0LFxyXG59IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9pbnRlZmFjZXNcIjtcclxuXHJcbmludGVyZmFjZSBDb2x1bW5Db25maWcge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nW107XHJcbiAgICB0eXBlOiBGaWVsZFR5cGU7XHJcbiAgICBvcmRlckJ5OiBUaXRsZUZpZWxkc09yZGVyQnkgfCBudWxsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInMtZmluYW5jaWFsLXRpdGxlLXRhYmxlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmluYW5jaWFsVGl0bGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoXCJUaXRsZVRhYmxlXCIpIHRhYmxlOiBUYWJsZTtcclxuXHJcbiAgICBASW5wdXQoKSBvcHRpb25zITogRmluYW5jaWFsVGl0bGVPcHRpb25zO1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWQ6IEZpbmFuY2lhbFRpdGxlTGlzdER0b1tdID0gW107XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgICBncmlkRGF0YTogRmluYW5jaWFsVGl0bGVMaXN0RHRvW10gPSBbXTtcclxuICAgIGdyaWRUb3RhbFJlY29yZHM6IG51bWJlcjtcclxuXHJcbiAgICBlcnJvck1lc3NhZ2U6IGFueSA9IHtcclxuICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgIGxlc3NUaGFuWmVybzogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xlc3Nfb3JfZXF1YWxfemVyb1wiKSxcclxuICAgICAgICBncmVhdGhlclRoYW5BbGxvd2VkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfZ3JlYXRlcl90aGFuX2FsbG93ZWRcIiksXHJcbiAgICB9O1xyXG5cclxuICAgIHRhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZFJvdzogUmVjb3JkVGl0bGVEdG87XHJcblxyXG4gICAgZ3JpZENvbHVtbnM6IENvbHVtbkNvbmZpZ1tdID0gW107XHJcbiAgICBzaWRlYmFyRmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBidXR0b25TaXplID0gQnV0dG9uU2l6ZTtcclxuICAgIGJ1dHRvblByaW9yaXR5ID0gQnV0dG9uUHJpb3JpdHk7XHJcbiAgICBiYWRnZUNvbG9ycyA9IEJhZGdlQ29sb3JzO1xyXG5cclxuICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICB0aXRsZXNGb3JtOiBuZXcgRm9ybUFycmF5KFtdLCBbXSksXHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIGN1cnJlbnRMaXN0UGFyYW1zOiBMYXp5TG9hZEV2ZW50ID0geyBmaXJzdDogMCwgcm93czogMTAsIHNvcnRGaWVsZDogbnVsbCwgc29ydE9yZGVyOiBudWxsLCBmaWx0ZXJzOiB7fSB9O1xyXG4gICAgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBnZXQgdGl0bGVzRm9ybSgpOiBGb3JtQXJyYXkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmFuY2lhbFNlcnZpY2U6IEFncm9GaW5hbmNpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBjb2x1bmFzIGRhIHRhYmVsYSBlIGNhbXBvcyBleGliaWRvcyBubyBzaWRlYmFyLFxyXG4gICAgICogZGVwb2lzIGRpc3BhcmEgYSBwcmltZWlyYSBidXNjYSBkZSB0w610dWxvcyBjb20gb3MgZmlsdHJvcyBpbmZvcm1hZG9zIGVtIHtAbGluayBvcHRpb25zfS5cclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0aXRsZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnRpdGxlXCIsIFtcIm51bWJlclRpdGxlXCJdLCBGaWVsZFR5cGUuU3RyaW5nLCBUaXRsZUZpZWxkc09yZGVyQnkuTlVNQkVSX1RJVExFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0eXBlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudHlwZVwiLCBbXCJ0aXRsZVR5cGUuY29kXCIsIFwidGl0bGVUeXBlLmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImVudHJ5RGF0ZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVudHJ5XCIsIFtcImlzc3VlRGF0ZVwiXSwgRmllbGRUeXBlLkRhdGUsIFRpdGxlRmllbGRzT3JkZXJCeS5JU1NVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJkdWVEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZHVlX2RhdGVcIiwgW1wiZHVlRGF0ZVwiXSwgRmllbGRUeXBlLkRhdGUsIFRpdGxlRmllbGRzT3JkZXJCeS5EVUVfREFURSksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU9yaWdpblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcmlnaW5hbF92YWx1ZVwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm9yaWdpbmFsVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1JJR0lOQUxfVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3BlblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcGVuX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3BlblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk9QRU5fVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlTmV0XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX25ldFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm5ldFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk5FVF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlUGFpZFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX3RvX3BheVwiLCBbXCJ2YWx1ZVBhaWRcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNpZGViYXJGaWVsZHMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiY29tcGFueVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIiwgW1wiY29tcGFueS5jb2RcIiwgXCJjb21wYW55LmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImJyYW5jaFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmJyYW5jaFwiLCBbXCJicmFuY2guY29kXCIsIFwiYnJhbmNoLmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInByb2R1Y2VyXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucHJvZHVjZXJcIiwgW1wicHJvZHVjZXIuY29kXCIsIFwicHJvZHVjZXIuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+ICFbXCJ2YWx1ZVBhaWRcIiwgXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZlZXNcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9mZWVzXCIsIFtcInZhbHVlcy5mZWVzVmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVGaW5lXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfZmluZVwiLCBbXCJ2YWx1ZXMuZmluZVZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlQ2hhcmdlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfY2hhcmdlXCIsIFtcInZhbHVlcy5jaGFyZ2VWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlQ29ycmVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9jb3JyZWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMubW9uZXRhcnlDb3JyZWN0aW9uVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZUFkZGl0aW9uYWxcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfYWRkaXRpb25hbFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm90aGVyQWRkaXRpb25WYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZURpc2NvdW50XCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfZGlzY291bnRcIiwgW1widmFsdWVzLmRpc2NvdW50VmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU90aGVyRGlzY291bnRcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfb3RoZXJfZGlzY291bnRcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vdGhlckRpc2NvdW50VmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+IFtcInZhbHVlTmV0XCJdLmluY2x1ZGVzKGNvbC5maWVsZCkpLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKHRoaXMuY3VycmVudExpc3RQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXDDs3MgYSByZW5kZXJpemHDp8OjbyBkYSB0YWJlbGEsIHNpbmNyb25pemEgbyBlc3RhZG8gZGUgY2hlY2tib3gvbGluaGEgZWRpdMOhdmVsXHJcbiAgICAgKiBjb20gbyBhcnJheSBkZSB0w610dWxvcyBzZWxlY2lvbmFkb3MgcGFyYSBldml0YXIgYWNlc3NvIGEgcmVmZXLDqm5jaWFzIGFpbmRhIG7Do28gY3JpYWRhcy5cclxuICAgICAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMudGFibGVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYWdlU2l6ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8ucm93cztcclxuICAgIH1cclxuXHJcbiAgICBnZXRSb3dJbmRleCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uZmlyc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydEZpZWxkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5zb3J0RmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydE9yZGVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5zb3J0T3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGYXogcmVxdWlzacOnw6NvIHBhZ2luYWRhL29yZGVuYWRhIHBhcmEgbGlzdGFyIG9zIHTDrXR1bG9zLCBtb250YSBvIGZvcm11bMOhcmlvXHJcbiAgICAgKiByZWF0aXZvIHBhcmEgY2FkYSBsaW5oYSBlIHRyYXRhIGVycm9zIGRlIGJhY2tlbmQgZXhpYmluZG8gbWVuc2FnZW0gYW8gdXN1w6FyaW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IHBhcsOibWV0cm9zIGRlIHBhZ2luYcOnw6NvLCBvcmRlbmHDp8OjbyBlIGZpbHRyb3MgdmluZG9zIGRvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUdyaWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCAvIHNpemU7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSBldmVudC5zb3J0RmllbGQ7XHJcbiAgICAgICAgY29uc3Qgc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMgPSBldmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIHBhZ2VSZXF1ZXN0OiB7IG9mZnNldDogcGFnZSwgb3JkZXJCeTogdGhpcy5nZXRSZWNPcmRlckJ5KGZpZWxkLCBzb3J0T3JkZXIpLCBzaXplIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcjogdGhpcy5vcHRpb25zLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZmluYW5jaWFsU2VydmljZVxyXG4gICAgICAgICAgICAubGlzdFRpdGxlcyhpbnB1dClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV0YWlsTXNnID0gZXJyPy5tZXNzYWdlIHx8IFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c19kZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3YXJuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c190aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxNc2dcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBsaXN0LnRpdGxlcyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkVG90YWxSZWNvcmRzID0gbGlzdC50b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBldmVudDtcclxuICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUXVhbmRvIHVtIGl0ZW0gw6kgZGVzbWFyY2FkbywgbGltcGEgbyBgdmFsdWVQYWlkYCBjb3JyZXNwb25kZW50ZVxyXG4gICAgICogdGFudG8gbm8gbW9kZWxvIGRhIGxpbmhhIHF1YW50byBubyB7QGxpbmsgdGl0bGVzRm9ybX0sIHNlbSBkaXNwYXJhciBub3ZvcyBldmVudG9zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldmVudCBldmVudG8gZGUgZGVzbWFyY2HDp8OjbyBlbWl0aWRvIHBlbG8gUHJpbWVORy5cclxuICAgICAqL1xyXG4gICAgb25VbnNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkRGF0YS5maW5kKChyKSA9PiByLmlkID09PSBldmVudC5kYXRhLmlkKTtcclxuICAgICAgICBpZiAocm93KSB7XHJcbiAgICAgICAgICAgIHJvdy52YWx1ZVBhaWQgPSBudWxsO1xyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBmb3JtIGNvbnRyb2wgY29ycmVzcG9uZGVudGVcclxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5ncmlkRGF0YS5maW5kSW5kZXgoKGcpID0+IGcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnRpdGxlc0Zvcm0uYXQoaWR4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RldGFpbHMocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IHJvd0RhdGE7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xhc3RDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHlsZUNvbHVtbnMoZmllbGQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgbGV0IHN0eWxlQ2xhc3MgPSB7fTtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkdWVEYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInR5cGVcIjpcclxuICAgICAgICAgICAgY2FzZSBcImVudHJ5RGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTIwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxOThweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvcChvYmo6IGFueSwgY29sOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghb2JqIHx8ICFjb2w/LnBhdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VwYXJhdG9yID0gXCJcIjtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgY29sLnBhdGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvciArIEFncm9PYmplY3RVdGlscy5nZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqLCBwYXRoLCBjb2wudHlwZSk7XHJcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFwiIC0gXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjb25zdHLDs2kgbyB7QGxpbmsgdGl0bGVzRm9ybX0gY29tIGJhc2UgbmEge0BsaW5rIGdyaWREYXRhfSBhdHVhbCxcclxuICAgICAqIHByZXNlcnZhbmRvIHZhbG9yZXMgasOhIGluZm9ybWFkb3MgZW0gaXRlbnMgc2VsZWNpb25hZG9zIGUgcmVnaXN0cmFuZG8gbGlzdGVuZXJzIGRlIG11ZGFuw6dhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlc0Zvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICB0aXRsZXNGb3JtQXJyYXkuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQgfHwgbnVsbCwgW10pLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYWlkOiBuZXcgRm9ybUNvbnRyb2woc2VsZWN0ZWRJdGVtPy52YWx1ZVBhaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZ3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICB0aXRsZXNGb3JtQXJyYXkucHVzaChncm91cCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPYnNlcnZhIG11ZGFuw6dhcyBubyBjYW1wbyBgdmFsdWVQYWlkYCBkZSB1bWEgbGluaGEuXHJcbiAgICAgKiBBdHVhbGl6YSBvIGFycmF5IHtAbGluayBzZWxlY3RlZH0gcXVhbmRvIG8gdMOtdHVsbyBlc3TDoSBzZWxlY2lvbmFkbyxcclxuICAgICAqIGFwbGljYSBvIGxpbWl0ZSBkbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZSBldml0YSBsb29wcyBkZSBldmVudG9zIHVzYW5kb1xyXG4gICAgICogYHNldFZhbHVlYCBjb20gYGVtaXRFdmVudDogZmFsc2VgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgZ3J1cG8gZGUgZm9ybXVsw6FyaW8gYXNzb2NpYWRvIMOgIGxpbmhhIGRhIHRhYmVsYS5cclxuICAgICAqIEBwYXJhbSBpdGVtIHTDrXR1bG8gZmluYW5jZWlybyBjb3JyZXNwb25kZW50ZSDDoCBsaW5oYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IEZpbmFuY2lhbFRpdGxlTGlzdER0bykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmF3VmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVQYWlkID0gdGhpcy5wYXJzZU51bWJlclNhZmUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZUlkID0gZm9ybUdyb3VwLmdldChcImlkXCIpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIGF0dWFsaXphIHNlbGVjdGVkIHNlIG8gdMOtdHVsbyBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbEluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBpZiAoc2VsSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBnYXJhbnRlIHF1ZSB2YWx1ZVBhaWQgc2VqYSBudW3DqXJpY28gb3UgbnVsbFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gdmFsdWVQYWlkO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ldCA9IE51bWJlcih0aGlzLnNlbGVjdGVkW3NlbEluZGV4XT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gbmV0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzYWRvIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gZGUgZXZlbnRvc1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gYXR1YWxpemEgZmxhZyBkZSBlcnJvXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS5oYXNFcnJvciA9IHZhbHVlUGFpZENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIC8vIGVtaXRlIG11ZGFuw6dhIGRlIHNlbGXDp8Ojb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkbywgYXBlbmFzIGFwbGljYSBsaW1pdGUgbG9jYWwgYmFzZWFkbyBubyBpdGVtXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIoaXRlbT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQYWlkQ29udHJvbC5zZXRWYWx1ZShuZXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcGFyc2VOdW1iZXJTYWZlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZCA9IHZhbHVlLnJlcGxhY2UoL1xcLi9nLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KGNsZWFuZWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWEgbyBtb2RvIGRlIGVkacOnw6NvIG5hIGxpbmhhIGRhIHRhYmVsYSBQcmltZU5HIGUgYXBsaWNhIHJlZ3JhcyBkZSB2YWxpZGHDp8Ojb1xyXG4gICAgICogbm8gZm9ybXVsw6FyaW8gcmVhdGl2byBjb3JyZXNwb25kZW50ZSDDoHF1ZWxhIGxpbmhhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHJlY2ViaWRvIGRhIHRhYmVsYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbml0Um93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGljaW9uYSB2YWxpZGFkb3JlcyBkaW5hbWljYW1lbnRlIGFvIGNhbXBvIGB2YWx1ZVBhaWRgIGRhIGxpbmhhIGVtIGVkacOnw6NvLFxyXG4gICAgICogbWFyY2EgbyBjb250cm9sZSBjb21vIHN1am8gZSBmb3LDp2EgcmV2YWxpZGHDp8OjbyBpbWVkaWF0YSBwYXJhIGV4aWJpciBlcnJvcyBuYSB0ZWxhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHBhcmEgYXBsaWNhciB2YWxpZGHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMudGl0bGVzRm9ybS5hdChyb3dJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVQYWlkQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbdGhpcy5nZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHLDs2kgbyB7QGxpbmsgVmFsaWRhdG9yRm59IHF1ZSB2YWxpZGEgbyBgdmFsdWVQYWlkYDpcclxuICAgICAqIC0gZGV2ZSBzZXIgbWFpb3IgcXVlIHplcm87XHJcbiAgICAgKiAtIG7Do28gcG9kZSB1bHRyYXBhc3NhciBvIHZhbG9yIGzDrXF1aWRvIChgbmV0VmFsdWVgKSBkbyB0w610dWxvLlxyXG4gICAgICpcclxuICAgICAqIFJldG9ybmEgb3MgZXJyb3MgY29uc3VtaWRvcyBwZWxvIGNvbXBvbmVudGUgYHMtY29udHJvbC1lcnJvcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhbGlkYXRvcnNGb3JSb3dFZGl0KCk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGVJZCA9IHBhcmVudD8uZ2V0KFwiaWRcIik/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGFpZCA9IHRoaXMucGFyc2VOdW1iZXJTYWZlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA9PT0gbnVsbCB8fCB2YWx1ZVBhaWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA8PSBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVzc1RoYW5aZXJvOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvY3VyYSBwZWxvIHTDrXR1bG8gbm8gc2VsZWN0ZWQgb3Ugbm8gZ3JpZERhdGEgKHByaW9yaXphIHNlbGVjdGVkKVxyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvdyA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IHRpdGxlSWQpIHx8IHRoaXMuZ3JpZERhdGEuZmluZCgoZykgPT4gZy5pZCA9PT0gdGl0bGVJZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ldFZhbHVlID0gTnVtYmVyKHNlbGVjdGVkUm93Py52YWx1ZXM/Lm5ldFZhbHVlKSB8fCAwO1xyXG4gICAgICAgICAgICBpZiAodmFsdWVQYWlkID4gbmV0VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FuY2VsUm93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuY2FuY2VsUm93RWRpdChyb3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnTDqW0gbyBlc3RhZG8gdmlzdWFsIGRhIHRhYmVsYSAoY2hlY2tib3ggbWFyY2FkbyBlIGxpbmhhIGVkaXTDoXZlbCkgZW1cclxuICAgICAqIHNpbmNyb25pYSBjb20gbyBhcnJheSBkZSB0w610dWxvcyBzZWxlY2lvbmFkb3MsIGluY2x1c2l2ZSByZXN0YXVyYW5kbyB2YWxvcmVzXHJcbiAgICAgKiBkaWdpdGFkb3MgYW8gcmVjYXJyZWdhciwgb3JkZW5hciBvdSBwYWdpbmFyIGEgZ3JpZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5ncmlkRGF0YSB8fCAhdGhpcy50YWJsZUluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgocm93LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvdyA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IHJvdy5pZCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy50aXRsZXNGb3JtLmF0KGluZGV4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkUm93KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTaW5jcm9uaXphIG8gdmFsb3IgcGFnbyBkbyBpdGVtIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgICAgICByb3cudmFsdWVQYWlkID0gc2VsZWN0ZWRSb3cudmFsdWVQYWlkO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKHNlbGVjdGVkUm93LnZhbHVlUGFpZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Um93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2FuY2VsYSBhIGVkacOnw6NvIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsUm93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRGaWVsZHMoZmllbGQ6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcsIHBhdGg6IHN0cmluZ1tdLCB0eXBlOiBGaWVsZFR5cGUsIGZpZWxkT3JkZXJCeTogVGl0bGVGaWVsZHNPcmRlckJ5KTogQ29sdW1uQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4geyBmaWVsZCwgcGF0aCwgdHlwZSwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGhlYWRlciksIG9yZGVyQnk6IGZpZWxkT3JkZXJCeSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTWVzc2FnZShzZXZlcml0eTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcsIGRldGFpbDogc3RyaW5nLCBzdGlja3kgPSBmYWxzZSwgbGlmZSA9IDcwMDApIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5LFxyXG4gICAgICAgICAgICBzdGlja3ksXHJcbiAgICAgICAgICAgIGxpZmUsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UmVjT3JkZXJCeShmaWVsZDogc3RyaW5nLCBvcmRlcjogbnVtYmVyKTogUmVjT3JkZXJCeSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZENvbHVtbkZpZWxkID0gdGhpcy5ncmlkQ29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgICAgIGlmIChncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgfHwgVGl0bGVGaWVsZHNPcmRlckJ5Lk5VTUJFUl9USVRMRSxcclxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyID09PSAxID8gT3JkZXJCeVR5cGUuQVNDIDogT3JkZXJCeVR5cGUuREVTQyxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXNCN0UsSUFBYSw0QkFBNEIsR0FBekMsTUFB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QUMsQ0FBQyxXQUFXLENBQUMsSUFBSTtTQUMxRCxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7O1lBcGFtQyxxQkFBcUI7WUFDZCxvQkFBb0I7WUFDdEIsY0FBYzs7QUExQzFCO0lBQXhCLFNBQVMsQ0FBQyxZQUFZLENBQUM7MkRBQWM7QUFFN0I7SUFBUixLQUFLLEVBQUU7NkRBQWlDO0FBQ2hDO0lBQVIsS0FBSyxFQUFFOzhEQUF3QztBQUN0QztJQUFULE1BQU0sRUFBRTtxRUFBNkM7QUFMN0MsNEJBQTRCO0lBTHhDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx5QkFBeUI7UUFDbkMsazFSQUFxRDs7S0FFeEQsQ0FBQztHQUNXLDRCQUE0QixDQTZjeEM7U0E3Y1ksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgbG9jYWxlUHQgZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3B0XCI7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBCYWRnZUNvbG9ycywgQnV0dG9uUHJpb3JpdHksIEJ1dHRvblNpemUsIEZpZWxkVHlwZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IExhenlMb2FkRXZlbnQsIE1lc3NhZ2VTZXJ2aWNlLCBUYWJsZSB9IGZyb20gXCJwcmltZW5nXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi8uLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmluYW5jaWFsVGl0bGVPcHRpb25zIH0gZnJvbSBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFncm9GaW5hbmNpYWxTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT3JkZXJCeVR5cGUsIFRpdGxlRmllbGRzT3JkZXJCeSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UsXHJcbiAgICBGaW5hbmNpYWxUaXRsZUxpc3REdG8sXHJcbiAgICBSZWNPcmRlckJ5LFxyXG4gICAgUmVjb3JkVGl0bGVEdG8sXHJcbiAgICBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0LFxyXG59IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9pbnRlZmFjZXNcIjtcclxuXHJcbmludGVyZmFjZSBDb2x1bW5Db25maWcge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nW107XHJcbiAgICB0eXBlOiBGaWVsZFR5cGU7XHJcbiAgICBvcmRlckJ5OiBUaXRsZUZpZWxkc09yZGVyQnkgfCBudWxsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInMtZmluYW5jaWFsLXRpdGxlLXRhYmxlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmluYW5jaWFsVGl0bGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoXCJUaXRsZVRhYmxlXCIpIHRhYmxlOiBUYWJsZTtcclxuXHJcbiAgICBASW5wdXQoKSBvcHRpb25zITogRmluYW5jaWFsVGl0bGVPcHRpb25zO1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWQ6IEZpbmFuY2lhbFRpdGxlTGlzdER0b1tdID0gW107XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgICBncmlkRGF0YTogRmluYW5jaWFsVGl0bGVMaXN0RHRvW10gPSBbXTtcclxuICAgIGdyaWRUb3RhbFJlY29yZHM6IG51bWJlcjtcclxuXHJcbiAgICBlcnJvck1lc3NhZ2U6IGFueSA9IHtcclxuICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgIGxlc3NUaGFuWmVybzogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xlc3Nfb3JfZXF1YWxfemVyb1wiKSxcclxuICAgICAgICBncmVhdGhlclRoYW5BbGxvd2VkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfZ3JlYXRlcl90aGFuX2FsbG93ZWRcIiksXHJcbiAgICB9O1xyXG5cclxuICAgIHRhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZFJvdzogUmVjb3JkVGl0bGVEdG87XHJcblxyXG4gICAgZ3JpZENvbHVtbnM6IENvbHVtbkNvbmZpZ1tdID0gW107XHJcbiAgICBzaWRlYmFyRmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBidXR0b25TaXplID0gQnV0dG9uU2l6ZTtcclxuICAgIGJ1dHRvblByaW9yaXR5ID0gQnV0dG9uUHJpb3JpdHk7XHJcbiAgICBiYWRnZUNvbG9ycyA9IEJhZGdlQ29sb3JzO1xyXG5cclxuICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICB0aXRsZXNGb3JtOiBuZXcgRm9ybUFycmF5KFtdLCBbXSksXHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIGN1cnJlbnRMaXN0UGFyYW1zOiBMYXp5TG9hZEV2ZW50ID0geyBmaXJzdDogMCwgcm93czogMTAsIHNvcnRGaWVsZDogbnVsbCwgc29ydE9yZGVyOiBudWxsLCBmaWx0ZXJzOiB7fSB9O1xyXG4gICAgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBnZXQgdGl0bGVzRm9ybSgpOiBGb3JtQXJyYXkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmFuY2lhbFNlcnZpY2U6IEFncm9GaW5hbmNpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBjb2x1bmFzIGRhIHRhYmVsYSBlIGNhbXBvcyBleGliaWRvcyBubyBzaWRlYmFyLFxyXG4gICAgICogZGVwb2lzIGRpc3BhcmEgYSBwcmltZWlyYSBidXNjYSBkZSB0w610dWxvcyBjb20gb3MgZmlsdHJvcyBpbmZvcm1hZG9zIGVtIHtAbGluayBvcHRpb25zfS5cclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0aXRsZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnRpdGxlXCIsIFtcIm51bWJlclRpdGxlXCJdLCBGaWVsZFR5cGUuU3RyaW5nLCBUaXRsZUZpZWxkc09yZGVyQnkuTlVNQkVSX1RJVExFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0eXBlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudHlwZVwiLCBbXCJ0aXRsZVR5cGUuY29kXCIsIFwidGl0bGVUeXBlLmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImVudHJ5RGF0ZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVudHJ5XCIsIFtcImlzc3VlRGF0ZVwiXSwgRmllbGRUeXBlLkRhdGUsIFRpdGxlRmllbGRzT3JkZXJCeS5JU1NVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJkdWVEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZHVlX2RhdGVcIiwgW1wiZHVlRGF0ZVwiXSwgRmllbGRUeXBlLkRhdGUsIFRpdGxlRmllbGRzT3JkZXJCeS5EVUVfREFURSksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU9yaWdpblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcmlnaW5hbF92YWx1ZVwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm9yaWdpbmFsVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1JJR0lOQUxfVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3BlblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcGVuX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3BlblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk9QRU5fVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlTmV0XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX25ldFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm5ldFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk5FVF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlUGFpZFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX3RvX3BheVwiLCBbXCJ2YWx1ZVBhaWRcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNpZGViYXJGaWVsZHMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiY29tcGFueVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIiwgW1wiY29tcGFueS5jb2RcIiwgXCJjb21wYW55LmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImJyYW5jaFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmJyYW5jaFwiLCBbXCJicmFuY2guY29kXCIsIFwiYnJhbmNoLmRlc2NcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInByb2R1Y2VyXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucHJvZHVjZXJcIiwgW1wicHJvZHVjZXIuY29kXCIsIFwicHJvZHVjZXIuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+ICFbXCJ2YWx1ZVBhaWRcIiwgXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZlZXNcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9mZWVzXCIsIFtcInZhbHVlcy5pbnRlcmVzdFZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRmluZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2ZpbmVcIiwgW1widmFsdWVzLmZpbmVWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUNoYXJnZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2NoYXJnZVwiLCBbXCJ2YWx1ZXMuY2hhcmdlVmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZUNvcnJlY3Rpb25cIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfY29ycmVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm1vbmV0YXJ5Q29ycmVjdGlvblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVBZGRpdGlvbmFsXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2FkZGl0aW9uYWxcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vdGhlckFkZGl0aW9uVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVEaXNjb3VudFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2Rpc2NvdW50XCIsIFtcInZhbHVlcy5kaXNjb3VudFZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVPdGhlckRpc2NvdW50XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX290aGVyX2Rpc2NvdW50XCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3RoZXJEaXNjb3VudFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAuLi50aGlzLmdyaWRDb2x1bW5zLmZpbHRlcigoY29sKSA9PiBbXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmN1cnJlbnRMaXN0UGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFww7NzIGEgcmVuZGVyaXphw6fDo28gZGEgdGFiZWxhLCBzaW5jcm9uaXphIG8gZXN0YWRvIGRlIGNoZWNrYm94L2xpbmhhIGVkaXTDoXZlbFxyXG4gICAgICogY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zIHBhcmEgZXZpdGFyIGFjZXNzbyBhIHJlZmVyw6puY2lhcyBhaW5kYSBuw6NvIGNyaWFkYXMuXHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnRhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFnZVNpemUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnJvd3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um93SW5kZXgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LmZpcnN0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNvcnRGaWVsZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uc29ydEZpZWxkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNvcnRPcmRlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uc29ydE9yZGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmF6IHJlcXVpc2nDp8OjbyBwYWdpbmFkYS9vcmRlbmFkYSBwYXJhIGxpc3RhciBvcyB0w610dWxvcywgbW9udGEgbyBmb3JtdWzDoXJpb1xyXG4gICAgICogcmVhdGl2byBwYXJhIGNhZGEgbGluaGEgZSB0cmF0YSBlcnJvcyBkZSBiYWNrZW5kIGV4aWJpbmRvIG1lbnNhZ2VtIGFvIHVzdcOhcmlvLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldmVudCBwYXLDom1ldHJvcyBkZSBwYWdpbmHDp8Ojbywgb3JkZW5hw6fDo28gZSBmaWx0cm9zIHZpbmRvcyBkbyBQcmltZU5HLlxyXG4gICAgICovXHJcbiAgICB1cGRhdGVHcmlkKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBzaXplID0gZXZlbnQucm93cztcclxuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBzaXplO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gZXZlbnQuc29ydEZpZWxkO1xyXG4gICAgICAgIGNvbnN0IHNvcnRPcmRlciA9IGV2ZW50LnNvcnRPcmRlcjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0gZXZlbnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0OiBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0ID0ge1xyXG4gICAgICAgICAgICBwYWdlUmVxdWVzdDogeyBvZmZzZXQ6IHBhZ2UsIG9yZGVyQnk6IHRoaXMuZ2V0UmVjT3JkZXJCeShmaWVsZCwgc29ydE9yZGVyKSwgc2l6ZSB9LFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHRoaXMub3B0aW9ucyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZpbmFuY2lhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3RUaXRsZXMoaW5wdXQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldGFpbE1zZyA9IGVycj8ubWVzc2FnZSB8fCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xvYWRpbmdfYWNjb3VudHNfZGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2FyblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xvYWRpbmdfYWNjb3VudHNfdGl0bGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsTXNnXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3Q6IEZpbmFuY2lhbFF1ZXJ5RGF0YVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gbGlzdC50aXRsZXMgfHwgW107XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXBGb3JUaXRsZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1YW5kbyB1bSBpdGVtIMOpIGRlc21hcmNhZG8sIGxpbXBhIG8gYHZhbHVlUGFpZGAgY29ycmVzcG9uZGVudGVcclxuICAgICAqIHRhbnRvIG5vIG1vZGVsbyBkYSBsaW5oYSBxdWFudG8gbm8ge0BsaW5rIHRpdGxlc0Zvcm19LCBzZW0gZGlzcGFyYXIgbm92b3MgZXZlbnRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRvIGRlIGRlc21hcmNhw6fDo28gZW1pdGlkbyBwZWxvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIG9uVW5zZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZERhdGEuZmluZCgocikgPT4gci5pZCA9PT0gZXZlbnQuZGF0YS5pZCk7XHJcbiAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICByb3cudmFsdWVQYWlkID0gbnVsbDtcclxuICAgICAgICAgICAgLy8gYXR1YWxpemEgZm9ybSBjb250cm9sIGNvcnJlc3BvbmRlbnRlXHJcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChnKSA9PiBnLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy50aXRsZXNGb3JtLmF0KGlkeCk/LmdldChcInZhbHVlUGFpZFwiKTtcclxuICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgIGN0cmwuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dEZXRhaWxzKHJvd0RhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3cgPSByb3dEYXRhO1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlRGV0YWlscygpIHtcclxuICAgICAgICB0aGlzLnNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMYXN0Q29sdW1uKGluZGV4OiBudW1iZXIsIGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBjb2x1bW5zLmxlbmd0aCAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3R5bGVDb2x1bW5zKGZpZWxkOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGxldCBzdHlsZUNsYXNzID0ge307XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSB7IHdpZHRoOiBcIjUwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0aXRsZVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZHVlRGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTUwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0eXBlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJlbnRyeURhdGVcIjpcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSB7IHdpZHRoOiBcIjEyMHB4XCIgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTk4cHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHlsZUNsYXNzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb3Aob2JqOiBhbnksIGNvbDogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoIW9iaiB8fCAhY29sPy5wYXRoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIi1cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlcGFyYXRvciA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChjb25zdCBwYXRoIG9mIGNvbC5wYXRoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3IgKyBBZ3JvT2JqZWN0VXRpbHMuZ2V0UHJvcEFuZEZvcm1hdFZhbHVlKG9iaiwgcGF0aCwgY29sLnR5cGUpO1xyXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSBcIiAtIFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlY29uc3Ryw7NpIG8ge0BsaW5rIHRpdGxlc0Zvcm19IGNvbSBiYXNlIG5hIHtAbGluayBncmlkRGF0YX0gYXR1YWwsXHJcbiAgICAgKiBwcmVzZXJ2YW5kbyB2YWxvcmVzIGrDoSBpbmZvcm1hZG9zIGVtIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIHJlZ2lzdHJhbmRvIGxpc3RlbmVycyBkZSBtdWRhbsOnYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXBGb3JUaXRsZSgpIHtcclxuICAgICAgICBjb25zdCB0aXRsZXNGb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgdGl0bGVzRm9ybUFycmF5LmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbChpdGVtLmlkIHx8IG51bGwsIFtdKSxcclxuICAgICAgICAgICAgICAgIHZhbHVlUGFpZDogbmV3IEZvcm1Db250cm9sKHNlbGVjdGVkSXRlbT8udmFsdWVQYWlkID8/IG51bGwsIFtdKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9WYWx1ZVBhaWRDaGFuZ2VzKGdyb3VwLCBpdGVtKTtcclxuICAgICAgICAgICAgdGl0bGVzRm9ybUFycmF5LnB1c2goZ3JvdXApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2JzZXJ2YSBtdWRhbsOnYXMgbm8gY2FtcG8gYHZhbHVlUGFpZGAgZGUgdW1hIGxpbmhhLlxyXG4gICAgICogQXR1YWxpemEgbyBhcnJheSB7QGxpbmsgc2VsZWN0ZWR9IHF1YW5kbyBvIHTDrXR1bG8gZXN0w6Egc2VsZWNpb25hZG8sXHJcbiAgICAgKiBhcGxpY2EgbyBsaW1pdGUgZG8gdmFsb3IgbMOtcXVpZG8gKGBuZXRWYWx1ZWApIGUgZXZpdGEgbG9vcHMgZGUgZXZlbnRvcyB1c2FuZG9cclxuICAgICAqIGBzZXRWYWx1ZWAgY29tIGBlbWl0RXZlbnQ6IGZhbHNlYC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm9ybUdyb3VwIGdydXBvIGRlIGZvcm11bMOhcmlvIGFzc29jaWFkbyDDoCBsaW5oYSBkYSB0YWJlbGEuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSB0w610dWxvIGZpbmFuY2Vpcm8gY29ycmVzcG9uZGVudGUgw6AgbGluaGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9WYWx1ZVBhaWRDaGFuZ2VzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBGaW5hbmNpYWxUaXRsZUxpc3REdG8pIHtcclxuICAgICAgICBjb25zdCB2YWx1ZVBhaWRDb250cm9sID0gZm9ybUdyb3VwLmdldChcInZhbHVlUGFpZFwiKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJhd1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGFpZCA9IHRoaXMucGFyc2VOdW1iZXJTYWZlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGVJZCA9IGZvcm1Hcm91cC5nZXQoXCJpZFwiKT8udmFsdWU7XHJcblxyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBzZWxlY3RlZCBzZSBvIHTDrXR1bG8gZXN0aXZlciBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICBjb25zdCBzZWxJbmRleCA9IHRoaXMuc2VsZWN0ZWQuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSB0aXRsZUlkKTtcclxuICAgICAgICAgICAgaWYgKHNlbEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZ2FyYW50ZSBxdWUgdmFsdWVQYWlkIHNlamEgbnVtw6lyaWNvIG91IG51bGxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRbc2VsSW5kZXhdLnZhbHVlUGFpZCA9IHZhbHVlUGFpZDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIodGhpcy5zZWxlY3RlZFtzZWxJbmRleF0/LnZhbHVlcz8ubmV0VmFsdWUpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVQYWlkICE9PSBudWxsICYmIHZhbHVlUGFpZCA+IG5ldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRbc2VsSW5kZXhdLnZhbHVlUGFpZCA9IG5ldDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBVc2FkbyBwYXJhIGV2aXRhciBsb29wIGluZmluaXRvIGRlIGV2ZW50b3NcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVBhaWRDb250cm9sLnNldFZhbHVlKG5ldCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGF0dWFsaXphIGZsYWcgZGUgZXJyb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0uaGFzRXJyb3IgPSB2YWx1ZVBhaWRDb250cm9sLmludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICAvLyBlbWl0ZSBtdWRhbsOnYSBkZSBzZWxlw6fDo29cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzZSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG8sIGFwZW5hcyBhcGxpY2EgbGltaXRlIGxvY2FsIGJhc2VhZG8gbm8gaXRlbVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV0ID0gTnVtYmVyKGl0ZW0/LnZhbHVlcz8ubmV0VmFsdWUpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVQYWlkICE9PSBudWxsICYmIHZhbHVlUGFpZCA+IG5ldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHBhcnNlTnVtYmVyU2FmZSh2YWx1ZTogYW55KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSB2YWx1ZS5yZXBsYWNlKC9cXC4vZywgXCJcIikucmVwbGFjZShcIixcIiwgXCIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBuID0gcGFyc2VGbG9hdChjbGVhbmVkKTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKG4pID8gbnVsbCA6IG47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhIG8gbW9kbyBkZSBlZGnDp8OjbyBuYSBsaW5oYSBkYSB0YWJlbGEgUHJpbWVORyBlIGFwbGljYSByZWdyYXMgZGUgdmFsaWRhw6fDo29cclxuICAgICAqIG5vIGZvcm11bMOhcmlvIHJlYXRpdm8gY29ycmVzcG9uZGVudGUgw6BxdWVsYSBsaW5oYS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcm93IG9iamV0byBkZSBsaW5oYSByZWNlYmlkbyBkYSB0YWJlbGEuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdFJvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmluaXRSb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlWYWxpZGF0aW9uVG9Sb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRpY2lvbmEgdmFsaWRhZG9yZXMgZGluYW1pY2FtZW50ZSBhbyBjYW1wbyBgdmFsdWVQYWlkYCBkYSBsaW5oYSBlbSBlZGnDp8OjbyxcclxuICAgICAqIG1hcmNhIG8gY29udHJvbGUgY29tbyBzdWpvIGUgZm9yw6dhIHJldmFsaWRhw6fDo28gaW1lZGlhdGEgcGFyYSBleGliaXIgZXJyb3MgbmEgdGVsYS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcm93IG9iamV0byBkZSBsaW5oYSBwYXJhIGFwbGljYXIgdmFsaWRhw6fDo28uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYXBwbHlWYWxpZGF0aW9uVG9Sb3dFZGl0KHJvdzogYW55KSB7XHJcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmdyaWREYXRhLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm93LmlkKTtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLnRpdGxlc0Zvcm0uYXQocm93SW5kZXgpIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICBpZiAoIWZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoW3RoaXMuZ2V0VmFsaWRhdG9yc0ZvclJvd0VkaXQoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3Ryw7NpIG8ge0BsaW5rIFZhbGlkYXRvckZufSBxdWUgdmFsaWRhIG8gYHZhbHVlUGFpZGA6XHJcbiAgICAgKiAtIGRldmUgc2VyIG1haW9yIHF1ZSB6ZXJvO1xyXG4gICAgICogLSBuw6NvIHBvZGUgdWx0cmFwYXNzYXIgbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZG8gdMOtdHVsby5cclxuICAgICAqXHJcbiAgICAgKiBSZXRvcm5hIG9zIGVycm9zIGNvbnN1bWlkb3MgcGVsbyBjb21wb25lbnRlIGBzLWNvbnRyb2wtZXJyb3JzYC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlSWQgPSBwYXJlbnQ/LmdldChcImlkXCIpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVBhaWQgPSB0aGlzLnBhcnNlTnVtYmVyU2FmZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPT09IG51bGwgfHwgdmFsdWVQYWlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPD0gQUdST19OVU1CRVJTLlpFUk8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGxlc3NUaGFuWmVybzogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb2N1cmEgcGVsbyB0w610dWxvIG5vIHNlbGVjdGVkIG91IG5vIGdyaWREYXRhIChwcmlvcml6YSBzZWxlY3RlZClcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSB0aXRsZUlkKSB8fCB0aGlzLmdyaWREYXRhLmZpbmQoKGcpID0+IGcuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXRWYWx1ZSA9IE51bWJlcihzZWxlY3RlZFJvdz8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA+IG5ldFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBncmVhdGhlclRoYW5BbGxvd2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbmNlbFJvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW50w6ltIG8gZXN0YWRvIHZpc3VhbCBkYSB0YWJlbGEgKGNoZWNrYm94IG1hcmNhZG8gZSBsaW5oYSBlZGl0w6F2ZWwpIGVtXHJcbiAgICAgKiBzaW5jcm9uaWEgY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zLCBpbmNsdXNpdmUgcmVzdGF1cmFuZG8gdmFsb3Jlc1xyXG4gICAgICogZGlnaXRhZG9zIGFvIHJlY2FycmVnYXIsIG9yZGVuYXIgb3UgcGFnaW5hciBhIGdyaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZERhdGEgfHwgIXRoaXMudGFibGVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSByb3cuaWQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY3RybCA9IHRoaXMudGl0bGVzRm9ybS5hdChpbmRleCk/LmdldChcInZhbHVlUGFpZFwiKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFJvdykge1xyXG4gICAgICAgICAgICAgICAgLy8gU2luY3Jvbml6YSBvIHZhbG9yIHBhZ28gZG8gaXRlbSBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgcm93LnZhbHVlUGFpZCA9IHNlbGVjdGVkUm93LnZhbHVlUGFpZDtcclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShzZWxlY3RlZFJvdy52YWx1ZVBhaWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIENhbmNlbGEgYSBlZGnDp8OjbyBzZSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RmllbGRzKGZpZWxkOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSwgdHlwZTogRmllbGRUeXBlLCBmaWVsZE9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSk6IENvbHVtbkNvbmZpZyB7XHJcbiAgICAgICAgcmV0dXJuIHsgZmllbGQsIHBhdGgsIHR5cGUsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChoZWFkZXIpLCBvcmRlckJ5OiBmaWVsZE9yZGVyQnkgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZE1lc3NhZ2Uoc2V2ZXJpdHk6IHN0cmluZywgc3VtbWFyeTogc3RyaW5nLCBkZXRhaWw6IHN0cmluZywgc3RpY2t5ID0gZmFsc2UsIGxpZmUgPSA3MDAwKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eSxcclxuICAgICAgICAgICAgc3RpY2t5LFxyXG4gICAgICAgICAgICBsaWZlLFxyXG4gICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHN1bW1hcnkpLFxyXG4gICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZGV0YWlsKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFJlY09yZGVyQnkoZmllbGQ6IHN0cmluZywgb3JkZXI6IG51bWJlcik6IFJlY09yZGVyQnkge1xyXG4gICAgICAgIGNvbnN0IGdyaWRDb2x1bW5GaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wuZmllbGQgPT09IGZpZWxkKTtcclxuICAgICAgICBpZiAoZ3JpZENvbHVtbkZpZWxkPy5vcmRlckJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBmaWVsZDogZ3JpZENvbHVtbkZpZWxkPy5vcmRlckJ5IHx8IFRpdGxlRmllbGRzT3JkZXJCeS5OVU1CRVJfVElUTEUsXHJcbiAgICAgICAgICAgIG9yZGVyOiBvcmRlciA9PT0gMSA/IE9yZGVyQnlUeXBlLkFTQyA6IE9yZGVyQnlUeXBlLkRFU0MsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -66,7 +66,7 @@ var FinancialTitleTableComponent = /** @class */ (function () {
66
66
  this.getFields("branch", "agro.angular_components.branch", ["branch.cod", "branch.desc"], FieldType.String, null),
67
67
  this.getFields("producer", "agro.angular_components.producer", ["producer.cod", "producer.desc"], FieldType.String, null)
68
68
  ], this.gridColumns.filter(function (col) { return !["valuePaid", "valueNet"].includes(col.field); }), [
69
- this.getFields("valueFees", "agro.angular_components.value_fees", ["values.feesValue"], FieldType.Money, null),
69
+ this.getFields("valueFees", "agro.angular_components.value_fees", ["values.interestValue"], FieldType.Money, null),
70
70
  this.getFields("valueFine", "agro.angular_components.value_fine", ["values.fineValue"], FieldType.Money, null),
71
71
  this.getFields("valueCharge", "agro.angular_components.value_charge", ["values.chargeValue"], FieldType.Money, null),
72
72
  this.getFields("valueCorrection", "agro.angular_components.value_correction", ["values.monetaryCorrectionValue"], FieldType.Money, null),
@@ -435,4 +435,4 @@ var FinancialTitleTableComponent = /** @class */ (function () {
435
435
  return FinancialTitleTableComponent;
436
436
  }());
437
437
  export { FinancialTitleTableComponent };
438
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXNCN0U7SUF3Q0ksc0NBQ3FCLFNBQWdDLEVB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LFVBQUMsR0FBRyxJQUFLLE9BQUEsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQW5CLENBQW1CLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLE9BQU8sTUFBSyxJQUFJLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU87WUFDSCxLQUFLLEVBQUUsQ0FBQSxlQUFlLGFBQWYsZUFBZSx1QkFBZixlQUFlLENBQUUsT0FBTyxLQUFJLGtCQUFrQixDQUFDLFlBQVk7WUFDbEUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO1NBQzFELENBQUM7SUFDTixDQUFDOztnQkFuYStCLHFCQUFxQjtnQkFDZCxvQkFBb0I7Z0JBQ3RCLGNBQWM7O0lBMUMxQjtRQUF4QixTQUFTLENBQUMsWUFBWSxDQUFDOytEQUFjO0lBRTdCO1FBQVIsS0FBSyxFQUFFO2lFQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTtrRUFBd0M7SUFDdEM7UUFBVCxNQUFNLEVBQUU7eUVBQTZDO0lBTDdDLDRCQUE0QjtRQUx4QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLGsxUkFBcUQ7O1NBRXhELENBQUM7T0FDVyw0QkFBNEIsQ0E2Y3hDO0lBQUQsbUNBQUM7Q0FBQSxBQTdjRCxJQTZjQztTQTdjWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcHRcIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJhZGdlQ29sb3JzLCBCdXR0b25Qcmlvcml0eSwgQnV0dG9uU2l6ZSwgRmllbGRUeXBlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCwgTWVzc2FnZVNlcnZpY2UsIFRhYmxlIH0gZnJvbSBcInByaW1lbmdcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEFncm9PYmplY3RVdGlscyB9IGZyb20gXCIuLi8uLi9jb21tb24vYWdyby1vYmplY3QtdXRpbHMuY2xhc3NcIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uLy4uL2VudW1zXCI7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9saWItdHJhbnNsYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaW5hbmNpYWxUaXRsZU9wdGlvbnMgfSBmcm9tIFwiLi9maW5hbmNpYWwtdGl0bGUtdGFibGUtb3B0aW9ucy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQWdyb0ZpbmFuY2lhbFNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9maW5hbmNpYWwvYWdyby1maW5hbmNpYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPcmRlckJ5VHlwZSwgVGl0bGVGaWVsZHNPcmRlckJ5IH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2VudW1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZSxcclxuICAgIEZpbmFuY2lhbFRpdGxlTGlzdER0byxcclxuICAgIFJlY09yZGVyQnksXHJcbiAgICBSZWNvcmRUaXRsZUR0byxcclxuICAgIFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQsXHJcbn0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2ludGVmYWNlc1wiO1xyXG5cclxuaW50ZXJmYWNlIENvbHVtbkNvbmZpZyB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgaGVhZGVyOiBzdHJpbmc7XHJcbiAgICBwYXRoOiBzdHJpbmdbXTtcclxuICAgIHR5cGU6IEZpZWxkVHlwZTtcclxuICAgIG9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSB8IG51bGw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwicy1maW5hbmNpYWwtdGl0bGUtdGFibGVcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaW5hbmNpYWxUaXRsZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZChcIlRpdGxlVGFibGVcIikgdGFibGU6IFRhYmxlO1xyXG5cclxuICAgIEBJbnB1dCgpIG9wdGlvbnMhOiBGaW5hbmNpYWxUaXRsZU9wdGlvbnM7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZDogRmluYW5jaWFsVGl0bGVMaXN0RHRvW10gPSBbXTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICAgIGdyaWREYXRhOiBGaW5hbmNpYWxUaXRsZUxpc3REdG9bXSA9IFtdO1xyXG4gICAgZ3JpZFRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cclxuICAgIGVycm9yTWVzc2FnZTogYW55ID0ge1xyXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfcmVxdWlyZWRcIiksXHJcbiAgICAgICAgbGVzc1RoYW5aZXJvOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbGVzc19vcl9lcXVhbF96ZXJvXCIpLFxyXG4gICAgICAgIGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9ncmVhdGVyX3RoYW5fYWxsb3dlZFwiKSxcclxuICAgIH07XHJcblxyXG4gICAgdGFibGVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkUm93OiBSZWNvcmRUaXRsZUR0bztcclxuXHJcbiAgICBncmlkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcclxuICAgIHNpZGViYXJGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xyXG4gICAgYnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcclxuICAgIGJhZGdlQ29sb3JzID0gQmFkZ2VDb2xvcnM7XHJcblxyXG4gICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgIHRpdGxlc0Zvcm06IG5ldyBGb3JtQXJyYXkoW10sIFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHByaXZhdGUgY3VycmVudExpc3RQYXJhbXM6IExhenlMb2FkRXZlbnQgPSB7IGZpcnN0OiAwLCByb3dzOiAxMCwgc29ydEZpZWxkOiBudWxsLCBzb3J0T3JkZXI6IG51bGwsIGZpbHRlcnM6IHt9IH07XHJcbiAgICByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIGdldCB0aXRsZXNGb3JtKCk6IEZvcm1BcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmluYW5jaWFsU2VydmljZTogQWdyb0ZpbmFuY2lhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVQdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWFsaXphIGNvbHVuYXMgZGEgdGFiZWxhIGUgY2FtcG9zIGV4aWJpZG9zIG5vIHNpZGViYXIsXHJcbiAgICAgKiBkZXBvaXMgZGlzcGFyYSBhIHByaW1laXJhIGJ1c2NhIGRlIHTDrXR1bG9zIGNvbSBvcyBmaWx0cm9zIGluZm9ybWFkb3MgZW0ge0BsaW5rIG9wdGlvbnN9LlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gW1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInRpdGxlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudGl0bGVcIiwgW1wibnVtYmVyVGl0bGVcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIFRpdGxlRmllbGRzT3JkZXJCeS5OVU1CRVJfVElUTEUpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInR5cGVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy50eXBlXCIsIFtcInRpdGxlVHlwZS5jb2RcIiwgXCJ0aXRsZVR5cGUuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiZW50cnlEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZW50cnlcIiwgW1wiaXNzdWVEYXRlXCJdLCBGaWVsZFR5cGUuRGF0ZSwgVGl0bGVGaWVsZHNPcmRlckJ5LklTU1VFX0RBVEUpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImR1ZURhdGVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5kdWVfZGF0ZVwiLCBbXCJkdWVEYXRlXCJdLCBGaWVsZFR5cGUuRGF0ZSwgVGl0bGVGaWVsZHNPcmRlckJ5LkRVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3JpZ2luXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLm9yaWdpbmFsX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3JpZ2luYWxWYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIFRpdGxlRmllbGRzT3JkZXJCeS5PUklHSU5BTF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVPcGVuXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLm9wZW5fdmFsdWVcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vcGVuVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1BFTl9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVOZXRcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfbmV0XCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMubmV0VmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuTkVUX1ZBTFVFXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVQYWlkXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfdG9fcGF5XCIsIFtcInZhbHVlUGFpZFwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2lkZWJhckZpZWxkcyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJjb21wYW55XCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY29tcGFueVwiLCBbXCJjb21wYW55LmNvZFwiLCBcImNvbXBhbnkuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiYnJhbmNoXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuYnJhbmNoXCIsIFtcImJyYW5jaC5jb2RcIiwgXCJicmFuY2guZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwicHJvZHVjZXJcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5wcm9kdWNlclwiLCBbXCJwcm9kdWNlci5jb2RcIiwgXCJwcm9kdWNlci5kZXNjXCJdLCBGaWVsZFR5cGUuU3RyaW5nLCBudWxsKSxcclxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gIVtcInZhbHVlUGFpZFwiLCBcInZhbHVlTmV0XCJdLmluY2x1ZGVzKGNvbC5maWVsZCkpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRmVlc1wiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2ZlZXNcIiwgW1widmFsdWVzLmZlZXNWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZpbmVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9maW5lXCIsIFtcInZhbHVlcy5maW5lVmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVDaGFyZ2VcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9jaGFyZ2VcIiwgW1widmFsdWVzLmNoYXJnZVZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVDb3JyZWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2NvcnJlY3Rpb25cIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5tb25ldGFyeUNvcnJlY3Rpb25WYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlQWRkaXRpb25hbFwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9hZGRpdGlvbmFsXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3RoZXJBZGRpdGlvblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgRmllbGRUeXBlLk1vbmV5LFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRGlzY291bnRcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9kaXNjb3VudFwiLCBbXCJ2YWx1ZXMuZGlzY291bnRWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3RoZXJEaXNjb3VudFwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9vdGhlcl9kaXNjb3VudFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm90aGVyRGlzY291bnRWYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gW1widmFsdWVOZXRcIl0uaW5jbHVkZXMoY29sLmZpZWxkKSksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUdyaWQodGhpcy5jdXJyZW50TGlzdFBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcMOzcyBhIHJlbmRlcml6YcOnw6NvIGRhIHRhYmVsYSwgc2luY3Jvbml6YSBvIGVzdGFkbyBkZSBjaGVja2JveC9saW5oYSBlZGl0w6F2ZWxcclxuICAgICAqIGNvbSBvIGFycmF5IGRlIHTDrXR1bG9zIHNlbGVjaW9uYWRvcyBwYXJhIGV2aXRhciBhY2Vzc28gYSByZWZlcsOqbmNpYXMgYWluZGEgbsOjbyBjcmlhZGFzLlxyXG4gICAgICovXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBhZ2VTaXplKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5yb3dzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJvd0luZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5maXJzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTb3J0RmllbGQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnNvcnRGaWVsZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTb3J0T3JkZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnNvcnRPcmRlcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZheiByZXF1aXNpw6fDo28gcGFnaW5hZGEvb3JkZW5hZGEgcGFyYSBsaXN0YXIgb3MgdMOtdHVsb3MsIG1vbnRhIG8gZm9ybXVsw6FyaW9cclxuICAgICAqIHJlYXRpdm8gcGFyYSBjYWRhIGxpbmhhIGUgdHJhdGEgZXJyb3MgZGUgYmFja2VuZCBleGliaW5kbyBtZW5zYWdlbSBhbyB1c3XDoXJpby5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgcGFyw6JtZXRyb3MgZGUgcGFnaW5hw6fDo28sIG9yZGVuYcOnw6NvIGUgZmlsdHJvcyB2aW5kb3MgZG8gUHJpbWVORy5cclxuICAgICAqL1xyXG4gICAgdXBkYXRlR3JpZChldmVudDogTGF6eUxvYWRFdmVudCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnJvd3M7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IGV2ZW50LmZpcnN0IC8gc2l6ZTtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGV2ZW50LnNvcnRGaWVsZDtcclxuICAgICAgICBjb25zdCBzb3J0T3JkZXIgPSBldmVudC5zb3J0T3JkZXI7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IGV2ZW50O1xyXG5cclxuICAgICAgICBjb25zdCBpbnB1dDogUmVxdWVzdExpc3RUaXRsZXNJbnB1dCA9IHtcclxuICAgICAgICAgICAgcGFnZVJlcXVlc3Q6IHsgb2Zmc2V0OiBwYWdlLCBvcmRlckJ5OiB0aGlzLmdldFJlY09yZGVyQnkoZmllbGQsIHNvcnRPcmRlciksIHNpemUgfSxcclxuICAgICAgICAgICAgZmlsdGVyOiB0aGlzLm9wdGlvbnMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5maW5hbmNpYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5saXN0VGl0bGVzKGlucHV0KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXRhaWxNc2cgPSBlcnI/Lm1lc3NhZ2UgfHwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9sb2FkaW5nX2FjY291bnRzX2Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndhcm5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9sb2FkaW5nX2FjY291bnRzX3RpdGxlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbE1zZ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChsaXN0OiBGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGxpc3QudGl0bGVzIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwRm9yVGl0bGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRUb3RhbFJlY29yZHMgPSBsaXN0LnRvdGFsRWxlbWVudHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblNlbGVjdGlvbkNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBRdWFuZG8gdW0gaXRlbSDDqSBkZXNtYXJjYWRvLCBsaW1wYSBvIGB2YWx1ZVBhaWRgIGNvcnJlc3BvbmRlbnRlXHJcbiAgICAgKiB0YW50byBubyBtb2RlbG8gZGEgbGluaGEgcXVhbnRvIG5vIHtAbGluayB0aXRsZXNGb3JtfSwgc2VtIGRpc3BhcmFyIG5vdm9zIGV2ZW50b3MuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IGV2ZW50byBkZSBkZXNtYXJjYcOnw6NvIGVtaXRpZG8gcGVsbyBQcmltZU5HLlxyXG4gICAgICovXHJcbiAgICBvblVuc2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLmdyaWREYXRhLmZpbmQoKHIpID0+IHIuaWQgPT09IGV2ZW50LmRhdGEuaWQpO1xyXG4gICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgICAgcm93LnZhbHVlUGFpZCA9IG51bGw7XHJcbiAgICAgICAgICAgIC8vIGF0dWFsaXphIGZvcm0gY29udHJvbCBjb3JyZXNwb25kZW50ZVxyXG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmdyaWREYXRhLmZpbmRJbmRleCgoZykgPT4gZy5pZCA9PT0gcm93LmlkKTtcclxuICAgICAgICAgICAgY29uc3QgY3RybCA9IHRoaXMudGl0bGVzRm9ybS5hdChpZHgpPy5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RGV0YWlscyhyb3dEYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93ID0gcm93RGF0YTtcclxuICAgICAgICB0aGlzLnNob3dTaWRlYmFyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZURldGFpbHMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTGFzdENvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0eWxlQ29sdW1ucyhmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBsZXQgc3R5bGVDbGFzcyA9IHt9O1xyXG4gICAgICAgIHN3aXRjaCAoZmllbGQpIHtcclxuICAgICAgICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCI1MHB4XCIgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidGl0bGVcIjpcclxuICAgICAgICAgICAgY2FzZSBcImR1ZURhdGVcIjpcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSB7IHdpZHRoOiBcIjE1MHB4XCIgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwidHlwZVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZW50cnlEYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxMjBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSB7IHdpZHRoOiBcIjE5OHB4XCIgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3R5bGVDbGFzcztcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9wKG9iajogYW55LCBjb2w6IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFvYmogfHwgIWNvbD8ucGF0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCItXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZXBhcmF0b3IgPSBcIlwiO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xyXG4gICAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBjb2wucGF0aCkge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gc2VwYXJhdG9yICsgQWdyb09iamVjdFV0aWxzLmdldFByb3BBbmRGb3JtYXRWYWx1ZShvYmosIHBhdGgsIGNvbC50eXBlKTtcclxuICAgICAgICAgICAgc2VwYXJhdG9yID0gXCIgLSBcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWNvbnN0csOzaSBvIHtAbGluayB0aXRsZXNGb3JtfSBjb20gYmFzZSBuYSB7QGxpbmsgZ3JpZERhdGF9IGF0dWFsLFxyXG4gICAgICogcHJlc2VydmFuZG8gdmFsb3JlcyBqw6EgaW5mb3JtYWRvcyBlbSBpdGVucyBzZWxlY2lvbmFkb3MgZSByZWdpc3RyYW5kbyBsaXN0ZW5lcnMgZGUgbXVkYW7Dp2EuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwRm9yVGl0bGUoKSB7XHJcbiAgICAgICAgY29uc3QgdGl0bGVzRm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldChcInRpdGxlc0Zvcm1cIikgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIHRpdGxlc0Zvcm1BcnJheS5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICAgICAgICAgIGlkOiBuZXcgRm9ybUNvbnRyb2woaXRlbS5pZCB8fCBudWxsLCBbXSksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVBhaWQ6IG5ldyBGb3JtQ29udHJvbChzZWxlY3RlZEl0ZW0/LnZhbHVlUGFpZCA/PyBudWxsLCBbXSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRvVmFsdWVQYWlkQ2hhbmdlcyhncm91cCwgaXRlbSk7XHJcbiAgICAgICAgICAgIHRpdGxlc0Zvcm1BcnJheS5wdXNoKGdyb3VwKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9ic2VydmEgbXVkYW7Dp2FzIG5vIGNhbXBvIGB2YWx1ZVBhaWRgIGRlIHVtYSBsaW5oYS5cclxuICAgICAqIEF0dWFsaXphIG8gYXJyYXkge0BsaW5rIHNlbGVjdGVkfSBxdWFuZG8gbyB0w610dWxvIGVzdMOhIHNlbGVjaW9uYWRvLFxyXG4gICAgICogYXBsaWNhIG8gbGltaXRlIGRvIHZhbG9yIGzDrXF1aWRvIChgbmV0VmFsdWVgKSBlIGV2aXRhIGxvb3BzIGRlIGV2ZW50b3MgdXNhbmRvXHJcbiAgICAgKiBgc2V0VmFsdWVgIGNvbSBgZW1pdEV2ZW50OiBmYWxzZWAuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZvcm1Hcm91cCBncnVwbyBkZSBmb3JtdWzDoXJpbyBhc3NvY2lhZG8gw6AgbGluaGEgZGEgdGFiZWxhLlxyXG4gICAgICogQHBhcmFtIGl0ZW0gdMOtdHVsbyBmaW5hbmNlaXJvIGNvcnJlc3BvbmRlbnRlIMOgIGxpbmhhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN1YnNjcmliZVRvVmFsdWVQYWlkQ2hhbmdlcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogRmluYW5jaWFsVGl0bGVMaXN0RHRvKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVQYWlkQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyYXdWYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVBhaWQgPSB0aGlzLnBhcnNlTnVtYmVyU2FmZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlSWQgPSBmb3JtR3JvdXAuZ2V0KFwiaWRcIik/LnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgLy8gYXR1YWxpemEgc2VsZWN0ZWQgc2UgbyB0w610dWxvIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgICAgICAgICAgY29uc3Qgc2VsSW5kZXggPSB0aGlzLnNlbGVjdGVkLmZpbmRJbmRleCgocykgPT4gcy5pZCA9PT0gdGl0bGVJZCk7XHJcbiAgICAgICAgICAgIGlmIChzZWxJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIC8vIGdhcmFudGUgcXVlIHZhbHVlUGFpZCBzZWphIG51bcOpcmljbyBvdSBudWxsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS52YWx1ZVBhaWQgPSB2YWx1ZVBhaWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV0ID0gTnVtYmVyKHRoaXMuc2VsZWN0ZWRbc2VsSW5kZXhdPy52YWx1ZXM/Lm5ldFZhbHVlKSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCAhPT0gbnVsbCAmJiB2YWx1ZVBhaWQgPiBuZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS52YWx1ZVBhaWQgPSBuZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNhZG8gcGFyYSBldml0YXIgbG9vcCBpbmZpbml0byBkZSBldmVudG9zXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQYWlkQ29udHJvbC5zZXRWYWx1ZShuZXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBhdHVhbGl6YSBmbGFnIGRlIGVycm9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRbc2VsSW5kZXhdLmhhc0Vycm9yID0gdmFsdWVQYWlkQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgLy8gZW1pdGUgbXVkYW7Dp2EgZGUgc2VsZcOnw6NvXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc2UgbsOjbyBlc3RpdmVyIHNlbGVjaW9uYWRvLCBhcGVuYXMgYXBsaWNhIGxpbWl0ZSBsb2NhbCBiYXNlYWRvIG5vIGl0ZW1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ldCA9IE51bWJlcihpdGVtPy52YWx1ZXM/Lm5ldFZhbHVlKSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCAhPT0gbnVsbCAmJiB2YWx1ZVBhaWQgPiBuZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVBhaWRDb250cm9sLnNldFZhbHVlKG5ldCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwYXJzZU51bWJlclNhZmUodmFsdWU6IGFueSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBjb25zdCBjbGVhbmVkID0gdmFsdWUucmVwbGFjZSgvXFwuL2csIFwiXCIpLnJlcGxhY2UoXCIsXCIsIFwiLlwiKTtcclxuICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlRmxvYXQoY2xlYW5lZCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc05hTihuKSA/IG51bGwgOiBuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYSBvIG1vZG8gZGUgZWRpw6fDo28gbmEgbGluaGEgZGEgdGFiZWxhIFByaW1lTkcgZSBhcGxpY2EgcmVncmFzIGRlIHZhbGlkYcOnw6NvXHJcbiAgICAgKiBubyBmb3JtdWzDoXJpbyByZWF0aXZvIGNvcnJlc3BvbmRlbnRlIMOgcXVlbGEgbGluaGEuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJvdyBvYmpldG8gZGUgbGluaGEgcmVjZWJpZG8gZGEgdGFiZWxhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluaXRSb3dFZGl0KHJvdzogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5pbml0Um93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5VmFsaWRhdGlvblRvUm93RWRpdChyb3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkaWNpb25hIHZhbGlkYWRvcmVzIGRpbmFtaWNhbWVudGUgYW8gY2FtcG8gYHZhbHVlUGFpZGAgZGEgbGluaGEgZW0gZWRpw6fDo28sXHJcbiAgICAgKiBtYXJjYSBvIGNvbnRyb2xlIGNvbW8gc3VqbyBlIGZvcsOnYSByZXZhbGlkYcOnw6NvIGltZWRpYXRhIHBhcmEgZXhpYmlyIGVycm9zIG5hIHRlbGEuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJvdyBvYmpldG8gZGUgbGluaGEgcGFyYSBhcGxpY2FyIHZhbGlkYcOnw6NvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFwcGx5VmFsaWRhdGlvblRvUm93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5ncmlkRGF0YS5maW5kSW5kZXgoKHIpID0+IHIuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy50aXRsZXNGb3JtLmF0KHJvd0luZGV4KSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgaWYgKCFmb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2YWx1ZVBhaWRDb250cm9sID0gZm9ybUdyb3VwLmdldChcInZhbHVlUGFpZFwiKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy5zZXRWYWxpZGF0b3JzKFt0aGlzLmdldFZhbGlkYXRvcnNGb3JSb3dFZGl0KCksIFZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0csOzaSBvIHtAbGluayBWYWxpZGF0b3JGbn0gcXVlIHZhbGlkYSBvIGB2YWx1ZVBhaWRgOlxyXG4gICAgICogLSBkZXZlIHNlciBtYWlvciBxdWUgemVybztcclxuICAgICAqIC0gbsOjbyBwb2RlIHVsdHJhcGFzc2FyIG8gdmFsb3IgbMOtcXVpZG8gKGBuZXRWYWx1ZWApIGRvIHTDrXR1bG8uXHJcbiAgICAgKlxyXG4gICAgICogUmV0b3JuYSBvcyBlcnJvcyBjb25zdW1pZG9zIHBlbG8gY29tcG9uZW50ZSBgcy1jb250cm9sLWVycm9yc2AuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0VmFsaWRhdG9yc0ZvclJvd0VkaXQoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgICAgIHJldHVybiAoY29udHJvbDogRm9ybUNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gY29udHJvbC5wYXJlbnQgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZUlkID0gcGFyZW50Py5nZXQoXCJpZFwiKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVQYWlkID0gdGhpcy5wYXJzZU51bWJlclNhZmUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAodmFsdWVQYWlkID09PSBudWxsIHx8IHZhbHVlUGFpZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWVQYWlkIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBsZXNzVGhhblplcm86IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9jdXJhIHBlbG8gdMOtdHVsbyBubyBzZWxlY3RlZCBvdSBubyBncmlkRGF0YSAocHJpb3JpemEgc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUm93ID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gdGl0bGVJZCkgfHwgdGhpcy5ncmlkRGF0YS5maW5kKChnKSA9PiBnLmlkID09PSB0aXRsZUlkKTtcclxuICAgICAgICAgICAgY29uc3QgbmV0VmFsdWUgPSBOdW1iZXIoc2VsZWN0ZWRSb3c/LnZhbHVlcz8ubmV0VmFsdWUpIHx8IDA7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPiBuZXRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZ3JlYXRoZXJUaGFuQWxsb3dlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYW5jZWxSb3dFZGl0KHJvdzogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5jYW5jZWxSb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFudMOpbSBvIGVzdGFkbyB2aXN1YWwgZGEgdGFiZWxhIChjaGVja2JveCBtYXJjYWRvIGUgbGluaGEgZWRpdMOhdmVsKSBlbVxyXG4gICAgICogc2luY3JvbmlhIGNvbSBvIGFycmF5IGRlIHTDrXR1bG9zIHNlbGVjaW9uYWRvcywgaW5jbHVzaXZlIHJlc3RhdXJhbmRvIHZhbG9yZXNcclxuICAgICAqIGRpZ2l0YWRvcyBhbyByZWNhcnJlZ2FyLCBvcmRlbmFyIG91IHBhZ2luYXIgYSBncmlkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyaWREYXRhIHx8ICF0aGlzLnRhYmxlSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5mb3JFYWNoKChyb3csIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUm93ID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gcm93LmlkKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnRpdGxlc0Zvcm0uYXQoaW5kZXgpPy5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcblxyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRSb3cpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNpbmNyb25pemEgbyB2YWxvciBwYWdvIGRvIGl0ZW0gc2VsZWNpb25hZG9cclxuICAgICAgICAgICAgICAgIHJvdy52YWx1ZVBhaWQgPSBzZWxlY3RlZFJvdy52YWx1ZVBhaWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN0cmwuc2V0VmFsdWUoc2VsZWN0ZWRSb3cudmFsdWVQYWlkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRSb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBDYW5jZWxhIGEgZWRpw6fDo28gc2UgbsOjbyBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN0cmwuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxSb3dFZGl0KHJvdyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEZpZWxkcyhmaWVsZDogc3RyaW5nLCBoZWFkZXI6IHN0cmluZywgcGF0aDogc3RyaW5nW10sIHR5cGU6IEZpZWxkVHlwZSwgZmllbGRPcmRlckJ5OiBUaXRsZUZpZWxkc09yZGVyQnkpOiBDb2x1bW5Db25maWcge1xyXG4gICAgICAgIHJldHVybiB7IGZpZWxkLCBwYXRoLCB0eXBlLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaGVhZGVyKSwgb3JkZXJCeTogZmllbGRPcmRlckJ5IH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlKHNldmVyaXR5OiBzdHJpbmcsIHN1bW1hcnk6IHN0cmluZywgZGV0YWlsOiBzdHJpbmcsIHN0aWNreSA9IGZhbHNlLCBsaWZlID0gNzAwMCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHksXHJcbiAgICAgICAgICAgIHN0aWNreSxcclxuICAgICAgICAgICAgbGlmZSxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChzdW1tYXJ5KSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldGFpbCksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRSZWNPcmRlckJ5KGZpZWxkOiBzdHJpbmcsIG9yZGVyOiBudW1iZXIpOiBSZWNPcmRlckJ5IHtcclxuICAgICAgICBjb25zdCBncmlkQ29sdW1uRmllbGQgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmZpZWxkID09PSBmaWVsZCk7XHJcbiAgICAgICAgaWYgKGdyaWRDb2x1bW5GaWVsZD8ub3JkZXJCeSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IGdyaWRDb2x1bW5GaWVsZD8ub3JkZXJCeSB8fCBUaXRsZUZpZWxkc09yZGVyQnkuTlVNQkVSX1RJVExFLFxyXG4gICAgICAgICAgICBvcmRlcjogb3JkZXIgPT09IDEgPyBPcmRlckJ5VHlwZS5BU0MgOiBPcmRlckJ5VHlwZS5ERVNDLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maW5hbmNpYWwtdGl0bGUtdGFibGUvZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQXNCN0U7SUF3Q0ksc0NBQ3FCLFNBQWdDLEVB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LFVBQUMsR0FBRyxJQUFLLE9BQUEsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQW5CLENBQW1CLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLE9BQU8sTUFBSyxJQUFJLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU87WUFDSCxLQUFLLEVBQUUsQ0FBQSxlQUFlLGFBQWYsZUFBZSx1QkFBZixlQUFlLENBQUUsT0FBTyxLQUFJLGtCQUFrQixDQUFDLFlBQVk7WUFDbEUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO1NBQzFELENBQUM7SUFDTixDQUFDOztnQkFuYStCLHFCQUFxQjtnQkFDZCxvQkFBb0I7Z0JBQ3RCLGNBQWM7O0lBMUMxQjtRQUF4QixTQUFTLENBQUMsWUFBWSxDQUFDOytEQUFjO0lBRTdCO1FBQVIsS0FBSyxFQUFFO2lFQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTtrRUFBd0M7SUFDdEM7UUFBVCxNQUFNLEVBQUU7eUVBQTZDO0lBTDdDLDRCQUE0QjtRQUx4QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLGsxUkFBcUQ7O1NBRXhELENBQUM7T0FDVyw0QkFBNEIsQ0E2Y3hDO0lBQUQsbUNBQUM7Q0FBQSxBQTdjRCxJQTZjQztTQTdjWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcHRcIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJhZGdlQ29sb3JzLCBCdXR0b25Qcmlvcml0eSwgQnV0dG9uU2l6ZSwgRmllbGRUeXBlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCwgTWVzc2FnZVNlcnZpY2UsIFRhYmxlIH0gZnJvbSBcInByaW1lbmdcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEFncm9PYmplY3RVdGlscyB9IGZyb20gXCIuLi8uLi9jb21tb24vYWdyby1vYmplY3QtdXRpbHMuY2xhc3NcIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uLy4uL2VudW1zXCI7XHJcbmltcG9ydCB7IExpYlRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9saWItdHJhbnNsYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaW5hbmNpYWxUaXRsZU9wdGlvbnMgfSBmcm9tIFwiLi9maW5hbmNpYWwtdGl0bGUtdGFibGUtb3B0aW9ucy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQWdyb0ZpbmFuY2lhbFNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9maW5hbmNpYWwvYWdyby1maW5hbmNpYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPcmRlckJ5VHlwZSwgVGl0bGVGaWVsZHNPcmRlckJ5IH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2VudW1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBGaW5hbmNpYWxRdWVyeURhdGFSZXNwb25zZSxcclxuICAgIEZpbmFuY2lhbFRpdGxlTGlzdER0byxcclxuICAgIFJlY09yZGVyQnksXHJcbiAgICBSZWNvcmRUaXRsZUR0byxcclxuICAgIFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQsXHJcbn0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2ludGVmYWNlc1wiO1xyXG5cclxuaW50ZXJmYWNlIENvbHVtbkNvbmZpZyB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgaGVhZGVyOiBzdHJpbmc7XHJcbiAgICBwYXRoOiBzdHJpbmdbXTtcclxuICAgIHR5cGU6IEZpZWxkVHlwZTtcclxuICAgIG9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSB8IG51bGw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwicy1maW5hbmNpYWwtdGl0bGUtdGFibGVcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaW5hbmNpYWxUaXRsZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZChcIlRpdGxlVGFibGVcIikgdGFibGU6IFRhYmxlO1xyXG5cclxuICAgIEBJbnB1dCgpIG9wdGlvbnMhOiBGaW5hbmNpYWxUaXRsZU9wdGlvbnM7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZDogRmluYW5jaWFsVGl0bGVMaXN0RHRvW10gPSBbXTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICAgIGdyaWREYXRhOiBGaW5hbmNpYWxUaXRsZUxpc3REdG9bXSA9IFtdO1xyXG4gICAgZ3JpZFRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cclxuICAgIGVycm9yTWVzc2FnZTogYW55ID0ge1xyXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfcmVxdWlyZWRcIiksXHJcbiAgICAgICAgbGVzc1RoYW5aZXJvOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbGVzc19vcl9lcXVhbF96ZXJvXCIpLFxyXG4gICAgICAgIGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9ncmVhdGVyX3RoYW5fYWxsb3dlZFwiKSxcclxuICAgIH07XHJcblxyXG4gICAgdGFibGVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkUm93OiBSZWNvcmRUaXRsZUR0bztcclxuXHJcbiAgICBncmlkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcclxuICAgIHNpZGViYXJGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xyXG4gICAgYnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcclxuICAgIGJhZGdlQ29sb3JzID0gQmFkZ2VDb2xvcnM7XHJcblxyXG4gICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgIHRpdGxlc0Zvcm06IG5ldyBGb3JtQXJyYXkoW10sIFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHByaXZhdGUgY3VycmVudExpc3RQYXJhbXM6IExhenlMb2FkRXZlbnQgPSB7IGZpcnN0OiAwLCByb3dzOiAxMCwgc29ydEZpZWxkOiBudWxsLCBzb3J0T3JkZXI6IG51bGwsIGZpbHRlcnM6IHt9IH07XHJcbiAgICByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIGdldCB0aXRsZXNGb3JtKCk6IEZvcm1BcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmluYW5jaWFsU2VydmljZTogQWdyb0ZpbmFuY2lhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVQdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWFsaXphIGNvbHVuYXMgZGEgdGFiZWxhIGUgY2FtcG9zIGV4aWJpZG9zIG5vIHNpZGViYXIsXHJcbiAgICAgKiBkZXBvaXMgZGlzcGFyYSBhIHByaW1laXJhIGJ1c2NhIGRlIHTDrXR1bG9zIGNvbSBvcyBmaWx0cm9zIGluZm9ybWFkb3MgZW0ge0BsaW5rIG9wdGlvbnN9LlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gW1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInRpdGxlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudGl0bGVcIiwgW1wibnVtYmVyVGl0bGVcIl0sIEZpZWxkVHlwZS5TdHJpbmcsIFRpdGxlRmllbGRzT3JkZXJCeS5OVU1CRVJfVElUTEUpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInR5cGVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy50eXBlXCIsIFtcInRpdGxlVHlwZS5jb2RcIiwgXCJ0aXRsZVR5cGUuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiZW50cnlEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZW50cnlcIiwgW1wiaXNzdWVEYXRlXCJdLCBGaWVsZFR5cGUuRGF0ZSwgVGl0bGVGaWVsZHNPcmRlckJ5LklTU1VFX0RBVEUpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImR1ZURhdGVcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5kdWVfZGF0ZVwiLCBbXCJkdWVEYXRlXCJdLCBGaWVsZFR5cGUuRGF0ZSwgVGl0bGVGaWVsZHNPcmRlckJ5LkRVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3JpZ2luXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLm9yaWdpbmFsX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3JpZ2luYWxWYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIFRpdGxlRmllbGRzT3JkZXJCeS5PUklHSU5BTF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVPcGVuXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLm9wZW5fdmFsdWVcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vcGVuVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1BFTl9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVOZXRcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfbmV0XCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMubmV0VmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuTkVUX1ZBTFVFXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVQYWlkXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfdG9fcGF5XCIsIFtcInZhbHVlUGFpZFwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2lkZWJhckZpZWxkcyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJjb21wYW55XCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY29tcGFueVwiLCBbXCJjb21wYW55LmNvZFwiLCBcImNvbXBhbnkuZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiYnJhbmNoXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuYnJhbmNoXCIsIFtcImJyYW5jaC5jb2RcIiwgXCJicmFuY2guZGVzY1wiXSwgRmllbGRUeXBlLlN0cmluZywgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwicHJvZHVjZXJcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5wcm9kdWNlclwiLCBbXCJwcm9kdWNlci5jb2RcIiwgXCJwcm9kdWNlci5kZXNjXCJdLCBGaWVsZFR5cGUuU3RyaW5nLCBudWxsKSxcclxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gIVtcInZhbHVlUGFpZFwiLCBcInZhbHVlTmV0XCJdLmluY2x1ZGVzKGNvbC5maWVsZCkpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRmVlc1wiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2ZlZXNcIiwgW1widmFsdWVzLmludGVyZXN0VmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVGaW5lXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfZmluZVwiLCBbXCJ2YWx1ZXMuZmluZVZhbHVlXCJdLCBGaWVsZFR5cGUuTW9uZXksIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlQ2hhcmdlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfY2hhcmdlXCIsIFtcInZhbHVlcy5jaGFyZ2VWYWx1ZVwiXSwgRmllbGRUeXBlLk1vbmV5LCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlQ29ycmVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9jb3JyZWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMubW9uZXRhcnlDb3JyZWN0aW9uVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZUFkZGl0aW9uYWxcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfYWRkaXRpb25hbFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm90aGVyQWRkaXRpb25WYWx1ZVwiXSxcclxuICAgICAgICAgICAgICAgIEZpZWxkVHlwZS5Nb25leSxcclxuICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZURpc2NvdW50XCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfZGlzY291bnRcIiwgW1widmFsdWVzLmRpc2NvdW50VmFsdWVcIl0sIEZpZWxkVHlwZS5Nb25leSwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU90aGVyRGlzY291bnRcIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfb3RoZXJfZGlzY291bnRcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vdGhlckRpc2NvdW50VmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGUuTW9uZXksXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+IFtcInZhbHVlTmV0XCJdLmluY2x1ZGVzKGNvbC5maWVsZCkpLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKHRoaXMuY3VycmVudExpc3RQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXDDs3MgYSByZW5kZXJpemHDp8OjbyBkYSB0YWJlbGEsIHNpbmNyb25pemEgbyBlc3RhZG8gZGUgY2hlY2tib3gvbGluaGEgZWRpdMOhdmVsXHJcbiAgICAgKiBjb20gbyBhcnJheSBkZSB0w610dWxvcyBzZWxlY2lvbmFkb3MgcGFyYSBldml0YXIgYWNlc3NvIGEgcmVmZXLDqm5jaWFzIGFpbmRhIG7Do28gY3JpYWRhcy5cclxuICAgICAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMudGFibGVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYWdlU2l6ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8ucm93cztcclxuICAgIH1cclxuXHJcbiAgICBnZXRSb3dJbmRleCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uZmlyc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydEZpZWxkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5zb3J0RmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydE9yZGVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zPy5zb3J0T3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGYXogcmVxdWlzacOnw6NvIHBhZ2luYWRhL29yZGVuYWRhIHBhcmEgbGlzdGFyIG9zIHTDrXR1bG9zLCBtb250YSBvIGZvcm11bMOhcmlvXHJcbiAgICAgKiByZWF0aXZvIHBhcmEgY2FkYSBsaW5oYSBlIHRyYXRhIGVycm9zIGRlIGJhY2tlbmQgZXhpYmluZG8gbWVuc2FnZW0gYW8gdXN1w6FyaW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IHBhcsOibWV0cm9zIGRlIHBhZ2luYcOnw6NvLCBvcmRlbmHDp8OjbyBlIGZpbHRyb3MgdmluZG9zIGRvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUdyaWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCAvIHNpemU7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSBldmVudC5zb3J0RmllbGQ7XHJcbiAgICAgICAgY29uc3Qgc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMgPSBldmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IFJlcXVlc3RMaXN0VGl0bGVzSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIHBhZ2VSZXF1ZXN0OiB7IG9mZnNldDogcGFnZSwgb3JkZXJCeTogdGhpcy5nZXRSZWNPcmRlckJ5KGZpZWxkLCBzb3J0T3JkZXIpLCBzaXplIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcjogdGhpcy5vcHRpb25zLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZmluYW5jaWFsU2VydmljZVxyXG4gICAgICAgICAgICAubGlzdFRpdGxlcyhpbnB1dClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV0YWlsTXNnID0gZXJyPy5tZXNzYWdlIHx8IFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c19kZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3YXJuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbG9hZGluZ19hY2NvdW50c190aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxNc2dcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBsaXN0LnRpdGxlcyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkVG90YWxSZWNvcmRzID0gbGlzdC50b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBldmVudDtcclxuICAgICAgICB0aGlzLnN5bmNocm9uaXplQ2hlY2tib3hBbmRFZGl0YWJsZUZpZWxkU3RhdGUoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUXVhbmRvIHVtIGl0ZW0gw6kgZGVzbWFyY2FkbywgbGltcGEgbyBgdmFsdWVQYWlkYCBjb3JyZXNwb25kZW50ZVxyXG4gICAgICogdGFudG8gbm8gbW9kZWxvIGRhIGxpbmhhIHF1YW50byBubyB7QGxpbmsgdGl0bGVzRm9ybX0sIHNlbSBkaXNwYXJhciBub3ZvcyBldmVudG9zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldmVudCBldmVudG8gZGUgZGVzbWFyY2HDp8OjbyBlbWl0aWRvIHBlbG8gUHJpbWVORy5cclxuICAgICAqL1xyXG4gICAgb25VbnNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkRGF0YS5maW5kKChyKSA9PiByLmlkID09PSBldmVudC5kYXRhLmlkKTtcclxuICAgICAgICBpZiAocm93KSB7XHJcbiAgICAgICAgICAgIHJvdy52YWx1ZVBhaWQgPSBudWxsO1xyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBmb3JtIGNvbnRyb2wgY29ycmVzcG9uZGVudGVcclxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5ncmlkRGF0YS5maW5kSW5kZXgoKGcpID0+IGcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnRpdGxlc0Zvcm0uYXQoaWR4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RldGFpbHMocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IHJvd0RhdGE7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xhc3RDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHlsZUNvbHVtbnMoZmllbGQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgbGV0IHN0eWxlQ2xhc3MgPSB7fTtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkdWVEYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInR5cGVcIjpcclxuICAgICAgICAgICAgY2FzZSBcImVudHJ5RGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTIwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxOThweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvcChvYmo6IGFueSwgY29sOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghb2JqIHx8ICFjb2w/LnBhdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VwYXJhdG9yID0gXCJcIjtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgY29sLnBhdGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvciArIEFncm9PYmplY3RVdGlscy5nZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqLCBwYXRoLCBjb2wudHlwZSk7XHJcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFwiIC0gXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjb25zdHLDs2kgbyB7QGxpbmsgdGl0bGVzRm9ybX0gY29tIGJhc2UgbmEge0BsaW5rIGdyaWREYXRhfSBhdHVhbCxcclxuICAgICAqIHByZXNlcnZhbmRvIHZhbG9yZXMgasOhIGluZm9ybWFkb3MgZW0gaXRlbnMgc2VsZWNpb25hZG9zIGUgcmVnaXN0cmFuZG8gbGlzdGVuZXJzIGRlIG11ZGFuw6dhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlc0Zvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICB0aXRsZXNGb3JtQXJyYXkuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQgfHwgbnVsbCwgW10pLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYWlkOiBuZXcgRm9ybUNvbnRyb2woc2VsZWN0ZWRJdGVtPy52YWx1ZVBhaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZ3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICB0aXRsZXNGb3JtQXJyYXkucHVzaChncm91cCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPYnNlcnZhIG11ZGFuw6dhcyBubyBjYW1wbyBgdmFsdWVQYWlkYCBkZSB1bWEgbGluaGEuXHJcbiAgICAgKiBBdHVhbGl6YSBvIGFycmF5IHtAbGluayBzZWxlY3RlZH0gcXVhbmRvIG8gdMOtdHVsbyBlc3TDoSBzZWxlY2lvbmFkbyxcclxuICAgICAqIGFwbGljYSBvIGxpbWl0ZSBkbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZSBldml0YSBsb29wcyBkZSBldmVudG9zIHVzYW5kb1xyXG4gICAgICogYHNldFZhbHVlYCBjb20gYGVtaXRFdmVudDogZmFsc2VgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgZ3J1cG8gZGUgZm9ybXVsw6FyaW8gYXNzb2NpYWRvIMOgIGxpbmhhIGRhIHRhYmVsYS5cclxuICAgICAqIEBwYXJhbSBpdGVtIHTDrXR1bG8gZmluYW5jZWlybyBjb3JyZXNwb25kZW50ZSDDoCBsaW5oYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IEZpbmFuY2lhbFRpdGxlTGlzdER0bykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmF3VmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVQYWlkID0gdGhpcy5wYXJzZU51bWJlclNhZmUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZUlkID0gZm9ybUdyb3VwLmdldChcImlkXCIpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIGF0dWFsaXphIHNlbGVjdGVkIHNlIG8gdMOtdHVsbyBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbEluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBpZiAoc2VsSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBnYXJhbnRlIHF1ZSB2YWx1ZVBhaWQgc2VqYSBudW3DqXJpY28gb3UgbnVsbFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gdmFsdWVQYWlkO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ldCA9IE51bWJlcih0aGlzLnNlbGVjdGVkW3NlbEluZGV4XT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gbmV0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzYWRvIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gZGUgZXZlbnRvc1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gYXR1YWxpemEgZmxhZyBkZSBlcnJvXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS5oYXNFcnJvciA9IHZhbHVlUGFpZENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIC8vIGVtaXRlIG11ZGFuw6dhIGRlIHNlbGXDp8Ojb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkbywgYXBlbmFzIGFwbGljYSBsaW1pdGUgbG9jYWwgYmFzZWFkbyBubyBpdGVtXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIoaXRlbT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQYWlkQ29udHJvbC5zZXRWYWx1ZShuZXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcGFyc2VOdW1iZXJTYWZlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZCA9IHZhbHVlLnJlcGxhY2UoL1xcLi9nLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KGNsZWFuZWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWEgbyBtb2RvIGRlIGVkacOnw6NvIG5hIGxpbmhhIGRhIHRhYmVsYSBQcmltZU5HIGUgYXBsaWNhIHJlZ3JhcyBkZSB2YWxpZGHDp8Ojb1xyXG4gICAgICogbm8gZm9ybXVsw6FyaW8gcmVhdGl2byBjb3JyZXNwb25kZW50ZSDDoHF1ZWxhIGxpbmhhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHJlY2ViaWRvIGRhIHRhYmVsYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbml0Um93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGljaW9uYSB2YWxpZGFkb3JlcyBkaW5hbWljYW1lbnRlIGFvIGNhbXBvIGB2YWx1ZVBhaWRgIGRhIGxpbmhhIGVtIGVkacOnw6NvLFxyXG4gICAgICogbWFyY2EgbyBjb250cm9sZSBjb21vIHN1am8gZSBmb3LDp2EgcmV2YWxpZGHDp8OjbyBpbWVkaWF0YSBwYXJhIGV4aWJpciBlcnJvcyBuYSB0ZWxhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHBhcmEgYXBsaWNhciB2YWxpZGHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMudGl0bGVzRm9ybS5hdChyb3dJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVQYWlkQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbdGhpcy5nZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHLDs2kgbyB7QGxpbmsgVmFsaWRhdG9yRm59IHF1ZSB2YWxpZGEgbyBgdmFsdWVQYWlkYDpcclxuICAgICAqIC0gZGV2ZSBzZXIgbWFpb3IgcXVlIHplcm87XHJcbiAgICAgKiAtIG7Do28gcG9kZSB1bHRyYXBhc3NhciBvIHZhbG9yIGzDrXF1aWRvIChgbmV0VmFsdWVgKSBkbyB0w610dWxvLlxyXG4gICAgICpcclxuICAgICAqIFJldG9ybmEgb3MgZXJyb3MgY29uc3VtaWRvcyBwZWxvIGNvbXBvbmVudGUgYHMtY29udHJvbC1lcnJvcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhbGlkYXRvcnNGb3JSb3dFZGl0KCk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGVJZCA9IHBhcmVudD8uZ2V0KFwiaWRcIik/LnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGFpZCA9IHRoaXMucGFyc2VOdW1iZXJTYWZlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA9PT0gbnVsbCB8fCB2YWx1ZVBhaWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA8PSBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVzc1RoYW5aZXJvOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJvY3VyYSBwZWxvIHTDrXR1bG8gbm8gc2VsZWN0ZWQgb3Ugbm8gZ3JpZERhdGEgKHByaW9yaXphIHNlbGVjdGVkKVxyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvdyA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IHRpdGxlSWQpIHx8IHRoaXMuZ3JpZERhdGEuZmluZCgoZykgPT4gZy5pZCA9PT0gdGl0bGVJZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ldFZhbHVlID0gTnVtYmVyKHNlbGVjdGVkUm93Py52YWx1ZXM/Lm5ldFZhbHVlKSB8fCAwO1xyXG4gICAgICAgICAgICBpZiAodmFsdWVQYWlkID4gbmV0VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRydWUgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FuY2VsUm93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuY2FuY2VsUm93RWRpdChyb3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnTDqW0gbyBlc3RhZG8gdmlzdWFsIGRhIHRhYmVsYSAoY2hlY2tib3ggbWFyY2FkbyBlIGxpbmhhIGVkaXTDoXZlbCkgZW1cclxuICAgICAqIHNpbmNyb25pYSBjb20gbyBhcnJheSBkZSB0w610dWxvcyBzZWxlY2lvbmFkb3MsIGluY2x1c2l2ZSByZXN0YXVyYW5kbyB2YWxvcmVzXHJcbiAgICAgKiBkaWdpdGFkb3MgYW8gcmVjYXJyZWdhciwgb3JkZW5hciBvdSBwYWdpbmFyIGEgZ3JpZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5ncmlkRGF0YSB8fCAhdGhpcy50YWJsZUluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgocm93LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvdyA9IHRoaXMuc2VsZWN0ZWQuZmluZCgoc2VsKSA9PiBzZWwuaWQgPT09IHJvdy5pZCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy50aXRsZXNGb3JtLmF0KGluZGV4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkUm93KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTaW5jcm9uaXphIG8gdmFsb3IgcGFnbyBkbyBpdGVtIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgICAgICByb3cudmFsdWVQYWlkID0gc2VsZWN0ZWRSb3cudmFsdWVQYWlkO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKHNlbGVjdGVkUm93LnZhbHVlUGFpZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Um93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2FuY2VsYSBhIGVkacOnw6NvIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsUm93RWRpdChyb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRGaWVsZHMoZmllbGQ6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcsIHBhdGg6IHN0cmluZ1tdLCB0eXBlOiBGaWVsZFR5cGUsIGZpZWxkT3JkZXJCeTogVGl0bGVGaWVsZHNPcmRlckJ5KTogQ29sdW1uQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4geyBmaWVsZCwgcGF0aCwgdHlwZSwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGhlYWRlciksIG9yZGVyQnk6IGZpZWxkT3JkZXJCeSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTWVzc2FnZShzZXZlcml0eTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcsIGRldGFpbDogc3RyaW5nLCBzdGlja3kgPSBmYWxzZSwgbGlmZSA9IDcwMDApIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIHNldmVyaXR5LFxyXG4gICAgICAgICAgICBzdGlja3ksXHJcbiAgICAgICAgICAgIGxpZmUsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UmVjT3JkZXJCeShmaWVsZDogc3RyaW5nLCBvcmRlcjogbnVtYmVyKTogUmVjT3JkZXJCeSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZENvbHVtbkZpZWxkID0gdGhpcy5ncmlkQ29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgICAgIGlmIChncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgfHwgVGl0bGVGaWVsZHNPcmRlckJ5Lk5VTUJFUl9USVRMRSxcclxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyID09PSAxID8gT3JkZXJCeVR5cGUuQVNDIDogT3JkZXJCeVR5cGUuREVTQyxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -7637,7 +7637,7 @@ let FinancialTitleTableComponent = class FinancialTitleTableComponent {
7637
7637
  this.getFields("branch", "agro.angular_components.branch", ["branch.cod", "branch.desc"], FieldType.String, null),
7638
7638
  this.getFields("producer", "agro.angular_components.producer", ["producer.cod", "producer.desc"], FieldType.String, null),
7639
7639
  ...this.gridColumns.filter((col) => !["valuePaid", "valueNet"].includes(col.field)),
7640
- this.getFields("valueFees", "agro.angular_components.value_fees", ["values.feesValue"], FieldType.Money, null),
7640
+ this.getFields("valueFees", "agro.angular_components.value_fees", ["values.interestValue"], FieldType.Money, null),
7641
7641
  this.getFields("valueFine", "agro.angular_components.value_fine", ["values.fineValue"], FieldType.Money, null),
7642
7642
  this.getFields("valueCharge", "agro.angular_components.value_charge", ["values.chargeValue"], FieldType.Money, null),
7643
7643
  this.getFields("valueCorrection", "agro.angular_components.value_correction", ["values.monetaryCorrectionValue"], FieldType.Money, null),