@stemy/ngx-dynamic-form 13.1.1 → 13.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2020/ngx-dynamic-form/common-types.mjs +1 -1
  2. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-array.component.mjs +28 -12
  3. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs +37 -18
  4. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control.component.mjs +5 -4
  5. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form.component.mjs +21 -11
  6. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-select.component.mjs +8 -5
  7. package/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +69 -64
  8. package/esm2020/ngx-dynamic-form/utils/dynamic-form-array.model.mjs +114 -5
  9. package/esm2020/ngx-dynamic-form/utils/form-select-subject.mjs +10 -7
  10. package/esm2020/ngx-dynamic-form/utils/misc.mjs +4 -4
  11. package/esm2020/public_api.mjs +2 -2
  12. package/fesm2015/stemy-ngx-dynamic-form.mjs +373 -209
  13. package/fesm2015/stemy-ngx-dynamic-form.mjs.map +1 -1
  14. package/fesm2020/stemy-ngx-dynamic-form.mjs +365 -203
  15. package/fesm2020/stemy-ngx-dynamic-form.mjs.map +1 -1
  16. package/ngx-dynamic-form/common-types.d.ts +3 -33
  17. package/ngx-dynamic-form/components/base/dynamic-base-form-array.component.d.ts +18 -10
  18. package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +10 -12
  19. package/ngx-dynamic-form/components/base/dynamic-base-form-control.component.d.ts +3 -2
  20. package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +3 -1
  21. package/ngx-dynamic-form/components/base/dynamic-base-select.component.d.ts +1 -0
  22. package/ngx-dynamic-form/ngx-dynamic-form.imports.d.ts +1 -1
  23. package/ngx-dynamic-form/services/dynamic-form.service.d.ts +9 -10
  24. package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +47 -4
  25. package/ngx-dynamic-form/utils/misc.d.ts +2 -2
  26. package/package.json +1 -1
  27. package/public_api.d.ts +2 -2
