@eo-sdk/client 11.0.0-beta.1 → 11.0.0-rc.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/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts +2 -23
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +28 -5
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +33 -21
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +9 -0
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +2 -0
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts +1 -0
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +7 -0
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +9 -4
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +2 -2
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts +25 -0
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +15 -6
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.d.ts +7 -0
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts +18 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts +10 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -2
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts +24 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts +34 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts.map +1 -0
- package/app/eo-client/eo-client.module.d.ts +29 -23
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-client/login/login.component.d.ts +3 -1
- package/app/eo-client/login/login.component.d.ts.map +1 -1
- package/app/eo-client/process-state/process-state.component.d.ts +3 -5
- package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +4 -11
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +5 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/signature-action.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +7 -3
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-shell.module.d.ts +17 -16
- package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
- package/app/eo-framework/app-shell/index.d.ts +1 -0
- package/app/eo-framework/app-shell/index.d.ts.map +1 -1
- package/app/eo-framework/app-shell/license-warning/license-warning.component.d.ts +10 -0
- package/app/eo-framework/app-shell/license-warning/license-warning.component.d.ts.map +1 -0
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +4 -4
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +1 -0
- package/app/eo-framework/form-elements/string/string.component.d.ts.map +1 -1
- package/app/eo-framework/frame/frame.component.d.ts +2 -1
- package/app/eo-framework/frame/frame.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/codesystem-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -8
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +1 -1
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +15 -1
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +9 -3
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +2 -0
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +3 -2
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +2 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
- package/app/eo-framework/util/services/utilities.service.d.ts +195 -0
- package/app/eo-framework/util/services/utilities.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts +1 -5
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/plugins.service.d.ts +6 -0
- package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
- package/app/eo-framework-core/error-handler/error-handler.service.d.ts.map +1 -1
- package/assets/_default/config/main.json +1 -1
- package/assets/_default/i18n/de.json +48 -11
- package/assets/_default/i18n/en.json +50 -13
- package/assets/_default/svg/ic_noImage.svg +1 -0
- package/assets/_default/svg/ic_photo_library.svg +1 -0
- package/assets/_default/svg/ic_task.svg +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +21 -69
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +183 -78
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +142 -36
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +21 -13
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +7 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +68 -53
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +7 -8
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +16 -10
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +3 -4
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +15 -9
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +16 -10
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +85 -0
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +101 -32
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.mjs +2 -0
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +54 -0
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +24 -0
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +4 -7
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +74 -0
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +103 -0
- package/esm2022/app/eo-client/eo-client.module.mjs +25 -6
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +4 -4
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +25 -11
- package/esm2022/app/eo-client/login/login.component.mjs +14 -11
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +5 -5
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +3 -3
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +6 -6
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +12 -17
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +6 -6
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +1 -1
- package/esm2022/app/eo-client/settings/settings.component.mjs +34 -40
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +4 -5
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +23 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +5 -4
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +44 -24
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-shell.module.mjs +13 -7
- package/esm2022/app/eo-framework/app-shell/index.mjs +2 -1
- package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +26 -0
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +35 -28
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +7 -4
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +8 -5
- package/esm2022/app/eo-framework/frame/frame.component.mjs +3 -2
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +7 -2
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +1 -14
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +6 -33
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -19
- package/esm2022/app/eo-framework/grid/filters/filesize-filter.component.mjs +2 -2
- package/esm2022/app/eo-framework/grid/grid.component.mjs +11 -12
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +5 -3
- package/esm2022/app/eo-framework/media/media.component.mjs +68 -19
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +53 -15
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +19 -28
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +11 -7
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +6 -1
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +15 -4
- package/esm2022/app/eo-framework/process/history/process-history.component.mjs +2 -2
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +1 -1
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +34 -5
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +18 -5
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +6 -3
- package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +2 -2
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +4 -1
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +34 -45
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +44 -2
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +6 -6
- package/fesm2022/eo-sdk-client.mjs +1589 -805
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/misc/scripts/exclude-core-ng-package.js +11 -0
- package/misc/scripts/prebuild-about-state.js +2 -3
- package/package.json +6 -6
- package/proxy.config.json +15 -0
|
@@ -160,18 +160,29 @@ let PrepareDetailsComponent = class PrepareDetailsComponent {
|
|
|
160
160
|
if (openLocationAfterCommit) {
|
|
161
161
|
this.router.navigate(['/object', res]);
|
|
162
162
|
}
|
|
163
|
-
},
|
|
164
|
-
const { key, cause, uniquefields } = error.error;
|
|
163
|
+
}, error => {
|
|
164
|
+
const { key, cause, uniquefields, created } = error.error;
|
|
165
165
|
if (key && key === 'DMS_METADATA_UNIQUE_VIOLATION_ERROR') {
|
|
166
166
|
this.notification.error(null, this.translate.instant('eo.unique.validation.error.hint', { field: uniquefields.toString() }));
|
|
167
167
|
}
|
|
168
|
+
else if (key && key === 'DMS_SYNCHRONOUS_INDEXING_FAILED') {
|
|
169
|
+
this.notification.warning(null, this.translate.instant('eo.prepare.commit.error.indexFailed'));
|
|
170
|
+
this.onCommit.emit(created.id);
|
|
171
|
+
this.finishPending();
|
|
172
|
+
if (openLocationAfterCommit) {
|
|
173
|
+
this.router.navigate(['/object', created.id]);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
168
176
|
else if (cause) {
|
|
169
177
|
this.notification.error(null, cause.messages[0]);
|
|
170
178
|
}
|
|
179
|
+
else {
|
|
180
|
+
this.notification.error(this.translate.instant('eo.prepare.created.error.title'), this.translate.instant('eo.prepare.created.error.message'));
|
|
181
|
+
}
|
|
171
182
|
this.committing = false;
|
|
172
183
|
this.finishPending();
|
|
173
184
|
this.prepareFormContent(formData);
|
|
174
|
-
}
|
|
185
|
+
});
|
|
175
186
|
}
|
|
176
187
|
}, 500);
|
|
177
188
|
}
|
|
@@ -554,4 +565,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
554
565
|
type: HostBinding,
|
|
555
566
|
args: ['attr.data-type']
|
|
556
567
|
}] } });
|
|
557
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcHJlcGFyZS1kZXRhaWxzL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFLTCxZQUFZLEVBS1osS0FBSyxFQUNMLFNBQVMsRUFDVixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCNUQsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUF5QmxDLElBQ0ksWUFBWSxDQUFDLElBQWtCO1FBQ2pDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsSCxNQUFNLG1CQUFtQixHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0SCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7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eEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVM7aUJBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTTtpQkFDbkMsSUFBSSxDQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FDckI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsR0FBaUIsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7OEdBcmtCVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw2c0JDeENwQyw0NmRBcVRBOztBRDdRYSx1QkFBdUI7SUFObkMsWUFBWSxFQUFFO0dBTUYsdUJBQXVCLENBdWtCbkM7OzJGQXZrQlksdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLG9CQUFvQjt3VUFhWCxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ0UsVUFBVTtzQkFBNUIsU0FBUzt1QkFBQyxNQUFNO2dCQUNXLG1CQUFtQjtzQkFBOUMsU0FBUzt1QkFBQyxlQUFlO2dCQUNTLDBCQUEwQjtzQkFBNUQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBYzdCLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxjQUFjO2dCQW9CWixVQUFVO3NCQUFsQixLQUFLO2dCQWlDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUdILFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLCBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgT2JqZWN0VHlwZSxcbiAgUHJlcGFyZVNlcnZpY2UsXG4gIFByZXBhcmVkSXRlbSxcbiAgUHJlcGFyZWRJdGVtVGVtcGxhdGUsXG4gIFByZXBhcmVkSXRlbVR5cGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFV0aWxzLFxuICBEbXNPYmplY3Rcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1ByZXZpZXdGaWxlfSBmcm9tICcuLi9tZWRpYS9tZWRpYS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS9pbmRleCc7XG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZVBoYXNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkYXRhOiB7XG4gICAgcHJldmlld0luZGV4PzogbnVtYmVyLFxuICAgIHByZXZpZXdGaWxlPzogUHJldmlld0ZpbGUsXG4gICAgZmlsZT86IGJvb2xlYW4sXG4gICAgd2l0aG91dEZpbGU/OiBib29sZWFuLFxuICAgIHRlbXBsYXRlcz86IGFueVtdXG4gIH07XG59XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXByZXBhcmUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmVwYXJlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgc2VsZWN0ZWRUeXBlT2JqZWN0O1xuXG4gIC8vIGhpZGRlbiBmaWxlIGlucHV0IHRvIHRyaWdnZXIgZmlsZSB1cGxvYWRzXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnKSBmaWxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmb3JtJykgb2JqZWN0Rm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1Db250ZW50RGVsZXRlJykgY29uZmlybUNvbnRlbnREZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgLy8gcHJlcGFyYXRpb24gaXMgZGl2aWRlZCBpbnRvIHNldmVyYWwgcGhhc2VzXG4gIC8vIHNlbGVjdCBhbiBvYmplY3QgdHlwZVxuICBQSEFTRV9UWVBFID0gJ3R5cGUnO1xuICAvLyBhZGQgY29udGVudFxuICBQSEFTRV9DT05URU5UID0gJ2NvbnRlbnQnO1xuICAvLyBzZXQgaW5kZXhkYXRhXG4gIFBIQVNFX0lOREVYREFUQSA9ICdpbmRleGRhdGEnO1xuXG4gIF9wcmVwYXJlZEl0ZW06IFByZXBhcmVkSXRlbTtcbiAgcHNldWRvRG1zT2JqZWN0OiBEbXNPYmplY3Q7XG5cbiAgQElucHV0KCdwcmVwYXJlZEl0ZW0nKVxuICBzZXQgcHJlcGFyZWRJdGVtKGl0ZW06IFByZXBhcmVkSXRlbSkge1xuICAgIGNvbnN0IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5ID0gKG9iaikgPT4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMob2JqIHx8IHt9KS5zb3J0KCkubWFwKGtleSA9PiBvYmpba2V5XSkpO1xuICAgIGNvbnN0IGlzUHJvY2Vzc2luZ0FsbG93ZWQgPSBvYmplY3RUb1N0cmluZ2lmaWVkVmFsdWVBcnJheSh0aGlzLl9wcmVwYXJlZEl0ZW0pICE9PSBvYmplY3RUb1N0cmluZ2lmaWVkVmFsdWVBcnJheShpdGVtKTtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLnR5cGVzKSB7XG4gICAgICBpdGVtLnR5cGVzID0gaXRlbS50eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuICAgIH1cbiAgICB0aGlzLl9wcmVwYXJlZEl0ZW0gPSBpdGVtO1xuICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbSAmJiB0aGlzLnByZXBhcmVkSXRlbS5pZCAmJiBpc1Byb2Nlc3NpbmdBbGxvd2VkKSB7XG4gICAgICB0aGlzLnByb2Nlc3MoKTtcbiAgICAgIC8vIHdlIG5lZWQgdGhpcyBmb3IgdGhlIE8zNjUgaW50ZWdyYXRpb24gVFVLLTM1NzZcbiAgICAgIHRoaXMucHNldWRvRG1zT2JqZWN0ID0gbmV3IERtc09iamVjdCh7aWQ6IHRoaXMucHJlcGFyZWRJdGVtLmlkLCB2ZXJzaW9uOiAwfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHByZXBhcmVkSXRlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlcGFyZWRJdGVtO1xuICB9XG5cblxuICBASW5wdXQoKSBlbXB0eVN0YXRlID0ge2ljb246ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Vycm9yLnN2ZycsIHRleHQ6ICcnLCBjbGFzc05hbWU6ICdkZXRhaWxzLWVycm9yJ307XG5cbiAgcHJlcGFyZVBoYXNlOiBQcmVwYXJlUGhhc2U7XG4gIHNlbGVjdGVkVGVtcGxhdGU6IFByZXBhcmVkSXRlbVRlbXBsYXRlO1xuICBzZWxlY3RlZFRlbXBsYXRlRmlsZTogUHJldmlld0ZpbGU7XG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBjaG9vc2VUZW1wbGF0ZTogYm9vbGVhbjtcbiAgdXBsb2FkSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgY29tbWl0dGluZzogYm9vbGVhbjtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICB0YWdGaWx0ZXJPcHRpb25zOiBhbnk7XG4gIF9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIF9zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBkZWxldGVkQ29udGVudEluZGV4OiBudW1iZXI7XG5cbiAgLy8gdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBkZXRhaWxzIGhlYWRlclxuICBoZWFkZXIgPSB7XG4gICAgdGl0bGU6IG51bGwsXG4gICAgbG9jYXRpb246IHtcbiAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgbGluazogbnVsbFxuICAgIH0sXG4gICAgc3VidGl0bGU6IG51bGxcbiAgfTtcblxuICBjb2xEZWZzOiBDb2xEZWZbXSA9IFt7XG4gICAgaGVhZGVyTmFtZTogJycsXG4gICAgZmllbGQ6ICd0aXRsZScsXG4gICAgY2VsbFJlbmRlcmVyOiB0aGlzLmNlbGxSZW5kZXJlcixcbiAgICBmaWx0ZXI6IGZhbHNlXG4gIH1dO1xuXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XG5cbiAgQE91dHB1dCgpIG9uSXRlbUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXBhcmVkSXRlbT4oKTtcbiAgQE91dHB1dCgpIG9uQ29tbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkl0ZW1SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXBhcmVkSXRlbT4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJylcbiAgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVkSXRlbSAmJiB0aGlzLnByZXBhcmVkSXRlbS5zZWxlY3RlZHR5cGUgPyB0aGlzLnByZXBhcmVkSXRlbS5zZWxlY3RlZHR5cGUubmFtZSA6ICdub25lJztcbiAgfVxuXG4gIHNldCBzaG93RGVsZXRlRGlhbG9nKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dEZWxldGVEaWFsb2cgPSB2YWw7XG5cbiAgICBpZiAodGhpcy5fc2hvd0RlbGV0ZURpYWxvZykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1EZWxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZURpYWxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0RlbGV0ZURpYWxvZztcbiAgfVxuXG4gIHNldCBzaG93Q29udGVudERlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IHZhbDtcblxuICAgIGlmICh0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1Db250ZW50RGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dDb250ZW50RGVsZXRlRGlhbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGNhcGFiaWxpdGVzOiBDYXBhYmlsaXRpZXNTZXJ2aWNlKSB7XG4gIH1cblxuICBjZWxsUmVuZGVyZXIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHtwYXJhbXMuZGF0YS50aXRsZSB8fCAnJ30ke3BhcmFtcy5kYXRhLmNvbnRlbnQgPyAnPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPicgKyAnICgnICsgcGFyYW1zLmRhdGEuY29udGVudC5taW1lZ3JvdXAgKyAnKScgKyAnPC9zcGFuPicgOiAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtwYXJhbXMuZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3NcIj5cbiAgICAgICAgICAgICAgICAke3BhcmFtcy5kYXRhLnRhZ3MubWFwKHRhZyA9PiBgPHNwYW4gY2xhc3M9XCJjaGlwXCI+JHt0YWd9PC9zcGFuPmApLmpvaW4oJycpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIHByZXBhcmVGb3JtQ29udGVudChmb3JtRGF0YT8pIHtcbiAgICBjb25zdCBkYXRhID0gZm9ybURhdGEgfHwgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZGF0YTtcbiAgICB0aGlzLmZvcm1PcHRpb25zID0ge1xuICAgICAgZm9ybU1vZGVsOiB0aGlzLnNlbGVjdGVkVHlwZU9iamVjdC5mb3JtLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudCkge1xuICAgICAgdGhpcy5mb3JtT3B0aW9ucy5jb250ZXh0ID0ge1xuICAgICAgICBpZDogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkLFxuICAgICAgICB0aXRsZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnRpdGxlLFxuICAgICAgICB0eXBlTmFtZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmVzZXRPYmplY3RUeXBlKCkge1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2UudXBkYXRlQ2hpbGRUeXBlKCdkbXM6c3lzb2JqZWN0JywgdGhpcy5wcmVwYXJlZEl0ZW0uaWQpLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZUl0ZW0gPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkUHJlcGFyZUl0ZW07XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh1cGRhdGVkUHJlcGFyZUl0ZW0pO1xuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0cyBhIHByZXBhcmVkIGl0ZW0uIFRoaXMgd2lsbCBjYXVzZSB0aGUgdGVtcG9yYXJ5IHByZXBhcmVkIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gYSByZWFsIERNUy1PYmplY3QuXG4gICAqIEBwYXJhbSBvcGVuTG9jYXRpb25BZnRlckNvbW1pdCAtIHdoZW4gc2V0IHRvIHRydWUsIGFwcGxpY2F0aW9uIHdpbGwgbmF2aWdhdGUgdG8gdGhlIG9iamVjdHMgbG9jYXRpb25cbiAgICovXG4gIGNvbW1pdChvcGVuTG9jYXRpb25BZnRlckNvbW1pdD86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMub2JqZWN0Rm9ybS5nZXRGb3JtRGF0YSgpO1xuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAgICAgLmNvbW1pdFByZXBhcmVkSXRlbSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCkubmFtZSwgZm9ybURhdGEpXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ29tbWl0LmVtaXQocmVzKTtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgICAgICAgICAgaWYgKG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0KSB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIHJlc10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIFV0aWxzLnRocm93KGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtrZXksIGNhdXNlLCB1bmlxdWVmaWVsZHN9ID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICBpZiAoa2V5ICYmIGtleSA9PT0gJ0RNU19NRVRBREFUQV9VTklRVUVfVklPTEFUSU9OX0VSUk9SJykge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51bmlxdWUudmFsaWRhdGlvbi5lcnJvci5oaW50Jywge2ZpZWxkOiB1bmlxdWVmaWVsZHMudG9TdHJpbmcoKX0pKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F1c2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IobnVsbCwgY2F1c2UubWVzc2FnZXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUZvcm1Db250ZW50KGZvcm1EYXRhKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS5jcmVhdGVkLmVycm9yLnRpdGxlJyksXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IubWVzc2FnZScpXG4gICAgICAgICAgKSk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogUHJlcGFyZWRJdGVtKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkl0ZW1SZW1vdmUuZW1pdChpdGVtKTtcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICByZW1vdmVJdGVtQ29udGVudChpdGVtOiBQcmVwYXJlZEl0ZW0sIGRlbGV0ZWRDb250ZW50SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2UuZGVsZXRlUHJlcGFyZWRJdGVtQ29udGVudChpdGVtLmlkLCBkZWxldGVkQ29udGVudEluZGV4KVxuICAgICAgLnN1YnNjcmliZSgodXBkYXRlZEl0ZW06IFByZXBhcmVkSXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRJdGVtO1xuICAgICAgICB0aGlzLnNob3dDb250ZW50RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldEZpbGVOYW1lcyhpdGVtOiBQcmVwYXJlZEl0ZW0pIHtcbiAgICByZXR1cm4gKGl0ZW0uY29udGVudHMgfHwgW10pLm1hcChjID0+IGMucGF0aCkuam9pbignLCAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSB0YXJnZXQgb2JqZWN0IHR5cGUgZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXG4gICAqIEBwYXJhbSB0eXBlIC0gdGhlIG9iamVjdCB0eXBlcyBuYW1lIHRvIGJlIHNldCBhcyB0YXJnZXRcbiAgICovXG4gIHNlbGVjdE9iamVjdFR5cGUodHlwZTogUHJlcGFyZWRJdGVtVHlwZSkge1xuICAgIHRoaXMucHJlcGFyZWRJdGVtLnR5cGVzXG4gICAgICAuZm9yRWFjaCgodCkgPT4gdC5zZWxlY3RlZCA9ICh0Lm5hbWUgPT09IHR5cGUubmFtZSkpO1xuXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgLnVwZGF0ZUNoaWxkVHlwZSh0eXBlLm5hbWUsIHRoaXMucHJlcGFyZWRJdGVtLmlkKVxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZWRJdGVtID0+IHtcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkUHJlcGFyZWRJdGVtO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh1cGRhdGVkUHJlcGFyZWRJdGVtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRlbXBsYXRlIHRvIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRoZSB0ZW1wbGF0ZSB0byBiZSBhZGRlZFxuICAgKi9cbiAgYWRkVGVtcGxhdGUodGVtcGxhdGU6IFByZXBhcmVkSXRlbVRlbXBsYXRlKSB7XG5cbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAuYWRkVGVtcGxhdGUodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIHRlbXBsYXRlLmlkKVxuICAgICAgLnN1YnNjcmliZSgodXBkYXRlZFByZXBhcmVkSXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5lbWl0KHVwZGF0ZWRQcmVwYXJlZEl0ZW0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS50ZW1wbGF0ZS5lcnJvci50aXRsZScpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLnRlbXBsYXRlLmVycm9yLm1lc3NhZ2UnKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHRlbXBsYXRlLiBXaWxsIHNob3cgcHJldmlldyBmb3IgdGhlIHNlbGVjdGVkIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNlbGVjdFRlbXBsYXRlKHRlbXBsYXRlOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgPSAhKHRlbXBsYXRlICYmIHRlbXBsYXRlLmNvbnRlbnQpID8gbnVsbCA6IHtcbiAgICAgIHVyaTogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRUZW1wbGF0ZVByZXZpZXdVcmkodGhpcy5zZWxlY3RlZFRlbXBsYXRlLmlkKSxcbiAgICAgIHVyaVBkZjogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRUZW1wbGF0ZVByZXZpZXdVcmkodGhpcy5zZWxlY3RlZFRlbXBsYXRlLmlkLCAnUERGJyksXG4gICAgICBtaW1ldHlwZTogdGVtcGxhdGUuY29udGVudC5taW1ldHlwZSxcbiAgICAgIG1pbWVncm91cDogdGVtcGxhdGUuY29udGVudC5taW1lZ3JvdXAsXG4gICAgICBzaXplOiB0ZW1wbGF0ZS5jb250ZW50LnNpemVcbiAgICB9O1xuICB9XG5cbiAgc2V0UHJldmlld1VyaShpbmRleDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnByZXBhcmVQaGFzZS5kYXRhLCB0aGlzLmdldFByZXZpZXdEYXRhKGluZGV4KSk7XG4gIH1cblxuICAvLyBza2lwIGNvbnRlbnQgc2VsZWN0aW9uIGZvciB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtXG4gIC8vIGFuZCBjb250aW51ZSBzZXR0aW5nIGluZGV4ZGF0YVxuICBub0ZpbGUoKSB7XG4gICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgfVxuXG4gIC8vIHRyaWdnZXIgZmlsZSB1cGxvYWRcbiAgdXBsb2FkKCkge1xuICAgIC8vIGFmdGVyIHRoZSB1c2VyIHNlbGVjdGVkIGEgZmlsZSBmaWxlQ2hhbmdlTGlzdGVuZXIoKSB3aWxsIGNvbnRpbnVlXG4gICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8vIG9uQ2hhbmdlIGxpc3RlbmVyIG9uIGhpZGRlbiBmaWxlIGlucHV0XG4gIGZpbGVDaGFuZ2VMaXN0ZW5lcihldmVudCkge1xuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudFswXTtcbiAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgIC51cGxvYWRDb250ZW50KHRoaXMucHJlcGFyZWRJdGVtLmlkLCBmaWxlKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAvLyB1cGxvYWQgc3VjY2VlZGVkIHNvIHdlIGNhbiBnbyBvbiB0byB0aGUgbmV4dCBwcmVwYXJlIHBoYXNlXG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gbmV3IFByZXBhcmVkSXRlbShyZXMpO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh0aGlzLnByZXBhcmVkSXRlbSk7XG4gICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfSwgVXRpbHMudGhyb3coZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuY2F1c2UpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBlcnJvci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBlcnJvci5lcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IudGl0bGUnKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKVxuICAgICAgKSk7XG4gIH1cblxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dCkge1xuICAgIHRoaXMuZm9ybVN0YXRlID0gZXZ0O1xuXG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3MoKSB7XG4gICAgLy8gdG9kbzogcmVzZXQgc3R1ZmZcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XG4gICAgdGhpcy5mb3JtT3B0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5nZXRQcmVwYXJlUGhhc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHByZXBhcmUgcGhhc2UgdG8gYmUgaW5pdGlhbGl6ZWQgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnNcbiAgICogb2YgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbS5cbiAgICovXG4gIHByaXZhdGUgZ2V0UHJlcGFyZVBoYXNlKCkge1xuICAgIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCkpIHtcbiAgICAgIC8vIFN0ZXAgIzEgc2VsZWN0IGFuIG9iamVjdCB0eXBlIGlmIG5vdCB5ZXQgc2V0XG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnByZXBhcmVkSXRlbS5oYXNDb250ZW50KCkpIHtcbiAgICAgIC8vIFN0ZXAgIzIgYWRkIGNvbnRlbnQgaWYgbm90IHlldCBjb250YWluZWRcbiAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0NPTlRFTlQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwICMzIGVkaXQgaW5kZXhkYXRhIGFuZCBzYXZlXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGVtcGxhdGUoc2VsZWN0ZWRUeXBlT2JqZWN0KSB7XG4gICAgY29uc3QgdHlwZTogT2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKHNlbGVjdGVkVHlwZU9iamVjdC5uYW1lKTtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgIC5nZXRUZW1wbGF0ZXMoc2VsZWN0ZWRUeXBlT2JqZWN0Lm5hbWUpXG4gICAgICAuc3Vic2NyaWJlKCh0ZW1wbGF0ZXM6IFByZXBhcmVkSXRlbVRlbXBsYXRlW10pID0+IHtcbiAgICAgICAgY29uc3QgZmlsZVJlcXVpcmVkID0gdGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUuY29udGVudHN0YXRlID09PSAnUkVRVUlSRUQnO1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgIGZpbGU6IHR5cGUubWF4RmlsZXMgPiAwLFxuICAgICAgICAgIHdpdGhvdXRGaWxlOiAhKHR5cGUubWluRmlsZXMgPiAwKSAmJiAhZmlsZVJlcXVpcmVkLFxuICAgICAgICAgIHRlbXBsYXRlczogdGVtcGxhdGVzIHx8IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgb2JqZWN0IHR5cGUgZG9lcyBub3Qgc3VwcG9ydCBmaWxlIHVwbG9hZCBvciB0ZW1wbGF0ZSBjb250ZW50c1xuICAgICAgICAvLyB3ZSBza2lwIGNvbnRlbnQgcGhhc2UgYW5kIG1vdmUgb24gdG8gaW5kZXhkYXRhIHBoYXNlXG4gICAgICAgIGlmICghZGF0YS5maWxlKSB7XG4gICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByZXBhcmVQaGFzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuUEhBU0VfQ09OVEVOVCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFnRmlsdGVyT3B0aW9ucyA9IHRoaXMuY3JlYXRlVGFnRmlsdGVyT3B0aW9ucyh0ZW1wbGF0ZXMpO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAgIGNvbnRleHQ6IHtjb3VudDogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXMubGVuZ3RofSxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnRlbXBsYXRlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ3RpdGxlJykpLFxuICAgICAgICAgIGNvbHVtbkRlZnM6IHRoaXMuY29sRGVmcyxcbiAgICAgICAgICByb3dIZWlnaHQ6IDgwXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlczogUHJlcGFyZWRJdGVtVGVtcGxhdGVbXSkge1xuICAgIGxldCB0YWdGaWx0ZXJPcHRpb25zID0gW107XG4gICAgdGVtcGxhdGVzLmZvckVhY2godGVtcGxhdGUgPT4ge1xuICAgICAgdGVtcGxhdGUudGFncy5mb3JFYWNoKHRhZyA9PiB7XG4gICAgICAgIHRhZ0ZpbHRlck9wdGlvbnMucHVzaCh7bGFiZWw6IHRhZywgZmlsdGVyOiAobm9kZSkgPT4gbm9kZS5kYXRhLnRhZ3MuaW5jbHVkZXModGFnKSwgdmFsdWU6IHRydWV9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBVdGlscy51bmlxQnkodGFnRmlsdGVyT3B0aW9ucywgJ2xhYmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhIHNwZWNpZmljIHByZXBhcmUgcGhhc2UuXG4gICAqIEBwYXJhbSBwaGFzZSAtIHBoYXNlIHRvIGluaXQgKFBIQVNFX1RZUEUsIFBIQVNFX0NPTlRFTlQsIFBIQVNFX0lOREVYREFUQSlcbiAgICovXG4gIHByaXZhdGUgaW5pdFByZXBhcmVQaGFzZShwaGFzZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmVwYXJlUGhhc2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XG5cbiAgICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIHNlbGVjdGluZyB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAgICBjYXNlIHRoaXMuUEhBU0VfVFlQRToge1xuXG4gICAgICAgIHRoaXMucHJlcGFyZVBoYXNlID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuUEhBU0VfVFlQRSxcbiAgICAgICAgICBkYXRhOiB0aGlzLmdldFByZXZpZXdEYXRhKClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXR1cFRpdGxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIHNldHRpbmcgdXAgY29udGVudFxuICAgICAgY2FzZSB0aGlzLlBIQVNFX0NPTlRFTlQ6IHtcblxuICAgICAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciBvciBub3QgdGhlIHByZXBhcmVkSXRlbSBhbHJlYWR5IGNvbnRhaW5zIGEgZmlsZSBvciB0ZW1wbGF0ZVxuICAgICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0uaGFzQ29udGVudCgpKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS50eXBlc2VsZWN0ZWRhbGxvd2VkKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgdHlwZSBpcyBub3QgYWxsb3dlZCwgd2UnbGwgZ28gYmFjayB0byB0aGUgdHlwZSBzZWxlY3Qgc3RhdGUgLi4uXG4gICAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gLi4uIG90aGVyd2lzZSB3ZSBnbyBvbiBzZXR0aW5nIGluZGV4ZGF0YVxuICAgICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUuY29udGVudHN0YXRlID09PSAnTk9DT05URU5UQUxMT1dFRCcpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVtcGxhdGUodGhpcy5zZWxlY3RlZFR5cGVPYmplY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIGluaXQgcHJlcGFyZSBwaGFzZSBmb3IgYWRkaW5nIGluZGV4ZGF0YVxuICAgICAgY2FzZSB0aGlzLlBIQVNFX0lOREVYREFUQToge1xuXG4gICAgICAgIHRoaXMuY2hvb3NlVGVtcGxhdGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQpIHtcbiAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgdHlwZSBpcyBub3QgYWxsb3dlZCwgd2UnbGwgZ28gYmFjayB0byB0aGUgdHlwZSBzZWxlY3Qgc3RhdGUgLi4uXG4gICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICB0aGlzLnByZXBhcmVGb3JtQ29udGVudCgpO1xuXG4gICAgICAgICAgdGhpcy5wcmVwYXJlUGhhc2UgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX0lOREVYREFUQSxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0UHJldmlld0RhdGEoKVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5zZXR1cFRpdGxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcmV2aWV3RGF0YShpbmRleD86IG51bWJlcik6IGFueSB7XG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtICYmIHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzICYmIHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzLmxlbmd0aCkge1xuICAgICAgaW5kZXggPSBpbmRleCB8fCAwO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJldmlld0luZGV4OiBpbmRleCxcbiAgICAgICAgcHJldmlld0ZpbGU6IHtcbiAgICAgICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJldmlld1VyaSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgaW5kZXgpLFxuICAgICAgICAgIHVyaVBkZjogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmV2aWV3VXJpKHRoaXMucHJlcGFyZWRJdGVtLmlkLCBpbmRleCwgJ1BERicpLFxuICAgICAgICAgIG1pbWV0eXBlOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ubWltZXR5cGUsXG4gICAgICAgICAgbWltZWdyb3VwOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ubWltZWdyb3VwLFxuICAgICAgICAgIHBhdGg6IHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzW2luZGV4XS5wYXRoLFxuICAgICAgICAgIHNpemU6IHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzW2luZGV4XS5zaXplXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtwcmV2aWV3RmlsZTogbnVsbH07XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgdGl0bGUgZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0gYmFzZWQgb24gdGhlXG4gICAqIGN1cnJlbnQgcHJlcGFyZSBwaGFzZS4gU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBwcmVwYXJlIHBoYXNlIGlzIGlkZW50aWZpZWQuXG4gICAqL1xuICBwcml2YXRlIHNldHVwVGl0bGUoKSB7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoW1xuICAgICAgJ2VvLnByZXBhcmUubG9jYXRpb24udGl0bGUuc3lzcm9vdCcsXG4gICAgICAnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5wcmVmaXgnLFxuICAgICAgJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnRpdGxlJyxcbiAgICAgICdlby5wcmVwYXJlLmRldGFpbHMudHlwZS5zdWJ0aXRsZScsXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnLFxuICAgICAgJ2VvLnByZXBhcmUuZGV0YWlscy5pbmRleGRhdGEuc3VidGl0bGUnXG4gICAgXSkuc3Vic2NyaWJlKHQgPT4ge1xuXG4gICAgICBsZXQgaGVhZGVyID0ge1xuICAgICAgICB0aXRsZTogbnVsbCxcbiAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICBsaW5rOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHN1YnRpdGxlOiBudWxsXG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0aGlzLnByZXBhcmVQaGFzZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9UWVBFOiB7XG4gICAgICAgICAgaGVhZGVyLnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUudGl0bGUnXTtcbiAgICAgICAgICBoZWFkZXIuc3VidGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMudHlwZS5zdWJ0aXRsZSddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9DT05URU5UOiB7XG4gICAgICAgICAgY29uc3QgdHlwZU9iamVjdCA9IHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpO1xuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHR5cGVPYmplY3QgPyB0eXBlT2JqZWN0LmxhYmVsIDogJyc7XG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHRoaXMuUEhBU0VfSU5ERVhEQVRBOiB7XG4gICAgICAgICAgY29uc3QgdHlwZU9iamVjdCA9IHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpO1xuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHR5cGVPYmplY3QgPyB0eXBlT2JqZWN0LmxhYmVsIDogJyc7XG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB1cCBsb2NhdGlvbiBpbmZvXG4gICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGUgPT09ICdzeXNyb290Jykge1xuICAgICAgICBoZWFkZXIubG9jYXRpb24gPSB7XG4gICAgICAgICAgbGFiZWw6IHRbJ2VvLnByZXBhcmUubG9jYXRpb24udGl0bGUuc3lzcm9vdCddLFxuICAgICAgICAgIGxpbms6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudHlwZSk7XG4gICAgICAgIGhlYWRlci5sb2NhdGlvbiA9IHtcbiAgICAgICAgICBsYWJlbDogYCAke3BhcmVudFR5cGUubGFiZWx9OiAke3RoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50aXRsZX1gLFxuICAgICAgICAgIGxpbms6IGAvb2JqZWN0LyR7dGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkfWBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xuICAgIH0pO1xuICB9XG5cbiAgc2hvd1RlbXBsYXRlU2VsZWN0b3Ioc2hvdzogYm9vbGVhbikge1xuICAgIHRoaXMuY2hvb3NlVGVtcGxhdGUgPSBzaG93O1xuICAgIHRoaXMuc2VsZWN0VGVtcGxhdGUodGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXNbMF0pO1xuICB9XG5cbiAgZG93bmxvYWQoKSB7XG4gICAgaWYgKHRoaXMucHJlcGFyZVBoYXNlKSB7XG4gICAgICBjb25zdCBmaWxlID0gdGhpcy5wcmVwYXJlUGhhc2UubmFtZSA9PT0gJ2NvbnRlbnQnID8gdGhpcy5zZWxlY3RlZFRlbXBsYXRlRmlsZSA6IHRoaXMucHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGU7XG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICB0aGlzLmJhY2tlbmQuZG93bmxvYWQoZmlsZS51cmkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1RlbXBsYXRlQ2FwYWJpbGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jYXBhYmlsaXRlcy5oYXNDYXBhYmlsaXR5KCd0ZW1wbGF0ZScpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZEZuKGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUluZGV4Rm4oaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pLmZvY3VzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogUHJlcGFyZWRJdGVtKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSByZXM7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicHJlcGFyZURldGFpbHNfX3dyYXBwZXJcIiAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIG1haW5TcGlubmVyXCI+XG4gIDxzZWN0aW9uIGNsYXNzPVwicHJlcGFyZURldGFpbHNcIiAqbmdJZj1cInByZXBhcmVkSXRlbSAmJiBwcmVwYXJlUGhhc2U7IGVsc2Ugbm9JdGVtXCJcbiAgICBbbmdDbGFzc109XCJ7bXVsdGlmaWxlOiBwcmVwYXJlZEl0ZW0uY29udGVudGNvdW50ID4gMSwgY29tbWl0dGluZzogY29tbWl0dGluZ31cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZFwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWluZm9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPnt7aGVhZGVyLnRpdGxlfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1zdWItdGl0bGUgaC1sb2NhdGlvblwiICpuZ0lmPVwiIWhlYWRlci5sb2NhdGlvbi5saW5rOyBlbHNlIGxpbmtlZFwiPnt7aGVhZGVyLmxvY2F0aW9uLmxhYmVsfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc3ViLXRpdGxlIGgtc3VidGl0bGVcIj57e2hlYWRlci5zdWJ0aXRsZX19PC9kaXY+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsaW5rZWQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1zdWItdGl0bGUgaC1zdWJ0aXRsZS1kZXRhaWxlZFwiPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmVvLnByZXBhcmUubG9jYXRpb24udGl0bGUucHJlZml4PC9zcGFuPlxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiaGVhZGVyLmxvY2F0aW9uLmxpbmtcIj57e2hlYWRlci5sb2NhdGlvbi5sYWJlbH19PC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnRuIGJ0bi1kb3dubG9hZFwiXG4gICAgICAgICAgKm5nSWY9XCJwcmVwYXJlUGhhc2UubmFtZSA9PT0gJ2NvbnRlbnQnID8gc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgOiBwcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZVwiXG4gICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY29udGVudC1kb3dubG9hZC5zdmcnXCJcbiAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcgfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImRvd25sb2FkKClcIj48L2VvLWljb24+XG4gICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnRuIGJ0bi1kZWxldGVcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY190cmFzaC5zdmcnXCJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XCI+PC9lby1pY29uPlxuICAgICAgICA8IS0tIGJ1dHRvbnMgd2hpbGUgY2hvb3NpbmcgYSB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNob29zZVRlbXBsYXRlXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi10cGwtYWJvcnRcIiAoY2xpY2spPVwic2hvd1RlbXBsYXRlU2VsZWN0b3IoZmFsc2UpXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnRlbXBsYXRlLmFib3J0PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLXRwbC1hcHBseVwiIChjbGljayk9XCJhZGRUZW1wbGF0ZShzZWxlY3RlZFRlbXBsYXRlKVwiIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRUZW1wbGF0ZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS50ZW1wbGF0ZS5zZWxlY3Q8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXBhcmVQaGFzZS5uYW1lID09PSAnaW5kZXhkYXRhJ1wiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlc2V0T2JqZWN0VHlwZSgpXCIgdHJhbnNsYXRlPmVvLnByZXBhcmUucmVzZXRPYmplY3Q8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjb21taXQoKVwiIGNsYXNzPVwiYnRuLWlkeC1zYXZlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntwcmltYXJ5OiBwcmVwYXJlZEl0ZW0uc3RhdGUucGFyZW50aXNyb290ICYmIHByZXBhcmVkSXRlbS5jb250ZW50Y291bnQgPiAxfVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8IGNvbW1pdHRpbmdcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5zYXZlPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjb21taXQodHJ1ZSlcIiBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8IGNvbW1pdHRpbmdcIiBjbGFzcz1cInByaW1hcnkgYnRuLWlkeC1zYXZlb3BlblwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInByZXBhcmVkSXRlbT8uc3RhdGUucGFyZW50aXNyb290ICYmIHByZXBhcmVkSXRlbT8uY29udGVudGNvdW50ID4gMVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5zYXZlb3BlbjwvYnV0dG9uPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlby1ib2R5XCIgW25nU3dpdGNoXT1cInByZXBhcmVQaGFzZS5uYW1lXCIgKm5nSWY9XCIhY29tbWl0dGluZzsgZWxzZSBzcGlubmVyXCI+XG5cbiAgICAgIDwhLS0gUEhBU0UgVFlQRSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwaGFzZSB0eXBlXCIgKm5nU3dpdGNoQ2FzZT1cIid0eXBlJ1wiPlxuXG4gICAgICAgIDwhLS0gd2l0aCBwcmV2aWV3IC0tPlxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJwcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZTsgZWxzZSBub3ByZXZpZXdcIlxuICAgICAgICAgIFtsYXlvdXRTZXR0aW5nc0lEXT1cIidwcmVwYXJlLmRldGFpbHMucGhhc2UudHlwZSdcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjMwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWxlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0IGVtcHR5XCIgKm5nSWY9XCJwcmVwYXJlZEl0ZW0udHlwZXMubGVuZ3RoID09IDBcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUuZW1wdHk8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlLXNlbGVjdCBlbXB0eVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQgJiYgcHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7dHlwZTogcHJlcGFyZWRJdGVtLnNlbGVjdGVkdHlwZS5sYWJlbCwgZmlsZW5hbWU6IGdldEZpbGVOYW1lcyhwcmVwYXJlZEl0ZW0pfVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy50eXBlLm5vdGFsbG93ZWQ8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcHJlcGFyZWRJdGVtLnR5cGVzOyB0cmFja0J5OiB0cmFja0J5SWRGblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T2JqZWN0VHlwZSh0eXBlKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvbklkXT1cInR5cGUuaWNvbi5pZFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3t0eXBlLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3t0eXBlLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxoMiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnRzLnRpdGxlPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBwcmVwYXJlZEl0ZW0uY29udGVudHM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleEZuOyBpbmRleCBhcyBpZHg7XCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4ID09IGlkeH1cIiAoY2xpY2spPVwic2V0UHJldmlld1VyaShpZHgpXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e2NvbnRlbnQucGF0aH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidG4gYnRuLWRlbGV0ZS1jb250ZW50XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdHJhc2guc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93Q29udGVudERlbGV0ZURpYWxvZyA9IHRydWU7IGRlbGV0ZWRDb250ZW50SW5kZXggPSBpZHg7XCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQuZXhpc3RzY291bnQgPiAwXCIgY2xhc3M9XCJhdHRlbnRpb25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7J2VvLnByZXBhcmUuY29udGVudC5leGlzdHNjb3VudC5tZXNzYWdlJ3x0cmFuc2xhdGU6ICh7Y291bnQ6IGNvbnRlbnQuZXhpc3RzY291bnR9KX19XCI+IVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjcwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8tbWVkaWEtd3JhcFwiPlxuICAgICAgICAgICAgICA8ZW8tcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvIFtjb250ZW50XT1cInByZXBhcmVkSXRlbS5jb250ZW50c1twcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3SW5kZXhdXCI+XG4gICAgICAgICAgICAgIDwvZW8tcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvPlxuICAgICAgICAgICAgICA8ZW8tbWVkaWEgW2Rtc09iamVjdF09XCJwc2V1ZG9EbXNPYmplY3RcIiBbcHJldmlld0ZpbGVdPVwicHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGVcIj48L2VvLW1lZGlhPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC95dmMtc3BsaXQtdmlldz5cblxuICAgICAgICA8IS0tIHdpdGhvdXQgcHJldmlldyAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3ByZXZpZXc+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmlsZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcHJlcGFyZWRJdGVtLnR5cGVzOyB0cmFja0J5OiB0cmFja0J5SWRGblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9iamVjdFR5cGUodHlwZSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvbklkXT1cInR5cGUuaWNvbi5pZFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3t0eXBlLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7dHlwZS5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBIQVNFIENPTlRFTlQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicGhhc2UgY29udGVudFwiICpuZ1N3aXRjaENhc2U9XCInY29udGVudCdcIj5cblxuICAgICAgICA8IS0tIHBhbmVsIGZvciBzZWxlY3RpbmcgYSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGFzIGl0ZW1zIGNvbnRlbnQgLS0+XG4gICAgICAgIDx5dmMtc3BsaXQtdmlldyAqbmdJZj1cImNob29zZVRlbXBsYXRlOyBlbHNlIGF0dGFjaFwiIFtsYXlvdXRTZXR0aW5nc0lEXT1cIidwcmVwYXJlLmRldGFpbHMucGhhc2UuY29udGVudCdcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjQwXCI+XG4gICAgICAgICAgICA8IS0tIGxpc3Qgb2YgYXZhaWxhYmxlIHRlbXBsYXRlcyAtLT5cbiAgICAgICAgICAgIDxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFtsb2FkaW5nXT1cImZhbHNlXCIgY2xhc3M9XCJ0ZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY190ZW1wbGF0ZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnRlbXBsYXRlLmxpc3QudGl0bGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cblxuICAgICAgICAgICAgICAgICAgPGVvLW92ZXJsYXkgI29GaWx0ZXIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsdGVyLnN2ZydcIiBbaWNvbkNsYXNzXT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmxheS1maWx0ZXJcIiBbdGl0bGVdPVwiJ2VvLmxpc3QuZmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW8tY3VzdG9tLWZpbHRlciAjY0ZpbHRlciAoY2hhbmdlKT1cImNGaWx0ZXIudXBkYXRlR3JpZChlb0xpc3QuZW9HcmlkU3ViamVjdCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZSk9XCJvRmlsdGVyLm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLXRleHQtZmlsdGVyIFt0aXRsZV09XCInZW8ucHJlcGFyZS50ZW1wbGF0ZS5maWx0ZXIudGV4dC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdGNoRmllbGRzXT1cIlsndGl0bGUnLCAnZGVzY3JpcHRpb24nLCAndGFncyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZW8ucHJlcGFyZS50ZW1wbGF0ZS5maWx0ZXIudGV4dC50aXRsZSdcIj48L2VvLXRleHQtZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1zZXQtZmlsdGVyIFtvcGVyYXRvcl09XCInT1InXCIgW3RpdGxlXT1cIidlby5wcmVwYXJlLnRlbXBsYXRlLmZpbHRlci5zZXQudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFnRmlsdGVyT3B0aW9ucz8ubGVuZ3RoXCIgW29wdGlvbnNdPVwidGFnRmlsdGVyT3B0aW9uc1wiPjwvZW8tc2V0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9lby1jdXN0b20tZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgPC9lby1vdmVybGF5PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgICAgICAgICAgIDxlby1ncmlkICNlb0dyaWQgKm5nSWY9XCJncmlkT3B0aW9ucz8ucm93RGF0YVwiIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJ0cnVlXCIgW3Nob3dGb290ZXJdPVwiZmFsc2VcIiBbc2VsZWN0aW9uTGltaXRdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAoZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3RUZW1wbGF0ZSgkZXZlbnRbMF0pXCI+XG4gICAgICAgICAgICAgICAgPC9lby1ncmlkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZW8tbGlzdC1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNjBcIj5cbiAgICAgICAgICAgIDwhLS0gcHJldmlldyBvZiBzZWxlY3RlZCB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgICAgIDxlby1tZWRpYSBbZG1zT2JqZWN0XT1cInBzZXVkb0Rtc09iamVjdFwiIFtwcmV2aWV3RmlsZV09XCJzZWxlY3RlZFRlbXBsYXRlRmlsZVwiPjwvZW8tbWVkaWE+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC95dmMtc3BsaXQtdmlldz5cblxuICAgICAgICA8IS0tIGFkZCBjb250ZW50IGdlbmVyYWwgb3ZlcnZpZXcgKHVwbG9hZCwgdGVtcGxhdGUsIG5vbmUpIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2F0dGFjaD5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCIgKm5nSWY9XCIhdXBsb2FkSW5Qcm9ncmVzc1wiIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQuaW5mbzwvZGl2PlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlIChjaGFuZ2UpPVwiZmlsZUNoYW5nZUxpc3RlbmVyKCRldmVudC50YXJnZXQuZmlsZXMpXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudHNcIiAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzOyBlbHNlIHVwbG9hZHNwaW5uZXJcIj5cblxuICAgICAgICAgICAgPCEtLSB1cGxvYWQgYSBmaWxlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQgYXR0LWZpbGVcIiAqbmdJZj1cInByZXBhcmVQaGFzZS5kYXRhLmZpbGVcIiAoY2xpY2spPVwidXBsb2FkKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZ1wiPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ZpbGVfdXBsb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC51cGxvYWQudGl0bGU8L2gzPlxuICAgICAgICAgICAgICA8cCB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LnVwbG9hZC5kZXNjPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gc2VsZWN0IGEgdGVtcGxhdGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudCBhdHQtdG1wbFwiICpuZ0lmPVwicHJlcGFyZVBoYXNlLmRhdGEudGVtcGxhdGVzLmxlbmd0aCA+IDAgJiYgaGFzVGVtcGxhdGVDYXBhYmlsaXR5KClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1RlbXBsYXRlU2VsZWN0b3IodHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZ1wiPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3ByZXBhcmVfYWRkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC50ZW1wbGF0ZS50aXRsZTwvaDM+XG4gICAgICAgICAgICAgIDxwIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQudGVtcGxhdGUuZGVzYzwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIG5vIGZpbGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudCBhdHQtbm9uZVwiICpuZ0lmPVwicHJlcGFyZVBoYXNlLmRhdGEud2l0aG91dEZpbGVcIiAoY2xpY2spPVwibm9GaWxlKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZ1wiPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX25vLWZpbGUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50Lm5vZmlsZS50aXRsZTwvaDM+XG4gICAgICAgICAgICAgIDxwIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQubm9maWxlLmRlc2M8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPCEtLSB1cGxvYWQgcHJvZ3Jlc3MgaW5kaWNhdG9yIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3VwbG9hZHNwaW5uZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ2xhcmdlJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUEhBU0UgSU5ERVhEQVRBIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInBoYXNlIGluZGV4ZGF0YVwiICpuZ1N3aXRjaENhc2U9XCInaW5kZXhkYXRhJ1wiPlxuXG4gICAgICAgIDwhLS0gZm9ybSBhbmQgcHJldmlldyAtLT5cbiAgICAgICAgPHl2Yy1zcGxpdC12aWV3ICpuZ0lmPVwicHJlcGFyZWRJdGVtLmNvbnRlbnRzOyBlbHNlIGp1c3Rmb3JtXCIgW2xheW91dFNldHRpbmdzSURdPVwiJ3ByZXBhcmUuc3RhdGUnXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmlsZXNcIj5cblxuICAgICAgICAgICAgICA8IS0tIGluZGV4ZGF0YSBmb3JtIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwianVzdGZvcm1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIGxpc3Qgb2YgY29udGVudHMgKGluIGNhc2Ugb2YgYnVsayB1cGxvYWQpIHRoYXQgY2FuIGJlIHByZXZpZXdlZCAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtc2VsZWN0XCI+XG5cbiAgICAgICAgICAgICAgICA8aDIgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5jb250ZW50cy50aXRsZTwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcHJlcGFyZWRJdGVtLmNvbnRlbnRzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhGbjsgaW5kZXggYXMgaWR4XCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4ID09PSBpZHh9XCIgKGNsaWNrKT1cInNldFByZXZpZXdVcmkoaWR4KVwiPlxuICAgICAgICAgICAgICAgICAge3tjb250ZW50LnBhdGh9fSA8c3BhbiAqbmdJZj1cImNvbnRlbnQuZXhpc3RzY291bnQgPiAwXCIgY2xhc3M9XCJhdHRlbnRpb25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7J2VvLnByZXBhcmUuY29udGVudC5leGlzdHNjb3VudC5tZXNzYWdlJ3x0cmFuc2xhdGU6ICh7Y291bnQ6IGNvbnRlbnQuZXhpc3RzY291bnR9KX19XCI+ITwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLW1lZGlhLXdyYXBcIj5cbiAgICAgICAgICAgICAgPGVvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbyBbY29udGVudF09XCJwcmVwYXJlZEl0ZW0uY29udGVudHNbcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4XVwiPlxuICAgICAgICAgICAgICA8L2VvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbz5cbiAgICAgICAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwicHNldWRvRG1zT2JqZWN0XCIgW3ByZXZpZXdGaWxlXT1cInByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlXCI+PC9lby1tZWRpYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG5cbiAgICAgICAgPCEtLSBqdXN0IHRoZSBmb3JtIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2p1c3Rmb3JtPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBzaXR1YXRpb24tY3JlYXRlXCIgKm5nSWY9XCJmb3JtT3B0aW9uc1wiPlxuICAgICAgICAgICAgPGVvLW9iamVjdC1mb3JtICNmb3JtIFtmb3JtT3B0aW9uc109XCJmb3JtT3B0aW9uc1wiIChzdGF0dXNDaGFuZ2VkKT1cIm9uRm9ybVN0YXR1c0NoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9lby1vYmplY3QtZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPG5nLXRlbXBsYXRlICNzcGlubmVyPlxuICAgIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG4gICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIHNpemU9XCJtZWRpdW1cIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWFpblNwaW5uZXI+XG4gIDxkaXYgY2xhc3M9XCJwcmVwYXJlRGV0YWlsc19fbWFpbi1zcGlubmVyXCI+XG4gICAgPGVvLWxvYWRpbmctc3Bpbm5lciBzaXplPVwibWVkaXVtXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI25vSXRlbT5cbiAgPGVvLWVycm9yLW1lc3NhZ2UgW2VtcHR5U3RhdGVdPVwie2ljb246IGVtcHR5U3RhdGUuaWNvbiwgdGV4dDogZW1wdHlTdGF0ZS50ZXh0LCBjbGFzc05hbWU6IGVtcHR5U3RhdGUuY2xhc3NOYW1lfVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9lby1lcnJvci1tZXNzYWdlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCIncHJlcGFyZS1kZWxldGVfX2RpYWxvZydcIj5cblxuICA8ZGl2Pnt7J2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX08L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgcHJlcGFyZS1kZWxldGUtLWFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpcm1EZWxldGUgKGNsaWNrKT1cInJlbW92ZUl0ZW0ocHJlcGFyZWRJdGVtKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmNvbnRlbnQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0NvbnRlbnREZWxldGVEaWFsb2dcIlxuICBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ3ByZXBhcmUtZGVsZXRlX19kaWFsb2cnXCI+XG5cbiAgPGRpdj57eydlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmNvbnRlbnQuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlOiAoe2NvbnRlbnRQYXRoOiBwcmVwYXJlZEl0ZW0/LmNvbnRlbnRzID9cbiAgICBwcmVwYXJlZEl0ZW0/LmNvbnRlbnRzW2RlbGV0ZWRDb250ZW50SW5kZXhdPy5wYXRoIDogJyd9KX19PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIHByZXBhcmUtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93Q29udGVudERlbGV0ZURpYWxvZyA9IGZhbHNlXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybUNvbnRlbnREZWxldGUgKGNsaWNrKT1cInJlbW92ZUl0ZW1Db250ZW50KHByZXBhcmVkSXRlbSwgZGVsZXRlZENvbnRlbnRJbmRleClcIlxuICAgICAgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5vazwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuIl19
|
|
568
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcHJlcGFyZS1kZXRhaWxzL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFLTCxZQUFZLEVBS1osS0FBSyxFQUNMLFNBQVMsRUFDVixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCNUQsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUF5QmxDLElBQ0ksWUFBWSxDQUFDLElBQWtCO1FBQ2pDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsSCxNQUFNLG1CQUFtQixHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0SCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7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Qjt3VUFhWCxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ0UsVUFBVTtzQkFBNUIsU0FBUzt1QkFBQyxNQUFNO2dCQUNXLG1CQUFtQjtzQkFBOUMsU0FBUzt1QkFBQyxlQUFlO2dCQUNTLDBCQUEwQjtzQkFBNUQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBYzdCLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxjQUFjO2dCQW9CWixVQUFVO3NCQUFsQixLQUFLO2dCQWlDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUdILFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLCBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgT2JqZWN0VHlwZSxcbiAgUHJlcGFyZVNlcnZpY2UsXG4gIFByZXBhcmVkSXRlbSxcbiAgUHJlcGFyZWRJdGVtVGVtcGxhdGUsXG4gIFByZXBhcmVkSXRlbVR5cGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFV0aWxzLFxuICBEbXNPYmplY3Rcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1ByZXZpZXdGaWxlfSBmcm9tICcuLi9tZWRpYS9tZWRpYS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS9pbmRleCc7XG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZVBoYXNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkYXRhOiB7XG4gICAgcHJldmlld0luZGV4PzogbnVtYmVyLFxuICAgIHByZXZpZXdGaWxlPzogUHJldmlld0ZpbGUsXG4gICAgZmlsZT86IGJvb2xlYW4sXG4gICAgd2l0aG91dEZpbGU/OiBib29sZWFuLFxuICAgIHRlbXBsYXRlcz86IGFueVtdXG4gIH07XG59XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXByZXBhcmUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmVwYXJlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgc2VsZWN0ZWRUeXBlT2JqZWN0O1xuXG4gIC8vIGhpZGRlbiBmaWxlIGlucHV0IHRvIHRyaWdnZXIgZmlsZSB1cGxvYWRzXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnKSBmaWxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmb3JtJykgb2JqZWN0Rm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1Db250ZW50RGVsZXRlJykgY29uZmlybUNvbnRlbnREZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgLy8gcHJlcGFyYXRpb24gaXMgZGl2aWRlZCBpbnRvIHNldmVyYWwgcGhhc2VzXG4gIC8vIHNlbGVjdCBhbiBvYmplY3QgdHlwZVxuICBQSEFTRV9UWVBFID0gJ3R5cGUnO1xuICAvLyBhZGQgY29udGVudFxuICBQSEFTRV9DT05URU5UID0gJ2NvbnRlbnQnO1xuICAvLyBzZXQgaW5kZXhkYXRhXG4gIFBIQVNFX0lOREVYREFUQSA9ICdpbmRleGRhdGEnO1xuXG4gIF9wcmVwYXJlZEl0ZW06IFByZXBhcmVkSXRlbTtcbiAgcHNldWRvRG1zT2JqZWN0OiBEbXNPYmplY3Q7XG5cbiAgQElucHV0KCdwcmVwYXJlZEl0ZW0nKVxuICBzZXQgcHJlcGFyZWRJdGVtKGl0ZW06IFByZXBhcmVkSXRlbSkge1xuICAgIGNvbnN0IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5ID0gKG9iaikgPT4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMob2JqIHx8IHt9KS5zb3J0KCkubWFwKGtleSA9PiBvYmpba2V5XSkpO1xuICAgIGNvbnN0IGlzUHJvY2Vzc2luZ0FsbG93ZWQgPSBvYmplY3RUb1N0cmluZ2lmaWVkVmFsdWVBcnJheSh0aGlzLl9wcmVwYXJlZEl0ZW0pICE9PSBvYmplY3RUb1N0cmluZ2lmaWVkVmFsdWVBcnJheShpdGVtKTtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLnR5cGVzKSB7XG4gICAgICBpdGVtLnR5cGVzID0gaXRlbS50eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuICAgIH1cbiAgICB0aGlzLl9wcmVwYXJlZEl0ZW0gPSBpdGVtO1xuICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbSAmJiB0aGlzLnByZXBhcmVkSXRlbS5pZCAmJiBpc1Byb2Nlc3NpbmdBbGxvd2VkKSB7XG4gICAgICB0aGlzLnByb2Nlc3MoKTtcbiAgICAgIC8vIHdlIG5lZWQgdGhpcyBmb3IgdGhlIE8zNjUgaW50ZWdyYXRpb24gVFVLLTM1NzZcbiAgICAgIHRoaXMucHNldWRvRG1zT2JqZWN0ID0gbmV3IERtc09iamVjdCh7aWQ6IHRoaXMucHJlcGFyZWRJdGVtLmlkLCB2ZXJzaW9uOiAwfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHByZXBhcmVkSXRlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlcGFyZWRJdGVtO1xuICB9XG5cblxuICBASW5wdXQoKSBlbXB0eVN0YXRlID0ge2ljb246ICdhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Vycm9yLnN2ZycsIHRleHQ6ICcnLCBjbGFzc05hbWU6ICdkZXRhaWxzLWVycm9yJ307XG5cbiAgcHJlcGFyZVBoYXNlOiBQcmVwYXJlUGhhc2U7XG4gIHNlbGVjdGVkVGVtcGxhdGU6IFByZXBhcmVkSXRlbVRlbXBsYXRlO1xuICBzZWxlY3RlZFRlbXBsYXRlRmlsZTogUHJldmlld0ZpbGU7XG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBjaG9vc2VUZW1wbGF0ZTogYm9vbGVhbjtcbiAgdXBsb2FkSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgY29tbWl0dGluZzogYm9vbGVhbjtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICB0YWdGaWx0ZXJPcHRpb25zOiBhbnk7XG4gIF9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIF9zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBkZWxldGVkQ29udGVudEluZGV4OiBudW1iZXI7XG5cbiAgLy8gdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBkZXRhaWxzIGhlYWRlclxuICBoZWFkZXIgPSB7XG4gICAgdGl0bGU6IG51bGwsXG4gICAgbG9jYXRpb246IHtcbiAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgbGluazogbnVsbFxuICAgIH0sXG4gICAgc3VidGl0bGU6IG51bGxcbiAgfTtcblxuICBjb2xEZWZzOiBDb2xEZWZbXSA9IFt7XG4gICAgaGVhZGVyTmFtZTogJycsXG4gICAgZmllbGQ6ICd0aXRsZScsXG4gICAgY2VsbFJlbmRlcmVyOiB0aGlzLmNlbGxSZW5kZXJlcixcbiAgICBmaWx0ZXI6IGZhbHNlXG4gIH1dO1xuXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XG5cbiAgQE91dHB1dCgpIG9uSXRlbUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXBhcmVkSXRlbT4oKTtcbiAgQE91dHB1dCgpIG9uQ29tbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkl0ZW1SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXBhcmVkSXRlbT4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJylcbiAgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVkSXRlbSAmJiB0aGlzLnByZXBhcmVkSXRlbS5zZWxlY3RlZHR5cGUgPyB0aGlzLnByZXBhcmVkSXRlbS5zZWxlY3RlZHR5cGUubmFtZSA6ICdub25lJztcbiAgfVxuXG4gIHNldCBzaG93RGVsZXRlRGlhbG9nKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dEZWxldGVEaWFsb2cgPSB2YWw7XG5cbiAgICBpZiAodGhpcy5fc2hvd0RlbGV0ZURpYWxvZykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1EZWxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZURpYWxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0RlbGV0ZURpYWxvZztcbiAgfVxuXG4gIHNldCBzaG93Q29udGVudERlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IHZhbDtcblxuICAgIGlmICh0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1Db250ZW50RGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dDb250ZW50RGVsZXRlRGlhbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93Q29udGVudERlbGV0ZURpYWxvZztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGNhcGFiaWxpdGVzOiBDYXBhYmlsaXRpZXNTZXJ2aWNlKSB7XG4gIH1cblxuICBjZWxsUmVuZGVyZXIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHtwYXJhbXMuZGF0YS50aXRsZSB8fCAnJ30ke3BhcmFtcy5kYXRhLmNvbnRlbnQgPyAnPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPicgKyAnICgnICsgcGFyYW1zLmRhdGEuY29udGVudC5taW1lZ3JvdXAgKyAnKScgKyAnPC9zcGFuPicgOiAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtwYXJhbXMuZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3NcIj5cbiAgICAgICAgICAgICAgICAke3BhcmFtcy5kYXRhLnRhZ3MubWFwKHRhZyA9PiBgPHNwYW4gY2xhc3M9XCJjaGlwXCI+JHt0YWd9PC9zcGFuPmApLmpvaW4oJycpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIHByZXBhcmVGb3JtQ29udGVudChmb3JtRGF0YT8pIHtcbiAgICBjb25zdCBkYXRhID0gZm9ybURhdGEgfHwgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZGF0YTtcbiAgICB0aGlzLmZvcm1PcHRpb25zID0ge1xuICAgICAgZm9ybU1vZGVsOiB0aGlzLnNlbGVjdGVkVHlwZU9iamVjdC5mb3JtLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudCkge1xuICAgICAgdGhpcy5mb3JtT3B0aW9ucy5jb250ZXh0ID0ge1xuICAgICAgICBpZDogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkLFxuICAgICAgICB0aXRsZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnRpdGxlLFxuICAgICAgICB0eXBlTmFtZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmVzZXRPYmplY3RUeXBlKCkge1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2UudXBkYXRlQ2hpbGRUeXBlKCdkbXM6c3lzb2JqZWN0JywgdGhpcy5wcmVwYXJlZEl0ZW0uaWQpLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZUl0ZW0gPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkUHJlcGFyZUl0ZW07XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh1cGRhdGVkUHJlcGFyZUl0ZW0pO1xuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0cyBhIHByZXBhcmVkIGl0ZW0uIFRoaXMgd2lsbCBjYXVzZSB0aGUgdGVtcG9yYXJ5IHByZXBhcmVkIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gYSByZWFsIERNUy1PYmplY3QuXG4gICAqIEBwYXJhbSBvcGVuTG9jYXRpb25BZnRlckNvbW1pdCAtIHdoZW4gc2V0IHRvIHRydWUsIGFwcGxpY2F0aW9uIHdpbGwgbmF2aWdhdGUgdG8gdGhlIG9iamVjdHMgbG9jYXRpb25cbiAgICovXG4gIGNvbW1pdChvcGVuTG9jYXRpb25BZnRlckNvbW1pdD86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMub2JqZWN0Rm9ybS5nZXRGb3JtRGF0YSgpO1xuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAgICAgLmNvbW1pdFByZXBhcmVkSXRlbSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCkubmFtZSwgZm9ybURhdGEpXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ29tbWl0LmVtaXQocmVzKTtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgICAgICAgICAgaWYgKG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0KSB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIHJlc10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtrZXksIGNhdXNlLCB1bmlxdWVmaWVsZHMsIGNyZWF0ZWR9ID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICBpZiAoa2V5ICYmIGtleSA9PT0gJ0RNU19NRVRBREFUQV9VTklRVUVfVklPTEFUSU9OX0VSUk9SJykge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51bmlxdWUudmFsaWRhdGlvbi5lcnJvci5oaW50Jywge2ZpZWxkOiB1bmlxdWVmaWVsZHMudG9TdHJpbmcoKX0pKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ICYmIGtleSA9PT0gJ0RNU19TWU5DSFJPTk9VU19JTkRFWElOR19GQUlMRUQnKSB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLndhcm5pbmcobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS5jb21taXQuZXJyb3IuaW5kZXhGYWlsZWQnKSk7XG4gICAgICAgICAgICAgIHRoaXMub25Db21taXQuZW1pdChjcmVhdGVkLmlkKTtcbiAgICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgICAgIGlmIChvcGVuTG9jYXRpb25BZnRlckNvbW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGNyZWF0ZWQuaWRdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXVzZSkge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBjYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuY3JlYXRlZC5lcnJvci50aXRsZScpLFxuICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS5jcmVhdGVkLmVycm9yLm1lc3NhZ2UnKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUZvcm1Db250ZW50KGZvcm1EYXRhKTtcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICByZW1vdmVJdGVtKGl0ZW06IFByZXBhcmVkSXRlbSkge1xuICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIHRoaXMub25JdGVtUmVtb3ZlLmVtaXQoaXRlbSk7XG4gICAgdGhpcy5fc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICB9XG5cbiAgcmVtb3ZlSXRlbUNvbnRlbnQoaXRlbTogUHJlcGFyZWRJdGVtLCBkZWxldGVkQ29udGVudEluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlLmRlbGV0ZVByZXBhcmVkSXRlbUNvbnRlbnQoaXRlbS5pZCwgZGVsZXRlZENvbnRlbnRJbmRleClcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRJdGVtOiBQcmVwYXJlZEl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkSXRlbTtcbiAgICAgICAgdGhpcy5zaG93Q29udGVudERlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXRGaWxlTmFtZXMoaXRlbTogUHJlcGFyZWRJdGVtKSB7XG4gICAgcmV0dXJuIChpdGVtLmNvbnRlbnRzIHx8IFtdKS5tYXAoYyA9PiBjLnBhdGgpLmpvaW4oJywgJyk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGEgdGFyZ2V0IG9iamVjdCB0eXBlIGZvciB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtLlxuICAgKiBAcGFyYW0gdHlwZSAtIHRoZSBvYmplY3QgdHlwZXMgbmFtZSB0byBiZSBzZXQgYXMgdGFyZ2V0XG4gICAqL1xuICBzZWxlY3RPYmplY3RUeXBlKHR5cGU6IFByZXBhcmVkSXRlbVR5cGUpIHtcbiAgICB0aGlzLnByZXBhcmVkSXRlbS50eXBlc1xuICAgICAgLmZvckVhY2goKHQpID0+IHQuc2VsZWN0ZWQgPSAodC5uYW1lID09PSB0eXBlLm5hbWUpKTtcblxuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgIC51cGRhdGVDaGlsZFR5cGUodHlwZS5uYW1lLCB0aGlzLnByZXBhcmVkSXRlbS5pZClcbiAgICAgIC5zdWJzY3JpYmUodXBkYXRlZFByZXBhcmVkSXRlbSA9PiB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gdXBkYXRlZFByZXBhcmVkSXRlbTtcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodXBkYXRlZFByZXBhcmVkSXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0ZW1wbGF0ZSB0byB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtLlxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgYWRkZWRcbiAgICovXG4gIGFkZFRlbXBsYXRlKHRlbXBsYXRlOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZSkge1xuXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgLmFkZFRlbXBsYXRlKHRoaXMucHJlcGFyZWRJdGVtLmlkLCB0ZW1wbGF0ZS5pZClcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRQcmVwYXJlZEl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkUHJlcGFyZWRJdGVtO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh1cGRhdGVkUHJlcGFyZWRJdGVtKTtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUudGVtcGxhdGUuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS50ZW1wbGF0ZS5lcnJvci5tZXNzYWdlJykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSB0ZW1wbGF0ZS4gV2lsbCBzaG93IHByZXZpZXcgZm9yIHRoZSBzZWxlY3RlZCB0ZW1wbGF0ZS5cbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGhlIHRlbXBsYXRlIHRvIGJlIHNlbGVjdGVkXG4gICAqL1xuICBzZWxlY3RUZW1wbGF0ZSh0ZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGUpIHtcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVGaWxlID0gISh0ZW1wbGF0ZSAmJiB0ZW1wbGF0ZS5jb250ZW50KSA/IG51bGwgOiB7XG4gICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0VGVtcGxhdGVQcmV2aWV3VXJpKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZS5pZCksXG4gICAgICB1cmlQZGY6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0VGVtcGxhdGVQcmV2aWV3VXJpKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZS5pZCwgJ1BERicpLFxuICAgICAgbWltZXR5cGU6IHRlbXBsYXRlLmNvbnRlbnQubWltZXR5cGUsXG4gICAgICBtaW1lZ3JvdXA6IHRlbXBsYXRlLmNvbnRlbnQubWltZWdyb3VwLFxuICAgICAgc2l6ZTogdGVtcGxhdGUuY29udGVudC5zaXplXG4gICAgfTtcbiAgfVxuXG4gIHNldFByZXZpZXdVcmkoaW5kZXg6IG51bWJlcikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5wcmVwYXJlUGhhc2UuZGF0YSwgdGhpcy5nZXRQcmV2aWV3RGF0YShpbmRleCkpO1xuICB9XG5cbiAgLy8gc2tpcCBjb250ZW50IHNlbGVjdGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbVxuICAvLyBhbmQgY29udGludWUgc2V0dGluZyBpbmRleGRhdGFcbiAgbm9GaWxlKCkge1xuICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gIH1cblxuICAvLyB0cmlnZ2VyIGZpbGUgdXBsb2FkXG4gIHVwbG9hZCgpIHtcbiAgICAvLyBhZnRlciB0aGUgdXNlciBzZWxlY3RlZCBhIGZpbGUgZmlsZUNoYW5nZUxpc3RlbmVyKCkgd2lsbCBjb250aW51ZVxuICAgIHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICAvLyBvbkNoYW5nZSBsaXN0ZW5lciBvbiBoaWRkZW4gZmlsZSBpbnB1dFxuICBmaWxlQ2hhbmdlTGlzdGVuZXIoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnRbMF07XG4gICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAudXBsb2FkQ29udGVudCh0aGlzLnByZXBhcmVkSXRlbS5pZCwgZmlsZSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgLy8gdXBsb2FkIHN1Y2NlZWRlZCBzbyB3ZSBjYW4gZ28gb24gdG8gdGhlIG5leHQgcHJlcGFyZSBwaGFzZVxuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IG5ldyBQcmVwYXJlZEl0ZW0ocmVzKTtcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodGhpcy5wcmVwYXJlZEl0ZW0pO1xuICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xuICAgICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH0sIFV0aWxzLnRocm93KGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmNhdXNlKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IobnVsbCwgZXJyb3IuZXJyb3IuY2F1c2UubWVzc2FnZXNbMF0pO1xuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLmVycm9yKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IobnVsbCwgZXJyb3IuZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS5jcmVhdGVkLmVycm9yLnRpdGxlJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJylcbiAgICAgICkpO1xuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChldnQpIHtcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IGV2dDtcblxuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzKCkge1xuICAgIC8vIHRvZG86IHJlc2V0IHN0dWZmXG4gICAgdGhpcy5mb3JtU3RhdGUgPSBudWxsO1xuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuZ2V0UHJlcGFyZVBoYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBwcmVwYXJlIHBoYXNlIHRvIGJlIGluaXRpYWxpemVkIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zXG4gICAqIG9mIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXG4gICAqL1xuICBwcml2YXRlIGdldFByZXBhcmVQaGFzZSgpIHtcbiAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpKSB7XG4gICAgICAvLyBTdGVwICMxIHNlbGVjdCBhbiBvYmplY3QgdHlwZSBpZiBub3QgeWV0IHNldFxuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uaGFzQ29udGVudCgpKSB7XG4gICAgICAvLyBTdGVwICMyIGFkZCBjb250ZW50IGlmIG5vdCB5ZXQgY29udGFpbmVkXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9DT05URU5UKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCAjMyBlZGl0IGluZGV4ZGF0YSBhbmQgc2F2ZVxuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRlbXBsYXRlKHNlbGVjdGVkVHlwZU9iamVjdCkge1xuICAgIGNvbnN0IHR5cGU6IE9iamVjdFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShzZWxlY3RlZFR5cGVPYmplY3QubmFtZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAuZ2V0VGVtcGxhdGVzKHNlbGVjdGVkVHlwZU9iamVjdC5uYW1lKVxuICAgICAgLnN1YnNjcmliZSgodGVtcGxhdGVzOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVSZXF1aXJlZCA9IHRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLmNvbnRlbnRzdGF0ZSA9PT0gJ1JFUVVJUkVEJztcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICBmaWxlOiB0eXBlLm1heEZpbGVzID4gMCxcbiAgICAgICAgICB3aXRob3V0RmlsZTogISh0eXBlLm1pbkZpbGVzID4gMCkgJiYgIWZpbGVSZXF1aXJlZCxcbiAgICAgICAgICB0ZW1wbGF0ZXM6IHRlbXBsYXRlcyB8fCBbXVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IG9iamVjdCB0eXBlIGRvZXMgbm90IHN1cHBvcnQgZmlsZSB1cGxvYWQgb3IgdGVtcGxhdGUgY29udGVudHNcbiAgICAgICAgLy8gd2Ugc2tpcCBjb250ZW50IHBoYXNlIGFuZCBtb3ZlIG9uIHRvIGluZGV4ZGF0YSBwaGFzZVxuICAgICAgICBpZiAoIWRhdGEuZmlsZSkge1xuICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmVwYXJlUGhhc2UgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX0NPTlRFTlQsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnNldHVwVGl0bGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhZ0ZpbHRlck9wdGlvbnMgPSB0aGlzLmNyZWF0ZVRhZ0ZpbHRlck9wdGlvbnModGVtcGxhdGVzKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgICAgICBjb250ZXh0OiB7Y291bnQ6IHRoaXMucHJlcGFyZVBoYXNlLmRhdGEudGVtcGxhdGVzLmxlbmd0aH0sXG4gICAgICAgICAgcm93RGF0YTogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXMuc29ydChVdGlscy5zb3J0VmFsdWVzKCd0aXRsZScpKSxcbiAgICAgICAgICBjb2x1bW5EZWZzOiB0aGlzLmNvbERlZnMsXG4gICAgICAgICAgcm93SGVpZ2h0OiA4MFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVGFnRmlsdGVyT3B0aW9ucyh0ZW1wbGF0ZXM6IFByZXBhcmVkSXRlbVRlbXBsYXRlW10pIHtcbiAgICBsZXQgdGFnRmlsdGVyT3B0aW9ucyA9IFtdO1xuICAgIHRlbXBsYXRlcy5mb3JFYWNoKHRlbXBsYXRlID0+IHtcbiAgICAgIHRlbXBsYXRlLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICAgICAgICB0YWdGaWx0ZXJPcHRpb25zLnB1c2goe2xhYmVsOiB0YWcsIGZpbHRlcjogKG5vZGUpID0+IG5vZGUuZGF0YS50YWdzLmluY2x1ZGVzKHRhZyksIHZhbHVlOiB0cnVlfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gVXRpbHMudW5pcUJ5KHRhZ0ZpbHRlck9wdGlvbnMsICdsYWJlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYSBzcGVjaWZpYyBwcmVwYXJlIHBoYXNlLlxuICAgKiBAcGFyYW0gcGhhc2UgLSBwaGFzZSB0byBpbml0IChQSEFTRV9UWVBFLCBQSEFTRV9DT05URU5ULCBQSEFTRV9JTkRFWERBVEEpXG4gICAqL1xuICBwcml2YXRlIGluaXRQcmVwYXJlUGhhc2UocGhhc2U6IHN0cmluZykge1xuICAgIHRoaXMucHJlcGFyZVBoYXNlID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZU9iamVjdCA9IHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpO1xuXG4gICAgc3dpdGNoIChwaGFzZSkge1xuICAgICAgLy8gaW5pdCBwcmVwYXJlIHBoYXNlIGZvciBzZWxlY3RpbmcgdGhlIHRhcmdldCBvYmplY3QgdHlwZVxuICAgICAgY2FzZSB0aGlzLlBIQVNFX1RZUEU6IHtcblxuICAgICAgICB0aGlzLnByZXBhcmVQaGFzZSA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX1RZUEUsXG4gICAgICAgICAgZGF0YTogdGhpcy5nZXRQcmV2aWV3RGF0YSgpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gaW5pdCBwcmVwYXJlIHBoYXNlIGZvciBzZXR0aW5nIHVwIGNvbnRlbnRcbiAgICAgIGNhc2UgdGhpcy5QSEFTRV9DT05URU5UOiB7XG5cbiAgICAgICAgdGhpcy5jaG9vc2VUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgPSBudWxsO1xuXG4gICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSBwcmVwYXJlZEl0ZW0gYWxyZWFkeSBjb250YWlucyBhIGZpbGUgb3IgdGVtcGxhdGVcbiAgICAgICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLmhhc0NvbnRlbnQoKSkge1xuICAgICAgICAgIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUudHlwZXNlbGVjdGVkYWxsb3dlZCkge1xuICAgICAgICAgICAgLy8gaWYgdGhlIHNlbGVjdGVkIHR5cGUgaXMgbm90IGFsbG93ZWQsIHdlJ2xsIGdvIGJhY2sgdG8gdGhlIHR5cGUgc2VsZWN0IHN0YXRlIC4uLlxuICAgICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIC4uLiBvdGhlcndpc2Ugd2UgZ28gb24gc2V0dGluZyBpbmRleGRhdGFcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLmNvbnRlbnRzdGF0ZSA9PT0gJ05PQ09OVEVOVEFMTE9XRUQnKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKHRoaXMuc2VsZWN0ZWRUeXBlT2JqZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIGFkZGluZyBpbmRleGRhdGFcbiAgICAgIGNhc2UgdGhpcy5QSEFTRV9JTkRFWERBVEE6IHtcblxuICAgICAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS50eXBlc2VsZWN0ZWRhbGxvd2VkKSB7XG4gICAgICAgICAgLy8gaWYgdGhlIHNlbGVjdGVkIHR5cGUgaXMgbm90IGFsbG93ZWQsIHdlJ2xsIGdvIGJhY2sgdG8gdGhlIHR5cGUgc2VsZWN0IHN0YXRlIC4uLlxuICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybUNvbnRlbnQoKTtcblxuICAgICAgICAgIHRoaXMucHJlcGFyZVBoYXNlID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5QSEFTRV9JTkRFWERBVEEsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmdldFByZXZpZXdEYXRhKClcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJldmlld0RhdGEoaW5kZXg/OiBudW1iZXIpOiBhbnkge1xuICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbSAmJiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50cyAmJiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50cy5sZW5ndGgpIHtcbiAgICAgIGluZGV4ID0gaW5kZXggfHwgMDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZXZpZXdJbmRleDogaW5kZXgsXG4gICAgICAgIHByZXZpZXdGaWxlOiB7XG4gICAgICAgICAgdXJpOiB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFByZXZpZXdVcmkodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGluZGV4KSxcbiAgICAgICAgICB1cmlQZGY6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJldmlld1VyaSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgaW5kZXgsICdQREYnKSxcbiAgICAgICAgICBtaW1ldHlwZTogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLm1pbWV0eXBlLFxuICAgICAgICAgIG1pbWVncm91cDogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLm1pbWVncm91cCxcbiAgICAgICAgICBwYXRoOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ucGF0aCxcbiAgICAgICAgICBzaXplOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0uc2l6ZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7cHJldmlld0ZpbGU6IG51bGx9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHVwIHRpdGxlIGZvciB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtIGJhc2VkIG9uIHRoZVxuICAgKiBjdXJyZW50IHByZXBhcmUgcGhhc2UuIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgcHJlcGFyZSBwaGFzZSBpcyBpZGVudGlmaWVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFRpdGxlKCkge1xuXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0KFtcbiAgICAgICdlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnN5c3Jvb3QnLFxuICAgICAgJ2VvLnByZXBhcmUubG9jYXRpb24udGl0bGUucHJlZml4JyxcbiAgICAgICdlby5wcmVwYXJlLmRldGFpbHMudHlwZS50aXRsZScsXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUuc3VidGl0bGUnLFxuICAgICAgJ2VvLnByZXBhcmUuZGV0YWlscy5jb250ZW50LnN1YnRpdGxlJyxcbiAgICAgICdlby5wcmVwYXJlLmRldGFpbHMuaW5kZXhkYXRhLnN1YnRpdGxlJ1xuICAgIF0pLnN1YnNjcmliZSh0ID0+IHtcblxuICAgICAgbGV0IGhlYWRlciA9IHtcbiAgICAgICAgdGl0bGU6IG51bGwsXG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgbGFiZWw6IG51bGwsXG4gICAgICAgICAgbGluazogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBzdWJ0aXRsZTogbnVsbFxuICAgICAgfTtcbiAgICAgIHN3aXRjaCAodGhpcy5wcmVwYXJlUGhhc2UubmFtZSkge1xuICAgICAgICBjYXNlIHRoaXMuUEhBU0VfVFlQRToge1xuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHRbJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnRpdGxlJ107XG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUuc3VidGl0bGUnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHRoaXMuUEhBU0VfQ09OVEVOVDoge1xuICAgICAgICAgIGNvbnN0IHR5cGVPYmplY3QgPSB0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKTtcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0eXBlT2JqZWN0ID8gdHlwZU9iamVjdC5sYWJlbCA6ICcnO1xuICAgICAgICAgIGhlYWRlci5zdWJ0aXRsZSA9IHRbJ2VvLnByZXBhcmUuZGV0YWlscy5jb250ZW50LnN1YnRpdGxlJ107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSB0aGlzLlBIQVNFX0lOREVYREFUQToge1xuICAgICAgICAgIGNvbnN0IHR5cGVPYmplY3QgPSB0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKTtcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0eXBlT2JqZWN0ID8gdHlwZU9iamVjdC5sYWJlbCA6ICcnO1xuICAgICAgICAgIGhlYWRlci5zdWJ0aXRsZSA9IHRbJ2VvLnByZXBhcmUuZGV0YWlscy5pbmRleGRhdGEuc3VidGl0bGUnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzZXQgdXAgbG9jYXRpb24gaW5mb1xuICAgICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50eXBlID09PSAnc3lzcm9vdCcpIHtcbiAgICAgICAgaGVhZGVyLmxvY2F0aW9uID0ge1xuICAgICAgICAgIGxhYmVsOiB0Wydlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnN5c3Jvb3QnXSxcbiAgICAgICAgICBsaW5rOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXJlbnRUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUodGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGUpO1xuICAgICAgICBoZWFkZXIubG9jYXRpb24gPSB7XG4gICAgICAgICAgbGFiZWw6IGAgJHtwYXJlbnRUeXBlLmxhYmVsfTogJHt0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudGl0bGV9YCxcbiAgICAgICAgICBsaW5rOiBgL29iamVjdC8ke3RoaXMucHJlcGFyZWRJdGVtLnBhcmVudC5pZH1gXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLmhlYWRlciA9IGhlYWRlcjtcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dUZW1wbGF0ZVNlbGVjdG9yKHNob3c6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gc2hvdztcbiAgICB0aGlzLnNlbGVjdFRlbXBsYXRlKHRoaXMucHJlcGFyZVBoYXNlLmRhdGEudGVtcGxhdGVzWzBdKTtcbiAgfVxuXG4gIGRvd25sb2FkKCkge1xuICAgIGlmICh0aGlzLnByZXBhcmVQaGFzZSkge1xuICAgICAgY29uc3QgZmlsZSA9IHRoaXMucHJlcGFyZVBoYXNlLm5hbWUgPT09ICdjb250ZW50JyA/IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgOiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlO1xuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgdGhpcy5iYWNrZW5kLmRvd25sb2FkKGZpbGUudXJpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYXNUZW1wbGF0ZUNhcGFiaWxpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FwYWJpbGl0ZXMuaGFzQ2FwYWJpbGl0eSgndGVtcGxhdGUnKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SWRGbihpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleEZuKGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKS5mb2N1cyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFByZXBhcmVkSXRlbSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gcmVzO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInByZXBhcmVEZXRhaWxzX193cmFwcGVyXCIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBtYWluU3Bpbm5lclwiPlxuICA8c2VjdGlvbiBjbGFzcz1cInByZXBhcmVEZXRhaWxzXCIgKm5nSWY9XCJwcmVwYXJlZEl0ZW0gJiYgcHJlcGFyZVBoYXNlOyBlbHNlIG5vSXRlbVwiXG4gICAgW25nQ2xhc3NdPVwie211bHRpZmlsZTogcHJlcGFyZWRJdGVtLmNvbnRlbnRjb3VudCA+IDEsIGNvbW1pdHRpbmc6IGNvbW1pdHRpbmd9XCI+XG4gICAgPGRpdiBjbGFzcz1cImVvLWhlYWRcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj57e2hlYWRlci50aXRsZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc3ViLXRpdGxlIGgtbG9jYXRpb25cIiAqbmdJZj1cIiFoZWFkZXIubG9jYXRpb24ubGluazsgZWxzZSBsaW5rZWRcIj57e2hlYWRlci5sb2NhdGlvbi5sYWJlbH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXN1Yi10aXRsZSBoLXN1YnRpdGxlXCI+e3toZWFkZXIuc3VidGl0bGV9fTwvZGl2PlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlua2VkPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc3ViLXRpdGxlIGgtc3VidGl0bGUtZGV0YWlsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnByZWZpeDwvc3Bhbj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cImhlYWRlci5sb2NhdGlvbi5saW5rXCI+e3toZWFkZXIubG9jYXRpb24ubGFiZWx9fTwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ0biBidG4tZG93bmxvYWRcIlxuICAgICAgICAgICpuZ0lmPVwicHJlcGFyZVBoYXNlLm5hbWUgPT09ICdjb250ZW50JyA/IHNlbGVjdGVkVGVtcGxhdGVGaWxlIDogcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGVcIlxuICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiXG4gICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmFjdGlvbi5kb3dubG9hZC5kbXMub2JqZWN0LmNvbnRlbnQubGFiZWwnIHwgdHJhbnNsYXRlKVwiIChjbGljayk9XCJkb3dubG9hZCgpXCI+PC9lby1pY29uPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ0biBidG4tZGVsZXRlXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdHJhc2guc3ZnJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1wiPjwvZW8taWNvbj5cbiAgICAgICAgPCEtLSBidXR0b25zIHdoaWxlIGNob29zaW5nIGEgdGVtcGxhdGUgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaG9vc2VUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdHBsLWFib3J0XCIgKGNsaWNrKT1cInNob3dUZW1wbGF0ZVNlbGVjdG9yKGZhbHNlKVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS50ZW1wbGF0ZS5hYm9ydDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi10cGwtYXBwbHlcIiAoY2xpY2spPVwiYWRkVGVtcGxhdGUoc2VsZWN0ZWRUZW1wbGF0ZSlcIiBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkVGVtcGxhdGVcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUudGVtcGxhdGUuc2VsZWN0PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVwYXJlUGhhc2UubmFtZSA9PT0gJ2luZGV4ZGF0YSdcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZXNldE9iamVjdFR5cGUoKVwiIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnJlc2V0T2JqZWN0PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29tbWl0KClcIiBjbGFzcz1cImJ0bi1pZHgtc2F2ZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7cHJpbWFyeTogcHJlcGFyZWRJdGVtLnN0YXRlLnBhcmVudGlzcm9vdCAmJiBwcmVwYXJlZEl0ZW0uY29udGVudGNvdW50ID4gMX1cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1TdGF0ZT8uaW52YWxpZCB8fCBjb21taXR0aW5nXCIgdHJhbnNsYXRlPmVvLnByZXBhcmUuc2F2ZTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29tbWl0KHRydWUpXCIgW2Rpc2FibGVkXT1cImZvcm1TdGF0ZT8uaW52YWxpZCB8fCBjb21taXR0aW5nXCIgY2xhc3M9XCJwcmltYXJ5IGJ0bi1pZHgtc2F2ZW9wZW5cIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJwcmVwYXJlZEl0ZW0/LnN0YXRlLnBhcmVudGlzcm9vdCAmJiBwcmVwYXJlZEl0ZW0/LmNvbnRlbnRjb3VudCA+IDFcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUuc2F2ZW9wZW48L2J1dHRvbj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiIFtuZ1N3aXRjaF09XCJwcmVwYXJlUGhhc2UubmFtZVwiICpuZ0lmPVwiIWNvbW1pdHRpbmc7IGVsc2Ugc3Bpbm5lclwiPlxuXG4gICAgICA8IS0tIFBIQVNFIFRZUEUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicGhhc2UgdHlwZVwiICpuZ1N3aXRjaENhc2U9XCIndHlwZSdcIj5cblxuICAgICAgICA8IS0tIHdpdGggcHJldmlldyAtLT5cbiAgICAgICAgPHl2Yy1zcGxpdC12aWV3ICpuZ0lmPVwicHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGU7IGVsc2Ugbm9wcmV2aWV3XCJcbiAgICAgICAgICBbbGF5b3V0U2V0dGluZ3NJRF09XCIncHJlcGFyZS5kZXRhaWxzLnBoYXNlLnR5cGUnXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCIzMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmlsZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlLXNlbGVjdCBlbXB0eVwiICpuZ0lmPVwicHJlcGFyZWRJdGVtLnR5cGVzLmxlbmd0aCA9PSAwXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgIGVvLnByZXBhcmUuZGV0YWlscy50eXBlLmVtcHR5PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZS1zZWxlY3QgZW1wdHlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXByZXBhcmVkSXRlbS5zdGF0ZS50eXBlc2VsZWN0ZWRhbGxvd2VkICYmIHByZXBhcmVkSXRlbS5zdGF0ZS50eXBlc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie3R5cGU6IHByZXBhcmVkSXRlbS5zZWxlY3RlZHR5cGUubGFiZWwsIGZpbGVuYW1lOiBnZXRGaWxlTmFtZXMocHJlcGFyZWRJdGVtKX1cIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmRldGFpbHMudHlwZS5ub3RhbGxvd2VkPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHByZXBhcmVkSXRlbS50eXBlczsgdHJhY2tCeTogdHJhY2tCeUlkRm5cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9iamVjdFR5cGUodHlwZSlcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25JZF09XCJ0eXBlLmljb24uaWRcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7dHlwZS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7dHlwZS5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8aDIgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5jb250ZW50cy50aXRsZTwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcHJlcGFyZWRJdGVtLmNvbnRlbnRzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhGbjsgaW5kZXggYXMgaWR4O1wiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdJbmRleCA9PSBpZHh9XCIgKGNsaWNrKT1cInNldFByZXZpZXdVcmkoaWR4KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjb250ZW50LnBhdGh9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnRuIGJ0bi1kZWxldGUtY29udGVudFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSB0cnVlOyBkZWxldGVkQ29udGVudEluZGV4ID0gaWR4O1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50LmV4aXN0c2NvdW50ID4gMFwiIGNsYXNzPVwiYXR0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5wcmVwYXJlLmNvbnRlbnQuZXhpc3RzY291bnQubWVzc2FnZSd8dHJhbnNsYXRlOiAoe2NvdW50OiBjb250ZW50LmV4aXN0c2NvdW50fSl9fVwiPiFcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI3MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLW1lZGlhLXdyYXBcIj5cbiAgICAgICAgICAgICAgPGVvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbyBbY29udGVudF09XCJwcmVwYXJlZEl0ZW0uY29udGVudHNbcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4XVwiPlxuICAgICAgICAgICAgICA8L2VvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbz5cbiAgICAgICAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwicHNldWRvRG1zT2JqZWN0XCIgW3ByZXZpZXdGaWxlXT1cInByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlXCI+PC9lby1tZWRpYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG5cbiAgICAgICAgPCEtLSB3aXRob3V0IHByZXZpZXcgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9wcmV2aWV3PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpbGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHByZXBhcmVkSXRlbS50eXBlczsgdHJhY2tCeTogdHJhY2tCeUlkRm5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPYmplY3RUeXBlKHR5cGUpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25JZF09XCJ0eXBlLmljb24uaWRcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7dHlwZS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57e3R5cGUuZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQSEFTRSBDT05URU5UIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInBoYXNlIGNvbnRlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRlbnQnXCI+XG5cbiAgICAgICAgPCEtLSBwYW5lbCBmb3Igc2VsZWN0aW5nIGEgdGVtcGxhdGUgdG8gYmUgdXNlZCBhcyBpdGVtcyBjb250ZW50IC0tPlxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJjaG9vc2VUZW1wbGF0ZTsgZWxzZSBhdHRhY2hcIiBbbGF5b3V0U2V0dGluZ3NJRF09XCIncHJlcGFyZS5kZXRhaWxzLnBoYXNlLmNvbnRlbnQnXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0MFwiPlxuICAgICAgICAgICAgPCEtLSBsaXN0IG9mIGF2YWlsYWJsZSB0ZW1wbGF0ZXMgLS0+XG4gICAgICAgICAgICA8ZW8tbGlzdC1jb250YWluZXIgI2VvTGlzdCBbbG9hZGluZ109XCJmYWxzZVwiIGNsYXNzPVwidGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdGVtcGxhdGUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItdGl0bGVcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS50ZW1wbGF0ZS5saXN0LnRpdGxlPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxlby1vdmVybGF5ICNvRmlsdGVyIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ZpbHRlci5zdmcnXCIgW2ljb25DbGFzc109XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJsYXktZmlsdGVyXCIgW3RpdGxlXT1cIidlby5saXN0LmZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoYWN0aXZlKT1cIm9GaWx0ZXIub25BY3RpdmVDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGVvLWN1c3RvbS1maWx0ZXIgI2NGaWx0ZXIgKGNoYW5nZSk9XCJjRmlsdGVyLnVwZGF0ZUdyaWQoZW9MaXN0LmVvR3JpZFN1YmplY3QsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby10ZXh0LWZpbHRlciBbdGl0bGVdPVwiJ2VvLnByZXBhcmUudGVtcGxhdGUuZmlsdGVyLnRleHQudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRjaEZpZWxkc109XCJbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3RhZ3MnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2VvLnByZXBhcmUudGVtcGxhdGUuZmlsdGVyLnRleHQudGl0bGUnXCI+PC9lby10ZXh0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBbb3BlcmF0b3JdPVwiJ09SJ1wiIFt0aXRsZV09XCInZW8ucHJlcGFyZS50ZW1wbGF0ZS5maWx0ZXIuc2V0LnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhZ0ZpbHRlck9wdGlvbnM/Lmxlbmd0aFwiIFtvcHRpb25zXT1cInRhZ0ZpbHRlck9wdGlvbnNcIj48L2VvLXNldC1maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZW8tY3VzdG9tLWZpbHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvZW8tb3ZlcmxheT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8ZW8tZ3JpZCAjZW9HcmlkICpuZ0lmPVwiZ3JpZE9wdGlvbnM/LnJvd0RhdGFcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiIFtzaG93Rm9vdGVyXT1cImZhbHNlXCIgW3NlbGVjdGlvbkxpbWl0XT1cIjFcIlxuICAgICAgICAgICAgICAgICAgKGVvR3JpZFNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0VGVtcGxhdGUoJGV2ZW50WzBdKVwiPlxuICAgICAgICAgICAgICAgIDwvZW8tZ3JpZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2VvLWxpc3QtY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjYwXCI+XG4gICAgICAgICAgICA8IS0tIHByZXZpZXcgb2Ygc2VsZWN0ZWQgdGVtcGxhdGUgLS0+XG4gICAgICAgICAgICA8ZW8tbWVkaWEgW2Rtc09iamVjdF09XCJwc2V1ZG9EbXNPYmplY3RcIiBbcHJldmlld0ZpbGVdPVwic2VsZWN0ZWRUZW1wbGF0ZUZpbGVcIj48L2VvLW1lZGlhPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG5cbiAgICAgICAgPCEtLSBhZGQgY29udGVudCBnZW5lcmFsIG92ZXJ2aWV3ICh1cGxvYWQsIHRlbXBsYXRlLCBub25lKSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhdHRhY2g+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiICpuZ0lmPVwiIXVwbG9hZEluUHJvZ3Jlc3NcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LmluZm88L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSAoY2hhbmdlKT1cImZpbGVDaGFuZ2VMaXN0ZW5lcigkZXZlbnQudGFyZ2V0LmZpbGVzKVwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCIgKm5nSWY9XCIhdXBsb2FkSW5Qcm9ncmVzczsgZWxzZSB1cGxvYWRzcGlubmVyXCI+XG5cbiAgICAgICAgICAgIDwhLS0gdXBsb2FkIGEgZmlsZSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50IGF0dC1maWxlXCIgKm5nSWY9XCJwcmVwYXJlUGhhc2UuZGF0YS5maWxlXCIgKGNsaWNrKT1cInVwbG9hZCgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maWxlX3VwbG9hZC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQudXBsb2FkLnRpdGxlPC9oMz5cbiAgICAgICAgICAgICAgPHAgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC51cGxvYWQuZGVzYzwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIHNlbGVjdCBhIHRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQgYXR0LXRtcGxcIiAqbmdJZj1cInByZXBhcmVQaGFzZS5kYXRhLnRlbXBsYXRlcy5sZW5ndGggPiAwICYmIGhhc1RlbXBsYXRlQ2FwYWJpbGl0eSgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUZW1wbGF0ZVNlbGVjdG9yKHRydWUpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19wcmVwYXJlX2FkZC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQudGVtcGxhdGUudGl0bGU8L2gzPlxuICAgICAgICAgICAgICA8cCB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LnRlbXBsYXRlLmRlc2M8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBubyBmaWxlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQgYXR0LW5vbmVcIiAqbmdJZj1cInByZXBhcmVQaGFzZS5kYXRhLndpdGhvdXRGaWxlXCIgKGNsaWNrKT1cIm5vRmlsZSgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19uby1maWxlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC5ub2ZpbGUudGl0bGU8L2gzPlxuICAgICAgICAgICAgICA8cCB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50Lm5vZmlsZS5kZXNjPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gdXBsb2FkIHByb2dyZXNzIGluZGljYXRvciAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1cGxvYWRzcGlubmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidsYXJnZSdcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBIQVNFIElOREVYREFUQSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwaGFzZSBpbmRleGRhdGFcIiAqbmdTd2l0Y2hDYXNlPVwiJ2luZGV4ZGF0YSdcIj5cblxuICAgICAgICA8IS0tIGZvcm0gYW5kIHByZXZpZXcgLS0+XG4gICAgICAgIDx5dmMtc3BsaXQtdmlldyAqbmdJZj1cInByZXBhcmVkSXRlbS5jb250ZW50czsgZWxzZSBqdXN0Zm9ybVwiIFtsYXlvdXRTZXR0aW5nc0lEXT1cIidwcmVwYXJlLnN0YXRlJ1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpbGVzXCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBpbmRleGRhdGEgZm9ybSAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImp1c3Rmb3JtXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBsaXN0IG9mIGNvbnRlbnRzIChpbiBjYXNlIG9mIGJ1bGsgdXBsb2FkKSB0aGF0IGNhbiBiZSBwcmV2aWV3ZWQgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXNlbGVjdFwiPlxuXG4gICAgICAgICAgICAgICAgPGgyIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmRldGFpbHMuY29udGVudHMudGl0bGU8L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIHByZXBhcmVkSXRlbS5jb250ZW50czsgdHJhY2tCeTogdHJhY2tCeUluZGV4Rm47IGluZGV4IGFzIGlkeFwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdJbmRleCA9PT0gaWR4fVwiIChjbGljayk9XCJzZXRQcmV2aWV3VXJpKGlkeClcIj5cbiAgICAgICAgICAgICAgICAgIHt7Y29udGVudC5wYXRofX0gPHNwYW4gKm5nSWY9XCJjb250ZW50LmV4aXN0c2NvdW50ID4gMFwiIGNsYXNzPVwiYXR0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5wcmVwYXJlLmNvbnRlbnQuZXhpc3RzY291bnQubWVzc2FnZSd8dHJhbnNsYXRlOiAoe2NvdW50OiBjb250ZW50LmV4aXN0c2NvdW50fSl9fVwiPiE8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1tZWRpYS13cmFwXCI+XG4gICAgICAgICAgICAgIDxlby1wcmVwYXJlLWNvbnRlbnQtZXhpc3RzLWluZm8gW2NvbnRlbnRdPVwicHJlcGFyZWRJdGVtLmNvbnRlbnRzW3ByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdJbmRleF1cIj5cbiAgICAgICAgICAgICAgPC9lby1wcmVwYXJlLWNvbnRlbnQtZXhpc3RzLWluZm8+XG4gICAgICAgICAgICAgIDxlby1tZWRpYSBbZG1zT2JqZWN0XT1cInBzZXVkb0Rtc09iamVjdFwiIFtwcmV2aWV3RmlsZV09XCJwcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZVwiPjwvZW8tbWVkaWE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3l2Yy1zcGxpdC12aWV3PlxuXG4gICAgICAgIDwhLS0ganVzdCB0aGUgZm9ybSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNqdXN0Zm9ybT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgc2l0dWF0aW9uLWNyZWF0ZVwiICpuZ0lmPVwiZm9ybU9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxlby1vYmplY3QtZm9ybSAjZm9ybSBbZm9ybU9wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIiAoc3RhdHVzQ2hhbmdlZCk9XCJvbkZvcm1TdGF0dXNDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvZW8tb2JqZWN0LWZvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjc3Bpbm5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgPGVvLWxvYWRpbmctc3Bpbm5lciBzaXplPVwibWVkaXVtXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21haW5TcGlubmVyPlxuICA8ZGl2IGNsYXNzPVwicHJlcGFyZURldGFpbHNfX21haW4tc3Bpbm5lclwiPlxuICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cIm1lZGl1bVwiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxlby1lcnJvci1tZXNzYWdlIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ3ByZXBhcmUtZGVsZXRlX19kaWFsb2cnXCI+XG5cbiAgPGRpdj57eydlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIHByZXBhcmUtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNjb25maXJtRGVsZXRlIChjbGljayk9XCJyZW1vdmVJdGVtKHByZXBhcmVkSXRlbSlcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5vazwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuXG48ZW8tZGlhbG9nIFt0aXRsZV09XCInZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5jb250ZW50LmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dDb250ZW50RGVsZXRlRGlhbG9nXCJcbiAgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidwcmVwYXJlLWRlbGV0ZV9fZGlhbG9nJ1wiPlxuXG4gIDxkaXY+e3snZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5jb250ZW50LmRpYWxvZy5tZXNzYWdlJyB8IHRyYW5zbGF0ZTogKHtjb250ZW50UGF0aDogcHJlcGFyZWRJdGVtPy5jb250ZW50cyA/XG4gICAgcHJlcGFyZWRJdGVtPy5jb250ZW50c1tkZWxldGVkQ29udGVudEluZGV4XT8ucGF0aCA6ICcnfSl9fTwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBwcmVwYXJlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cuY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpcm1Db250ZW50RGVsZXRlIChjbGljayk9XCJyZW1vdmVJdGVtQ29udGVudChwcmVwYXJlZEl0ZW0sIGRlbGV0ZWRDb250ZW50SW5kZXgpXCJcbiAgICAgIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cub2s8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz5cbiJdfQ==
|
|
@@ -12,11 +12,11 @@ export class ProcessHistoryComponent {
|
|
|
12
12
|
return index;
|
|
13
13
|
}
|
|
14
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ProcessHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ProcessHistoryComponent, selector: "eo-process-history", inputs: { history: "history" }, ngImport: i0, template: "<div class=\"process-history\">\n\n <div class=\"filter\">\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\n\n </div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\n </div>\n\n\n <ng-template #empty>\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\n </ng-template>\n\n\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\n\n <div class=\"timeline-entry\"\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\n\n <div class=\"when\">\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\n </div>\n <div class=\"marker\">\n <img *ngIf=\"entry.editor\"\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\n [src]=\"entry.data?.image\">\n </div>\n <div class=\"what\">\n <div class=\"title\">{{entry.title}}</div>\n\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\n <div class=\"deadline-fire\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\n <span>{{entry.data.periodFireTime | localeDate}}</span>\n </div>\n </div>\n <ng-template #description>\n <div *ngIf=\"entry.type !== 'USERDEFINED'; else userDefined\" class=\"description\">\n {{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}\n </div>\n\n <ng-template #userDefined>\n <div class=\"description\">\n {{entry.description}}\n </div>\n </ng-template>\n </ng-template>\n\n <div class=\"performer\" *ngIf=\"entry.editor\">\n <span *ngIf=\"entry.editor.lastname\">{{entry.editor.lastname}}, </span>\n <span *ngIf=\"entry.editor.firstname\">{{entry.editor.firstname}}</span>\n ({{entry.editor.name}})\n </div>\n\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\n {{p.label}}\n </span>\n </div>\n </div>\n\n </div>\n </div>\n</div>\n", styles: [":host .process-history{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;flex:0 0 auto;justify-content:space-between;background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background)}:host .filter .input{display:flex;flex-flow:row nowrap;background-color:var(--color-white);border:1px solid var(--main-background);margin:calc(var(--app-pane-padding) / 2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{align-self:center;width:16px;height:16px;color:var(--text-color-hint);margin:0 calc(var(--app-pane-padding) / 4)}:host .filter>eo-icon{padding:calc(var(--app-pane-padding) / 2);flex:0 0 auto;width:16px;height:16px;box-sizing:content-box;color:var(--text-color-hint);align-self:center;cursor:pointer}:host .timeline-entry.user img{width:30px;height:30px;border:2px solid var(--text-color-hint);z-index:1;border-radius:50%}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ProcessHistoryComponent, selector: "eo-process-history", inputs: { history: "history" }, ngImport: i0, template: "<div class=\"process-history\">\n\n <div class=\"filter\">\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\n\n </div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\n </div>\n\n\n <ng-template #empty>\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\n </ng-template>\n\n\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\n\n <div class=\"timeline-entry\"\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\n\n <div class=\"when\">\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\n </div>\n <div class=\"marker\">\n <img *ngIf=\"entry.editor\"\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\n [src]=\"entry.data?.image\">\n </div>\n <div class=\"what\">\n <div class=\"title\">{{entry.title}}</div>\n\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\n <div class=\"deadline-fire\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\n <span>{{entry.data.periodFireTime | localeDate}}</span>\n </div>\n </div>\n <ng-template #description>\n <div *ngIf=\"entry.type !== 'USERDEFINED'; else userDefined\" class=\"description\">\n {{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}\n </div>\n\n <ng-template #userDefined>\n <div class=\"description\">\n {{entry.description}}\n </div>\n </ng-template>\n </ng-template>\n\n <div class=\"performer\" *ngIf=\"entry.editor\">\n <span *ngIf=\"entry.editor.lastname\">{{entry.editor.lastname}}, </span>\n <span *ngIf=\"entry.editor.firstname\">{{entry.editor.firstname}}</span>\n ({{entry.editor.name}})\n </div>\n\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\n {{p.label}}\n </span>\n </div>\n </div>\n\n </div>\n </div>\n</div>\n", styles: [":host .process-history{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;flex:0 0 auto;justify-content:space-between;background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background)}:host .filter .input{display:flex;flex-flow:row nowrap;background-color:var(--color-white);border:1px solid var(--main-background);margin:calc(var(--app-pane-padding) / 2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{align-self:center;width:16px;height:16px;color:var(--text-color-hint);margin:0 calc(var(--app-pane-padding) / 4)}:host .filter>eo-icon{padding:calc(var(--app-pane-padding) / 2);flex:0 0 auto;width:16px;height:16px;box-sizing:content-box;color:var(--text-color-hint);align-self:center;cursor:pointer}:host .timeline-entry.user img{width:30px;height:30px;border:2px solid var(--text-color-hint);z-index:1;border-radius:50%}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66%;overflow:hidden}:host .timeline-entry .what .deadline-fire{display:flex;align-items:center;padding-bottom:4px}:host .timeline-entry .what .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .timeline-entry .what .description{color:var(--text-color-body)}.deadline-fire :host .timeline-entry .what .description{display:flex;flex-flow:row nowrap;align-items:center}.deadline-fire :host .timeline-entry .what .description eo-icon{color:var(--text-color-hint);width:18px;height:18px}.deadline-fire :host .timeline-entry .what .description span{padding:0 calc(var(--app-pane-padding) / 4)}:host .timeline-entry .what .performer{color:var(--text-color-body);font-size:var(--font-hint);margin-bottom:calc(var(--app-pane-padding) / 4)}:host .timeline-entry .what .meta{display:flex;flex-flow:row wrap;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .timeline-entry .what .meta span{display:block;border-radius:2px;padding:2px 4px;font-size:var(--font-caption);background-color:rgba(var(--color-black-rgb),.08);margin:0 calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 4) 0}:host .timeline-entry.error .what .title{color:var(--color-error)}:host .timeline-entry.error .marker:before{border-color:var(--color-error);content:\"!\";display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-error);border-width:4px;font-weight:var(--font-weight-bold)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i3.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i6.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i7.HistoryFilterPipe, name: "historyFilter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16
16
|
}
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ProcessHistoryComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
|
-
args: [{ selector: 'eo-process-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"process-history\">\n\n <div class=\"filter\">\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\n\n </div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\n </div>\n\n\n <ng-template #empty>\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\n </ng-template>\n\n\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\n\n <div class=\"timeline-entry\"\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\n\n <div class=\"when\">\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\n </div>\n <div class=\"marker\">\n <img *ngIf=\"entry.editor\"\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\n [src]=\"entry.data?.image\">\n </div>\n <div class=\"what\">\n <div class=\"title\">{{entry.title}}</div>\n\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\n <div class=\"deadline-fire\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\n <span>{{entry.data.periodFireTime | localeDate}}</span>\n </div>\n </div>\n <ng-template #description>\n <div *ngIf=\"entry.type !== 'USERDEFINED'; else userDefined\" class=\"description\">\n {{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}\n </div>\n\n <ng-template #userDefined>\n <div class=\"description\">\n {{entry.description}}\n </div>\n </ng-template>\n </ng-template>\n\n <div class=\"performer\" *ngIf=\"entry.editor\">\n <span *ngIf=\"entry.editor.lastname\">{{entry.editor.lastname}}, </span>\n <span *ngIf=\"entry.editor.firstname\">{{entry.editor.firstname}}</span>\n ({{entry.editor.name}})\n </div>\n\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\n {{p.label}}\n </span>\n </div>\n </div>\n\n </div>\n </div>\n</div>\n", styles: [":host .process-history{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;flex:0 0 auto;justify-content:space-between;background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background)}:host .filter .input{display:flex;flex-flow:row nowrap;background-color:var(--color-white);border:1px solid var(--main-background);margin:calc(var(--app-pane-padding) / 2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{align-self:center;width:16px;height:16px;color:var(--text-color-hint);margin:0 calc(var(--app-pane-padding) / 4)}:host .filter>eo-icon{padding:calc(var(--app-pane-padding) / 2);flex:0 0 auto;width:16px;height:16px;box-sizing:content-box;color:var(--text-color-hint);align-self:center;cursor:pointer}:host .timeline-entry.user img{width:30px;height:30px;border:2px solid var(--text-color-hint);z-index:1;border-radius:50%}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66
|
|
19
|
+
args: [{ selector: 'eo-process-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"process-history\">\n\n <div class=\"filter\">\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\n\n </div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\n </div>\n\n\n <ng-template #empty>\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\n </ng-template>\n\n\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\n\n <div class=\"timeline-entry\"\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\n\n <div class=\"when\">\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\n </div>\n <div class=\"marker\">\n <img *ngIf=\"entry.editor\"\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\n [src]=\"entry.data?.image\">\n </div>\n <div class=\"what\">\n <div class=\"title\">{{entry.title}}</div>\n\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\n <div class=\"deadline-fire\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\n <span>{{entry.data.periodFireTime | localeDate}}</span>\n </div>\n </div>\n <ng-template #description>\n <div *ngIf=\"entry.type !== 'USERDEFINED'; else userDefined\" class=\"description\">\n {{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}\n </div>\n\n <ng-template #userDefined>\n <div class=\"description\">\n {{entry.description}}\n </div>\n </ng-template>\n </ng-template>\n\n <div class=\"performer\" *ngIf=\"entry.editor\">\n <span *ngIf=\"entry.editor.lastname\">{{entry.editor.lastname}}, </span>\n <span *ngIf=\"entry.editor.firstname\">{{entry.editor.firstname}}</span>\n ({{entry.editor.name}})\n </div>\n\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\n {{p.label}}\n </span>\n </div>\n </div>\n\n </div>\n </div>\n</div>\n", styles: [":host .process-history{height:100%;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;flex:0 0 auto;justify-content:space-between;background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background)}:host .filter .input{display:flex;flex-flow:row nowrap;background-color:var(--color-white);border:1px solid var(--main-background);margin:calc(var(--app-pane-padding) / 2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{align-self:center;width:16px;height:16px;color:var(--text-color-hint);margin:0 calc(var(--app-pane-padding) / 4)}:host .filter>eo-icon{padding:calc(var(--app-pane-padding) / 2);flex:0 0 auto;width:16px;height:16px;box-sizing:content-box;color:var(--text-color-hint);align-self:center;cursor:pointer}:host .timeline-entry.user img{width:30px;height:30px;border:2px solid var(--text-color-hint);z-index:1;border-radius:50%}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66%;overflow:hidden}:host .timeline-entry .what .deadline-fire{display:flex;align-items:center;padding-bottom:4px}:host .timeline-entry .what .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .timeline-entry .what .description{color:var(--text-color-body)}.deadline-fire :host .timeline-entry .what .description{display:flex;flex-flow:row nowrap;align-items:center}.deadline-fire :host .timeline-entry .what .description eo-icon{color:var(--text-color-hint);width:18px;height:18px}.deadline-fire :host .timeline-entry .what .description span{padding:0 calc(var(--app-pane-padding) / 4)}:host .timeline-entry .what .performer{color:var(--text-color-body);font-size:var(--font-hint);margin-bottom:calc(var(--app-pane-padding) / 4)}:host .timeline-entry .what .meta{display:flex;flex-flow:row wrap;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .timeline-entry .what .meta span{display:block;border-radius:2px;padding:2px 4px;font-size:var(--font-caption);background-color:rgba(var(--color-black-rgb),.08);margin:0 calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 4) 0}:host .timeline-entry.error .what .title{color:var(--color-error)}:host .timeline-entry.error .marker:before{border-color:var(--color-error);content:\"!\";display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-error);border-width:4px;font-weight:var(--font-weight-bold)}\n"] }]
|
|
20
20
|
}], propDecorators: { history: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}] } });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { switchMap, tap, debounceTime } from 'rxjs/operators';
|
|
2
2
|
import { Component, HostListener, HostBinding, Output, EventEmitter, Input } from '@angular/core';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
-
import
|
|
4
|
+
import { groupBy } from 'lodash-es';
|
|
5
5
|
import { SearchQuery, SearchState, Utils } from '@eo-sdk/core';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@eo-sdk/core";
|
|
@@ -77,7 +77,7 @@ export class QuickSearchComponent {
|
|
|
77
77
|
}
|
|
78
78
|
});
|
|
79
79
|
// group by object type group
|
|
80
|
-
this.resultGroups =
|
|
80
|
+
this.resultGroups = groupBy(aggTypes.sort(Utils.sortValues('label')), function (t) {
|
|
81
81
|
return t.group;
|
|
82
82
|
});
|
|
83
83
|
this.resultTypes = [];
|
|
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
217
217
|
type: HostListener,
|
|
218
218
|
args: ['keydown', ['$event']]
|
|
219
219
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3F1aWNrLXNlYXJjaC9xdWljay1zZWFyY2gvcXVpY2stc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3F1aWNrLXNlYXJjaC9xdWljay1zZWFyY2gvcXVpY2stc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQTZCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHdEksT0FBTyxFQUFDLFVBQVUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBa0UsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBRzdIOzs7Ozs7OztHQVFHO0FBT0gsTUFBTSxPQUFPLG9CQUFvQjtJQThCL0IscUNBQXFDO0lBRXJDLFlBQW9CLGFBQTRCLEVBQ3RDLE1BQWMsRUFDZCxVQUFzQixFQUN0QixPQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsRUFBc0I7UUFOWixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIs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RU8sVUFBVTtRQUNoQixxQkFBcUI7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzhHQTdNVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrU0N6QmpDLDg3REFzQ0E7OzJGRGJhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7K1BBdUJHLGdCQUFnQjtzQkFBN0MsV0FBVzt1QkFBQyxlQUFlO2dCQUtuQixXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkF1R1AsS0FBSztzQkFESixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE0QmpDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N3aXRjaE1hcCwgdGFwLCBkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29tcG9uZW50LCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEhvc3RCaW5kaW5nLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkV4dHJhc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1F1aWNrU2VhcmNoUmVzdWx0fSBmcm9tICcuL3F1aWNrLXNlYXJjaC1yZXN1bHQuaW50ZXJmYWNlJztcbmltcG9ydCB7U2VhcmNoUXVlcnksIFNlYXJjaFN0YXRlLCBTZWFyY2hTZXJ2aWNlLCBTeXN0ZW1TZXJ2aWNlLCBPYmplY3RUeXBlLCBOb3RpZmljYXRpb25zU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuXG4vKipcbiAqIFF1aWNrU2VhcmNoQ29tcG9uZW50IGRpc3BsYXlzIGEgc2VhcmNoIGJveCB0aGF0IHRoZSB1c2VyIGNhbiB0eXBlIGhpcyBxdWVyeSB0by5cbiAqIEl0IHJldHVybnMgYSBsaXN0IG9mIG1hdGNoaW5nIG9iamVjdCB0eXBlcyBncm91cGVkIGJ5IHRoZWlyIG9iamVjdCB0eXBlIGdyb3VwIGFuZCB0aGVcbiAqIG51bWJlciBvZiBoaXRzIGZvciBlYWNoIHR5cGUuIEZ1cnRoZXJtb3JlIGl0J2xsIHByb3ZpZGUgeW91IHdpdGggdGhlIHRvdGFsIG51bWJlciBvZlxuICogaGl0cyBtYXRjaGluZyB0aGUgdXNlcnMgcXVlcnkuXG4gKlxuICogU2V0dGluZyB0aGUgY29tcG9uZW50cyBgc2hvd1Jlc3VsdHNgIGZsYWcgdG8gdHJ1ZSwgd2lsbCBtYWtlIHRoZSBjb21wb25lbnQgcmVuZGVyIHRoZVxuICogcmVzdWx0cyBvbiBpdHMgb3duLiBJZiB5b3UgZG8gd2FudCB0byBwcm9jZXNzIHJlc3VsdHMgYnkgeW91cnNlbGYgdXNlIHRoZSBgb25SZXN1bHRgIGNhbGxiYWNrLlxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXF1aWNrLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWljay1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWljay1zZWFyY2guY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWlja1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBxdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBxdWVyeVN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gIGF1dG9jb21wbGV0ZVJlc3VsdHM6IHN0cmluZ1tdO1xuICBxdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xuICBsYXN0VGVybSA9ICcnO1xuICByZXN1bHRHcm91cHM7XG4gIHJlc3VsdFR5cGVzID0gW107XG4gIGN0cmxDbGlja2VkOiBib29sZWFuO1xuICBzZWxlY3RlZCA9IHtcbiAgICBpbmRleDogLTEsXG4gICAgbmFtZTogbnVsbFxuICB9O1xuXG4gIHNlYXJjaEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGludmFsaWRUZXJtOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVzdWx0cycpIHJlc3VsdHNBdmFpbGFibGU7XG5cbiAgLy8gZmxhZyB3aGV0aGVyIG9yIG5vdCB0byByZW5kZXIgcmVzdWx0cyBieSB0aGUgY29tcG9uZW50IGl0c2VsZlxuICAvLyBieSBkZWZhdWx0IHRoaXMgZmxhcyBpcyBmYWxzZSBhbmQgdGhlIHJlc3VsdCB3aWxsIG9ubHkgYmUgZW1pdHRlZCBieVxuICAvLyB0aGUgY29tcG9uZW50cyBvblJlc3VsdCBjYWxsYmFja1xuICBASW5wdXQoKSBzaG93UmVzdWx0czogYm9vbGVhbjtcbiAgLy8gdHJpZ2dlcmVkIGVhY2ggdGltZSBhIHJlc3VsdCBpcyBmZXRjaGVkXG4gIEBPdXRwdXQoKSBvblJlc3VsdDogRXZlbnRFbWl0dGVyPFF1aWNrU2VhcmNoUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHJpZ2dlcmVkIHdoZW4gdGhlIHNlYXJjaCB0ZXJtIGhhcyBiZWVuIGNoYW5nZWRcbiAgQE91dHB1dCgpIG9uSW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIHByaXZhdGUgb2JqZWN0VHlwZXM6IE9iamVjdFR5cGVbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuXG5cbiAgICB0aGlzLnNlYXJjaEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtzZWFyY2hJbnB1dDogWycnXX0pO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JtXG4gICAgICAuZ2V0KCdzZWFyY2hJbnB1dCcpLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodGVybSkgPT4ge1xuICAgICAgICAgIHRoaXMub25JbnB1dENoYW5nZS5lbWl0KHRlcm0pO1xuICAgICAgICAgIHRoaXMucXVlcnkudGVybSA9IHRlcm07XG4gICAgICAgICAgdGhpcy5yZXN1bHRHcm91cHMgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3VsdFR5cGVzID0gW107XG4gICAgICAgICAgdGhpcy5yZXN1bHRzQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5xdWVyeVN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTUwMCksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XG5cbiAgICAgICAgaWYgKHRoaXMucXVlcnkudGVybSkge1xuICAgICAgICAgIHRoaXMucXVlcnlTdGF0ZSA9IHF1ZXJ5U3RhdGU7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzQXZhaWxhYmxlID0gIXF1ZXJ5U3RhdGUuaXNFbXB0eTtcblxuICAgICAgICAgIC8vIG1hcCBhZ2dyZWdhdGlvbnMgdG8gcmVhbCB0eXBlc1xuICAgICAgICAgIGxldCBhZ2dUeXBlcyA9IFtdO1xuICAgICAgICAgIHF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLnR5cGUuZm9yRWFjaCgodiwgaykgPT4ge1xuXG4gICAgICAgICAgICBsZXQgdHlwZTogT2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGspO1xuICAgICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgICAgYWdnVHlwZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHR5cGUubGFiZWwgfHwgayxcbiAgICAgICAgICAgICAgICBjb3VudDogdixcbiAgICAgICAgICAgICAgICBncm91cDogdHlwZS5ncm91cCB8fCAnMCcsXG4gICAgICAgICAgICAgICAgZGF0YTogdHlwZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBncm91cCBieSBvYmplY3QgdHlwZSBncm91cFxuICAgICAgICAgIHRoaXMucmVzdWx0R3JvdXBzID0gXy5ncm91cEJ5KGFnZ1R5cGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSksIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdC5ncm91cDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnJlc3VsdFR5cGVzID0gW107XG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXN1bHRHcm91cHMpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0VHlwZXMgPSB0aGlzLnJlc3VsdFR5cGVzLmNvbmNhdCh0aGlzLnJlc3VsdEdyb3Vwc1trXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5vblJlc3VsdC5lbWl0KHtcbiAgICAgICAgICAgIHRvdGFsOiB0aGlzLnF1ZXJ5U3RhdGUudG90YWxDb3VudCxcbiAgICAgICAgICAgIGdyb3VwczogdGhpcy5yZXN1bHRHcm91cHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9uUmVzdWx0LmVtaXQoe1xuICAgICAgICAgICAgdG90YWw6IC0xLFxuICAgICAgICAgICAgZ3JvdXBzOiBbXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24gPSBhcHBTZWFyY2hTZXJ2aWNlLnF1ZXJ5JC5zdWJzY3JpYmUoKHF1ZXJ5OiBTZWFyY2hRdWVyeSkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5LnRlcm0pIHtcbiAgICAgICAgdGhpcy5sYXN0VGVybSA9IHF1ZXJ5LnRlcm07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRUZXJtKHRlcm0/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdzZWFyY2hJbnB1dCcpLnBhdGNoVmFsdWUodGVybSB8fCAnJyk7XG4gICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIGFnZ3JlZ2F0ZSgpOiBPYnNlcnZhYmxlPFNlYXJjaFN0YXRlPiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XG4gICAgICB0aGlzLmludmFsaWRUZXJtID0gZmFsc2U7XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmdldFNlYXJjaFN0YXRlKHthZ2dzOiB7dHlwZToge319LCAuLi50aGlzLnF1ZXJ5LmdldFF1ZXJ5SnNvbigpfSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIG8ubmV4dChyZXMpO1xuICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgfSwgVXRpbHMudGhyb3coXyA9PiB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkVGVybSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgby5uZXh0KG5ldyBTZWFyY2hTdGF0ZSgpKTtcbiAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25LZXkoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5zaG93UmVzdWx0cykge1xuICAgICAgaWYgKGV2ZW50LndoaWNoID09PSAzOCkge1xuICAgICAgICAvLyB1cFxuICAgICAgICB0aGlzLnNlbGVjdGVkLmluZGV4LS07XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmluZGV4IDwgMCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuaW5kZXggPSB0aGlzLnJlc3VsdFR5cGVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZC5uYW1lID0gdGhpcy5yZXN1bHRUeXBlc1t0aGlzLnNlbGVjdGVkLmluZGV4XS5kYXRhLm5hbWU7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LndoaWNoID09PSA0MCkge1xuICAgICAgICAvLyBkb3duXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuaW5kZXgrKztcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQuaW5kZXggPj0gdGhpcy5yZXN1bHRUeXBlcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkLm5hbWUgPSB0aGlzLnJlc3VsdFR5cGVzW3RoaXMuc2VsZWN0ZWQuaW5kZXhdLmRhdGEubmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHJlc2V0IHNlbGVjdGlvbiBvbiBhbnkgb3RoZXIga2V5XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgaW5kZXg6IC0xLFxuICAgICAgICAgIG5hbWU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50KSB7XG4gICAgdGhpcy5jdHJsQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudC53aGljaCA9PT0gMTcpIHtcbiAgICAgIHRoaXMuY3RybENsaWNrZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlU2VhcmNoKG9iamVjdFR5cGU/OiBPYmplY3RUeXBlKSB7XG5cbiAgICBpZiAoIXRoaXMuaW52YWxpZFRlcm0pIHtcbiAgICAgIGlmIChvYmplY3RUeXBlKSB7XG4gICAgICAgIHRoaXMucXVlcnkudHlwZXMgPSBbb2JqZWN0VHlwZV07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWQuaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMucXVlcnkudHlwZXMgPSBbdGhpcy5yZXN1bHRUeXBlc1t0aGlzLnNlbGVjdGVkLmluZGV4XS5kYXRhXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucXVlcnkudHlwZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKSkpO1xuICAgICAgY29uc3QgdXJpUGFyYW1RdWVyeTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeydxdWVyeSc6IHVyaVBhcmFtfX07XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmN0cmxDbGlja2VkKTtcbiAgICAgIGlmICh0aGlzLmN0cmxDbGlja2VkKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmlQYXJhbVF1ZXJ5LnF1ZXJ5UGFyYW1zKS50b1N0cmluZygpXG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcvZGFzaGJvYXJkJylbMF0gKyAnL3Jlc3VsdD8nKyBxdWVyeVBhcmFtcztcbiAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gICAgICAgIHRoaXMuY3RybENsaWNrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9yZXN1bHQnXSwgdXJpUGFyYW1RdWVyeSk7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzSW5wdXQoKSB7XG4gICAgLy8gZm9jdXMgc2VhcmNoIGlucHV0XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmZvY3VzKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInF1aWNrLXNlYXJjaFwiIGVvUnRsQXdhcmU+XG5cbiAgPGZvcm0gY2xhc3M9XCJzZWFyY2gtYm94XCIgKG5nU3VibWl0KT1cImV4ZWN1dGVTZWFyY2goKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBpbnZhbGlkVGVybX1cIlxuICAgICAgICBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIj5cblxuICAgIDxlby1pY29uIChjbGljayk9XCJleGVjdXRlU2VhcmNoKClcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zZWFyY2guc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXRcIj5cbiAgICAgIDxsYWJlbD57eydlby5xdWlja3NlYXJjaC5sYWJlbCcgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICA8aW5wdXQgYXV0b2ZvY3VzPVwiYXV0b2ZvY3VzXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoSW5wdXRcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZW8tbG9hZGluZy1zcGlubmVyICpuZ0lmPVwibG9hZGluZ1wiIFtzaXplXT1cIidzbWFsbCdcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICA8ZW8taWNvbiBjbGFzcz1cInNtYWxsXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5zZWFyY2guY2xlYXIuc2VhcmNoJyB8IHRyYW5zbGF0ZSlcIlxuICAgICpuZ0lmPVwicXVlcnkudGVybVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6IHF1ZXJ5LnRlcm19XCIgKGNsaWNrKT1cInNldFRlcm0oKVwiPjwvZW8taWNvbj5cbiAgICA8ZW8taWNvbiBjbGFzcz1cInNtYWxsXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLnNlYXJjaC5yZXN1bHQudGVybScgfCB0cmFuc2xhdGUpICsgJyA6ICZxdW90OycgKyBsYXN0VGVybSArICcmcXVvdDsnXCJcbiAgICAqbmdJZj1cImxhc3RUZXJtICYmICFxdWVyeS50ZXJtXCIgKGNsaWNrKT1cInNldFRlcm0obGFzdFRlcm0pXCI+PC9lby1pY29uPlxuXG4gICAgPGRpdiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJzaG93UmVzdWx0cyAmJiAhcXVlcnlTdGF0ZS5pc0VtcHR5XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNvdW50LXRvdGFsXCI+e3txdWVyeVN0YXRlLnRvdGFsQ291bnQgfCBsb2NhbGVEZWNpbWFsfX08L3NwYW4+PHNwYW4gdHJhbnNsYXRlPmVvLnF1aWNrc2VhcmNoLmhpdHM8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cblxuICA8ZGl2IGNsYXNzPVwicmVzdWx0XCIgKm5nSWY9XCJzaG93UmVzdWx0cyAmJiAhcXVlcnlTdGF0ZS5pc0VtcHR5XCI+XG4gICAgPGRpdiBjbGFzcz1cInJcIj48ZGl2IGNsYXNzPVwicmlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cFwiICpuZ0Zvcj1cImxldCBrZXkgb2YgcmVzdWx0R3JvdXBzIHwga2V5czsgaW5kZXggYXMgaVwiPlxuICAgICAgICA8aDIgKm5nSWY9XCJrZXkgIT09ICcwJzsgZWxzZSBtYWluZ3JvdXBcIj57e2tleX19PC9oMj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNtYWluZ3JvdXA+XG4gICAgICAgICAgPGgyIHRyYW5zbGF0ZT5lby5xdWlja3NlYXJjaC5yZXN1bHQuZ3JvdXAuZ2xvYmFsPC9oMj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHJlc3VsdEdyb3Vwc1trZXldXCIgKGNsaWNrKT1cImV4ZWN1dGVTZWFyY2godHlwZS5kYXRhKVwiIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogc2VsZWN0ZWQubmFtZSA9PT0gdHlwZS5kYXRhLm5hbWV9XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudFwiPnt7dHlwZS5jb3VudH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57e3R5cGUubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3F1aWNrLXNlYXJjaC9xdWljay1zZWFyY2gvcXVpY2stc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3F1aWNrLXNlYXJjaC9xdWljay1zZWFyY2gvcXVpY2stc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQTZCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHdEksT0FBTyxFQUFDLFVBQVUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFrRSxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHN0g7Ozs7Ozs7O0dBUUc7QUFPSCxNQUFNLE9BQU8sb0JBQW9CO0lBOEIvQixxQ0FBcUM7SUFFckMsWUFBb0IsYUFBNEIsRUFDdEMsTUFBYyxFQUNkLFVBQXNCLEVBQ3RCLE9BQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixFQUFzQjtRQU5aLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEs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QVU7UUFDaEIscUJBQXFCO1FBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0QsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQzs4R0E3TVUsb0JBQW9CO2tHQUFwQixvQkFBb0IsK1NDekJqQyw4N0RBc0NBOzsyRkRiYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOytQQXVCRyxnQkFBZ0I7c0JBQTdDLFdBQVc7dUJBQUMsZUFBZTtnQkFLbkIsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBdUdQLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNEJqQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzd2l0Y2hNYXAsIHRhcCwgZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBIb3N0QmluZGluZywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXIsIE5hdmlnYXRpb25FeHRyYXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1VudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQnVpbGRlcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1F1aWNrU2VhcmNoUmVzdWx0fSBmcm9tICcuL3F1aWNrLXNlYXJjaC1yZXN1bHQuaW50ZXJmYWNlJztcbmltcG9ydCB7U2VhcmNoUXVlcnksIFNlYXJjaFN0YXRlLCBTZWFyY2hTZXJ2aWNlLCBTeXN0ZW1TZXJ2aWNlLCBPYmplY3RUeXBlLCBOb3RpZmljYXRpb25zU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuXG4vKipcbiAqIFF1aWNrU2VhcmNoQ29tcG9uZW50IGRpc3BsYXlzIGEgc2VhcmNoIGJveCB0aGF0IHRoZSB1c2VyIGNhbiB0eXBlIGhpcyBxdWVyeSB0by5cbiAqIEl0IHJldHVybnMgYSBsaXN0IG9mIG1hdGNoaW5nIG9iamVjdCB0eXBlcyBncm91cGVkIGJ5IHRoZWlyIG9iamVjdCB0eXBlIGdyb3VwIGFuZCB0aGVcbiAqIG51bWJlciBvZiBoaXRzIGZvciBlYWNoIHR5cGUuIEZ1cnRoZXJtb3JlIGl0J2xsIHByb3ZpZGUgeW91IHdpdGggdGhlIHRvdGFsIG51bWJlciBvZlxuICogaGl0cyBtYXRjaGluZyB0aGUgdXNlcnMgcXVlcnkuXG4gKlxuICogU2V0dGluZyB0aGUgY29tcG9uZW50cyBgc2hvd1Jlc3VsdHNgIGZsYWcgdG8gdHJ1ZSwgd2lsbCBtYWtlIHRoZSBjb21wb25lbnQgcmVuZGVyIHRoZVxuICogcmVzdWx0cyBvbiBpdHMgb3duLiBJZiB5b3UgZG8gd2FudCB0byBwcm9jZXNzIHJlc3VsdHMgYnkgeW91cnNlbGYgdXNlIHRoZSBgb25SZXN1bHRgIGNhbGxiYWNrLlxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXF1aWNrLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWljay1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWljay1zZWFyY2guY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWlja1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBxdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBxdWVyeVN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gIGF1dG9jb21wbGV0ZVJlc3VsdHM6IHN0cmluZ1tdO1xuICBxdWVyeSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xuICBsYXN0VGVybSA9ICcnO1xuICByZXN1bHRHcm91cHM7XG4gIHJlc3VsdFR5cGVzID0gW107XG4gIGN0cmxDbGlja2VkOiBib29sZWFuO1xuICBzZWxlY3RlZCA9IHtcbiAgICBpbmRleDogLTEsXG4gICAgbmFtZTogbnVsbFxuICB9O1xuXG4gIHNlYXJjaEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGludmFsaWRUZXJtOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVzdWx0cycpIHJlc3VsdHNBdmFpbGFibGU7XG5cbiAgLy8gZmxhZyB3aGV0aGVyIG9yIG5vdCB0byByZW5kZXIgcmVzdWx0cyBieSB0aGUgY29tcG9uZW50IGl0c2VsZlxuICAvLyBieSBkZWZhdWx0IHRoaXMgZmxhcyBpcyBmYWxzZSBhbmQgdGhlIHJlc3VsdCB3aWxsIG9ubHkgYmUgZW1pdHRlZCBieVxuICAvLyB0aGUgY29tcG9uZW50cyBvblJlc3VsdCBjYWxsYmFja1xuICBASW5wdXQoKSBzaG93UmVzdWx0czogYm9vbGVhbjtcbiAgLy8gdHJpZ2dlcmVkIGVhY2ggdGltZSBhIHJlc3VsdCBpcyBmZXRjaGVkXG4gIEBPdXRwdXQoKSBvblJlc3VsdDogRXZlbnRFbWl0dGVyPFF1aWNrU2VhcmNoUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHJpZ2dlcmVkIHdoZW4gdGhlIHNlYXJjaCB0ZXJtIGhhcyBiZWVuIGNoYW5nZWRcbiAgQE91dHB1dCgpIG9uSW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIHByaXZhdGUgb2JqZWN0VHlwZXM6IE9iamVjdFR5cGVbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuXG5cbiAgICB0aGlzLnNlYXJjaEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtzZWFyY2hJbnB1dDogWycnXX0pO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JtXG4gICAgICAuZ2V0KCdzZWFyY2hJbnB1dCcpLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodGVybSkgPT4ge1xuICAgICAgICAgIHRoaXMub25JbnB1dENoYW5nZS5lbWl0KHRlcm0pO1xuICAgICAgICAgIHRoaXMucXVlcnkudGVybSA9IHRlcm07XG4gICAgICAgICAgdGhpcy5yZXN1bHRHcm91cHMgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3VsdFR5cGVzID0gW107XG4gICAgICAgICAgdGhpcy5yZXN1bHRzQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5xdWVyeVN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTUwMCksXG4gICAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5hZ2dyZWdhdGUoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XG5cbiAgICAgICAgaWYgKHRoaXMucXVlcnkudGVybSkge1xuICAgICAgICAgIHRoaXMucXVlcnlTdGF0ZSA9IHF1ZXJ5U3RhdGU7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzQXZhaWxhYmxlID0gIXF1ZXJ5U3RhdGUuaXNFbXB0eTtcblxuICAgICAgICAgIC8vIG1hcCBhZ2dyZWdhdGlvbnMgdG8gcmVhbCB0eXBlc1xuICAgICAgICAgIGxldCBhZ2dUeXBlcyA9IFtdO1xuICAgICAgICAgIHF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLnR5cGUuZm9yRWFjaCgodiwgaykgPT4ge1xuXG4gICAgICAgICAgICBsZXQgdHlwZTogT2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGspO1xuICAgICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgICAgYWdnVHlwZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHR5cGUubGFiZWwgfHwgayxcbiAgICAgICAgICAgICAgICBjb3VudDogdixcbiAgICAgICAgICAgICAgICBncm91cDogdHlwZS5ncm91cCB8fCAnMCcsXG4gICAgICAgICAgICAgICAgZGF0YTogdHlwZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBncm91cCBieSBvYmplY3QgdHlwZSBncm91cFxuICAgICAgICAgIHRoaXMucmVzdWx0R3JvdXBzID0gZ3JvdXBCeShhZ2dUeXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgcmV0dXJuIHQuZ3JvdXA7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5yZXN1bHRUeXBlcyA9IFtdO1xuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzdWx0R3JvdXBzKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdFR5cGVzID0gdGhpcy5yZXN1bHRUeXBlcy5jb25jYXQodGhpcy5yZXN1bHRHcm91cHNba10pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMub25SZXN1bHQuZW1pdCh7XG4gICAgICAgICAgICB0b3RhbDogdGhpcy5xdWVyeVN0YXRlLnRvdGFsQ291bnQsXG4gICAgICAgICAgICBncm91cHM6IHRoaXMucmVzdWx0R3JvdXBzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vblJlc3VsdC5lbWl0KHtcbiAgICAgICAgICAgIHRvdGFsOiAtMSxcbiAgICAgICAgICAgIGdyb3VwczogW11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uID0gYXBwU2VhcmNoU2VydmljZS5xdWVyeSQuc3Vic2NyaWJlKChxdWVyeTogU2VhcmNoUXVlcnkpID0+IHtcbiAgICAgIGlmIChxdWVyeSAmJiBxdWVyeS50ZXJtKSB7XG4gICAgICAgIHRoaXMubGFzdFRlcm0gPSBxdWVyeS50ZXJtO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0VGVybSh0ZXJtPzogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtLmdldCgnc2VhcmNoSW5wdXQnKS5wYXRjaFZhbHVlKHRlcm0gfHwgJycpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZ2dyZWdhdGUoKTogT2JzZXJ2YWJsZTxTZWFyY2hTdGF0ZT4ge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xuICAgICAgdGhpcy5pbnZhbGlkVGVybSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5nZXRTZWFyY2hTdGF0ZSh7YWdnczoge3R5cGU6IHt9fSwgLi4udGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKX0pXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBvLm5leHQocmVzKTtcbiAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgIH0sIFV0aWxzLnRocm93KF8gPT4ge1xuICAgICAgICAgIHRoaXMuaW52YWxpZFRlcm0gPSB0cnVlO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIG8ubmV4dChuZXcgU2VhcmNoU3RhdGUoKSk7XG4gICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9uS2V5KGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2hvd1Jlc3VsdHMpIHtcbiAgICAgIGlmIChldmVudC53aGljaCA9PT0gMzgpIHtcbiAgICAgICAgLy8gdXBcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5pbmRleC0tO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5pbmRleCA8IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmluZGV4ID0gdGhpcy5yZXN1bHRUeXBlcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQubmFtZSA9IHRoaXMucmVzdWx0VHlwZXNbdGhpcy5zZWxlY3RlZC5pbmRleF0uZGF0YS5uYW1lO1xuICAgICAgfSBlbHNlIGlmIChldmVudC53aGljaCA9PT0gNDApIHtcbiAgICAgICAgLy8gZG93blxuICAgICAgICB0aGlzLnNlbGVjdGVkLmluZGV4Kys7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmluZGV4ID49IHRoaXMucmVzdWx0VHlwZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5pbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZC5uYW1lID0gdGhpcy5yZXN1bHRUeXBlc1t0aGlzLnNlbGVjdGVkLmluZGV4XS5kYXRhLm5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByZXNldCBzZWxlY3Rpb24gb24gYW55IG90aGVyIGtleVxuICAgICAgICB0aGlzLnNlbGVjdGVkID0ge1xuICAgICAgICAgIGluZGV4OiAtMSxcbiAgICAgICAgICBuYW1lOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudCkge1xuICAgIHRoaXMuY3RybENsaWNrZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQud2hpY2ggPT09IDE3KSB7XG4gICAgICB0aGlzLmN0cmxDbGlja2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZVNlYXJjaChvYmplY3RUeXBlPzogT2JqZWN0VHlwZSkge1xuXG4gICAgaWYgKCF0aGlzLmludmFsaWRUZXJtKSB7XG4gICAgICBpZiAob2JqZWN0VHlwZSkge1xuICAgICAgICB0aGlzLnF1ZXJ5LnR5cGVzID0gW29iamVjdFR5cGVdO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkLmluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnF1ZXJ5LnR5cGVzID0gW3RoaXMucmVzdWx0VHlwZXNbdGhpcy5zZWxlY3RlZC5pbmRleF0uZGF0YV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnF1ZXJ5LnR5cGVzID0gW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKCkpKTtcbiAgICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgICAgY29uc29sZS5sb2codGhpcy5jdHJsQ2xpY2tlZCk7XG4gICAgICBpZiAodGhpcy5jdHJsQ2xpY2tlZCkge1xuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJpUGFyYW1RdWVyeS5xdWVyeVBhcmFtcykudG9TdHJpbmcoKVxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnL2Rhc2hib2FyZCcpWzBdICsgJy9yZXN1bHQ/JysgcXVlcnlQYXJhbXM7XG4gICAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICAgICAgICB0aGlzLmN0cmxDbGlja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcmVzdWx0J10sIHVyaVBhcmFtUXVlcnkpO1xuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0lucHV0KCkge1xuICAgIC8vIGZvY3VzIHNlYXJjaCBpbnB1dFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWljay1zZWFyY2hcIiBlb1J0bEF3YXJlPlxuXG4gIDxmb3JtIGNsYXNzPVwic2VhcmNoLWJveFwiIChuZ1N1Ym1pdCk9XCJleGVjdXRlU2VhcmNoKClcIlxuICAgICAgICBbbmdDbGFzc109XCJ7aW52YWxpZDogaW52YWxpZFRlcm19XCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCI+XG5cbiAgICA8ZW8taWNvbiAoY2xpY2spPVwiZXhlY3V0ZVNlYXJjaCgpXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2VhcmNoLnN2ZydcIj48L2VvLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0XCI+XG4gICAgICA8bGFiZWw+e3snZW8ucXVpY2tzZWFyY2gubGFiZWwnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgPGlucHV0IGF1dG9mb2N1cz1cImF1dG9mb2N1c1wiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaElucHV0XCI+XG4gICAgPC9kaXY+XG4gICAgPGVvLWxvYWRpbmctc3Bpbm5lciAqbmdJZj1cImxvYWRpbmdcIiBbc2l6ZV09XCInc21hbGwnXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgPGVvLWljb24gY2xhc3M9XCJzbWFsbFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8uc2VhcmNoLmNsZWFyLnNlYXJjaCcgfCB0cmFuc2xhdGUpXCJcbiAgICAqbmdJZj1cInF1ZXJ5LnRlcm1cIiBbbmdDbGFzc109XCJ7YWN0aXZlOiBxdWVyeS50ZXJtfVwiIChjbGljayk9XCJzZXRUZXJtKClcIj48L2VvLWljb24+XG4gICAgPGVvLWljb24gY2xhc3M9XCJzbWFsbFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3JlZnJlc2guc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5zZWFyY2gucmVzdWx0LnRlcm0nIHwgdHJhbnNsYXRlKSArICcgOiAmcXVvdDsnICsgbGFzdFRlcm0gKyAnJnF1b3Q7J1wiXG4gICAgKm5nSWY9XCJsYXN0VGVybSAmJiAhcXVlcnkudGVybVwiIChjbGljayk9XCJzZXRUZXJtKGxhc3RUZXJtKVwiPjwvZW8taWNvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwic2hvd1Jlc3VsdHMgJiYgIXF1ZXJ5U3RhdGUuaXNFbXB0eVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudC10b3RhbFwiPnt7cXVlcnlTdGF0ZS50b3RhbENvdW50IHwgbG9jYWxlRGVjaW1hbH19PC9zcGFuPjxzcGFuIHRyYW5zbGF0ZT5lby5xdWlja3NlYXJjaC5oaXRzPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG5cbiAgPGRpdiBjbGFzcz1cInJlc3VsdFwiICpuZ0lmPVwic2hvd1Jlc3VsdHMgJiYgIXF1ZXJ5U3RhdGUuaXNFbXB0eVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyXCI+PGRpdiBjbGFzcz1cInJpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdGb3I9XCJsZXQga2V5IG9mIHJlc3VsdEdyb3VwcyB8IGtleXM7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgPGgyICpuZ0lmPVwia2V5ICE9PSAnMCc7IGVsc2UgbWFpbmdyb3VwXCI+e3trZXl9fTwvaDI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWFpbmdyb3VwPlxuICAgICAgICAgIDxoMiB0cmFuc2xhdGU+ZW8ucXVpY2tzZWFyY2gucmVzdWx0Lmdyb3VwLmdsb2JhbDwvaDI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInR5cGVcIiAqbmdGb3I9XCJsZXQgdHlwZSBvZiByZXN1bHRHcm91cHNba2V5XVwiIChjbGljayk9XCJleGVjdXRlU2VhcmNoKHR5cGUuZGF0YSlcIiBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHNlbGVjdGVkLm5hbWUgPT09IHR5cGUuZGF0YS5uYW1lfVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIj57e3R5cGUuY291bnR9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3t0eXBlLmxhYmVsfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|