tnx-shared 5.1.78 → 5.1.82
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.
- package/bundles/tnx-shared.umd.js +994 -321
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-form-base.d.ts +1 -0
- package/classes/base/data-form-base.d.ts.map +1 -1
- package/classes/base/data-list-base.d.ts +2 -1
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +3 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
- package/components/crud/crud-list/crud-list.component.d.ts +1 -0
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/entity-permission/services.cs/entity-permission.service.d.ts +1 -0
- package/components/entity-permission/services.cs/entity-permission.service.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts +1 -0
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/components/file-explorer/services/file-data.service.d.ts +1 -0
- package/components/file-explorer/services/file-data.service.d.ts.map +1 -1
- package/components/query-builders/query-builder/query-builder.component.d.ts.map +1 -1
- package/components/query-builders/query-builder-group/query-builder-group.component.d.ts +1 -0
- package/components/query-builders/query-builder-group/query-builder-group.component.d.ts.map +1 -1
- package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
- package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
- package/components/statemachines/models/constants.d.ts +5 -1
- package/components/statemachines/models/constants.d.ts.map +1 -1
- package/components/statemachines/models/enums.d.ts +4 -0
- package/components/statemachines/models/enums.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts +3 -0
- package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts +28 -0
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts.map +1 -0
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.ngfactory.d.ts.map +1 -0
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts +3 -1
- package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts +3 -1
- package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts +6 -4
- package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts +3 -3
- package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts.map +1 -1
- package/components/user-picker/user-picker.component.d.ts +8 -2
- package/components/user-picker/user-picker.component.d.ts.map +1 -1
- package/components/workflow/models/models.d.ts +8 -8
- package/components/workflow/models/models.d.ts.map +1 -1
- package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts +1 -1
- package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts.map +1 -1
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +3 -6
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
- package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts +3 -3
- package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts.map +1 -1
- package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts +1 -0
- package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts.map +1 -1
- package/configs/component-context.constant.d.ts +1 -0
- package/configs/component-context.constant.d.ts.map +1 -1
- package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +8 -3
- package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts +2 -0
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
- package/congviec/congviec/congviec.component.d.ts.map +1 -1
- package/congviec/congviec/services/congviec-dinhkem.service.d.ts +8 -0
- package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
- package/congviec/congviec/services/congviec.service.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +6 -3
- package/esm2015/classes/base/data-list-base.js +13 -3
- package/esm2015/classes/form-schema.js +1 -1
- package/esm2015/components/crud/crud-form/crud-form.component.js +2 -1
- package/esm2015/components/crud/crud-list/crud-list.component.js +6 -2
- package/esm2015/components/entity-permission/services.cs/entity-permission.service.js +8 -5
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +17 -10
- package/esm2015/components/file-explorer/services/file-data.service.js +15 -15
- package/esm2015/components/query-builders/query-builder/query-builder.component.js +24 -7
- package/esm2015/components/query-builders/query-builder-group/query-builder-group.component.js +6 -2
- package/esm2015/components/query-builders/query-builder-rule/query-builder-rule.component.js +39 -3
- package/esm2015/components/share-link-by-permission/share-link-by-permission.component.js +2 -2
- package/esm2015/components/statemachines/models/constants.js +9 -4
- package/esm2015/components/statemachines/models/enums.js +6 -1
- package/esm2015/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.js +9 -5
- package/esm2015/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.js +19 -6
- package/esm2015/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.js +179 -0
- package/esm2015/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.js +32 -1
- package/esm2015/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.js +32 -1
- package/esm2015/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.js +39 -8
- package/esm2015/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.js +19 -7
- package/esm2015/components/statemachines/statemachines-designer/statemachines-designer.component.js +1 -1
- package/esm2015/components/statemachines/utils/utils.js +6 -6
- package/esm2015/components/tn-app-help/tn-app-help.component.js +1 -1
- package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
- package/esm2015/components/user-picker/user-picker.component.js +47 -6
- package/esm2015/components/workflow/models/models.js +1 -7
- package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js +39 -42
- package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +7 -40
- package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +10 -12
- package/esm2015/components/workflow/workflow-setting-new/workflow-setting-new.component.js +67 -10
- package/esm2015/configs/component-context.constant.js +3 -2
- package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +50 -14
- package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +24 -12
- package/esm2015/congviec/congviec/congviec.component.js +7 -6
- package/esm2015/congviec/congviec/services/congviec-dinhkem.service.js +57 -1
- package/esm2015/congviec/congviec/services/congviec.service.js +3 -3
- package/esm2015/services/base.service.js +4 -1
- package/esm2015/services/dm-chucvu.service.js +28 -0
- package/esm2015/services/role.service.js +1 -1
- package/esm2015/tnx-shared.js +69 -67
- package/esm2015/tnx-shared.module.js +3 -1
- package/fesm2015/tnx-shared.js +776 -220
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/base.service.d.ts +1 -0
- package/services/base.service.d.ts.map +1 -1
- package/services/dm-chucvu.service.d.ts +12 -0
- package/services/dm-chucvu.service.d.ts.map +1 -0
- package/services/dm-chucvu.service.ngfactory.d.ts.map +1 -0
- package/tnx-shared.d.ts +68 -66
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +2 -1
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
|
@@ -501,6 +501,9 @@ export class BaseService {
|
|
|
501
501
|
processWorkflow(id, actionCode, data) {
|
|
502
502
|
return this.defaultPost(`${this.serviceUri}/ProcessWorkflow/${id}/${actionCode}`, data);
|
|
503
503
|
}
|
|
504
|
+
getUserInProcessForm(workflowCode, stateCode, actionCode, itemId) {
|
|
505
|
+
return this.defaultPost(`${this.serviceUri}/GetUserInProcessFormBase/${workflowCode}/${stateCode}/${actionCode}/${itemId}`, {});
|
|
506
|
+
}
|
|
504
507
|
handleError(error, injector) {
|
|
505
508
|
const commonService = injector.get(CommonService);
|
|
506
509
|
return commonService.handleError(error, injector);
|
|
@@ -638,4 +641,4 @@ export class BaseService {
|
|
|
638
641
|
return this.defaultPost(`${this.serviceUri}/UpdateDaDuyetQuyetDinh/${id}`, {});
|
|
639
642
|
}
|
|
640
643
|
}
|
|
641
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL2Jhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRixPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUduRCxNQUFNLFVBQVUsR0FBRyxpRkFBaUYsQ0FBQztBQUNyRyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFFaEMsTUFBTSxPQUFnQixXQUFXO0lBcUI3QixZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLFVBQWtCO1FBbkJ0QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixjQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0IseUJBQW9CLEdBQUcs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Q0FBQyxNQUFjLEVBQUUsU0FBaUIsRUFBRSxhQUF1QjtRQUN4RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSwwQkFBMEIsTUFBTSxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ3ZGLGVBQWUsRUFBRSxhQUFhO1NBQ2pDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHFCQUFxQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxFQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMsIE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IE1vZGVsU2hhcmVMaW5rQnlQZXJtaXNzaW9uIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zaGFyZS1saW5rLWJ5LXBlcm1pc3Npb24vbW9kZWxzL3NoYXJlLWxpbmstYnktcGVybWlzc2lvbic7XHJcbmltcG9ydCB7IEZpbHRlciwgR3JpZEluZm8sIFNvcnQgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgZ2V0U3RyaW5nRGF0ZVZOIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2lnbmFsUlNlcnZpY2UgfSBmcm9tICcuL3NpZ25hbHIuc2VydmljZSc7XHJcblxyXG5cclxuY29uc3QgRVhDRUxfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JztcclxuY29uc3QgRVhDRUxfRVhURU5TSU9OID0gJy54bHN4JztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2VydmljZSB7XHJcbiAgICBfaHR0cDogSHR0cENsaWVudDtcclxuICAgIF9pbmplY3RvcjogSW5qZWN0b3I7XHJcbiAgICBfc2lnbmFsclNlcnZpY2VQcml2YXRlOiBTaWduYWxSU2VydmljZTtcclxuXHJcbiAgICBzZXJ2aWNlVXJpID0gJyc7XHJcbiAgICBlbmRQb2ludCA9ICcnO1xyXG4gICAgc2VydmljZUNvZGUgPSAnJztcclxuICAgIGVudGl0eU5hbWUgPSAnJztcclxuICAgIG9iamVjdE5hbWUgPSAnJztcclxuICAgIHVzZVdvcmtmbG93ID0gZmFsc2U7XHJcbiAgICBhcGlHZXREYXRhID0gJ0dldERhdGEnO1xyXG4gICAgYXBpR2V0QWxsID0gJ0dldEFsbEJ5RmlsdGVyJztcclxuICAgIGFwaUdldERldGFpbEJ5RmlsdGVyID0gJ0dldEJ5RmlsdGVyJztcclxuXHJcbiAgICByZWFkb25seSBSRVRSWV9DT1VOVDogbnVtYmVyID0gMDtcclxuICAgIHJlYWRvbmx5IFJFUExBWV9DT1VOVDogbnVtYmVyID0gMTtcclxuICAgIHJlYWRvbmx5IExJTUlUX0RFRkFVTFQ6IG51bWJlciA9IDEwMDA7XHJcblxyXG4gICAgcHJvdGVjdGVkIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHNlcnZpY2VVcmk6IHN0cmluZ1xyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5faHR0cCA9IGh0dHA7XHJcbiAgICAgICAgdGhpcy5faW5qZWN0b3IgPSBpbmplY3RvcjtcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgPSBzZXJ2aWNlVXJpO1xyXG4gICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29tbW9uU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5fc2lnbmFsclNlcnZpY2VQcml2YXRlID0gaW5qZWN0b3IuZ2V0KFNpZ25hbFJTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDdXJyZW50U2VydmljZVVyaShrZXk6IHN0cmluZykge1xyXG4gICAgfVxyXG5cclxuICAgIGdldEtleVdvcmtmbG93U2V0dGluZygpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5lbnRpdHlOYW1lfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVTaWduYWxSKGNhbGxCYWNrKSB7XHJcbiAgICAgICAgY29uc3QgdG9waWMgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcclxuICAgICAgICAvLyBC4bqvdCDEkeG6p3UgY2jhuqF5XHJcbiAgICAgICAgdGhpcy5fc2lnbmFsclNlcnZpY2VQcml2YXRlLnN0YXJ0KCdDb21tb25IdWInLCB0b3BpYywgKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgLy8gdW5zdWJzY3JpYmUgY8OhYyB0b3BpYyDEkcOjIGzhuq9uZyBuZ2hlIHRyxrDhu5tjIMSRw7NcclxuICAgICAgICAgICAgdGhpcy5fc2lnbmFsclNlcnZpY2VQcml2YXRlLnVuU3Vic2NyaWJlVmlld0NvZGUoJ0NvbW1vbkh1YicsIHRvcGljKTtcclxuICAgICAgICAgICAgY2FsbEJhY2sobWVzc2FnZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRvcGljO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdW5TdWJzY3JpYmVTaWduYWxSKGtleSkge1xyXG4gICAgICAgIHRoaXMuX3NpZ25hbHJTZXJ2aWNlUHJpdmF0ZS51blN1YnNjcmliZVZpZXdDb2RlKCdDb21tb25IdWInLCBrZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmF1bHRHZXRTaWduYWxSKGFwaVVybCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0b3BpYyA9IHRoaXMuc3Vic2NyaWJlU2lnbmFsUihmID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJzID0gSlNPTi5wYXJzZShmKTtcclxuICAgICAgICAgICAgICAgIGlmIChycy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gPT0gLTEgbMOgIHRyxrDhu51uZyBo4bujcCBzZXQga2V5IGLhu4sgbOG7l2lcclxuICAgICAgICAgICAgICAgICAgICBpZiAocnMuZGF0YSAhPSAnLTEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2FjaGVSZXNwb25zZShycy5kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFwaVVybC5pbmRleE9mKCc/JykgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIGFwaVVybCArPSBgP2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhcGlVcmwgKz0gYCZgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFwaVVybCArPSBgX2tleVNpZ25hbHI9JHt0b3BpY31gO1xyXG4gICAgICAgICAgICB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICAgICApLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5TdWJzY3JpYmVTaWduYWxSKHRvcGljKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmF1bHRQb3N0U2lnbmFsUihhcGlVcmwsIGRhdGE6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0b3BpYyA9IHRoaXMuc3Vic2NyaWJlU2lnbmFsUihmID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJzID0gSlNPTi5wYXJzZShmKTtcclxuICAgICAgICAgICAgICAgIGlmIChycy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gPT0gLTEgbMOgIHRyxrDhu51uZyBo4bujcCBzZXQga2V5IGLhu4sgbOG7l2lcclxuICAgICAgICAgICAgICAgICAgICBpZiAocnMuZGF0YSAhPSAnLTEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q2FjaGVSZXNwb25zZShycy5kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UocmVzLmRhdGEpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChhcGlVcmwuaW5kZXhPZignPycpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBhcGlVcmwgKz0gYD9gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXBpVXJsICs9IGAmYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhcGlVcmwgKz0gYF9rZXlTaWduYWxyPSR7dG9waWN9YDtcclxuICAgICAgICAgICAgdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIGRhdGEpXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSlcclxuICAgICAgICAgICAgICAgICkudG9Qcm9taXNlKClcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51blN1YnNjcmliZVNpZ25hbFIodG9waWMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2FjaGVSZXNwb25zZShrZXk6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vQmFzZUdldENhY2hlSW5mby8ke2tleX1gLCB7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zdEdyaWRJbmZvKHVybDogc3RyaW5nLCBncmlkSW5mbzogR3JpZEluZm8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKCFncmlkSW5mbykgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oKTtcclxuICAgICAgICBpZiAoZ3JpZEluZm8uZmllbGRzICYmIGdyaWRJbmZvLmZpZWxkcy5zdGFydHNXaXRoKCcsJykpIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uZmllbGRzID0gZ3JpZEluZm8uZmllbGRzLnN1YnN0cmluZygxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke3VybH1gLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlHcmlkUmVxdWVzdChncmlkSW5mbzogR3JpZEluZm8sIHBsdXNVcmw6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSB0aGlzLmFwaUdldERhdGE7XHJcbiAgICAgICAgaWYgKHBsdXNVcmwgIT0gbnVsbCAmJiBwbHVzVXJsICE9ICcnKSB7XHJcbiAgICAgICAgICAgIGFwaVVybCArPSAnLycgKyBwbHVzVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0R3JpZEluZm8oYXBpVXJsLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlHcmlkUmVxdWVzdFdpdGhCb2R5T2xkKGdyaWRJbmZvOiBHcmlkSW5mbywgcGx1c1VybDogc3RyaW5nID0gJycpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgbGV0IGFwaVVybCA9IHRoaXMuYXBpR2V0RGF0YTtcclxuICAgICAgICBpZiAocGx1c1VybCAhPSBudWxsICYmIHBsdXNVcmwgIT0gJycpIHtcclxuICAgICAgICAgICAgYXBpVXJsICs9ICcvJyArIHBsdXNVcmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udmVydFZhbHVlRmlsdGVyVG9PbGRCYXNlKGdyaWRJbmZvLmZpbHRlcnMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RHcmlkSW5mbyhhcGlVcmwsIGdyaWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbnZlcnRWYWx1ZUZpbHRlclRvT2xkQmFzZShmaWx0ZXJzOiBGaWx0ZXJbXSkge1xyXG4gICAgICAgIGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyLmZpbHRlcnMgJiYgZmlsdGVyLmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0VmFsdWVGaWx0ZXJUb09sZEJhc2UoZmlsdGVyLmZpbHRlcnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnBhcnNlKGZpbHRlci52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0clZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBMw6AgdmFsdWUga2nhu4N1IGRhdGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RyVmFsdWUuaW5kZXhPZignLScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IGdldFN0cmluZ0RhdGVWTihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IHN0clZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2jhu4kgZMO5bmcgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIG114buRbiBn4butaSByZXF1ZXN0IMSR4bq/biBjdXN0b20gcm91dGUgR2V0RGF0YS97cGx1c1VybH1cclxuICAgICAqL1xyXG4gICAgZ2V0RGF0YUN1c3RvbVJvdXRlKHBsdXNVcmw6IHN0cmluZywgZmlsdGVycz86IEZpbHRlcltdLCBmaWVsZHM6IHN0cmluZyA9ICcnLCBzb3J0czogU29ydFtdID0gW10sIHBhZ2VTaXplOiBudW1iZXIgPSAxLCBwYWdlOiBudW1iZXIgPSAxKSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oe1xyXG4gICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc29ydHMsXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IGZpbHRlcnMgPyBmaWx0ZXJzIDogW11cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUdyaWRSZXF1ZXN0KGdyaWRJbmZvLCBwbHVzVXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGwoZmlsdGVycz86IEZpbHRlcltdLCBmaWVsZHM6IHN0cmluZyA9ICcnLCBzb3J0czogU29ydFtdID0gW10sIHBsdXNVcmw6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgbGV0IGFwaVVybCA9IHRoaXMuYXBpR2V0QWxsO1xyXG4gICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJykge1xyXG4gICAgICAgICAgICBhcGlVcmwgKz0gYC8ke3BsdXNVcmx9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oe1xyXG4gICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc29ydHMsXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IGZpbHRlcnMgPyBmaWx0ZXJzIDogW11cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0R3JpZEluZm8oYXBpVXJsLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsQnlHcmlkSW5mbyhncmlkSW5mbzogR3JpZEluZm8sIHBsdXNVcmw6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgbGV0IGFwaVVybCA9IHRoaXMuYXBpR2V0QWxsO1xyXG4gICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJykge1xyXG4gICAgICAgICAgICBhcGlVcmwgKz0gYC8ke3BsdXNVcmx9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdEdyaWRJbmZvKGFwaVVybCwgZ3JpZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrRXhpc3RCeUZpbHRlcihmaWx0ZXJzOiBGaWx0ZXJbXSkge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ2hlY2tFeGlzdGA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYXBpVXJsLCBmaWx0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjaGVja0R1cGxpY2F0ZWRCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBhbnksIGlkOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gW1xyXG4gICAgICAgICAgICBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGlkKVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoZWNrRXhpc3RCeUZpbHRlcihmaWx0ZXJzKTtcclxuICAgICAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUdyaWRJbmZvRHJvcGRvd24oZmlsdGVyczogRmlsdGVyW10sIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0ge1xyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBvcHRpb25zLnBhZ2VTaXplXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgICAgICAgZmllbGRzOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBzdHJGaWVsZCA9IGAke29wdGlvbnMudmFsdWVGaWVsZH0ke29wdGlvbnMuZGlzcGxheUZpZWxkID09IG9wdGlvbnMudmFsdWVGaWVsZCA/ICcnIDogJywnICsgb3B0aW9ucy5kaXNwbGF5RmllbGR9JHtvcHRpb25zLmZpZWxkUGx1c31gO1xyXG4gICAgICAgIGdyaWRJbmZvLmZpZWxkcyA9IHRoaXMuX2NvbW1vblNlcnZpY2UuYWRkRGlzdGluY3Qoc3RyRmllbGQuc3BsaXQoJywnKSwgW10pLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydHMgIT0gbnVsbCAmJiBvcHRpb25zLnNvcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZ3JpZEluZm8uc29ydHMgPSBbLi4ub3B0aW9ucy5zb3J0c107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnRGaWVsZCAhPSBudWxsICYmIG9wdGlvbnMuc29ydEZpZWxkICE9ICcnKSB7XHJcblxyXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cy5wdXNoKHsgZmllbGQ6IG9wdGlvbnMuc29ydEZpZWxkLCBkaXI6IG9wdGlvbnMuc29ydERpciB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGdyaWRJbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9uczogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuZmllbGRQbHVzLmxlbmd0aCA+IDAgJiYgIW9wdGlvbnMuZmllbGRQbHVzLnN0YXJ0c1dpdGgoJywnKSkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmZpZWxkUGx1cyA9ICcsJyArIG9wdGlvbnMuZmllbGRQbHVzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0RmllbGQgPT0gJycpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5zb3J0RmllbGQgPSBvcHRpb25zLmRpc3BsYXlGaWVsZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0T3B0aW9uc1RyZWUob3B0aW9uczogRHJvcGRvd25PcHRpb25zLCBmaWVsZFBhcmVudDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuZmllbGRQbHVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgKz0gJywnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb25zLmZpZWxkUGx1cyArPSBmaWVsZFBhcmVudDtcclxuICAgICAgICBpZiAob3B0aW9ucy5maWVsZFBsdXMubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5maWVsZFBsdXMuc3RhcnRzV2l0aCgnLCcpKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZmllbGRQbHVzID0gJywnICsgb3B0aW9ucy5maWVsZFBsdXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGFEcm9wZG93bihvcHRpb25zPzogRHJvcGRvd25PcHRpb25zKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGlmIChvcHRpb25zID09IG51bGwpIG9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldEJ5R3JpZFJlcXVlc3QodGhpcy5nZW5lcmF0ZUdyaWRJbmZvRHJvcGRvd24oW10sIG9wdGlvbnMpLCBvcHRpb25zLnBsdXNVcmwpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhRHJvcGRvd25CeUZpbHRlcihmaWx0ZXJzOiBGaWx0ZXJbXSwgb3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSBvcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB0aGlzLmdlbmVyYXRlR3JpZEluZm9Ecm9wZG93bihmaWx0ZXJzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaXNTZXJ2ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5wYWdlSW5mby5wYWdlU2l6ZSA9IDE1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRCeUdyaWRSZXF1ZXN0KGdyaWRJbmZvLCBvcHRpb25zLnBsdXNVcmwpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQnlHcmlkSW5mbyhncmlkSW5mbywgb3B0aW9ucy5wbHVzVXJsKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFRyZWVEYXRhKHJhd0RhdGEsIGZpZWxkUGFyZW50OiBzdHJpbmcsIHZhbHVlUGFyZW50Um9vdDogbnVtYmVyLCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBpZiAocmF3RGF0YSA9PSBudWxsKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgZnVuY0RlUXV5ID0gKHJlc3VsdCwgZGF0YXMsIHByZWZpeCwgbGV2ZWwpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbVBhcmVudCA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhc1tpXVtmaWVsZFBhcmVudF0gPT0gaXRlbVBhcmVudFtvcHRpb25zLmZpZWxkUGFyZW50VHJlZUl0ZW1dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNbaV0uX3ByZWZpeCA9IGAke3ByZWZpeH0gYDtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhc1tpXS5faW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzW2ldLl9sZXZlbCA9IGxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRhdGFzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICBmdW5jRGVRdXkocmVzdWx0LCBkYXRhcywgcHJlZml4ICsgJy0tLScsIGxldmVsICsgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3RGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAocmF3RGF0YVtpXVtmaWVsZFBhcmVudF0gPT0gdmFsdWVQYXJlbnRSb290KSB7XHJcbiAgICAgICAgICAgICAgICByYXdEYXRhW2ldLl9wcmVmaXggPSAnJztcclxuICAgICAgICAgICAgICAgIHJhd0RhdGFbaV0uX2luZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgIHJhd0RhdGFbaV0uX2xldmVsID0gMTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJhd0RhdGFbaV0pO1xyXG4gICAgICAgICAgICAgICAgZnVuY0RlUXV5KHJlc3VsdCwgcmF3RGF0YSwgJ3wtLS0nLCAyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRyZWVEYXRhRHJvcGRvd24oZmllbGRQYXJlbnQ6IHN0cmluZywgdmFsdWVQYXJlbnRSb290OiBudW1iZXIgPSAtMSwgb3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSBvcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE9wdGlvbnNUcmVlKG9wdGlvbnMsIGZpZWxkUGFyZW50KTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldEJ5R3JpZFJlcXVlc3QodGhpcy5nZW5lcmF0ZUdyaWRJbmZvRHJvcGRvd24oW10sIG9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZ2V0VHJlZURhdGEocmVzLmRhdGEsIGZpZWxkUGFyZW50LCB2YWx1ZVBhcmVudFJvb3QsIG9wdGlvbnMpKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHJlZURhdGFEcm9wZG93bkJ5RmlsdGVyKGZpbHRlcnM6IEZpbHRlcltdLCBmaWVsZFBhcmVudDogc3RyaW5nLCB2YWx1ZVBhcmVudFJvb3Q6IG51bWJlciA9IC0xLCBvcHRpb25zPzogRHJvcGRvd25PcHRpb25zKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGlmIChvcHRpb25zID09IG51bGwpIG9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3B0aW9uc1RyZWUob3B0aW9ucywgZmllbGRQYXJlbnQpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyaWRJbmZvID0gdGhpcy5nZW5lcmF0ZUdyaWRJbmZvRHJvcGRvd24oZmlsdGVycywgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmlzU2VydmVyTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8ucGFnZUluZm8ucGFnZVNpemUgPSAxNTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QnlHcmlkUmVxdWVzdChncmlkSW5mbywgb3B0aW9ucy5wbHVzVXJsKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5nZXRUcmVlRGF0YShyZXMuZGF0YSwgZmllbGRQYXJlbnQsIHZhbHVlUGFyZW50Um9vdCwgb3B0aW9ucykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFsbEJ5R3JpZEluZm8oZ3JpZEluZm8sIG9wdGlvbnMucGx1c1VybClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZ2V0VHJlZURhdGEocmVzLmRhdGEsIGZpZWxkUGFyZW50LCB2YWx1ZVBhcmVudFJvb3QsIG9wdGlvbnMpKTtcclxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGV0YWlsKGlkOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERldGFpbFdpdGhQZXJtaXNzaW9uKGlkOiBhbnksIHBpZDogc3RyaW5nID0gbnVsbCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBpZiAocGlkID09IG51bGwpIHtcclxuICAgICAgICAgICAgcGlkID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkRW1wdHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9EZXRhaWxXaXRoUGVybWlzc2lvbi8ke2lkfT9waWQ9JHtwaWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGV0YWlsQnlQaWQocGlkOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9EZXRhaWxXaXRoQnlQaWQvJHtwaWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlJbnN0YW5jZUlkKGluc3RhbmNlSWQ6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEJ5SW5zdGFjZUlkLyR7aW5zdGFuY2VJZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXRhaWxCeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0QnlDb2RlLyR7Y29kZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXRhaWxCeUZpbHRlcihmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdLCBzb3J0czogU29ydFtdID0gW10pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke3RoaXMuYXBpR2V0RGV0YWlsQnlGaWx0ZXJ9YDtcclxuICAgICAgICBjb25zdCBncmlkSW5mbyA9IHtcclxuICAgICAgICAgICAgcGFnZUluZm86IHtcclxuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICBzb3J0c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGFzdERldGFpbEJ5RmlsdGVyKGZpbHRlcnM6IEZpbHRlcltdID0gW10sIHNvcnRzOiBTb3J0W10gPSBbXSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldExhc3RCeUZpbHRlcmA7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB7XHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsdGVycyxcclxuICAgICAgICAgICAgc29ydHNcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbEFzeW5jKCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEFzeW5jYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zdChpdGVtOiBhbnksIHBsdXNVcmw6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVyaSA9IHBsdXNVcmwgPyBgJHt0aGlzLnNlcnZpY2VVcml9JHtwbHVzVXJsfWAgOiB0aGlzLnNlcnZpY2VVcmk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVyaSwgaXRlbSlcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1dChpZDogc3RyaW5nLCBpdGVtOiBhbnksIHBsdXNVcmw6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHBsdXNVcmwgPyBgJHt0aGlzLnNlcnZpY2VVcml9LyR7aWR9JHtwbHVzVXJsfWAgOiBgJHt0aGlzLnNlcnZpY2VVcml9LyR7aWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCwgaXRlbSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlKGlkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0Pih1cmwpLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9LyR7aWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHVybCkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSlcclxuICAgICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZU1hbnkobHN0SWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0RlbGV0ZU1hbnlBc3luYy8ke2xzdElkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0Pih1cmwpLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmF1bHRHZXQoYXBpVXJsKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSlcclxuICAgICAgICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJZ25vcmVDbGllbnRDYWNoZShhcGlVcmwpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NhY2hlLUNvbnRyb2wnOiAnbm8tY2FjaGUnIH0pLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBvcHRpb25zKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSlcclxuICAgICAgICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0UG9zdChhcGlVcmwsIGRhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBkYXRhKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSlcclxuICAgICAgICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0UHV0KGFwaVVybCwgZGF0YSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwgZGF0YSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RW50aXR5TWV0YWRhdGEoKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RW50aXR5TWV0YWRhdGFgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVFbnRpdHlNZXRhZGF0YShkYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vU2F2ZUVudGl0eU1ldGFkYXRhYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIGRhdGEpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlTWV0YWRhdGFTdGF0dXMoaWQ6IG51bWJlciwgbWV0YWRhdGFUeXBlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L2NoYW5nZU1ldGFkYXRhU3RhdHVzP2lkPSR7aWR9Jm1ldGFkYXRhU3RhdHVzVHlwZT0ke21ldGFkYXRhVHlwZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwge30pLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQW5kQ2hhbmdlTWV0YWRhdGFTdGF0dXMoaWQ6IG51bWJlciwgbWV0YWRhdGFUeXBlOiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vc2F2ZUFuZENoYW5nZU1ldGFkYXRhU3RhdHVzP2lkPSR7aWR9Jm1ldGFkYXRhU3RhdHVzVHlwZT0ke21ldGFkYXRhVHlwZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwgZGF0YSkucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVudGl0eVBlcm1pc3Npb24oKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RW50aXR5UGVybWlzc2lvbmA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUVudGl0eVBlcm1pc3Npb24oZGF0YSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1NhdmVFbnRpdHlQZXJtaXNzaW9uYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIGRhdGEpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRW50aXR5UGVybWlzc2lvbihpZDogc3RyaW5nLCBpdGVtOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdEVudGl0eVBlcm1pc3Npb24vJHtpZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxSZXNwb25zZVJlc3VsdD4odXJsLCBpdGVtKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVFbnRpdHlQZXJtaXNzaW9uKGlkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9EZWxldGVFbnRpdHlQZXJtaXNzaW9uLyR7aWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHVybCkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2ZIaXN0b3J5QnlFbnRpdHlJdGVtKGlkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRXZkhpc3RvcnlCeUVudGl0eUl0ZW0vJHtpZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4odXJsKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREaWNTdGF0dXNOaG9tVHJhbmdUaGFpKHN0YXR1c2VzOiBzdHJpbmdbXSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERpY1N0YXR1c05ob21UcmFuZ1RoYWlgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwge1xyXG4gICAgICAgICAgICBsaXN0U3RyaW5nVmFsdWU6IHN0YXR1c2VzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGVQcm9jZXNzV29ya2Zsb3coaWQ6IG51bWJlciwgYWN0aW9uQ29kZTogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L1ZhbGlkYXRlUHJvY2Vzc1dGLyR7aWR9LyR7YWN0aW9uQ29kZX1gLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzV29ya2Zsb3coaWQ6IG51bWJlciwgYWN0aW9uQ29kZTogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L1Byb2Nlc3NXb3JrZmxvdy8ke2lkfS8ke2FjdGlvbkNvZGV9YCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcclxuICAgICAgICByZXR1cm4gY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnJvciwgaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyAnXycgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgICB9XHJcblxyXG4gICAgcHV0V2l0aFBsdXNVcmwoaWQ6IHN0cmluZywgaXRlbTogYW55LCBwbHVzVXJsOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfS8ke3BsdXNVcmx9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCwgaXRlbSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0QnlGaWVsZChmaWVsZDogc3RyaW5nLCBhcnJWYWx1ZSwgZ2V0RmllbGRzID0gJycsIHNvcnRGaWVsZCA9IG51bGwsIHNvcnREaXIgPSBudWxsKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGFyclZhbHVlID0gKGFyclZhbHVlIHx8IFtdKS5maWx0ZXIoKHZhbCwgaW5kLCBhcnIpID0+ICh2YWwgPT09IDAgfHwgdmFsKSAmJiBhcnIuaW5kZXhPZih2YWwpID09PSBpbmQpO1xyXG5cclxuICAgICAgICBpZiAoIWFyclZhbHVlIHx8ICFhcnJWYWx1ZS5sZW5ndGgpIHJldHVybiBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgYXJyRmlsdGVyID0gW25ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmluLFxyXG4gICAgICAgICAgICB2YWx1ZTogYXJyVmFsdWUudG9TdHJpbmcoKVxyXG4gICAgICAgIH0pXTtcclxuXHJcbiAgICAgICAgY29uc3QgYXJyU29ydCA9IFtdO1xyXG4gICAgICAgIGlmIChzb3J0RmllbGQpIHtcclxuICAgICAgICAgICAgYXJyU29ydC5wdXNoKG5ldyBTb3J0KHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiBzb3J0RmllbGQsXHJcbiAgICAgICAgICAgICAgICBkaXI6IHNvcnREaXIgfCAxXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFyclJlc3VsdCA9IChhd2FpdCB0aGlzLmdldEFsbChhcnJGaWx0ZXIsIGdldEZpZWxkcywgYXJyU29ydCkpLmRhdGE7XHJcbiAgICAgICAgcmV0dXJuIChhcnJSZXN1bHQgfHwgW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ5RmllbGRUb0RpYyhmaWVsZDogc3RyaW5nLCBhcnJWYWx1ZSwgZ2V0RmllbGRzLCBrZXlGaWVsZCA9IG51bGwsIHZhbHVlRmllbGQgPSBudWxsKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBhcnJSZXN1bHQgPSBhd2FpdCB0aGlzLmdldEJ5RmllbGQoZmllbGQsIGFyclZhbHVlLCBnZXRGaWVsZHMpO1xyXG4gICAgICAgIGNvbnN0IHJzRGljID0ge307XHJcbiAgICAgICAgaWYgKCFhcnJSZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByc0RpYztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChrZXlGaWVsZCkge1xyXG4gICAgICAgICAgICBrZXlGaWVsZCA9IGZpZWxkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlRmllbGQpIHtcclxuICAgICAgICAgICAgYXJyUmVzdWx0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICByc0RpY1tpdGVtW2tleUZpZWxkXV0gPSBpdGVtW3ZhbHVlRmllbGRdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFyclJlc3VsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgcnNEaWNbaXRlbVtrZXlGaWVsZF1dID0gaXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcnNEaWM7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RmlsdGVyKGZpZWxkOiBzdHJpbmcsIG9wZXJhdG9yOiBPcGVyYXRvciwgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgZmllbGQsIG9wZXJhdG9yLFxyXG4gICAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodmFsdWUpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RmlsdGVyVjQoZmllbGQ6IHN0cmluZywgb3BlcmF0b3I6IE9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZCwgb3BlcmF0b3IsXHJcbiAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGF0YVRyaW5oS3koaXRlbTogYW55LCByb3dEYXRhPzogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnRUb1BkZihpZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0V4cG9ydFRvUGRmLyR7aWR9YCwge1xyXG4gICAgICAgICAgICBzdHJpbmdWYWx1ZTogY29udGVudFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0V29ya2Zsb3coaWQ6IHN0cmluZywgd29ya2Zsb3dDb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L1N0YXJ0V29ya2Zsb3dCYXNlLyR7d29ya2Zsb3dDb2RlfS8ke2lkfWAsIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3Rpb25BbGxvdyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRBY3Rpb25BbGxvdy8ke2lkfWAsIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZShpdGVtV29ya2Zsb3dIaXN0b3J5OiBhbnkpIHtcclxuICAgICAgICBpZiAoaXRlbVdvcmtmbG93SGlzdG9yeSkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbVdvcmtmbG93SGlzdG9yeS5kZXBhcnRtZW50SWRzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtV29ya2Zsb3dIaXN0b3J5LmRvblZpSWRzID0gaXRlbVdvcmtmbG93SGlzdG9yeS5kZXBhcnRtZW50SWRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtV29ya2Zsb3dIaXN0b3J5LmRlcGFydG1lbnRWaWV3SWRzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtV29ya2Zsb3dIaXN0b3J5LmRvblZpVmlld0lkcyA9IGl0ZW1Xb3JrZmxvd0hpc3RvcnkuZGVwYXJ0bWVudFZpZXdJZHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9DaGFuZ2VTdGF0ZUJhc2VgLCBpdGVtV29ya2Zsb3dIaXN0b3J5KTtcclxuICAgIH1cclxuXHJcbiAgICBjaG9ZS2llbihpdGVtV29ya2Zsb3dIaXN0b3J5OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0Nob1lLaWVuQmFzZWAsIGl0ZW1Xb3JrZmxvd0hpc3RvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb25TaGFyZWRCeUl0ZW1JZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0UGVybWlzc2lvblNoYXJlZEJ5SXRlbUlkc2AsIHtcclxuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogaWRzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hhcmVkS2V5KGRhdGE6IE1vZGVsU2hhcmVMaW5rQnlQZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRTaGFyZWRLZXlJdGVtQmFzZWAsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUxpbmtTaGFyaW5nKGlkczogc3RyaW5nW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0RlbGV0ZUxpbmtTaGFyaW5nYCwge1xyXG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBpZHNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByb2xsYmFjayhyb3dEYXRhLCBsc3RPYmplY3ROYW1lOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vUm9sbGJhY2tCYXNlLyR7cm93RGF0YS5fX3dvcmtmbG93Q29kZX0vJHtyb3dEYXRhLmlkfWAsIHtcclxuICAgICAgICAgICAgTGlzdFN0cmluZ1ZhbHVlOiBsc3RPYmplY3ROYW1lXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcm9sbGJhY2tCeUhpc3RvcnkoaXRlbUlkOiBzdHJpbmcsIGlkSGlzdG9yeTogc3RyaW5nLCBsc3RPYmplY3ROYW1lOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vUm9sbGJhY2tCYXNlQnlIaXN0b3J5LyR7aXRlbUlkfS8ke2lkSGlzdG9yeX1gLCB7XHJcbiAgICAgICAgICAgIExpc3RTdHJpbmdWYWx1ZTogbHN0T2JqZWN0TmFtZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUm9sbGJhY2sgcXV5IHRyw6xuaCB24buBIHRy4bqhbmcgdGjDoWkgdHLGsOG7m2NcclxuICAgICAqIEBwYXJhbSBpZCBpZCBj4bunYSBi4bqjbiBnaGlcclxuICAgICAqL1xyXG4gICAgcm9sbGJhY2tXb3JrZmxvdyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9Sb2xsYmFja1dvcmtmbG93LyR7aWR9YCwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRy4bqhbmcgdGjDoWkgd29ya2Zsb3cgY29yZSBzYW5nIMSRw6MgZHV54buHdCBxdXnhur90IMSR4buLbmhcclxuICAgICAqL1xyXG4gICAgdXBkYXRlRGFEdXlldFF1eWV0RGluaChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVEYUR1eWV0UXV5ZXREaW5oLyR7aWR9YCwge30pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
644
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL2Jhc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRixPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUduRCxNQUFNLFVBQVUsR0FBRyxpRkFBaUYsQ0FBQztBQUNyRyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFFaEMsTUFBTSxPQUFnQixXQUFXO0lBcUI3QixZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLFVBQWtCO1FBbkJ0QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixjQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0IseUJBQW9CLEdBQUcs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LENBQUMsT0FBTyxFQUFFLGFBQXVCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLGlCQUFpQixPQUFPLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUMvRixlQUFlLEVBQUUsYUFBYTtTQUNqQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYyxFQUFFLFNBQWlCLEVBQUUsYUFBdUI7UUFDeEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsMEJBQTBCLE1BQU0sSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUN2RixlQUFlLEVBQUUsYUFBYTtTQUNqQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsRUFBVTtRQUM3QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHJldHJ5LCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zLCBPcGVyYXRvciB9IGZyb20gJy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBNb2RlbFNoYXJlTGlua0J5UGVybWlzc2lvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmUtbGluay1ieS1wZXJtaXNzaW9uL21vZGVscy9zaGFyZS1saW5rLWJ5LXBlcm1pc3Npb24nO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIEdyaWRJbmZvLCBTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IGdldFN0cmluZ0RhdGVWTiB9IGZyb20gJy4uL3V0aWxzL2RhdGUnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNpZ25hbFJTZXJ2aWNlIH0gZnJvbSAnLi9zaWduYWxyLnNlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IEVYQ0VMX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XHJcbmNvbnN0IEVYQ0VMX0VYVEVOU0lPTiA9ICcueGxzeCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVNlcnZpY2Uge1xyXG4gICAgX2h0dHA6IEh0dHBDbGllbnQ7XHJcbiAgICBfaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gICAgX3NpZ25hbHJTZXJ2aWNlUHJpdmF0ZTogU2lnbmFsUlNlcnZpY2U7XHJcblxyXG4gICAgc2VydmljZVVyaSA9ICcnO1xyXG4gICAgZW5kUG9pbnQgPSAnJztcclxuICAgIHNlcnZpY2VDb2RlID0gJyc7XHJcbiAgICBlbnRpdHlOYW1lID0gJyc7XHJcbiAgICBvYmplY3ROYW1lID0gJyc7XHJcbiAgICB1c2VXb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgYXBpR2V0RGF0YSA9ICdHZXREYXRhJztcclxuICAgIGFwaUdldEFsbCA9ICdHZXRBbGxCeUZpbHRlcic7XHJcbiAgICBhcGlHZXREZXRhaWxCeUZpbHRlciA9ICdHZXRCeUZpbHRlcic7XHJcblxyXG4gICAgcmVhZG9ubHkgUkVUUllfQ09VTlQ6IG51bWJlciA9IDA7XHJcbiAgICByZWFkb25seSBSRVBMQVlfQ09VTlQ6IG51bWJlciA9IDE7XHJcbiAgICByZWFkb25seSBMSU1JVF9ERUZBVUxUOiBudW1iZXIgPSAxMDAwO1xyXG5cclxuICAgIHByb3RlY3RlZCBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBzZXJ2aWNlVXJpOiBzdHJpbmdcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX2h0dHAgPSBodHRwO1xyXG4gICAgICAgIHRoaXMuX2luamVjdG9yID0gaW5qZWN0b3I7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENvbW1vblNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuX3NpZ25hbHJTZXJ2aWNlUHJpdmF0ZSA9IGluamVjdG9yLmdldChTaWduYWxSU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q3VycmVudFNlcnZpY2VVcmkoa2V5OiBzdHJpbmcpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXRLZXlXb3JrZmxvd1NldHRpbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZW50aXR5TmFtZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3Vic2NyaWJlU2lnbmFsUihjYWxsQmFjaykge1xyXG4gICAgICAgIGNvbnN0IHRvcGljID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XHJcbiAgICAgICAgLy8gQuG6r3QgxJHhuqd1IGNo4bqheVxyXG4gICAgICAgIHRoaXMuX3NpZ25hbHJTZXJ2aWNlUHJpdmF0ZS5zdGFydCgnQ29tbW9uSHViJywgdG9waWMsIChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHVuc3Vic2NyaWJlIGPDoWMgdG9waWMgxJHDoyBs4bqvbmcgbmdoZSB0csaw4bubYyDEkcOzXHJcbiAgICAgICAgICAgIHRoaXMuX3NpZ25hbHJTZXJ2aWNlUHJpdmF0ZS51blN1YnNjcmliZVZpZXdDb2RlKCdDb21tb25IdWInLCB0b3BpYyk7XHJcbiAgICAgICAgICAgIGNhbGxCYWNrKG1lc3NhZ2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0b3BpYztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVuU3Vic2NyaWJlU2lnbmFsUihrZXkpIHtcclxuICAgICAgICB0aGlzLl9zaWduYWxyU2VydmljZVByaXZhdGUudW5TdWJzY3JpYmVWaWV3Q29kZSgnQ29tbW9uSHViJywga2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0R2V0U2lnbmFsUihhcGlVcmwpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdG9waWMgPSB0aGlzLnN1YnNjcmliZVNpZ25hbFIoZiA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBycyA9IEpTT04ucGFyc2UoZik7XHJcbiAgICAgICAgICAgICAgICBpZiAocnMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vID09IC0xIGzDoCB0csaw4budbmcgaOG7o3Agc2V0IGtleSBi4buLIGzhu5dpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLmRhdGEgIT0gJy0xJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENhY2hlUmVzcG9uc2UocnMuZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcGlVcmwuaW5kZXhPZignPycpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBhcGlVcmwgKz0gYD9gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXBpVXJsICs9IGAmYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhcGlVcmwgKz0gYF9rZXlTaWduYWxyPSR7dG9waWN9YDtcclxuICAgICAgICAgICAgdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKVxyXG4gICAgICAgICAgICAgICAgKS50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuU3Vic2NyaWJlU2lnbmFsUih0b3BpYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0UG9zdFNpZ25hbFIoYXBpVXJsLCBkYXRhOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdG9waWMgPSB0aGlzLnN1YnNjcmliZVNpZ25hbFIoZiA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBycyA9IEpTT04ucGFyc2UoZik7XHJcbiAgICAgICAgICAgICAgICBpZiAocnMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vID09IC0xIGzDoCB0csaw4budbmcgaOG7o3Agc2V0IGtleSBi4buLIGzhu5dpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLmRhdGEgIT0gJy0xJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldENhY2hlUmVzcG9uc2UocnMuZGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKHJlcy5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoYXBpVXJsLmluZGV4T2YoJz8nKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgYXBpVXJsICs9IGA/YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFwaVVybCArPSBgJmA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXBpVXJsICs9IGBfa2V5U2lnbmFscj0ke3RvcGljfWA7XHJcbiAgICAgICAgICAgIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBkYXRhKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICAgICApLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5TdWJzY3JpYmVTaWduYWxSKHRvcGljKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlUmVzcG9uc2Uoa2V5OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0Jhc2VHZXRDYWNoZUluZm8vJHtrZXl9YCwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc3RHcmlkSW5mbyh1cmw6IHN0cmluZywgZ3JpZEluZm86IEdyaWRJbmZvKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGlmICghZ3JpZEluZm8pIGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKCk7XHJcbiAgICAgICAgaWYgKGdyaWRJbmZvLmZpZWxkcyAmJiBncmlkSW5mby5maWVsZHMuc3RhcnRzV2l0aCgnLCcpKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLmZpZWxkcyA9IGdyaWRJbmZvLmZpZWxkcy5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vJHt1cmx9YCwgZ3JpZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5R3JpZFJlcXVlc3QoZ3JpZEluZm86IEdyaWRJbmZvLCBwbHVzVXJsOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBsZXQgYXBpVXJsID0gdGhpcy5hcGlHZXREYXRhO1xyXG4gICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJykge1xyXG4gICAgICAgICAgICBhcGlVcmwgKz0gJy8nICsgcGx1c1VybDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdEdyaWRJbmZvKGFwaVVybCwgZ3JpZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5R3JpZFJlcXVlc3RXaXRoQm9keU9sZChncmlkSW5mbzogR3JpZEluZm8sIHBsdXNVcmw6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSB0aGlzLmFwaUdldERhdGE7XHJcbiAgICAgICAgaWYgKHBsdXNVcmwgIT0gbnVsbCAmJiBwbHVzVXJsICE9ICcnKSB7XHJcbiAgICAgICAgICAgIGFwaVVybCArPSAnLycgKyBwbHVzVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbnZlcnRWYWx1ZUZpbHRlclRvT2xkQmFzZShncmlkSW5mby5maWx0ZXJzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0R3JpZEluZm8oYXBpVXJsLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb252ZXJ0VmFsdWVGaWx0ZXJUb09sZEJhc2UoZmlsdGVyczogRmlsdGVyW10pIHtcclxuICAgICAgICBmaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlci5maWx0ZXJzICYmIGZpbHRlci5maWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydFZhbHVlRmlsdGVyVG9PbGRCYXNlKGZpbHRlci5maWx0ZXJzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5wYXJzZShmaWx0ZXIudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTMOgIHZhbHVlIGtp4buDdSBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0clZhbHVlLmluZGV4T2YoJy0nKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSBnZXRTdHJpbmdEYXRlVk4oZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSBzdHJWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLnZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENo4buJIGTDuW5nIHRyb25nIHRyxrDhu51uZyBo4bujcCBtdeG7kW4gZ+G7rWkgcmVxdWVzdCDEkeG6v24gY3VzdG9tIHJvdXRlIEdldERhdGEve3BsdXNVcmx9XHJcbiAgICAgKi9cclxuICAgIGdldERhdGFDdXN0b21Sb3V0ZShwbHVzVXJsOiBzdHJpbmcsIGZpbHRlcnM/OiBGaWx0ZXJbXSwgZmllbGRzOiBzdHJpbmcgPSAnJywgc29ydHM6IFNvcnRbXSA9IFtdLCBwYWdlU2l6ZTogbnVtYmVyID0gMSwgcGFnZTogbnVtYmVyID0gMSkge1xyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcclxuICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNvcnRzLFxyXG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzID8gZmlsdGVycyA6IFtdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnlHcmlkUmVxdWVzdChncmlkSW5mbywgcGx1c1VybCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsKGZpbHRlcnM/OiBGaWx0ZXJbXSwgZmllbGRzOiBzdHJpbmcgPSAnJywgc29ydHM6IFNvcnRbXSA9IFtdLCBwbHVzVXJsOiBzdHJpbmcgPSAnJykge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSB0aGlzLmFwaUdldEFsbDtcclxuICAgICAgICBpZiAocGx1c1VybCAhPSBudWxsICYmIHBsdXNVcmwgIT0gJycpIHtcclxuICAgICAgICAgICAgYXBpVXJsICs9IGAvJHtwbHVzVXJsfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcclxuICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNvcnRzLFxyXG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzID8gZmlsdGVycyA6IFtdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdEdyaWRJbmZvKGFwaVVybCwgZ3JpZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbEJ5R3JpZEluZm8oZ3JpZEluZm86IEdyaWRJbmZvLCBwbHVzVXJsOiBzdHJpbmcgPSAnJykge1xyXG4gICAgICAgIGxldCBhcGlVcmwgPSB0aGlzLmFwaUdldEFsbDtcclxuICAgICAgICBpZiAocGx1c1VybCAhPSBudWxsICYmIHBsdXNVcmwgIT0gJycpIHtcclxuICAgICAgICAgICAgYXBpVXJsICs9IGAvJHtwbHVzVXJsfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RHcmlkSW5mbyhhcGlVcmwsIGdyaWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0V4aXN0QnlGaWx0ZXIoZmlsdGVyczogRmlsdGVyW10pIHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0NoZWNrRXhpc3RgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGFwaVVybCwgZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tEdXBsaWNhdGVkQnlGaWVsZChmaWVsZDogc3RyaW5nLCB2YWx1ZTogYW55LCBpZDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcclxuICAgICAgICAgICAgbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShpZClcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodmFsdWUpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGVja0V4aXN0QnlGaWx0ZXIoZmlsdGVycyk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQuc3VjY2VzcykgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKGZpbHRlcnM6IEZpbHRlcltdLCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBncmlkSW5mbyA9IHtcclxuICAgICAgICAgICAgcGFnZUluZm86IHtcclxuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogb3B0aW9ucy5wYWdlU2l6ZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICBzb3J0czogW10sXHJcbiAgICAgICAgICAgIGZpZWxkczogbnVsbFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3Qgc3RyRmllbGQgPSBgJHtvcHRpb25zLnZhbHVlRmllbGR9JHtvcHRpb25zLmRpc3BsYXlGaWVsZCA9PSBvcHRpb25zLnZhbHVlRmllbGQgPyAnJyA6ICcsJyArIG9wdGlvbnMuZGlzcGxheUZpZWxkfSR7b3B0aW9ucy5maWVsZFBsdXN9YDtcclxuICAgICAgICBncmlkSW5mby5maWVsZHMgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmFkZERpc3RpbmN0KHN0ckZpZWxkLnNwbGl0KCcsJyksIFtdKS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnRzICE9IG51bGwgJiYgb3B0aW9ucy5zb3J0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzID0gWy4uLm9wdGlvbnMuc29ydHNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0RmllbGQgIT0gbnVsbCAmJiBvcHRpb25zLnNvcnRGaWVsZCAhPSAnJykge1xyXG5cclxuICAgICAgICAgICAgZ3JpZEluZm8uc29ydHMucHVzaCh7IGZpZWxkOiBvcHRpb25zLnNvcnRGaWVsZCwgZGlyOiBvcHRpb25zLnNvcnREaXIgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBncmlkSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldERlZmF1bHRPcHRpb25zKG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucykge1xyXG4gICAgICAgIGlmIChvcHRpb25zLmZpZWxkUGx1cy5sZW5ndGggPiAwICYmICFvcHRpb25zLmZpZWxkUGx1cy5zdGFydHNXaXRoKCcsJykpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgPSAnLCcgKyBvcHRpb25zLmZpZWxkUGx1cztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkID09ICcnKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuc29ydEZpZWxkID0gb3B0aW9ucy5kaXNwbGF5RmllbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RGVmYXVsdE9wdGlvbnNUcmVlKG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucywgZmllbGRQYXJlbnQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChvcHRpb25zLmZpZWxkUGx1cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZmllbGRQbHVzICs9ICcsJztcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgKz0gZmllbGRQYXJlbnQ7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuZmllbGRQbHVzLmxlbmd0aCA+IDAgJiYgIW9wdGlvbnMuZmllbGRQbHVzLnN0YXJ0c1dpdGgoJywnKSkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmZpZWxkUGx1cyA9ICcsJyArIG9wdGlvbnMuZmllbGRQbHVzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhRHJvcGRvd24ob3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSBvcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRCeUdyaWRSZXF1ZXN0KHRoaXMuZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKFtdLCBvcHRpb25zKSwgb3B0aW9ucy5wbHVzVXJsKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoZmlsdGVyczogRmlsdGVyW10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyaWRJbmZvID0gdGhpcy5nZW5lcmF0ZUdyaWRJbmZvRHJvcGRvd24oZmlsdGVycywgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmlzU2VydmVyTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8ucGFnZUluZm8ucGFnZVNpemUgPSAxNTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QnlHcmlkUmVxdWVzdChncmlkSW5mbywgb3B0aW9ucy5wbHVzVXJsKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFsbEJ5R3JpZEluZm8oZ3JpZEluZm8sIG9wdGlvbnMucGx1c1VybClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUcmVlRGF0YShyYXdEYXRhLCBmaWVsZFBhcmVudDogc3RyaW5nLCB2YWx1ZVBhcmVudFJvb3Q6IG51bWJlciwgb3B0aW9uczogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHJhd0RhdGEgPT0gbnVsbCkgcmV0dXJuIFtdO1xyXG4gICAgICAgIGNvbnN0IGZ1bmNEZVF1eSA9IChyZXN1bHQsIGRhdGFzLCBwcmVmaXgsIGxldmVsKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1QYXJlbnQgPSByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YXNbaV1bZmllbGRQYXJlbnRdID09IGl0ZW1QYXJlbnRbb3B0aW9ucy5maWVsZFBhcmVudFRyZWVJdGVtXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzW2ldLl9wcmVmaXggPSBgJHtwcmVmaXh9IGA7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNbaV0uX2luZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhc1tpXS5fbGV2ZWwgPSBsZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChkYXRhc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY0RlUXV5KHJlc3VsdCwgZGF0YXMsIHByZWZpeCArICctLS0nLCBsZXZlbCArIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhd0RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHJhd0RhdGFbaV1bZmllbGRQYXJlbnRdID09IHZhbHVlUGFyZW50Um9vdCkge1xyXG4gICAgICAgICAgICAgICAgcmF3RGF0YVtpXS5fcHJlZml4ID0gJyc7XHJcbiAgICAgICAgICAgICAgICByYXdEYXRhW2ldLl9pbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICByYXdEYXRhW2ldLl9sZXZlbCA9IDE7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyYXdEYXRhW2ldKTtcclxuICAgICAgICAgICAgICAgIGZ1bmNEZVF1eShyZXN1bHQsIHJhd0RhdGEsICd8LS0tJywgMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmVlRGF0YURyb3Bkb3duKGZpZWxkUGFyZW50OiBzdHJpbmcsIHZhbHVlUGFyZW50Um9vdDogbnVtYmVyID0gLTEsIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPcHRpb25zVHJlZShvcHRpb25zLCBmaWVsZFBhcmVudCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRCeUdyaWRSZXF1ZXN0KHRoaXMuZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKFtdLCBvcHRpb25zKSlcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLmdldFRyZWVEYXRhKHJlcy5kYXRhLCBmaWVsZFBhcmVudCwgdmFsdWVQYXJlbnRSb290LCBvcHRpb25zKSk7XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRyZWVEYXRhRHJvcGRvd25CeUZpbHRlcihmaWx0ZXJzOiBGaWx0ZXJbXSwgZmllbGRQYXJlbnQ6IHN0cmluZywgdmFsdWVQYXJlbnRSb290OiBudW1iZXIgPSAtMSwgb3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSBvcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE9wdGlvbnNUcmVlKG9wdGlvbnMsIGZpZWxkUGFyZW50KTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBncmlkSW5mbyA9IHRoaXMuZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKGZpbHRlcnMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pc1NlcnZlckxvYWQpIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLnBhZ2VJbmZvLnBhZ2VTaXplID0gMTU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldEJ5R3JpZFJlcXVlc3QoZ3JpZEluZm8sIG9wdGlvbnMucGx1c1VybClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZ2V0VHJlZURhdGEocmVzLmRhdGEsIGZpZWxkUGFyZW50LCB2YWx1ZVBhcmVudFJvb3QsIG9wdGlvbnMpKTtcclxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxCeUdyaWRJbmZvKGdyaWRJbmZvLCBvcHRpb25zLnBsdXNVcmwpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLmdldFRyZWVEYXRhKHJlcy5kYXRhLCBmaWVsZFBhcmVudCwgdmFsdWVQYXJlbnRSb290LCBvcHRpb25zKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERldGFpbChpZDogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vJHtpZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXRhaWxXaXRoUGVybWlzc2lvbihpZDogYW55LCBwaWQ6IHN0cmluZyA9IG51bGwpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKHBpZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHBpZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZEVtcHR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vRGV0YWlsV2l0aFBlcm1pc3Npb24vJHtpZH0/cGlkPSR7cGlkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERldGFpbEJ5UGlkKHBpZDogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vRGV0YWlsV2l0aEJ5UGlkLyR7cGlkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ5SW5zdGFuY2VJZChpbnN0YW5jZUlkOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRCeUluc3RhY2VJZC8ke2luc3RhbmNlSWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGV0YWlsQnlDb2RlKGNvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEJ5Q29kZS8ke2NvZGV9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGV0YWlsQnlGaWx0ZXIoZmlsdGVyczogRmlsdGVyW10gPSBbXSwgc29ydHM6IFNvcnRbXSA9IFtdKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vJHt0aGlzLmFwaUdldERldGFpbEJ5RmlsdGVyfWA7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB7XHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsdGVycyxcclxuICAgICAgICAgICAgc29ydHNcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExhc3REZXRhaWxCeUZpbHRlcihmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdLCBzb3J0czogU29ydFtdID0gW10pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRMYXN0QnlGaWx0ZXJgO1xyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0ge1xyXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgICAgIHNvcnRzXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxBc3luYygpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRBc3luY2A7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc3QoaXRlbTogYW55LCBwbHVzVXJsOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmkgPSBwbHVzVXJsID8gYCR7dGhpcy5zZXJ2aWNlVXJpfSR7cGx1c1VybH1gIDogdGhpcy5zZXJ2aWNlVXJpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PFJlc3BvbnNlUmVzdWx0Pih1cmksIGl0ZW0pXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdXQoaWQ6IHN0cmluZywgaXRlbTogYW55LCBwbHVzVXJsOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBwbHVzVXJsID8gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfSR7cGx1c1VybH1gIDogYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PFJlc3BvbnNlUmVzdWx0Pih1cmwsIGl0ZW0pLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZShpZDogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vJHtpZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZTxSZXNwb25zZVJlc3VsdD4odXJsKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0Pih1cmwpLnBpcGUoXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVNYW55KGxzdElkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9EZWxldGVNYW55QXN5bmMvJHtsc3RJZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZTxSZXNwb25zZVJlc3VsdD4odXJsKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZhdWx0R2V0KGFwaVVybCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SWdub3JlQ2xpZW50Q2FjaGUoYXBpVXJsKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDYWNoZS1Db250cm9sJzogJ25vLWNhY2hlJyB9KSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwgb3B0aW9ucylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmYXVsdFBvc3QoYXBpVXJsLCBkYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwgZGF0YSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpXHJcbiAgICAgICAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmYXVsdFB1dChhcGlVcmwsIGRhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIGRhdGEpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKVxyXG4gICAgICAgICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVudGl0eU1ldGFkYXRhKCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEVudGl0eU1ldGFkYXRhYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybClcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlRW50aXR5TWV0YWRhdGEoZGF0YSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1NhdmVFbnRpdHlNZXRhZGF0YWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBkYXRhKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZU1ldGFkYXRhU3RhdHVzKGlkOiBudW1iZXIsIG1ldGFkYXRhVHlwZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9jaGFuZ2VNZXRhZGF0YVN0YXR1cz9pZD0ke2lkfSZtZXRhZGF0YVN0YXR1c1R5cGU9JHttZXRhZGF0YVR5cGV9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIHt9KS5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUFuZENoYW5nZU1ldGFkYXRhU3RhdHVzKGlkOiBudW1iZXIsIG1ldGFkYXRhVHlwZTogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L3NhdmVBbmRDaGFuZ2VNZXRhZGF0YVN0YXR1cz9pZD0ke2lkfSZtZXRhZGF0YVN0YXR1c1R5cGU9JHttZXRhZGF0YVR5cGV9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIGRhdGEpLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFbnRpdHlQZXJtaXNzaW9uKCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBhcGlVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEVudGl0eVBlcm1pc3Npb25gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVFbnRpdHlQZXJtaXNzaW9uKGRhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9TYXZlRW50aXR5UGVybWlzc2lvbmA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBkYXRhKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVudGl0eVBlcm1pc3Npb24oaWQ6IHN0cmluZywgaXRlbTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRFbnRpdHlQZXJtaXNzaW9uLyR7aWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCwgaXRlbSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlRW50aXR5UGVybWlzc2lvbihpZDogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vRGVsZXRlRW50aXR5UGVybWlzc2lvbi8ke2lkfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0Pih1cmwpLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFdmSGlzdG9yeUJ5RW50aXR5SXRlbShpZDogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0V2ZIaXN0b3J5QnlFbnRpdHlJdGVtLyR7aWR9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGljU3RhdHVzTmhvbVRyYW5nVGhhaShzdGF0dXNlczogc3RyaW5nW10pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREaWNTdGF0dXNOaG9tVHJhbmdUaGFpYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHtcclxuICAgICAgICAgICAgbGlzdFN0cmluZ1ZhbHVlOiBzdGF0dXNlc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlUHJvY2Vzc1dvcmtmbG93KGlkOiBudW1iZXIsIGFjdGlvbkNvZGU6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9WYWxpZGF0ZVByb2Nlc3NXRi8ke2lkfS8ke2FjdGlvbkNvZGV9YCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc1dvcmtmbG93KGlkOiBudW1iZXIsIGFjdGlvbkNvZGU6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9Qcm9jZXNzV29ya2Zsb3cvJHtpZH0vJHthY3Rpb25Db2RlfWAsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVzZXJJblByb2Nlc3NGb3JtKHdvcmtmbG93Q29kZTogc3RyaW5nLCBzdGF0ZUNvZGU6IHN0cmluZywgYWN0aW9uQ29kZTogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0VXNlckluUHJvY2Vzc0Zvcm1CYXNlLyR7d29ya2Zsb3dDb2RlfS8ke3N0YXRlQ29kZX0vJHthY3Rpb25Db2RlfS8ke2l0ZW1JZH1gLCB7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcclxuICAgICAgICByZXR1cm4gY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnJvciwgaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyAnXycgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgICB9XHJcblxyXG4gICAgcHV0V2l0aFBsdXNVcmwoaWQ6IHN0cmluZywgaXRlbTogYW55LCBwbHVzVXJsOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke2lkfS8ke3BsdXNVcmx9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCwgaXRlbSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0QnlGaWVsZChmaWVsZDogc3RyaW5nLCBhcnJWYWx1ZSwgZ2V0RmllbGRzID0gJycsIHNvcnRGaWVsZCA9IG51bGwsIHNvcnREaXIgPSBudWxsKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGFyclZhbHVlID0gKGFyclZhbHVlIHx8IFtdKS5maWx0ZXIoKHZhbCwgaW5kLCBhcnIpID0+ICh2YWwgPT09IDAgfHwgdmFsKSAmJiBhcnIuaW5kZXhPZih2YWwpID09PSBpbmQpO1xyXG5cclxuICAgICAgICBpZiAoIWFyclZhbHVlIHx8ICFhcnJWYWx1ZS5sZW5ndGgpIHJldHVybiBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgYXJyRmlsdGVyID0gW25ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZCxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmluLFxyXG4gICAgICAgICAgICB2YWx1ZTogYXJyVmFsdWUudG9TdHJpbmcoKVxyXG4gICAgICAgIH0pXTtcclxuXHJcbiAgICAgICAgY29uc3QgYXJyU29ydCA9IFtdO1xyXG4gICAgICAgIGlmIChzb3J0RmllbGQpIHtcclxuICAgICAgICAgICAgYXJyU29ydC5wdXNoKG5ldyBTb3J0KHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiBzb3J0RmllbGQsXHJcbiAgICAgICAgICAgICAgICBkaXI6IHNvcnREaXIgfCAxXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFyclJlc3VsdCA9IChhd2FpdCB0aGlzLmdldEFsbChhcnJGaWx0ZXIsIGdldEZpZWxkcywgYXJyU29ydCkpLmRhdGE7XHJcbiAgICAgICAgcmV0dXJuIChhcnJSZXN1bHQgfHwgW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ5RmllbGRUb0RpYyhmaWVsZDogc3RyaW5nLCBhcnJWYWx1ZSwgZ2V0RmllbGRzLCBrZXlGaWVsZCA9IG51bGwsIHZhbHVlRmllbGQgPSBudWxsKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBhcnJSZXN1bHQgPSBhd2FpdCB0aGlzLmdldEJ5RmllbGQoZmllbGQsIGFyclZhbHVlLCBnZXRGaWVsZHMpO1xyXG4gICAgICAgIGNvbnN0IHJzRGljID0ge307XHJcbiAgICAgICAgaWYgKCFhcnJSZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByc0RpYztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChrZXlGaWVsZCkge1xyXG4gICAgICAgICAgICBrZXlGaWVsZCA9IGZpZWxkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlRmllbGQpIHtcclxuICAgICAgICAgICAgYXJyUmVzdWx0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICByc0RpY1tpdGVtW2tleUZpZWxkXV0gPSBpdGVtW3ZhbHVlRmllbGRdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFyclJlc3VsdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgcnNEaWNbaXRlbVtrZXlGaWVsZF1dID0gaXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcnNEaWM7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RmlsdGVyKGZpZWxkOiBzdHJpbmcsIG9wZXJhdG9yOiBPcGVyYXRvciwgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgZmllbGQsIG9wZXJhdG9yLFxyXG4gICAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodmFsdWUpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RmlsdGVyVjQoZmllbGQ6IHN0cmluZywgb3BlcmF0b3I6IE9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZCwgb3BlcmF0b3IsXHJcbiAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGF0YVRyaW5oS3koaXRlbTogYW55LCByb3dEYXRhPzogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnRUb1BkZihpZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0V4cG9ydFRvUGRmLyR7aWR9YCwge1xyXG4gICAgICAgICAgICBzdHJpbmdWYWx1ZTogY29udGVudFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0V29ya2Zsb3coaWQ6IHN0cmluZywgd29ya2Zsb3dDb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L1N0YXJ0V29ya2Zsb3dCYXNlLyR7d29ya2Zsb3dDb2RlfS8ke2lkfWAsIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3Rpb25BbGxvdyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRBY3Rpb25BbGxvdy8ke2lkfWAsIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTdGF0ZShpdGVtV29ya2Zsb3dIaXN0b3J5OiBhbnkpIHtcclxuICAgICAgICBpZiAoaXRlbVdvcmtmbG93SGlzdG9yeSkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbVdvcmtmbG93SGlzdG9yeS5kZXBhcnRtZW50SWRzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtV29ya2Zsb3dIaXN0b3J5LmRvblZpSWRzID0gaXRlbVdvcmtmbG93SGlzdG9yeS5kZXBhcnRtZW50SWRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtV29ya2Zsb3dIaXN0b3J5LmRlcGFydG1lbnRWaWV3SWRzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtV29ya2Zsb3dIaXN0b3J5LmRvblZpVmlld0lkcyA9IGl0ZW1Xb3JrZmxvd0hpc3RvcnkuZGVwYXJ0bWVudFZpZXdJZHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9DaGFuZ2VTdGF0ZUJhc2VgLCBpdGVtV29ya2Zsb3dIaXN0b3J5KTtcclxuICAgIH1cclxuXHJcbiAgICBjaG9ZS2llbihpdGVtV29ya2Zsb3dIaXN0b3J5OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0Nob1lLaWVuQmFzZWAsIGl0ZW1Xb3JrZmxvd0hpc3RvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb25TaGFyZWRCeUl0ZW1JZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0UGVybWlzc2lvblNoYXJlZEJ5SXRlbUlkc2AsIHtcclxuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogaWRzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2hhcmVkS2V5KGRhdGE6IE1vZGVsU2hhcmVMaW5rQnlQZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRTaGFyZWRLZXlJdGVtQmFzZWAsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUxpbmtTaGFyaW5nKGlkczogc3RyaW5nW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0RlbGV0ZUxpbmtTaGFyaW5nYCwge1xyXG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBpZHNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByb2xsYmFjayhyb3dEYXRhLCBsc3RPYmplY3ROYW1lOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vUm9sbGJhY2tCYXNlLyR7cm93RGF0YS5fX3dvcmtmbG93Q29kZX0vJHtyb3dEYXRhLmlkfWAsIHtcclxuICAgICAgICAgICAgTGlzdFN0cmluZ1ZhbHVlOiBsc3RPYmplY3ROYW1lXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcm9sbGJhY2tCeUhpc3RvcnkoaXRlbUlkOiBzdHJpbmcsIGlkSGlzdG9yeTogc3RyaW5nLCBsc3RPYmplY3ROYW1lOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vUm9sbGJhY2tCYXNlQnlIaXN0b3J5LyR7aXRlbUlkfS8ke2lkSGlzdG9yeX1gLCB7XHJcbiAgICAgICAgICAgIExpc3RTdHJpbmdWYWx1ZTogbHN0T2JqZWN0TmFtZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUm9sbGJhY2sgcXV5IHRyw6xuaCB24buBIHRy4bqhbmcgdGjDoWkgdHLGsOG7m2NcclxuICAgICAqIEBwYXJhbSBpZCBpZCBj4bunYSBi4bqjbiBnaGlcclxuICAgICAqL1xyXG4gICAgcm9sbGJhY2tXb3JrZmxvdyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9Sb2xsYmFja1dvcmtmbG93LyR7aWR9YCwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRy4bqhbmcgdGjDoWkgd29ya2Zsb3cgY29yZSBzYW5nIMSRw6MgZHV54buHdCBxdXnhur90IMSR4buLbmhcclxuICAgICAqL1xyXG4gICAgdXBkYXRlRGFEdXlldFF1eWV0RGluaChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVEYUR1eWV0UXV5ZXREaW5oLyR7aWR9YCwge30pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable, Injector } from '@angular/core';
|
|
3
|
+
import { BaseService } from './base.service';
|
|
4
|
+
import { ModuleConfigService } from './module-config.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "./module-config.service";
|
|
8
|
+
export class DmChucVuService extends BaseService {
|
|
9
|
+
constructor(http, injector, _moduleConfigService) {
|
|
10
|
+
super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.canboEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/DM_ChucVu`);
|
|
11
|
+
this.serviceCode = 'canbo';
|
|
12
|
+
this.entityName = 'DM_ChucVu';
|
|
13
|
+
this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.canboEndpoint;
|
|
14
|
+
this._moduleConfig = _moduleConfigService.getConfig();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
DmChucVuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DmChucVuService_Factory() { return new DmChucVuService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.ModuleConfigService)); }, token: DmChucVuService, providedIn: "root" });
|
|
18
|
+
DmChucVuService.decorators = [
|
|
19
|
+
{ type: Injectable, args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
},] }
|
|
22
|
+
];
|
|
23
|
+
DmChucVuService.ctorParameters = () => [
|
|
24
|
+
{ type: HttpClient },
|
|
25
|
+
{ type: Injector },
|
|
26
|
+
{ type: ModuleConfigService }
|
|
27
|
+
];
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG0tY2h1Y3Z1LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsic2VydmljZXMvZG0tY2h1Y3Z1LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUs5RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBSzVDLFlBQ0ksSUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsb0JBQXlDO1FBRXpDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsWUFBWSxDQUFDLENBQUM7UUFUMUssZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFDdEIsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQVNyQixJQUFJLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQ3JGLElBQUksQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUQsQ0FBQzs7OztZQWhCSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVJRLFVBQVU7WUFDRSxRQUFRO1lBR3BCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZ3MvbW9kdWxlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEbUNodWNWdVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBzZXJ2aWNlQ29kZSA9ICdjYW5ibyc7XHJcbiAgICBlbnRpdHlOYW1lID0gJ0RNX0NodWNWdSc7XHJcbiAgICByZWFkb25seSBfbW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9ETV9DaHVjVnVgKTtcclxuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNhbmJvRW5kcG9pbnQ7XHJcbiAgICAgICAgdGhpcy5fbW9kdWxlQ29uZmlnID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -23,4 +23,4 @@ RoleService.ctorParameters = () => [
|
|
|
23
23
|
{ type: Injector },
|
|
24
24
|
{ type: ModuleConfigService }
|
|
25
25
|
];
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3JvbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBSzlELE1BQU0sT0FBTyxXQUFZLFNBQVEsV0FBVztJQUd4QyxZQUNJLElBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLG9CQUF5QztRQUV6QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMscUJBQXFCLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsT0FBTyxDQUFDLENBQUM7UUFDekssSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDO1FBQzdGLElBQUksQ0FBQyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUQsQ0FBQzs7OztZQWRKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBUlEsVUFBVTtZQUNFLFFBQVE7WUFHcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvbGVTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG4gICAgcmVhZG9ubHkgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmF1dGhvcml6YXRpb25FbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9yb2xlYCk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5hdXRob3JpemF0aW9uRW5kcG9pbnQ7XHJcbiAgICAgICAgdGhpcy5fbW9kdWxlQ29uZmlnID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|