@@ -94,4 +94,4 @@ export function createFormFile(id, data) {
94
94
  data.url = ObjectUtils.isString(data.url) ? data.url : "assets";
95
95
  return control;
96
96
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tbW9uLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE9BQU8sRUFLSCxXQUFXLEVBQ1gsWUFBWSxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUF1RjFCLDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBVSxFQUFFLE1BQWlCO0lBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBb0Q7SUFDakYsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLElBQUksaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9HLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQThCO0lBQ3BELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDMUUsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLFFBQVE7Z0JBQ1QsU0FBUyxHQUFHLFFBQVEsQ0FBQztnQkFDckIsTUFBTTtZQUNWLEtBQUssU0FBUztnQkFDVixTQUFTLEdBQUcsVUFBVSxDQUFDO2dCQUN2QixNQUFNO1NBQ2I7UUFDRCxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBb0M7SUFDM0QsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFvQztJQUMzRCxPQUFPLENBQUMsTUFBVyxFQUFFLFdBQW1CLEVBQVEsRUFBRTtRQUM5QyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQWtDO0lBQ3hELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQW1DO0lBQ3hELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBVyxFQUFFLFdBQW1CLEVBQUUsT0FBcUI7SUFDckYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQVcsRUFBRSxXQUFtQjtJQUMzRCxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBVyxFQUFFLFdBQW1CO0lBQzlELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxFQUFVLEVBQUUsSUFBWSxFQUFFLE1BQXNDO0lBQzlGLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQztJQUN4QixNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQy9FLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDM0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztJQUN2QyxPQUFPLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUFVLEVBQUUsTUFBK0IsRUFBRSxPQUFlLE1BQU07SUFDOUYsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RCxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN4QixNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO0lBQzVDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDL0IsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztJQUNsQyxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQVUsRUFBRSxJQUFtQztJQUM1RSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDbEMsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUFVLEVBQUUsTUFBcUM7SUFDOUUsT0FBTyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQVUsRUFBRSxJQUFpQztJQUN6RSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDNUIsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBVSxFQUFFLElBQWtDO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoRSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBUZW1wbGF0ZVJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljRmlsZVVwbG9hZE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sRXZlbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNYXBGbixcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljU2VsZWN0TW9kZWxDb25maWdcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSUFzeW5jTWVzc2FnZSxcclxuICAgIElPcGVuQXBpU2NoZW1hLFxyXG4gICAgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSxcclxuICAgIElSZXNvbHZlRmFjdG9yeSxcclxuICAgIE9iamVjdFV0aWxzLFxyXG4gICAgUmVmbGVjdFV0aWxzXHJcbn0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuXHJcbi8vIC0tLSBCYXNpYyBmb3JtIGNvbnRyb2wgaW50ZXJmYWNlcyAtLS1cclxuXHJcbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtU3RhdGUgPSBcIlZBTElEXCIgfCBcIklOVkFMSURcIiB8IFwiUEVORElOR1wiIHwgXCJESVNBQkxFRFwiIHwgXCJMT0FESU5HXCI7XHJcbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtVXBkYXRlT24gPSBcImNoYW5nZVwiIHwgXCJibHVyXCIgfCBcInN1Ym1pdFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm1FdmVudCBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbEV2ZW50IHtcclxuICAgIGZvcm06IElEeW5hbWljRm9ybTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm0ge1xyXG4gICAgc3RhdHVzOiBEeW5hbWljRm9ybVN0YXRlO1xyXG5cclxuICAgIG9uVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm1FdmVudD47XHJcbiAgICBvblN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcbiAgICBvblN1Ym1pdDogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcblxyXG4gICAgdmFsaWRhdGUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2VyaWFsaXplKHZhbGlkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbkNyZWF0ZWRGb3JtQ29udHJvbCBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbCB7XHJcbiAgICBvbkNyZWF0ZWQoKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kZWxUeXBlIGV4dGVuZHMgRnVuY3Rpb24ge1xyXG4gICAgbmV3IChjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnKTogRHluYW1pY0Zvcm1Db250cm9sTW9kZWw7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvcm1Db250cm9sU2VyaWFsaXplciA9IChtb2RlbDogRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbDxhbnk+LCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFByb21pc2U8YW55PjtcclxuZXhwb3J0IHR5cGUgRm9ybU1vZGVsQ3VzdG9taXplciA9IChcclxuICAgIHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hLFxyXG4gICAgbW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLCBjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnLCBpbmplY3RvcjogSW5qZWN0b3JcclxuKSA9PiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCB8IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsW107XHJcbmV4cG9ydCB0eXBlIEZvcm1Nb2RlbEN1c3RvbWl6ZXJXcmFwID0gKFxyXG4gICAgcHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEsXHJcbiAgICBtb2RlbFR5cGU6IE1vZGVsVHlwZSwgY29uZmlnOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZ1xyXG4pID0+IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsW107XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbCB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgY29uZmlnPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sT3B0aW9uIHtcclxuICAgIGlkOiBhbnk7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgc2VsZWN0YWJsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8vIC0tLSBCYXNpYyBmb3JtIGludGVyZmFjZXMgLS0tXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEeW5hbWljRm9ybVRlbXBsYXRlcyB7XHJcbiAgICBbaWQ6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtQ29uZmlnIHtcclxuICAgIHBhdGg/OiBzdHJpbmcgfCBudW1iZXIgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICAgIGNsYXNzZXM/OiBzdHJpbmc7XHJcbiAgICBmb3JtQ2xhc3Nlcz86IHN0cmluZztcclxuICAgIGlubmVyRm9ybUNsYXNzZXM/OiBzdHJpbmc7XHJcbiAgICBpZDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEeW5hbWljU2luZ2xlRm9ybUNvbmZpZyBleHRlbmRzIElEeW5hbWljRm9ybUNvbmZpZywgSUR5bmFtaWNGb3JtSW5mbyB7XHJcbiAgICBkYXRhOiBhbnk7XHJcbiAgICBjb250cm9sRGF0YT86IER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZztcclxuICAgIG11bHRpPzogZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNNdWx0aUZvcm1Db25maWcgZXh0ZW5kcyBJRHluYW1pY0Zvcm1Db25maWcge1xyXG4gICAgZGF0YTogSUR5bmFtaWNGb3Jtc0NvbmZpZ3M7XHJcbiAgICBtdWx0aTogdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSUR5bmFtaWNGb3Jtc0NvbmZpZ3MgPSBBcnJheTxJRHluYW1pY1NpbmdsZUZvcm1Db25maWcgfCBJRHluYW1pY011bHRpRm9ybUNvbmZpZz47XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIEFzeW5jU3VibWl0TWV0aG9kID0gKGZvcm06IElEeW5hbWljRm9ybSwgY29udGV4dD86IGFueSkgPT4gUHJvbWlzZTxJQXN5bmNNZXNzYWdlPjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtSW5mbyB7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG4gICAgY29udHJvbHM/OiBJRm9ybUNvbnRyb2xbXTtcclxufVxyXG5cclxuLy8gLS0tIERlY29yYXRvciBmdW5jdGlvbnMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U2VyaWFsaXplcihpZDogc3RyaW5nLCBwYXJlbnQ6IEZvcm1BcnJheSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBjb250cm9sID0gcGFyZW50LmdldChpZCk7XHJcbiAgICByZXR1cm4gIWNvbnRyb2wgPyBudWxsOiBjb250cm9sLnZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybVNlcmlhbGl6YWJsZShzZXJpYWxpemVyPzogRm9ybUNvbnRyb2xTZXJpYWxpemVyIHwgSVJlc29sdmVGYWN0b3J5KTogUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImR5bmFtaWNGb3JtU2VyaWFsaXplclwiLCBzZXJpYWxpemVyIHx8IGRlZmF1bHRTZXJpYWxpemVyLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtSW5wdXQoZGF0YT86IER5bmFtaWNJbnB1dE1vZGVsQ29uZmlnKTogUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1ldGEgPSBSZWZsZWN0VXRpbHMuZ2V0T3duTWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgICAgICBjb25zdCB0eXBlID0gbWV0YSA/IG1ldGEubmFtZSA6IFwiXCI7XHJcbiAgICAgICAgbGV0IGlucHV0VHlwZSA9IHByb3BlcnR5S2V5LmluZGV4T2YoXCJwYXNzd29yZFwiKSA8IDAgPyBcInRleHRcIiA6IFwicGFzc3dvcmRcIjtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBcIk51bWJlclwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJudW1iZXJcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiQm9vbGVhblwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJjaGVja2JveFwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmluZUZvcm1Db250cm9sKHRhcmdldCwgcHJvcGVydHlLZXksIGNyZWF0ZUZvcm1JbnB1dChwcm9wZXJ0eUtleSwgZGF0YSwgaW5wdXRUeXBlKSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybVNlbGVjdChkYXRhPzogRHluYW1pY1NlbGVjdE1vZGVsQ29uZmlnPGFueT4pOiBQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZGVmaW5lRm9ybUNvbnRyb2wodGFyZ2V0LCBwcm9wZXJ0eUtleSwgY3JlYXRlRm9ybVNlbGVjdChwcm9wZXJ0eUtleSwgZGF0YSkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1TdGF0aWMoZGF0YT86IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnKTogUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGRlZmluZUZvcm1Db250cm9sKHRhcmdldCwgcHJvcGVydHlLZXksIGNyZWF0ZUZvcm1TdGF0aWMocHJvcGVydHlLZXksIGRhdGEpKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtTW9kZWwoZGF0YT86IER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQsIHByb3BlcnR5S2V5LCBjcmVhdGVGb3JtTW9kZWwocHJvcGVydHlLZXksIGRhdGEpKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtRmlsZShkYXRhPzogRHluYW1pY0ZpbGVVcGxvYWRNb2RlbENvbmZpZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQsIHByb3BlcnR5S2V5LCBjcmVhdGVGb3JtRmlsZShwcm9wZXJ0eUtleSwgZGF0YSkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUZvcm1Db250cm9sKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBjb250cm9sOiBJRm9ybUNvbnRyb2wpOiB2b2lkIHtcclxuICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImR5bmFtaWNGb3JtQ29udHJvbFwiLCBjb250cm9sLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1Db250cm9sKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogSUZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiBSZWZsZWN0VXRpbHMuZ2V0TWV0YWRhdGEoXCJkeW5hbWljRm9ybUNvbnRyb2xcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtU2VyaWFsaXplcih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IEZvcm1Db250cm9sU2VyaWFsaXplciB8IElSZXNvbHZlRmFjdG9yeSB7XHJcbiAgICByZXR1cm4gUmVmbGVjdFV0aWxzLmdldE1ldGFkYXRhKFwiZHluYW1pY0Zvcm1TZXJpYWxpemVyXCIsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybUNvbnRyb2woaWQ6IHN0cmluZywgdHlwZTogc3RyaW5nLCBjb25maWc/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZyk6IElGb3JtQ29udHJvbCB7XHJcbiAgICBjb25maWcgPSBjb25maWcgfHwge2lkfTtcclxuICAgIGNvbmZpZy5pZCA9IGlkO1xyXG4gICAgY29uZmlnLmxhYmVsID0gT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQoY29uZmlnLmxhYmVsKSA/IGlkIDogY29uZmlnLmxhYmVsO1xyXG4gICAgY29uZmlnLmRpc2FibGVkID0gY29uZmlnLmRpc2FibGVkIHx8IGZhbHNlO1xyXG4gICAgY29uZmlnLmhpZGRlbiA9IGNvbmZpZy5oaWRkZW4gfHwgZmFsc2U7XHJcbiAgICByZXR1cm4ge2lkLCB0eXBlLCBjb25maWd9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybUlucHV0KGlkOiBzdHJpbmcsIGNvbmZpZzogRHluYW1pY0lucHV0TW9kZWxDb25maWcsIHR5cGU6IHN0cmluZyA9IFwidGV4dFwiKTogSUZvcm1Db250cm9sIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBjcmVhdGVGb3JtQ29udHJvbChpZCwgXCJpbnB1dFwiLCBjb25maWcpO1xyXG4gICAgY29uZmlnID0gY29udHJvbC5jb25maWc7XHJcbiAgICBjb25maWcuaW5wdXRUeXBlID0gY29uZmlnLmlucHV0VHlwZSB8fCB0eXBlO1xyXG4gICAgY29uZmlnLnBsYWNlaG9sZGVyID0gY29uZmlnLnBsYWNlaG9sZGVyIHx8IChjb25maWcuaW5wdXRUeXBlID09IFwibWFza1wiID8gXCJfXCIgOiBcIlwiKTtcclxuICAgIGNvbmZpZy5zdGVwID0gY29uZmlnLnN0ZXAgfHwgMTtcclxuICAgIGNvbmZpZy5tYXNrID0gY29uZmlnLm1hc2sgfHwgbnVsbDtcclxuICAgIHJldHVybiBjb250cm9sO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybVNlbGVjdChpZDogc3RyaW5nLCBkYXRhOiBEeW5hbWljU2VsZWN0TW9kZWxDb25maWc8YW55Pik6IElGb3JtQ29udHJvbCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woaWQsIFwic2VsZWN0XCIsIGRhdGEpO1xyXG4gICAgZGF0YSA9IGNvbnRyb2wuY29uZmlnO1xyXG4gICAgZGF0YS5vcHRpb25zID0gZGF0YS5vcHRpb25zIHx8IFtdO1xyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtU3RhdGljKGlkOiBzdHJpbmcsIGNvbmZpZzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcInN0YXRpY1wiLCBjb25maWcpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybU1vZGVsKGlkOiBzdHJpbmcsIGRhdGE6IER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZyk6IElGb3JtQ29udHJvbCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woaWQsIFwiZ3JvdXBcIiwgZGF0YSk7XHJcbiAgICBkYXRhID0gY29udHJvbC5jb25maWc7XHJcbiAgICBkYXRhLm5hbWUgPSBkYXRhLm5hbWUgfHwgXCJcIjtcclxuICAgIHJldHVybiBjb250cm9sO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybUZpbGUoaWQ6IHN0cmluZywgZGF0YTogRHluYW1pY0ZpbGVVcGxvYWRNb2RlbENvbmZpZyk6IElGb3JtQ29udHJvbCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woaWQsIFwiZmlsZVwiLCBkYXRhKTtcclxuICAgIGRhdGEgPSBjb250cm9sLmNvbmZpZztcclxuICAgIGRhdGEuYWNjZXB0ID0gZGF0YS5hY2NlcHQgfHwgW1wianBnXCIsIFwianBlZ1wiLCBcInBuZ1wiXTtcclxuICAgIGRhdGEubXVsdGlwbGUgPSBkYXRhLm11bHRpcGxlIHx8IGZhbHNlO1xyXG4gICAgZGF0YS51cmwgPSBPYmplY3RVdGlscy5pc1N0cmluZyhkYXRhLnVybCkgPyBkYXRhLnVybCA6IFwiYXNzZXRzXCI7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm1Nb2R1bGVDb25maWcge1xyXG4gICAgY29udHJvbFByb3ZpZGVyPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gRHluYW1pY0Zvcm1Db250cm9sTWFwRm47XHJcbn1cclxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tbW9uLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE9BQU8sRUFLSCxXQUFXLEVBQ1gsWUFBWSxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFnRDFCLDhCQUE4QjtBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBVSxFQUFFLE1BQWlCO0lBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBb0Q7SUFDakYsT0FBTyxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFRLEVBQUU7UUFDOUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLElBQUksaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9HLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQThCO0lBQ3BELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBUSxFQUFFO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FB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TyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDNUIsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBVSxFQUFFLElBQWtDO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoRSxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljRmlsZVVwbG9hZE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sRXZlbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNYXBGbixcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljU2VsZWN0TW9kZWxDb25maWdcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSUFzeW5jTWVzc2FnZSxcclxuICAgIElPcGVuQXBpU2NoZW1hLFxyXG4gICAgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSxcclxuICAgIElSZXNvbHZlRmFjdG9yeSxcclxuICAgIE9iamVjdFV0aWxzLFxyXG4gICAgUmVmbGVjdFV0aWxzXHJcbn0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuXHJcbi8vIC0tLSBCYXNpYyBmb3JtIGNvbnRyb2wgaW50ZXJmYWNlcyAtLS1cclxuXHJcbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtU3RhdGUgPSBcIlZBTElEXCIgfCBcIklOVkFMSURcIiB8IFwiUEVORElOR1wiIHwgXCJESVNBQkxFRFwiIHwgXCJMT0FESU5HXCI7XHJcbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtVXBkYXRlT24gPSBcImNoYW5nZVwiIHwgXCJibHVyXCIgfCBcInN1Ym1pdFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm1FdmVudCBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbEV2ZW50IHtcclxuICAgIGZvcm06IElEeW5hbWljRm9ybTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm0ge1xyXG4gICAgc3RhdHVzOiBEeW5hbWljRm9ybVN0YXRlO1xyXG5cclxuICAgIG9uVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm1FdmVudD47XHJcbiAgICBvblN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcbiAgICBvblN1Ym1pdDogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcblxyXG4gICAgdmFsaWRhdGUoKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2VyaWFsaXplKHZhbGlkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZGVsVHlwZSBleHRlbmRzIEZ1bmN0aW9uIHtcclxuICAgIG5ldyAoY29uZmlnOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZyk6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtQ29udHJvbFNlcmlhbGl6ZXIgPSAobW9kZWw6IER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWw8YW55PiwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBQcm9taXNlPGFueT47XHJcbmV4cG9ydCB0eXBlIEZvcm1Nb2RlbEN1c3RvbWl6ZXIgPSAoXHJcbiAgICBwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSxcclxuICAgIG1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgY29uZmlnOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZywgaW5qZWN0b3I6IEluamVjdG9yXHJcbikgPT4gRHluYW1pY0Zvcm1Db250cm9sTW9kZWwgfCBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdO1xyXG5leHBvcnQgdHlwZSBGb3JtTW9kZWxDdXN0b21pemVyV3JhcCA9IChcclxuICAgIHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hLFxyXG4gICAgbW9kZWxUeXBlOiBNb2RlbFR5cGUsIGNvbmZpZzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWdcclxuKSA9PiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHR5cGU6IHN0cmluZztcclxuICAgIGNvbmZpZz86IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGb3JtSW5pdENvbnRyb2wgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2wge1xyXG4gICAgaW5pdGlhbGl6ZShjZHI/OiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgQXN5bmNTdWJtaXRNZXRob2QgPSAoZm9ybTogSUR5bmFtaWNGb3JtLCBjb250ZXh0PzogYW55KSA9PiBQcm9taXNlPElBc3luY01lc3NhZ2U+O1xyXG5cclxuLy8gLS0tIERlY29yYXRvciBmdW5jdGlvbnMgLS0tXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFNlcmlhbGl6ZXIoaWQ6IHN0cmluZywgcGFyZW50OiBGb3JtQXJyYXkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHBhcmVudC5nZXQoaWQpO1xyXG4gICAgcmV0dXJuICFjb250cm9sID8gbnVsbDogY29udHJvbC52YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1TZXJpYWxpemFibGUoc2VyaWFsaXplcj86IEZvcm1Db250cm9sU2VyaWFsaXplciB8IElSZXNvbHZlRmFjdG9yeSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJkeW5hbWljRm9ybVNlcmlhbGl6ZXJcIiwgc2VyaWFsaXplciB8fCBkZWZhdWx0U2VyaWFsaXplciwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUlucHV0KGRhdGE/OiBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBjb25zdCBtZXRhID0gUmVmbGVjdFV0aWxzLmdldE93bk1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IG1ldGEgPyBtZXRhLm5hbWUgOiBcIlwiO1xyXG4gICAgICAgIGxldCBpbnB1dFR5cGUgPSBwcm9wZXJ0eUtleS5pbmRleE9mKFwicGFzc3dvcmRcIikgPCAwID8gXCJ0ZXh0XCIgOiBcInBhc3N3b3JkXCI7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJOdW1iZXJcIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwibnVtYmVyXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIkJvb2xlYW5cIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwiY2hlY2tib3hcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQsIHByb3BlcnR5S2V5LCBjcmVhdGVGb3JtSW5wdXQocHJvcGVydHlLZXksIGRhdGEsIGlucHV0VHlwZSkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1TZWxlY3QoZGF0YT86IER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZzxhbnk+KTogUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGRlZmluZUZvcm1Db250cm9sKHRhcmdldCwgcHJvcGVydHlLZXksIGNyZWF0ZUZvcm1TZWxlY3QocHJvcGVydHlLZXksIGRhdGEpKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtU3RhdGljKGRhdGE/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQsIHByb3BlcnR5S2V5LCBjcmVhdGVGb3JtU3RhdGljKHByb3BlcnR5S2V5LCBkYXRhKSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybU1vZGVsKGRhdGE/OiBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcpOiBQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZGVmaW5lRm9ybUNvbnRyb2wodGFyZ2V0LCBwcm9wZXJ0eUtleSwgY3JlYXRlRm9ybU1vZGVsKHByb3BlcnR5S2V5LCBkYXRhKSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUZpbGUoZGF0YT86IER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcpOiBQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgZGVmaW5lRm9ybUNvbnRyb2wodGFyZ2V0LCBwcm9wZXJ0eUtleSwgY3JlYXRlRm9ybUZpbGUocHJvcGVydHlLZXksIGRhdGEpKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVGb3JtQ29udHJvbCh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgY29udHJvbDogSUZvcm1Db250cm9sKTogdm9pZCB7XHJcbiAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJkeW5hbWljRm9ybUNvbnRyb2xcIiwgY29udHJvbCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udHJvbCh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IElGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gUmVmbGVjdFV0aWxzLmdldE1ldGFkYXRhKFwiZHluYW1pY0Zvcm1Db250cm9sXCIsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVNlcmlhbGl6ZXIodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBGb3JtQ29udHJvbFNlcmlhbGl6ZXIgfCBJUmVzb2x2ZUZhY3Rvcnkge1xyXG4gICAgcmV0dXJuIFJlZmxlY3RVdGlscy5nZXRNZXRhZGF0YShcImR5bmFtaWNGb3JtU2VyaWFsaXplclwiLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1Db250cm9sKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgY29uZmlnPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uZmlnID0gY29uZmlnIHx8IHtpZH07XHJcbiAgICBjb25maWcuaWQgPSBpZDtcclxuICAgIGNvbmZpZy5sYWJlbCA9IE9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKGNvbmZpZy5sYWJlbCkgPyBpZCA6IGNvbmZpZy5sYWJlbDtcclxuICAgIGNvbmZpZy5kaXNhYmxlZCA9IGNvbmZpZy5kaXNhYmxlZCB8fCBmYWxzZTtcclxuICAgIGNvbmZpZy5oaWRkZW4gPSBjb25maWcuaGlkZGVuIHx8IGZhbHNlO1xyXG4gICAgcmV0dXJuIHtpZCwgdHlwZSwgY29uZmlnfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1JbnB1dChpZDogc3RyaW5nLCBjb25maWc6IER5bmFtaWNJbnB1dE1vZGVsQ29uZmlnLCB0eXBlOiBzdHJpbmcgPSBcInRleHRcIik6IElGb3JtQ29udHJvbCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlRm9ybUNvbnRyb2woaWQsIFwiaW5wdXRcIiwgY29uZmlnKTtcclxuICAgIGNvbmZpZyA9IGNvbnRyb2wuY29uZmlnO1xyXG4gICAgY29uZmlnLmlucHV0VHlwZSA9IGNvbmZpZy5pbnB1dFR5cGUgfHwgdHlwZTtcclxuICAgIGNvbmZpZy5wbGFjZWhvbGRlciA9IGNvbmZpZy5wbGFjZWhvbGRlciB8fCAoY29uZmlnLmlucHV0VHlwZSA9PSBcIm1hc2tcIiA/IFwiX1wiIDogXCJcIik7XHJcbiAgICBjb25maWcuc3RlcCA9IGNvbmZpZy5zdGVwIHx8IDE7XHJcbiAgICBjb25maWcubWFzayA9IGNvbmZpZy5tYXNrIHx8IG51bGw7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1TZWxlY3QoaWQ6IHN0cmluZywgZGF0YTogRHluYW1pY1NlbGVjdE1vZGVsQ29uZmlnPGFueT4pOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcInNlbGVjdFwiLCBkYXRhKTtcclxuICAgIGRhdGEgPSBjb250cm9sLmNvbmZpZztcclxuICAgIGRhdGEub3B0aW9ucyA9IGRhdGEub3B0aW9ucyB8fCBbXTtcclxuICAgIHJldHVybiBjb250cm9sO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybVN0YXRpYyhpZDogc3RyaW5nLCBjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnKTogSUZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiBjcmVhdGVGb3JtQ29udHJvbChpZCwgXCJzdGF0aWNcIiwgY29uZmlnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1Nb2RlbChpZDogc3RyaW5nLCBkYXRhOiBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcImdyb3VwXCIsIGRhdGEpO1xyXG4gICAgZGF0YSA9IGNvbnRyb2wuY29uZmlnO1xyXG4gICAgZGF0YS5uYW1lID0gZGF0YS5uYW1lIHx8IFwiXCI7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1GaWxlKGlkOiBzdHJpbmcsIGRhdGE6IER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcpOiBJRm9ybUNvbnRyb2wge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUZvcm1Db250cm9sKGlkLCBcImZpbGVcIiwgZGF0YSk7XHJcbiAgICBkYXRhID0gY29udHJvbC5jb25maWc7XHJcbiAgICBkYXRhLmFjY2VwdCA9IGRhdGEuYWNjZXB0IHx8IFtcImpwZ1wiLCBcImpwZWdcIiwgXCJwbmdcIl07XHJcbiAgICBkYXRhLm11bHRpcGxlID0gZGF0YS5tdWx0aXBsZSB8fCBmYWxzZTtcclxuICAgIGRhdGEudXJsID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcoZGF0YS51cmwpID8gZGF0YS51cmwgOiBcImFzc2V0c1wiO1xyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtTW9kdWxlQ29uZmlnIHtcclxuICAgIGNvbnRyb2xQcm92aWRlcj86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IER5bmFtaWNGb3JtQ29udHJvbE1hcEZuO1xyXG59XHJcbiJdfQ==
@@ -1,15 +1,17 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChildren } from "@angular/core";
2
- import { DynamicFormArrayComponent, DynamicFormControlContainerComponent, DynamicFormGroupModel, DynamicFormValueControlModel } from "@ng-dynamic-forms/core";
2
+ import { DynamicFormArrayComponent, DynamicFormGroupModel, DynamicFormValueControlModel } from "@ng-dynamic-forms/core";
3
3
  import { DynamicFormArrayModel } from "../../utils/dynamic-form-array.model";
