@provoly/dashboard 0.14.8 → 0.14.10
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/admin/components/admin-layout/admin-layout.component.d.ts +5 -3
- package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +1 -1
- package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +0 -11
- package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +2 -7
- package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +1 -3
- package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +1 -4
- package/admin/components/admin-user/store/admin-user.action.d.ts +1 -52
- package/admin/components/admin-user/store/admin-user.effects.d.ts +0 -28
- package/admin/components/admin-user/store/admin-user.reducer.d.ts +1 -2
- package/admin/components/admin-user/store/admin-user.selector.d.ts +0 -1
- package/admin/store/admin.service.d.ts +1 -4
- package/assets/svgs/map.svg +1 -1
- package/components/metadata-editor/metadata-editor.component.d.ts +6 -6
- package/components/metadata-editor/metadata-editor.module.d.ts +7 -6
- package/components/metadata-editor/public-api.d.ts +1 -0
- package/components/metadata-editor/store/metadata.action.d.ts +63 -1
- package/components/metadata-editor/store/metadata.effects.d.ts +33 -0
- package/components/metadata-editor/store/metadata.reducer.d.ts +3 -1
- package/components/metadata-editor/store/metadata.selector.d.ts +2 -0
- package/components/metadata-editor/store/metadata.service.d.ts +5 -1
- package/components/metadata-editor/style/_o-metadata-editor.scss +15 -0
- package/components/metadata-editor/style/css.component.d.ts +5 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +2 -3
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +2 -3
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +2 -3
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +10 -7
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +2 -3
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -5
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +9 -10
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +7 -3
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +1 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +8 -28
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +2 -6
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +9 -10
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +1 -1
- package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +2 -11
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +1 -19
- package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +2 -7
- package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +1 -3
- package/esm2022/admin/i18n/en.translations.mjs +2 -2
- package/esm2022/admin/i18n/fr.translations.mjs +4 -4
- package/esm2022/admin/store/admin.effects.mjs +1 -1
- package/esm2022/admin/store/admin.service.mjs +1 -16
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +40 -45
- package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -4
- package/esm2022/components/metadata-editor/public-api.mjs +2 -1
- package/esm2022/components/metadata-editor/store/metadata.action.mjs +14 -2
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +21 -1
- package/esm2022/components/metadata-editor/store/metadata.reducer.mjs +18 -2
- package/esm2022/components/metadata-editor/store/metadata.selector.mjs +6 -2
- package/esm2022/components/metadata-editor/store/metadata.service.mjs +21 -1
- package/esm2022/components/metadata-editor/style/css.component.mjs +11 -0
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
- package/esm2022/import/i18n/en.translations.mjs +4 -1
- package/esm2022/import/i18n/fr.translations.mjs +4 -1
- package/esm2022/import/store/import.effects.mjs +8 -1
- package/esm2022/lib/core/components/about/about.component.mjs +29 -0
- package/esm2022/lib/core/components/about/pry-about.module.mjs +21 -0
- package/esm2022/lib/core/components/icon/icon.component.mjs +5 -1
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +10 -6
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +1 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +14 -3
- package/esm2022/lib/core/i18n/fr.translations.mjs +14 -3
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -3
- package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
- package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/public-api.mjs +2 -1
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/widget-vega-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/public-api.mjs +3 -1
- package/esm2022/lib/core/store/class/class.effects.mjs +1 -1
- package/esm2022/lib/core/store/config/config.actions.mjs +5 -2
- package/esm2022/lib/core/store/config/config.effects.mjs +4 -1
- package/esm2022/lib/core/store/config/config.reducer.mjs +9 -2
- package/esm2022/lib/core/store/config/config.selectors.mjs +6 -4
- package/esm2022/lib/core/store/config/config.service.mjs +36 -2
- package/esm2022/lib/core/store/config/versions.interface.mjs +2 -0
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +1 -16
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +3 -1
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +3 -2
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -3
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +15 -6
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +10 -2
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -4
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -3
- package/esm2022/notification/store/notification.effects.mjs +3 -3
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +23 -18
- package/esm2022/presentation/components/presentation.component.mjs +18 -18
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +6 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +6 -3
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +2 -2
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +2 -2
- package/esm2022/supervision/components/supervision.component.mjs +2 -2
- package/esm2022/supervision/store/supervision.actions.mjs +1 -1
- package/esm2022/supervision/store/supervision.reducer.mjs +3 -2
- package/esm2022/supervision/store/supervision.selectors.mjs +2 -2
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +4 -4
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +18 -11
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +20 -6
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +1 -2
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -2
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +15 -9
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +5 -5
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +23 -1
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +139 -0
- package/esm2022/widgets/widget-vega/i18n/en.translations.mjs +11 -0
- package/esm2022/widgets/widget-vega/i18n/fr.translations.mjs +11 -0
- package/esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs +5 -0
- package/esm2022/widgets/widget-vega/public-api.mjs +3 -0
- package/esm2022/widgets/widget-vega/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-vega/widget-vega.module.mjs +68 -0
- package/fesm2022/provoly-dashboard-admin.mjs +134 -206
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +127 -52
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +13 -0
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +2 -2
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +41 -37
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +7 -4
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-supervision.mjs +11 -8
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +3 -3
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +17 -10
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +19 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +43 -14
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +235 -0
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -0
- package/fesm2022/provoly-dashboard.mjs +188 -68
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/import/i18n/en.translations.d.ts +3 -0
- package/import/i18n/fr.translations.d.ts +3 -0
- package/lib/core/components/about/about.component.d.ts +12 -0
- package/lib/core/components/about/pry-about.module.d.ts +10 -0
- package/lib/core/i18n/en.translations.d.ts +11 -0
- package/lib/core/i18n/fr.translations.d.ts +11 -0
- package/lib/core/i18n/i18n.service.d.ts +2 -2
- package/lib/core/model/display-options.interface.d.ts +1 -1
- package/lib/core/model/manifest.interface.d.ts +2 -1
- package/lib/core/model/public-api.d.ts +1 -0
- package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
- package/lib/core/model/widget-vega-manifest.interface.d.ts +5 -0
- package/lib/core/public-api.d.ts +2 -0
- package/lib/core/store/config/config.actions.d.ts +12 -0
- package/lib/core/store/config/config.effects.d.ts +6 -0
- package/lib/core/store/config/config.reducer.d.ts +2 -0
- package/lib/core/store/config/config.selectors.d.ts +1 -0
- package/lib/core/store/config/config.service.d.ts +2 -0
- package/lib/core/store/config/versions.interface.d.ts +10 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +10 -8
- package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
- package/lib/dashboard/store/manifest.service.d.ts +1 -1
- package/package.json +31 -25
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +4 -3
- package/presentation/components/presentation.component.d.ts +2 -2
- package/presentation/style/_o-pry-new-presentation.scss +7 -0
- package/restitution/components/restitution-list-item/restitution-list-item.component.d.ts +3 -2
- package/schematics/ng-add/index.js +7 -1
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.json +2 -1
- package/styles/components/_o-tabs.scss +1 -7
- package/styles/layout/_o-base-layout.scss +8 -1
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +1 -1
- package/supervision/store/supervision.actions.d.ts +2 -2
- package/supervision/store/supervision.reducer.d.ts +1 -1
- package/supervision/store/supervision.selectors.d.ts +1 -1
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +7 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +0 -1
- package/widgets/widget-map/component/widget-map.component.d.ts +3 -1
- package/widgets/widget-map/utils/xml-utils.class.d.ts +2 -0
- package/widgets/widget-vega/component/widget-vega.component.d.ts +37 -0
- package/widgets/widget-vega/i18n/en.translations.d.ts +10 -0
- package/widgets/widget-vega/i18n/fr.translations.d.ts +10 -0
- package/widgets/widget-vega/index.d.ts +5 -0
- package/widgets/widget-vega/public-api.d.ts +2 -0
- package/widgets/widget-vega/style/_o-widget-vega.scss +6 -0
- package/widgets/widget-vega/style/css.component.d.ts +5 -0
- package/widgets/widget-vega/widget-vega.module.d.ts +19 -0
|
@@ -170,9 +170,11 @@ export class WidgetMapLayerService {
|
|
|
170
170
|
attributions: [layer.attribution ?? ''],
|
|
171
171
|
crossOrigin: 'anonymous',
|
|
172
172
|
url: layer.url,
|
|
173
|
-
params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled }
|
|
173
|
+
params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }
|
|
174
174
|
})
|
|
175
175
|
});
|
|
176
|
+
impl.set('url', layer.url);
|
|
177
|
+
impl.set('paramLayer', layer.paramLayer);
|
|
176
178
|
impl.set('oClass', layer.oClass);
|
|
177
179
|
impl.set('getFeatureInfoAdditionalParameters', layer.getFeatureInfoAdditionalParameters ?? {});
|
|
178
180
|
return impl;
|
|
@@ -346,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
346
348
|
providedIn: 'root'
|
|
347
349
|
}]
|
|
348
350
|
}] });
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtbWFwL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFjVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxlQUFlLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEUsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDL0IsZ0JB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QU8sRUFBRTtZQUNmLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2xCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2pCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDLFNBQVM7Z0JBQ3RCLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssU0FBUyxDQUFDLFlBQVk7Z0JBQ3pCLE9BQU8sZUFBZSxDQUFDO1lBQ3pCO2dCQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxPQUFPLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sUUFBUSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs4R0ExZlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgRmllbGRUeXBlLFxuICBJdGVtVXRpbHMsXG4gIE1hcEF1dG9MYXllck9wdGlvbnMsXG4gIE1hcEZlYXR1cmVMYXllck9wdGlvbnMsXG4gIE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgTWFwUmFzdGVyVGlsZUxheWVyT3B0aW9ucyxcbiAgTWFwVmVjdG9yVGlsZUxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0UmVsYXRpb25MYXllck9wdGlvbnMsXG4gIE1hcFdNU0xheWVyTGF5ZXJPcHRpb25zLFxuICBNYXBXTVRTTGF5ZXJMYXllck9wdGlvbnMsXG4gIFJlc3VsdFNldFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgRmVhdHVyZSwgTWFwIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgZ2V0VG9wTGVmdCwgZ2V0V2lkdGggfSBmcm9tICdvbC9leHRlbnQnO1xuaW1wb3J0IHsgR2VvSlNPTiwgTVZUIH0gZnJvbSAnb2wvZm9ybWF0JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBIZWF0bWFwLCBUaWxlIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IEJhc2VMYXllciBmcm9tICdvbC9sYXllci9CYXNlJztcbmltcG9ydCBWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IFZlY3RvclRpbGVMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3JUaWxlJztcbmltcG9ydCB7IENsdXN0ZXIsIFRpbGVXTVMsIFZlY3RvciwgV01UUywgWFlaIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgVmVjdG9yVGlsZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yVGlsZSc7XG5pbXBvcnQgeyBDaXJjbGUsIEZpbGwsIFN0cm9rZSwgU3R5bGUsIFRleHQgfSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgQ2lyY2xlU3R5bGUgZnJvbSAnb2wvc3R5bGUvQ2lyY2xlJztcbmltcG9ydCBXTVRTVGlsZUdyaWQgZnJvbSAnb2wvdGlsZWdyaWQvV01UUyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0hFQVRNQVBfUkFESVVTLFxuICBERUZBVUxUX1JBRElVU19JTlRFTlNJVFlfRkFDVE9SLFxuICBERUZBVUxUX1pPT01fTUFYLFxuICBERUZBVUxUX1pPT01fTUlOLFxuICBnZXRDaXJjbGVGZWF0dXJlRnJvbUl0ZW0sXG4gIGdldEZlYXR1cmVGcm9tSXRlbVxufSBmcm9tICcuLi91dGlscy93aWRnZXQtbWFwLnV0aWxzJztcblxuZXhwb3J0IHR5cGUgQXR0cmlidXRlc0ZvckNsYXNzID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgaW50ZW5zaXR5QXR0cmlidXRlOiBBdHRyaWJ1dGU7XG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEl0ZW1TdHlsZXMgPSB7IFtpZDogc3RyaW5nXTogeyBjbGFzc2ljOiBTdHlsZTsgYm9yZGVyZWQ6IFN0eWxlIH0gfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwTGF5ZXJTZXJ2aWNlIHtcbiAgc3R5bGVDYWNoZTogYW55ID0ge307XG5cbiAgY2lyY2xlU3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgIGNvbG9yOiAncmdiYSgzNyw4OSwxNjMsMC4yNCknXG4gICAgfSksXG4gICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgIGNvbG9yOiAncmdiKDM3LDg5LDE2MyknLFxuICAgICAgd2lkdGg6IDJcbiAgICB9KVxuICB9KTtcbiAgc2VsZWN0ZWRDaXJjbGVTdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6ICdyZ2JhKDM3LDE2Myw1OCwwLjI0KSdcbiAgICB9KSxcbiAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xuICAgICAgY29sb3I6ICdyZ2IoMzcsMTYzLDU4KScsXG4gICAgICB3aWR0aDogMlxuICAgIH0pXG4gIH0pO1xuXG4gIHBvaW50U3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcbiAgICAgIGZpbGw6IG5ldyBGaWxsKHsgY29sb3I6ICdyZ2JhKDM3LDg5LDE2MywwLjI0KScgfSksXG4gICAgICBzdHJva2U6IG5ldyBTdHJva2UoeyBjb2xvcjogJ3JnYigzNyw4OSwxNjMpJywgd2lkdGg6IDIgfSksXG4gICAgICByYWRpdXM6IDEwXG4gICAgfSlcbiAgfSk7XG4gIHNlbGVjdGVkUG9pbnRTdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgaW1hZ2U6IG5ldyBDaXJjbGUoe1xuICAgICAgZmlsbDogbmV3IEZpbGwoeyBjb2xvcjogJ3JnYmEoMzcsMTYzLDU4LDAuMjQpJyB9KSxcbiAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7IGNvbG9yOiAncmdiKDM3LDE2Myw1OCknLCB3aWR0aDogMiB9KSxcbiAgICAgIHJhZGl1czogMTBcbiAgICB9KVxuICB9KTtcblxuICBnZXQgaW1wbGVtZW50YXRpb25MaXN0KCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxheWVyc0ltcGxlbWVudGF0aW9uKS5maWx0ZXIoKGltcGxlbWVudGF0aW9uKSA9PiBpbXBsZW1lbnRhdGlvbiAhPT0gJ2dlb3NlcnZlcicpO1xuICB9XG5cbiAgZG9udE5lZWRMb2NhdGlvbiA9IFsncmVsYXRpb24nLCAnd21zJywgJ3dtdHMnLCAnZ2Vvc2VydmVyJywgJ2ZlYXR1cmVsYXllcicsICd2ZWN0b3J0aWxlJywgJ3Jhc3RlcnRpbGUnXTtcbiAgZG9udE5lZWRJbnRlbnNpdHkgPSBbXG4gICAgLi4udGhpcy5kb250TmVlZExvY2F0aW9uLFxuICAgICdtYXJrZXInLFxuICAgICdwb2ludCcsXG4gICAgJ2xpbmUnLFxuICAgICdwb2x5Z29uJyxcbiAgICAnbXVsdGktbGluZScsXG4gICAgJ211bHRpLXBvbHlnb24nLFxuICAgICdhdXRvJ1xuICBdO1xuXG4gIGxheWVyc0ltcGxlbWVudGF0aW9uID0ge1xuICAgIGF1dG86IChcbiAgICAgIGxheWVyOiBNYXBBdXRvTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllcnNJbXBsZW1lbnRhdGlvbltXaWRnZXRNYXBMYXllclNlcnZpY2UudHJhbnNsYXRlRmllbGRUeXBlVG9MYXllclR5cGUobGF5ZXIuc3ViVHlwZSldKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxheWVyLFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBpdGVtU3R5bGVzLFxuICAgICAgICBtYXBcbiAgICAgICkgYXMgQmFzZUxheWVyO1xuICAgIH0sXG4gICAgaGVhdG1hcDogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGhlYXRtYXAgPSBuZXcgSGVhdG1hcCh7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3IoeyBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10gfSksXG4gICAgICAgIGJsdXI6IChsYXllci5yYWRpdXMgPz8gREVGQVVMVF9IRUFUTUFQX1JBRElVUykgLyAyLFxuICAgICAgICByYWRpdXM6IGxheWVyLnJhZGl1cyA/PyBERUZBVUxUX0hFQVRNQVBfUkFESVVTLFxuICAgICAgICB3ZWlnaHQ6IChmZWF0dXJlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVDYWxjdWxhdGVkVmFsdWUoXG4gICAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2ZlYXR1cmUuZ2V0KCdvQ2xhc3MnKSBhcyBzdHJpbmddLmludGVuc2l0eUF0dHJpYnV0ZVxuICAgICAgICAgICkgYXMgbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IGF0U2NhbGUgPSAodmFsdWUgLSByYW5nZS5taW4pIC8gKHJhbmdlLm1heCAtIHJhbmdlLm1pbik7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLmludGVuc2l0eUFzYyA/IGF0U2NhbGUgOiAxIC0gYXRTY2FsZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGxheWVyQ2xhc3Nlc0lkLmZvckVhY2goKGNsYXNzSWQpID0+IHtcbiAgICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IEl0ZW1VdGlscy5yZWFkR2VvbWV0cnkoaXRlbSwgJ3BvaW50JywgYXR0cmlidXRlc0ZvckNsYXNzW2NsYXNzSWRdLmxvY2F0aW9uQXR0cmlidXRlKTtcbiAgICAgICAgICAgIHJldHVybiAhIWxvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGhlYXRtYXBcbiAgICAgICAgICAgICAgLmdldFNvdXJjZSgpXG4gICAgICAgICAgICAgID8uYWRkRmVhdHVyZShnZXRGZWF0dXJlRnJvbUl0ZW0oaXRlbSwgJ2hlYXRwb2ludCcsIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUpKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaGVhdG1hcCBhcyBCYXNlTGF5ZXI7XG4gICAgfSxcbiAgICBtYXJrZXI6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHZlY3RvckxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IERFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7IGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSB9KVxuICAgICAgfSk7XG5cbiAgICAgIGxheWVyQ2xhc3Nlc0lkLmZvckVhY2goKGNsYXNzSWQpID0+IHtcbiAgICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IEl0ZW1VdGlscy5yZWFkR2VvbWV0cnkoaXRlbSwgJ3BvaW50JywgYXR0cmlidXRlc0ZvckNsYXNzW2l0ZW0ub0NsYXNzXS5sb2NhdGlvbkF0dHJpYnV0ZSk7XG4gICAgICAgICAgICByZXR1cm4gISFsb2NhdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKGFzeW5jIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtRmVhdHVyZSA9IGdldEZlYXR1cmVGcm9tSXRlbShcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgJ21hcmtlcicsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZXNbaXRlbS5pZF0/LmNsYXNzaWMsXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZXNbaXRlbS5pZF0/LmJvcmRlcmVkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaXRlbUZlYXR1cmUuc2V0U3R5bGUoaXRlbUZlYXR1cmUuZ2V0KCdjbGFzc2ljU3R5bGUnKSk7XG4gICAgICAgICAgICB2ZWN0b3JMYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShpdGVtRmVhdHVyZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFrZUNsdXN0ZXJlZCh2ZWN0b3JMYXllciwgbGF5ZXIpO1xuICAgIH0sXG4gICAgcG9pbnQ6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShsYXllciwgbGF5ZXJDbGFzc2VzSWQsIHJlc3VsdFNldCwgYXR0cmlidXRlc0ZvckNsYXNzLCAncG9pbnQnKTtcbiAgICB9LFxuICAgIGxpbmU6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShsYXllciwgbGF5ZXJDbGFzc2VzSWQsIHJlc3VsdFNldCwgYXR0cmlidXRlc0ZvckNsYXNzLCAnbGluZScpO1xuICAgIH0sXG4gICAgJ211bHRpLWxpbmUnOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllckZyb21HZW9Kc29uR2VvbWV0cnkobGF5ZXIsIGxheWVyQ2xhc3Nlc0lkLCByZXN1bHRTZXQsIGF0dHJpYnV0ZXNGb3JDbGFzcywgJ211bHRpLWxpbmUnKTtcbiAgICB9LFxuICAgIHBvbHlnb246IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShsYXllciwgbGF5ZXJDbGFzc2VzSWQsIHJlc3VsdFNldCwgYXR0cmlidXRlc0ZvckNsYXNzLCAncG9seWdvbicpO1xuICAgIH0sXG4gICAgJ211bHRpLXBvbHlnb24nOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllckZyb21HZW9Kc29uR2VvbWV0cnkobGF5ZXIsIGxheWVyQ2xhc3Nlc0lkLCByZXN1bHRTZXQsIGF0dHJpYnV0ZXNGb3JDbGFzcywgJ211bHRpLXBvbHlnb24nKTtcbiAgICB9LFxuICAgIGJ1YmJsZTogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgYnViYmxlTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgICB9KTtcblxuICAgICAgbGF5ZXJDbGFzc2VzSWQuZm9yRWFjaCgoY2xhc3NJZCkgPT4ge1xuICAgICAgICAocmVzdWx0U2V0Lml0ZW1zW2NsYXNzSWRdIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gSXRlbVV0aWxzLnJlYWRHZW9tZXRyeShpdGVtLCAncG9pbnQnLCBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlKTtcbiAgICAgICAgICAgIHJldHVybiAhIWxvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZUNhbGN1bGF0ZWRWYWx1ZShcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2l0ZW0ub0NsYXNzXS5pbnRlbnNpdHlBdHRyaWJ1dGVcbiAgICAgICAgICAgICkgYXMgbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgYXRTY2FsZSA9ICh2YWx1ZSAtIHJhbmdlLm1pbikgLyAocmFuZ2UubWF4IC0gcmFuZ2UubWluKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1GZWF0dXJlID0gZ2V0Q2lyY2xlRmVhdHVyZUZyb21JdGVtKFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlLFxuICAgICAgICAgICAgICAobGF5ZXIuaW50ZW5zaXR5QXNjID8gYXRTY2FsZSA6IDEgLSBhdFNjYWxlKSAqIChsYXllci5yYWRpdXNGYWN0b3IgPz8gREVGQVVMVF9SQURJVVNfSU5URU5TSVRZX0ZBQ1RPUiksXG4gICAgICAgICAgICAgIHRoaXMuY2lyY2xlU3R5bGUsXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaXJjbGVTdHlsZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGl0ZW1GZWF0dXJlLnNldFN0eWxlKGl0ZW1GZWF0dXJlLmdldCgnY2xhc3NpY1N0eWxlJykpO1xuICAgICAgICAgICAgYnViYmxlTGF5ZXIuZ2V0U291cmNlKCk/LmFkZEZlYXR1cmUoaXRlbUZlYXR1cmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBidWJibGVMYXllcjtcbiAgICB9LFxuICAgIHJlbGF0aW9uOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0UmVsYXRpb25MYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHdtczogKFxuICAgICAgbGF5ZXI6IE1hcFdNU0xheWVyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbXBsID0gbmV3IFRpbGUoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVGlsZVdNUyh7XG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybCxcbiAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllci5wYXJhbUxheWVyLCBUSUxFRDogbGF5ZXIucGFyYW1UaWxlZCB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIGltcGwuc2V0KCdvQ2xhc3MnLCBsYXllci5vQ2xhc3MpO1xuICAgICAgaW1wbC5zZXQoJ2dldEZlYXR1cmVJbmZvQWRkaXRpb25hbFBhcmFtZXRlcnMnLCBsYXllci5nZXRGZWF0dXJlSW5mb0FkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KTtcbiAgICAgIHJldHVybiBpbXBsO1xuICAgIH0sXG4gICAgd210czogKFxuICAgICAgbGF5ZXI6IE1hcFdNVFNMYXllckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdGlvbiA9IG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgICAgY29uc3QgcHJvamVjdGlvbkV4dGVudCA9IHByb2plY3Rpb24uZ2V0RXh0ZW50KCk7XG4gICAgICBjb25zdCBzaXplID0gZ2V0V2lkdGgocHJvamVjdGlvbkV4dGVudCkgLyAyNTY7XG4gICAgICBjb25zdCByZXNvbHV0aW9ucyA9IG5ldyBBcnJheSgxOSk7XG4gICAgICBjb25zdCBtYXRyaXhJZHMgPSBuZXcgQXJyYXkoMTkpO1xuICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCAxOTsgKyt6KSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJlc29sdXRpb25zIGFuZCBtYXRyaXhJZHMgYXJyYXlzIGZvciB0aGlzIFdNVFNcbiAgICAgICAgcmVzb2x1dGlvbnNbel0gPSBzaXplIC8gTWF0aC5wb3coMiwgeik7XG4gICAgICAgIG1hdHJpeElkc1t6XSA9IHo7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFRpbGUoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgV01UUyh7XG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybCxcbiAgICAgICAgICBsYXllcjogbGF5ZXIucGFyYW1MYXllcixcbiAgICAgICAgICBtYXRyaXhTZXQ6IGxheWVyLm1hdHJpeFNldCxcbiAgICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICAgIHRpbGVHcmlkOiBuZXcgV01UU1RpbGVHcmlkKHtcbiAgICAgICAgICAgIG9yaWdpbjogZ2V0VG9wTGVmdChwcm9qZWN0aW9uRXh0ZW50KSxcbiAgICAgICAgICAgIHJlc29sdXRpb25zOiByZXNvbHV0aW9ucyxcbiAgICAgICAgICAgIG1hdHJpeElkczogbWF0cml4SWRzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3R5bGU6IGxheWVyLnN0eWxlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdlb3NlcnZlcjogKFxuICAgICAgbGF5ZXI6IE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW1wbCA9IHRoaXMubGF5ZXJzSW1wbGVtZW50YXRpb25bJ3dtcyddKFxuICAgICAgICB7IC4uLmxheWVyLCB0eXBlOiAnd21zJywgb0NsYXNzOiBsYXllci5vQ2xhc3MgfSxcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICByYW5nZSxcbiAgICAgICAgaXRlbVN0eWxlcyxcbiAgICAgICAgbWFwXG4gICAgICApO1xuICAgICAgaW1wbC5zZXQoJ3RpdGxlJywgbGF5ZXIudGl0bGUpO1xuICAgICAgaW1wbC5zZXQoJ29DbGFzcycsIGxheWVyLm9DbGFzcyk7XG4gICAgICByZXR1cm4gaW1wbDtcbiAgICB9LFxuICAgIGZlYXR1cmVsYXllcjogKFxuICAgICAgbGF5ZXI6IE1hcEZlYXR1cmVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10sXG4gICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgIHVybDogbGF5ZXIudXJsXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZlY3RvcnRpbGU6IChcbiAgICAgIGxheWVyOiBNYXBWZWN0b3JUaWxlTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvclRpbGVMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JUaWxlKHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10sXG4gICAgICAgICAgZm9ybWF0OiBuZXcgTVZUKCksXG4gICAgICAgICAgdXJsOiBsYXllci51cmxcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmFzdGVydGlsZTogKFxuICAgICAgbGF5ZXI6IE1hcFJhc3RlclRpbGVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVGlsZSh7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBYWVooe1xuICAgICAgICAgIHVybDogbGF5ZXIudXJsLFxuICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgbGF5ZXJGcm9tR2VvSnNvbkdlb21ldHJ5KFxuICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgIHR5cGU6ICdwb2ludCcgfCAnbGluZScgfCAnbXVsdGktbGluZScgfCAncG9seWdvbicgfCAnbXVsdGktcG9seWdvbidcbiAgKSB7XG4gICAgY29uc3QgdmVjdG9yTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBERUZBVUxUX1pPT01fTUlOLFxuICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7IGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSB9KVxuICAgIH0pO1xuXG4gICAgbGF5ZXJDbGFzc2VzSWQuZm9yRWFjaCgoY2xhc3NJZCkgPT4ge1xuICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIGxvY2F0aW9uOiBJdGVtVXRpbHMucmVhZEdlb21ldHJ5KGl0ZW0sIHR5cGUsIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUpXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKCh7IGxvY2F0aW9uIH0pID0+ICEhbG9jYXRpb24pXG4gICAgICAgIC5mb3JFYWNoKGFzeW5jIChzdWJJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbUZlYXR1cmUgPSBuZXcgRmVhdHVyZSh7XG4gICAgICAgICAgICAuLi5zdWJJdGVtLml0ZW0sXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHN1Ykl0ZW0ubG9jYXRpb24sXG4gICAgICAgICAgICBjbGFzc2ljU3R5bGU6IHR5cGUgPT09ICdwb2ludCcgPyB0aGlzLnBvaW50U3R5bGUgOiB0aGlzLmNpcmNsZVN0eWxlLFxuICAgICAgICAgICAgc2VsZWN0ZWRTdHlsZTogdHlwZSA9PT0gJ3BvaW50JyA/IHRoaXMuc2VsZWN0ZWRQb2ludFN0eWxlIDogdGhpcy5zZWxlY3RlZENpcmNsZVN0eWxlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaXRlbUZlYXR1cmUuc2V0U3R5bGUoaXRlbUZlYXR1cmUuZ2V0KCdjbGFzc2ljU3R5bGUnKSk7XG4gICAgICAgICAgdmVjdG9yTGF5ZXIuZ2V0U291cmNlKCk/LmFkZEZlYXR1cmUoaXRlbUZlYXR1cmUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLm1ha2VDbHVzdGVyZWQodmVjdG9yTGF5ZXIsIGxheWVyKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUNsdXN0ZXJlZChsYXllcjogQmFzZUxheWVyLCBsYXllck9wdGlvbnM6IE1hcFdpZGdldExheWVyT3B0aW9ucykge1xuICAgIGlmICghWydtYXJrZXInLCAnYnViYmxlJ10uaW5jbHVkZXMobGF5ZXJPcHRpb25zLnR5cGUpIHx8ICEoJ2NsdXN0ZXJlZCcgaW4gbGF5ZXJPcHRpb25zICYmIGxheWVyT3B0aW9ucy5jbHVzdGVyZWQpKSB7XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfVxuICAgIC8vIENsdXN0ZXJpbmcgc291cmNlXG4gICAgY29uc3QgdmVjdG9yTGF5ZXIgPSBsYXllciBhcyBWZWN0b3JMYXllcjxWZWN0b3JTb3VyY2U8R2VvbWV0cnk+PjtcbiAgICB2ZWN0b3JMYXllci5zZXRTb3VyY2UoXG4gICAgICBuZXcgQ2x1c3Rlcih7XG4gICAgICAgIGRpc3RhbmNlOiBsYXllck9wdGlvbnMuY2x1c3RlckRpc3RhbmNlLFxuICAgICAgICBtaW5EaXN0YW5jZTogMTAsXG4gICAgICAgIHNvdXJjZTogdmVjdG9yTGF5ZXIuZ2V0U291cmNlKCkgYXMgVmVjdG9yU291cmNlXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB2ZWN0b3JMYXllci5zZXRTdHlsZSgoZmVhdHVyZSkgPT4ge1xuICAgICAgY29uc3Qgc2l6ZSA9IGZlYXR1cmUuZ2V0KCdmZWF0dXJlcycpLmxlbmd0aDtcbiAgICAgIGlmIChzaXplID4gMSkge1xuICAgICAgICBsZXQgc3R5bGUgPSB0aGlzLnN0eWxlQ2FjaGVbc2l6ZV07XG4gICAgICAgIGlmICghc3R5bGUpIHtcbiAgICAgICAgICBzdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgICAgICAgICBpbWFnZTogbmV3IENpcmNsZVN0eWxlKHtcbiAgICAgICAgICAgICAgcmFkaXVzOiAxMCxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjMzM5OUNDJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0ZXh0OiBuZXcgVGV4dCh7IHRleHQ6IGAke3NpemV9YCB9KVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc3R5bGVDYWNoZVtzaXplXSA9IHN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzaXplID09PSAxID8gZmVhdHVyZS5nZXQoJ2ZlYXR1cmVzJylbMF0uZ2V0KCdjbGFzc2ljU3R5bGUnKSA6IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH1cblxuICBzdGF0aWMgdHJhbnNsYXRlRmllbGRUeXBlVG9MYXllclR5cGUoc3ViVHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzdWJUeXBlKSB7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5QT0lOVDpcbiAgICAgICAgcmV0dXJuICdtYXJrZXInO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuTElORTpcbiAgICAgICAgcmV0dXJuICdsaW5lJztcbiAgICAgIGNhc2UgRmllbGRUeXBlLlBPTFlHT046XG4gICAgICAgIHJldHVybiAncG9seWdvbic7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5NVUxUSUxJTkU6XG4gICAgICAgIHJldHVybiAnbXVsdGktbGluZSc7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5NVUxUSVBPTFlHT046XG4gICAgICAgIHJldHVybiAnbXVsdGktcG9seWdvbic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oYHdyb25nIHR5cGUgJHtzdWJUeXBlfSBmb3IgYXV0byBvcHRpb25zYCk7XG4gICAgICAgIHJldHVybiAnbWFya2VyJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtbWFwL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFjVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxlQUFlLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEUsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDL0IsZ0JB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2FBQzNFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsNkJBQTZCLENBQUMsT0FBZTtRQUNsRCxRQUFRLE9BQU8sRUFBRTtZQUNmLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2xCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2pCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDLFNBQVM7Z0JBQ3RCLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssU0FBUyxDQUFDLFlBQVk7Z0JBQ3pCLE9BQU8sZUFBZSxDQUFDO1lBQ3pCO2dCQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxPQUFPLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sUUFBUSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs4R0E1ZlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgRmllbGRUeXBlLFxuICBJdGVtVXRpbHMsXG4gIE1hcEF1dG9MYXllck9wdGlvbnMsXG4gIE1hcEZlYXR1cmVMYXllck9wdGlvbnMsXG4gIE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgTWFwUmFzdGVyVGlsZUxheWVyT3B0aW9ucyxcbiAgTWFwVmVjdG9yVGlsZUxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0UmVsYXRpb25MYXllck9wdGlvbnMsXG4gIE1hcFdNU0xheWVyTGF5ZXJPcHRpb25zLFxuICBNYXBXTVRTTGF5ZXJMYXllck9wdGlvbnMsXG4gIFJlc3VsdFNldFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgRmVhdHVyZSwgTWFwIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgZ2V0VG9wTGVmdCwgZ2V0V2lkdGggfSBmcm9tICdvbC9leHRlbnQnO1xuaW1wb3J0IHsgR2VvSlNPTiwgTVZUIH0gZnJvbSAnb2wvZm9ybWF0JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBIZWF0bWFwLCBUaWxlIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IEJhc2VMYXllciBmcm9tICdvbC9sYXllci9CYXNlJztcbmltcG9ydCBWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IFZlY3RvclRpbGVMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3JUaWxlJztcbmltcG9ydCB7IENsdXN0ZXIsIFRpbGVXTVMsIFZlY3RvciwgV01UUywgWFlaIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgVmVjdG9yVGlsZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yVGlsZSc7XG5pbXBvcnQgeyBDaXJjbGUsIEZpbGwsIFN0cm9rZSwgU3R5bGUsIFRleHQgfSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgQ2lyY2xlU3R5bGUgZnJvbSAnb2wvc3R5bGUvQ2lyY2xlJztcbmltcG9ydCBXTVRTVGlsZUdyaWQgZnJvbSAnb2wvdGlsZWdyaWQvV01UUyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0hFQVRNQVBfUkFESVVTLFxuICBERUZBVUxUX1JBRElVU19JTlRFTlNJVFlfRkFDVE9SLFxuICBERUZBVUxUX1pPT01fTUFYLFxuICBERUZBVUxUX1pPT01fTUlOLFxuICBnZXRDaXJjbGVGZWF0dXJlRnJvbUl0ZW0sXG4gIGdldEZlYXR1cmVGcm9tSXRlbVxufSBmcm9tICcuLi91dGlscy93aWRnZXQtbWFwLnV0aWxzJztcblxuZXhwb3J0IHR5cGUgQXR0cmlidXRlc0ZvckNsYXNzID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgaW50ZW5zaXR5QXR0cmlidXRlOiBBdHRyaWJ1dGU7XG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEl0ZW1TdHlsZXMgPSB7IFtpZDogc3RyaW5nXTogeyBjbGFzc2ljOiBTdHlsZTsgYm9yZGVyZWQ6IFN0eWxlIH0gfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwTGF5ZXJTZXJ2aWNlIHtcbiAgc3R5bGVDYWNoZTogYW55ID0ge307XG5cbiAgY2lyY2xlU3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgIGNvbG9yOiAncmdiYSgzNyw4OSwxNjMsMC4yNCknXG4gICAgfSksXG4gICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgIGNvbG9yOiAncmdiKDM3LDg5LDE2MyknLFxuICAgICAgd2lkdGg6IDJcbiAgICB9KVxuICB9KTtcbiAgc2VsZWN0ZWRDaXJjbGVTdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6ICdyZ2JhKDM3LDE2Myw1OCwwLjI0KSdcbiAgICB9KSxcbiAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xuICAgICAgY29sb3I6ICdyZ2IoMzcsMTYzLDU4KScsXG4gICAgICB3aWR0aDogMlxuICAgIH0pXG4gIH0pO1xuXG4gIHBvaW50U3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcbiAgICAgIGZpbGw6IG5ldyBGaWxsKHsgY29sb3I6ICdyZ2JhKDM3LDg5LDE2MywwLjI0KScgfSksXG4gICAgICBzdHJva2U6IG5ldyBTdHJva2UoeyBjb2xvcjogJ3JnYigzNyw4OSwxNjMpJywgd2lkdGg6IDIgfSksXG4gICAgICByYWRpdXM6IDEwXG4gICAgfSlcbiAgfSk7XG4gIHNlbGVjdGVkUG9pbnRTdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgaW1hZ2U6IG5ldyBDaXJjbGUoe1xuICAgICAgZmlsbDogbmV3IEZpbGwoeyBjb2xvcjogJ3JnYmEoMzcsMTYzLDU4LDAuMjQpJyB9KSxcbiAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7IGNvbG9yOiAncmdiKDM3LDE2Myw1OCknLCB3aWR0aDogMiB9KSxcbiAgICAgIHJhZGl1czogMTBcbiAgICB9KVxuICB9KTtcblxuICBnZXQgaW1wbGVtZW50YXRpb25MaXN0KCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxheWVyc0ltcGxlbWVudGF0aW9uKS5maWx0ZXIoKGltcGxlbWVudGF0aW9uKSA9PiBpbXBsZW1lbnRhdGlvbiAhPT0gJ2dlb3NlcnZlcicpO1xuICB9XG5cbiAgZG9udE5lZWRMb2NhdGlvbiA9IFsncmVsYXRpb24nLCAnd21zJywgJ3dtdHMnLCAnZ2Vvc2VydmVyJywgJ2ZlYXR1cmVsYXllcicsICd2ZWN0b3J0aWxlJywgJ3Jhc3RlcnRpbGUnXTtcbiAgZG9udE5lZWRJbnRlbnNpdHkgPSBbXG4gICAgLi4udGhpcy5kb250TmVlZExvY2F0aW9uLFxuICAgICdtYXJrZXInLFxuICAgICdwb2ludCcsXG4gICAgJ2xpbmUnLFxuICAgICdwb2x5Z29uJyxcbiAgICAnbXVsdGktbGluZScsXG4gICAgJ211bHRpLXBvbHlnb24nLFxuICAgICdhdXRvJ1xuICBdO1xuXG4gIGxheWVyc0ltcGxlbWVudGF0aW9uID0ge1xuICAgIGF1dG86IChcbiAgICAgIGxheWVyOiBNYXBBdXRvTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllcnNJbXBsZW1lbnRhdGlvbltXaWRnZXRNYXBMYXllclNlcnZpY2UudHJhbnNsYXRlRmllbGRUeXBlVG9MYXllclR5cGUobGF5ZXIuc3ViVHlwZSldKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxheWVyLFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBpdGVtU3R5bGVzLFxuICAgICAgICBtYXBcbiAgICAgICkgYXMgQmFzZUxheWVyO1xuICAgIH0sXG4gICAgaGVhdG1hcDogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGhlYXRtYXAgPSBuZXcgSGVhdG1hcCh7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3IoeyBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10gfSksXG4gICAgICAgIGJsdXI6IChsYXllci5yYWRpdXMgPz8gREVGQVVMVF9IRUFUTUFQX1JBRElVUykgLyAyLFxuICAgICAgICByYWRpdXM6IGxheWVyLnJhZGl1cyA/PyBERUZBVUxUX0hFQVRNQVBfUkFESVVTLFxuICAgICAgICB3ZWlnaHQ6IChmZWF0dXJlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVDYWxjdWxhdGVkVmFsdWUoXG4gICAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2ZlYXR1cmUuZ2V0KCdvQ2xhc3MnKSBhcyBzdHJpbmddLmludGVuc2l0eUF0dHJpYnV0ZVxuICAgICAgICAgICkgYXMgbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IGF0U2NhbGUgPSAodmFsdWUgLSByYW5nZS5taW4pIC8gKHJhbmdlLm1heCAtIHJhbmdlLm1pbik7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLmludGVuc2l0eUFzYyA/IGF0U2NhbGUgOiAxIC0gYXRTY2FsZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGxheWVyQ2xhc3Nlc0lkLmZvckVhY2goKGNsYXNzSWQpID0+IHtcbiAgICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IEl0ZW1VdGlscy5yZWFkR2VvbWV0cnkoaXRlbSwgJ3BvaW50JywgYXR0cmlidXRlc0ZvckNsYXNzW2NsYXNzSWRdLmxvY2F0aW9uQXR0cmlidXRlKTtcbiAgICAgICAgICAgIHJldHVybiAhIWxvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGhlYXRtYXBcbiAgICAgICAgICAgICAgLmdldFNvdXJjZSgpXG4gICAgICAgICAgICAgID8uYWRkRmVhdHVyZShnZXRGZWF0dXJlRnJvbUl0ZW0oaXRlbSwgJ2hlYXRwb2ludCcsIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUpKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaGVhdG1hcCBhcyBCYXNlTGF5ZXI7XG4gICAgfSxcbiAgICBtYXJrZXI6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHZlY3RvckxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IERFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7IGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSB9KVxuICAgICAgfSk7XG5cbiAgICAgIGxheWVyQ2xhc3Nlc0lkLmZvckVhY2goKGNsYXNzSWQpID0+IHtcbiAgICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IEl0ZW1VdGlscy5yZWFkR2VvbWV0cnkoaXRlbSwgJ3BvaW50JywgYXR0cmlidXRlc0ZvckNsYXNzW2l0ZW0ub0NsYXNzXS5sb2NhdGlvbkF0dHJpYnV0ZSk7XG4gICAgICAgICAgICByZXR1cm4gISFsb2NhdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKGFzeW5jIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtRmVhdHVyZSA9IGdldEZlYXR1cmVGcm9tSXRlbShcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgJ21hcmtlcicsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZXNbaXRlbS5pZF0/LmNsYXNzaWMsXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZXNbaXRlbS5pZF0/LmJvcmRlcmVkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaXRlbUZlYXR1cmUuc2V0U3R5bGUoaXRlbUZlYXR1cmUuZ2V0KCdjbGFzc2ljU3R5bGUnKSk7XG4gICAgICAgICAgICB2ZWN0b3JMYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShpdGVtRmVhdHVyZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFrZUNsdXN0ZXJlZCh2ZWN0b3JMYXllciwgbGF5ZXIpO1xuICAgIH0sXG4gICAgcG9pbnQ6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShsYXllciwgbGF5ZXJDbGFzc2VzSWQsIHJlc3VsdFNldCwgYXR0cmlidXRlc0ZvckNsYXNzLCAncG9pbnQnKTtcbiAgICB9LFxuICAgIGxpbmU6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShsYXllciwgbGF5ZXJDbGFzc2VzSWQsIHJlc3VsdFNldCwgYXR0cmlidXRlc0ZvckNsYXNzLCAnbGluZScpO1xuICAgIH0sXG4gICAgJ211bHRpLWxpbmUnOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllckZyb21HZW9Kc29uR2VvbWV0cnkobGF5ZXIsIGxheWVyQ2xhc3Nlc0lkLCByZXN1bHRTZXQsIGF0dHJpYnV0ZXNGb3JDbGFzcywgJ211bHRpLWxpbmUnKTtcbiAgICB9LFxuICAgIHBvbHlnb246IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShsYXllciwgbGF5ZXJDbGFzc2VzSWQsIHJlc3VsdFNldCwgYXR0cmlidXRlc0ZvckNsYXNzLCAncG9seWdvbicpO1xuICAgIH0sXG4gICAgJ211bHRpLXBvbHlnb24nOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllckZyb21HZW9Kc29uR2VvbWV0cnkobGF5ZXIsIGxheWVyQ2xhc3Nlc0lkLCByZXN1bHRTZXQsIGF0dHJpYnV0ZXNGb3JDbGFzcywgJ211bHRpLXBvbHlnb24nKTtcbiAgICB9LFxuICAgIGJ1YmJsZTogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgYnViYmxlTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgICB9KTtcblxuICAgICAgbGF5ZXJDbGFzc2VzSWQuZm9yRWFjaCgoY2xhc3NJZCkgPT4ge1xuICAgICAgICAocmVzdWx0U2V0Lml0ZW1zW2NsYXNzSWRdIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gSXRlbVV0aWxzLnJlYWRHZW9tZXRyeShpdGVtLCAncG9pbnQnLCBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlKTtcbiAgICAgICAgICAgIHJldHVybiAhIWxvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gSXRlbVV0aWxzLmdldEF0dHJpYnV0ZUNhbGN1bGF0ZWRWYWx1ZShcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2l0ZW0ub0NsYXNzXS5pbnRlbnNpdHlBdHRyaWJ1dGVcbiAgICAgICAgICAgICkgYXMgbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgYXRTY2FsZSA9ICh2YWx1ZSAtIHJhbmdlLm1pbikgLyAocmFuZ2UubWF4IC0gcmFuZ2UubWluKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1GZWF0dXJlID0gZ2V0Q2lyY2xlRmVhdHVyZUZyb21JdGVtKFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlLFxuICAgICAgICAgICAgICAobGF5ZXIuaW50ZW5zaXR5QXNjID8gYXRTY2FsZSA6IDEgLSBhdFNjYWxlKSAqIChsYXllci5yYWRpdXNGYWN0b3IgPz8gREVGQVVMVF9SQURJVVNfSU5URU5TSVRZX0ZBQ1RPUiksXG4gICAgICAgICAgICAgIHRoaXMuY2lyY2xlU3R5bGUsXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaXJjbGVTdHlsZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGl0ZW1GZWF0dXJlLnNldFN0eWxlKGl0ZW1GZWF0dXJlLmdldCgnY2xhc3NpY1N0eWxlJykpO1xuICAgICAgICAgICAgYnViYmxlTGF5ZXIuZ2V0U291cmNlKCk/LmFkZEZlYXR1cmUoaXRlbUZlYXR1cmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBidWJibGVMYXllcjtcbiAgICB9LFxuICAgIHJlbGF0aW9uOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0UmVsYXRpb25MYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHdtczogKFxuICAgICAgbGF5ZXI6IE1hcFdNU0xheWVyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbXBsID0gbmV3IFRpbGUoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVGlsZVdNUyh7XG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybCxcbiAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllci5wYXJhbUxheWVyLCBUSUxFRDogbGF5ZXIucGFyYW1UaWxlZCwgLi4uKGxheWVyLmFkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KSB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIGltcGwuc2V0KCd1cmwnLCBsYXllci51cmwpO1xuICAgICAgaW1wbC5zZXQoJ3BhcmFtTGF5ZXInLCBsYXllci5wYXJhbUxheWVyKTtcbiAgICAgIGltcGwuc2V0KCdvQ2xhc3MnLCBsYXllci5vQ2xhc3MpO1xuICAgICAgaW1wbC5zZXQoJ2dldEZlYXR1cmVJbmZvQWRkaXRpb25hbFBhcmFtZXRlcnMnLCBsYXllci5nZXRGZWF0dXJlSW5mb0FkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KTtcbiAgICAgIHJldHVybiBpbXBsO1xuICAgIH0sXG4gICAgd210czogKFxuICAgICAgbGF5ZXI6IE1hcFdNVFNMYXllckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdGlvbiA9IG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgICAgY29uc3QgcHJvamVjdGlvbkV4dGVudCA9IHByb2plY3Rpb24uZ2V0RXh0ZW50KCk7XG4gICAgICBjb25zdCBzaXplID0gZ2V0V2lkdGgocHJvamVjdGlvbkV4dGVudCkgLyAyNTY7XG4gICAgICBjb25zdCByZXNvbHV0aW9ucyA9IG5ldyBBcnJheSgxOSk7XG4gICAgICBjb25zdCBtYXRyaXhJZHMgPSBuZXcgQXJyYXkoMTkpO1xuICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCAxOTsgKyt6KSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJlc29sdXRpb25zIGFuZCBtYXRyaXhJZHMgYXJyYXlzIGZvciB0aGlzIFdNVFNcbiAgICAgICAgcmVzb2x1dGlvbnNbel0gPSBzaXplIC8gTWF0aC5wb3coMiwgeik7XG4gICAgICAgIG1hdHJpeElkc1t6XSA9IHo7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFRpbGUoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgV01UUyh7XG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybCxcbiAgICAgICAgICBsYXllcjogbGF5ZXIucGFyYW1MYXllcixcbiAgICAgICAgICBtYXRyaXhTZXQ6IGxheWVyLm1hdHJpeFNldCxcbiAgICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICAgIHRpbGVHcmlkOiBuZXcgV01UU1RpbGVHcmlkKHtcbiAgICAgICAgICAgIG9yaWdpbjogZ2V0VG9wTGVmdChwcm9qZWN0aW9uRXh0ZW50KSxcbiAgICAgICAgICAgIHJlc29sdXRpb25zOiByZXNvbHV0aW9ucyxcbiAgICAgICAgICAgIG1hdHJpeElkczogbWF0cml4SWRzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3R5bGU6IGxheWVyLnN0eWxlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdlb3NlcnZlcjogKFxuICAgICAgbGF5ZXI6IE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW1wbCA9IHRoaXMubGF5ZXJzSW1wbGVtZW50YXRpb25bJ3dtcyddKFxuICAgICAgICB7IC4uLmxheWVyLCB0eXBlOiAnd21zJywgb0NsYXNzOiBsYXllci5vQ2xhc3MgfSxcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICByYW5nZSxcbiAgICAgICAgaXRlbVN0eWxlcyxcbiAgICAgICAgbWFwXG4gICAgICApO1xuICAgICAgaW1wbC5zZXQoJ3RpdGxlJywgbGF5ZXIudGl0bGUpO1xuICAgICAgaW1wbC5zZXQoJ29DbGFzcycsIGxheWVyLm9DbGFzcyk7XG4gICAgICByZXR1cm4gaW1wbDtcbiAgICB9LFxuICAgIGZlYXR1cmVsYXllcjogKFxuICAgICAgbGF5ZXI6IE1hcEZlYXR1cmVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IERFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10sXG4gICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgIHVybDogbGF5ZXIudXJsXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHZlY3RvcnRpbGU6IChcbiAgICAgIGxheWVyOiBNYXBWZWN0b3JUaWxlTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvclRpbGVMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JUaWxlKHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10sXG4gICAgICAgICAgZm9ybWF0OiBuZXcgTVZUKCksXG4gICAgICAgICAgdXJsOiBsYXllci51cmxcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmFzdGVydGlsZTogKFxuICAgICAgbGF5ZXI6IE1hcFJhc3RlclRpbGVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVGlsZSh7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBYWVooe1xuICAgICAgICAgIHVybDogbGF5ZXIudXJsLFxuICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgbGF5ZXJGcm9tR2VvSnNvbkdlb21ldHJ5KFxuICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgIHR5cGU6ICdwb2ludCcgfCAnbGluZScgfCAnbXVsdGktbGluZScgfCAncG9seWdvbicgfCAnbXVsdGktcG9seWdvbidcbiAgKSB7XG4gICAgY29uc3QgdmVjdG9yTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBERUZBVUxUX1pPT01fTUlOLFxuICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBERUZBVUxUX1pPT01fTUFYLFxuICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7IGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSB9KVxuICAgIH0pO1xuXG4gICAgbGF5ZXJDbGFzc2VzSWQuZm9yRWFjaCgoY2xhc3NJZCkgPT4ge1xuICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIGxvY2F0aW9uOiBJdGVtVXRpbHMucmVhZEdlb21ldHJ5KGl0ZW0sIHR5cGUsIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUpXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKCh7IGxvY2F0aW9uIH0pID0+ICEhbG9jYXRpb24pXG4gICAgICAgIC5mb3JFYWNoKGFzeW5jIChzdWJJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbUZlYXR1cmUgPSBuZXcgRmVhdHVyZSh7XG4gICAgICAgICAgICAuLi5zdWJJdGVtLml0ZW0sXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHN1Ykl0ZW0ubG9jYXRpb24sXG4gICAgICAgICAgICBjbGFzc2ljU3R5bGU6IHR5cGUgPT09ICdwb2ludCcgPyB0aGlzLnBvaW50U3R5bGUgOiB0aGlzLmNpcmNsZVN0eWxlLFxuICAgICAgICAgICAgc2VsZWN0ZWRTdHlsZTogdHlwZSA9PT0gJ3BvaW50JyA/IHRoaXMuc2VsZWN0ZWRQb2ludFN0eWxlIDogdGhpcy5zZWxlY3RlZENpcmNsZVN0eWxlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaXRlbUZlYXR1cmUuc2V0U3R5bGUoaXRlbUZlYXR1cmUuZ2V0KCdjbGFzc2ljU3R5bGUnKSk7XG4gICAgICAgICAgdmVjdG9yTGF5ZXIuZ2V0U291cmNlKCk/LmFkZEZlYXR1cmUoaXRlbUZlYXR1cmUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLm1ha2VDbHVzdGVyZWQodmVjdG9yTGF5ZXIsIGxheWVyKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUNsdXN0ZXJlZChsYXllcjogQmFzZUxheWVyLCBsYXllck9wdGlvbnM6IE1hcFdpZGdldExheWVyT3B0aW9ucykge1xuICAgIGlmICghWydtYXJrZXInLCAnYnViYmxlJ10uaW5jbHVkZXMobGF5ZXJPcHRpb25zLnR5cGUpIHx8ICEoJ2NsdXN0ZXJlZCcgaW4gbGF5ZXJPcHRpb25zICYmIGxheWVyT3B0aW9ucy5jbHVzdGVyZWQpKSB7XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfVxuICAgIC8vIENsdXN0ZXJpbmcgc291cmNlXG4gICAgY29uc3QgdmVjdG9yTGF5ZXIgPSBsYXllciBhcyBWZWN0b3JMYXllcjxWZWN0b3JTb3VyY2U8R2VvbWV0cnk+PjtcbiAgICB2ZWN0b3JMYXllci5zZXRTb3VyY2UoXG4gICAgICBuZXcgQ2x1c3Rlcih7XG4gICAgICAgIGRpc3RhbmNlOiBsYXllck9wdGlvbnMuY2x1c3RlckRpc3RhbmNlLFxuICAgICAgICBtaW5EaXN0YW5jZTogMTAsXG4gICAgICAgIHNvdXJjZTogdmVjdG9yTGF5ZXIuZ2V0U291cmNlKCkgYXMgVmVjdG9yU291cmNlXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB2ZWN0b3JMYXllci5zZXRTdHlsZSgoZmVhdHVyZSkgPT4ge1xuICAgICAgY29uc3Qgc2l6ZSA9IGZlYXR1cmUuZ2V0KCdmZWF0dXJlcycpLmxlbmd0aDtcbiAgICAgIGlmIChzaXplID4gMSkge1xuICAgICAgICBsZXQgc3R5bGUgPSB0aGlzLnN0eWxlQ2FjaGVbc2l6ZV07XG4gICAgICAgIGlmICghc3R5bGUpIHtcbiAgICAgICAgICBzdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgICAgICAgICBpbWFnZTogbmV3IENpcmNsZVN0eWxlKHtcbiAgICAgICAgICAgICAgcmFkaXVzOiAxMCxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjMzM5OUNDJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0ZXh0OiBuZXcgVGV4dCh7IHRleHQ6IGAke3NpemV9YCB9KVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc3R5bGVDYWNoZVtzaXplXSA9IHN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzaXplID09PSAxID8gZmVhdHVyZS5nZXQoJ2ZlYXR1cmVzJylbMF0uZ2V0KCdjbGFzc2ljU3R5bGUnKSA6IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH1cblxuICBzdGF0aWMgdHJhbnNsYXRlRmllbGRUeXBlVG9MYXllclR5cGUoc3ViVHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzdWJUeXBlKSB7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5QT0lOVDpcbiAgICAgICAgcmV0dXJuICdtYXJrZXInO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuTElORTpcbiAgICAgICAgcmV0dXJuICdsaW5lJztcbiAgICAgIGNhc2UgRmllbGRUeXBlLlBPTFlHT046XG4gICAgICAgIHJldHVybiAncG9seWdvbic7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5NVUxUSUxJTkU6XG4gICAgICAgIHJldHVybiAnbXVsdGktbGluZSc7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5NVUxUSVBPTFlHT046XG4gICAgICAgIHJldHVybiAnbXVsdGktcG9seWdvbic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oYHdyb25nIHR5cGUgJHtzdWJUeXBlfSBmb3IgYXV0byBvcHRpb25zYCk7XG4gICAgICAgIHJldHVybiAnbWFya2VyJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|