@fundamental-ngx/platform 0.45.1-rc.9 → 0.45.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +6 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +6 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +6 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +8 -6
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +6 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +5 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +6 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +6 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +6 -4
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +4 -3
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +4 -3
- package/esm2022/form/form-generator/dynamic-form-control.mjs +1 -1
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +23 -89
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +130 -40
- package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +20 -14
- package/esm2022/form/form-generator/form-generator.service.mjs +62 -19
- package/esm2022/form/form-generator/helpers.mjs +53 -0
- package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +46 -0
- package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +7 -3
- package/esm2022/form/form-generator/providers/providers.mjs +1 -1
- package/esm2022/form/form-group/form-field/form-field.component.mjs +1 -1
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +1 -1
- package/esm2022/form/form-group/form-group.component.mjs +3 -2
- package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +2 -2
- package/esm2022/form/form-helpers.mjs +2 -18
- package/esm2022/form/index.mjs +3 -1
- package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +26 -5
- package/esm2022/form/models/field.model.mjs +18 -0
- package/esm2022/shared/form/base.input.mjs +9 -3
- package/fesm2022/fundamental-ngx-platform-form.mjs +4445 -4240
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +9 -3
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.d.ts +1 -1
- package/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.d.ts +1 -1
- package/form/form-generator/dynamic-form-control-field.directive.d.ts +1 -1
- package/form/form-generator/dynamic-form-control.d.ts +3 -3
- package/form/form-generator/dynamic-form-control.directive.d.ts +1 -1
- package/form/form-generator/fdp-form-generator.module.d.ts +3 -20
- package/form/form-generator/form-generator/form-generator.component.d.ts +41 -13
- package/form/form-generator/form-generator-field/form-generator-field.component.d.ts +7 -2
- package/form/form-generator/form-generator.service.d.ts +17 -8
- package/form/form-generator/helpers.d.ts +23 -0
- package/form/form-generator/interfaces/dynamic-form-item.d.ts +18 -7
- package/form/form-generator/pipes/get-hint-options.pipe.d.ts +17 -0
- package/form/form-generator/pipes/get-ordered-form-controls.pipe.d.ts +1 -1
- package/form/form-generator/providers/providers.d.ts +3 -3
- package/form/form-group/form-group-header/form-group-header.component.d.ts +1 -1
- package/form/form-group/form-group.component.d.ts +1 -1
- package/form/form-group/pipes/field-group-row-value.pipe.d.ts +1 -1
- package/form/form-helpers.d.ts +2 -20
- package/form/index.d.ts +2 -0
- package/form/input-message-group-with-template/input-message-group-with-template.component.d.ts +7 -1
- package/form/models/field.model.d.ts +20 -0
- package/fundamental-ngx-platform-v0.45.1.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/shared/form/base.input.d.ts +13 -10
- package/fundamental-ngx-platform-v0.45.1-rc.9.tgz +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9mb3JtLWdlbmVyYXRvci9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbHVtbkxheW91dCwgRmllbGRIaW50SW5wdXQsIEhpbnRJbnB1dCwgSW5saW5lTGF5b3V0LCBTZWxlY3RJdGVtIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGb3JtR3JvdXAgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1ncm91cCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2wsIER5bmFtaWNGb3JtR3JvdXBDb250cm9sIH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgVGV4dEFsaWdubWVudCB9IGZyb20gJy4uLy4uL2NvbWJvYm94JztcbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBPYmplY3RTdGF0dXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvb2JqZWN0LXN0YXR1cyc7XG5pbXBvcnQgeyBJbmRpY2F0aW9uQ29sb3JUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9vYmplY3Qtc3RhdHVzJztcblxuZXhwb3J0IHR5cGUgRHluYW1pY0Zvcm1JdGVtQ2hvaWNlPFQgPSBhbnk+ID1cbiAgICB8IER5bmFtaWNGb3JtSXRlbUNob2ljZVR5cGVzPFQ+W11cbiAgICB8IE9ic2VydmFibGU8RHluYW1pY0Zvcm1JdGVtQ2hvaWNlVHlwZXM8VD5bXT5cbiAgICB8IFByb21pc2U8RHluYW1pY0Zvcm1JdGVtQ2hvaWNlVHlwZXM8VD5bXT47XG5cbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtSXRlbUNob2ljZVR5cGVzPFQgPSBhbnk+ID0gbnVtYmVyIHwgc3RyaW5nIHwgU2VsZWN0SXRlbTxUPjtcbi8qKiBBZHZhbmNlZCBlcnJvciB0eXBlLiBVc2VkIHRvIHJlbmRlciBtb3JlIGNvbXBsZXggZXJyb3IgdmlldyB3aXRoIGN1c3RvbSBlcnJvciB0eXBlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uT2JqZWN0IHtcbiAgICAvKiogRXJyb3IgaGVhZGluZy4gKi9cbiAgICBoZWFkaW5nOiBzdHJpbmc7XG4gICAgLyoqIEVycm9yIGRlc2NyaXB0aW9uLiAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIC8qKiBFcnJvciBzdGF0ZSAqL1xuICAgIHR5cGU6IEZvcm1TdGF0ZXM7XG59XG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uUmVzdWx0ID0gbnVsbCB8IGJvb2xlYW4gfCBzdHJpbmcgfCBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uT2JqZWN0O1xuLyoqXG4gKiBEeW5hbWljIGZvcm0gaXRlbSB0eXBlLlxuICpcbiAqIGBUYCB0eXBlIHJlcHJlc2VudHMgYWRkaXRpb25hbCB0eXBlIHByb3BlcnRpZXMuXG4gKiBgVWAgdHlwZSByZXByZXNlbnRzIGFkZGl0aW9uYWwgYER5bmFtaWNGb3JtRmllbGRJdGVtYCBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtSXRlbTxcbiAgICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgVSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbSA9IEFueUR5bmFtaWNGb3JtRmllbGRJdGVtXG4+ID0gRHluYW1pY0Zvcm1GaWVsZEdyb3VwIHwgRHluYW1pY0Zvcm1GaWVsZEl0ZW08VCwgVT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Zvcm1GaWVsZEdyb3VwIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJRCBvZiB0aGUgZm9ybSBpdGVtLCBpZiBub3QgcHJvdmlkZWQsIG5hbWUgd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBpZD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIE5hbWUgb2YgdGhlIGZvcm0gaXRlbSBpbiBmb3JtLlxuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIERpc3BsYXkgbmFtZSBvZiB0aGUgZm9ybSBpdGVtLlxuICAgICAqIEBwYXJhbSBmb3JtVmFsdWUgdGhlIGZvcm0gdmFsdWUgaGFzaC5cbiAgICAgKi9cbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogTGlzdCBvZiBAc2VlIER5bmFtaWNGb3JtSXRlbSByZXByZXNlbnRpbmcgdGhlIGxpc3Qgb2YgaXRlbXNcbiAgICAgKiB0byBiZSByZW5kZXJlZCBpbiB0aGUgZm9ybS5cbiAgICAgKi9cbiAgICBpdGVtcz86IER5bmFtaWNGb3JtRmllbGRJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSYW5rIGlzIHVzZWQgZm9yIG9yZGVyaW5nLlxuICAgICAqIFRoYW4gbG93ZXIgbnVtYmVyIHRoZW4gaGlnaGVyIHByaW9yaXR5LlxuICAgICAqL1xuICAgIHJhbms/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBBZGRpdGlvbmFsIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGFmZmVjdCBVSSBvZiB0aGUgZm9ybSBmaWVsZCBncm91cC5cbiAgICAgKi9cbiAgICBndWlPcHRpb25zPzogQmFzZUR5bmFtaWNGb3JtSXRlbUd1aU9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIEZkcEZvcm1HZW5lcmF0b3JBc3luY1Byb3BlcnR5PFQgPSBzdHJpbmc+ID0gVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbTxUID0gYW55PiB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVHlwZSBvZiB0aGUgZm9ybSBpdGVtLiBFLmcuIGlucHV0LCB0ZXh0YXJlYSwgY2hlY2tib3gsIGV0Yy5cbiAgICAgKi9cbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSUQgb2YgdGhlIGZvcm0gaXRlbSwgaWYgbm90IHByb3ZpZGVkLCBuYW1lIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBOYW1lIG9mIHRoZSBmb3JtIGl0ZW0gaW4gZm9ybS5cbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBEaXNwbGF5IG5hbWUgb2YgdGhlIGZvcm0gaXRlbS5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICovXG4gICAgbWVzc2FnZTpcbiAgICAgICAgfCBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxzdHJpbmc+XG4gICAgICAgIHwgKChmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlKSA9PiBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxzdHJpbmc+KTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIERpc3BsYXkgcGxhY2Vob2xkZXIgb2YgdGhlIGZvcm0gaXRlbS5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI/OlxuICAgICAgICB8IEZkcEZvcm1HZW5lcmF0b3JBc3luY1Byb3BlcnR5PHN0cmluZz5cbiAgICAgICAgfCAoKGZvcm1WYWx1ZT86IER5bmFtaWNGb3JtVmFsdWUpID0+IEZkcEZvcm1HZW5lcmF0b3JBc3luY1Byb3BlcnR5PHN0cmluZz4pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSWYgdHJ1ZSwgd2lsbCBmYWxsIGJhY2sgdG8gYG1lc3NhZ2VgIHByb3BlcnR5IGlmIGBwbGFjZWhvbGRlcmAgd2FzIG5vdCBwcm92aWRlZC5cbiAgICAgKi9cbiAgICB1c2VNZXNzYWdlQXNQbGFjZWhvbGRlcj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBEZWZhdWx0IHZhbHVlIG9mIHRoZSBmb3JtIGl0ZW0uXG4gICAgICovXG4gICAgZGVmYXVsdD86IEZkcEZvcm1HZW5lcmF0b3JBc3luY1Byb3BlcnR5PFQ+IHwgKChmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlKSA9PiBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxUPik7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZWNlaXZlIHRoZSB1c2VyIGlucHV0IGFuZCBmb3JtIHZhbHVlIGhhc2guXG4gICAgICogU2hvdWxkIHJldHVybiBudWxsIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgYW5kIGFuIGVycm9yIG1lc3NhZ2UgKFN0cmluZykgb3IgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICogSWYgYGZhbHNlYCBpcyByZXR1cm5lZCwgYSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgaXMgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIGZvcm1JdGVtVmFsdWUgcmF3IGZvcm0gaXRlbSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICogQHJldHVybnMgbnVsbCBvciBTdHJpbmdcbiAgICAgKi9cbiAgICB2YWxpZGF0ZT86IChcbiAgICAgICAgZm9ybUl0ZW1WYWx1ZTogVCxcbiAgICAgICAgZm9ybVZhbHVlPzogRHluYW1pY0Zvcm1WYWx1ZVxuICAgICkgPT5cbiAgICAgICAgfCBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uUmVzdWx0XG4gICAgICAgIHwgUHJvbWlzZTxEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uUmVzdWx0PlxuICAgICAgICB8IE9ic2VydmFibGU8RHluYW1pY0Zvcm1JdGVtVmFsaWRhdGlvblJlc3VsdD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGUgbGlzdCBvZiB2YWxpZGF0b3JzIGFwcGxpZWQgdG8gdGhlIGZvcm0gaXRlbS5cbiAgICAgKi9cbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXSB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGUgbGlzdCBvZiBhc3luYyB2YWxpZGF0b3JzIGFwcGxpZWQgdG8gdGhlIGZvcm0gaXRlbS5cbiAgICAgKi9cbiAgICBhc3luY1ZhbGlkYXRvcnM/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXQgd2hlbiBmb3JtIGl0ZW0gaXMgYSBtYW5kYXRvcnkgb25lLlxuICAgICAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2Zvcm1zIHJhdyBmb3JtIGl0ZW0gdmFsdWUuXG4gICAgICogQHBhcmFtIGZvcm1JdGVtVmFsdWUgcmF3IGZvcm0gaXRlbSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICogQHBhcmFtIGZvcm1JdGVtIEBzZWUgRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgKiBAcmV0dXJucyB1cGRhdGVkIGZvcm0gaXRlbSB2YWx1ZSB0byBiZSB1c2VkIGluIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICovXG4gICAgdHJhbnNmb3JtZXI/OiAoXG4gICAgICAgIGZvcm1JdGVtVmFsdWU6IFQsXG4gICAgICAgIGZvcm1WYWx1ZT86IER5bmFtaWNGb3JtVmFsdWUsXG4gICAgICAgIGZvcm1JdGVtPzogRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICApID0+IGFueSB8IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2Zvcm1zIHJhdyBmb3JtIGl0ZW0gdmFsdWUgZm9yIHJlbmRlciBwdXJwb3Nlcy5cbiAgICAgKiBAcGFyYW0gZm9ybUl0ZW1WYWx1ZSByYXcgZm9ybSBpdGVtIHZhbHVlLlxuICAgICAqIEBwYXJhbSBmb3JtVmFsdWUgdGhlIGZvcm0gdmFsdWUgaGFzaC5cbiAgICAgKiBAcGFyYW0gZm9ybUl0ZW0gQHNlZSBEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICAqIEByZXR1cm5zIHVwZGF0ZWQgZm9ybSBpdGVtIHZhbHVlIHRvIGJlIHVzZWQgaW4gdGhlIGZvcm0gdmFsdWUgaGFzaCBmb3IgcmVuZGVyaW5nIHB1cnBvc2VzLlxuICAgICAqL1xuICAgIHZhbHVlUmVuZGVyZXI/OiAoXG4gICAgICAgIGZvcm1JdGVtVmFsdWU6IFQsXG4gICAgICAgIGZvcm1WYWx1ZT86IER5bmFtaWNGb3JtVmFsdWUsXG4gICAgICAgIGZvcm1JdGVtPzogRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICApID0+IGFueSB8IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaG91bGQgcmV0dXJuIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBmb3JtIGl0ZW0gc2hvdWxkIGJlIGFza2VkLlxuICAgICAqIEBwYXJhbSBmb3JtVmFsdWUgdGhlIGZvcm0gdmFsdWUgaGFzaC5cbiAgICAgKiBAcGFyYW0gZm9ybXMgQWxsIGF2YWlsYWJsZSBmb3JtcyBzdG9yZWQgaW4gZm9ybSBnZW5lcmF0b3Igc2VydmljZS5cbiAgICAgKiBAcGFyYW0gY29udHJvbCBEeW5hbWljIGZvcm0gY29udHJvbC5cbiAgICAgKiBAcmV0dXJucyBCb29sZWFuXG4gICAgICovXG4gICAgd2hlbj86IChcbiAgICAgICAgZm9ybVZhbHVlOiBEeW5hbWljRm9ybVZhbHVlLFxuICAgICAgICBmb3JtczogTWFwPHN0cmluZywgRHluYW1pY0Zvcm1Hcm91cD4sXG4gICAgICAgIGNvbnRyb2w6IER5bmFtaWNGb3JtR3JvdXBDb250cm9sXG4gICAgKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgYWZ0ZXIgZmllbGQgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKiBAcGFyYW0gZmllbGRWYWx1ZSBGaWVsZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gZm9ybXMgQWxsIGF2YWlsYWJsZSBmb3JtcyBzdG9yZWQgaW4gZm9ybSBnZW5lcmF0b3Igc2VydmljZS5cbiAgICAgKiBAcGFyYW0gY29udHJvbCBEeW5hbWljIGZvcm0gY29udHJvbC5cbiAgICAgKi9cbiAgICBvbmNoYW5nZT86IChcbiAgICAgICAgZmllbGRWYWx1ZTogVCxcbiAgICAgICAgZm9ybXM6IE1hcDxzdHJpbmcsIER5bmFtaWNGb3JtR3JvdXA+LFxuICAgICAgICBjb250cm9sOiBEeW5hbWljRm9ybUNvbnRyb2xcbiAgICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHwgT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBVc2VkIGFzIGEgc3RhdGljIGZsYWcgb24gc2hvdWxkIHRoaXMgZm9ybSBpdGVtIGJlIHNob3duLlxuICAgICAqL1xuICAgIHNob3VsZFNob3c/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmFuayBpcyB1c2VkIGZvciBvcmRlcmluZy5cbiAgICAgKiBUaGFuIGxvd2VyIG51bWJlciB0aGVuIGhpZ2hlciBwcmlvcml0eS5cbiAgICAgKi9cbiAgICByYW5rPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQWRkaXRpb25hbCBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBhZmZlY3QgVUkgb2YgdGhlIGZvcm0gaXRlbSBmb3JtIGNvbnRyb2wuXG4gICAgICovXG4gICAgZ3VpT3B0aW9ucz86IER5bmFtaWNGb3JtSXRlbUd1aU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXREeW5hbWljRm9ybUZpZWxkSXRlbSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbTxzdHJpbmc+IHtcbiAgICB0eXBlOiAnaW5wdXQnIHwgJ2VtYWlsJyB8ICdudW1iZXInIHwgJ3Bhc3N3b3JkJztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBBZGRpdGlvbmFsIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGFmZmVjdCBVSSBvZiB0aGUgZm9ybSBpdGVtIGZvcm0gY29udHJvbC5cbiAgICAgKi9cbiAgICBjb250cm9sVHlwZT86IElucHV0VHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlUGlja2VyRHluYW1pY0Zvcm1GaWVsZEl0ZW0gZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW08RmREYXRlPiB7XG4gICAgdHlwZTogJ2RhdGVwaWNrZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRBcmVhRHluYW1pY0Zvcm1GaWVsZEl0ZW0gZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW08c3RyaW5nPiB7XG4gICAgdHlwZTogJ2VkaXRvcicgfCAndGV4dGFyZWEnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaER5bmFtaWNGb3JtRmllbGRJdGVtIGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPGJvb2xlYW4+IHtcbiAgICB0eXBlOiAnc3dpdGNoJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3REeW5hbWljRm9ybUZpZWxkSXRlbTxUID0gRHluYW1pY0Zvcm1JdGVtQ2hvaWNlVHlwZXM8YW55Pj4gZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW08VD4ge1xuICAgIHR5cGU6ICdzZWxlY3QnIHwgJ2xpc3QnIHwgJ211bHRpLWlucHV0JztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBUaGUgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyB0byBzZWxlY3QuXG4gICAgICogQHBhcmFtIGZvcm1WYWx1ZSByYXcgZm9ybSBpdGVtIHZhbHVlLlxuICAgICAqL1xuICAgIGNob2ljZXM/OiBEeW5hbWljRm9ybUl0ZW1DaG9pY2UgfCAoKGZvcm1WYWx1ZT86IER5bmFtaWNGb3JtVmFsdWUpID0+IER5bmFtaWNGb3JtSXRlbUNob2ljZSk7XG5cbiAgICBzZWNvbmRhcnlLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogU2hvdyB0aGUgc2Vjb25kIGNvbHVtbiAoQXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KSAqL1xuICAgIHNob3dTZWNvbmRhcnlUZXh0PzogYm9vbGVhbjtcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ24gdGV4dCBpbnNpZGUgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBzZWNvbmRhcnlUZXh0QWxpZ25tZW50PzogVGV4dEFsaWdubWVudDtcbiAgICAvKiogQ3VzdG9tIHRlbXBsYXRlIHVzZWQgdG8gYnVpbGQgY29udHJvbCBib2R5LiAqL1xuICAgIGNvbnRyb2xUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9EeW5hbWljRm9ybUZpZWxkSXRlbSBleHRlbmRzIE9taXQ8U2VsZWN0RHluYW1pY0Zvcm1GaWVsZEl0ZW08YW55PiwgJ3R5cGUnPiB7XG4gICAgdHlwZTogJ3JhZGlvJyB8ICdjb25maXJtJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGVja2JveER5bmFtaWNGb3JtRmllbGRJdGVtIGV4dGVuZHMgT21pdDxTZWxlY3REeW5hbWljRm9ybUZpZWxkSXRlbTxhbnk+LCAndHlwZSc+IHtcbiAgICB0eXBlOiAnY2hlY2tib3gnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFN0YXR1c0R5bmFtaWNGb3JtRmllbGRJdGVtIGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPHN0cmluZz4ge1xuICAgIHR5cGU6ICdvYmplY3Qtc3RhdHVzJztcbiAgICBndWlPcHRpb25zPzogQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtWydndWlPcHRpb25zJ10gJiB7XG4gICAgICAgIHN0YXR1cz86IE9iamVjdFN0YXR1cztcbiAgICAgICAgaWNvbj86IHN0cmluZztcbiAgICAgICAgaW5kaWNhdGlvbkNvbG9yPzogSW5kaWNhdGlvbkNvbG9yVHlwZTtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFueUR5bmFtaWNGb3JtRmllbGRJdGVtPFQgPSBhbnk+IGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPFQ+IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMgdG8gc2VsZWN0LlxuICAgICAqIEBwYXJhbSBmb3JtVmFsdWUgcmF3IGZvcm0gaXRlbSB2YWx1ZS5cbiAgICAgKi9cbiAgICBjaG9pY2VzPzogRHluYW1pY0Zvcm1JdGVtQ2hvaWNlIHwgKChmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlKSA9PiBEeW5hbWljRm9ybUl0ZW1DaG9pY2UpO1xufVxuXG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybUZpZWxkSXRlbTxcbiAgICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgVSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbSA9IEFueUR5bmFtaWNGb3JtRmllbGRJdGVtXG4+ID0gVCAmXG4gICAgKFxuICAgICAgICB8IElucHV0RHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgICAgfCBEYXRlUGlja2VyRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgICAgfCBUZXh0QXJlYUR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgU3dpdGNoRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgICAgfCBTZWxlY3REeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICAgICB8IFJhZGlvRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgICAgfCBDaGVja2JveER5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgT2JqZWN0U3RhdHVzRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgICAgfCBVXG4gICAgICAgIHwgQW55RHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICApO1xuXG50eXBlIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW1GaWVsZHMgPSB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGRlZmF1bHQ6IGFueTtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBjaG9pY2VzPzogU2VsZWN0SXRlbVtdO1xufTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBEeW5hbWljRm9ybUZpZWxkSXRlbSB3aXRoIGFsbCBmaWVsZHMgcmVzb2x2ZWQgdG8gYSBwbGFpbiB2YWx1ZVxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtPFQgZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW0gPSBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW0+ID0gT21pdDxcbiAgICBULFxuICAgIGtleW9mIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW1GaWVsZHNcbj4gJlxuICAgIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW1GaWVsZHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUR5bmFtaWNGb3JtSXRlbUd1aU9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIERlZmluZXMgbGFiZWwncyBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIGxhYmVsQ29sdW1uTGF5b3V0PzogQ29sdW1uTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRGVmaW5lcyBmaWVsZCdzIGNvbHVtbiBsYXlvdXQuXG4gICAgICovXG4gICAgZmllbGRDb2x1bW5MYXlvdXQ/OiBDb2x1bW5MYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBEZWZpbmVzIGdhcCBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIGdhcENvbHVtbkxheW91dD86IENvbHVtbkxheW91dDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIElmIHNldCwgaGludCBpY29uIGlzIGFkZGVkIHRvIGNvbnRyb2wgbGFiZWwgb3IgZ3JvdXAgaGVhZGluZyB3aXRoIHRvb2x0aXAgbWVzc2FnZSBhcyBhIHZhbHVlLlxuICAgICAqL1xuICAgIGhpbnQ/OiBIaW50SW5wdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Zvcm1JdGVtR3VpT3B0aW9ucyBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUl0ZW1HdWlPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJbmRleCBvZiBjb2x1bW4gaWYgZm9ybSBoYXMgbXVsdGktY29sdW1uIGxheW91dC5cbiAgICAgKi9cbiAgICBjb2x1bW4/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBDb2x1bW4gYXJyYW5nZW1lbnQgZm9yIGZvcm0tZmllbGQgYmFzZWQgb24gc2NyZWVuIHNpemUuXG4gICAgICovXG4gICAgY29sdW1uTGF5b3V0PzogQ29sdW1uTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSW5saW5lIGxheW91dCBmb3IgbGlzdCBiYXNlZCBmb3JtIGl0ZW0uXG4gICAgICovXG4gICAgaW5saW5lTGF5b3V0PzogSW5saW5lTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRmxhZyBpbmRpY2F0aW5nIHRoYXQgbGFiZWwgc2hvdWxkIGJlIGhpZGRlbi5cbiAgICAgKi9cbiAgICBub0xhYmVsTGF5b3V0PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIElmIHNldCwgY29udHJvbHMgaW5uZXIgZWxlbWVudHMgd2lsbCBiZSBpbmxpbmVkLlxuICAgICAqL1xuICAgIGlubGluZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJZiBzZXQsIG92ZXJyaWRlcyBjdXJyZW50IGNvbnRlbnQgZGVuc2l0eSBvZiB0aGUgZWxlbWVudCBkZWZpbmVkIG9uIHRoZSBnbG9iYWwgc2NvcGUuXG4gICAgICovXG4gICAgY29udGVudERlbnNpdHk/OiBDb250ZW50RGVuc2l0eTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPYmplY3QgY29udGFpbnMgYWRkaXRpb25hbCBwYXlsb2FkLiBVc2VmdWwgZm9yIGN1c3RvbSBlbGVtZW50cyB0byBtYW5pcHVsYXRlIGl0J3Mgdmlldy5cbiAgICAgKi9cbiAgICBhZGRpdGlvbmFsRGF0YT86IGFueTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIElmIGxhYmVsIHNob3VsZCBiZSBhcHBlbmRlZCB3aXRoIGNvbG9uLiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgYXBwZW5kQ29sb24/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSGludCBvcHRpb25zLiBFaXRoZXIgb25seSB0ZXh0IG9yIGZ1bGwgY29uZmlnXG4gICAgICovXG4gICAgaGludD86IEZpZWxkSGludElucHV0O1xufVxuXG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybVZhbHVlID0gUmVjb3JkPHN0cmluZywgYW55PjtcbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9mb3JtLWdlbmVyYXRvci9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbHVtbkxheW91dCwgRmllbGRIaW50SW5wdXQsIEhpbnRJbnB1dCwgSW5saW5lTGF5b3V0LCBTZWxlY3RJdGVtIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGb3JtR3JvdXAgfSBmcm9tICcuL2R5bmFtaWMtZm9ybS1ncm91cCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2wsIER5bmFtaWNGb3JtR3JvdXBDb250cm9sIH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgVGV4dEFsaWdubWVudCB9IGZyb20gJy4uLy4uL2NvbWJvYm94JztcbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBPYmplY3RTdGF0dXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvb2JqZWN0LXN0YXR1cyc7XG5pbXBvcnQgeyBJbmRpY2F0aW9uQ29sb3JUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9vYmplY3Qtc3RhdHVzJztcblxuZXhwb3J0IHR5cGUgRHluYW1pY0Zvcm1JdGVtQ2hvaWNlPFQgPSBhbnk+ID1cbiAgICB8IER5bmFtaWNGb3JtSXRlbUNob2ljZVR5cGVzPFQ+W11cbiAgICB8IE9ic2VydmFibGU8RHluYW1pY0Zvcm1JdGVtQ2hvaWNlVHlwZXM8VD5bXT5cbiAgICB8IFByb21pc2U8RHluYW1pY0Zvcm1JdGVtQ2hvaWNlVHlwZXM8VD5bXT47XG5cbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtSXRlbUNob2ljZVR5cGVzPFQgPSBhbnk+ID0gbnVtYmVyIHwgc3RyaW5nIHwgU2VsZWN0SXRlbTxUPjtcbi8qKiBBZHZhbmNlZCBlcnJvciB0eXBlLiBVc2VkIHRvIHJlbmRlciBtb3JlIGNvbXBsZXggZXJyb3IgdmlldyB3aXRoIGN1c3RvbSBlcnJvciB0eXBlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uT2JqZWN0IHtcbiAgICAvKiogRXJyb3IgaGVhZGluZy4gKi9cbiAgICBoZWFkaW5nOiBzdHJpbmc7XG4gICAgLyoqIEVycm9yIGRlc2NyaXB0aW9uLiAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIC8qKiBFcnJvciBzdGF0ZSAqL1xuICAgIHR5cGU6IEZvcm1TdGF0ZXM7XG59XG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uUmVzdWx0ID0gbnVsbCB8IGJvb2xlYW4gfCBzdHJpbmcgfCBEeW5hbWljRm9ybUl0ZW1WYWxpZGF0aW9uT2JqZWN0O1xuLyoqXG4gKiBEeW5hbWljIGZvcm0gaXRlbSB0eXBlLlxuICpcbiAqIGBUYCB0eXBlIHJlcHJlc2VudHMgYWRkaXRpb25hbCB0eXBlIHByb3BlcnRpZXMuXG4gKiBgVWAgdHlwZSByZXByZXNlbnRzIGFkZGl0aW9uYWwgYER5bmFtaWNGb3JtRmllbGRJdGVtYCBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtSXRlbTxcbiAgICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgVSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbSA9IEFueUR5bmFtaWNGb3JtRmllbGRJdGVtXG4+ID0gRHluYW1pY0Zvcm1GaWVsZEdyb3VwIHwgRHluYW1pY0Zvcm1GaWVsZEl0ZW08VCwgVT47XG5cbmV4cG9ydCB0eXBlIER5bmFtaWNGb3JtSXRlbU1hcDxcbiAgICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgVSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbSA9IEFueUR5bmFtaWNGb3JtRmllbGRJdGVtXG4+ID0gRHluYW1pY0Zvcm1GaWVsZEdyb3VwTWFwIHwgRHluYW1pY0Zvcm1GaWVsZEl0ZW08VCwgVT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUR5bmFtaWNGb3JtRmllbGRHcm91cCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSUQgb2YgdGhlIGZvcm0gaXRlbSwgaWYgbm90IHByb3ZpZGVkLCBuYW1lIHdpbGwgYmUgdXNlZCBpbnN0ZWFkXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBOYW1lIG9mIHRoZSBmb3JtIGl0ZW0gaW4gZm9ybS5cbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBEaXNwbGF5IG5hbWUgb2YgdGhlIGZvcm0gaXRlbS5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJhbmsgaXMgdXNlZCBmb3Igb3JkZXJpbmcuXG4gICAgICogVGhhbiBsb3dlciBudW1iZXIgdGhlbiBoaWdoZXIgcHJpb3JpdHkuXG4gICAgICovXG4gICAgcmFuaz86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEFkZGl0aW9uYWwgc2V0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYWZmZWN0IFVJIG9mIHRoZSBmb3JtIGZpZWxkIGdyb3VwLlxuICAgICAqL1xuICAgIGd1aU9wdGlvbnM/OiBCYXNlRHluYW1pY0Zvcm1JdGVtR3VpT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUZpZWxkR3JvdXAgZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEdyb3VwIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBMaXN0IG9mIEBzZWUgRHluYW1pY0Zvcm1JdGVtIHJlcHJlc2VudGluZyB0aGUgbGlzdCBvZiBpdGVtc1xuICAgICAqIHRvIGJlIHJlbmRlcmVkIGluIHRoZSBmb3JtLlxuICAgICAqL1xuICAgIGl0ZW1zPzogRHluYW1pY0Zvcm1GaWVsZEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUZpZWxkR3JvdXBNYXAgZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEdyb3VwIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBNYXAgb2YgQHNlZSBEeW5hbWljRm9ybUl0ZW0gcmVwcmVzZW50aW5nIHRoZSBsaXN0IG9mIGl0ZW1zXG4gICAgICogdG8gYmUgcmVuZGVyZWQgaW4gdGhlIGZvcm0uXG4gICAgICovXG4gICAgaXRlbXM/OiBNYXA8c3RyaW5nLCBEeW5hbWljRm9ybUl0ZW1NYXA+O1xufVxuXG5leHBvcnQgdHlwZSBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxUID0gc3RyaW5nPiA9IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW08VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFR5cGUgb2YgdGhlIGZvcm0gaXRlbS4gRS5nLiBpbnB1dCwgdGV4dGFyZWEsIGNoZWNrYm94LCBldGMuXG4gICAgICovXG4gICAgdHlwZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIElEIG9mIHRoZSBmb3JtIGl0ZW0sIGlmIG5vdCBwcm92aWRlZCwgbmFtZSB3aWxsIGJlIHVzZWQgaW5zdGVhZFxuICAgICAqL1xuICAgIGlkPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogTmFtZSBvZiB0aGUgZm9ybSBpdGVtIGluIGZvcm0uXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRGlzcGxheSBuYW1lIG9mIHRoZSBmb3JtIGl0ZW0uXG4gICAgICogQHBhcmFtIGZvcm1WYWx1ZSB0aGUgZm9ybSB2YWx1ZSBoYXNoLlxuICAgICAqL1xuICAgIG1lc3NhZ2U6XG4gICAgICAgIHwgRmRwRm9ybUdlbmVyYXRvckFzeW5jUHJvcGVydHk8c3RyaW5nPlxuICAgICAgICB8ICgoZm9ybVZhbHVlPzogRHluYW1pY0Zvcm1WYWx1ZSkgPT4gRmRwRm9ybUdlbmVyYXRvckFzeW5jUHJvcGVydHk8c3RyaW5nPik7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBEaXNwbGF5IHBsYWNlaG9sZGVyIG9mIHRoZSBmb3JtIGl0ZW0uXG4gICAgICogQHBhcmFtIGZvcm1WYWx1ZSB0aGUgZm9ybSB2YWx1ZSBoYXNoLlxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyPzpcbiAgICAgICAgfCBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxzdHJpbmc+XG4gICAgICAgIHwgKChmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlKSA9PiBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxzdHJpbmc+KTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIElmIHRydWUsIHdpbGwgZmFsbCBiYWNrIHRvIGBtZXNzYWdlYCBwcm9wZXJ0eSBpZiBgcGxhY2Vob2xkZXJgIHdhcyBub3QgcHJvdmlkZWQuXG4gICAgICovXG4gICAgdXNlTWVzc2FnZUFzUGxhY2Vob2xkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRGVmYXVsdCB2YWx1ZSBvZiB0aGUgZm9ybSBpdGVtLlxuICAgICAqL1xuICAgIGRlZmF1bHQ/OiBGZHBGb3JtR2VuZXJhdG9yQXN5bmNQcm9wZXJ0eTxUPiB8ICgoZm9ybVZhbHVlPzogRHluYW1pY0Zvcm1WYWx1ZSkgPT4gRmRwRm9ybUdlbmVyYXRvckFzeW5jUHJvcGVydHk8VD4pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmVjZWl2ZSB0aGUgdXNlciBpbnB1dCBhbmQgZm9ybSB2YWx1ZSBoYXNoLlxuICAgICAqIFNob3VsZCByZXR1cm4gbnVsbCBpZiB0aGUgdmFsdWUgaXMgdmFsaWQsIGFuZCBhbiBlcnJvciBtZXNzYWdlIChTdHJpbmcpIG9yIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqIElmIGBmYWxzZWAgaXMgcmV0dXJuZWQsIGEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGlzIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSBmb3JtSXRlbVZhbHVlIHJhdyBmb3JtIGl0ZW0gdmFsdWUuXG4gICAgICogQHBhcmFtIGZvcm1WYWx1ZSB0aGUgZm9ybSB2YWx1ZSBoYXNoLlxuICAgICAqIEByZXR1cm5zIG51bGwgb3IgU3RyaW5nXG4gICAgICovXG4gICAgdmFsaWRhdGU/OiAoXG4gICAgICAgIGZvcm1JdGVtVmFsdWU6IFQsXG4gICAgICAgIGZvcm1WYWx1ZT86IER5bmFtaWNGb3JtVmFsdWVcbiAgICApID0+XG4gICAgICAgIHwgRHluYW1pY0Zvcm1JdGVtVmFsaWRhdGlvblJlc3VsdFxuICAgICAgICB8IFByb21pc2U8RHluYW1pY0Zvcm1JdGVtVmFsaWRhdGlvblJlc3VsdD5cbiAgICAgICAgfCBPYnNlcnZhYmxlPER5bmFtaWNGb3JtSXRlbVZhbGlkYXRpb25SZXN1bHQ+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhlIGxpc3Qgb2YgdmFsaWRhdG9ycyBhcHBsaWVkIHRvIHRoZSBmb3JtIGl0ZW0uXG4gICAgICovXG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW10gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhlIGxpc3Qgb2YgYXN5bmMgdmFsaWRhdG9ycyBhcHBsaWVkIHRvIHRoZSBmb3JtIGl0ZW0uXG4gICAgICovXG4gICAgYXN5bmNWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2V0IHdoZW4gZm9ybSBpdGVtIGlzIGEgbWFuZGF0b3J5IG9uZS5cbiAgICAgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNmb3JtcyByYXcgZm9ybSBpdGVtIHZhbHVlLlxuICAgICAqIEBwYXJhbSBmb3JtSXRlbVZhbHVlIHJhdyBmb3JtIGl0ZW0gdmFsdWUuXG4gICAgICogQHBhcmFtIGZvcm1WYWx1ZSB0aGUgZm9ybSB2YWx1ZSBoYXNoLlxuICAgICAqIEBwYXJhbSBmb3JtSXRlbSBAc2VlIER5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICogQHJldHVybnMgdXBkYXRlZCBmb3JtIGl0ZW0gdmFsdWUgdG8gYmUgdXNlZCBpbiB0aGUgZm9ybSB2YWx1ZSBoYXNoLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybWVyPzogKFxuICAgICAgICBmb3JtSXRlbVZhbHVlOiBULFxuICAgICAgICBmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlLFxuICAgICAgICBmb3JtSXRlbT86IER5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKSA9PiBhbnkgfCBQcm9taXNlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNmb3JtcyByYXcgZm9ybSBpdGVtIHZhbHVlIGZvciByZW5kZXIgcHVycG9zZXMuXG4gICAgICogQHBhcmFtIGZvcm1JdGVtVmFsdWUgcmF3IGZvcm0gaXRlbSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICogQHBhcmFtIGZvcm1JdGVtIEBzZWUgRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgKiBAcmV0dXJucyB1cGRhdGVkIGZvcm0gaXRlbSB2YWx1ZSB0byBiZSB1c2VkIGluIHRoZSBmb3JtIHZhbHVlIGhhc2ggZm9yIHJlbmRlcmluZyBwdXJwb3Nlcy5cbiAgICAgKi9cbiAgICB2YWx1ZVJlbmRlcmVyPzogKFxuICAgICAgICBmb3JtSXRlbVZhbHVlOiBULFxuICAgICAgICBmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlLFxuICAgICAgICBmb3JtSXRlbT86IER5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKSA9PiBhbnkgfCBQcm9taXNlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2hvdWxkIHJldHVybiB0cnVlIG9yIGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgZm9ybSBpdGVtIHNob3VsZCBiZSBhc2tlZC5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHRoZSBmb3JtIHZhbHVlIGhhc2guXG4gICAgICogQHBhcmFtIGZvcm1zIEFsbCBhdmFpbGFibGUgZm9ybXMgc3RvcmVkIGluIGZvcm0gZ2VuZXJhdG9yIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGNvbnRyb2wgRHluYW1pYyBmb3JtIGNvbnRyb2wuXG4gICAgICogQHJldHVybnMgQm9vbGVhblxuICAgICAqL1xuICAgIHdoZW4/OiAoXG4gICAgICAgIGZvcm1WYWx1ZTogRHluYW1pY0Zvcm1WYWx1ZSxcbiAgICAgICAgZm9ybXM6IE1hcDxzdHJpbmcsIER5bmFtaWNGb3JtR3JvdXA+LFxuICAgICAgICBjb250cm9sOiBEeW5hbWljRm9ybUdyb3VwQ29udHJvbFxuICAgICkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIGFmdGVyIGZpZWxkIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICogQHBhcmFtIGZpZWxkVmFsdWUgRmllbGQgdmFsdWUuXG4gICAgICogQHBhcmFtIGZvcm1zIEFsbCBhdmFpbGFibGUgZm9ybXMgc3RvcmVkIGluIGZvcm0gZ2VuZXJhdG9yIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGNvbnRyb2wgRHluYW1pYyBmb3JtIGNvbnRyb2wuXG4gICAgICovXG4gICAgb25jaGFuZ2U/OiAoXG4gICAgICAgIGZpZWxkVmFsdWU6IFQsXG4gICAgICAgIGZvcm1zOiBNYXA8c3RyaW5nLCBEeW5hbWljRm9ybUdyb3VwPixcbiAgICAgICAgY29udHJvbDogRHluYW1pY0Zvcm1Db250cm9sXG4gICAgKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB8IE9ic2VydmFibGU8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVXNlZCBhcyBhIHN0YXRpYyBmbGFnIG9uIHNob3VsZCB0aGlzIGZvcm0gaXRlbSBiZSBzaG93bi5cbiAgICAgKi9cbiAgICBzaG91bGRTaG93PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJhbmsgaXMgdXNlZCBmb3Igb3JkZXJpbmcuXG4gICAgICogVGhhbiBsb3dlciBudW1iZXIgdGhlbiBoaWdoZXIgcHJpb3JpdHkuXG4gICAgICovXG4gICAgcmFuaz86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEFkZGl0aW9uYWwgc2V0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYWZmZWN0IFVJIG9mIHRoZSBmb3JtIGl0ZW0gZm9ybSBjb250cm9sLlxuICAgICAqL1xuICAgIGd1aU9wdGlvbnM/OiBEeW5hbWljRm9ybUl0ZW1HdWlPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0RHluYW1pY0Zvcm1GaWVsZEl0ZW0gZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW08c3RyaW5nPiB7XG4gICAgdHlwZTogJ2lucHV0JyB8ICdlbWFpbCcgfCAnbnVtYmVyJyB8ICdwYXNzd29yZCc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQWRkaXRpb25hbCBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBhZmZlY3QgVUkgb2YgdGhlIGZvcm0gaXRlbSBmb3JtIGNvbnRyb2wuXG4gICAgICovXG4gICAgY29udHJvbFR5cGU/OiBJbnB1dFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlckR5bmFtaWNGb3JtRmllbGRJdGVtIGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPEZkRGF0ZT4ge1xuICAgIHR5cGU6ICdkYXRlcGlja2VyJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0QXJlYUR5bmFtaWNGb3JtRmllbGRJdGVtIGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPHN0cmluZz4ge1xuICAgIHR5cGU6ICdlZGl0b3InIHwgJ3RleHRhcmVhJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hEeW5hbWljRm9ybUZpZWxkSXRlbSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbTxib29sZWFuPiB7XG4gICAgdHlwZTogJ3N3aXRjaCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0RHluYW1pY0Zvcm1GaWVsZEl0ZW08VCA9IER5bmFtaWNGb3JtSXRlbUNob2ljZVR5cGVzPGFueT4+IGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPFQ+IHtcbiAgICB0eXBlOiAnc2VsZWN0JyB8ICdsaXN0JyB8ICdtdWx0aS1pbnB1dCc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMgdG8gc2VsZWN0LlxuICAgICAqIEBwYXJhbSBmb3JtVmFsdWUgcmF3IGZvcm0gaXRlbSB2YWx1ZS5cbiAgICAgKi9cbiAgICBjaG9pY2VzPzogRHluYW1pY0Zvcm1JdGVtQ2hvaWNlIHwgKChmb3JtVmFsdWU/OiBEeW5hbWljRm9ybVZhbHVlKSA9PiBEeW5hbWljRm9ybUl0ZW1DaG9pY2UpO1xuXG4gICAgc2Vjb25kYXJ5S2V5Pzogc3RyaW5nO1xuXG4gICAgLyoqIFNob3cgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBzaG93U2Vjb25kYXJ5VGV4dD86IGJvb2xlYW47XG5cbiAgICAvKiogSG9yaXpvbnRhbGx5IGFsaWduIHRleHQgaW5zaWRlIHRoZSBzZWNvbmQgY29sdW1uIChBcHBsaWNhYmxlIGZvciB0d28gY29sdW1ucyBsYXlvdXQpICovXG4gICAgc2Vjb25kYXJ5VGV4dEFsaWdubWVudD86IFRleHRBbGlnbm1lbnQ7XG4gICAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSB1c2VkIHRvIGJ1aWxkIGNvbnRyb2wgYm9keS4gKi9cbiAgICBjb250cm9sVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRHluYW1pY0Zvcm1GaWVsZEl0ZW0gZXh0ZW5kcyBPbWl0PFNlbGVjdER5bmFtaWNGb3JtRmllbGRJdGVtPGFueT4sICd0eXBlJz4ge1xuICAgIHR5cGU6ICdyYWRpbycgfCAnY29uZmlybSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hEeW5hbWljRm9ybUZpZWxkSXRlbSBleHRlbmRzIE9taXQ8U2VsZWN0RHluYW1pY0Zvcm1GaWVsZEl0ZW08YW55PiwgJ3R5cGUnPiB7XG4gICAgdHlwZTogJ2NoZWNrYm94Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RTdGF0dXNEeW5hbWljRm9ybUZpZWxkSXRlbSBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbTxzdHJpbmc+IHtcbiAgICB0eXBlOiAnb2JqZWN0LXN0YXR1cyc7XG4gICAgZ3VpT3B0aW9ucz86IEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbVsnZ3VpT3B0aW9ucyddICYge1xuICAgICAgICBzdGF0dXM/OiBPYmplY3RTdGF0dXM7XG4gICAgICAgIGljb24/OiBzdHJpbmc7XG4gICAgICAgIGluZGljYXRpb25Db2xvcj86IEluZGljYXRpb25Db2xvclR5cGU7XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbnlEeW5hbWljRm9ybUZpZWxkSXRlbTxUID0gYW55PiBleHRlbmRzIEJhc2VEeW5hbWljRm9ybUZpZWxkSXRlbTxUPiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zIHRvIHNlbGVjdC5cbiAgICAgKiBAcGFyYW0gZm9ybVZhbHVlIHJhdyBmb3JtIGl0ZW0gdmFsdWUuXG4gICAgICovXG4gICAgY2hvaWNlcz86IER5bmFtaWNGb3JtSXRlbUNob2ljZSB8ICgoZm9ybVZhbHVlPzogRHluYW1pY0Zvcm1WYWx1ZSkgPT4gRHluYW1pY0Zvcm1JdGVtQ2hvaWNlKTtcbn1cblxuZXhwb3J0IHR5cGUgRHluYW1pY0Zvcm1GaWVsZEl0ZW08XG4gICAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIFUgZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1GaWVsZEl0ZW0gPSBBbnlEeW5hbWljRm9ybUZpZWxkSXRlbVxuPiA9IFQgJlxuICAgIChcbiAgICAgICAgfCBJbnB1dER5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgRGF0ZVBpY2tlckR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgVGV4dEFyZWFEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICAgICB8IFN3aXRjaER5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgU2VsZWN0RHluYW1pY0Zvcm1GaWVsZEl0ZW1cbiAgICAgICAgfCBSYWRpb0R5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgQ2hlY2tib3hEeW5hbWljRm9ybUZpZWxkSXRlbVxuICAgICAgICB8IE9iamVjdFN0YXR1c0R5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgICAgIHwgVVxuICAgICAgICB8IEFueUR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKTtcblxudHlwZSBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtRmllbGRzID0ge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBkZWZhdWx0OiBhbnk7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgY2hvaWNlcz86IFNlbGVjdEl0ZW1bXTtcbn07XG5cbi8qKlxuICogQGhpZGRlblxuICogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHluYW1pY0Zvcm1GaWVsZEl0ZW0gd2l0aCBhbGwgZmllbGRzIHJlc29sdmVkIHRvIGEgcGxhaW4gdmFsdWVcbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZWREeW5hbWljRm9ybUZpZWxkSXRlbTxUIGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtID0gQmFzZUR5bmFtaWNGb3JtRmllbGRJdGVtPiA9IE9taXQ8XG4gICAgVCxcbiAgICBrZXlvZiBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtRmllbGRzXG4+ICZcbiAgICBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEeW5hbWljRm9ybUl0ZW1HdWlPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBEZWZpbmVzIGxhYmVsJ3MgY29sdW1uIGxheW91dC5cbiAgICAgKi9cbiAgICBsYWJlbENvbHVtbkxheW91dD86IENvbHVtbkxheW91dDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIERlZmluZXMgZmllbGQncyBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIGZpZWxkQ29sdW1uTGF5b3V0PzogQ29sdW1uTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogRGVmaW5lcyBnYXAgY29sdW1uIGxheW91dC5cbiAgICAgKi9cbiAgICBnYXBDb2x1bW5MYXlvdXQ/OiBDb2x1bW5MYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJZiBzZXQsIGhpbnQgaWNvbiBpcyBhZGRlZCB0byBjb250cm9sIGxhYmVsIG9yIGdyb3VwIGhlYWRpbmcgd2l0aCB0b29sdGlwIG1lc3NhZ2UgYXMgYSB2YWx1ZS5cbiAgICAgKi9cbiAgICBoaW50PzogSGludElucHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGb3JtSXRlbUd1aU9wdGlvbnMgZXh0ZW5kcyBCYXNlRHluYW1pY0Zvcm1JdGVtR3VpT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSW5kZXggb2YgY29sdW1uIGlmIGZvcm0gaGFzIG11bHRpLWNvbHVtbiBsYXlvdXQuXG4gICAgICovXG4gICAgY29sdW1uPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQ29sdW1uIGFycmFuZ2VtZW50IGZvciBmb3JtLWZpZWxkIGJhc2VkIG9uIHNjcmVlbiBzaXplLlxuICAgICAqL1xuICAgIGNvbHVtbkxheW91dD86IENvbHVtbkxheW91dDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIElubGluZSBsYXlvdXQgZm9yIGxpc3QgYmFzZWQgZm9ybSBpdGVtLlxuICAgICAqL1xuICAgIGlubGluZUxheW91dD86IElubGluZUxheW91dDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEZsYWcgaW5kaWNhdGluZyB0aGF0IGxhYmVsIHNob3VsZCBiZSBoaWRkZW4uXG4gICAgICovXG4gICAgbm9MYWJlbExheW91dD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJZiBzZXQsIGNvbnRyb2xzIGlubmVyIGVsZW1lbnRzIHdpbGwgYmUgaW5saW5lZC5cbiAgICAgKi9cbiAgICBpbmxpbmU/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogSWYgc2V0LCBvdmVycmlkZXMgY3VycmVudCBjb250ZW50IGRlbnNpdHkgb2YgdGhlIGVsZW1lbnQgZGVmaW5lZCBvbiB0aGUgZ2xvYmFsIHNjb3BlLlxuICAgICAqL1xuICAgIGNvbnRlbnREZW5zaXR5PzogQ29udGVudERlbnNpdHk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT2JqZWN0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcGF5bG9hZC4gVXNlZnVsIGZvciBjdXN0b20gZWxlbWVudHMgdG8gbWFuaXB1bGF0ZSBpdCdzIHZpZXcuXG4gICAgICovXG4gICAgYWRkaXRpb25hbERhdGE/OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBJZiBsYWJlbCBzaG91bGQgYmUgYXBwZW5kZWQgd2l0aCBjb2xvbi4gVHJ1ZSBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIGFwcGVuZENvbG9uPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEhpbnQgb3B0aW9ucy4gRWl0aGVyIG9ubHkgdGV4dCBvciBmdWxsIGNvbmZpZ1xuICAgICAqL1xuICAgIGhpbnQ/OiBGaWVsZEhpbnRJbnB1dDtcbn1cblxuZXhwb3J0IHR5cGUgRHluYW1pY0Zvcm1WYWx1ZSA9IFJlY29yZDxzdHJpbmcsIGFueT47XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Inject, Pipe, TemplateRef } from '@angular/core';
|
|
2
|
+
import { FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS } from '../form-generator.tokens';
|
|
3
|
+
import { defaultFormGeneratorHintOptions } from '../config/default-form-generator-hint-options';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class GetHintOptionsPipe {
|
|
6
|
+
/** @hidden */
|
|
7
|
+
constructor(_providedHintOptions) {
|
|
8
|
+
this._defaultHintOptions = {
|
|
9
|
+
...defaultFormGeneratorHintOptions,
|
|
10
|
+
..._providedHintOptions
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Used for extracting hintOptions from GuiOptions. This will coerce string | HintOptions to FieldHintOptions,
|
|
15
|
+
* will combine default value of hints for form generator with provided options.
|
|
16
|
+
*/
|
|
17
|
+
transform(hintOptions) {
|
|
18
|
+
if (!hintOptions?.hint) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const formItemHintOptions = hintOptions.hint;
|
|
22
|
+
if (typeof formItemHintOptions === 'string' || formItemHintOptions instanceof TemplateRef) {
|
|
23
|
+
return {
|
|
24
|
+
...this._defaultHintOptions,
|
|
25
|
+
content: formItemHintOptions
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
...this._defaultHintOptions,
|
|
30
|
+
...formItemHintOptions
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GetHintOptionsPipe, deps: [{ token: FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
34
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: GetHintOptionsPipe, isStandalone: true, name: "getHintOptions" }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GetHintOptionsPipe, decorators: [{
|
|
37
|
+
type: Pipe,
|
|
38
|
+
args: [{
|
|
39
|
+
name: 'getHintOptions',
|
|
40
|
+
standalone: true
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
43
|
+
type: Inject,
|
|
44
|
+
args: [FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS]
|
|
45
|
+
}] }]; } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWhpbnQtb3B0aW9ucy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvcGlwZXMvZ2V0LWhpbnQtb3B0aW9ucy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBTWhHLE1BQU0sT0FBTyxrQkFBa0I7SUFJM0IsY0FBYztJQUNkLFlBQTZELG9CQUFzQztRQUMvRixJQUFJLENBQUMsbUJBQW1CLEdBQUc7WUFDdkIsR0FBRywrQkFBK0I7WUFDbEMsR0FBRyxvQkFBb0I7U0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQ0wsV0FBa0Y7UUFFbEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7WUFDcEIsT0FBTztTQUNWO1FBQ0QsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzdDLElBQUksT0FBTyxtQkFBbUIsS0FBSyxRQUFRLElBQUksbUJBQW1CLFlBQVksV0FBVyxFQUFFO1lBQ3ZGLE9BQU87Z0JBQ0gsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2dCQUMzQixPQUFPLEVBQUUsbUJBQW1CO2FBQy9CLENBQUM7U0FDTDtRQUNELE9BQU87WUFDSCxHQUFHLElBQUksQ0FBQyxtQkFBbUI7WUFDM0IsR0FBRyxtQkFBbUI7U0FDekIsQ0FBQztJQUNOLENBQUM7OEdBakNRLGtCQUFrQixrQkFLUCx1Q0FBdUM7NEdBTGxELGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFKOUIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQU1nQixNQUFNOzJCQUFDLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkSGludE9wdGlvbnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBCYXNlRHluYW1pY0Zvcm1JdGVtR3VpT3B0aW9ucywgRHluYW1pY0Zvcm1JdGVtR3VpT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHluYW1pYy1mb3JtLWl0ZW0nO1xuaW1wb3J0IHsgRkRQX0ZPUk1fR0VORVJBVE9SX0RFRkFVTFRfSElOVF9PUFRJT05TIH0gZnJvbSAnLi4vZm9ybS1nZW5lcmF0b3IudG9rZW5zJztcbmltcG9ydCB7IGRlZmF1bHRGb3JtR2VuZXJhdG9ySGludE9wdGlvbnMgfSBmcm9tICcuLi9jb25maWcvZGVmYXVsdC1mb3JtLWdlbmVyYXRvci1oaW50LW9wdGlvbnMnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2dldEhpbnRPcHRpb25zJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEdldEhpbnRPcHRpb25zUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEhpbnRPcHRpb25zOiBGaWVsZEhpbnRPcHRpb25zO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEZEUF9GT1JNX0dFTkVSQVRPUl9ERUZBVUxUX0hJTlRfT1BUSU9OUykgX3Byb3ZpZGVkSGludE9wdGlvbnM6IEZpZWxkSGludE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdEhpbnRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdEZvcm1HZW5lcmF0b3JIaW50T3B0aW9ucyxcbiAgICAgICAgICAgIC4uLl9wcm92aWRlZEhpbnRPcHRpb25zXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBmb3IgZXh0cmFjdGluZyBoaW50T3B0aW9ucyBmcm9tIEd1aU9wdGlvbnMuIFRoaXMgd2lsbCBjb2VyY2Ugc3RyaW5nIHwgSGludE9wdGlvbnMgdG8gRmllbGRIaW50T3B0aW9ucyxcbiAgICAgKiB3aWxsIGNvbWJpbmUgZGVmYXVsdCB2YWx1ZSBvZiBoaW50cyBmb3IgZm9ybSBnZW5lcmF0b3Igd2l0aCBwcm92aWRlZCBvcHRpb25zLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybShcbiAgICAgICAgaGludE9wdGlvbnM6IEJhc2VEeW5hbWljRm9ybUl0ZW1HdWlPcHRpb25zIHwgRHluYW1pY0Zvcm1JdGVtR3VpT3B0aW9ucyB8IHVuZGVmaW5lZFxuICAgICk6IEZpZWxkSGludE9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWhpbnRPcHRpb25zPy5oaW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUl0ZW1IaW50T3B0aW9ucyA9IGhpbnRPcHRpb25zLmhpbnQ7XG4gICAgICAgIGlmICh0eXBlb2YgZm9ybUl0ZW1IaW50T3B0aW9ucyA9PT0gJ3N0cmluZycgfHwgZm9ybUl0ZW1IaW50T3B0aW9ucyBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHRIaW50T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBmb3JtSXRlbUhpbnRPcHRpb25zXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0SGludE9wdGlvbnMsXG4gICAgICAgICAgICAuLi5mb3JtSXRlbUhpbnRPcHRpb25zXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
@@ -7,10 +7,14 @@ export class GetOrderedFieldControlsPipe {
|
|
|
7
7
|
return Object.values(field.controls).sort((a, b) => (a.formItem.rank ?? -Infinity) > (b.formItem.rank ?? -Infinity) ? 1 : -1);
|
|
8
8
|
}
|
|
9
9
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GetOrderedFieldControlsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: GetOrderedFieldControlsPipe, name: "getOrderedFieldControls" }); }
|
|
10
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: GetOrderedFieldControlsPipe, isStandalone: true, name: "getOrderedFieldControls", pure: false }); }
|
|
11
11
|
}
|
|
12
12
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GetOrderedFieldControlsPipe, decorators: [{
|
|
13
13
|
type: Pipe,
|
|
14
|
-
args: [{
|
|
14
|
+
args: [{
|
|
15
|
+
name: 'getOrderedFieldControls',
|
|
16
|
+
pure: false,
|
|
17
|
+
standalone: true
|
|
18
|
+
}]
|
|
15
19
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW9yZGVyZWQtZm9ybS1jb250cm9scy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvcGlwZXMvZ2V0LW9yZGVyZWQtZm9ybS1jb250cm9scy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQVFwRCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3BDLGNBQWM7SUFDZCxTQUFTLENBQUMsS0FBOEI7UUFDcEMsZ0hBQWdIO1FBQ2hILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBRSxLQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUM1RSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRCxDQUFDO0lBQzlCLENBQUM7OEdBUFEsMkJBQTJCOzRHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBTHZDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db250cm9sLCBEeW5hbWljRm9ybUNvbnRyb2xHcm91cCwgRHluYW1pY0Zvcm1Hcm91cENvbnRyb2wgfSBmcm9tICcuLi9keW5hbWljLWZvcm0tY29udHJvbCc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ2V0T3JkZXJlZEZpZWxkQ29udHJvbHMnLFxuICAgIHB1cmU6IGZhbHNlLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgR2V0T3JkZXJlZEZpZWxkQ29udHJvbHNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFuc2Zvcm0oZmllbGQ6IER5bmFtaWNGb3JtR3JvdXBDb250cm9sKTogRHluYW1pY0Zvcm1Db250cm9sW10ge1xuICAgICAgICAvLyBjYXN0aW5nIHR5cGUgZXhwbGljaXR5IHRvIHRoZSBEeW5hbWljRm9ybUNvbnRyb2xbXSBhcyB0aGlzIHBpcGUgd2lsbCBiZSB1c2VkIHNwZWNpZmljYWxseSB3aXRoIHRoaXMgZGF0YSB0eXBlXG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKChmaWVsZCBhcyBEeW5hbWljRm9ybUNvbnRyb2xHcm91cCkuY29udHJvbHMpLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAoYS5mb3JtSXRlbS5yYW5rID8/IC1JbmZpbml0eSkgPiAoYi5mb3JtSXRlbS5yYW5rID8/IC1JbmZpbml0eSkgPyAxIDogLTFcbiAgICAgICAgKSBhcyBEeW5hbWljRm9ybUNvbnRyb2xbXTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -30,4 +30,4 @@ export const defaultFormGeneratorItemConfigProvider = {
|
|
|
30
30
|
provide: FORM_GENERATOR_ITEM_CONFIG,
|
|
31
31
|
useValue: defaultFormGeneratorItemConfig
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvcHJvdmlkZXJzL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUl0RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBbUI7SUFDcEQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztDQUNwRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQW1CO0lBQ3pELE9BQU8sRUFBRSw0QkFBNEI7SUFDckMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztDQUNwRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQXVCLHlCQUF5QixDQUFDLENBQUM7QUFFOUcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFcEcsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXdCO0lBQzNELG9CQUFvQixFQUFFLEdBQUc7SUFDekIscUJBQXFCLEVBQUUsV0FBVztDQUNyQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQWE7SUFDeEQsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixRQUFRLEVBQUUsMEJBQTBCO0NBQ3ZDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBa0M7SUFDekUsdUJBQXVCLEVBQUUsSUFBSTtJQUM3QixRQUFRLEVBQUUsS0FBSztJQUNmLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7Q0FDekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFhO0lBQzVELE9BQU8sRUFBRSwwQkFBMEI7SUFDbkMsUUFBUSxFQUFFLDhCQUE4QjtDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyLCBTdGF0aWNQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbmltcG9ydCB7IEZPUk1fR1JPVVBfQ0hJTERfRklFTERfVE9LRU4gfSBmcm9tICcuLi8uLi9mb3JtLWdyb3VwL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWdyb3VwL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1GaWVsZEl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2R5bmFtaWMtZm9ybS1pdGVtJztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zvcm0tZ2VuZXJhdG9yLW1vZHVsZS1jb25maWcnO1xuXG5leHBvcnQgY29uc3QgZHluYW1pY0Zvcm1GaWVsZFByb3ZpZGVyOiBTdGF0aWNQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBGRF9GT1JNX0ZJRUxELFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm1GaWVsZENvbXBvbmVudClcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbWljRm9ybUdyb3VwQ2hpbGRQcm92aWRlcjogU3RhdGljUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogRk9STV9HUk9VUF9DSElMRF9GSUVMRF9UT0tFTixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtRmllbGRDb21wb25lbnQpXG59O1xuXG5leHBvcnQgY29uc3QgRk9STV9HRU5FUkFUT1JfSVRFTV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48RHluYW1pY0Zvcm1GaWVsZEl0ZW0+KCdGb3JtR2VuZXJhdG9ySXRlbUNvbmZpZycpO1xuXG5leHBvcnQgY29uc3QgRk9STV9HRU5FUkFUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1HZW5lcmF0b3JDb25maWc+KCdGb3JtR2VuZXJhdG9yQ29uZmlnJyk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Rm9ybUdlbmVyYXRvckNvbmZpZzogRm9ybUdlbmVyYXRvckNvbmZpZyA9IHtcbiAgICBjb250cm9sTmFtZVNlcGFyYXRvcjogJ3wnLFxuICAgIHVuZ3JvdXBlZENvbnRyb2xzTmFtZTogJ3VuZ3JvdXBlZCdcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Rm9ybUdlbmVyYXRvckNvbmZpZ1Byb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBGT1JNX0dFTkVSQVRPUl9DT05GSUcsXG4gICAgdXNlVmFsdWU6IGRlZmF1bHRGb3JtR2VuZXJhdG9yQ29uZmlnXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1HZW5lcmF0b3JJdGVtQ29uZmlnOiBQYXJ0aWFsPER5bmFtaWNGb3JtRmllbGRJdGVtPiA9IHtcbiAgICB1c2VNZXNzYWdlQXNQbGFjZWhvbGRlcjogdHJ1ZSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMubnVsbFZhbGlkYXRvcl1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Rm9ybUdlbmVyYXRvckl0ZW1Db25maWdQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogRk9STV9HRU5FUkFUT1JfSVRFTV9DT05GSUcsXG4gICAgdXNlVmFsdWU6IGRlZmF1bHRGb3JtR2VuZXJhdG9ySXRlbUNvbmZpZ1xufTtcbiJdfQ==
|
|
@@ -577,7 +577,7 @@ export class FormFieldComponent {
|
|
|
577
577
|
});
|
|
578
578
|
}
|
|
579
579
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormGroupContainer, optional: true }, { token: i1.FormFieldGroup, optional: true }, { token: RESPONSIVE_BREAKPOINTS_CONFIG, optional: true }, { token: i1.ResponsiveBreakpointsService }, { token: FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT }, { token: FDP_FORM_FIELD_HINT_LAYOUT_CONFIG }, { token: i2.FormFieldLayoutService, self: true }, { token: i2.FormFieldLayoutService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
580
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: FormFieldComponent, selector: "fdp-form-field", inputs: { label: "label", id: "id", hint: "hint", noLabelLayout: "noLabelLayout", validators: "validators", rank: "rank", placeholder: "placeholder", column: "column", columnLayout: "columnLayout", labelColumnLayout: "labelColumnLayout", fieldColumnLayout: "fieldColumnLayout", gapColumnLayout: "gapColumnLayout", i18Strings: "i18Strings", required: "required", editable: "editable", columns: "columns", disabled: "disabled", colon: "colon", formGroupContainer: "formGroupContainer" }, outputs: { onChange: "onChange", onColumnChange: "onColumnChange" }, providers: [formFieldProvider, formGroupChildProvider, FormFieldLayoutService], queries: [{ propertyName: "formFieldExtras", first: true, predicate: FormFieldControlExtrasComponent, descendants: true, read: ElementRef }, { propertyName: "_errorDirectiveQuery", predicate: FormFieldErrorDirective }], viewQueries: [{ propertyName: "renderer", first: true, predicate: ["renderer"], descendants: true, static: true }, { propertyName: "labelCol", first: true, predicate: ["labelCol"], descendants: true }, { propertyName: "inputMessageGroup", first: true, predicate: InputMessageGroupWithTemplate, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<ng-template #renderer>\n <div [horizontal]=\"true\" fd-form-item class=\"fd-row\">\n <div\n class=\"fd-col\"\n #labelCol\n [class]=\"_labelColumnLayoutClass\"\n *ngIf=\"!noLabelLayout\"\n [style.margin-bottom.px]=\"_controlExtrasHeightPx\"\n >\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </div>\n <ng-container *ngTemplateOutlet=\"withFormMessage\"></ng-container>\n <ng-container *ngTemplateOutlet=\"gapTemplate\"></ng-container>\n </div>\n <span aria-hidden=\"true\" style=\"display: none\" [id]=\"'fdp-form-hint-' + id\">\n <ng-container *ngIf=\"isStringHint(hintOptions.content); else hintTemplate\">\n {{ hintOptions.content }}\n </ng-container>\n <ng-template #hintTemplate>\n <ng-template [ngTemplateOutlet]=\"$any(hintOptions.content)\"></ng-template>\n </ng-template>\n </span>\n</ng-template>\n\n<ng-template #withFormMessage>\n <fdp-input-message-group\n class=\"fd-col\"\n [class]=\"_fieldColumnLayoutClass\"\n [attr.aria-labelledby]=\"'fdp-form-label-' + id\"\n >\n <!--\n Todo: we should extend this on FormGroup Level and have error trigger strategy that will be applied to\n all the field e.g.: [triggers]=\"['mouseenter', 'mouseleave']\"\n -->\n\n <ng-template #triggerItem>\n <ng-content></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"hasErrors() && groupedErrors.length > 0\">\n <fd-form-message *ngFor=\"let error of groupedErrors\" [type]=\"error.directive.type\">\n <ng-template\n [ngIf]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n <ng-container *ngIf=\"error.directive._headingTemplateRef && error.directive._descriptionTemplateRef\">\n <br />\n </ng-container>\n <ng-template\n [ngIf]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n </fd-form-message>\n </ng-container>\n\n <fd-form-message *ngIf=\"groupedErrors.length === 0 && hasErrors() && i18Strings\" type=\"error\">\n <ng-container *ngTemplateOutlet=\"i18Strings; context: { $implicit: control?.ngControl?.errors }\">\n </ng-container>\n </fd-form-message>\n </fdp-input-message-group>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"hintTarget === 'label'; else withoutHint\">\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [inlineHelpContent]=\"hintOptions.content\"\n [inlineHelpBodyPlacement]=\"hintOptions.placement || 'top'\"\n [inlineHelpPlacement]=\"hintOptions.position || 'after'\"\n [inlineHelpGlyph]=\"hintOptions.glyph || ''\"\n [inlineHelpTriggers]=\"hintOptions.trigger || []\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n [colon]=\"colon\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-container>\n <ng-template #withoutHint>\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [colon]=\"colon\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-template>\n</ng-template>\n\n<ng-template #gapTemplate>\n <ng-container *ngIf=\"hintTarget === 'input' && hintOptions.content; else withoutHint\">\n <div class=\"fd-col fd-form-field-inline-help-container\" [class]=\"_gapColumnLayoutClass\">\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"hintOptions.content\"\n [glyph]=\"hintOptions.glyph\"\n [placement]=\"hintOptions.placement || null\"\n [triggers]=\"hintOptions.trigger || []\"\n tabindex=\"0\"\n >\n </fd-icon>\n </span>\n </div>\n </ng-container>\n <ng-template #withoutHint>\n <div class=\"fd-col\" [class]=\"_gapColumnLayoutClass\"></div>\n </ng-template>\n</ng-template>\n", styles: [".fd-form-label__wrapper{display:flex;width:100%;white-space:nowrap}.fd-form-field-inline-help-container{overflow:visible!important}.fd-form-field-inline-help-container [class*=sap-icon]{margin:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i4.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i4.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "directive", type: i5.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i6.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i7.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i8.InputMessageGroupWithTemplate, selector: "fdp-input-message-group" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
580
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: FormFieldComponent, selector: "fdp-form-field", inputs: { label: "label", id: "id", hint: "hint", noLabelLayout: "noLabelLayout", validators: "validators", rank: "rank", placeholder: "placeholder", column: "column", columnLayout: "columnLayout", labelColumnLayout: "labelColumnLayout", fieldColumnLayout: "fieldColumnLayout", gapColumnLayout: "gapColumnLayout", i18Strings: "i18Strings", required: "required", editable: "editable", columns: "columns", disabled: "disabled", colon: "colon", formGroupContainer: "formGroupContainer" }, outputs: { onChange: "onChange", onColumnChange: "onColumnChange" }, providers: [formFieldProvider, formGroupChildProvider, FormFieldLayoutService], queries: [{ propertyName: "formFieldExtras", first: true, predicate: FormFieldControlExtrasComponent, descendants: true, read: ElementRef }, { propertyName: "_errorDirectiveQuery", predicate: FormFieldErrorDirective }], viewQueries: [{ propertyName: "renderer", first: true, predicate: ["renderer"], descendants: true, static: true }, { propertyName: "labelCol", first: true, predicate: ["labelCol"], descendants: true }, { propertyName: "inputMessageGroup", first: true, predicate: InputMessageGroupWithTemplate, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<ng-template #renderer>\n <div [horizontal]=\"true\" fd-form-item class=\"fd-row\">\n <div\n class=\"fd-col\"\n #labelCol\n [class]=\"_labelColumnLayoutClass\"\n *ngIf=\"!noLabelLayout\"\n [style.margin-bottom.px]=\"_controlExtrasHeightPx\"\n >\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n </div>\n <ng-container *ngTemplateOutlet=\"withFormMessage\"></ng-container>\n <ng-container *ngTemplateOutlet=\"gapTemplate\"></ng-container>\n </div>\n <span aria-hidden=\"true\" style=\"display: none\" [id]=\"'fdp-form-hint-' + id\">\n <ng-container *ngIf=\"isStringHint(hintOptions.content); else hintTemplate\">\n {{ hintOptions.content }}\n </ng-container>\n <ng-template #hintTemplate>\n <ng-template [ngTemplateOutlet]=\"$any(hintOptions.content)\"></ng-template>\n </ng-template>\n </span>\n</ng-template>\n\n<ng-template #withFormMessage>\n <fdp-input-message-group\n class=\"fd-col\"\n [class]=\"_fieldColumnLayoutClass\"\n [attr.aria-labelledby]=\"'fdp-form-label-' + id\"\n >\n <!--\n Todo: we should extend this on FormGroup Level and have error trigger strategy that will be applied to\n all the field e.g.: [triggers]=\"['mouseenter', 'mouseleave']\"\n -->\n\n <ng-template #triggerItem>\n <ng-content></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"hasErrors() && groupedErrors.length > 0\">\n <fd-form-message *ngFor=\"let error of groupedErrors\" [type]=\"error.directive.type\">\n <ng-template\n [ngIf]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._headingTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n <ng-container *ngIf=\"error.directive._headingTemplateRef && error.directive._descriptionTemplateRef\">\n <br />\n </ng-container>\n <ng-template\n [ngIf]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutlet]=\"error.directive._descriptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error, label: label }\"\n >\n </ng-template>\n </fd-form-message>\n </ng-container>\n\n <fd-form-message *ngIf=\"groupedErrors.length === 0 && hasErrors() && i18Strings\" type=\"error\">\n <ng-container *ngTemplateOutlet=\"i18Strings; context: { $implicit: control?.ngControl?.errors }\">\n </ng-container>\n </fd-form-message>\n </fdp-input-message-group>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"hintTarget === 'label'; else withoutHint\">\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [inlineHelpContent]=\"hintOptions.content\"\n [inlineHelpBodyPlacement]=\"hintOptions.placement || 'top'\"\n [inlineHelpPlacement]=\"hintOptions.position || 'after'\"\n [inlineHelpGlyph]=\"hintOptions.glyph || ''\"\n [inlineHelpTriggers]=\"hintOptions.trigger || []\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n [colon]=\"colon\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-container>\n <ng-template #withoutHint>\n <label\n [id]=\"'fdp-form-label-' + id\"\n [required]=\"editable && required\"\n fd-form-label\n [colon]=\"colon\"\n [alignLabelEnd]=\"!!(isHorizontal$ | async)\"\n >\n <span [id]=\"'fdp-form-label-content-' + id\">{{ label }}</span>\n </label>\n </ng-template>\n</ng-template>\n\n<ng-template #gapTemplate>\n <ng-container *ngIf=\"hintTarget === 'input' && hintOptions.content; else withoutHint\">\n <div class=\"fd-col fd-form-field-inline-help-container\" [class]=\"_gapColumnLayoutClass\">\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"hintOptions.content\"\n [glyph]=\"hintOptions.glyph\"\n [placement]=\"hintOptions.placement || null\"\n [triggers]=\"hintOptions.trigger || []\"\n tabindex=\"0\"\n >\n </fd-icon>\n </span>\n </div>\n </ng-container>\n <ng-template #withoutHint>\n <div class=\"fd-col\" [class]=\"_gapColumnLayoutClass\"></div>\n </ng-template>\n</ng-template>\n", styles: [".fd-form-label__wrapper{display:flex;width:100%;white-space:nowrap}.fd-form-field-inline-help-container{overflow:visible!important}.fd-form-field-inline-help-container [class*=sap-icon]{margin:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i4.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i4.FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "directive", type: i5.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i6.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i7.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i8.InputMessageGroupWithTemplate, selector: "fdp-input-message-group", inputs: ["triggers"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
581
581
|
}
|
|
582
582
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
583
583
|
type: Component,
|
|
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
23
23
|
}], propDecorators: { fieldGroup: [{
|
|
24
24
|
type: Input
|
|
25
25
|
}] } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1ncm91cC9mb3JtLWdyb3VwLWhlYWRlci9mb3JtLWdyb3VwLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAtaGVhZGVyL2Zvcm0tZ3JvdXAtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFlN0YsTUFBTSxPQUFPLHdCQUF3QjtJQUtqQyxtQkFBbUI7SUFDbkIsSUFBSSxXQUFXO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1NBQ3RDO1FBRUQsT0FBTztJQUNYLENBQUM7OEdBWlEsd0JBQXdCO2tHQUF4Qix3QkFBd0Isc0tDZnJDLDgxQkF3QkE7OzJGRFRhLHdCQUF3QjtrQkFWcEMsU0FBUzsrQkFFSSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsK0JBQStCLEVBQUUsTUFBTTtxQkFDMUM7OEJBS0QsVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIaW50T3B0aW9ucyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRmllbGRHcm91cCB9IGZyb20gJy4uLy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRwLWZvcm0tZ3JvdXAtaGVhZGVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZ3JvdXAtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5mZC1mb3JtLWdyb3VwX19oZWFkZXJdJzogJ3RydWUnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR3JvdXBIZWFkZXJDb21wb25lbnQge1xuICAgIC8qKiBGaWVsZHMgR3JvdXAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpZWxkR3JvdXA6IE51bGxhYmxlPEZpZWxkR3JvdXA+O1xuXG4gICAgLyoqIEhpbnQgb3B0aW9ucyAqL1xuICAgIGdldCBoaW50T3B0aW9ucygpOiBIaW50T3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkR3JvdXA/LmhpbnRPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZEdyb3VwLmhpbnRPcHRpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZEdyb3VwICYmIGhpbnRPcHRpb25zPy5wb3NpdGlvbiA9PT0gJ2JlZm9yZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lSGVscFJlZlwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxoNiBjbGFzcz1cImZkLWZvcm0tZ3JvdXBfX2hlYWRlci10ZXh0XCI+XG4gICAge3sgZmllbGRHcm91cD8ubGFiZWwgfX1cbjwvaDY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZEdyb3VwICYmIGhpbnRPcHRpb25zPy5wb3NpdGlvbiA9PT0gJ2FmdGVyJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVIZWxwUmVmXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpbmxpbmVIZWxwUmVmPlxuICAgIDxzcGFuICpuZ0lmPVwiaGludE9wdGlvbnNcIiBmZC1saW5rIFt1bmRlY29yYXRlZF09XCJ0cnVlXCI+XG4gICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICBbc3R5bGUudmVydGljYWwtYWxpZ25dPVwiJ21pZGRsZSdcIlxuICAgICAgICAgICAgW2ZkLWlubGluZS1oZWxwXT1cImhpbnRPcHRpb25zLmNvbnRlbnRcIlxuICAgICAgICAgICAgW2dseXBoXT1cImhpbnRPcHRpb25zLmdseXBoXCJcbiAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiaGludE9wdGlvbnMucGxhY2VtZW50IHx8IG51bGxcIlxuICAgICAgICAgICAgW3RyaWdnZXJzXT1cImhpbnRPcHRpb25zLnRyaWdnZXIgfHwgW11cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgPjwvZmQtaWNvbj5cbiAgICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -23,13 +23,14 @@ import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
|
23
23
|
import { Subject, Subscription } from 'rxjs';
|
|
24
24
|
import { resizeObservable } from '@fundamental-ngx/cdk/utils';
|
|
25
25
|
import { FormGroupContainer } from '@fundamental-ngx/platform/shared';
|
|
26
|
-
import {
|
|
26
|
+
import { getField, getFormField, isFieldChild, isFieldGroupChild, isFieldGroupWrapperChild } from '../form-helpers';
|
|
27
27
|
import { FormFieldErrorDirective } from './form-field-error/form-field-error.directive';
|
|
28
28
|
import { DefaultGapLayout, DefaultHorizontalFieldLayout, DefaultHorizontalLabelLayout, DefaultVerticalFieldLayout, FORM_GROUP_CHILD_FIELD_TOKEN } from './constants';
|
|
29
29
|
import { generateColumnClass, normalizeColumnLayout } from './helpers';
|
|
30
30
|
import { FormFieldLayoutService } from './services/form-field-layout.service';
|
|
31
31
|
import { FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT } from './fdp-form.tokens';
|
|
32
32
|
import { contentDensityObserverProviders, ContentDensityObserver } from '@fundamental-ngx/core/content-density';
|
|
33
|
+
import { FieldGroup } from '../models/field.model';
|
|
33
34
|
import * as i0 from "@angular/core";
|
|
34
35
|
import * as i1 from "@angular/forms";
|
|
35
36
|
import * as i2 from "@fundamental-ngx/core/content-density";
|
|
@@ -531,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
531
532
|
type: ContentChildren,
|
|
532
533
|
args: [FORM_GROUP_CHILD_FIELD_TOKEN, { descendants: true }]
|
|
533
534
|
}] } });
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUlILGtCQUFrQixFQUlyQixNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFHSCxVQUFVLEVBQ1YsUUFBUSxFQUNSLFlBQVksRUFDWixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUMzQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pC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QkFEMUIsZUFBZTt1QkFBQyw0QkFBbUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBGLiBLb2xhclxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqXG4gKi9cbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBQcm92aWRlcixcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQ29sdW1uTGF5b3V0LFxuICAgIEZpZWxkSGludE9wdGlvbnMsXG4gICAgRm9ybUZpZWxkR3JvdXAsXG4gICAgRm9ybUdyb3VwQ29udGFpbmVyLFxuICAgIEhpbnRJbnB1dCxcbiAgICBIaW50T3B0aW9ucyxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgRmllbGQsXG4gICAgRmllbGRDb2x1bW4sXG4gICAgRmllbGRHcm91cCxcbiAgICBnZXRGaWVsZCxcbiAgICBnZXRGb3JtRmllbGQsXG4gICAgaXNGaWVsZENoaWxkLFxuICAgIGlzRmllbGRHcm91cENoaWxkLFxuICAgIGlzRmllbGRHcm91cFdyYXBwZXJDaGlsZFxufSBmcm9tICcuLi9mb3JtLWhlbHBlcnMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tZmllbGQtZXJyb3IvZm9ybS1maWVsZC1lcnJvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgRGVmYXVsdEdhcExheW91dCxcbiAgICBEZWZhdWx0SG9yaXpvbnRhbEZpZWxkTGF5b3V0LFxuICAgIERlZmF1bHRIb3Jpem9udGFsTGFiZWxMYXlvdXQsXG4gICAgRGVmYXVsdFZlcnRpY2FsRmllbGRMYXlvdXQsXG4gICAgRk9STV9HUk9VUF9DSElMRF9GSUVMRF9UT0tFTlxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUNvbHVtbkNsYXNzLCBub3JtYWxpemVDb2x1bW5MYXlvdXQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTGF5b3V0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZm9ybS1maWVsZC1sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBGRFBfRk9STV9GSUVMRF9ISU5UX09QVElPTlNfREVGQVVMVCB9IGZyb20gJy4vZmRwLWZvcm0udG9rZW5zJztcbmltcG9ydCB7IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMsIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZvcm1GaWVsZCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IGZvcm1Hcm91cFByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBGb3JtR3JvdXBDb250YWluZXIsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9ybUdyb3VwQ29tcG9uZW50KVxufTtcblxudHlwZSBGb3JtR3JvdXBGaWVsZCA9IChGb3JtRmllbGQgfCBGb3JtRmllbGRHcm91cCkgJiB7IGhpbnRPcHRpb25zPzogSGludE9wdGlvbnMgfTtcblxubGV0IGZvcm1Hcm91cFVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKlxuICogRm9ybUdyb3VwIHJlcHJlc2VudCBoaWdoIG9yZGVyIGNvbnRhaW5lciBhZ2dyZWdhdGluZyBGb3JtRmllbGRzIGFuZCBhYmlsaXR5IHRvIGRpc3RyaWJ1dGUgdGhlc2VcbiAqIGZpZWxkcyBpbnRvIGNvbHVtbnMuIEl0IG1haW5seSBoaWRlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgd2UgbmVlZCB0byBkZWFsIHdpdGggZXZlcnlcbiAqIHRpbWUgd2UgYXJlIGJ1aWxkaW5nIGEgZm9ybS4gV2UgaGF2ZSBpbnB1dCBmaWVsZHMgLCBlcnJvciBtYW5hZ2VtZW50cywgZGlmZmVyZW50IHN0YXRlcyxcbiAqIGhpbnRzIGFuZCBtYW55IG1vcmUuXG4gKlxuICogV2VsbCBiZWhhdmVkIGZvcm0gdGhhdCBoYXMgaW5mb3JtYXRpb24gc2lkZSBieSBzaWRlIGluIG11bHRpcGxlXG4gKiBjb2x1bW5zIG5lZWRzIHRvIGFsc28ga25vdyBob3cgdG8gbWVyZ2UgcHJvcGVybHkuXG4gKlxuICogSnVzdCB0byBnZXQgdGhlIGlkZWEgYWJvdXQgdGhlIHN0cnVjdHVyZSB3aXRob3V0IGFjdHVhbCBpbnB1dCBjb21wb25lbnRzIGluc2lkZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZHAtZm9ybS1ncm91cCBbaGludFBsYWNlbWVudF09XCInaW5saW5lJ1wiIGNvbHVtbkxheW91dD1cIlhMMi1MMi1NMS1TMVwiPlxuICogICAgPGZkcC1mb3JtLWZpZWxkIFtpZF09XCInRmllbGQgQSdcIiBbcmFua109XCIxMFwiIGNvbHVtbj1cIjFcIj5cbiAqICAgIDwvZmRwLWZvcm0tZmllbGQ+XG4gKlxuICogICAgPGZkcC1mb3JtLWZpZWxkIFtpZF09XCInRmllbGQgQidcIiBbcmFua109XCIzMFwiIGNvbHVtbj1cIjFcIj5cbiAqICAgIDwvZmRwLWZvcm0tZmllbGQ+XG4gKlxuICogICAgPGZkcC1mb3JtLWZpZWxkIFtpZF09XCInRmllbGQgQydcIiAgW3JhbmtdPVwiMjBcIiBjb2x1bW49XCIxXCI+XG4gKiAgICA8L2ZkcC1mb3JtLWZpZWxkPlxuICpcbiAqICAgIDxmZHAtZm9ybS1maWVsZCBbaWRdPVwiRmllbGQgRFwiICBbcmFua109XCIyMFwiIGNvbHVtbj1cIjJcIj5cbiAqICAgIDwvZmRwLWZvcm0tZmllbGQ+XG4gKlxuICpcbiAqICAgIDxmZHAtZm9ybS1maWVsZCBbaWRdPVwiJ0ZpZWxkIEUnXCIgW3JhbmtdPVwiMzBcIiBjb2x1bW49XCIyXCI+XG4gKiAgICA8L2ZkcC1mb3JtLWZpZWxkPlxuICogPC9mZHAtZm9ybS1ncm91cD5cblxuICpcbiAqIGBgYGBcbiAqXG4gKlxuICogV2hpY2ggY2FuIGJlIHRyYW5zbGF0ZWQgbGlrZSB0aGlzXG4gKiBbRmllbGQgQV0gLSBGaXJzdCBjb2x1bW4sIHJhbmsgMTBcbiAqIFtGaWVsZCBCXSAtIEZpcnN0IGNvbHVtbiwgcmFuayAzMFxuICogW0ZpZWxkIENdIC0gRmlyc3QgY29sdW1uLCByYW5rIDIwXG4gKiBbRmllbGQgRF0gLSBTZWNvbmQgY29sdW1uLCByYW5rIDIwXG4gKiBbRmllbGQgRV0gLSBTZWNvbmQgY29sdW1uLCByYW5rIDMwXG4gKlxuICogV2hhdCB3ZSBleHBlY3QgdGhhdCBpdCBjcmVhdGVzIGZvbGxvd2luZyBmb3JtIHdpdGggdHdvIGNvbHVtbiBsYXlvdXQ6XG4gKiBbRmllbGQgQV0gICAgICBbRmllbGQgRF1cbiAqIFtGaWVsZCBDXSAgICAgIFtGaWVsZCBFXVxuICogW0ZpZWxkIEJdXG4gKlxuICogWW91IGNhbiBzZWUgYWxsIGlzIHNvcnRlZCBhY2NvcmRpbmdseSBieSByYW5rIChDIGdvZXMgYmVmb3JlIEIpLlxuICpcbiAqIFdoZW4geW91IG1vdmUgaW50byBzbWFsbGVyIGRldmljZSBhbmQgYWxsIGlzIG1lcmdlZCBpbnRvIG9uZSBjb2x1bW5zIHRoZSBuYWl2ZSBzb2x1dGlvbiB3b3VsZCBiZTpcbiAqXG4gKiBbRmllbGQgQV1cbiAqIFtGaWVsZCBDXVxuICogW0ZpZWxkIEJdXG4gKiBbRmllbGQgRF1cbiAqIFtGaWVsZCBFXVxuICpcbiAqIFRoZSBmaWVsZHMgbmVlZHMgdG8gcmVzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIHRoZWlyIG9yaWdpbmFsIHBvc2l0aW9uaW5nLiBXaGVuIEZpZWxkIEQgd2FzIG9uIHRoZVxuICogdG9wIHdoeSB3ZSBzaG91bGQgbW92ZSBpdCB0byB0aGUgYm90dG9tPyBUaGUgbW9yZSBjb3JyZWN0IHNvbHV0aW9uIHNob3VsZCBiZSBmb2xsb3dpbmcuXG4gKlxuICogW0ZpZWxkIEFdXG4gKiBbRmllbGQgRF1cbiAqIFtGaWVsZCBDXVxuICogW0ZpZWxkIEVdXG4gKiBbRmllbGQgQl1cbiAqXG4gKiBGaWVsZHMgbmljZWx5IG1lcmdlIHRvZ2V0aGVyLiB0aGV5IGRvbid0IHdyYXAuXG4gKlxuICpcbiAqIEJlc2lkZXMgdGhpcyBsYXlvdXQgc3VwcG9ydCBpdCBhbHNvIHdyYXBzIGZvcm0gZnVuY3Rpb25hbGl0eSBhbmQgaXQgY2FuIHdvcmsgd2l0aCBGb3JtR3JvdXAuXG4gKiBZb3UgY2FuIGFsc28gZGVjaWRlIGlmIHlvdSB3YW50IHlvdXIgZm9ybSB3aXRoIDxmb3JtPiBlbGVtZW50IG9yIHdpdGhvdXQgaXQuXG4gKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtZm9ybS1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICdmb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtmb3JtR3JvdXBQcm92aWRlciwgRm9ybUZpZWxkTGF5b3V0U2VydmljZSwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR3JvdXBDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIEZvcm1Hcm91cENvbnRhaW5lciwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICAgIC8qKiBJZCBmb3IgdGhlIGZvcm0gZ3JvdXAgZWxlbWVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQgPSBgZmRwLWZvcm0tZ3JvdXAtJHtmb3JtR3JvdXBVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogTmFtZSBwcm9wZXJ0eSB0byBiZSBzZXQgb24gYSBmb3JtLiBXaWxsIGJlIHVzZWQgaWYgYHVzZUZvcm1gIGlzIHNldCB0byB0cnVlICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogSW5kaWNhdGVzIGlmIGdyb3VwIGlzIGVkaXRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBlZGl0YWJsZSA9IHRydWU7XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gbGFiZWxzIHNob3VsZCBub3QgYmUgZGlzcGxheWVkICovXG4gICAgQElucHV0KClcbiAgICBub0xhYmVsTGF5b3V0ID0gZmFsc2U7XG5cbiAgICAvKiogVXNlcidzIGN1c3RvbSBjbGFzc2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRm9ybSBncm91cCBoaW50IG9wdGlvbnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpbnQ6IEhpbnRJbnB1dDtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgY29sdW1uIGxheW91dCBmb3IgaW5saW5lIGl0ZW1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlubGluZUNvbHVtbkxheW91dCh2YWx1ZTogQ29sdW1uTGF5b3V0KSB7XG4gICAgICAgIHRoaXMuX2lubGluZUNvbHVtbkxheW91dCA9IG5vcm1hbGl6ZUNvbHVtbkxheW91dCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUlubGluZUNvbHVtbkxheW91dCgpO1xuICAgIH1cblxuICAgIGdldCBpbmxpbmVDb2x1bW5MYXlvdXQoKTogQ29sdW1uTGF5b3V0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZUNvbHVtbkxheW91dDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbmxpbmVDb2x1bW5MYXlvdXRDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbmxpbmVDb2x1bW5MYXlvdXQgPSBEZWZhdWx0VmVydGljYWxGaWVsZExheW91dDtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgbGFiZWwncyBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFiZWxDb2x1bW5MYXlvdXQ6IENvbHVtbkxheW91dCA9IERlZmF1bHRIb3Jpem9udGFsTGFiZWxMYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGZpZWxkJ3MgY29sdW1uIGxheW91dC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpZWxkQ29sdW1uTGF5b3V0OiBDb2x1bW5MYXlvdXQgPSBEZWZhdWx0SG9yaXpvbnRhbEZpZWxkTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBnYXAgY29sdW1uIGxheW91dC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdhcENvbHVtbkxheW91dDogQ29sdW1uTGF5b3V0ID0gRGVmYXVsdEdhcExheW91dDtcblxuICAgIC8qKiBBbmd1bGFyIEZvcm1Hcm91cCB3aGVyZSBhbGwgdW5kZXJseWluZyBjb250cm9scyB3aWxsIGJlIGF0dGFjaGVkIHRvLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgICAvKiogVGhpcyBpcyByYXRoZXIgc2ltcGxlIGZvciBub3cganVzdCB0byBoYXZlIHNvbWUgU2VjdGlvbiBUaXRsZSBpZiBuZWVkZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHRvcFRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogRm9ybSdzIG1haW4gdGl0bGUuICovXG4gICAgQElucHV0KClcbiAgICBtYWluVGl0bGU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0byBoaWRlIGZvcm0ncyBtYWluIHRpdGxlLiBEZWZhdWx0IGlzIGZhbHNlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGlkZU1haW5USXRsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVuaWVudCB3YXkgdG8gaW5pdGlhbGl6ZSBpbnRlcm5hbCBGb3JtQ29udHJvbHMgZnJvbSBvYmplY3RcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG9iamVjdDogYW55O1xuXG4gICAgLyoqXG4gICAgICogVHJhbnNsYXRpb25zIHRlbXBsYXRlIHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMganVzdCBoZXJlIHRvIHN1cHBvcnQgc2V2ZXJhbCB3YXlzIHRvIHBhc3MgdHJhbnNsYXRpb24uXG4gICAgICpcbiAgICAgKiBPbmUgd2F5IGlzIHRvIHByb3ZpZGUgbmctdGVtcGxhdGUgI2kxOG4gaW5zaWRlIHRoZSBmb3JtLWdyb3VwIHRhZyBhbmQgdGhlIG90aGVyIG9uZVxuICAgICAqIHNvbWUgZ2xvYmFsIG9uZSBhcyBiaW5kaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpMThTdHJpbmdzOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gd3JhcCBhbGwgdGhlIHByb3ZpZGVkIGNvbnRlbnQgaW4gYSBgPGZvcm0+YCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHVzZUZvcm0odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl91c2VGb3JtID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHVzZUZvcm0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VGb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgdGhlIGNvbHVtbiBsYXlvdXQgaW4gdGhlIGZvcm1hdCBgWExuLUxuLU1uLVNuYCB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbmQgY2FuIGJlIGRpZmZlcmVudCBmb3IgZWFjaCBzaXplLlxuICAgICAqIGVnOiBYTDItTDItTTItUzEgd291bGQgY3JlYXRlIDItY29sdW1uIGxheW91dHMgZm9yIFhMLCBMLCBhbmQgTSBzaXplcyBhbmQgc2luZ2xlLWNvbHVtbiBsYXlvdXQgZm9yIFMgc2l6ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbkxheW91dDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBXaGV0aGVyIGFsbCBmb3JtIGl0ZW1zIHNob3VsZCBoYXZlIGlkZW50aWNhbCBsYXlvdXQgcHJvdmlkZWQgZm9yIGZvcm0gZ3JvdXAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaWZpZWRMYXlvdXQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogb25TdWJtaXQgZXZlbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvblN1Ym1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBmb3JtIGVsZW1lbnQuIEF2YWlsYWJsZSB3aXRoIGBbdXNlRm9ybV09XCJ0cnVlXCJgIGlucHV0IHByb3BlcnR5LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ25hdGl2ZUZvcm0nLCB7IHJlYWQ6IE5nRm9ybSB9KVxuICAgIG5hdGl2ZUZvcm06IE5nRm9ybTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZCgnaTE4bicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgaTE4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmUpXG4gICAgcHJpdmF0ZSBfZXJyb3JEaXJlY3RpdmVzOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkRXJyb3JEaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqXG4gICAgICogS2VlcCB0cmFjayBvZiBhZGRlZCBmb3JtIGZpZWxkcyBjaGlsZHJlbiBpbiBjb3JyZWN0IG9yZGVyLlxuICAgICAqXG4gICAgICogU2luY2UgXCJkZXNjZW5kYW50czogdHJ1ZVwiIGluY2x1ZGVzIGZpZWxkcyBvZiBuZXN0ZWQgZm9ybSBncm91cCBhcyB3ZWxsLlxuICAgICAqXG4gICAgICogV2UgYXJlIGZvcmNlZCB0byB1c2UgXCJDb250ZW50Q2hpbGRyZW5cIiBzbyBGb3JtRmllbGQgY2hpbGRyZW4gY2FuIGJlIHVzZWRcbiAgICAgKiB3aXRoIG9wdGlvbmFsIHJlbmRlcmluZyAobmdJZikgc2FmZWx5LlxuICAgICAqXG4gICAgICogRm9ybSBmaWVsZHMgd2l0aGluIHRoZSBmb3JtR3JvdXAgaXMgZHJpdmVuIGJ5IG11bHRpLXpvbmUgbGF5b3V0IHN1cHBvcnQuIFdlIG5lZWQgdG8gYmVcbiAgICAgKiBhYmxlIHRvIGFkZCBudW1iZXIgb2YgRm9ybUZpZWxkcywgYW5kIGJhc2VkIG9uIGdpdmVuIGNvbmZpZ3VyYXRpb24gKHpvbmUsIHJhbmspIHJlbmRlciB0aGVtXG4gICAgICogdW5kZXIgY29ycmVjdCB6b25lICAodG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0KS5cbiAgICAgKlxuICAgICAqIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgaW5jbHVkZSBjb250ZW50IGFuZCB0aGVuIHRyeSB0byBzb21laG93IHBvc2l0aW9uIGl0IGFzIGl0XG4gICAgICogd291bGQgbGVhZCB0byB0aGUgVUkgd2hlcmUgdXNlciBjYW4gc2VlIGVsZW1lbnRpbmcgbW92aW5nIGFzIHlvdSB0cnkgdG8gcG9zaXRpb24gaXQuXG4gICAgICpcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZPUk1fR1JPVVBfQ0hJTERfRklFTERfVE9LRU4gYXMgYW55LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGZvcm1Hcm91cENoaWxkcmVuOiBRdWVyeUxpc3Q8Rm9ybUdyb3VwRmllbGQ+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqXG4gICAgICogTGlzdCBvZiBkaXJlY3QgRmRwRm9ybUdyb3VwJ3MgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBTaW5jZSBcImZvcm1Hcm91cENoaWxkcmVuXCIgdXNlcyBcInsgZGVzY2VuZGFudHM6IHRydWUgfVwiIG9wdGlvbiB0aGF0IG1lYW5zXG4gICAgICogXCJmb3JtR3JvdXBDaGlsZHJlblwiIHdpbGwga2VlcCB0cmFjayBvZiBuZXN0ZWQgRmRwRm9ybUdyb3VwIGZpZWxkcyBhcyB3ZWxsLlxuICAgICAqIFRoaXMgbGlzdCByZWxpZXMgb24gdGhlIGluamVjdGlvbiBtZWNoYW5pc20gc28gbmVzdGVkIEZkcEZvcm1Hcm91cCdzIGZpZWxkcy9maWVsZEdyb3Vwc1xuICAgICAqIHdpbGwgYmUgb21pdHRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2Zvcm1Hcm91cERpcmVjdENoaWxkcmVuOiBBcnJheTxGb3JtR3JvdXBGaWVsZD4gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgeGxDb2x1bW5zTnVtYmVyOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsZ0NvbHVtbnNOdW1iZXI6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1kQ29sdW1uc051bWJlcjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFVzZXIgcmVzcG9uc2l2ZSBsYXlvdXRcbiAgICAgKi9cbiAgICB4bENvbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBhY2tlZCBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIHJlbmRlcmVkXG4gICAgICovXG4gICAgZm9ybVJvd3M6IHsgW2tleTogbnVtYmVyXTogRmllbGRDb2x1bW4gfCBGaWVsZEdyb3VwIH0gPSB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpbnRPcHRpb25zOiBIaW50T3B0aW9ucztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXNlRm9ybSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICByZWFkb25seSBjb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICBASW5qZWN0KEZEUF9GT1JNX0ZJRUxEX0hJTlRfT1BUSU9OU19ERUZBVUxUKSBwcml2YXRlIF9kZWZhdWx0SGludE9wdGlvbnM6IEZpZWxkSGludE9wdGlvbnNcbiAgICApIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAgPSA8Rm9ybUdyb3VwPih0aGlzLmZvcm1Db250YWluZXIgPyB0aGlzLmZvcm1Db250YWluZXIuY29udHJvbCA6IG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIGlmIChjaGFuZ2VzLmhpbnQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5oaW50ID09PSAnc3RyaW5nJyB8fCB0aGlzLmhpbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hpbnRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0SGludE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuaGludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hpbnRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0SGludE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaGludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl91cGRhdGVJbmxpbmVDb2x1bW5MYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pMThTdHJpbmdzID0gdGhpcy5pMThTdHJpbmdzID8gdGhpcy5pMThTdHJpbmdzIDogdGhpcy5pMThUZW1wbGF0ZTtcblxuICAgICAgICB0aGlzLl9zZXRVc2VyTGF5b3V0KCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUZpZWxkQnlDb2x1bW4oKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRm9ybUZpZWxkc1Byb3BlcnRpZXMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Gb3JtR3JvdXBDaGlsZHJlbigpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Gb3JtRmllbGRDb2x1bW5DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaTE4U3RyaW5ncyA9IHRoaXMuaTE4U3RyaW5ncyA/IHRoaXMuaTE4U3RyaW5ncyA6IHRoaXMuaTE4VGVtcGxhdGU7XG5cbiAgICAgICAgdGhpcy5fc2V0VXNlckxheW91dCgpO1xuICAgICAgICB0aGlzLl91cGRhdGVGaWVsZEJ5Q29sdW1uKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUZvcm1GaWVsZHNQcm9wZXJ0aWVzKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUdyb3VwQ2hpbGRyZW4oKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuRm9ybUZpZWxkQ29sdW1uQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX3RyYWNrRm9ybUdyb3VwUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWRkRm9ybUZpZWxkKGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQpOiB2b2lkIHtcbiAgICAgICAgLy8gSXQncyBuZWVkZWQgdG8gc2V0IGRlZmF1bHQgRm9ybUZpZWxkIHByb3BlcnRpZXNcbiAgICAgICAgLy8gb24gZWFybHkgc3RhZ2Ugb3RoZXJ3aXNlIHZhbGlkYXRpb24gZXJyb3JzXG4gICAgICAgIC8vIHdpbGwgYmUgdGhyb3duIG9uIEZvcm1GaWVsZCBsZXZlbCAoZS5nLiBpMThzdHJpbmcgYXJlIG5vdCBkZWZpbmVkKVxuICAgICAgICB0aGlzLl91cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZvcm1GaWVsZCk7XG4gICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgZGlyZWN0bHkgcmVnaXN0ZXJlZCBjaGlsZHJlblxuICAgICAgICB0aGlzLl9hZGREaXJlY3RGb3JtR3JvdXBDaGlsZChmb3JtRmllbGQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlRm9ybUZpZWxkKGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlRGlyZWN0Rm9ybUdyb3VwQ2hpbGQoZm9ybUZpZWxkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZEZvcm1GaWVsZEdyb3VwKGZvcm1GaWVsZEdyb3VwOiBGb3JtRmllbGRHcm91cCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZGREaXJlY3RGb3JtR3JvdXBDaGlsZChmb3JtRmllbGRHcm91cCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVGb3JtRmllbGRHcm91cChmb3JtRmllbGRHcm91cDogRm9ybUZpZWxkR3JvdXApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlRGlyZWN0Rm9ybUdyb3VwQ2hpbGQoZm9ybUZpZWxkR3JvdXApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWRkRm9ybUNvbnRyb2wobmFtZTogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuc2V0Q29udHJvbChuYW1lLCBjb250cm9sKTtcbiAgICAgICAgLy8gbGV0dGluZyBjb250cm9sIHRvIHNldCB2YWx1ZS4gd2hlbiBwcm92aWRlZCB2YWx1ZSBpcyAnZmFsc2UnLlxuICAgICAgICBpZiAodGhpcy5vYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLm9iamVjdFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUZvcm1Db250cm9sKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKG5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFja0J5RmllbGROYW1lKGluZGV4OiBudW1iZXIsIGZpZWxkOiBGaWVsZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBmaWVsZCA/IGZpZWxkLm5hbWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFsnZmQtY29udGFpbmVyJywgdGhpcy5jbGFzc107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gdXNlZCBmb3IgdGVtcGxhdGUgc2lkZSBUeXBlIGNvcnJlY3Rpb24gKi9cbiAgICAkZmllbGRHcm91cCA9IChmOiBhbnkpOiBGaWVsZEdyb3VwID0+IGY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRm9ybUdyb3VwQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwQ2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRmllbGRCeUNvbHVtbigpO1xuICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRm9ybUZpZWxkQ29sdW1uQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cENoaWxkcmVuLmZvckVhY2goKGZpZWxkOiBGb3JtR3JvdXBGaWVsZCkgPT5cbiAgICAgICAgICAgICg8Rm9ybUZpZWxkQ29tcG9uZW50PmZpZWxkKS5vbkNvbHVtbkNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVGaWVsZEJ5Q29sdW1uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBc3NpZ24gYSBmaWVsZHMgb3IgZmllbGQgZ3JvdXAgdG8gc3BlY2lmaWVkIGNvbHVtbnMgd2l0aCByYW5rLlxuICAgICAqIGlmIGBjb2x1bW5MYXlvdXRUeXBlYCBpcyBnaXZlbiBhIGZpZWxkcyB3aXRob3V0IGNvbHVtbiBwcm9wZXJ0eSB3aWxsIHNldCBvbiBsYXN0IGNvbHVtbi5cbiAgICAgKiBPdGhlcndpc2UgdGhlIGZpZWxkcyBzZXQgMSBjb2x1bW4uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRmllbGRCeUNvbHVtbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybUNoaWxkcmVuID0gdGhpcy5fZ2V0Rm9ybUdyb3VwQ2hpbGRyZW4oKTtcbiAgICAgICAgY29uc3Qgcm93czogeyBba2V5OiBudW1iZXJdOiBGaWVsZENvbHVtbiB8IEZpZWxkR3JvdXAgfSA9IHt9O1xuICAgICAgICBsZXQgcm93TnVtYmVyID0gMDtcbiAgICAgICAgbGV0IGNvbHVtbnM6IEZpZWxkQ29sdW1uID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBmb3JtQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGlmIChpc0ZpZWxkQ2hpbGQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBnZXRGaWVsZChjaGlsZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTnVtYmVyID0gdGhpcy5fdmFsaWRhdGVGaWVsZENvbHVtbihjaGlsZC5jb2x1bW4pO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5zW2NvbHVtbk51bWJlcl0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5OdW1iZXJdID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uTnVtYmVyXS5wdXNoKGZpZWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzRmllbGRHcm91cENoaWxkKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkR3JvdXBDb2x1bW5zOiBGaWVsZENvbHVtbiA9IHt9O1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhjb2x1bW5zKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93c1tyb3dOdW1iZXJdID0gY29sdW1ucztcbiAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICByb3dOdW1iZXIrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBncm91cEZpZWxkcyA9IGNoaWxkLmZpZWxkcy5tYXAoKGZpZWxkKSA9PiBnZXRGaWVsZChmaWVsZCkpO1xuICAgICAgICAgICAgICAgIGdyb3VwRmllbGRzLmZvckVhY2goKGdyb3VwRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTnVtYmVyID0gdGhpcy5fdmFsaWRhdGVGaWVsZENvbHVtbihncm91cEZpZWxkLmNvbHVtbik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZEdyb3VwQ29sdW1uc1tjb2x1bW5OdW1iZXJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ29sdW1uc1tjb2x1bW5OdW1iZXJdID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cENvbHVtbnNbY29sdW1uTnVtYmVyXS5wdXNoKGdyb3VwRmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcm93c1tyb3dOdW1iZXJdID0gbmV3IEZpZWxkR3JvdXAoY2hpbGQubGFiZWwsIGZpZWxkR3JvdXBDb2x1bW5zLCBjaGlsZC5oaW50T3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcm93TnVtYmVyKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcm93c1tyb3dOdW1iZXJdID0gY29sdW1ucztcbiAgICAgICAgdGhpcy5mb3JtUm93cyA9IHJvd3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVmFsaWRhdGUgY29sdW1uIG51bWJlciAqL1xuICAgIHByaXZhdGUgX3ZhbGlkYXRlRmllbGRDb2x1bW4oY29sdW1uTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5jb2x1bW5MYXlvdXQgJiYgY29sdW1uTnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAoaXNOYU4oY29sdW1uTnVtYmVyKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgYSB2YWxpZCBjb2x1bW4gbnVtYmVyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2x1bW5OdW1iZXIgPiB0aGlzLnhsQ29sdW1uc051bWJlcikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1ucyBjYW5ub3QgYmUgbW9yZSB0aGFuICR7dGhpcy54bENvbHVtbnNOdW1iZXJ9YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5OdW1iZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy54bENvbHVtbnNOdW1iZXI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVGb3JtRmllbGRzUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ2V0Rm9ybUdyb3VwQ2hpbGRyZW4oKS5mb3JFYWNoKChmb3JtRmllbGQ6IEZvcm1Hcm91cEZpZWxkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNGaWVsZENoaWxkKGZvcm1GaWVsZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZvcm1GaWVsZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0ZpZWxkR3JvdXBDaGlsZChmb3JtRmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4gdGhpcy5fdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhnZXRGb3JtRmllbGQoZmllbGQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQYXNzIHNvbWUgZ2xvYmFsIHByb3BlcnRpZXMgdG8gZWFjaCBmaWVsZC4gRXZlbiBmb3JtR3JvdXAgY25hIGJlIGluamVjdCBkaXJlY3RseSBpbnNpZGUgZm9ybVxuICAgICAqIGZpZWxkIHdlIGFyZSB1c2luZyBoZXJlIGEgc2V0dGVyIG1ldGhvZCB0byBpbml0aWFsaXplIHRoZVxuICAgICAqXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVuaWZpZWRMYXlvdXQpIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC5lZGl0YWJsZSA9IHRoaXMuZWRpdGFibGU7XG4gICAgICAgICAgICBmb3JtRmllbGQubm9MYWJlbExheW91dCA9IHRoaXMubm9MYWJlbExheW91dDtcbiAgICAgICAgfVxuICAgICAgICBmb3JtRmllbGQuc2V0RGVmYXVsdENvbHVtbkxheW91dCgpO1xuICAgICAgICBmb3JtRmllbGQuaTE4U3RyaW5ncyA9IGZvcm1GaWVsZC5pMThTdHJpbmdzID8gZm9ybUZpZWxkLmkxOFN0cmluZ3MgOiB0aGlzLmkxOFN0cmluZ3M7XG4gICAgICAgIGZvcm1GaWVsZC5zZXRFcnJvckRpcmVjdGl2ZXModGhpcy5fZXJyb3JEaXJlY3RpdmVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogaWYgYGNvbHVtbkxheW91dFR5cGVgIGlzIGdpdmVuLCBzZXQgdGhvc2UgY29sdW1uIGxheW91dHMgYXBwcm9wcmlhdGVseS4gT3RoZXJ3aXNlLCBhIGxheW91dCB3aWxsIHNldCBvbiAxIGNvbHVtblxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldFVzZXJMYXlvdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbkxheW91dCkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0Q29sdW1uTnVtYmVycyh0aGlzLmNvbHVtbkxheW91dCk7XG4gICAgICAgICAgICBpZiAoaXNOYU4odGhpcy54bENvbHVtbnNOdW1iZXIpIHx8IGlzTmFOKHRoaXMubGdDb2x1bW5zTnVtYmVyKSB8fCBpc05hTih0aGlzLm1kQ29sdW1uc051bWJlcikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGEgdmFsaWQgbnVtYmVyIGZvciBjb2x1bW5zJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy54bENvbHVtbnNOdW1iZXIgPiAxMiB8fCB0aGlzLmxnQ29sdW1uc051bWJlciA+IDEyIHx8IHRoaXMubWRDb2x1bW5zTnVtYmVyID4gMTIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbnMgY2Fubm90IGJlIG1vcmUgdGhhbiAxMicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGdDb2x1bW5zID0gMTIgLyB0aGlzLmxnQ29sdW1uc051bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IG1kQ29sdW1ucyA9IDEyIC8gdGhpcy5tZENvbHVtbnNOdW1iZXI7XG4gICAgICAgICAgICBjb25zdCB4bENvbHVtbnMgPSAxMiAvIHRoaXMueGxDb2x1bW5zTnVtYmVyO1xuXG4gICAgICAgICAgICAvLyBmb3IgYGxnYCBzaW5nbGUtY29sdW1uIGxheW91dCwgU3R5bGVzIGRvZXMgbm90IHVzZSBhbnkgY2xhc3MsIGFuZCBwcm92aWRpbmcgYGZkLWNvbC1sZy0tMTJgIGhhcyB1bmludGVuZGVkIHNpZGUtZWZmZWN0c1xuICAgICAgICAgICAgLy8gdGhlcmVmb3JlLCB3ZSByZW1vdmUgdGhlIGxnIGNsYXNzIGZvciBzaW5nbGUtY29sdW1uIGxheW91dFxuICAgICAgICAgICAgaWYgKGxnQ29sdW1ucyA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnhsQ29sID0gYGZkLWNvbC14bC0tJHt4bENvbHVtbnN9IGZkLWNvbC1tZC0tJHttZENvbHVtbnN9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy54bENvbCA9IGBmZC1jb2wteGwtLSR7eGxDb2x1bW5zfSBmZC1jb2wtbWQtLSR7bWRDb2x1bW5zfSBmZC1jb2wtbGctLSR7bGdDb2x1bW5zfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnhsQ29sID0gYGZkLWNvbC14bC0tMTIgZmQtY29sLW1kLS0xMiBmZC1jb2wtbGctLTEyYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29sdW1uTnVtYmVycyhsYXlvdXQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBbeGwsIGxnLCBtZF0gPSBsYXlvdXQuc3BsaXQoJy0nKTtcbiAgICAgICAgdGhpcy54bENvbHVtbnNOdW1iZXIgPSBwYXJzZUludCh4bC5zbGljZSgyLCB4bC5sZW5ndGgpLCAxMCk7XG4gICAgICAgIHRoaXMubGdDb2x1bW5zTnVtYmVyID0gcGFyc2VJbnQobGcuc2xpY2UoMSwgbGcubGVuZ3RoKSwgMTApO1xuICAgICAgICB0aGlzLm1kQ29sdW1uc051bWJlciA9IHBhcnNlSW50KG1kLnNsaWNlKDEsIG1kLmxlbmd0aCksIDEwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZERpcmVjdEZvcm1Hcm91cENoaWxkKGNoaWxkOiBGb3JtR3JvdXBGaWVsZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZm9ybUdyb3VwRGlyZWN0Q2hpbGRyZW4uaW5kZXhPZihjaGlsZCkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1Hcm91cERpcmVjdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVtb3ZlRGlyZWN0Rm9ybUdyb3VwQ2hpbGQoY2hpbGQ6IFBsYXRmb3JtRm9ybUZpZWxkIHwgRm9ybUZpZWxkR3JvdXApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUdyb3VwRGlyZWN0Q2hpbGRyZW4gPSB0aGlzLl9mb3JtR3JvdXBEaXJlY3RDaGlsZHJlbi5maWx0ZXIoKF9jaGlsZCkgPT4gX2NoaWxkICE9PSBjaGlsZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdldCBkaXJlY3QgZm9ybSBncm91cCBjaGlsZHJlbiBpbiB0aGUgb3JpZ2luYWwgb3JkZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRGb3JtR3JvdXBDaGlsZHJlbigpOiBGb3JtR3JvdXBGaWVsZFtdIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cENoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmZvcm1Hcm91cENoaWxkcmVuXG4gICAgICAgICAgICAudG9BcnJheSgpXG4gICAgICAgICAgICAubWFwKChjaGlsZCkgPT4gKGlzRmllbGRHcm91cFdyYXBwZXJDaGlsZChjaGlsZCkgPyBjaGlsZC5maWVsZFJlbmRlcmVyIDogY2hpbGQpKTtcblxuICAgICAgICByZXR1cm4gY2hpbGRyZW4uZmlsdGVyKChjaGlsZCkgPT4gdGhpcy5fZm9ybUdyb3VwRGlyZWN0Q2hpbGRyZW4uaW5jbHVkZXMoY2hpbGQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUlubGluZUNvbHVtbkxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5saW5lQ29sdW1uTGF5b3V0Q2xhc3MgPSBnZW5lcmF0ZUNvbHVtbkNsYXNzKHRoaXMuaW5saW5lQ29sdW1uTGF5b3V0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogaGF2ZSB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaGVyZSBpbiBvcmRlciB0byByZS1jaGVjayBjb250ZW50c1xuICAgICAqIGluc2lkZSBcIkZvcm1GaWVsZC5yZW5kZXJlclwiIHRlbXBsYXRlIGV2ZXJ5IHRpbWUgY29tcG9uZW50J3MgZGltZW5zaW9ucyBjaGFuZ2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdHJhY2tGb3JtR3JvdXBSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2QubWFya0ZvckNoZWNrKCkpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGZvcm0gI25hdGl2ZUZvcm0gKG5nU3VibWl0KT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiICpuZ0lmPVwidXNlRm9ybTsgZWxzZSBib2R5XCIgW2lkXT1cImlkXCIgW25hbWVdPVwibmFtZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5XCI+PC9uZy1jb250YWluZXI+XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keT5cbiAgICA8IS0tICBSZW5kZXIgZmllbGRzIGFuZCBmaWVsZCBncm91cHMgd2l0aCBhc3NpZ25lZCBjb2x1bW5zIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZHNcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmllbGRzPlxuICAgIDxkaXYgKm5nSWY9XCJtYWluVGl0bGUgJiYgIWhpZGVNYWluVEl0bGVcIiBjbGFzcz1cImZkLWZvcm0taGVhZGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJtYWluVGl0bGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtY29udGFpbmVyIGZkLWZvcm0tbGF5b3V0LWdyaWQtY29udGFpbmVyXCJcbiAgICAgICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGZvcm1Sb3dzIHwga2V5dmFsdWU7IHRyYWNrQnk6IHRyYWNrQnlGblwiIGNsYXNzPVwiZmQtcm93XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkcyBvZiBjb2x1bW4gfCBmaWVsZEdyb3VwUm93VmFsdWUgfCBrZXl2YWx1ZTsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jb2wgZmQtZm9ybS1ncm91cFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInhsQ29sXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtcm93XCIgKm5nSWY9XCIkZmllbGRHcm91cChjb2x1bW4udmFsdWUpIGFzIHZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2YWx1ZS5sYWJlbFwiIGZkcC1mb3JtLWdyb3VwLWhlYWRlciBbZmllbGRHcm91cF09XCJpbmRleCA9PT0gMCA/IHZhbHVlIDogbnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkcy52YWx1ZTsgdHJhY2tCeTogdHJhY2tCeUZpZWxkTmFtZVwiIGNsYXNzPVwiZmQtcm93IGZkLWZvcm0taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY29sXCIgW2NsYXNzXT1cIl9pbmxpbmVDb2x1bW5MYXlvdXRDbGFzc1wiIFtzdHlsZS5vcmRlcl09XCJmaWVsZC5yYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGQ/LnJlbmRlcmVyIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEZvciBuZXN0ZWQgZm9ybS1ncm91cCAtLT5cbjxuZy1jb250ZW50IHNlbGVjdD1cImZkcC1mb3JtLWdyb3VwXCI+PC9uZy1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI21haW5UaXRsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfaGludE9wdGlvbnM/LmNvbnRlbnQgJiYgX2hpbnRPcHRpb25zLnBvc2l0aW9uID09PSAnYmVmb3JlJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGludFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxoNSBjbGFzcz1cImZkLWZvcm0taGVhZGVyX190ZXh0XCI+XG4gICAgICAgIHt7IG1haW5UaXRsZSB9fVxuICAgIDwvaDU+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2hpbnRPcHRpb25zPy5jb250ZW50ICYmIF9oaW50T3B0aW9ucy5wb3NpdGlvbiA9PT0gJ2FmdGVyJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGludFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaGludFRlbXBsYXRlPlxuICAgICAgICA8c3BhbiBmZC1saW5rIFt1bmRlY29yYXRlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgIFtmZC1pbmxpbmUtaGVscF09XCJfaGludE9wdGlvbnMuY29udGVudFwiXG4gICAgICAgICAgICAgICAgW2dseXBoXT1cIl9oaW50T3B0aW9ucy5nbHlwaFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJfaGludE9wdGlvbnMucGxhY2VtZW50IHx8IG51bGxcIlxuICAgICAgICAgICAgICAgIFt0cmlnZ2Vyc109XCJfaGludE9wdGlvbnMudHJpZ2dlciB8fCBbXVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgID48L2ZkLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUlILGtCQUFrQixFQUlyQixNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BILE9BQU8sRUFBRSx1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QWU7dUJBQUMsdUJBQXVCO2dCQXNCOUIsaUJBQWlCO3NCQUQxQixlQUFlO3VCQUFDLDRCQUFtQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIEYuIEtvbGFyXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICpcbiAqL1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFByb3ZpZGVyLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBDb2x1bW5MYXlvdXQsXG4gICAgRmllbGRIaW50T3B0aW9ucyxcbiAgICBGb3JtRmllbGRHcm91cCxcbiAgICBGb3JtR3JvdXBDb250YWluZXIsXG4gICAgSGludElucHV0LFxuICAgIEhpbnRPcHRpb25zLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0RmllbGQsIGdldEZvcm1GaWVsZCwgaXNGaWVsZENoaWxkLCBpc0ZpZWxkR3JvdXBDaGlsZCwgaXNGaWVsZEdyb3VwV3JhcHBlckNoaWxkIH0gZnJvbSAnLi4vZm9ybS1oZWxwZXJzJztcbmltcG9ydCB7IEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWVycm9yL2Zvcm0tZmllbGQtZXJyb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIERlZmF1bHRHYXBMYXlvdXQsXG4gICAgRGVmYXVsdEhvcml6b250YWxGaWVsZExheW91dCxcbiAgICBEZWZhdWx0SG9yaXpvbnRhbExhYmVsTGF5b3V0LFxuICAgIERlZmF1bHRWZXJ0aWNhbEZpZWxkTGF5b3V0LFxuICAgIEZPUk1fR1JPVVBfQ0hJTERfRklFTERfVE9LRU5cbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVDb2x1bW5DbGFzcywgbm9ybWFsaXplQ29sdW1uTGF5b3V0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IEZvcm1GaWVsZExheW91dFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Zvcm0tZmllbGQtbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRkRQX0ZPUk1fRklFTERfSElOVF9PUFRJT05TX0RFRkFVTFQgfSBmcm9tICcuL2ZkcC1mb3JtLnRva2Vucyc7XG5pbXBvcnQgeyBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzLCBDb250ZW50RGVuc2l0eU9ic2VydmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBGaWVsZCwgRmllbGRDb2x1bW4sIEZpZWxkR3JvdXAgfSBmcm9tICcuLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgZm9ybUdyb3VwUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IEZvcm1Hcm91cENvbnRhaW5lcixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtR3JvdXBDb21wb25lbnQpXG59O1xuXG50eXBlIEZvcm1Hcm91cEZpZWxkID0gKEZvcm1GaWVsZCB8IEZvcm1GaWVsZEdyb3VwKSAmIHsgaGludE9wdGlvbnM/OiBIaW50T3B0aW9ucyB9O1xuXG5sZXQgZm9ybUdyb3VwVW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqXG4gKiBGb3JtR3JvdXAgcmVwcmVzZW50IGhpZ2ggb3JkZXIgY29udGFpbmVyIGFnZ3JlZ2F0aW5nIEZvcm1GaWVsZHMgYW5kIGFiaWxpdHkgdG8gZGlzdHJpYnV0ZSB0aGVzZVxuICogZmllbGRzIGludG8gY29sdW1ucy4gSXQgbWFpbmx5IGhpZGVzIGltcGxlbWVudGF0aW9uIGRldGFpbHMgdGhhdCB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBldmVyeVxuICogdGltZSB3ZSBhcmUgYnVpbGRpbmcgYSBmb3JtLiBXZSBoYXZlIGlucHV0IGZpZWxkcyAsIGVycm9yIG1hbmFnZW1lbnRzLCBkaWZmZXJlbnQgc3RhdGVzLFxuICogaGludHMgYW5kIG1hbnkgbW9yZS5cbiAqXG4gKiBXZWxsIGJlaGF2ZWQgZm9ybSB0aGF0IGhhcyBpbmZvcm1hdGlvbiBzaWRlIGJ5IHNpZGUgaW4gbXVsdGlwbGVcbiAqIGNvbHVtbnMgbmVlZHMgdG8gYWxzbyBrbm93IGhvdyB0byBtZXJnZSBwcm9wZXJseS5cbiAqXG4gKiBKdXN0IHRvIGdldCB0aGUgaWRlYSBhYm91dCB0aGUgc3RydWN0dXJlIHdpdGhvdXQgYWN0dWFsIGlucHV0IGNvbXBvbmVudHMgaW5zaWRlXG4gKlxuICogYGBgaHRtbFxuICogPGZkcC1mb3JtLWdyb3VwIFtoaW50UGxhY2VtZW50XT1cIidpbmxpbmUnXCIgY29sdW1uTGF5b3V0PVwiWEwyLUwyLU0xLVMxXCI+XG4gKiAgICA8ZmRwLWZvcm0tZmllbGQgW2lkXT1cIidGaWVsZCBBJ1wiIFtyYW5rXT1cIjEwXCIgY29sdW1uPVwiMVwiPlxuICogICAgPC9mZHAtZm9ybS1maWVsZD5cbiAqXG4gKiAgICA8ZmRwLWZvcm0tZmllbGQgW2lkXT1cIidGaWVsZCBCJ1wiIFtyYW5rXT1cIjMwXCIgY29sdW1uPVwiMVwiPlxuICogICAgPC9mZHAtZm9ybS1maWVsZD5cbiAqXG4gKiAgICA8ZmRwLWZvcm0tZmllbGQgW2lkXT1cIidGaWVsZCBDJ1wiICBbcmFua109XCIyMFwiIGNvbHVtbj1cIjFcIj5cbiAqICAgIDwvZmRwLWZvcm0tZmllbGQ+XG4gKlxuICogICAgPGZkcC1mb3JtLWZpZWxkIFtpZF09XCJGaWVsZCBEXCIgIFtyYW5rXT1cIjIwXCIgY29sdW1uPVwiMlwiPlxuICogICAgPC9mZHAtZm9ybS1maWVsZD5cbiAqXG4gKlxuICogICAgPGZkcC1mb3JtLWZpZWxkIFtpZF09XCInRmllbGQgRSdcIiBbcmFua109XCIzMFwiIGNvbHVtbj1cIjJcIj5cbiAqICAgIDwvZmRwLWZvcm0tZmllbGQ+XG4gKiA8L2ZkcC1mb3JtLWdyb3VwPlxuXG4gKlxuICogYGBgYFxuICpcbiAqXG4gKiBXaGljaCBjYW4gYmUgdHJhbnNsYXRlZCBsaWtlIHRoaXNcbiAqIFtGaWVsZCBBXSAtIEZpcnN0IGNvbHVtbiwgcmFuayAxMFxuICogW0ZpZWxkIEJdIC0gRmlyc3QgY29sdW1uLCByYW5rIDMwXG4gKiBbRmllbGQgQ10gLSBGaXJzdCBjb2x1bW4sIHJhbmsgMjBcbiAqIFtGaWVsZCBEXSAtIFNlY29uZCBjb2x1bW4sIHJhbmsgMjBcbiAqIFtGaWVsZCBFXSAtIFNlY29uZCBjb2x1bW4sIHJhbmsgMzBcbiAqXG4gKiBXaGF0IHdlIGV4cGVjdCB0aGF0IGl0IGNyZWF0ZXMgZm9sbG93aW5nIGZvcm0gd2l0aCB0d28gY29sdW1uIGxheW91dDpcbiAqIFtGaWVsZCBBXSAgICAgIFtGaWVsZCBEXVxuICogW0ZpZWxkIENdICAgICAgW0ZpZWxkIEVdXG4gKiBbRmllbGQgQl1cbiAqXG4gKiBZb3UgY2FuIHNlZSBhbGwgaXMgc29ydGVkIGFjY29yZGluZ2x5IGJ5IHJhbmsgKEMgZ29lcyBiZWZvcmUgQikuXG4gKlxuICogV2hlbiB5b3UgbW92ZSBpbnRvIHNtYWxsZXIgZGV2aWNlIGFuZCBhbGwgaXMgbWVyZ2VkIGludG8gb25lIGNvbHVtbnMgdGhlIG5haXZlIHNvbHV0aW9uIHdvdWxkIGJlOlxuICpcbiAqIFtGaWVsZCBBXVxuICogW0ZpZWxkIENdXG4gKiBbRmllbGQgQl1cbiAqIFtGaWVsZCBEXVxuICogW0ZpZWxkIEVdXG4gKlxuICogVGhlIGZpZWxkcyBuZWVkcyB0byByZXN0cnVjdHVyZSBhY2NvcmRpbmcgdG8gdGhlaXIgb3JpZ2luYWwgcG9zaXRpb25pbmcuIFdoZW4gRmllbGQgRCB3YXMgb24gdGhlXG4gKiB0b3Agd2h5IHdlIHNob3VsZCBtb3ZlIGl0IHRvIHRoZSBib3R0b20/IFRoZSBtb3JlIGNvcnJlY3Qgc29sdXRpb24gc2hvdWxkIGJlIGZvbGxvd2luZy5cbiAqXG4gKiBbRmllbGQgQV1cbiAqIFtGaWVsZCBEXVxuICogW0ZpZWxkIENdXG4gKiBbRmllbGQgRV1cbiAqIFtGaWVsZCBCXVxuICpcbiAqIEZpZWxkcyBuaWNlbHkgbWVyZ2UgdG9nZXRoZXIuIHRoZXkgZG9uJ3Qgd3JhcC5cbiAqXG4gKlxuICogQmVzaWRlcyB0aGlzIGxheW91dCBzdXBwb3J0IGl0IGFsc28gd3JhcHMgZm9ybSBmdW5jdGlvbmFsaXR5IGFuZCBpdCBjYW4gd29yayB3aXRoIEZvcm1Hcm91cC5cbiAqIFlvdSBjYW4gYWxzbyBkZWNpZGUgaWYgeW91IHdhbnQgeW91ciBmb3JtIHdpdGggPGZvcm0+IGVsZW1lbnQgb3Igd2l0aG91dCBpdC5cbiAqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1mb3JtLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW2Zvcm1Hcm91cFByb3ZpZGVyLCBGb3JtRmllbGRMYXlvdXRTZXJ2aWNlLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCldXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Hcm91cENvbXBvbmVudFxuICAgIGltcGxlbWVudHMgRm9ybUdyb3VwQ29udGFpbmVyLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gICAgLyoqIElkIGZvciB0aGUgZm9ybSBncm91cCBlbGVtZW50ICovXG4gICAgQElucHV0KClcbiAgICBpZCA9IGBmZHAtZm9ybS1ncm91cC0ke2Zvcm1Hcm91cFVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBOYW1lIHByb3BlcnR5IHRvIGJlIHNldCBvbiBhIGZvcm0uIFdpbGwgYmUgdXNlZCBpZiBgdXNlRm9ybWAgaXMgc2V0IHRvIHRydWUgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZ3JvdXAgaXMgZWRpdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGVkaXRhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbiBsYWJlbHMgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIG5vTGFiZWxMYXlvdXQgPSBmYWxzZTtcblxuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIGdyb3VwIGhpbnQgb3B0aW9uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGludDogSGludElucHV0O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBjb2x1bW4gbGF5b3V0IGZvciBpbmxpbmUgaXRlbXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaW5saW5lQ29sdW1uTGF5b3V0KHZhbHVlOiBDb2x1bW5MYXlvdXQpIHtcbiAgICAgICAgdGhpcy5faW5saW5lQ29sdW1uTGF5b3V0ID0gbm9ybWFsaXplQ29sdW1uTGF5b3V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlSW5saW5lQ29sdW1uTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgZ2V0IGlubGluZUNvbHVtbkxheW91dCgpOiBDb2x1bW5MYXlvdXQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lQ29sdW1uTGF5b3V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lubGluZUNvbHVtbkxheW91dENsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lubGluZUNvbHVtbkxheW91dCA9IERlZmF1bHRWZXJ0aWNhbEZpZWxkTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBsYWJlbCdzIGNvbHVtbiBsYXlvdXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbENvbHVtbkxheW91dDogQ29sdW1uTGF5b3V0ID0gRGVmYXVsdEhvcml6b250YWxMYWJlbExheW91dDtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgZmllbGQncyBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmllbGRDb2x1bW5MYXlvdXQ6IENvbHVtbkxheW91dCA9IERlZmF1bHRIb3Jpem9udGFsRmllbGRMYXlvdXQ7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGdhcCBjb2x1bW4gbGF5b3V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2FwQ29sdW1uTGF5b3V0OiBDb2x1bW5MYXlvdXQgPSBEZWZhdWx0R2FwTGF5b3V0O1xuXG4gICAgLyoqIEFuZ3VsYXIgRm9ybUdyb3VwIHdoZXJlIGFsbCB1bmRlcmx5aW5nIGNvbnRyb2xzIHdpbGwgYmUgYXR0YWNoZWQgdG8uICovXG4gICAgQElucHV0KClcbiAgICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAgIC8qKiBUaGlzIGlzIHJhdGhlciBzaW1wbGUgZm9yIG5vdyBqdXN0IHRvIGhhdmUgc29tZSBTZWN0aW9uIFRpdGxlIGlmIG5lZWRlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9wVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBGb3JtJ3MgbWFpbiB0aXRsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1haW5UaXRsZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGhpZGUgZm9ybSdzIG1haW4gdGl0bGUuIERlZmF1bHQgaXMgZmFsc2UuICovXG4gICAgQElucHV0KClcbiAgICBoaWRlTWFpblRJdGxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZW5pZW50IHdheSB0byBpbml0aWFsaXplIGludGVybmFsIEZvcm1Db250cm9scyBmcm9tIG9iamVjdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgb2JqZWN0OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGlvbnMgdGVtcGxhdGUgcmVmZXJlbmNlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBqdXN0IGhlcmUgdG8gc3VwcG9ydCBzZXZlcmFsIHdheXMgdG8gcGFzcyB0cmFuc2xhdGlvbi5cbiAgICAgKlxuICAgICAqIE9uZSB3YXkgaXMgdG8gcHJvdmlkZSBuZy10ZW1wbGF0ZSAjaTE4biBpbnNpZGUgdGhlIGZvcm0tZ3JvdXAgdGFnIGFuZCB0aGUgb3RoZXIgb25lXG4gICAgICogc29tZSBnbG9iYWwgb25lIGFzIGJpbmRpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGkxOFN0cmluZ3M6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogV2hldGhlciB0byB3cmFwIGFsbCB0aGUgcHJvdmlkZWQgY29udGVudCBpbiBhIGA8Zm9ybT5gICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdXNlRm9ybSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3VzZUZvcm0gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdXNlRm9ybSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZUZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSB0aGUgY29sdW1uIGxheW91dCBpbiB0aGUgZm9ybWF0IGBYTG4tTG4tTW4tU25gIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCBjYW4gYmUgZGlmZmVyZW50IGZvciBlYWNoIHNpemUuXG4gICAgICogZWc6IFhMMi1MMi1NMi1TMSB3b3VsZCBjcmVhdGUgMi1jb2x1bW4gbGF5b3V0cyBmb3IgWEwsIEwsIGFuZCBNIHNpemVzIGFuZCBzaW5nbGUtY29sdW1uIGxheW91dCBmb3IgUyBzaXplLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sdW1uTGF5b3V0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgYWxsIGZvcm0gaXRlbXMgc2hvdWxkIGhhdmUgaWRlbnRpY2FsIGxheW91dCBwcm92aWRlZCBmb3IgZm9ybSBncm91cCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pZmllZExheW91dCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBvblN1Ym1pdCBldmVudFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uU3VibWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGZvcm0gZWxlbWVudC4gQXZhaWxhYmxlIHdpdGggYFt1c2VGb3JtXT1cInRydWVcImAgaW5wdXQgcHJvcGVydHkuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbmF0aXZlRm9ybScsIHsgcmVhZDogTmdGb3JtIH0pXG4gICAgbmF0aXZlRm9ybTogTmdGb3JtO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKCdpMThuJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBpMThUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGb3JtRmllbGRFcnJvckRpcmVjdGl2ZSlcbiAgICBwcml2YXRlIF9lcnJvckRpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxGb3JtRmllbGRFcnJvckRpcmVjdGl2ZT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiBLZWVwIHRyYWNrIG9mIGFkZGVkIGZvcm0gZmllbGRzIGNoaWxkcmVuIGluIGNvcnJlY3Qgb3JkZXIuXG4gICAgICpcbiAgICAgKiBTaW5jZSBcImRlc2NlbmRhbnRzOiB0cnVlXCIgaW5jbHVkZXMgZmllbGRzIG9mIG5lc3RlZCBmb3JtIGdyb3VwIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiBXZSBhcmUgZm9yY2VkIHRvIHVzZSBcIkNvbnRlbnRDaGlsZHJlblwiIHNvIEZvcm1GaWVsZCBjaGlsZHJlbiBjYW4gYmUgdXNlZFxuICAgICAqIHdpdGggb3B0aW9uYWwgcmVuZGVyaW5nIChuZ0lmKSBzYWZlbHkuXG4gICAgICpcbiAgICAgKiBGb3JtIGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1Hcm91cCBpcyBkcml2ZW4gYnkgbXVsdGktem9uZSBsYXlvdXQgc3VwcG9ydC4gV2UgbmVlZCB0byBiZVxuICAgICAqIGFibGUgdG8gYWRkIG51bWJlciBvZiBGb3JtRmllbGRzLCBhbmQgYmFzZWQgb24gZ2l2ZW4gY29uZmlndXJhdGlvbiAoem9uZSwgcmFuaykgcmVuZGVyIHRoZW1cbiAgICAgKiB1bmRlciBjb3JyZWN0IHpvbmUgICh0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQpLlxuICAgICAqXG4gICAgICogV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIGNvbnRlbnQgYW5kIHRoZW4gdHJ5IHRvIHNvbWVob3cgcG9zaXRpb24gaXQgYXMgaXRcbiAgICAgKiB3b3VsZCBsZWFkIHRvIHRoZSBVSSB3aGVyZSB1c2VyIGNhbiBzZWUgZWxlbWVudGluZyBtb3ZpbmcgYXMgeW91IHRyeSB0byBwb3NpdGlvbiBpdC5cbiAgICAgKlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRk9STV9HUk9VUF9DSElMRF9GSUVMRF9UT0tFTiBhcyBhbnksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZm9ybUdyb3VwQ2hpbGRyZW46IFF1ZXJ5TGlzdDxGb3JtR3JvdXBGaWVsZD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiBMaXN0IG9mIGRpcmVjdCBGZHBGb3JtR3JvdXAncyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIFNpbmNlIFwiZm9ybUdyb3VwQ2hpbGRyZW5cIiB1c2VzIFwieyBkZXNjZW5kYW50czogdHJ1ZSB9XCIgb3B0aW9uIHRoYXQgbWVhbnNcbiAgICAgKiBcImZvcm1Hcm91cENoaWxkcmVuXCIgd2lsbCBrZWVwIHRyYWNrIG9mIG5lc3RlZCBGZHBGb3JtR3JvdXAgZmllbGRzIGFzIHdlbGwuXG4gICAgICogVGhpcyBsaXN0IHJlbGllcyBvbiB0aGUgaW5qZWN0aW9uIG1lY2hhbmlzbSBzbyBuZXN0ZWQgRmRwRm9ybUdyb3VwJ3MgZmllbGRzL2ZpZWxkR3JvdXBzXG4gICAgICogd2lsbCBiZSBvbWl0dGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9ybUdyb3VwRGlyZWN0Q2hpbGRyZW46IEFycmF5PEZvcm1Hcm91cEZpZWxkPiA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB4bENvbHVtbnNOdW1iZXI6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxnQ29sdW1uc051bWJlcjogbnVtYmVyO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbWRDb2x1bW5zTnVtYmVyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVXNlciByZXNwb25zaXZlIGxheW91dFxuICAgICAqL1xuICAgIHhsQ29sOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUGFja2VkIGZpZWxkcyB3aGljaCBzaG91bGQgYmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICBmb3JtUm93czogeyBba2V5OiBudW1iZXJdOiBGaWVsZENvbHVtbiB8IEZpZWxkR3JvdXAgfSA9IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGludE9wdGlvbnM6IEhpbnRPcHRpb25zO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91c2VGb3JtID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Db250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIEBJbmplY3QoRkRQX0ZPUk1fRklFTERfSElOVF9PUFRJT05TX0RFRkFVTFQpIHByaXZhdGUgX2RlZmF1bHRIaW50T3B0aW9uczogRmllbGRIaW50T3B0aW9uc1xuICAgICkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IDxGb3JtR3JvdXA+KHRoaXMuZm9ybUNvbnRhaW5lciA/IHRoaXMuZm9ybUNvbnRhaW5lci5jb250cm9sIDogbmV3IEZvcm1Hcm91cCh7fSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgaWYgKGNoYW5nZXMuaGludCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhpbnQgPT09ICdzdHJpbmcnIHx8IHRoaXMuaGludCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGludE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHRIaW50T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5oaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGludE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHRIaW50T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5oaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtR3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUlubGluZUNvbHVtbkxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmkxOFN0cmluZ3MgPSB0aGlzLmkxOFN0cmluZ3MgPyB0aGlzLmkxOFN0cmluZ3MgOiB0aGlzLmkxOFRlbXBsYXRlO1xuXG4gICAgICAgIHRoaXMuX3NldFVzZXJMYXlvdXQoKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRmllbGRCeUNvbHVtbigpO1xuICAgICAgICB0aGlzLl91cGRhdGVGb3JtRmllbGRzUHJvcGVydGllcygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1Hcm91cENoaWxkcmVuKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlbkZvcm1GaWVsZENvbHVtbkNoYW5nZSgpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pMThTdHJpbmdzID0gdGhpcy5pMThTdHJpbmdzID8gdGhpcy5pMThTdHJpbmdzIDogdGhpcy5pMThUZW1wbGF0ZTtcblxuICAgICAgICB0aGlzLl9zZXRVc2VyTGF5b3V0KCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUZpZWxkQnlDb2x1bW4oKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRm9ybUZpZWxkc1Byb3BlcnRpZXMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Gb3JtR3JvdXBDaGlsZHJlbigpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Gb3JtRmllbGRDb2x1bW5DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fdHJhY2tGb3JtR3JvdXBSZXNpemUoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRGb3JtRmllbGQoZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCk6IHZvaWQge1xuICAgICAgICAvLyBJdCdzIG5lZWRlZCB0byBzZXQgZGVmYXVsdCBGb3JtRmllbGQgcHJvcGVydGllc1xuICAgICAgICAvLyBvbiBlYXJseSBzdGFnZSBvdGhlcndpc2UgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICAgICAgLy8gd2lsbCBiZSB0aHJvd24gb24gRm9ybUZpZWxkIGxldmVsIChlLmcuIGkxOHN0cmluZyBhcmUgbm90IGRlZmluZWQpXG4gICAgICAgIHRoaXMuX3VwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZm9ybUZpZWxkKTtcbiAgICAgICAgLy8ga2VlcCB0cmFjayBvZiBkaXJlY3RseSByZWdpc3RlcmVkIGNoaWxkcmVuXG4gICAgICAgIHRoaXMuX2FkZERpcmVjdEZvcm1Hcm91cENoaWxkKGZvcm1GaWVsZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVGb3JtRmllbGQoZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVEaXJlY3RGb3JtR3JvdXBDaGlsZChmb3JtRmllbGQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWRkRm9ybUZpZWxkR3JvdXAoZm9ybUZpZWxkR3JvdXA6IEZvcm1GaWVsZEdyb3VwKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FkZERpcmVjdEZvcm1Hcm91cENoaWxkKGZvcm1GaWVsZEdyb3VwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUZvcm1GaWVsZEdyb3VwKGZvcm1GaWVsZEdyb3VwOiBGb3JtRmllbGRHcm91cCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVEaXJlY3RGb3JtR3JvdXBDaGlsZChmb3JtRmllbGRHcm91cCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKG5hbWUsIGNvbnRyb2wpO1xuICAgICAgICAvLyBsZXR0aW5nIGNvbnRyb2wgdG8gc2V0IHZhbHVlLiB3aGVuIHByb3ZpZGVkIHZhbHVlIGlzICdmYWxzZScuXG4gICAgICAgIGlmICh0aGlzLm9iamVjdCkge1xuICAgICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHRoaXMub2JqZWN0W25hbWVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlRm9ybUNvbnRyb2wobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2wobmFtZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYWNrQnlGaWVsZE5hbWUoaW5kZXg6IG51bWJlciwgZmllbGQ6IEZpZWxkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkID8gZmllbGQubmFtZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWydmZC1jb250YWluZXInLCB0aGlzLmNsYXNzXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiB1c2VkIGZvciB0ZW1wbGF0ZSBzaWRlIFR5cGUgY29ycmVjdGlvbiAqL1xuICAgICRmaWVsZEdyb3VwID0gKGY6IGFueSk6IEZpZWxkR3JvdXAgPT4gZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Gb3JtR3JvdXBDaGlsZHJlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXBDaGlsZHJlbi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWVsZEJ5Q29sdW1uKCk7XG4gICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Gb3JtRmllbGRDb2x1bW5DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwQ2hpbGRyZW4uZm9yRWFjaCgoZmllbGQ6IEZvcm1Hcm91cEZpZWxkKSA9PlxuICAgICAgICAgICAgKDxGb3JtRmllbGRDb21wb25lbnQ+ZmllbGQpLm9uQ29sdW1uQ2hhbmdlPy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpZWxkQnlDb2x1bW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFzc2lnbiBhIGZpZWxkcyBvciBmaWVsZCBncm91cCB0byBzcGVjaWZpZWQgY29sdW1ucyB3aXRoIHJhbmsuXG4gICAgICogaWYgYGNvbHVtbkxheW91dFR5cGVgIGlzIGdpdmVuIGEgZmllbGRzIHdpdGhvdXQgY29sdW1uIHByb3BlcnR5IHdpbGwgc2V0IG9uIGxhc3QgY29sdW1uLlxuICAgICAqIE90aGVyd2lzZSB0aGUgZmllbGRzIHNldCAxIGNvbHVtbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVGaWVsZEJ5Q29sdW1uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtQ2hpbGRyZW4gPSB0aGlzLl9nZXRGb3JtR3JvdXBDaGlsZHJlbigpO1xuICAgICAgICBjb25zdCByb3dzOiB7IFtrZXk6IG51bWJlcl06IEZpZWxkQ29sdW1uIHwgRmllbGRHcm91cCB9ID0ge307XG4gICAgICAgIGxldCByb3dOdW1iZXIgPSAwO1xuICAgICAgICBsZXQgY29sdW1uczogRmllbGRDb2x1bW4gPSB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZvcm1DaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKGlzRmllbGRDaGlsZChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldEZpZWxkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OdW1iZXIgPSB0aGlzLl92YWxpZGF0ZUZpZWxkQ29sdW1uKGNoaWxkLmNvbHVtbik7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbnNbY29sdW1uTnVtYmVyXSkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbk51bWJlcl0gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5OdW1iZXJdLnB1c2goZmllbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNGaWVsZEdyb3VwQ2hpbGQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRHcm91cENvbHVtbnM6IEZpZWxkQ29sdW1uID0ge307XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNvbHVtbnMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByb3dzW3Jvd051bWJlcl0gPSBjb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zID0ge307XG4gICAgICAgICAgICAgICAgICAgIHJvd051bWJlcisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGRzID0gY2hpbGQuZmllbGRzLm1hcCgoZmllbGQpID0+IGdldEZpZWxkKGZpZWxkKSk7XG4gICAgICAgICAgICAgICAgZ3JvdXBGaWVsZHMuZm9yRWFjaCgoZ3JvdXBGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OdW1iZXIgPSB0aGlzLl92YWxpZGF0ZUZpZWxkQ29sdW1uKGdyb3VwRmllbGQuY29sdW1uKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxkR3JvdXBDb2x1bW5zW2NvbHVtbk51bWJlcl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkR3JvdXBDb2x1bW5zW2NvbHVtbk51bWJlcl0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaWVsZEdyb3VwQ29sdW1uc1tjb2x1bW5OdW1iZXJdLnB1c2goZ3JvdXBGaWVsZCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByb3dzW3Jvd051bWJlcl0gPSBuZXcgRmllbGRHcm91cChjaGlsZC5sYWJlbCwgZmllbGRHcm91cENvbHVtbnMsIGNoaWxkLmhpbnRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICByb3dOdW1iZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb3dzW3Jvd051bWJlcl0gPSBjb2x1bW5zO1xuICAgICAgICB0aGlzLmZvcm1Sb3dzID0gcm93cztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBWYWxpZGF0ZSBjb2x1bW4gbnVtYmVyICovXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVGaWVsZENvbHVtbihjb2x1bW5OdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbkxheW91dCAmJiBjb2x1bW5OdW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChpc05hTihjb2x1bW5OdW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBhIHZhbGlkIGNvbHVtbiBudW1iZXInKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbHVtbk51bWJlciA+IHRoaXMueGxDb2x1bW5zTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW5zIGNhbm5vdCBiZSBtb3JlIHRoYW4gJHt0aGlzLnhsQ29sdW1uc051bWJlcn1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk51bWJlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnhsQ29sdW1uc051bWJlcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUZvcm1GaWVsZHNQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9nZXRGb3JtR3JvdXBDaGlsZHJlbigpLmZvckVhY2goKGZvcm1GaWVsZDogRm9ybUdyb3VwRmllbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0ZpZWxkQ2hpbGQoZm9ybUZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZm9ybUZpZWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzRmllbGRHcm91cENoaWxkKGZvcm1GaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBmb3JtRmllbGQuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB0aGlzLl91cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGdldEZvcm1GaWVsZChmaWVsZCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBhc3Mgc29tZSBnbG9iYWwgcHJvcGVydGllcyB0byBlYWNoIGZpZWxkLiBFdmVuIGZvcm1Hcm91cCBjbmEgYmUgaW5qZWN0IGRpcmVjdGx5IGluc2lkZSBmb3JtXG4gICAgICogZmllbGQgd2UgYXJlIHVzaW5nIGhlcmUgYSBzZXR0ZXIgbWV0aG9kIHRvIGluaXRpYWxpemUgdGhlXG4gICAgICpcbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudW5pZmllZExheW91dCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLmVkaXRhYmxlID0gdGhpcy5lZGl0YWJsZTtcbiAgICAgICAgICAgIGZvcm1GaWVsZC5ub0xhYmVsTGF5b3V0ID0gdGhpcy5ub0xhYmVsTGF5b3V0O1xuICAgICAgICB9XG4gICAgICAgIGZvcm1GaWVsZC5zZXREZWZhdWx0Q29sdW1uTGF5b3V0KCk7XG4gICAgICAgIGZvcm1GaWVsZC5pMThTdHJpbmdzID0gZm9ybUZpZWxkLmkxOFN0cmluZ3MgPyBmb3JtRmllbGQuaTE4U3RyaW5ncyA6IHRoaXMuaTE4U3RyaW5ncztcbiAgICAgICAgZm9ybUZpZWxkLnNldEVycm9yRGlyZWN0aXZlcyh0aGlzLl9lcnJvckRpcmVjdGl2ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBpZiBgY29sdW1uTGF5b3V0VHlwZWAgaXMgZ2l2ZW4sIHNldCB0aG9zZSBjb2x1bW4gbGF5b3V0cyBhcHByb3ByaWF0ZWx5LiBPdGhlcndpc2UsIGEgbGF5b3V0IHdpbGwgc2V0IG9uIDEgY29sdW1uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0VXNlckxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uTGF5b3V0KSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRDb2x1bW5OdW1iZXJzKHRoaXMuY29sdW1uTGF5b3V0KTtcbiAgICAgICAgICAgIGlmIChpc05hTih0aGlzLnhsQ29sdW1uc051bWJlcikgfHwgaXNOYU4odGhpcy5sZ0NvbHVtbnNOdW1iZXIpIHx8IGlzTmFOKHRoaXMubWRDb2x1bW5zTnVtYmVyKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgYSB2YWxpZCBudW1iZXIgZm9yIGNvbHVtbnMnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnhsQ29sdW1uc051bWJlciA+IDEyIHx8IHRoaXMubGdDb2x1bW5zTnVtYmVyID4gMTIgfHwgdGhpcy5tZENvbHVtbnNOdW1iZXIgPiAxMikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBjYW5ub3QgYmUgbW9yZSB0aGFuIDEyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZ0NvbHVtbnMgPSAxMiAvIHRoaXMubGdDb2x1bW5zTnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgbWRDb2x1bW5zID0gMTIgLyB0aGlzLm1kQ29sdW1uc051bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IHhsQ29sdW1ucyA9IDEyIC8gdGhpcy54bENvbHVtbnNOdW1iZXI7XG5cbiAgICAgICAgICAgIC8vIGZvciBgbGdgIHNpbmdsZS1jb2x1bW4gbGF5b3V0LCBTdHlsZXMgZG9lcyBub3QgdXNlIGFueSBjbGFzcywgYW5kIHByb3ZpZGluZyBgZmQtY29sLWxnLS0xMmAgaGFzIHVuaW50ZW5kZWQgc2lkZS1lZmZlY3RzXG4gICAgICAgICAgICAvLyB0aGVyZWZvcmUsIHdlIHJlbW92ZSB0aGUgbGcgY2xhc3MgZm9yIHNpbmdsZS1jb2x1bW4gbGF5b3V0XG4gICAgICAgICAgICBpZiAobGdDb2x1bW5zID09PSAxMikge1xuICAgICAgICAgICAgICAgIHRoaXMueGxDb2wgPSBgZmQtY29sLXhsLS0ke3hsQ29sdW1uc30gZmQtY29sLW1kLS0ke21kQ29sdW1uc31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnhsQ29sID0gYGZkLWNvbC14bC0tJHt4bENvbHVtbnN9IGZkLWNvbC1tZC0tJHttZENvbHVtbnN9IGZkLWNvbC1sZy0tJHtsZ0NvbHVtbnN9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMueGxDb2wgPSBgZmQtY29sLXhsLS0xMiBmZC1jb2wtbWQtLTEyIGZkLWNvbC1sZy0tMTJgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDb2x1bW5OdW1iZXJzKGxheW91dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IFt4bCwgbGcsIG1kXSA9IGxheW91dC5zcGxpdCgnLScpO1xuICAgICAgICB0aGlzLnhsQ29sdW1uc051bWJlciA9IHBhcnNlSW50KHhsLnNsaWNlKDIsIHhsLmxlbmd0aCksIDEwKTtcbiAgICAgICAgdGhpcy5sZ0NvbHVtbnNOdW1iZXIgPSBwYXJzZUludChsZy5zbGljZSgxLCBsZy5sZW5ndGgpLCAxMCk7XG4gICAgICAgIHRoaXMubWRDb2x1bW5zTnVtYmVyID0gcGFyc2VJbnQobWQuc2xpY2UoMSwgbWQubGVuZ3RoKSwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRkRGlyZWN0Rm9ybUdyb3VwQ2hpbGQoY2hpbGQ6IEZvcm1Hcm91cEZpZWxkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9mb3JtR3JvdXBEaXJlY3RDaGlsZHJlbi5pbmRleE9mKGNoaWxkKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9ybUdyb3VwRGlyZWN0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW1vdmVEaXJlY3RGb3JtR3JvdXBDaGlsZChjaGlsZDogUGxhdGZvcm1Gb3JtRmllbGQgfCBGb3JtRmllbGRHcm91cCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtR3JvdXBEaXJlY3RDaGlsZHJlbiA9IHRoaXMuX2Zvcm1Hcm91cERpcmVjdENoaWxkcmVuLmZpbHRlcigoX2NoaWxkKSA9PiBfY2hpbGQgIT09IGNoaWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2V0IGRpcmVjdCBmb3JtIGdyb3VwIGNoaWxkcmVuIGluIHRoZSBvcmlnaW5hbCBvcmRlclxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEZvcm1Hcm91cENoaWxkcmVuKCk6IEZvcm1Hcm91cEZpZWxkW10ge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZm9ybUdyb3VwQ2hpbGRyZW5cbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiAoaXNGaWVsZEdyb3VwV3JhcHBlckNoaWxkKGNoaWxkKSA/IGNoaWxkLmZpZWxkUmVuZGVyZXIgOiBjaGlsZCkpO1xuXG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5maWx0ZXIoKGNoaWxkKSA9PiB0aGlzLl9mb3JtR3JvdXBEaXJlY3RDaGlsZHJlbi5pbmNsdWRlcyhjaGlsZCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlSW5saW5lQ29sdW1uTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmxpbmVDb2x1bW5MYXlvdXRDbGFzcyA9IGdlbmVyYXRlQ29sdW1uQ2xhc3ModGhpcy5pbmxpbmVDb2x1bW5MYXlvdXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBoYXZlIHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBoZXJlIGluIG9yZGVyIHRvIHJlLWNoZWNrIGNvbnRlbnRzXG4gICAgICogaW5zaWRlIFwiRm9ybUZpZWxkLnJlbmRlcmVyXCIgdGVtcGxhdGUgZXZlcnkgdGltZSBjb21wb25lbnQncyBkaW1lbnNpb25zIGNoYW5nZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF90cmFja0Zvcm1Hcm91cFJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8Zm9ybSAjbmF0aXZlRm9ybSAobmdTdWJtaXQpPVwib25TdWJtaXQuZW1pdCgkZXZlbnQpXCIgKm5nSWY9XCJ1c2VGb3JtOyBlbHNlIGJvZHlcIiBbaWRdPVwiaWRcIiBbbmFtZV09XCJuYW1lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlcIj48L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuPG5nLXRlbXBsYXRlICNib2R5PlxuICAgIDwhLS0gIFJlbmRlciBmaWVsZHMgYW5kIGZpZWxkIGdyb3VwcyB3aXRoIGFzc2lnbmVkIGNvbHVtbnMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkc1wiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmaWVsZHM+XG4gICAgPGRpdiAqbmdJZj1cIm1haW5UaXRsZSAmJiAhaGlkZU1haW5USXRsZVwiIGNsYXNzPVwiZmQtZm9ybS1oZWFkZXJcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1haW5UaXRsZVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC1jb250YWluZXIgZmQtZm9ybS1sYXlvdXQtZ3JpZC1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJjb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdCQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZm9ybVJvd3MgfCBrZXl2YWx1ZTsgdHJhY2tCeTogdHJhY2tCeUZuXCIgY2xhc3M9XCJmZC1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGRzIG9mIGNvbHVtbiB8IGZpZWxkR3JvdXBSb3dWYWx1ZSB8IGtleXZhbHVlOyB0cmFja0J5OiB0cmFja0J5Rm47IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWNvbCBmZC1mb3JtLWdyb3VwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieGxDb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1yb3dcIiAqbmdJZj1cIiRmaWVsZEdyb3VwKGNvbHVtbi52YWx1ZSkgYXMgdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZhbHVlLmxhYmVsXCIgZmRwLWZvcm0tZ3JvdXAtaGVhZGVyIFtmaWVsZEdyb3VwXT1cImluZGV4ID09PSAwID8gdmFsdWUgOiBudWxsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzLnZhbHVlOyB0cmFja0J5OiB0cmFja0J5RmllbGROYW1lXCIgY2xhc3M9XCJmZC1yb3cgZmQtZm9ybS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jb2xcIiBbY2xhc3NdPVwiX2lubGluZUNvbHVtbkxheW91dENsYXNzXCIgW3N0eWxlLm9yZGVyXT1cImZpZWxkLnJhbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZD8ucmVuZGVyZXIgfHwgbnVsbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRm9yIG5lc3RlZCBmb3JtLWdyb3VwIC0tPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmRwLWZvcm0tZ3JvdXBcIj48L25nLWNvbnRlbnQ+XG5cbjxuZy10ZW1wbGF0ZSAjbWFpblRpdGxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9oaW50T3B0aW9ucz8uY29udGVudCAmJiBfaGludE9wdGlvbnMucG9zaXRpb24gPT09ICdiZWZvcmUnXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoaW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGg1IGNsYXNzPVwiZmQtZm9ybS1oZWFkZXJfX3RleHRcIj5cbiAgICAgICAge3sgbWFpblRpdGxlIH19XG4gICAgPC9oNT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfaGludE9wdGlvbnM/LmNvbnRlbnQgJiYgX2hpbnRPcHRpb25zLnBvc2l0aW9uID09PSAnYWZ0ZXInXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoaW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNoaW50VGVtcGxhdGU+XG4gICAgICAgIDxzcGFuIGZkLWxpbmsgW3VuZGVjb3JhdGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgW2ZkLWlubGluZS1oZWxwXT1cIl9oaW50T3B0aW9ucy5jb250ZW50XCJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiX2hpbnRPcHRpb25zLmdseXBoXCJcbiAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIl9oaW50T3B0aW9ucy5wbGFjZW1lbnQgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgW3RyaWdnZXJzXT1cIl9oaW50T3B0aW9ucy50cmlnZ2VyIHx8IFtdXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
|
-
import { FieldGroup } from '../../
|
|
2
|
+
import { FieldGroup } from '../../models/field.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class FieldGroupRowValuePipe {
|
|
5
5
|
/** @hidden */
|
|
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
13
13
|
type: Pipe,
|
|
14
14
|
args: [{ name: 'fieldGroupRowValue' }]
|
|
15
15
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAtcm93LXZhbHVlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9mb3JtLWdyb3VwL3BpcGVzL2ZpZWxkLWdyb3VwLXJvdy12YWx1ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLHNCQUFzQjtJQUMvQixjQUFjO0lBQ2QsU0FBUyxDQUFDLEdBQTRDO1FBQ2xELE9BQU8sR0FBRyxDQUFDLEtBQUssWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzFFLENBQUM7OEdBSlEsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWVsZENvbHVtbiwgRmllbGRHcm91cCB9IGZyb20gJy4uLy4uL21vZGVscy9maWVsZC5tb2RlbCc7XG5cbkBQaXBlKHsgbmFtZTogJ2ZpZWxkR3JvdXBSb3dWYWx1ZScgfSlcbmV4cG9ydCBjbGFzcyBGaWVsZEdyb3VwUm93VmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFuc2Zvcm0ocm93OiBLZXlWYWx1ZTxhbnksIEZpZWxkQ29sdW1uIHwgRmllbGRHcm91cD4pOiBGaWVsZENvbHVtbiB7XG4gICAgICAgIHJldHVybiByb3cudmFsdWUgaW5zdGFuY2VvZiBGaWVsZEdyb3VwID8gcm93LnZhbHVlLmZpZWxkcyA6IHJvdy52YWx1ZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FormFieldComponent } from './form-group/form-field/form-field.component';
|
|
2
2
|
import { FormFieldGroupComponent } from './form-group/form-field-group/form-field-group.component';
|
|
3
3
|
import { FormGeneratorFieldComponent } from './form-generator/form-generator-field/form-generator-field.component';
|
|
4
|
+
import { Field } from './models/field.model';
|
|
4
5
|
/** @hidden */
|
|
5
6
|
export function isFieldChild(child) {
|
|
6
7
|
return child instanceof FormFieldComponent;
|
|
@@ -22,21 +23,4 @@ export function getField(field) {
|
|
|
22
23
|
field = isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;
|
|
23
24
|
return new Field(field.id, field.rank, field.renderer, field.column);
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
/** @hidden */
|
|
27
|
-
constructor(name, rank, renderer, column) {
|
|
28
|
-
this.name = name;
|
|
29
|
-
this.rank = rank;
|
|
30
|
-
this.renderer = renderer;
|
|
31
|
-
this.column = column;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export class FieldGroup {
|
|
35
|
-
/** @hidden */
|
|
36
|
-
constructor(label, fields, hintOptions) {
|
|
37
|
-
this.label = label;
|
|
38
|
-
this.fields = fields;
|
|
39
|
-
this.hintOptions = hintOptions;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBTW5ILGNBQWM7QUFDZCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWM7SUFDdkMsT0FBTyxLQUFLLFlBQVksa0JBQWtCLENBQUM7QUFDL0MsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBYztJQUNuRCxPQUFPLEtBQUssWUFBWSwyQkFBMkIsQ0FBQztBQUN4RCxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzVDLE9BQU8sS0FBSyxZQUFZLHVCQUF1QixDQUFDO0FBQ3BELENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFzRDtJQUMvRSxPQUFPLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDekUsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXdCO0lBQzdDLEtBQUssR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRXRFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxNQUFNLE9BQU8sS0FBSztJQUNkLGNBQWM7SUFDZCxZQUNXLElBQWEsRUFDYixJQUFhLEVBQ2IsUUFBMkIsRUFDM0IsTUFBZTtRQUhmLFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUN2QixDQUFDO0NBQ1A7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUNuQixjQUFjO0lBQ2QsWUFBbUIsS0FBYSxFQUFTLE1BQW1CLEVBQVMsV0FBeUI7UUFBM0UsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYztJQUFHLENBQUM7Q0FDckciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQbGF0Zm9ybUZvcm1GaWVsZCwgSGludE9wdGlvbnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZ3JvdXAvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1ncm91cC9mb3JtLWZpZWxkLWdyb3VwL2Zvcm0tZmllbGQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3ItZmllbGQvZm9ybS1nZW5lcmF0b3ItZmllbGQuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZENvbHVtbiB7XG4gICAgW2tleTogbnVtYmVyXTogQXJyYXk8RmllbGQ+O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmllbGRDaGlsZChjaGlsZDogdW5rbm93bik6IGNoaWxkIGlzIFBsYXRmb3JtRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gY2hpbGQgaW5zdGFuY2VvZiBGb3JtRmllbGRDb21wb25lbnQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWVsZEdyb3VwV3JhcHBlckNoaWxkKGNoaWxkOiB1bmtub3duKTogY2hpbGQgaXMgRm9ybUdlbmVyYXRvckZpZWxkQ29tcG9uZW50IHtcbiAgICByZXR1cm4gY2hpbGQgaW5zdGFuY2VvZiBGb3JtR2VuZXJhdG9yRmllbGRDb21wb25lbnQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWVsZEdyb3VwQ2hpbGQoY2hpbGQ6IHVua25vd24pOiBjaGlsZCBpcyBGb3JtRmllbGRHcm91cENvbXBvbmVudCB7XG4gICAgcmV0dXJuIGNoaWxkIGluc3RhbmNlb2YgRm9ybUZpZWxkR3JvdXBDb21wb25lbnQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUZpZWxkKGZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCB8IEZvcm1HZW5lcmF0b3JGaWVsZENvbXBvbmVudCk6IFBsYXRmb3JtRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gaXNGaWVsZEdyb3VwV3JhcHBlckNoaWxkKGZpZWxkKSA/IGZpZWxkLmZpZWxkUmVuZGVyZXIgOiBmaWVsZDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZChmaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQpOiBGaWVsZCB7XG4gICAgZmllbGQgPSBpc0ZpZWxkR3JvdXBXcmFwcGVyQ2hpbGQoZmllbGQpID8gZmllbGQuZmllbGRSZW5kZXJlciA6IGZpZWxkO1xuXG4gICAgcmV0dXJuIG5ldyBGaWVsZChmaWVsZC5pZCwgZmllbGQucmFuaywgZmllbGQucmVuZGVyZXIsIGZpZWxkLmNvbHVtbik7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIG5hbWU/OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByYW5rPzogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI/OiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwdWJsaWMgY29sdW1uPzogbnVtYmVyXG4gICAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRHcm91cCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbGFiZWw6IHN0cmluZywgcHVibGljIGZpZWxkczogRmllbGRDb2x1bW4sIHB1YmxpYyBoaW50T3B0aW9ucz86IEhpbnRPcHRpb25zKSB7fVxufVxuIl19
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3QyxjQUFjO0FBQ2QsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sS0FBSyxZQUFZLGtCQUFrQixDQUFDO0FBQy9DLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWM7SUFDbkQsT0FBTyxLQUFLLFlBQVksMkJBQTJCLENBQUM7QUFDeEQsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYztJQUM1QyxPQUFPLEtBQUssWUFBWSx1QkFBdUIsQ0FBQztBQUNwRCxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBc0Q7SUFDL0UsT0FBTyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUF3QjtJQUM3QyxLQUFLLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUV0RSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm1Gb3JtRmllbGQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZ3JvdXAvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1ncm91cC9mb3JtLWZpZWxkLWdyb3VwL2Zvcm0tZmllbGQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3ItZmllbGQvZm9ybS1nZW5lcmF0b3ItZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi9tb2RlbHMvZmllbGQubW9kZWwnO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmllbGRDaGlsZChjaGlsZDogdW5rbm93bik6IGNoaWxkIGlzIFBsYXRmb3JtRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gY2hpbGQgaW5zdGFuY2VvZiBGb3JtRmllbGRDb21wb25lbnQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWVsZEdyb3VwV3JhcHBlckNoaWxkKGNoaWxkOiB1bmtub3duKTogY2hpbGQgaXMgRm9ybUdlbmVyYXRvckZpZWxkQ29tcG9uZW50IHtcbiAgICByZXR1cm4gY2hpbGQgaW5zdGFuY2VvZiBGb3JtR2VuZXJhdG9yRmllbGRDb21wb25lbnQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWVsZEdyb3VwQ2hpbGQoY2hpbGQ6IHVua25vd24pOiBjaGlsZCBpcyBGb3JtRmllbGRHcm91cENvbXBvbmVudCB7XG4gICAgcmV0dXJuIGNoaWxkIGluc3RhbmNlb2YgRm9ybUZpZWxkR3JvdXBDb21wb25lbnQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUZpZWxkKGZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCB8IEZvcm1HZW5lcmF0b3JGaWVsZENvbXBvbmVudCk6IFBsYXRmb3JtRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gaXNGaWVsZEdyb3VwV3JhcHBlckNoaWxkKGZpZWxkKSA/IGZpZWxkLmZpZWxkUmVuZGVyZXIgOiBmaWVsZDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZChmaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQpOiBGaWVsZCB7XG4gICAgZmllbGQgPSBpc0ZpZWxkR3JvdXBXcmFwcGVyQ2hpbGQoZmllbGQpID8gZmllbGQuZmllbGRSZW5kZXJlciA6IGZpZWxkO1xuXG4gICAgcmV0dXJuIG5ldyBGaWVsZChmaWVsZC5pZCwgZmllbGQucmFuaywgZmllbGQucmVuZGVyZXIsIGZpZWxkLmNvbHVtbik7XG59XG4iXX0=
|