4
4
  import { collectPathAble } from "../../utils/misc";
5
+ import { DynamicBaseFormControlContainerComponent } from "./dynamic-base-form-control-container.component";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@ng-dynamic-forms/core";
8
+ import * as i2 from "./dynamic-base-form.component";
7
9
  export class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent {
8
- constructor(layoutService, validationService, injector) {
10
+ constructor(layoutService, validationService, form, injector, cdr) {
9
11
  super(layoutService, validationService);
10
- this.layoutService = layoutService;
11
- this.validationService = validationService;
12
+ this.form = form;
12
13
  this.injector = injector;
14
+ this.cdr = cdr;
13
15
  this.blur = new EventEmitter();
14
16
  this.change = new EventEmitter();
15
17
  this.customEvent = new EventEmitter();
@@ -18,14 +20,24 @@ export class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent {
18
20
  get useTabs() {
19
21
  return this.model?.useTabs;
20
22
  }
23
+ initialize(cdr) {
24
+ this.subscription = this.model.filteredGroups.subscribe(filteredGroups => {
25
+ this.updateGroups(filteredGroups);
26
+ });
27
+ this.model.initialize(this.array);
28
+ }
29
+ ngOnDestroy() {
30
+ if (this.subscription)
31
+ this.subscription.unsubscribe();
32
+ }
21
33
  saveTab(index) {
22
- this.model.saveTab(index, this.model, this.injector);
34
+ this.model.saveTab(index, this.model.getFiltered(index), this.model, this.injector);
23
35
  }
24
36
  restoreTab() {
25
37
  return this.model.restoreTab(this.model, this.injector);
26
38
  }
27
- getTabLabel(index) {
28
- return this.model.getTabLabel(index, this.model, this.array, this.injector);
39
+ getTabLabel(index, model) {
40
+ return this.model.getTabLabel(index, model, this.model, this.array, this.injector);
29
41
  }
30
42
  getClass(context, place, model) {
31
43
  return [
@@ -53,9 +65,13 @@ export class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent {
53
65
  }
54
66
  return null;
55
67
  }
68
+ updateGroups(filteredGroups) {
69
+ this.cdr.detectChanges();
70
+ this.components.forEach(t => t.cdr.detectChanges());
71
+ }
56
72
  }
57
- DynamicBaseFormArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, deps: [{ token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
58
- DynamicBaseFormArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormArrayComponent, selector: "dynamic-base-form-array", inputs: { formLayout: "formLayout", group: "group", layout: "layout", model: "model", templates: "templates" }, outputs: { blur: "blur", change: "change", customEvent: "customEvent", focus: "focus" }, viewQueries: [{ propertyName: "components", predicate: i0.forwardRef(function () { return DynamicFormControlContainerComponent; }), descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ DynamicBaseFormArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, deps: [{ token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }, { token: i2.DynamicBaseFormComponent }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
74
+ DynamicBaseFormArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormArrayComponent, selector: "dynamic-base-form-array", inputs: { formLayout: "formLayout", group: "group", layout: "layout", model: "model", templates: "templates" }, outputs: { blur: "blur", change: "change", customEvent: "customEvent", focus: "focus" }, viewQueries: [{ propertyName: "components", predicate: i0.forwardRef(function () { return DynamicBaseFormControlContainerComponent; }), descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, decorators: [{
60
76
  type: Component,
61
77
  args: [{
@@ -63,7 +79,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
63
79
  template: "",
64
80
  changeDetection: ChangeDetectionStrategy.OnPush
65
81
  }]
66
- }], ctorParameters: function () { return [{ type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }, { type: i0.Injector }]; }, propDecorators: { formLayout: [{
82
+ }], ctorParameters: function () { return [{ type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }, { type: i2.DynamicBaseFormComponent }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formLayout: [{
67
83
  type: Input
68
84
  }], group: [{
69
85
  type: Input
@@ -83,6 +99,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
83
99
  type: Output
84
100
  }], components: [{
85
101
  type: ViewChildren,
86
- args: [forwardRef(() => DynamicFormControlContainerComponent)]
102
+ args: [forwardRef(() => DynamicBaseFormControlContainerComponent)]
87
103
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tYXJyYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWFycmF5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsb0NBQW9DLEVBTXBDLHFCQUFxQixFQUlyQiw0QkFBNEIsRUFFL0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEseUJBQXlCO0lBb0J4RSxZQUFzQixhQUF1QyxFQUN2QyxpQkFBK0MsRUFDL0MsUUFBa0I7UUFFcEMsS0FBSyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBSnRCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQThCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQVU7UUFkOUIsU0FBSSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxnQkFBVyxHQUFnRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlFLFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQWN4RCxDQUFDO0lBVEQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FB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Q0FBQyxHQUFHLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbEN1c3RvbUV2ZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0Q29udGV4dCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbExheW91dFBsYWNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5TW9kZWx9IGZyb20gXCIuLi8uLi91dGlscy9keW5hbWljLWZvcm0tYXJyYXkubW9kZWxcIjtcclxuaW1wb3J0IHtjb2xsZWN0UGF0aEFibGV9IGZyb20gXCIuLi8uLi91dGlscy9taXNjXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtLWFycmF5XCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQmFzZUZvcm1BcnJheUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtQXJyYXlDb21wb25lbnQge1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm1MYXlvdXQ6IER5bmFtaWNGb3JtTGF5b3V0O1xyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0O1xyXG4gICAgQElucHV0KCkgbW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbDtcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY3VzdG9tRXZlbnQ6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xDdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQpKVxyXG4gICAgY29tcG9uZW50czogUXVlcnlMaXN0PER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudD47XHJcblxyXG4gICAgZ2V0IHVzZVRhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw/LnVzZVRhYnM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxheW91dFNlcnZpY2U6IER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uU2VydmljZTogRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHJcbiAgICAgICAgc3VwZXIobGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubW9kZWwuc2F2ZVRhYihpbmRleCwgdGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZVRhYigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnJlc3RvcmVUYWIodGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFiTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwuZ2V0VGFiTGFiZWwoaW5kZXgsIHRoaXMubW9kZWwsIHRoaXMuYXJyYXksIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENsYXNzKGNvbnRleHQ6IER5bmFtaWNGb3JtQ29udHJvbExheW91dENvbnRleHQsIHBsYWNlOiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXRQbGFjZSwgbW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgY29udGV4dCA9PSBcImVsZW1lbnRcIiA/IHRoaXMuZ2V0TW9kZWxDbGFzcyhtb2RlbCkgOiBudWxsLFxyXG4gICAgICAgICAgICBjb250ZXh0ID09IFwiZWxlbWVudFwiID8gdGhpcy5nZXRBZGRpdGlvbmFsQ2xhc3MobW9kZWwpIDogbnVsbCxcclxuICAgICAgICAgICAgc3VwZXIuZ2V0Q2xhc3MoY29udGV4dCwgcGxhY2UsIG1vZGVsKSxcclxuICAgICAgICAgICAgbW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsID8gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcyA6IG51bGxcclxuICAgICAgICBdLmZpbHRlcihjbHMgPT4gISFjbHMpLmpvaW4oXCIgXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRNb2RlbENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gY29sbGVjdFBhdGhBYmxlKG1vZGVsLCBwID0+IHAuaWQpO1xyXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT0gMCkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgZm9ybS1ncm91cC0ke3BhcnRzLmpvaW4oXCItXCIpfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgZm9ybS1jb250cm9sLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0QWRkaXRpb25hbENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tYXJyYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWFycmF5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDSCx5QkFBeUIsRUFPekIscUJBQXFCLEVBSXJCLDRCQUE0QixFQUUvQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBNkIscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHakQsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0saURBQWlELENBQUM7Ozs7QUFPekcsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHlCQUF5QjtJQXNCeEUsWUFBWSxhQUF1QyxFQUFFLGlCQUErQyxFQUMvRSxJQUE4QixFQUFXLFFBQWtCLEVBQVcsR0FBc0I7UUFDN0csS0FBSyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFXLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZnZHLFNBQUksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QyxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsZ0JBQVcsR0FBZ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5RSxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFjeEQsQ0FBQztJQVRELElB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Q0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLFlBQVksQ0FBQyxjQUF5RDtRQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzBIQWxGUSw2QkFBNkI7OEdBQTdCLDZCQUE2QiwwVUFhUCx3Q0FBd0MsMkVBaEI3RCxFQUFFOzJGQUdILDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7d1BBR1ksVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7bGFzdFZhbHVlRnJvbSwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbEN1c3RvbUV2ZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0Q29udGV4dCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbExheW91dFBsYWNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbCwgRHluYW1pY0Zvcm1BcnJheU1vZGVsfSBmcm9tIFwiLi4vLi4vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7Y29sbGVjdFBhdGhBYmxlfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWlzY1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtSW5pdENvbnRyb2x9IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybS1hcnJheVwiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Jhc2VGb3JtQXJyYXlDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUFycmF5Q29tcG9uZW50IGltcGxlbWVudHMgRHluYW1pY0Zvcm1Jbml0Q29udHJvbCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBASW5wdXQoKSBmb3JtTGF5b3V0OiBEeW5hbWljRm9ybUxheW91dDtcclxuICAgIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBsYXlvdXQ6IER5bmFtaWNGb3JtQ29udHJvbExheW91dDtcclxuICAgIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWw7XHJcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGN1c3RvbUV2ZW50OiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBAVmlld0NoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCkpXHJcbiAgICBjb21wb25lbnRzOiBRdWVyeUxpc3Q8RHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudD47XHJcblxyXG4gICAgZ2V0IHVzZVRhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw/LnVzZVRhYnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGxheW91dFNlcnZpY2U6IER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBmb3JtOiBEeW5hbWljQmFzZUZvcm1Db21wb25lbnQsIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciwgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHN1cGVyKGxheW91dFNlcnZpY2UsIHZhbGlkYXRpb25TZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMubW9kZWwuZmlsdGVyZWRHcm91cHMuc3Vic2NyaWJlKGZpbHRlcmVkR3JvdXBzID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVHcm91cHMoZmlsdGVyZWRHcm91cHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kZWwuaW5pdGlhbGl6ZSh0aGlzLmFycmF5KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pXHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVRhYihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zYXZlVGFiKGluZGV4LCB0aGlzLm1vZGVsLmdldEZpbHRlcmVkKGluZGV4KSwgdGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZVRhYigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnJlc3RvcmVUYWIodGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFiTGFiZWwoaW5kZXg6IG51bWJlciwgbW9kZWw6IER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5nZXRUYWJMYWJlbChpbmRleCwgbW9kZWwsIHRoaXMubW9kZWwsIHRoaXMuYXJyYXksIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENsYXNzKGNvbnRleHQ6IER5bmFtaWNGb3JtQ29udHJvbExheW91dENvbnRleHQsIHBsYWNlOiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXRQbGFjZSwgbW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgY29udGV4dCA9PSBcImVsZW1lbnRcIiA/IHRoaXMuZ2V0TW9kZWxDbGFzcyhtb2RlbCkgOiBudWxsLFxyXG4gICAgICAgICAgICBjb250ZXh0ID09IFwiZWxlbWVudFwiID8gdGhpcy5nZXRBZGRpdGlvbmFsQ2xhc3MobW9kZWwpIDogbnVsbCxcclxuICAgICAgICAgICAgc3VwZXIuZ2V0Q2xhc3MoY29udGV4dCwgcGxhY2UsIG1vZGVsKSxcclxuICAgICAgICAgICAgbW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsID8gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcyA6IG51bGxcclxuICAgICAgICBdLmZpbHRlcihjbHMgPT4gISFjbHMpLmpvaW4oXCIgXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRNb2RlbENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gY29sbGVjdFBhdGhBYmxlKG1vZGVsLCBwID0+IHAuaWQpO1xyXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT0gMCkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgZm9ybS1ncm91cC0ke3BhcnRzLmpvaW4oXCItXCIpfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgZm9ybS1jb250cm9sLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0QWRkaXRpb25hbENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUdyb3VwcyhmaWx0ZXJlZEdyb3VwczogUmVhZG9ubHlBcnJheTxEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbD4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmZvckVhY2godCA9PiB0LmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -2,19 +2,15 @@ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Host
2
2
  import { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DynamicFormControlContainerComponent, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
3
3
  import { ObjectUtils } from "@stemy/ngx-utils";
4
4
  import { collectPathAble } from "../../utils/misc";
5
+ import { DynamicFormArrayGroupModel } from "../../utils/dynamic-form-array.model";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "./dynamic-base-form.component";
7
8
  import * as i2 from "@ng-dynamic-forms/core";
8
9
  export class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent {
9
- constructor(form, changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService) {
10
- super(changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService);
10
+ constructor(form, cdr, cfr, layoutService, validationService, componentService, relationService) {
11
+ super(cdr, cfr, layoutService, validationService, componentService, relationService);
11
12
  this.form = form;
12
- this.changeDetectorRef = changeDetectorRef;
13
- this.componentFactoryResolver = componentFactoryResolver;
14
- this.layoutService = layoutService;
15
- this.validationService = validationService;
16
- this.componentService = componentService;
17
- this.relationService = relationService;
13
+ this.cdr = cdr;
18
14
  this.context = null;
19
15
  this.blur = new EventEmitter();
20
16
  this.change = new EventEmitter();
@@ -37,11 +33,9 @@ export class DynamicBaseFormControlContainerComponent extends DynamicFormControl
37
33
  return this.form.formService;
38
34
  }
39
35
  ngOnInit() {
40
- this.onDetectChanges = this.formService.onDetectChanges.subscribe(form => {
41
- if (form !== this.form)
42
- return;
36
+ super.ngOnInit();
37
+ this.onDetectChanges = this.form.onDetectChanges.subscribe(() => {
43
38
  this.changeDetectorRef.detectChanges();
44
- this.formService.updateSelectOptions(this.model, this.control, this.form.model);
45
39
  });
46
40
  }
47
41
  ngOnDestroy() {
@@ -57,25 +51,47 @@ export class DynamicBaseFormControlContainerComponent extends DynamicFormControl
57
51
  }
58
52
  return label.join(".");
59
53
  }
54
+ getLabelIcon() {
55
+ if (this.context instanceof DynamicFormArrayGroupModel) {
56
+ const arrayModel = this.context.context;
57
+ if (arrayModel && arrayModel.sortBy == this.model.id) {
58
+ return arrayModel.sortOrder;
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+ clickLabel() {
64
+ if (this.context instanceof DynamicFormArrayGroupModel) {
65
+ const arrayModel = this.context.context;
66
+ if (arrayModel) {
67
+ arrayModel.sortBy = this.model.id;
68
+ }
69
+ }
70
+ }
60
71
  createFormControlComponent() {
61
72
  super.createFormControlComponent();
62
73
  const component = this.componentRef?.instance;
63
- if (!component || !ObjectUtils.isFunction(component.onCreated))
74
+ if (!component || !ObjectUtils.isFunction(component.initialize))
64
75
  return;
65
- component.onCreated();
76
+ component.initialize(this.changeDetectorRef);
66
77
  }
67
78
  getComponentType(model) {
68
79
  return null;
69
80
  }
70
81
  }
71
82
  DynamicBaseFormControlContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlContainerComponent, deps: [{ token: i1.DynamicBaseFormComponent }, { token: i0.ChangeDetectorRef }, { token: i0.ComponentFactoryResolver }, { token: i2.DynamicFormLayoutService }, { token: i2.DynamicFormValidationService }, { token: i2.DynamicFormComponentService }, { token: i2.DynamicFormRelationService }], target: i0.ɵɵFactoryTarget.Component });
72
- DynamicBaseFormControlContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormControlContainerComponent, selector: "dynamic-base-form-control", inputs: { context: "context", group: "group", hostClass: "hostClass", inputTemplateList: ["templates", "inputTemplateList"], layout: "layout", model: "model" }, outputs: { blur: "blur", change: "change", focus: "focus" }, host: { properties: { "class": "this.klass" } }, queries: [{ propertyName: "contentTemplateList", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "componentViewContainerRef", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
+ DynamicBaseFormControlContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormControlContainerComponent, selector: "dynamic-base-form-control", inputs: { context: "context", group: "group", hostClass: "hostClass", inputTemplateList: ["templates", "inputTemplateList"], layout: "layout", model: "model" }, outputs: { blur: "blur", change: "change", focus: "focus" }, host: { properties: { "class": "this.klass" } }, providers: [
84
+ { provide: DynamicFormControlContainerComponent, useExisting: DynamicBaseFormControlContainerComponent }
85
+ ], queries: [{ propertyName: "contentTemplateList", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "componentViewContainerRef", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlContainerComponent, decorators: [{
74
87
  type: Component,
75
88
  args: [{
76
89
  selector: "dynamic-base-form-control",
77
90
  template: "",
78
- changeDetection: ChangeDetectionStrategy.OnPush
91
+ changeDetection: ChangeDetectionStrategy.OnPush,
92
+ providers: [
93
+ { provide: DynamicFormControlContainerComponent, useExisting: DynamicBaseFormControlContainerComponent }
94
+ ]
79
95
  }]
80
96
  }], ctorParameters: function () { return [{ type: i1.DynamicBaseFormComponent }, { type: i0.ChangeDetectorRef }, { type: i0.ComponentFactoryResolver }, { type: i2.DynamicFormLayoutService }, { type: i2.DynamicFormValidationService }, { type: i2.DynamicFormComponentService }, { type: i2.DynamicFormRelationService }]; }, propDecorators: { contentTemplateList: [{
81
97
  type: ContentChildren,
@@ -104,6 +120,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
104
120
  type: Output
105
121
  }], componentViewContainerRef: [{
106
122
  type: ViewChild,
107
- args: ["componentViewContainer", { read: ViewContainerRef, static: true }]
123
+ args: ["componentViewContainer", {
124
+ read: ViewContainerRef,
125
+ static: true
126
+ }]
108
127
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNILCtCQUErQixFQUkvQixvQ0FBb0MsRUFPcEMsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQVNqRCxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsb0NBQW9DO0lBeUM5RixZQUFxQixJQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGFBQXVDLEVBQ3ZDLGlCQUErQyxFQUMvQyxnQkFBNkMsRUFDN0MsZUFBMkM7UUFDNUQsS0FBSyxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQVB2RyxTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBOEI7UUFDL0MscUJBQWdCLEdBQWhC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SSxDQUFDLFNBQVMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU87UUFDdkUsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUE4QjtRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOztxSUFsRlEsd0NBQXdDO3lIQUF4Qyx3Q0FBd0Msb1hBRWhDLHdCQUF3Qiw2SUFlRyxnQkFBZ0Isa0VBcEJsRCxFQUFFOzJGQUdILHdDQUF3QztrQkFMcEQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7MlZBRzhDLG1CQUFtQjtzQkFBN0QsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBRW5CLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFFWCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ2MsaUJBQWlCO3NCQUFwQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ1QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFFc0UseUJBQXlCO3NCQUFyRyxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBUeXBlLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Rm9ybUdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0FSUkFZLFxyXG4gICAgRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2wsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVJlbGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmVcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtPbkNyZWF0ZWRGb3JtQ29udHJvbH0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2NvbGxlY3RQYXRoQWJsZX0gZnJvbSBcIi4uLy4uL3V0aWxzL21pc2NcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2xcIixcclxuICAgIHRlbXBsYXRlOiBcIlwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlKSBjb250ZW50VGVtcGxhdGVMaXN0OiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBrbGFzcztcclxuXHJcbiAgICBASW5wdXQoKSBjb250ZXh0OiBEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbCB8IG51bGwgPSBudWxsO1xyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGhvc3RDbGFzczogc3RyaW5nW107XHJcbiAgICBASW5wdXQoXCJ0ZW1wbGF0ZXNcIikgaW5wdXRUZW1wbGF0ZUxpc3Q6IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+O1xyXG4gICAgQElucHV0KCkgbGF5b3V0OiBEeW5hbWljRm9ybUxheW91dDtcclxuICAgIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBmb2N1czogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImNvbXBvbmVudFZpZXdDb250YWluZXJcIiwge3JlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZX0pIGNvbXBvbmVudFZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRGV0ZWN0Q2hhbmdlczogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGdldCBjb21wb25lbnRUeXBlKCk6IFR5cGU8RHluYW1pY0Zvcm1Db250cm9sPiB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2V0Q3VzdG9tQ29tcG9uZW50VHlwZSh0aGlzLm1vZGVsKSA/PyB0aGlzLmdldENvbXBvbmVudFR5cGUodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0YXJ0VGVtcGxhdGUoKTogRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kZWwudHlwZSA9PSBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0FSUkFZKVxyXG4gICAgICAgICAgICA/IHRoaXMubGF5b3V0U2VydmljZS5nZXRBbGlnbmVkVGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMsIFwiQVJSQVlfU1RBUlRcIiBhcyBhbnkpXHJcbiAgICAgICAgICAgIDogdGhpcy5sYXlvdXRTZXJ2aWNlLmdldFN0YXJ0VGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlbmRUZW1wbGF0ZSgpOiBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC50eXBlID09IERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQVJSQVkpXHJcbiAgICAgICAgICAgID8gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEFsaWduZWRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcywgXCJBUlJBWV9FTkRcIiBhcyBhbnkpXHJcbiAgICAgICAgICAgIDogdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEVuZFRlbXBsYXRlKHRoaXMubW9kZWwsIHRoaXMudGVtcGxhdGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZm9ybVNlcnZpY2UoKTogRHluYW1pY0Zvcm1TZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmZvcm1TZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZvcm06IER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgbGF5b3V0U2VydmljZTogRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdmFsaWRhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBjb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSByZWxhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtUmVsYXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3JSZWYsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgbGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UsIGNvbXBvbmVudFNlcnZpY2UsIHJlbGF0aW9uU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMgPSB0aGlzLmZvcm1TZXJ2aWNlLm9uRGV0ZWN0Q2hhbmdlcy5zdWJzY3JpYmUoZm9ybSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtICE9PSB0aGlzLmZvcm0pIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlU2VsZWN0T3B0aW9ucyh0aGlzLm1vZGVsLCB0aGlzLmNvbnRyb2wsIHRoaXMuZm9ybS5tb2RlbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExhYmVsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBjb2xsZWN0UGF0aEFibGUodGhpcy5tb2RlbCwgcCA9PiBwLmxhYmVsKTtcclxuICAgICAgICBpZiAobGFiZWwubGVuZ3RoID09IDApIHJldHVybiBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm0/LmxhYmVsUHJlZml4KSB7XHJcbiAgICAgICAgICAgIGxhYmVsLnVuc2hpZnQodGhpcy5mb3JtLmxhYmVsUHJlZml4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsLmpvaW4oXCIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpIHtcclxuICAgICAgICBzdXBlci5jcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSBhcyBPbkNyZWF0ZWRGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudCB8fCAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihjb21wb25lbnQub25DcmVhdGVkKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbXBvbmVudC5vbkNyZWF0ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Q29tcG9uZW50VHlwZShtb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBUeXBlPER5bmFtaWNGb3JtQ29udHJvbD4gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNILCtCQUErQixFQUcvQixvQ0FBb0MsRUFPcEMsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQVloRixNQUFNLE9BQU8sd0NBQXlDLFNBQVEsb0NBQW9DO0lBNEM5RixZQUFxQixJQUE4QixFQUM5QixHQUFzQixFQUMvQixHQUE2QixFQUM3QixhQUF1QyxFQUN2QyxpQkFBK0MsRUFDL0MsZ0JBQTZDLEVBQzdDLGVBQTJDO1FBQ25ELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQVBwRSxTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXZDbEMsWUFBTyxHQUFzQyxJQUFJLENBQUM7UUFPakQsU0FBSSxHQUEwQyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUMxRixXQUFN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QU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBS0oseUJBQXlCO3NCQUgzQixTQUFTO3VCQUFDLHdCQUF3QixFQUFFO3dCQUNqQyxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixNQUFNLEVBQUUsSUFBSTtxQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFR5cGUsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICAgIERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQVJSQVksXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2wsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVJlbGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmVcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtEeW5hbWljRm9ybUluaXRDb250cm9sfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7Y29sbGVjdFBhdGhBYmxlfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWlzY1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsfSBmcm9tIFwiLi4vLi4vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybS1jb250cm9sXCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge3Byb3ZpZGU6IER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IER5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnR9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQmFzZUZvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50IHtcclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSkgY29udGVudFRlbXBsYXRlTGlzdDogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikga2xhc3M7XHJcblxyXG4gICAgQElucHV0KCkgY29udGV4dDogRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwgfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBob3N0Q2xhc3M6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KFwidGVtcGxhdGVzXCIpIGlucHV0VGVtcGxhdGVMaXN0OiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1MYXlvdXQ7XHJcbiAgICBASW5wdXQoKSBtb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWw7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJjb21wb25lbnRWaWV3Q29udGFpbmVyXCIsIHtcclxuICAgICAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHN0YXRpYzogdHJ1ZVxyXG4gICAgfSkgY29tcG9uZW50Vmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgICBnZXQgY29tcG9uZW50VHlwZSgpOiBUeXBlPER5bmFtaWNGb3JtQ29udHJvbD4gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdldEN1c3RvbUNvbXBvbmVudFR5cGUodGhpcy5tb2RlbCkgPz8gdGhpcy5nZXRDb21wb25lbnRUeXBlKHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzdGFydFRlbXBsYXRlKCk6IER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsLnR5cGUgPT0gRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9BUlJBWSlcclxuICAgICAgICAgICAgPyB0aGlzLmxheW91dFNlcnZpY2UuZ2V0QWxpZ25lZFRlbXBsYXRlKHRoaXMubW9kZWwsIHRoaXMudGVtcGxhdGVzLCBcIkFSUkFZX1NUQVJUXCIgYXMgYW55KVxyXG4gICAgICAgICAgICA6IHRoaXMubGF5b3V0U2VydmljZS5nZXRTdGFydFRlbXBsYXRlKHRoaXMubW9kZWwsIHRoaXMudGVtcGxhdGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZW5kVGVtcGxhdGUoKTogRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kZWwudHlwZSA9PSBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0FSUkFZKVxyXG4gICAgICAgICAgICA/IHRoaXMubGF5b3V0U2VydmljZS5nZXRBbGlnbmVkVGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMsIFwiQVJSQVlfRU5EXCIgYXMgYW55KVxyXG4gICAgICAgICAgICA6IHRoaXMubGF5b3V0U2VydmljZS5nZXRFbmRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvcm1TZXJ2aWNlKCk6IER5bmFtaWNGb3JtU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5mb3JtU2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EZXRlY3RDaGFuZ2VzOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybTogRHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICAgIGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICAgICAgbGF5b3V0U2VydmljZTogRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWxhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtUmVsYXRpb25TZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBjZnIsIGxheW91dFNlcnZpY2UsIHZhbGlkYXRpb25TZXJ2aWNlLCBjb21wb25lbnRTZXJ2aWNlLCByZWxhdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMgPSB0aGlzLmZvcm0ub25EZXRlY3RDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gY29sbGVjdFBhdGhBYmxlKHRoaXMubW9kZWwsIHAgPT4gcC5sYWJlbCk7XHJcbiAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCA9PSAwKSByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAodGhpcy5mb3JtPy5sYWJlbFByZWZpeCkge1xyXG4gICAgICAgICAgICBsYWJlbC51bnNoaWZ0KHRoaXMuZm9ybS5sYWJlbFByZWZpeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsYWJlbC5qb2luKFwiLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYWJlbEljb24oKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5jb250ZXh0IGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyYXlNb2RlbCA9IHRoaXMuY29udGV4dC5jb250ZXh0O1xyXG4gICAgICAgICAgICBpZiAoYXJyYXlNb2RlbCAmJiBhcnJheU1vZGVsLnNvcnRCeSA9PSB0aGlzLm1vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlNb2RlbC5zb3J0T3JkZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tMYWJlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jb250ZXh0IGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyYXlNb2RlbCA9IHRoaXMuY29udGV4dC5jb250ZXh0O1xyXG4gICAgICAgICAgICBpZiAoYXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgYXJyYXlNb2RlbC5zb3J0QnkgPSB0aGlzLm1vZGVsLmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpIHtcclxuICAgICAgICBzdXBlci5jcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSBhcyBEeW5hbWljRm9ybUluaXRDb250cm9sO1xyXG4gICAgICAgIGlmICghY29tcG9uZW50IHx8ICFPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGNvbXBvbmVudC5pbml0aWFsaXplKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbXBvbmVudC5pbml0aWFsaXplKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRDb21wb25lbnRUeXBlKG1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IFR5cGU8RHluYW1pY0Zvcm1Db250cm9sPiB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -3,14 +3,15 @@ import { DynamicFormControlComponent } from "@ng-dynamic-forms/core";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@ng-dynamic-forms/core";
5
5
  export class DynamicBaseFormControlComponent extends DynamicFormControlComponent {
6
- constructor(layoutService, validationService) {
6
+ constructor(cdr, layoutService, validationService) {
7
7
  super(layoutService, validationService);
8
+ this.cdr = cdr;
8
9
  this.blur = new EventEmitter();
9
10
  this.change = new EventEmitter();
10
11
  this.focus = new EventEmitter();
11
12
  }
12
13
  }
13
- DynamicBaseFormControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlComponent, deps: [{ token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }], target: i0.ɵɵFactoryTarget.Component });
14
+ DynamicBaseFormControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }], target: i0.ɵɵFactoryTarget.Component });
14
15
  DynamicBaseFormControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormControlComponent, selector: "dynamic-base-form-control", inputs: { formLayout: "formLayout", group: "group", layout: "layout", model: "model" }, outputs: { blur: "blur", change: "change", focus: "focus" }, usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlComponent, decorators: [{
16
17
  type: Component,
@@ -19,7 +20,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
19
20
  template: "",
20
21
  changeDetection: ChangeDetectionStrategy.OnPush
21
22
  }]
22
- }], ctorParameters: function () { return [{ type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }]; }, propDecorators: { formLayout: [{
23
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }]; }, propDecorators: { formLayout: [{
23
24
  type: Input
24
25
  }], group: [{
25
26
  type: Input
@@ -34,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
34
35
  }], focus: [{
35
36
  type: Output
36
37
  }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Jhc2UvZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQ0gsMkJBQTJCLEVBTTlCLE1BQU0sd0JBQXdCLENBQUM7OztBQU9oQyxNQUFNLE9BQU8sK0JBQW1FLFNBQVEsMkJBQTJCO0lBVy9HLFlBQVksYUFBdUMsRUFBRSxpQkFBK0M7UUFDaEcsS0FBSyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pDLENBQUM7OzRIQWhCUSwrQkFBK0I7Z0hBQS9CLCtCQUErQiw2T0FIOUIsRUFBRTsyRkFHSCwrQkFBK0I7a0JBTDNDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzBKQUdZLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sQ29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2VcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybS1jb250cm9sXCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQmFzZUZvcm1Db250cm9sQ29tcG9uZW50PFQgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbD4gZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2xDb21wb25lbnQge1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm1MYXlvdXQ6IER5bmFtaWNGb3JtTGF5b3V0O1xyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0O1xyXG4gICAgQElucHV0KCkgbW9kZWw6IFQ7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGxheW91dFNlcnZpY2U6IER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihsYXlvdXRTZXJ2aWNlLCB2YWxpZGF0aW9uU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5ibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgICAgICB0aGlzLmZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Jhc2UvZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUNILDJCQUEyQixFQU05QixNQUFNLHdCQUF3QixDQUFDOzs7QUFPaEMsTUFBTSxPQUFPLCtCQUFtRSxTQUFRLDJCQUEyQjtJQVcvRyxZQUFxQixHQUFzQixFQUFFLGFBQXVDLEVBQUUsaUJBQStDO1FBQ2pJLEtBQUssQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUR2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUV2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUN6QyxDQUFDOzs0SEFoQlEsK0JBQStCO2dIQUEvQiwrQkFBK0IsNk9BSDlCLEVBQUU7MkZBR0gsK0JBQStCO2tCQUwzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDswTEFHWSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLFxyXG4gICAgRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZVxyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2xcIixcclxuICAgIHRlbXBsYXRlOiBcIlwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb21wb25lbnQ8VCBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsPiBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbENvbXBvbmVudCB7XHJcblxyXG4gICAgQElucHV0KCkgZm9ybUxheW91dDogRHluYW1pY0Zvcm1MYXlvdXQ7XHJcbiAgICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gICAgQElucHV0KCkgbGF5b3V0OiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQ7XHJcbiAgICBASW5wdXQoKSBtb2RlbDogVDtcclxuXHJcbiAgICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgIEBPdXRwdXQoKSBmb2N1czogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgbGF5b3V0U2VydmljZTogRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLCB2YWxpZGF0aW9uU2VydmljZTogRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGxheW91dFNlcnZpY2UsIHZhbGlkYXRpb25TZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgICAgICB0aGlzLmNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgICAgIHRoaXMuZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, QueryList, ViewChild, ViewChildren } from "@angular/core";
2
2
  import { NgForm } from "@angular/forms";
3
- import { Subscription } from "rxjs";
3
+ import { debounceTime, groupBy, mergeMap, Subscription } from "rxjs";
4
4
  import { first } from "rxjs/operators";
5
5
  import { DynamicFormComponent, DynamicFormGroupModel, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
6
6
  import { EventsService, ObservableUtils } from "@stemy/ngx-utils";
@@ -21,6 +21,7 @@ export class DynamicBaseFormComponent extends DynamicFormComponent {
21
21
  this.onValueChange = new EventEmitter();
22
22
  this.onStatusChange = new EventEmitter();
23
23
  this.onSubmit = new EventEmitter();
24
+ this.onDetectChanges = new EventEmitter();
24
25
  this.templates = new QueryList();
25
26
  this.subscription = new Subscription();
26
27
  this.groupSubscription = new Subscription();
@@ -34,9 +35,11 @@ export class DynamicBaseFormComponent extends DynamicFormComponent {
34
35
  if (this.group) {
35
36
  this.groupSubscription = ObservableUtils.multiSubscription(this.group.statusChanges.subscribe(() => {
36
37
  this.onStatusChange.emit(this);
37
- }), this.group.valueChanges.subscribe(() => {
38
- this.formService.notifyChanges(this.model, this.group, this.model);
39
- }), this.change.subscribe(ev => {
38
+ }), this.group.valueChanges.pipe(debounceTime(500)).subscribe(() => {
39
+ this.formService.notifyChanges(this.model, this.group);
40
+ }), this.change.pipe(groupBy(ev => ev.model))
41
+ .pipe(mergeMap(t => t.pipe(debounceTime(500))))
42
+ .subscribe(ev => {
40
43
  this.onValueChange.emit({ ...ev, form: this });
41
44
  }));
42
45
  }
@@ -49,6 +52,7 @@ export class DynamicBaseFormComponent extends DynamicFormComponent {
49
52
  this.templates.reset(templates);
50
53
  }
51
54
  }), this.events.languageChanged.subscribe(() => {
55
+ this.formService.notifyChanges(this.model, this.group);
52
56
  this.formService.detectChanges(this);
53
57
  }), this.ngForm.ngSubmit.subscribe(() => {
54
58
  this.onSubmit.emit(this);
@@ -59,25 +63,29 @@ export class DynamicBaseFormComponent extends DynamicFormComponent {
59
63
  this.subscription.unsubscribe();
60
64
  this.groupSubscription.unsubscribe();
61
65
  }
66
+ detectChanges() {
67
+ super.detectChanges();
68
+ this.onDetectChanges.emit(this);
69
+ }
62
70
  insertFormArrayGroup(index, formArray, formArrayModel) {
63
71
  this.formService.insertFormArrayGroup(index, formArray, formArrayModel);
64
- this.changeDetectorRef.detectChanges();
72
+ this.detectChanges();
65
73
  }
66
74
  cloneFormArrayGroup(index, formArray, formArrayModel) {
67
75
  this.formService.cloneFormArrayGroup(index, formArray, formArrayModel);
68
- this.changeDetectorRef.detectChanges();
76
+ this.detectChanges();
69
77
  }
70
78
  removeFormArrayGroup(index, formArray, formArrayModel) {
71
79
  this.formService.removeFormArrayGroup(index, formArray, formArrayModel);
72
- this.changeDetectorRef.detectChanges();
80
+ this.detectChanges();
73
81
  }
74
82
  moveFormArrayGroup(index, step, formArray, formArrayModel) {
75
83
  this.formService.moveFormArrayGroup(index, step, formArray, formArrayModel);
76
- this.changeDetectorRef.detectChanges();
84
+ this.detectChanges();
77
85
  }
78
86
  clearFormArray(formArray, formArrayModel) {
79
87
  this.formService.clearFormArray(formArray, formArrayModel);
80
- this.changeDetectorRef.detectChanges();
88
+ this.detectChanges();
81
89
  }
82
90
  getClass(model) {
83
91
  const parts = collectPathAble(model, p => p.id);
@@ -115,7 +123,7 @@ export class DynamicBaseFormComponent extends DynamicFormComponent {
115
123
  }
116
124
  }
117
125
  DynamicBaseFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormComponent, deps: [{ token: DynamicFormService }, { token: EventsService }, { token: i0.ChangeDetectorRef }, { token: i1.DynamicFormComponentService }], target: i0.ɵɵFactoryTarget.Component });
118
- DynamicBaseFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormComponent, selector: "dynamic-base-form", inputs: { group: "group", model: "model", layout: "layout", labelPrefix: "labelPrefix" }, outputs: { blur: "blur", change: "change", focus: "focus", onValueChange: "onValueChange", onStatusChange: "onStatusChange", onSubmit: "onSubmit" }, queries: [{ propertyName: "contentTemplates", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "ngForm", first: true, predicate: NgForm, descendants: true }, { propertyName: "viewTemplates", predicate: DynamicTemplateDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.Default });
126
+ DynamicBaseFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormComponent, selector: "dynamic-base-form", inputs: { group: "group", model: "model", layout: "layout", labelPrefix: "labelPrefix" }, outputs: { blur: "blur", change: "change", focus: "focus", onValueChange: "onValueChange", onStatusChange: "onStatusChange", onSubmit: "onSubmit", onDetectChanges: "onDetectChanges" }, queries: [{ propertyName: "contentTemplates", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "ngForm", first: true, predicate: NgForm, descendants: true }, { propertyName: "viewTemplates", predicate: DynamicTemplateDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.Default });
119
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormComponent, decorators: [{
120
128
  type: Component,
121
129
  args: [{
@@ -155,8 +163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
155
163
  type: Output
156
164
  }], onSubmit: [{
157
165
  type: Output
166
+ }], onDetectChanges: [{
167
+ type: Output
158
168
  }], ngForm: [{
159
169
  type: ViewChild,
160
170
  args: [NgForm]
161
171
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBdUIsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUNILG9CQUFvQixFQUlwQixxQkFBcUIsRUFHckIsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBT3ZFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUEyQjlELFlBQWlELFdBQStCLEVBQ3BDLE1BQXFCLEVBQ3JELGlCQUFvQyxFQUNwQyxnQkFBNkM7UUFDckQsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUk3RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUEyQixD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O3NCQUExQixNQUFNO2dCQUdHLE1BQU07c0JBRGYsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1Hcm91cCwgTmdGb3JtfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Hcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybU1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtFdmVudHNTZXJ2aWNlLCBPYnNlcnZhYmxlVXRpbHN9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TdGF0ZSwgSUR5bmFtaWNGb3JtLCBJRHluYW1pY0Zvcm1FdmVudH0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2NvbGxlY3RQYXRoQWJsZX0gZnJvbSBcIi4uLy4uL3V0aWxzL21pc2NcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5TW9kZWx9IGZyb20gXCIuLi8uLi91dGlscy9keW5hbWljLWZvcm0tYXJyYXkubW9kZWxcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybVwiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBJRHluYW1pY0Zvcm0ge1xyXG5cclxuICAgIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBtb2RlbDogRHluYW1pY0Zvcm1Nb2RlbDtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1MYXlvdXQ7XHJcbiAgICBASW5wdXQoKSBsYWJlbFByZWZpeDogc3RyaW5nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+O1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PjtcclxuICAgIEBPdXRwdXQoKSBmb2N1czogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PjtcclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSkgY29udGVudFRlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcbiAgICBAVmlld0NoaWxkcmVuKER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSkgdmlld1RlbXBsYXRlczogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgZ2V0IHN0YXR1cygpOiBEeW5hbWljRm9ybVN0YXRlIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZ3JvdXAgPyBudWxsIDogdGhpcy5ncm91cC5zdGF0dXMgYXMgRHluYW1pY0Zvcm1TdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybUV2ZW50PjtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTmdGb3JtKVxyXG4gICAgcHJvdGVjdGVkIG5nRm9ybTogTmdGb3JtO1xyXG4gICAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJvdGVjdGVkIGdyb3VwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEeW5hbWljRm9ybVNlcnZpY2UpIHJlYWRvbmx5IGZvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KEV2ZW50c1NlcnZpY2UpIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSwpIHtcclxuICAgICAgICBzdXBlcihjaGFuZ2VEZXRlY3RvclJlZiwgY29tcG9uZW50U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5ibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuICAgICAgICB0aGlzLmNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5mb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm1FdmVudD4oKTtcclxuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+KCk7XHJcbiAgICAgICAgdGhpcy5vblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtPigpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0gbmV3IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+KCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICB0aGlzLmxhYmVsUHJlZml4ID0gXCJsYWJlbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdyb3VwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGVVdGlscy5tdWx0aVN1YnNjcmlwdGlvbihcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2UuZW1pdCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLm5vdGlmeUNoYW5nZXModGhpcy5tb2RlbCwgdGhpcy5ncm91cCwgdGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlLnN1YnNjcmliZShldiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoey4uLmV2LCBmb3JtOiB0aGlzfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBPYnNlcnZhYmxlVXRpbHMubXVsdGlTdWJzY3JpcHRpb24oXHJcbiAgICAgICAgICAgIE9ic2VydmFibGVVdGlscy5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdHM6IFt0aGlzLmNvbnRlbnRUZW1wbGF0ZXMuY2hhbmdlcywgdGhpcy52aWV3VGVtcGxhdGVzLmNoYW5nZXNdLFxyXG4gICAgICAgICAgICAgICAgICAgIGNiOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRoaXMuY29udGVudFRlbXBsYXRlcy50b0FycmF5KCkuY29uY2F0KHRoaXMudmlld1RlbXBsYXRlcy50b0FycmF5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcy5yZXNldCh0ZW1wbGF0ZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5ldmVudHMubGFuZ3VhZ2VDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmRldGVjdENoYW5nZXModGhpcylcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMubmdGb3JtLm5nU3VibWl0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0LmVtaXQodGhpcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydEZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIGZvcm1BcnJheTogRm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbDogRHluYW1pY0Zvcm1BcnJheU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5pbnNlcnRGb3JtQXJyYXlHcm91cChpbmRleCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvbmVGb3JtQXJyYXlHcm91cChpbmRleDogbnVtYmVyLCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuY2xvbmVGb3JtQXJyYXlHcm91cChpbmRleCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRm9ybUFycmF5R3JvdXAoaW5kZXg6IG51bWJlciwgZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnJlbW92ZUZvcm1BcnJheUdyb3VwKGluZGV4LCBmb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBtb3ZlRm9ybUFycmF5R3JvdXAoaW5kZXg6IG51bWJlciwgc3RlcDogbnVtYmVyLCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UubW92ZUZvcm1BcnJheUdyb3VwKGluZGV4LCBzdGVwLCBmb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuY2xlYXJGb3JtQXJyYXkoZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2xhc3MobW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcGFydHMgPSBjb2xsZWN0UGF0aEFibGUobW9kZWwsIHAgPT4gcC5pZCk7XHJcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAwKSByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAobW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBmb3JtLWdyb3VwLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBmb3JtLWNvbnRyb2wtJHtwYXJ0cy5qb2luKFwiLVwiKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlKHNob3dFcnJvcnM6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKGZpcnN0KHN0YXR1cyA9PiBzdGF0dXMgPT0gXCJWQUxJRFwiIHx8IHN0YXR1cyA9PSBcIklOVkFMSURcIikpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNob3dFcnJvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnNob3dFcnJvcnModGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiVkFMSURcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VyaWFsaXplKHZhbGlkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAodmFsaWRhdGUpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mb3JtU2VydmljZS5zZXJpYWxpemUodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbn1cclxuIl19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBdUIsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUNILG9CQUFvQixFQUlwQixxQkFBcUIsRUFHckIsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBT3ZFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUE0QjlELFlBQWlELFdBQStCLEVBQ3BDLE1BQXFCLEVBQ3JELGlCQUFvQyxFQUNwQyxnQkFBNkM7UUFDckQsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUk3RCxJQUFJLENB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QVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2lCQUNuRDs7MEJBNkJnQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsYUFBYTtzSEEzQnhCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBRW9DLGdCQUFnQjtzQkFBMUQsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBQ0QsYUFBYTtzQkFBcEQsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBTW5CLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1ksY0FBYztzQkFBaEMsTUFBTTtnQkFDWSxRQUFRO3NCQUExQixNQUFNO2dCQUNZLGVBQWU7c0JBQWpDLE1BQU07Z0JBR0csTUFBTTtzQkFEZixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1BcnJheSwgRm9ybUdyb3VwLCBOZ0Zvcm19IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgZ3JvdXBCeSwgbWVyZ2VNYXAsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaXJzdH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbEV2ZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTW9kZWwsXHJcbiAgICBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmVcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge0V2ZW50c1NlcnZpY2UsIE9ic2VydmFibGVVdGlsc30gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybVN0YXRlLCBJRHluYW1pY0Zvcm0sIElEeW5hbWljRm9ybUV2ZW50fSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7Y29sbGVjdFBhdGhBYmxlfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWlzY1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtQXJyYXlNb2RlbH0gZnJvbSBcIi4uLy4uL3V0aWxzL2R5bmFtaWMtZm9ybS1hcnJheS5tb2RlbFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtXCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIElEeW5hbWljRm9ybSB7XHJcblxyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRm9ybU1vZGVsO1xyXG4gICAgQElucHV0KCkgbGF5b3V0OiBEeW5hbWljRm9ybUxheW91dDtcclxuICAgIEBJbnB1dCgpIGxhYmVsUHJlZml4OiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD47XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+O1xyXG4gICAgQE91dHB1dCgpIGZvY3VzOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlKSBjb250ZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuICAgIEBWaWV3Q2hpbGRyZW4oRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlKSB2aWV3VGVtcGxhdGVzOiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHJcbiAgICBnZXQgc3RhdHVzKCk6IER5bmFtaWNGb3JtU3RhdGUge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ncm91cCA/IG51bGwgOiB0aGlzLmdyb3VwLnN0YXR1cyBhcyBEeW5hbWljRm9ybVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtRXZlbnQ+O1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uU3RhdHVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtPjtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblN1Ym1pdDogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT47XHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25EZXRlY3RDaGFuZ2VzOiBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtPjtcclxuXHJcbiAgICBAVmlld0NoaWxkKE5nRm9ybSlcclxuICAgIHByb3RlY3RlZCBuZ0Zvcm06IE5nRm9ybTtcclxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByb3RlY3RlZCBncm91cFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRHluYW1pY0Zvcm1TZXJ2aWNlKSByZWFkb25seSBmb3JtU2VydmljZTogRHluYW1pY0Zvcm1TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChFdmVudHNTZXJ2aWNlKSByZWFkb25seSBldmVudHM6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsKSB7XHJcbiAgICAgICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3JSZWYsIGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG4gICAgICAgIHRoaXMuZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5vblN0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtPigpO1xyXG4gICAgICAgIHRoaXMub25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybT4oKTtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtPigpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0gbmV3IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+KCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICB0aGlzLmxhYmVsUHJlZml4ID0gXCJsYWJlbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdyb3VwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGVVdGlscy5tdWx0aVN1YnNjcmlwdGlvbihcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2UuZW1pdCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLm5vdGlmeUNoYW5nZXModGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlLnBpcGUoZ3JvdXBCeShldiA9PiBldi5tb2RlbCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUobWVyZ2VNYXAodCA9PiB0LnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpKSlcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoey4uLmV2LCBmb3JtOiB0aGlzfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gT2JzZXJ2YWJsZVV0aWxzLm11bHRpU3Vic2NyaXB0aW9uKFxyXG4gICAgICAgICAgICBPYnNlcnZhYmxlVXRpbHMuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3RzOiBbdGhpcy5jb250ZW50VGVtcGxhdGVzLmNoYW5nZXMsIHRoaXMudmlld1RlbXBsYXRlcy5jaGFuZ2VzXSxcclxuICAgICAgICAgICAgICAgICAgICBjYjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMudG9BcnJheSgpLmNvbmNhdCh0aGlzLnZpZXdUZW1wbGF0ZXMudG9BcnJheSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMucmVzZXQodGVtcGxhdGVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5ub3RpZnlDaGFuZ2VzKHRoaXMubW9kZWwsIHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5kZXRlY3RDaGFuZ2VzKHRoaXMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGhpcy5uZ0Zvcm0ubmdTdWJtaXQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmdyb3VwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMuZW1pdCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRGb3JtQXJyYXlHcm91cChpbmRleDogbnVtYmVyLCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuaW5zZXJ0Rm9ybUFycmF5R3JvdXAoaW5kZXgsIGZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWwpO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb25lRm9ybUFycmF5R3JvdXAoaW5kZXg6IG51bWJlciwgZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmNsb25lRm9ybUFycmF5R3JvdXAoaW5kZXgsIGZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWwpO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIGZvcm1BcnJheTogRm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbDogRHluYW1pY0Zvcm1BcnJheU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5yZW1vdmVGb3JtQXJyYXlHcm91cChpbmRleCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbW92ZUZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIHN0ZXA6IG51bWJlciwgZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLm1vdmVGb3JtQXJyYXlHcm91cChpbmRleCwgc3RlcCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJGb3JtQXJyYXkoZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmNsZWFyRm9ybUFycmF5KGZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWwpO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gY29sbGVjdFBhdGhBYmxlKG1vZGVsLCBwID0+IHAuaWQpO1xyXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT0gMCkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgZm9ybS1ncm91cC0ke3BhcnRzLmpvaW4oXCItXCIpfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgZm9ybS1jb250cm9sLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGF0ZShzaG93RXJyb3JzOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwLnN0YXR1c0NoYW5nZXMucGlwZShmaXJzdChzdGF0dXMgPT4gc3RhdHVzID09IFwiVkFMSURcIiB8fCBzdGF0dXMgPT0gXCJJTlZBTElEXCIpKS5zdWJzY3JpYmUoc3RhdHVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChzaG93RXJyb3JzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5zaG93RXJyb3JzKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBcIlZBTElEXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNlcmlhbGl6ZSh2YWxpZGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5ncm91cCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZm9ybVNlcnZpY2Uuc2VyaWFsaXplKHRoaXMubW9kZWwsIHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==