@gnggln/ng-ui-system 1.0.0-alpha.21 → 1.0.0-alpha.23
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/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/crud-table/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/crud-table/lib/core/logging/logger.service.d.ts +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/crud-table/lib/core/logging/logger.service.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +105 -18
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/form-builder/lib/core/logging/logger.service.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +1 -1
- package/esm2022/lib/components/form-builder/form-wizard.component.mjs +105 -18
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/lib/components/form-builder/types/index.mjs +1 -1
- package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/lib/core/logging/logger.service.mjs +1 -1
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +12 -6
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -1
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +12 -6
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -1
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +116 -23
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -1
- package/fesm2022/gnggln-ng-ui-system.mjs +116 -23
- package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
- package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +10 -1
- package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/form-builder/lib/components/form-builder/types/index.d.ts +1 -1
- package/form-builder/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/form-builder/lib/core/logging/logger.service.d.ts +1 -1
- package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/form-builder-editor/lib/components/form-builder/types/index.d.ts +1 -1
- package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/form-builder-editor/lib/core/logging/logger.service.d.ts +1 -1
- package/lib/components/form-builder/form-wizard.component.d.ts +10 -1
- package/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/lib/components/form-builder/types/index.d.ts +1 -1
- package/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/lib/core/logging/logger.service.d.ts +1 -1
- package/package.json +13 -13
|
@@ -292,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
292
292
|
type: Injectable,
|
|
293
293
|
args: [{ providedIn: 'root' }]
|
|
294
294
|
}] });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb3JlL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdwRCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFekI7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQWdDLElBQUksQ0FBQztRQUV0RCw0QkFBNEI7UUFDbkIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVoRCw4QkFBOEI7UUFDdEIsV0FBTSxHQUFtQjtZQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM3QixRQUFRLEVBQUUsT0FBTztZQUNqQixLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLFVBQVUsRUFBRSxxQkFBcUI7U0FDbEMsQ0FBQztLQW9USDtJQWxUQyx3REFBd0Q7SUFDaEQsWUFBWTtRQUNsQixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUM7SUFDaEYsQ0FBQztJQUVELHlFQUF5RTtJQUNqRSxhQUFhO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIs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QUFDLENBQUMsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxFQUFHLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0FoVVUsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBtb2R1bGUgbmctdWktc3lzdGVtL2NvcmUvbG9nZ2luZ1xyXG4gKiBMb2dnZXIgY2VudHJhbGl6emF0byBjb24gcGVyc2lzdGVuemEgSW5kZXhlZERCLlxyXG4gKiBQYXR0ZXJuIG9tb2xvZ2F0byBhIEFjdGlvbkxvZ2dlclNlcnZpY2UgZGVsIHByb2dldHRvIFNpZm9ybS1QQUwuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGNvbnN0IGxvZ2dlciA9IGluamVjdChVaUxvZ2dlclNlcnZpY2UpO1xyXG4gKiBsb2dnZXIubG9nRm9ybUFjdGlvbignZm9ybV9zdWJtaXQnLCB7IHNjaGVtYUlkOiAndXNlci1mb3JtJywgdmFsdWVzOiBkYXRhIH0pO1xyXG4gKiBsb2dnZXIubG9nV2l6YXJkQWN0aW9uKCdzdGVwX2NoYW5nZScsIHsgZnJvbTogMCwgdG86IDEgfSk7XHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB0eXBlIHsgVWlMb2dDYXRlZ29yeSwgVWlMb2dFbnRyeSwgVWlMb2dGaWx0ZXIsIFVpTG9nTGV2ZWwsIFVpTG9nU3VtbWFyeSwgVWlMb2dnZXJDb25maWcgfSBmcm9tICcuL2xvZ2dlci50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgVUlfTE9HR0VSX0RFRkFVTFRfVFRMX01TLFxyXG4gIFVJX0xPR0dFUl9JREJfTkFNRSxcclxuICBVSV9MT0dHRVJfSURCX1NUT1JFLFxyXG4gIFVJX0xPR0dFUl9JREJfVkVSU0lPTixcclxuICBVSV9MT0dHRVJfTUFYX0VOVFJJRVMsXHJcbiAgVUlfTE9HR0VSX0xFVkVMUyxcclxufSBmcm9tICcuL2xvZ2dlci5jb25maWcnO1xyXG5cclxuLyoqXHJcbiAqIExvZ2dlciBjZW50cmFsaXp6YXRvIHBlciBjb21wb25lbnRpIG5nLXVpLXN5c3RlbS5cclxuICogUGVyc2lzdGUgc3UgSW5kZXhlZERCIGNvbiBjbGVhbnVwIGF1dG9tYXRpY28uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVWlMb2dnZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG4gIHByaXZhdGUgZGJQcm9taXNlOiBQcm9taXNlPElEQkRhdGFiYXNlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogU3RhdG8gdG9nZ2xlIHJ1bnRpbWUuICovXHJcbiAgcmVhZG9ubHkgZW5hYmxlZCA9IHNpZ25hbCh0aGlzLmRldGVjdEVuYWJsZWQoKSk7XHJcblxyXG4gIC8qKiBDb25maWd1cmF6aW9uZSBydW50aW1lLiAqL1xyXG4gIHByaXZhdGUgY29uZmlnOiBVaUxvZ2dlckNvbmZpZyA9IHtcclxuICAgIGVuYWJsZWQ6IHRoaXMuZGV0ZWN0RW5hYmxlZCgpLFxyXG4gICAgbWluTGV2ZWw6ICdkZWJ1ZycsXHJcbiAgICB0dGxNczogVUlfTE9HR0VSX0RFRkFVTFRfVFRMX01TLFxyXG4gICAgbWF4RW50cmllczogVUlfTE9HR0VSX01BWF9FTlRSSUVTLFxyXG4gIH07XHJcblxyXG4gIC8qKiBUcnVlIHNlIEluZGV4ZWREQiBkaXNwb25pYmlsZSBlIHNpYW1vIGluIGJyb3dzZXIuICovXHJcbiAgcHJpdmF0ZSBpZGJTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0eXBlb2YgaW5kZXhlZERCICE9PSAndW5kZWZpbmVkJztcclxuICB9XHJcblxyXG4gIC8qKiBSaWxldmEgc2UgbG9nZ2luZyBhdHRpdm8gKGRlZmF1bHQ6IHRydWUgaW4gZGV2IHNlIG5vbiBwcm9kdWN0aW9uKS4gKi9cclxuICBwcml2YXRlIGRldGVjdEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBmYWxzZTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBjb25zdCBuZyA9ICh3aW5kb3cgYXMgYW55KS5uZztcclxuICAgIGNvbnN0IGlzRGV2ID0gbmcgJiYgdHlwZW9mIG5nLnByb2JlID09PSAnZnVuY3Rpb24nO1xyXG4gICAgcmV0dXJuIGlzRGV2O1xyXG4gIH1cclxuXHJcbiAgLyoqIEFiaWxpdGEvZGlzYWJpbGl0YSBsb2dnaW5nIHJ1bnRpbWUuICovXHJcbiAgc2V0RW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5lbmFibGVkLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLmNvbmZpZy5lbmFibGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQ29uZmlndXJhIGlsIGxvZ2dlci4gKi9cclxuICBjb25maWd1cmUoY29uZmlnOiBQYXJ0aWFsPFVpTG9nZ2VyQ29uZmlnPik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jb25maWcgfTtcclxuICAgIHRoaXMuZW5hYmxlZC5zZXQodGhpcy5jb25maWcuZW5hYmxlZCk7XHJcbiAgfVxyXG5cclxuICAvLyAgUHVibGljIEFQSTogZ2VuZXJpYyBsb2dcclxuXHJcbiAgLyoqXHJcbiAgICogTG9nIGdlbmVyaWNvIGNvbiBjb250cm9sbG8gZW5hYmxlZCBlIGxpdmVsbG8uXHJcbiAgICovXHJcbiAgbG9nKFxyXG4gICAgY2F0ZWdvcnk6IFVpTG9nQ2F0ZWdvcnksXHJcbiAgICBsZXZlbDogVWlMb2dMZXZlbCxcclxuICAgIGFjdGlvbjogc3RyaW5nLFxyXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxyXG4gICAgZHVyYXRpb24/OiBudW1iZXJcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVkKCkpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5zaG91bGRMb2dMZXZlbChsZXZlbCkpIHJldHVybjtcclxuICAgIHZvaWQgdGhpcy5wZXJzaXN0KGNhdGVnb3J5LCBsZXZlbCwgYWN0aW9uLCBwYXlsb2FkLCBkdXJhdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYXppb25lIGZvcm0gKHN1Ym1pdCwgcmVzZXQsIHZhbHVlQ2hhbmdlLCBldGMpLlxyXG4gICAqL1xyXG4gIGxvZ0Zvcm1BY3Rpb24oXHJcbiAgICBhY3Rpb246ICdpbml0JyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JyB8ICd2YWx1ZUNoYW5nZScgfCAndmFsaWRhdGlvbkNoYW5nZScgfCAnY3VzdG9tRXZlbnQnIHwgJ2Rlc3Ryb3knLFxyXG4gICAgcGF5bG9hZDogeyBzY2hlbWFJZDogc3RyaW5nO1trZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2coJ2Zvcm0nLCAnaW5mbycsIGFjdGlvbiwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYXppb25lIHdpemFyZCAoc3RlcENoYW5nZSwgY29tcGxldGUsIHZhbGlkYXRpb25GYWlsZWQsIGV0YykuXHJcbiAgICovXHJcbiAgbG9nV2l6YXJkQWN0aW9uKFxyXG4gICAgYWN0aW9uOiAnaW5pdCcgfCAnc3RlcENoYW5nZScgfCAnc3RlcENvbXBsZXRlJyB8ICdzdGVwVmFsaWRhdGlvbkZhaWxlZCcgfCAnY29tcGxldGUnIHwgJ25hdmlnYXRpb24nIHwgJ3NhdmUnIHwgJ3ZhbHVlQ2hhbmdlJyB8ICdrZXlib2FyZE5hdmlnYXRpb24nIHwgJ2Rlc3Ryb3knLFxyXG4gICAgcGF5bG9hZDogeyB3aXphcmRJZD86IHN0cmluZzsgc3RlcD86IG51bWJlcjtba2V5OiBzdHJpbmddOiB1bmtub3duIH1cclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCd3aXphcmQnLCAnaW5mbycsIGFjdGlvbiwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgZXJyb3JlLlxyXG4gICAqL1xyXG4gIGxvZ0Vycm9yKGVycm9yOiBFcnJvciB8IHVua25vd24sIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xyXG4gICAgY29uc3QgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLmNvbnRleHQgfTtcclxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgIHBheWxvYWRbJ21lc3NhZ2UnXSA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgIHBheWxvYWRbJ3N0YWNrJ10gPSBlcnJvci5zdGFjaztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBheWxvYWRbJ2Vycm9yJ10gPSBlcnJvcjtcclxuICAgIH1cclxuICAgIHRoaXMubG9nKCdlcnJvcicsICdlcnJvcicsICdleGNlcHRpb24nLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZyBkZWJ1ZyAoc29sbyBzZSBlbmFibGVkIGUgbWluTGV2ZWwgPD0gZGVidWcpLlxyXG4gICAqL1xyXG4gIGRlYnVnKGNhdGVnb3J5OiBVaUxvZ0NhdGVnb3J5LCBhY3Rpb246IHN0cmluZywgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZyhjYXRlZ29yeSwgJ2RlYnVnJywgYWN0aW9uLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIC8vICBJbmRleGVkREIgcGVyc2lzdGVuY2VcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwZXJzaXN0KFxyXG4gICAgY2F0ZWdvcnk6IFVpTG9nQ2F0ZWdvcnksXHJcbiAgICBsZXZlbDogVWlMb2dMZXZlbCxcclxuICAgIGFjdGlvbjogc3RyaW5nLFxyXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxyXG4gICAgZHVyYXRpb24/OiBudW1iZXJcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pZGJTdXBwb3J0ZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGVudHJ5OiBVaUxvZ0VudHJ5ID0ge1xyXG4gICAgICBpZDogYCR7RGF0ZS5ub3coKX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA5KX1gLFxyXG4gICAgICBjYXRlZ29yeSxcclxuICAgICAgbGV2ZWwsXHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgcGF5bG9hZCxcclxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgICBkdXJhdGlvbixcclxuICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogJycsXHJcbiAgICAgIHVzZXJJZDogdGhpcy5nZXRVc2VySWQoKSxcclxuICAgIH07XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLm9wZW5EYigpO1xyXG4gICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKFVJX0xPR0dFUl9JREJfU1RPUkUsICdyZWFkd3JpdGUnKTtcclxuICAgICAgdHgub2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSkucHV0KGVudHJ5LCBlbnRyeS5pZCk7XHJcblxyXG4gICAgICAvLyBEZWJ1ZyB2aXNpYmlsZSBpbiBkZXYgbW9kZVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICBpZiAodGhpcy5lbmFibGVkKCkpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGBbVWlMb2dnZXJdICR7ZW50cnkuY2F0ZWdvcnl9OiR7ZW50cnkuYWN0aW9ufWAsIGVudHJ5LnBheWxvYWQgPz8gJycpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDbGVhbnVwIGFzaW5jcm9ubyBzZW56YSBibG9jY2FyZVxyXG4gICAgICB2b2lkIHRoaXMuY2xlYW51cElmTmVlZGVkKGRiKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gU2lsZW50IGZhaWw6IGxvZ2dpbmcgbm9uIGRldmUgcm9tcGVyZSBsJ2FwcFxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLndhcm4oJ1tVaUxvZ2dlcl0gUGVyc2lzdCBmYWlsZWQ6JywgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogUmVjdXBlcmEgdXNlcklkIGRhIGxvY2FsU3RvcmFnZSBzZSBkaXNwb25pYmlsZS4gKi9cclxuICBwcml2YXRlIGdldFVzZXJJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleExvZ2luJykgPz8gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIFZlcmlmaWNhIHNlIGlsIGxpdmVsbG8gZGV2ZSBlc3NlcmUgbG9nZ2F0byBpbiBiYXNlIGEgbWluTGV2ZWwuICovXHJcbiAgcHJpdmF0ZSBzaG91bGRMb2dMZXZlbChsZXZlbDogVWlMb2dMZXZlbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbWluSW5kZXggPSBVSV9MT0dHRVJfTEVWRUxTLmluZGV4T2YodGhpcy5jb25maWcubWluTGV2ZWwpO1xyXG4gICAgY29uc3QgbGV2ZWxJbmRleCA9IFVJX0xPR0dFUl9MRVZFTFMuaW5kZXhPZihsZXZlbCk7XHJcbiAgICByZXR1cm4gbGV2ZWxJbmRleCA+PSBtaW5JbmRleDtcclxuICB9XHJcblxyXG4gIC8vICBRdWVyeSBBUElcclxuXHJcbiAgLyoqXHJcbiAgICogUmVjdXBlcmEgbG9nIGNvbiBmaWx0cmkuXHJcbiAgICovXHJcbiAgYXN5bmMgcXVlcnkoZmlsdGVyOiBVaUxvZ0ZpbHRlciA9IHt9KTogUHJvbWlzZTxVaUxvZ0VudHJ5W10+IHtcclxuICAgIGlmICghdGhpcy5pZGJTdXBwb3J0ZWQoKSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5vcGVuRGIoKTtcclxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oVUlfTE9HR0VSX0lEQl9TVE9SRSwgJ3JlYWRvbmx5Jyk7XHJcbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKFVJX0xPR0dFUl9JREJfU1RPUkUpO1xyXG5cclxuICAgIGNvbnN0IGFsbDogVWlMb2dFbnRyeVtdID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCByZXF1ZXN0ID0gc3RvcmUuZ2V0QWxsKCk7XHJcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCBhcyBVaUxvZ0VudHJ5W10pO1xyXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hcHBseUZpbHRlcihhbGwsIGZpbHRlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSaWVwaWxvZ28gbG9nIHBlciBkYXNoYm9hcmQuXHJcbiAgICovXHJcbiAgYXN5bmMgc3VtbWFyeSgpOiBQcm9taXNlPFVpTG9nU3VtbWFyeT4ge1xyXG4gICAgY29uc3QgYWxsID0gYXdhaXQgdGhpcy5xdWVyeSgpO1xyXG5cclxuICAgIGNvbnN0IGJ5Q2F0ZWdvcnkgPSB7IGZvcm06IDAsIHdpemFyZDogMCwgbmF2aWdhdGlvbjogMCwgc3lzdGVtOiAwLCBlcnJvcjogMCB9IGFzIFJlY29yZDxVaUxvZ0NhdGVnb3J5LCBudW1iZXI+O1xyXG4gICAgY29uc3QgYnlMZXZlbCA9IHsgZGVidWc6IDAsIGluZm86IDAsIHdhcm46IDAsIGVycm9yOiAwIH0gYXMgUmVjb3JkPFVpTG9nTGV2ZWwsIG51bWJlcj47XHJcblxyXG4gICAgbGV0IG9sZGVzdCA9IEluZmluaXR5O1xyXG4gICAgbGV0IG5ld2VzdCA9IDA7XHJcblxyXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBhbGwpIHtcclxuICAgICAgYnlDYXRlZ29yeVtlbnRyeS5jYXRlZ29yeV0rKztcclxuICAgICAgYnlMZXZlbFtlbnRyeS5sZXZlbF0rKztcclxuICAgICAgaWYgKGVudHJ5LnRpbWVzdGFtcCA8IG9sZGVzdCkgb2xkZXN0ID0gZW50cnkudGltZXN0YW1wO1xyXG4gICAgICBpZiAoZW50cnkudGltZXN0YW1wID4gbmV3ZXN0KSBuZXdlc3QgPSBlbnRyeS50aW1lc3RhbXA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG90YWw6IGFsbC5sZW5ndGgsXHJcbiAgICAgIGJ5Q2F0ZWdvcnksXHJcbiAgICAgIGJ5TGV2ZWwsXHJcbiAgICAgIG9sZGVzdDogb2xkZXN0ID09PSBJbmZpbml0eSA/IDAgOiBvbGRlc3QsXHJcbiAgICAgIG5ld2VzdCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYW5jZWxsYSBsb2cgcGnDuSB2ZWNjaGkgZGkgVFRMLlxyXG4gICAqL1xyXG4gIGFzeW5jIHB1cmdlT2xkKCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICBpZiAoIXRoaXMuaWRiU3VwcG9ydGVkKCkpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IGN1dG9mZiA9IERhdGUubm93KCkgLSB0aGlzLmNvbmZpZy50dGxNcztcclxuICAgIGNvbnN0IHRvRGVsZXRlOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5vcGVuRGIoKTtcclxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oVUlfTE9HR0VSX0lEQl9TVE9SRSwgJ3JlYWRvbmx5Jyk7XHJcbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKFVJX0xPR0dFUl9JREJfU1RPUkUpO1xyXG5cclxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgY3Vyc29yID0gc3RvcmUub3BlbkN1cnNvcigpO1xyXG4gICAgICBjdXJzb3Iub25zdWNjZXNzID0gKGUpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSAoZS50YXJnZXQgYXMgSURCUmVxdWVzdCkucmVzdWx0IGFzIElEQkN1cnNvcldpdGhWYWx1ZSB8IG51bGw7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZW50cnkgPSByZXN1bHQudmFsdWUgYXMgVWlMb2dFbnRyeTtcclxuICAgICAgICBpZiAoZW50cnkudGltZXN0YW1wIDwgY3V0b2ZmKSB7XHJcbiAgICAgICAgICB0b0RlbGV0ZS5wdXNoKGVudHJ5LmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LmNvbnRpbnVlKCk7XHJcbiAgICAgIH07XHJcbiAgICAgIGN1cnNvci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KGN1cnNvci5lcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodG9EZWxldGUubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBkZWxUeCA9IGRiLnRyYW5zYWN0aW9uKFVJX0xPR0dFUl9JREJfU1RPUkUsICdyZWFkd3JpdGUnKTtcclxuICAgICAgZm9yIChjb25zdCBpZCBvZiB0b0RlbGV0ZSkge1xyXG4gICAgICAgIGRlbFR4Lm9iamVjdFN0b3JlKFVJX0xPR0dFUl9JREJfU1RPUkUpLmRlbGV0ZShpZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9EZWxldGUubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FuY2VsbGEgdHV0dGkgaSBsb2cuXHJcbiAgICovXHJcbiAgYXN5bmMgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuaWRiU3VwcG9ydGVkKCkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMub3BlbkRiKCk7XHJcbiAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKFVJX0xPR0dFUl9JREJfU1RPUkUsICdyZWFkd3JpdGUnKTtcclxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgcmVxdWVzdCA9IHR4Lm9iamVjdFN0b3JlKFVJX0xPR0dFUl9JREJfU1RPUkUpLmNsZWFyKCk7XHJcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZSgpO1xyXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vICBJbnRlcm5hbHNcclxuXHJcbiAgcHJpdmF0ZSBvcGVuRGIoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4ge1xyXG4gICAgaWYgKHRoaXMuZGJQcm9taXNlKSByZXR1cm4gdGhpcy5kYlByb21pc2U7XHJcblxyXG4gICAgdGhpcy5kYlByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcSA9IGluZGV4ZWREQi5vcGVuKFVJX0xPR0dFUl9JREJfTkFNRSwgVUlfTE9HR0VSX0lEQl9WRVJTSU9OKTtcclxuICAgICAgcmVxLm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxLmVycm9yKTtcclxuICAgICAgcmVxLm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxLnJlc3VsdCk7XHJcbiAgICAgIHJlcS5vbnVwZ3JhZGVuZWVkZWQgPSAoZXYpID0+IHtcclxuICAgICAgICBjb25zdCBkYiA9IChldi50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xyXG4gICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhVSV9MT0dHRVJfSURCX1NUT1JFKSkge1xyXG4gICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGJQcm9taXNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjbGVhbnVwSWZOZWVkZWQoZGI6IElEQkRhdGFiYXNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKFVJX0xPR0dFUl9JREJfU1RPUkUsICdyZWFkb25seScpO1xyXG4gICAgY29uc3QgY291bnQgPSBhd2FpdCBuZXcgUHJvbWlzZTxudW1iZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgcmVxID0gdHgub2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSkuY291bnQoKTtcclxuICAgICAgcmVxLm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxLnJlc3VsdCk7XHJcbiAgICAgIHJlcS5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcS5lcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY291bnQgPiB0aGlzLmNvbmZpZy5tYXhFbnRyaWVzKSB7XHJcbiAgICAgIHZvaWQgdGhpcy5wdXJnZU9sZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUZpbHRlcihlbnRyaWVzOiBVaUxvZ0VudHJ5W10sIGZpbHRlcjogVWlMb2dGaWx0ZXIpOiBVaUxvZ0VudHJ5W10ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGVudHJpZXM7XHJcblxyXG4gICAgaWYgKGZpbHRlci5jYXRlZ29yeSkge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKChlKSA9PiBlLmNhdGVnb3J5ID09PSBmaWx0ZXIuY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlci5sZXZlbCkge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKChlKSA9PiBlLmxldmVsID09PSBmaWx0ZXIubGV2ZWwpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlci5hY3Rpb24pIHtcclxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcigoZSkgPT4gZS5hY3Rpb24uaW5jbHVkZXMoZmlsdGVyLmFjdGlvbiEpKTtcclxuICAgIH1cclxuICAgIGlmIChmaWx0ZXIuZnJvbSkge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKChlKSA9PiBlLnRpbWVzdGFtcCA+PSBmaWx0ZXIuZnJvbSEpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlci50bykge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKChlKSA9PiBlLnRpbWVzdGFtcCA8PSBmaWx0ZXIudG8hKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBPcmRpbmEgbmV3ZXN0IGZpcnN0XHJcbiAgICByZXN1bHQgPSByZXN1bHQuc29ydCgoYSwgYikgPT4gYi50aW1lc3RhbXAgLSBhLnRpbWVzdGFtcCk7XHJcblxyXG4gICAgaWYgKGZpbHRlci5saW1pdCAmJiBmaWx0ZXIubGltaXQgPiAwKSB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZSgwLCBmaWx0ZXIubGltaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59Il19
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb3JlL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdwRCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFekI7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQWdDLElBQUksQ0FBQztRQUV0RCw0QkFBNEI7UUFDbkIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVoRCw4QkFBOEI7UUFDdEIsV0FBTSxHQUFtQjtZQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM3QixRQUFRLEVBQUUsT0FBTztZQUNqQixLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLFVBQVUsRUFBRSxxQkFBcUI7U0FDbEMsQ0FBQztLQWdVSDtJQTlUQyx3REFBd0Q7SUFDaEQsWUFBWTtRQUNsQixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUM7SUFDaEYsQ0FBQztJQUVELHlFQUF5RTtJQUNqRSxhQUFhO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIs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QUFDLENBQUMsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxFQUFHLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0E1VVUsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBtb2R1bGUgbmctdWktc3lzdGVtL2NvcmUvbG9nZ2luZ1xyXG4gKiBMb2dnZXIgY2VudHJhbGl6emF0byBjb24gcGVyc2lzdGVuemEgSW5kZXhlZERCLlxyXG4gKiBQYXR0ZXJuIG9tb2xvZ2F0byBhIEFjdGlvbkxvZ2dlclNlcnZpY2UgZGVsIHByb2dldHRvIFNpZm9ybS1QQUwuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGNvbnN0IGxvZ2dlciA9IGluamVjdChVaUxvZ2dlclNlcnZpY2UpO1xyXG4gKiBsb2dnZXIubG9nRm9ybUFjdGlvbignZm9ybV9zdWJtaXQnLCB7IHNjaGVtYUlkOiAndXNlci1mb3JtJywgdmFsdWVzOiBkYXRhIH0pO1xyXG4gKiBsb2dnZXIubG9nV2l6YXJkQWN0aW9uKCdzdGVwX2NoYW5nZScsIHsgZnJvbTogMCwgdG86IDEgfSk7XHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB0eXBlIHsgVWlMb2dDYXRlZ29yeSwgVWlMb2dFbnRyeSwgVWlMb2dGaWx0ZXIsIFVpTG9nTGV2ZWwsIFVpTG9nU3VtbWFyeSwgVWlMb2dnZXJDb25maWcgfSBmcm9tICcuL2xvZ2dlci50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgVUlfTE9HR0VSX0RFRkFVTFRfVFRMX01TLFxyXG4gIFVJX0xPR0dFUl9JREJfTkFNRSxcclxuICBVSV9MT0dHRVJfSURCX1NUT1JFLFxyXG4gIFVJX0xPR0dFUl9JREJfVkVSU0lPTixcclxuICBVSV9MT0dHRVJfTUFYX0VOVFJJRVMsXHJcbiAgVUlfTE9HR0VSX0xFVkVMUyxcclxufSBmcm9tICcuL2xvZ2dlci5jb25maWcnO1xyXG5cclxuLyoqXHJcbiAqIExvZ2dlciBjZW50cmFsaXp6YXRvIHBlciBjb21wb25lbnRpIG5nLXVpLXN5c3RlbS5cclxuICogUGVyc2lzdGUgc3UgSW5kZXhlZERCIGNvbiBjbGVhbnVwIGF1dG9tYXRpY28uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVWlMb2dnZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG4gIHByaXZhdGUgZGJQcm9taXNlOiBQcm9taXNlPElEQkRhdGFiYXNlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogU3RhdG8gdG9nZ2xlIHJ1bnRpbWUuICovXHJcbiAgcmVhZG9ubHkgZW5hYmxlZCA9IHNpZ25hbCh0aGlzLmRldGVjdEVuYWJsZWQoKSk7XHJcblxyXG4gIC8qKiBDb25maWd1cmF6aW9uZSBydW50aW1lLiAqL1xyXG4gIHByaXZhdGUgY29uZmlnOiBVaUxvZ2dlckNvbmZpZyA9IHtcclxuICAgIGVuYWJsZWQ6IHRoaXMuZGV0ZWN0RW5hYmxlZCgpLFxyXG4gICAgbWluTGV2ZWw6ICdkZWJ1ZycsXHJcbiAgICB0dGxNczogVUlfTE9HR0VSX0RFRkFVTFRfVFRMX01TLFxyXG4gICAgbWF4RW50cmllczogVUlfTE9HR0VSX01BWF9FTlRSSUVTLFxyXG4gIH07XHJcblxyXG4gIC8qKiBUcnVlIHNlIEluZGV4ZWREQiBkaXNwb25pYmlsZSBlIHNpYW1vIGluIGJyb3dzZXIuICovXHJcbiAgcHJpdmF0ZSBpZGJTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0eXBlb2YgaW5kZXhlZERCICE9PSAndW5kZWZpbmVkJztcclxuICB9XHJcblxyXG4gIC8qKiBSaWxldmEgc2UgbG9nZ2luZyBhdHRpdm8gKGRlZmF1bHQ6IHRydWUgaW4gZGV2IHNlIG5vbiBwcm9kdWN0aW9uKS4gKi9cclxuICBwcml2YXRlIGRldGVjdEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBmYWxzZTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBjb25zdCBuZyA9ICh3aW5kb3cgYXMgYW55KS5uZztcclxuICAgIGNvbnN0IGlzRGV2ID0gbmcgJiYgdHlwZW9mIG5nLnByb2JlID09PSAnZnVuY3Rpb24nO1xyXG4gICAgcmV0dXJuIGlzRGV2O1xyXG4gIH1cclxuXHJcbiAgLyoqIEFiaWxpdGEvZGlzYWJpbGl0YSBsb2dnaW5nIHJ1bnRpbWUuICovXHJcbiAgc2V0RW5hYmxlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5lbmFibGVkLnNldCh2YWx1ZSk7XHJcbiAgICB0aGlzLmNvbmZpZy5lbmFibGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQ29uZmlndXJhIGlsIGxvZ2dlci4gKi9cclxuICBjb25maWd1cmUoY29uZmlnOiBQYXJ0aWFsPFVpTG9nZ2VyQ29uZmlnPik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jb25maWcgfTtcclxuICAgIHRoaXMuZW5hYmxlZC5zZXQodGhpcy5jb25maWcuZW5hYmxlZCk7XHJcbiAgfVxyXG5cclxuICAvLyAgUHVibGljIEFQSTogZ2VuZXJpYyBsb2dcclxuXHJcbiAgLyoqXHJcbiAgICogTG9nIGdlbmVyaWNvIGNvbiBjb250cm9sbG8gZW5hYmxlZCBlIGxpdmVsbG8uXHJcbiAgICovXHJcbiAgbG9nKFxyXG4gICAgY2F0ZWdvcnk6IFVpTG9nQ2F0ZWdvcnksXHJcbiAgICBsZXZlbDogVWlMb2dMZXZlbCxcclxuICAgIGFjdGlvbjogc3RyaW5nLFxyXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxyXG4gICAgZHVyYXRpb24/OiBudW1iZXJcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVkKCkpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5zaG91bGRMb2dMZXZlbChsZXZlbCkpIHJldHVybjtcclxuICAgIHZvaWQgdGhpcy5wZXJzaXN0KGNhdGVnb3J5LCBsZXZlbCwgYWN0aW9uLCBwYXlsb2FkLCBkdXJhdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYXppb25lIGZvcm0gKHN1Ym1pdCwgcmVzZXQsIHZhbHVlQ2hhbmdlLCBldGMpLlxyXG4gICAqL1xyXG4gIGxvZ0Zvcm1BY3Rpb24oXHJcbiAgICBhY3Rpb246ICdpbml0JyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JyB8ICd2YWx1ZUNoYW5nZScgfCAndmFsaWRhdGlvbkNoYW5nZScgfCAnY3VzdG9tRXZlbnQnIHwgJ2Rlc3Ryb3knLFxyXG4gICAgcGF5bG9hZDogeyBzY2hlbWFJZDogc3RyaW5nO1trZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2coJ2Zvcm0nLCAnaW5mbycsIGFjdGlvbiwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYXppb25lIHdpemFyZCAoc3RlcENoYW5nZSwgY29tcGxldGUsIHZhbGlkYXRpb25GYWlsZWQsIGV0YykuXHJcbiAgICovXHJcbiAgbG9nV2l6YXJkQWN0aW9uKFxyXG4gICAgYWN0aW9uOlxyXG4gICAgICB8ICdpbml0J1xyXG4gICAgICB8ICdzdGVwQ2hhbmdlJ1xyXG4gICAgICB8ICdzdGVwQ29tcGxldGUnXHJcbiAgICAgIHwgJ3N0ZXBWYWxpZGF0aW9uRmFpbGVkJ1xyXG4gICAgICB8ICdjb21wbGV0ZSdcclxuICAgICAgfCAnbmF2aWdhdGlvbidcclxuICAgICAgfCAnc2F2ZSdcclxuICAgICAgfCAndmFsdWVDaGFuZ2UnXHJcbiAgICAgIHwgJ2tleWJvYXJkTmF2aWdhdGlvbidcclxuICAgICAgfCAnZGVzdHJveSdcclxuICAgICAgfCAncmVzdW1lJ1xyXG4gICAgICB8ICdyZXN1bWVDb21wbGV0ZScsXHJcbiAgICBwYXlsb2FkOiB7IHdpemFyZElkPzogc3RyaW5nOyBzdGVwPzogbnVtYmVyO1trZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2coJ3dpemFyZCcsICdpbmZvJywgYWN0aW9uLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZyBlcnJvcmUuXHJcbiAgICovXHJcbiAgbG9nRXJyb3IoZXJyb3I6IEVycm9yIHwgdW5rbm93biwgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4uY29udGV4dCB9O1xyXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgcGF5bG9hZFsnbWVzc2FnZSddID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgcGF5bG9hZFsnc3RhY2snXSA9IGVycm9yLnN0YWNrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGF5bG9hZFsnZXJyb3InXSA9IGVycm9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2coJ2Vycm9yJywgJ2Vycm9yJywgJ2V4Y2VwdGlvbicsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9nIGRlYnVnIChzb2xvIHNlIGVuYWJsZWQgZSBtaW5MZXZlbCA8PSBkZWJ1ZykuXHJcbiAgICovXHJcbiAgZGVidWcoY2F0ZWdvcnk6IFVpTG9nQ2F0ZWdvcnksIGFjdGlvbjogc3RyaW5nLCBwYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKGNhdGVnb3J5LCAnZGVidWcnLCBhY3Rpb24sIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gIEluZGV4ZWREQiBwZXJzaXN0ZW5jZVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHBlcnNpc3QoXHJcbiAgICBjYXRlZ29yeTogVWlMb2dDYXRlZ29yeSxcclxuICAgIGxldmVsOiBVaUxvZ0xldmVsLFxyXG4gICAgYWN0aW9uOiBzdHJpbmcsXHJcbiAgICBwYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXHJcbiAgICBkdXJhdGlvbj86IG51bWJlclxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmlkYlN1cHBvcnRlZCgpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZW50cnk6IFVpTG9nRW50cnkgPSB7XHJcbiAgICAgIGlkOiBgJHtEYXRlLm5vdygpfV8ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDkpfWAsXHJcbiAgICAgIGNhdGVnb3J5LFxyXG4gICAgICBsZXZlbCxcclxuICAgICAgYWN0aW9uLFxyXG4gICAgICBwYXlsb2FkLFxyXG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXHJcbiAgICAgIGR1cmF0aW9uLFxyXG4gICAgICB1cmw6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiAnJyxcclxuICAgICAgdXNlcklkOiB0aGlzLmdldFVzZXJJZCgpLFxyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMub3BlbkRiKCk7XHJcbiAgICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oVUlfTE9HR0VSX0lEQl9TVE9SRSwgJ3JlYWR3cml0ZScpO1xyXG4gICAgICB0eC5vYmplY3RTdG9yZShVSV9MT0dHRVJfSURCX1NUT1JFKS5wdXQoZW50cnksIGVudHJ5LmlkKTtcclxuXHJcbiAgICAgIC8vIERlYnVnIHZpc2liaWxlIGluIGRldiBtb2RlXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZWQoKSkge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgICAgY29uc29sZS5sb2coYFtVaUxvZ2dlcl0gJHtlbnRyeS5jYXRlZ29yeX06JHtlbnRyeS5hY3Rpb259YCwgZW50cnkucGF5bG9hZCA/PyAnJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENsZWFudXAgYXNpbmNyb25vIHNlbnphIGJsb2NjYXJlXHJcbiAgICAgIHZvaWQgdGhpcy5jbGVhbnVwSWZOZWVkZWQoZGIpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBTaWxlbnQgZmFpbDogbG9nZ2luZyBub24gZGV2ZSByb21wZXJlIGwnYXBwXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUud2FybignW1VpTG9nZ2VyXSBQZXJzaXN0IGZhaWxlZDonLCBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBSZWN1cGVyYSB1c2VySWQgZGEgbG9jYWxTdG9yYWdlIHNlIGRpc3BvbmliaWxlLiAqL1xyXG4gIHByaXZhdGUgZ2V0VXNlcklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4TG9naW4nKSA/PyB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogVmVyaWZpY2Egc2UgaWwgbGl2ZWxsbyBkZXZlIGVzc2VyZSBsb2dnYXRvIGluIGJhc2UgYSBtaW5MZXZlbC4gKi9cclxuICBwcml2YXRlIHNob3VsZExvZ0xldmVsKGxldmVsOiBVaUxvZ0xldmVsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBtaW5JbmRleCA9IFVJX0xPR0dFUl9MRVZFTFMuaW5kZXhPZih0aGlzLmNvbmZpZy5taW5MZXZlbCk7XHJcbiAgICBjb25zdCBsZXZlbEluZGV4ID0gVUlfTE9HR0VSX0xFVkVMUy5pbmRleE9mKGxldmVsKTtcclxuICAgIHJldHVybiBsZXZlbEluZGV4ID49IG1pbkluZGV4O1xyXG4gIH1cclxuXHJcbiAgLy8gIFF1ZXJ5IEFQSVxyXG5cclxuICAvKipcclxuICAgKiBSZWN1cGVyYSBsb2cgY29uIGZpbHRyaS5cclxuICAgKi9cclxuICBhc3luYyBxdWVyeShmaWx0ZXI6IFVpTG9nRmlsdGVyID0ge30pOiBQcm9taXNlPFVpTG9nRW50cnlbXT4ge1xyXG4gICAgaWYgKCF0aGlzLmlkYlN1cHBvcnRlZCgpKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLm9wZW5EYigpO1xyXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihVSV9MT0dHRVJfSURCX1NUT1JFLCAncmVhZG9ubHknKTtcclxuICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSk7XHJcblxyXG4gICAgY29uc3QgYWxsOiBVaUxvZ0VudHJ5W10gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBzdG9yZS5nZXRBbGwoKTtcclxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZlKHJlcXVlc3QucmVzdWx0IGFzIFVpTG9nRW50cnlbXSk7XHJcbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHJlamVjdChyZXF1ZXN0LmVycm9yKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmFwcGx5RmlsdGVyKGFsbCwgZmlsdGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJpZXBpbG9nbyBsb2cgcGVyIGRhc2hib2FyZC5cclxuICAgKi9cclxuICBhc3luYyBzdW1tYXJ5KCk6IFByb21pc2U8VWlMb2dTdW1tYXJ5PiB7XHJcbiAgICBjb25zdCBhbGwgPSBhd2FpdCB0aGlzLnF1ZXJ5KCk7XHJcblxyXG4gICAgY29uc3QgYnlDYXRlZ29yeSA9IHsgZm9ybTogMCwgd2l6YXJkOiAwLCBuYXZpZ2F0aW9uOiAwLCBzeXN0ZW06IDAsIGVycm9yOiAwIH0gYXMgUmVjb3JkPFVpTG9nQ2F0ZWdvcnksIG51bWJlcj47XHJcbiAgICBjb25zdCBieUxldmVsID0geyBkZWJ1ZzogMCwgaW5mbzogMCwgd2FybjogMCwgZXJyb3I6IDAgfSBhcyBSZWNvcmQ8VWlMb2dMZXZlbCwgbnVtYmVyPjtcclxuXHJcbiAgICBsZXQgb2xkZXN0ID0gSW5maW5pdHk7XHJcbiAgICBsZXQgbmV3ZXN0ID0gMDtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGFsbCkge1xyXG4gICAgICBieUNhdGVnb3J5W2VudHJ5LmNhdGVnb3J5XSsrO1xyXG4gICAgICBieUxldmVsW2VudHJ5LmxldmVsXSsrO1xyXG4gICAgICBpZiAoZW50cnkudGltZXN0YW1wIDwgb2xkZXN0KSBvbGRlc3QgPSBlbnRyeS50aW1lc3RhbXA7XHJcbiAgICAgIGlmIChlbnRyeS50aW1lc3RhbXAgPiBuZXdlc3QpIG5ld2VzdCA9IGVudHJ5LnRpbWVzdGFtcDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0b3RhbDogYWxsLmxlbmd0aCxcclxuICAgICAgYnlDYXRlZ29yeSxcclxuICAgICAgYnlMZXZlbCxcclxuICAgICAgb2xkZXN0OiBvbGRlc3QgPT09IEluZmluaXR5ID8gMCA6IG9sZGVzdCxcclxuICAgICAgbmV3ZXN0LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbmNlbGxhIGxvZyBwacO5IHZlY2NoaSBkaSBUVEwuXHJcbiAgICovXHJcbiAgYXN5bmMgcHVyZ2VPbGQoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGlmICghdGhpcy5pZGJTdXBwb3J0ZWQoKSkgcmV0dXJuIDA7XHJcblxyXG4gICAgY29uc3QgY3V0b2ZmID0gRGF0ZS5ub3coKSAtIHRoaXMuY29uZmlnLnR0bE1zO1xyXG4gICAgY29uc3QgdG9EZWxldGU6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLm9wZW5EYigpO1xyXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihVSV9MT0dHRVJfSURCX1NUT1JFLCAncmVhZG9ubHknKTtcclxuICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSk7XHJcblxyXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJzb3IgPSBzdG9yZS5vcGVuQ3Vyc29yKCk7XHJcbiAgICAgIGN1cnNvci5vbnN1Y2Nlc3MgPSAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IChlLnRhcmdldCBhcyBJREJSZXF1ZXN0KS5yZXN1bHQgYXMgSURCQ3Vyc29yV2l0aFZhbHVlIHwgbnVsbDtcclxuICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBlbnRyeSA9IHJlc3VsdC52YWx1ZSBhcyBVaUxvZ0VudHJ5O1xyXG4gICAgICAgIGlmIChlbnRyeS50aW1lc3RhbXAgPCBjdXRvZmYpIHtcclxuICAgICAgICAgIHRvRGVsZXRlLnB1c2goZW50cnkuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQuY29udGludWUoKTtcclxuICAgICAgfTtcclxuICAgICAgY3Vyc29yLm9uZXJyb3IgPSAoKSA9PiByZWplY3QoY3Vyc29yLmVycm9yKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0b0RlbGV0ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGRlbFR4ID0gZGIudHJhbnNhY3Rpb24oVUlfTE9HR0VSX0lEQl9TVE9SRSwgJ3JlYWR3cml0ZScpO1xyXG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIHRvRGVsZXRlKSB7XHJcbiAgICAgICAgZGVsVHgub2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSkuZGVsZXRlKGlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b0RlbGV0ZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYW5jZWxsYSB0dXR0aSBpIGxvZy5cclxuICAgKi9cclxuICBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pZGJTdXBwb3J0ZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5vcGVuRGIoKTtcclxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oVUlfTE9HR0VSX0lEQl9TVE9SRSwgJ3JlYWR3cml0ZScpO1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCByZXF1ZXN0ID0gdHgub2JqZWN0U3RvcmUoVUlfTE9HR0VSX0lEQl9TVE9SRSkuY2xlYXIoKTtcclxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZlKCk7XHJcbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHJlamVjdChyZXF1ZXN0LmVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gIEludGVybmFsc1xyXG5cclxuICBwcml2YXRlIG9wZW5EYigpOiBQcm9taXNlPElEQkRhdGFiYXNlPiB7XHJcbiAgICBpZiAodGhpcy5kYlByb21pc2UpIHJldHVybiB0aGlzLmRiUHJvbWlzZTtcclxuXHJcbiAgICB0aGlzLmRiUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgcmVxID0gaW5kZXhlZERCLm9wZW4oVUlfTE9HR0VSX0lEQl9OQU1FLCBVSV9MT0dHRVJfSURCX1ZFUlNJT04pO1xyXG4gICAgICByZXEub25lcnJvciA9ICgpID0+IHJlamVjdChyZXEuZXJyb3IpO1xyXG4gICAgICByZXEub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXEucmVzdWx0KTtcclxuICAgICAgcmVxLm9udXBncmFkZW5lZWRlZCA9IChldikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRiID0gKGV2LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XHJcbiAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFVJX0xPR0dFUl9JREJfU1RPUkUpKSB7XHJcbiAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShVSV9MT0dHRVJfSURCX1NUT1JFKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kYlByb21pc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNsZWFudXBJZk5lZWRlZChkYjogSURCRGF0YWJhc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oVUlfTE9HR0VSX0lEQl9TVE9SRSwgJ3JlYWRvbmx5Jyk7XHJcbiAgICBjb25zdCBjb3VudCA9IGF3YWl0IG5ldyBQcm9taXNlPG51bWJlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCByZXEgPSB0eC5vYmplY3RTdG9yZShVSV9MT0dHRVJfSURCX1NUT1JFKS5jb3VudCgpO1xyXG4gICAgICByZXEub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXEucmVzdWx0KTtcclxuICAgICAgcmVxLm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxLmVycm9yKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChjb3VudCA+IHRoaXMuY29uZmlnLm1heEVudHJpZXMpIHtcclxuICAgICAgdm9pZCB0aGlzLnB1cmdlT2xkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5RmlsdGVyKGVudHJpZXM6IFVpTG9nRW50cnlbXSwgZmlsdGVyOiBVaUxvZ0ZpbHRlcik6IFVpTG9nRW50cnlbXSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZW50cmllcztcclxuXHJcbiAgICBpZiAoZmlsdGVyLmNhdGVnb3J5KSB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKGUpID0+IGUuY2F0ZWdvcnkgPT09IGZpbHRlci5jYXRlZ29yeSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVyLmxldmVsKSB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKGUpID0+IGUubGV2ZWwgPT09IGZpbHRlci5sZXZlbCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVyLmFjdGlvbikge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKChlKSA9PiBlLmFjdGlvbi5pbmNsdWRlcyhmaWx0ZXIuYWN0aW9uISkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlci5mcm9tKSB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKGUpID0+IGUudGltZXN0YW1wID49IGZpbHRlci5mcm9tISk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVyLnRvKSB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKGUpID0+IGUudGltZXN0YW1wIDw9IGZpbHRlci50byEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9yZGluYSBuZXdlc3QgZmlyc3RcclxuICAgIHJlc3VsdCA9IHJlc3VsdC5zb3J0KChhLCBiKSA9PiBiLnRpbWVzdGFtcCAtIGEudGltZXN0YW1wKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyLmxpbWl0ICYmIGZpbHRlci5saW1pdCA+IDApIHtcclxuICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGZpbHRlci5saW1pdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn0iXX0=
|