@arsedizioni/ars-utils 18.2.6 → 18.2.7
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/arsedizioni-ars-utils.d.ts.map +1 -0
- package/clipper.common/arsedizioni-ars-utils-clipper.common.d.ts.map +1 -0
- package/clipper.common/common/common.module.d.ts.map +1 -0
- package/clipper.common/common/definitions.d.ts +57 -7
- package/clipper.common/common/definitions.d.ts.map +1 -0
- package/clipper.common/common/interceptors/auth.interceptor.d.ts.map +1 -0
- package/clipper.common/common/messages.d.ts.map +1 -0
- package/clipper.common/common/services/clipper.service.d.ts +13 -23
- package/clipper.common/common/services/clipper.service.d.ts.map +1 -0
- package/clipper.common/public_api.d.ts.map +1 -0
- package/clipper.ui/arsedizioni-ars-utils-clipper.ui.d.ts.map +1 -0
- package/clipper.ui/documents.d.ts.map +1 -0
- package/clipper.ui/public_api.d.ts.map +1 -0
- package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts.map +1 -0
- package/clipper.ui/ui/document/document.component.d.ts.map +1 -0
- package/clipper.ui/ui/document-index/document-index.component.d.ts +3 -3
- package/clipper.ui/ui/document-index/document-index.component.d.ts.map +1 -0
- package/clipper.ui/ui/document-manager/document-manager.d.ts.map +1 -0
- package/clipper.ui/ui/document-menu/document-menu.component.d.ts.map +1 -0
- package/clipper.ui/ui/references/references.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-calendar/search-calendar.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-dialog/search-dialog.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-facets/search-facets.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-free-text-help/search-free-text-help.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-result-item/search-result-item.component.d.ts.map +1 -0
- package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts.map +1 -0
- package/core/arsedizioni-ars-utils-core.d.ts.map +1 -0
- package/core/core.module.d.ts.map +1 -0
- package/core/dateFnsAdapter.d.ts.map +1 -0
- package/core/definitions.d.ts +14 -0
- package/core/definitions.d.ts.map +1 -0
- package/core/directives/autoFocusDirective.d.ts.map +1 -0
- package/core/directives/changeDateIntervalDirective.d.ts.map +1 -0
- package/core/directives/copyClipboardDirective.d.ts.map +1 -0
- package/core/directives/validators.d.ts.map +1 -0
- package/core/pipes/format.pipe.d.ts.map +1 -0
- package/core/pipes/replace.pipe.d.ts.map +1 -0
- package/core/pipes/safe-html.pipe.d.ts.map +1 -0
- package/core/pipes/safe-url.pipe.d.ts.map +1 -0
- package/core/pipes/search-callback.pipe.d.ts.map +1 -0
- package/core/pipes/search-filter.pipe.d.ts.map +1 -0
- package/core/public_api.d.ts.map +1 -0
- package/core/selectable.d.ts.map +1 -0
- package/core/services/broadcast.service.d.ts.map +1 -0
- package/core/services/environment.service.d.ts.map +1 -0
- package/core/services/screen.service.d.ts.map +1 -0
- package/core/system.d.ts +3 -3
- package/core/system.d.ts.map +1 -0
- package/esm2022/clipper.common/common/definitions.mjs +17 -1
- package/esm2022/clipper.common/common/services/clipper.service.mjs +12 -43
- package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +1 -1
- package/esm2022/core/definitions.mjs +1 -1
- package/esm2022/core/system.mjs +1 -1
- package/esm2022/help/definitions.mjs +2 -0
- package/esm2022/help/public_api.mjs +2 -1
- package/esm2022/help/services/help.service.mjs +1 -8
- package/esm2022/support.common/common/definitions.mjs +1 -1
- package/esm2022/support.common/common/services/support.service.mjs +4 -4
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +28 -43
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-help.mjs +0 -7
- package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
- package/help/arsedizioni-ars-utils-help.d.ts.map +1 -0
- package/help/components/help-viewer/help-viewer.component.d.ts.map +1 -0
- package/help/definitions.d.ts +17 -0
- package/help/definitions.d.ts.map +1 -0
- package/help/help.module.d.ts.map +1 -0
- package/help/public_api.d.ts +1 -0
- package/help/public_api.d.ts.map +1 -0
- package/help/services/help.service.d.ts +4 -8
- package/help/services/help.service.d.ts.map +1 -0
- package/package.json +12 -12
- package/public_api.d.ts.map +1 -0
- package/support.common/arsedizioni-ars-utils-support.common.d.ts.map +1 -0
- package/support.common/common/common.module.d.ts.map +1 -0
- package/support.common/common/definitions.d.ts +22 -2
- package/support.common/common/definitions.d.ts.map +1 -0
- package/support.common/common/interceptors/auth.interceptor.d.ts.map +1 -0
- package/support.common/common/messages.d.ts.map +1 -0
- package/support.common/common/services/support.service.d.ts +4 -4
- package/support.common/common/services/support.service.d.ts.map +1 -0
- package/support.common/public_api.d.ts.map +1 -0
- package/support.ui/arsedizioni-ars-utils-support.ui.d.ts.map +1 -0
- package/support.ui/public_api.d.ts.map +1 -0
- package/support.ui/ui/notifications-browser/notification/notification.component.d.ts.map +1 -0
- package/support.ui/ui/notifications-browser/notifications-browser.component.d.ts.map +1 -0
- package/tinymce/arsedizioni-ars-utils-tinymce.d.ts.map +1 -0
- package/tinymce/full-screen-editor/full-screen-editor.component.d.ts.map +1 -0
- package/tinymce/public_api.d.ts.map +1 -0
- package/tinymce/tinymce.module.d.ts.map +1 -0
- package/tinymce/utils.d.ts.map +1 -0
- package/ui/arsedizioni-ars-utils-ui.d.ts.map +1 -0
- package/ui/public_api.d.ts.map +1 -0
- package/ui/ui/definitions.d.ts.map +1 -0
- package/ui/ui/dialogs/busy/busy-dialog.component.d.ts.map +1 -0
- package/ui/ui/dialogs/confirm/confirm-dialog.component.d.ts.map +1 -0
- package/ui/ui/dialogs/credentials/credentials-dialog.component.d.ts.map +1 -0
- package/ui/ui/dialogs/info/info-dialog.component.d.ts.map +1 -0
- package/ui/ui/dialogs/recover-password/recover-password-dialog.component.d.ts.map +1 -0
- package/ui/ui/dialogs/reset-password/reset-password-dialog.component.d.ts.map +1 -0
- package/ui/ui/dialogs/toast/toast.component.d.ts.map +1 -0
- package/ui/ui/paginatorIntl.d.ts.map +1 -0
- package/ui/ui/services/dialog.service.d.ts.map +1 -0
- package/ui/ui/services/ui.service.d.ts.map +1 -0
- package/ui/ui/ui.module.d.ts.map +1 -0
- package/ui.application/arsedizioni-ars-utils-ui.application.d.ts.map +1 -0
- package/ui.application/public_api.d.ts.map +1 -0
- package/ui.application/ui/components/button-selector/button-selector.component.d.ts.map +1 -0
- package/ui.application/ui/components/button-toggle/button-toggle.component.d.ts.map +1 -0
- package/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.d.ts.map +1 -0
- package/ui.application/ui/components/chips-selector/chips-selector.component.d.ts.map +1 -0
- package/ui.application/ui/components/file-input/file-input.component.d.ts.map +1 -0
- package/ui.application/ui/components/file-preview/file-preview.component.d.ts.map +1 -0
- package/ui.application/ui/components/filter-bar/filter-bar.component.d.ts.map +1 -0
- package/ui.application/ui/definitions.d.ts.map +1 -0
- package/ui.application/ui/dialogs/prompt/prompt-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/select/select-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/select-file/select-file-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/dialogs/send-to/send-to-dialog.component.d.ts.map +1 -0
- package/ui.application/ui/directives/resize-table-column.directive.d.ts.map +1 -0
- package/ui.application/ui/filters.d.ts.map +1 -0
- package/ui.application/ui/messages.d.ts.map +1 -0
- package/ui.application/ui/services/applicationDialog.service.d.ts.map +1 -0
- package/ui.application/ui/ui.module.d.ts.map +1 -0
- package/ui.oauth/arsedizioni-ars-utils-ui.oauth.d.ts.map +1 -0
- package/ui.oauth/public_api.d.ts.map +1 -0
- package/ui.oauth/ui/components/login/login-oauth.component.d.ts.map +1 -0
- package/ui.oauth/ui/definitions.d.ts.map +1 -0
- package/ui.oauth/ui/ui.module.d.ts.map +1 -0
package/esm2022/core/system.mjs
CHANGED
|
@@ -634,4 +634,4 @@ export class SystemUtils {
|
|
|
634
634
|
return nodes;
|
|
635
635
|
}
|
|
636
636
|
}
|
|
637
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NvcmUvc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFHLE1BQU0sYUFBYSxDQUFDO0FBWTdDLE1BQU0sQ0FBTixJQUFZLFVBYVg7QUFiRCxXQUFZLFVBQVU7SUFDcEIsNkNBQVMsQ0FBQTtJQUNULDJDQUFRLENBQUE7SUFDUix1RUFBc0IsQ0FBQTtJQUN0QixpRUFBbUIsQ0FBQTtJQUNuQiwyRUFBd0IsQ0FBQTtJQUN4QiwyREFBZ0IsQ0FBQTtJQUNoQixtRUFBb0IsQ0FBQTtJQUNwQixpREFBVyxDQUFBO0lBQ1gseURBQWUsQ0FBQTtJQUNmLDBEQUFnQixDQUFBO0lBQ2hCLGtEQUFZLENBQUE7SUFDWiw0REFBaUIsQ0FBQSxDQUFTLGFBQWE7QUFDekMsQ0FBQyxFQWJXLFVBQVUsS0FBVixVQUFVLFFBYXJCO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFDdEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBSSxLQUFVLEVBQUUsR0FBVyxFQUFFLEtBQVE7UUFDeEQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENB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QkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7b0JBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IERhdGVJbnRlcnZhbCB9IGZyb20gJy4vZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlLCBwYXJzZUlTTywgc2V0SG91cnMgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IGl0IH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlJztcclxuaW1wb3J0IHsgZnJvbVpvbmVkVGltZSAgfSBmcm9tICdkYXRlLWZucy10eic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlIHtcclxuICBpZDogc3RyaW5nLFxyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb3VudD86IG51bWJlcixcclxuICBjaGlsZHJlbj86IElOb2RlW10sXHJcbiAgcGFyZW50PzogSU5vZGUsXHJcbiAgYmFnPzogYW55XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBEYXRlRm9ybWF0IHtcclxuICBTaG9ydCA9IDEsICAgICAgICAgICAgICAgIC8vIGRkL21tL3l5eXlcclxuICBMb25nID0gMiwgICAgICAgICAgICAgICAgIC8vIGQgbW1tbSB5eXl5XHJcbiAgTG9uZ1dpdGhTaG9ydE1vbnRoID0gMywgICAvLyBkIG1tbSB5eXl5XHJcbiAgTG9uZ1dpdGhXZWVrRGF5ID0gNCwgICAgICAvLyB3d3d3LCBkIG1tbW0geXl5eVxyXG4gIExvbmdXaXRoU2hvcnRXZWVrRGF5ID0gNSwgLy8gd3d3LCBkIG1tbW0geXl5eVxyXG4gIE1vbnRoQW5kWWVhciA9IDYsICAgICAgICAgLy8gbW1tIHl5eXlcclxuICBMb25nTW9udGhBbmRZZWFyID0gNywgICAgIC8vIG1tbW0geXl5eVxyXG4gIFdlZWtEYXkgPSA4LCAgICAgICAgICAgICAgLy8gd3d3IGRcclxuICBMb25nV2Vla0RheSA9IDksICAgICAgICAgIC8vIHd3d3cgZFxyXG4gIERheUFuZE1vbnRoID0gMTAsICAgICAgICAgLy8gZCBtbW1tXHJcbiAgU2hvcnRVUyA9IDExLCAgICAgICAgICAgICAvLyBtbS9kZC95eXl5XHJcbiAgU2hvcnRJU084NjAxID0gMTIgICAgICAgICAvLyB5eXl5LW1tLWRkXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1VdGlscyB7XHJcbiAgLyoqXHJcbiAgICogQXJyYXkgZmluZCBieSBrZXlcclxuICAgKiBAcGFyYW0gYXJyYXkgICAgIDogdGhlIGFycmF5IHRvIHNjYW5cclxuICAgKiBAcGFyYW0ga2V5ICAgICAgIDoga2V5IG5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWUgICAgIDogdGhlIHZhbHVlIHRvIHNlYXJjaCBmb3JcclxuICAgKiBAcmV0dXJucyAgICAgICAgIDogdGhlIHByb3BlcnR5IHZhbHVlIG9yIG51bGxcclxuICAgKi9cclxuICBzdGF0aWMgYXJyYXlGaW5kQnlLZXk8VD4oYXJyYXk6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogYW55IHtcclxuICAgIGlmICghYXJyYXkpIHJldHVybiBudWxsO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICAgIGlmIChpdGVtW2tleV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXJyYXkgZmluZCBpbmRleCBieSBrZXlcclxuICAgKiBAcGFyYW0gYXJyYXkgICA6IHRoZSBhcnJheSB0byBzY2FuXHJcbiAgICogQHBhcmFtIGtleSAgICAgOiB0aGUga2V5IG5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWUgICA6IHRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yXHJcbiAgICogQHJldHVybnMgICAgICAgOiB0aGUgYXJyYXkgaW5kZXggb3IgLTEgaWYgbm90IGZvdW5kXHJcbiAgICovXHJcbiAgc3RhdGljIGFycmF5RmluZEluZGV4QnlLZXk8VD4oYXJyYXk6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogbnVtYmVyIHtcclxuICAgIGlmICghYXJyYXkpIHJldHVybiBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXJyYXlbaV1ba2V5XSA9PT0gdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgdmFsdWUgZnJvbSBhbmQgYXJyYXkgbWFkZSBvZiBuYW1lfHZhbHVlIGl0ZW1zXHJcbiAgICogQHBhcmFtIGFycmF5ICAgOiB0aGUgYXJyYXkgdG8gc2NhblxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgIDogdGhlIHZhbHVlIHRvIHNlYXJjaCBmb3JcclxuICAgKiBAcmV0dXJucyAgICAgICA6IHRoZSBwcm9wZXJ0eSB2YWx1ZSBvciBudWxsIGlmIG5vdCBmb3VuZFxyXG4gICAqL1xyXG4gIHN0YXRpYyBhcnJheUdldFZhbHVlPFQ+KGFycmF5OiBhbnksIHZhbHVlOiBUKTogYW55IHtcclxuICAgIGlmICghYXJyYXkpIHJldHVybiBudWxsO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXJyYXlbaV0udmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5W2ldLm5hbWUgfHwgYXJyYXlbaV0uaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBpdGVtcyB0byBub2RlcyBpbnRvIGEgdHJlZSBzdHJ1Y3R1cmVcclxuICAgKiBAcGFyYW0gaXRlbXMgICA6IGxpc3Qgb2Ygbm9kZXNcclxuICAgKiBAcGFyYW0gcGFyZW50ICA6IHBhcmVudCBub2RlXHJcbiAgICogQHJldHVybnMgICAgICAgOiBhbiBhcnJheSBvZiBJTm9kZSBvYmplY3RzXHJcbiAgICovXHJcbiAgc3RhdGljIGFycmF5VG9Ob2RlcyhpdGVtczogSU5vZGVbXSwgcGFyZW50OiBJTm9kZSA9IG51bGwpOiBJTm9kZVtdIHtcclxuICAgIGNvbnN0IG5vZGVzOiBJTm9kZVtdID0gW107XHJcbiAgICBpdGVtcy5mb3JFYWNoKChuKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5vZGU6IElOb2RlID0ge1xyXG4gICAgICAgIGlkOiBuLmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgbmFtZTogbi5uYW1lLFxyXG4gICAgICAgIGNvdW50OiBuLmNvdW50ID8gbi5jb3VudCA6IDAsXHJcbiAgICAgICAgY2hpbGRyZW46IG51bGwsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIGJhZzogbixcclxuICAgICAgfTtcclxuICAgICAgbm9kZXMucHVzaChub2RlKTtcclxuICAgICAgbm9kZS5jaGlsZHJlbiA9XHJcbiAgICAgICAgbi5jaGlsZHJlbiAmJiBuLmNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5hcnJheVRvTm9kZXMobi5jaGlsZHJlbiwgbm9kZSlcclxuICAgICAgICAgIDogW107XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBub2RlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gY29wYXJlIGl0ZW1zIGR1cmluZyBhbiBhcnJheSBvZiBvYmplY3RzIHNvcnRpbmdcclxuICAgKiBAcGFyYW0ga2V5ICAgICA6IHRoZSBwcm9wZXJ0eSBuYW1lIHRvIHNvcnQgZm9yXHJcbiAgICogQHBhcmFtIG9yZGVyICAgOiB0aGUgb3JkZXIgJ2FzYycgb3IgJ2Rlc2MnXHJcbiAgICogQHJldHVybnMgICAgICAgOiAwIGlmIGVxdWFscywgMSBpZiBiaWdnZXIsIC0xIGlmIGxvd2VyXHJcbiAgICovXHJcbiAgc3RhdGljIGFycmF5U29ydENvbXBhcmUoa2V5OiBzdHJpbmcsIG9yZGVyOiBzdHJpbmcgPSBcImFzY1wiKSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBmdW5jdGlvbiBpbm5lclNvcnQoYTogYW55LCBiOiBhbnkpIHtcclxuICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KGtleSkgfHwgIWIuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIC8vIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3Qgb24gZWl0aGVyIG9iamVjdFxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhckEgPSB0eXBlb2YgYVtrZXldID09PSBcInN0cmluZ1wiID8gYVtrZXldLnRvVXBwZXJDYXNlKCkgOiBhW2tleV07XHJcbiAgICAgIGNvbnN0IHZhckIgPSB0eXBlb2YgYltrZXldID09PSBcInN0cmluZ1wiID8gYltrZXldLnRvVXBwZXJDYXNlKCkgOiBiW2tleV07XHJcbiAgICAgIGxldCBjb21wYXJpc29uID0gMDtcclxuICAgICAgaWYgKHZhckEgPiB2YXJCKSBjb21wYXJpc29uID0gMTtcclxuICAgICAgZWxzZSBpZiAodmFyQSA8IHZhckIpIGNvbXBhcmlzb24gPSAtMTtcclxuICAgICAgcmV0dXJuIG9yZGVyID09PSBcImRlc2NcIiA/IGNvbXBhcmlzb24gKiAtMSA6IGNvbXBhcmlzb247XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCB3ZWlnaHRcclxuICAgKiBAcGFyYW0gZ3IgICAgOiBncmFtc1xyXG4gICAqIEByZXR1cm5zICAgICA6IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGZvcm1hdFdlaWdodChncjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChnciA+IDEwMDAwMDApIHJldHVybiAoZ3IgLyAxMDAwMDAwKS50b0ZpeGVkKDIpICsgXCIgdFwiO1xyXG4gICAgZWxzZSBpZiAoZ3IgPiAxMDAwMDApIHJldHVybiAoZ3IgLyAxMDAwMDApLnRvRml4ZWQoMikgKyBcIiBxXCI7XHJcbiAgICBlbHNlIGlmIChnciA+IDEwMDApIHJldHVybiAoZ3IgLyAxMDAwKS50b0ZpeGVkKDIpICsgXCIga2dcIjtcclxuICAgIGVsc2UgcmV0dXJuIGdyICsgXCIgZ3JcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCBmaWxlIHNpemVcclxuICAgKiBAcGFyYW0gYnl0ZXMgOiBudW1iZXIgb2YgYnl0ZXNcclxuICAgKiBAcmV0dXJucyAgICAgOiB0aGUgZm9ybWF0dGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChieXRlcyA+IDEwMjQwMDApIHJldHVybiAoYnl0ZXMgLyAxMDI0MDAwKS50b0ZpeGVkKDEpICsgXCIgTUJcIjtcclxuICAgIGlmIChieXRlcyA+IDEwMjQpIHJldHVybiAoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCIgS2JcIjtcclxuICAgIHJldHVybiBieXRlcyArIFwiIGJ5dGVcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBhcmUgdHdvIHN0cmluZ1xyXG4gICAqIEBwYXJhbSBhICAgOiBzdHJpbmcgYVxyXG4gICAqIEBwYXJhbSBiICAgOiBzdHJpbmcgYlxyXG4gICAqIEByZXR1cm5zICAgOiAwIGlmIGVxdWFscywgMSBpZiBiaWdnZXIsIC0xIGlmIGxvd2VyXHJcbiAgICovXHJcbiAgc3RhdGljIGNvbXBhcmVTdHJpbmcoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKChhID8/IFwiXCIpLnRvTG93ZXJDYXNlKCkgPiAoYiA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTtcclxuICAgIGlmICgoYSA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpIDwgKGIgPz8gXCJcIikudG9Mb3dlckNhc2UoKSkgcmV0dXJuIC0xO1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYXBpdGFsaXplIGEgc3RyaW5nXHJcbiAgICogQHBhcmFtIHMgICA6IHRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZVxyXG4gICAqIEByZXR1cm5zICAgOiB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nICBcclxuICAgKi9cclxuICBzdGF0aWMgY2FwaXRhbGl6ZShzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFzKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBiID0gXCJcIjtcclxuICAgIGxldCBjYXAgPSB0cnVlO1xyXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHMpIHtcclxuICAgICAgaWYgKGNoYXIgPT09IFwiIFwiKSB7XHJcbiAgICAgICAgYiArPSBjaGFyO1xyXG4gICAgICAgIGNhcCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2FwKSB7XHJcbiAgICAgICAgYiArPSBjaGFyLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY2FwID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYiArPSBjaGFyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBiO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1bmNhdGUgYSBzdHJpbmdcclxuICAgKiBAcGFyYW0gcyAgICAgOiB0aGUgc3RyaW5nIHRvIHRydW5jYXRlXHJcbiAgICogQHBhcmFtIG1heCAgIDogdGhlIG1heCBudW1iZXIgb2YgY2hhcnNcclxuICAgKiBAcmV0dXJucyAgICAgOiB0aGUgdHJ1bmNhdGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyB0cnVuY2F0ZShzOiBzdHJpbmcsIG1heDogbnVtYmVyID0gNTAwKTogc3RyaW5nIHtcclxuICAgIGlmICghcykgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAocy5sZW5ndGggPCBtYXgpIHJldHVybiBzO1xyXG4gICAgbGV0IGkgPSBtYXggLSAxO1xyXG4gICAgd2hpbGUgKGkgPiAwKSB7XHJcbiAgICAgIGlmIChzW2ldID09PSAnICcpIHJldHVybiBzLnNsaWNlKDAsIGkpO1xyXG4gICAgICBpLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEpvaW4gYSBsaXN0IG9mIHN0cmluZ3NcclxuICAgKiBAcGFyYW0gaXRlbXMgICAgIDogdGhlIGxpc3Qgb2Ygc3RyaW5nc1xyXG4gICAqIEBwYXJhbSBzZXAgICAgICAgOiB0aGUgc2VwYXJhdG9yIHN0cmluZ1xyXG4gICAqIEBwYXJhbSBtYXggICAgICAgOiB0aGUgbWF4aW11bSByZXN1bHRpbmcgc3RyaW5nXHJcbiAgICogQHJldHVybnMgICAgICAgICA6IHRoZSBqb2luZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGpvaW4oaXRlbXM6IHN0cmluZ1tdLCBzZXA6IHN0cmluZyA9IFwiIFwiLCBtYXg6IG51bWJlciA9IDM1MCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoaXRlbXMubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgbCA9IDA7XHJcbiAgICAgIGxldCBzID0gXCJcIlxyXG4gICAgICB3aGlsZSAocy5sZW5ndGggPCBtYXggJiYgaXRlbXMubGVuZ3RoID4gbCkge1xyXG4gICAgICAgIGlmIChsID4gMCkge1xyXG4gICAgICAgICAgcyArPSBzZXA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHMgKz0gaXRlbXNbbCsrXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID4gbCkge1xyXG4gICAgICAgIHMgKz0gXCIuLi5cIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcztcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtc1swXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlcGxhY2Ugc3R1ZmYgaW4gdGV4dCBodG1sXHJcbiAgICogQHBhcmFtIHMgICA6IHRoZSBzdHJpbmcgdG8gcHJvY2Vzc1xyXG4gICAqIEByZXR1cm5zICAgOiB0aGUgcmVwbGFjZWQgc3RyaW5nICBcclxuICAgKi9cclxuICBzdGF0aWMgcmVwbGFjZUFzSHRtbChzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmVnZXggPSAvaHR0cHM/OlxcL1xcLy4qW15cXHNdL2lnXHJcbiAgICBjb25zdCBtID0gcmVnZXguZXhlYyhzKTtcclxuICAgIGlmIChtICYmIG0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgdiA9IG51bGw7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHYgPSBtW2ldO1xyXG4gICAgICAgIHMgPSBzLnJlcGxhY2UodiwgJzxhIGhyZWY9XCInICsgdiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsgdiArICc8L2E+Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyZSB0d28gbmFtZXNcclxuICAgKiBAcGFyYW0gYSAgIDogbmFtZSBhXHJcbiAgICogQHBhcmFtIGIgICA6IG5hbWUgYlxyXG4gICAqIEByZXR1cm5zICAgOiB0cnVlIGlmIGEgZXF1YWxzIGJcclxuICAgKi9cclxuICBzdGF0aWMgY29tcGFyZU5hbWVzKGE6IHN0cmluZywgYjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYSkgYSA9IGEudHJpbSgpO1xyXG4gICAgaWYgKGIpIGIgPSBiLnRyaW0oKTtcclxuICAgIGlmIChhICYmIGIgJiYgYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5jb21wYXJlU3RyaW5nKGEsIGIpID09PSAwKSByZXR1cm4gdHJ1ZTtcclxuICAgIGNvbnN0IHAxID0gYS5zcGxpdChcIiBcIik7XHJcbiAgICBjb25zdCBwMiA9IGIuc3BsaXQoXCIgXCIpO1xyXG4gICAgaWYgKHAxLmxlbmd0aCAhPT0gcDIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgbWF0Y2hlcyA9IHAxLmxlbmd0aDtcclxuICAgIGZvciAoY29uc3QgczEgb2YgcDEpIHtcclxuICAgICAgZm9yIChjb25zdCBzMiBvZiBwMikge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhcmVTdHJpbmcoczEsIHMyKSA9PT0gMCkge1xyXG4gICAgICAgICAgbWF0Y2hlcy0tO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1hdGNoZXMgPT09IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaXBoZXIgYSB0ZXh0XHJcbiAgICogQHBhcmFtIHRleHQgICAgOiB0aGUgdGV4dFxyXG4gICAqIEBwYXJhbSBrZXkgICAgIDogdGhlIGtleVxyXG4gICAqIEBwYXJhbSByZXZlcnNlIDogdHJ1ZSB0byBkZWNvZGUsIGZhbHNlIHRvIGVuY29kZVxyXG4gICAqIEByZXR1cm5zICAgICAgIDp0aGUgY2lwaGVyZWQgdGV4dFxyXG4gICAqL1xyXG4gIHN0YXRpYyBjaXBoZXIodGV4dDogYW55LCBrZXk6IGFueSwgcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIC8vIFN1cnJvZ2F0ZSBwYWlyIGxpbWl0XHJcbiAgICB2YXIgYm91bmQgPSAweDEwMDAwO1xyXG5cclxuICAgIC8vIENyZWF0ZSBzdHJpbmcgZnJvbSBjaGFyYWN0ZXIgY29kZXNcclxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxyXG4gICAgICBudWxsLFxyXG4gICAgICAvLyBUdXJuIHN0cmluZyB0byBjaGFyYWN0ZXIgY29kZXNcclxuICAgICAgdGV4dC5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24gKHY6IGFueSwgaTogbnVtYmVyKSB7XHJcbiAgICAgICAgLy8gR2V0IHJvdGF0aW9uIGZyb20ga2V5XHJcbiAgICAgICAgdmFyIHJvdGF0aW9uID0ga2V5W2kgJSBrZXkubGVuZ3RoXS5jaGFyQ29kZUF0KCk7XHJcblxyXG4gICAgICAgIC8vIEFyZSB3ZSBkZWNyeXB0aW5nP1xyXG4gICAgICAgIGlmIChyZXZlcnNlKSByb3RhdGlvbiA9IC1yb3RhdGlvbjtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIGN1cnJlbnQgY2hhcmFjdGVyIGNvZGUgKyByb3RhdGlvblxyXG4gICAgICAgIHJldHVybiAodi5jaGFyQ29kZUF0KCkgKyByb3RhdGlvbiArIGJvdW5kKSAlIGJvdW5kO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb25lIGFuIG9iamVjdCB1c2luZyBKU09OXHJcbiAgICogQHBhcmFtIG9iaiA6IHRoZSBvYmxlY3QgdG8gY2xvbmVcclxuICAgKiBAcmV0dXJucyAgIDogYSBuZXcgb2JqZWN0XHJcbiAgICovXHJcbiAgc3RhdGljIGNsb25lKG9iajogYW55KTogYW55IHtcclxuICAgIGlmICghb2JqKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvbmUgYW4gb2JqZWN0IHVzaW5nIGRlZXAgY2xvbmluZ1xyXG4gICAqIEBwYXJhbSBvYmogICA6IHRoZSBvYmxlY3QgdG8gY2xvbmVcclxuICAgKiBAcmV0dXJucyAgICAgOiBhIG5ldyBvYmplY3RcclxuICAgKi9cclxuICBzdGF0aWMgZGVlcENsb25lPFQ+KG9iajogYW55LCBkZXN0OiBUID0gbnVsbCk6IFQge1xyXG4gICAgY29uc3QgY2xvbmVPYmogPSBkZXN0ID8gZGVzdCA6IChvYmouY29uc3RydWN0b3IoKSBhcyBhbnkpO1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKG9iaik7XHJcbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gb2JqW2F0dHJpYnV0ZV07XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09IFwib2JqZWN0XCIgJiYgcHJvcGVydHkgIT0gbnVsbCkge1xyXG4gICAgICAgIGNsb25lT2JqW2F0dHJpYnV0ZV0gPSB0aGlzLmRlZXBDbG9uZShwcm9wZXJ0eSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xvbmVPYmpbYXR0cmlidXRlXSA9IHByb3BlcnR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmVPYmo7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSBzdHJpbmcgaXMgYSB2YWxpZCBVVUlEXHJcbiAgICogQHBhcmFtIHZhbHVlICAgOiB0aGUgdmFsdWUgdG8gcGFyc2VcclxuICAgKiBAcmV0dXJucyAgICAgICA6IHRydWUgaWYgaXMgYSB2YWxpZCBVVUlEXHJcbiAgICovXHJcbiAgc3RhdGljIHBhcnNlVVVJRCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZWdleCA9IC9eKHt8KCk/WzAtOWEtZkEtRl17OH0tKFswLTlhLWZBLUZdezR9LSl7M31bMC05YS1mQS1GXXsxMn0ofXwpKT8kLztcclxuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGFuZCBlbnN1cmUgdGhhdCBVVUlEIGlzIG5vdCBlbXB0eVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgIDogdGhlIHZhbHVlIHRvIHBhcnNlXHJcbiAgICogQHJldHVybnMgICAgICAgOiB0cnVlIGlmIHZhbGlkIGFuZCBub3QgZW1wdHlcclxuICAgKi9cclxuICBzdGF0aWMgcGFyc2VVVUlETm90RW1wdHkodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVnZXggPSAvXih7fCgpPzB7OH0tKDB7NH0tKXszfTB7MTJ9KH18KSk/JC87XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZVVVSUQodmFsdWUpICYmICFyZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIG5ldyBVVUlEXHJcbiAgICogQHJldHVybnMgOiB0aGUgc3RyaW5nIFVVSURcclxuICAgKi9cclxuICBzdGF0aWMgZ2VuZXJhdGVVVUlEKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWdleCA9IC9beHldL2c7XHJcbiAgICByZXR1cm4gXCJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcIi5yZXBsYWNlKHJlZ2V4LCBmdW5jdGlvbiAoYykge1xyXG4gICAgICB2YXIgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcclxuICAgICAgICB2ID0gYyA9PT0gXCJ4XCIgPyByIDogKHIgJiAweDMpIHwgMHg4O1xyXG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGEgdGV4dCBhbmQgcmV0dXJuIHRydWUgaWYgaXMgYSB2YWxpZCBlbWFpbCBvciBudWxsXHJcbiAgICogQHBhcmFtIHZhbHVlIDogZW1haWxcclxuICAgKiBAcmV0dXJucyAgICAgOiB0cnVlIGlmIHRoZSBlbWFpbCBpcyB2YWxpZCBvciBlbXB0eVxyXG4gICAqL1xyXG4gIHN0YXRpYyBwYXJzZUVtYWlsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB0cnVlO1xyXG4gICAgY29uc3QgcmVnZXggPSAvKD86W2EtejAtOSshIyQlJicqK1xcLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqK1xcLz0/Xl9ge3x9fi1dKykqfFwiKD86W1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkqXCIpQCg/Oig/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT98XFxbKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT98W2EtejAtOS1dKlthLXowLTldOig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxLVxceDVhXFx4NTMtXFx4N2ZdfFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSspXFxdKS9naVxyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgYSB0ZXh0IGFuZCByZXR1cm4gdHJ1ZSBpZiBpcyBhIHZhbGlkIHVybCBvciBudWxsXHJcbiAgICogQHBhcmFtIHZhbHVlIDogdGhlIHVybCB0byBwYXJzZVxyXG4gICAqIEByZXR1cm5zICAgICA6IHRydWUgaWYgdGhlIHVybCBpcyB2YWxpZCBvciBlbXB0eVxyXG4gICAqL1xyXG4gIHN0YXRpYyBwYXJzZVVybCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdHJ1ZTtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgXCIoaHR0cHM/Oi8vKT8oW1xcXFxkYS16Li1dKylcXFxcLihbYS16Ll17Miw2fSlbL1xcXFx3IC4tXSovP1wiXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRhdGUgcGFydHMgZnJvbSBhIHN0cmluZyB2YWx1ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgIDogdGhlIHN0cmluZyB0byBwYXJzZVxyXG4gICAqIEByZXR1cm5zICAgICAgIDogYW4gYXJyYXkgb2YgbnVtYmVycyB3aXRoIHllYXIsIG1vbnRoLCBkYXlcclxuICAgKi9cclxuICBzdGF0aWMgZ2V0RGF0ZVBhcnRzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXJbXSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwYXJ0czogbnVtYmVyW10gPSBbXTtcclxuICAgIGlmICh2YWx1ZS5pbmRleE9mKFwiLVwiKSAhPT0gLTEpIHtcclxuICAgICAgY29uc3QgcCA9IHZhbHVlLnNwbGl0KFwiLVwiKTtcclxuICAgICAgaWYgKHAubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcclxuICAgICAgcGFydHMgPSBbcGFyc2VJbnQocFswXSksIHBhcnNlSW50KHBbMV0pIC0gMSwgcGFyc2VJbnQocFsyXSldO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5pbmRleE9mKFwiL1wiKSAhPT0gLTEpIHtcclxuICAgICAgY29uc3QgcCA9IHZhbHVlLnNwbGl0KFwiL1wiKTtcclxuICAgICAgaWYgKHAubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcclxuICAgICAgcGFydHMgPSBbcGFyc2VJbnQocFsyXSksIHBhcnNlSW50KHBbMV0pIC0gMSwgcGFyc2VJbnQocFswXSldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcnRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgYSBkYXRlXHJcbiAgICogQHBhcmFtIHZhbHVlICAgOiB0aGUgdmFsdWUgdG8gY2hlY2tcclxuICAgKiBAcGFyYW0gbG9jYWxlICA6IHRoZSBsb2NhbGUgdG8gdXNlXHJcbiAgICogQHJldHVybnMgICAgICAgOiBhIHZhbGlkIERhdGUgb2JqZWN0IG9yIG51bGxcclxuICAgKi9cclxuICBzdGF0aWMgcGFyc2VEYXRlKHZhbHVlOiBzdHJpbmcgfCBEYXRlLCBsb2NhbGU6IGFueSA9IGl0KTogRGF0ZSB7XHJcbiAgICAvLyBObyB2YWx1ZSBhdCBhbGxcclxuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgLy8gQSBEYXRlIHZhbHVlXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmIHZhbHVlLmdldFRpbWUoKSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gUGFyc2Uga25vd24gZm9ybWF0cyB1c2luZyBkYXRlLWZuc1xyXG4gICAgbGV0IGQgPSBwYXJzZUlTTyh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgaWYgKGQgJiYgZC5nZXRUaW1lKCkgJiYgZC5nZXRGdWxsWWVhcigpID4gMTc1MCkgcmV0dXJuIGQ7XHJcbiAgICBkID0gcGFyc2UodmFsdWUgYXMgc3RyaW5nLCAnZGQvTU0veXl5eScsIG5ldyBEYXRlKCksIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICBpZiAoZCAmJiBkLmdldFRpbWUoKSAmJiBkLmdldEZ1bGxZZWFyKCkgPiAxNzUwKSByZXR1cm4gZDtcclxuICAgIGQgPSBwYXJzZSh2YWx1ZSBhcyBzdHJpbmcsICd5eXl5LU1NLWRkJywgbmV3IERhdGUoKSwgeyBsb2NhbGU6IGxvY2FsZSB9KTtcclxuICAgIGlmIChkICYmIGQuZ2V0VGltZSgpICYmIGQuZ2V0RnVsbFllYXIoKSA+IDE3NTApIHJldHVybiBkO1xyXG4gICAgLy8gUGFyc2UgdmFsdWVzIG1hbnVhbGx5XHJcbiAgICBsZXQgcGFydHMgPSB0aGlzLmdldERhdGVQYXJ0cyh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgaWYgKHBhcnRzWzBdIDwgMTAwKSBwYXJ0c1swXSArPSAyMDAwO1xyXG4gICAgaWYgKGlzTmFOKHBhcnRzWzBdKSB8fCBwYXJ0c1swXSA8IDAgfHwgcGFydHNbMF0gPCAxNzUwKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChpc05hTihwYXJ0c1sxXSkgfHwgcGFydHNbMV0gPCAwKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChpc05hTihwYXJ0c1syXSkgfHwgcGFydHNbMl0gPCAwKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChwYXJ0c1sxXSA+IDExKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChwYXJ0c1sxXSA9PT0gMSAmJiBwYXJ0c1syXSA+IDI5KSByZXR1cm4gbnVsbDtcclxuICAgIGVsc2UgaWYgKHBhcnRzWzFdICE9PSAxICYmIHBhcnRzWzJdID4gMzEpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHBhcnRzWzBdLCBwYXJ0c1sxXSwgcGFydHNbMl0sIDIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IGEgZGF0ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgICAgOiB0aGUgZGF0ZSBvciBzdHJpbmcgdG8gZm9ybWF0XHJcbiAgICogQHBhcmFtIGZtdCAgICAgICA6IHRoZSBEYXRlRm9ybWF0IHRvIHVzZSBvciB0aGUgc3RyaW5nIHBhdHRlcm5cclxuICAgKiBAcGFyYW0gbG9jYWxlICAgIDogdGhlIGxvY2FsZSB0byB1c2UgKGRlZmF1bHQgaXMgSVQpXHJcbiAgICogQHJldHVybnMgICAgICAgICA6IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGZvcm1hdERhdGUoXHJcbiAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyxcclxuICAgIGZtdDogRGF0ZUZvcm1hdCB8IHN0cmluZyA9IERhdGVGb3JtYXQuU2hvcnQsXHJcbiAgICBsb2NhbGU6IGFueSA9IGl0KTogc3RyaW5nIHtcclxuICAgIC8vIE5vIHZhbHVlIGF0IGFsbFxyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgICAvLyBBIHN0cmluZ1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpXHJcbiAgICAgIHZhbHVlID0gdGhpcy5wYXJzZURhdGUodmFsdWUgYXMgc3RyaW5nKTtcclxuICAgIC8vIE5vdCBhIGRhdGUgXHJcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgdmFsdWUuZ2V0VGltZSgpKSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAvLyBGb3JtYXRcclxuICAgIHN3aXRjaCAoZm10KSB7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5TaG9ydDogcmV0dXJuIGZvcm1hdCh2YWx1ZSwgXCJkZC9NTS95eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Mb25nOiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcImQgTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Mb25nV2l0aFNob3J0TW9udGg6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiZCBNTU0geXl5eVwiLCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgICBjYXNlIERhdGVGb3JtYXQuTG9uZ1dpdGhXZWVrRGF5OiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcIkVFRUUsIGQgTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Mb25nV2l0aFNob3J0V2Vla0RheTogcmV0dXJuIGZvcm1hdCh2YWx1ZSwgXCJFRUUsIGQgTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Nb250aEFuZFllYXI6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiTU1NIHl5eXlcIiwgeyBsb2NhbGU6IGxvY2FsZSB9KTtcclxuICAgICAgY2FzZSBEYXRlRm9ybWF0LkxvbmdNb250aEFuZFllYXI6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5XZWVrRGF5OiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcIkVFRSwgZFwiLCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgICBjYXNlIERhdGVGb3JtYXQuTG9uZ1dlZWtEYXk6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiRUVFRSwgZFwiLCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgICBjYXNlIERhdGVGb3JtYXQuRGF5QW5kTW9udGg6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiZCBNTU1NXCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5TaG9ydFVTOiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcIk1NL2RkL3l5eXlcIiwgeyBsb2NhbGU6IGxvY2FsZSB9KTtcclxuICAgICAgY2FzZSBEYXRlRm9ybWF0LlNob3J0SVNPODYwMTogcmV0dXJuIGZvcm1hdCh2YWx1ZSwgXCJ5eXl5LU1NLWRkXCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdCh2YWx1ZSwgZm10LCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGFuIGl0YWxpYW4gbG9jYWwgZGF0ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgOiB0aGUgZGF0ZVxyXG4gICAqIEByZXR1cm5zICAgICA6IHRoZSBuZXcgZGF0ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyB0b0xvY2FsRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyk6IERhdGUge1xyXG4gICAgLy8gTm8gdmFsdWUgYXQgYWxsXHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcclxuICAgIC8vIEEgc3RyaW5nXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZylcclxuICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlRGF0ZSh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgLy8gTm90IGEgZGF0ZVxyXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmIHZhbHVlLmdldFRpbWUoKSkpIHJldHVybiBudWxsO1xyXG4gICAgLy8gVXBkYXRlIGRhdGVcclxuICAgIHJldHVybiBzZXRIb3Vycyh2YWx1ZSwgMik7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGEgRGF0ZUludGVydmFsIG9iamVjdCBhY2NvcmRpbmcgdG8gYSBzdHJpbmdcclxuICAgKiBAcGFyYW0gdmFsdWUgICAgICAgOiBzdHJpbmcgdmFsdWVcclxuICAgKiBAcGFyYW0gaW50ZXJ2YWwgICAgOiBEYXRlSW50ZXJ2YWwgdmFsdWUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGVuZCAgICAgICAgIDogdHJ1ZSBpZiBtdXN0IGJlIHVwZGF0ZWQgdGhlIGZpcnN0IG9yIHRoZSBlbmQgdmFsdWUgXHJcbiAgICogQHBhcmFtIGNvcHkgICAgICAgIDogY29weSB0aGUgc2FtZSB2YWx1ZSAod29ya3Mgb25seSBpZiBub3QgZW5kIGVsZW1lbnQpXHJcbiAgICovXHJcbiAgc3RhdGljIGNoYW5nZURhdGVJbnRlcnZhbCh2YWx1ZTogc3RyaW5nLCBpbnRlcnZhbDogRGF0ZUludGVydmFsLCBlbmQ6IGJvb2xlYW4gPSBmYWxzZSwgY29weTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IHllYXIgPSAtMTtcclxuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gNCAmJiAoeWVhciA9IHBhcnNlSW50KHZhbHVlKSkgPiAxNzUwKSB7XHJcbiAgICAgICAgaWYgKCFlbmQpIHtcclxuICAgICAgICAgIGludGVydmFsLmZyb20gPSBmcm9tWm9uZWRUaW1lIChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSwgJ1VUQycpO1xyXG4gICAgICAgICAgaW50ZXJ2YWwudG8gPSBmcm9tWm9uZWRUaW1lIChuZXcgRGF0ZSh5ZWFyLCAxMSwgMzEpLCAnVVRDJyk7XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICBpbnRlcnZhbC50byA9IG5ldyBEYXRlKHllYXIsIDExLCAzMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHBhcnRzID0gdGhpcy5nZXREYXRlUGFydHModmFsdWUpO1xyXG4gICAgICAgIGlmICghcGFydHMgfHwgaXNOYU4ocGFydHNbMF0pIHx8IHBhcnRzWzBdIDwgMCB8fCBwYXJ0c1swXSA8IDE3NTApIHJldHVybjtcclxuICAgICAgICBjb25zdCBkID0gZnJvbVpvbmVkVGltZSAobmV3IERhdGUocGFydHNbMF0sIHBhcnRzWzFdLCBwYXJ0c1syXSksICdVVEMnKTtcclxuICAgICAgICBpZiAoZW5kKVxyXG4gICAgICAgICAgaW50ZXJ2YWwudG8gPSBkO1xyXG4gICAgICAgIGVsc2UgaWYgKGNvcHkpIHtcclxuICAgICAgICAgIGludGVydmFsLmZyb20gPSBkO1xyXG4gICAgICAgICAgaW50ZXJ2YWwudG8gPSBkO1xyXG4gICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgaW50ZXJ2YWwuZnJvbSA9IGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuY29kZSB1cmxcclxuICAgKiBAcGFyYW0gdmFsdWUgOiB0aGUgdmFsdWUgdG8gZW5jb2RlXHJcbiAgICogQHJldHVybnMgICAgIDogdGhlIHVybCBlbmNvZGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyB1cmxFbmNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlY29kZSB1cmxcclxuICAgKiBAcGFyYW0gdmFsdWUgOiB0aGUgdXJsIHRvIGRlY29kZVxyXG4gICAqIEByZXR1cm5zICAgICA6IHRoZSBkZWNvZGUgdXJsIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyB1cmxEZWNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWdleCA9IC9cXCsvZztcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoKHZhbHVlICsgXCJcIikucmVwbGFjZShyZWdleCwgXCIlMjBcIikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgcXVlcnlzdHJpbmcgcGFyYW1ldGVyIHZhbHVlXHJcbiAgICogQHBhcmFtIG5hbWUgIDogdGhlIHBhcmFtZXRlciBuYW1lXHJcbiAgICogQHJldHVybnMgICAgIDogdGhlIHN0cmluZyB2YWx1ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyBnZXRRdWVyeVN0cmluZ1ZhbHVlQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKCkpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICBpZiAodXJsLmluY2x1ZGVzKFwiP1wiKSkge1xyXG4gICAgICBjb25zdCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoeyBmcm9tU3RyaW5nOiB1cmwuc3BsaXQoXCI/XCIpWzFdIH0pO1xyXG4gICAgICBjb25zdCB2ID0gZGVjb2RlVVJJQ29tcG9uZW50KGh0dHBQYXJhbXMuZ2V0KG5hbWUpKTtcclxuICAgICAgaWYgKHYgIT09IFwibnVsbFwiKSByZXR1cm4gdjtcclxuICAgICAgZWxzZSByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgYSBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIDogdGhlIHBhc3N3b3JkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBnZW5lcmF0ZVBhc3N3b3JkKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByYW5kb20gPSBcIiRcIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKC03KTtcclxuICAgIGxldCBwYXNzd29yZCA9IFwiXCI7XHJcbiAgICBsZXQgaGFzVXBwZXJDYXNlID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IHJuZCBvZiByYW5kb20pIHtcclxuICAgICAgaWYgKCFoYXNVcHBlckNhc2UgJiYgXCJhYmNkZWZnaGppbG1ub3BxcnN0dXZ5d3h6XCIuaW5jbHVkZXMocm5kKSkge1xyXG4gICAgICAgIHBhc3N3b3JkICs9IHJuZC50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGhhc1VwcGVyQ2FzZSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFzc3dvcmQgKz0gcm5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWhhc1VwcGVyQ2FzZSlcclxuICAgICAgcGFzc3dvcmQgPSBwYXNzd29yZC5zdWJzdHJpbmcoMCwgNykgKyBcIk1cIjtcclxuICAgIHJldHVybiBwYXNzd29yZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgYnJvd3NlciBzdXBwb3J0cyB0b3VjaFxyXG4gICAqIEByZXR1cm5zIDogdHJ1ZSBpZiB0aGUgZGlzcGxheSBpcyB0b3VjaGFibGVcclxuICAgKi9cclxuICBzdGF0aWMgaXNUb3VjaGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmlzQnJvd3NlcigpICYmIChcclxuICAgICAgICBcIm9udG91Y2hzdGFydFwiIGluIHdpbmRvdyB8fFxyXG4gICAgICAgIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBjaGVjayB3aWxsIHByZXZlbnQgJ3dpbmRvdycgbG9naWMgdG8gYmUgZXhlY3V0ZWRcclxuICAgKiB3aGlsZSBleGVjdXRpbmcgdGhlIHNlcnZlciByZW5kZXJpbmdcclxuICAgKiBAcmV0dXJucyA6IHRydWUgaWYgdXNpbmcgdGhlIGJyb3dzZXJcclxuICAgKi9cclxuICBzdGF0aWMgaXNCcm93c2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiAod2luZG93KSAhPT0gJ3VuZGVmaW5lZCc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogQ29udmVydCBmb2xkZXJzIGluIGEgdHJlZSBvZiBOb2RlIG9iamVjdC5cclxuICogQHBhcmFtIGZvbGRlcnMgOiB0aGUgc3ViZm9sZGVycyBncm91cCBvciBudWxsIHRvIHJvb3RcclxuICogQHJldHVybnMgICAgICAgOiBhIG5vZGUgbGlzdFxyXG4gKi9cclxuICBzdGF0aWMgdG9Ob2Rlcyhmb2xkZXJzOiBJTm9kZVtdKTogSU5vZGVbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG9Ob2Rlcyhmb2xkZXJzLCB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBmb2xkZXJzIGluIGEgdHJlZSBvZiBOb2RlIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZm9sZGVycyA6IHRoZSBjaGlsZHJlbiBncm91cCBvciBudWxsIHRvIHJvb3RcclxuICAgKiBAcGFyYW0gcGFyZW50ICA6IHRoZSBwYXJlbnQgbm9kZVxyXG4gICAqIEByZXR1cm5zICAgICAgIDogYSBub2RlIGxpc3QgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX3RvTm9kZXMoZm9sZGVyczogSU5vZGVbXSwgcGFyZW50OiBJTm9kZSB8IHVuZGVmaW5lZCk6IElOb2RlW10ge1xyXG4gICAgY29uc3Qgbm9kZXM6IElOb2RlW10gPSBbXTtcclxuICAgIGZvbGRlcnMuZm9yRWFjaCgobjogSU5vZGUpID0+IHtcclxuICAgICAgY29uc3Qgbm9kZTogSU5vZGUgPSB7XHJcbiAgICAgICAgaWQ6IG4uaWQsXHJcbiAgICAgICAgbmFtZTogbi5uYW1lLFxyXG4gICAgICAgIGNvdW50OiBuLmNvdW50LFxyXG4gICAgICAgIHBhcmVudDogcGFyZW50LFxyXG4gICAgICAgIGNoaWxkcmVuOiB1bmRlZmluZWQsXHJcbiAgICAgICAgYmFnOiBuLFxyXG4gICAgICB9O1xyXG4gICAgICBub2RlLmNoaWxkcmVuID1cclxuICAgICAgICBuLmNoaWxkcmVuICYmIG4uY2hpbGRyZW4ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgPyB0aGlzLl90b05vZGVzKG4uY2hpbGRyZW4sIG5vZGUpXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
637
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NvcmUvc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFHLE1BQU0sYUFBYSxDQUFDO0FBWTdDLE1BQU0sQ0FBTixJQUFZLFVBYVg7QUFiRCxXQUFZLFVBQVU7SUFDcEIsNkNBQVMsQ0FBQTtJQUNULDJDQUFRLENBQUE7SUFDUix1RUFBc0IsQ0FBQTtJQUN0QixpRUFBbUIsQ0FBQTtJQUNuQiwyRUFBd0IsQ0FBQTtJQUN4QiwyREFBZ0IsQ0FBQTtJQUNoQixtRUFBb0IsQ0FBQTtJQUNwQixpREFBVyxDQUFBO0lBQ1gseURBQWUsQ0FBQTtJQUNmLDBEQUFnQixDQUFBO0lBQ2hCLGtEQUFZLENBQUE7SUFDWiw0REFBaUIsQ0FBQSxDQUFTLGFBQWE7QUFDekMsQ0FBQyxFQWJXLFVBQVUsS0FBVixVQUFVLFFBYXJCO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFDdEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBSSxLQUFVLEVBQUUsR0FBVyxFQUFFLEtBQVE7UUFDeEQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENB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QkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7b0JBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IERhdGVJbnRlcnZhbCB9IGZyb20gJy4vZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlLCBwYXJzZUlTTywgc2V0SG91cnMgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IGl0IH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlJztcclxuaW1wb3J0IHsgZnJvbVpvbmVkVGltZSAgfSBmcm9tICdkYXRlLWZucy10eic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb3VudD86IG51bWJlciB8IG51bGw7XHJcbiAgY2hpbGRyZW4/OiBJTm9kZVtdIHwgbnVsbDtcclxuICBwYXJlbnQ/OiBJTm9kZSB8IG51bGw7XHJcbiAgYmFnPzogYW55XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBEYXRlRm9ybWF0IHtcclxuICBTaG9ydCA9IDEsICAgICAgICAgICAgICAgIC8vIGRkL21tL3l5eXlcclxuICBMb25nID0gMiwgICAgICAgICAgICAgICAgIC8vIGQgbW1tbSB5eXl5XHJcbiAgTG9uZ1dpdGhTaG9ydE1vbnRoID0gMywgICAvLyBkIG1tbSB5eXl5XHJcbiAgTG9uZ1dpdGhXZWVrRGF5ID0gNCwgICAgICAvLyB3d3d3LCBkIG1tbW0geXl5eVxyXG4gIExvbmdXaXRoU2hvcnRXZWVrRGF5ID0gNSwgLy8gd3d3LCBkIG1tbW0geXl5eVxyXG4gIE1vbnRoQW5kWWVhciA9IDYsICAgICAgICAgLy8gbW1tIHl5eXlcclxuICBMb25nTW9udGhBbmRZZWFyID0gNywgICAgIC8vIG1tbW0geXl5eVxyXG4gIFdlZWtEYXkgPSA4LCAgICAgICAgICAgICAgLy8gd3d3IGRcclxuICBMb25nV2Vla0RheSA9IDksICAgICAgICAgIC8vIHd3d3cgZFxyXG4gIERheUFuZE1vbnRoID0gMTAsICAgICAgICAgLy8gZCBtbW1tXHJcbiAgU2hvcnRVUyA9IDExLCAgICAgICAgICAgICAvLyBtbS9kZC95eXl5XHJcbiAgU2hvcnRJU084NjAxID0gMTIgICAgICAgICAvLyB5eXl5LW1tLWRkXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1VdGlscyB7XHJcbiAgLyoqXHJcbiAgICogQXJyYXkgZmluZCBieSBrZXlcclxuICAgKiBAcGFyYW0gYXJyYXkgICAgIDogdGhlIGFycmF5IHRvIHNjYW5cclxuICAgKiBAcGFyYW0ga2V5ICAgICAgIDoga2V5IG5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWUgICAgIDogdGhlIHZhbHVlIHRvIHNlYXJjaCBmb3JcclxuICAgKiBAcmV0dXJucyAgICAgICAgIDogdGhlIHByb3BlcnR5IHZhbHVlIG9yIG51bGxcclxuICAgKi9cclxuICBzdGF0aWMgYXJyYXlGaW5kQnlLZXk8VD4oYXJyYXk6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogYW55IHtcclxuICAgIGlmICghYXJyYXkpIHJldHVybiBudWxsO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICAgIGlmIChpdGVtW2tleV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXJyYXkgZmluZCBpbmRleCBieSBrZXlcclxuICAgKiBAcGFyYW0gYXJyYXkgICA6IHRoZSBhcnJheSB0byBzY2FuXHJcbiAgICogQHBhcmFtIGtleSAgICAgOiB0aGUga2V5IG5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWUgICA6IHRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yXHJcbiAgICogQHJldHVybnMgICAgICAgOiB0aGUgYXJyYXkgaW5kZXggb3IgLTEgaWYgbm90IGZvdW5kXHJcbiAgICovXHJcbiAgc3RhdGljIGFycmF5RmluZEluZGV4QnlLZXk8VD4oYXJyYXk6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogbnVtYmVyIHtcclxuICAgIGlmICghYXJyYXkpIHJldHVybiBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXJyYXlbaV1ba2V5XSA9PT0gdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgdmFsdWUgZnJvbSBhbmQgYXJyYXkgbWFkZSBvZiBuYW1lfHZhbHVlIGl0ZW1zXHJcbiAgICogQHBhcmFtIGFycmF5ICAgOiB0aGUgYXJyYXkgdG8gc2NhblxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgIDogdGhlIHZhbHVlIHRvIHNlYXJjaCBmb3JcclxuICAgKiBAcmV0dXJucyAgICAgICA6IHRoZSBwcm9wZXJ0eSB2YWx1ZSBvciBudWxsIGlmIG5vdCBmb3VuZFxyXG4gICAqL1xyXG4gIHN0YXRpYyBhcnJheUdldFZhbHVlPFQ+KGFycmF5OiBhbnksIHZhbHVlOiBUKTogYW55IHtcclxuICAgIGlmICghYXJyYXkpIHJldHVybiBudWxsO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXJyYXlbaV0udmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5W2ldLm5hbWUgfHwgYXJyYXlbaV0uaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBpdGVtcyB0byBub2RlcyBpbnRvIGEgdHJlZSBzdHJ1Y3R1cmVcclxuICAgKiBAcGFyYW0gaXRlbXMgICA6IGxpc3Qgb2Ygbm9kZXNcclxuICAgKiBAcGFyYW0gcGFyZW50ICA6IHBhcmVudCBub2RlXHJcbiAgICogQHJldHVybnMgICAgICAgOiBhbiBhcnJheSBvZiBJTm9kZSBvYmplY3RzXHJcbiAgICovXHJcbiAgc3RhdGljIGFycmF5VG9Ob2RlcyhpdGVtczogSU5vZGVbXSwgcGFyZW50OiBJTm9kZSA9IG51bGwpOiBJTm9kZVtdIHtcclxuICAgIGNvbnN0IG5vZGVzOiBJTm9kZVtdID0gW107XHJcbiAgICBpdGVtcy5mb3JFYWNoKChuKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5vZGU6IElOb2RlID0ge1xyXG4gICAgICAgIGlkOiBuLmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgbmFtZTogbi5uYW1lLFxyXG4gICAgICAgIGNvdW50OiBuLmNvdW50ID8gbi5jb3VudCA6IDAsXHJcbiAgICAgICAgY2hpbGRyZW46IG51bGwsXHJcbiAgICAgICAgcGFyZW50LFxyXG4gICAgICAgIGJhZzogbixcclxuICAgICAgfTtcclxuICAgICAgbm9kZXMucHVzaChub2RlKTtcclxuICAgICAgbm9kZS5jaGlsZHJlbiA9XHJcbiAgICAgICAgbi5jaGlsZHJlbiAmJiBuLmNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5hcnJheVRvTm9kZXMobi5jaGlsZHJlbiwgbm9kZSlcclxuICAgICAgICAgIDogW107XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBub2RlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gY29wYXJlIGl0ZW1zIGR1cmluZyBhbiBhcnJheSBvZiBvYmplY3RzIHNvcnRpbmdcclxuICAgKiBAcGFyYW0ga2V5ICAgICA6IHRoZSBwcm9wZXJ0eSBuYW1lIHRvIHNvcnQgZm9yXHJcbiAgICogQHBhcmFtIG9yZGVyICAgOiB0aGUgb3JkZXIgJ2FzYycgb3IgJ2Rlc2MnXHJcbiAgICogQHJldHVybnMgICAgICAgOiAwIGlmIGVxdWFscywgMSBpZiBiaWdnZXIsIC0xIGlmIGxvd2VyXHJcbiAgICovXHJcbiAgc3RhdGljIGFycmF5U29ydENvbXBhcmUoa2V5OiBzdHJpbmcsIG9yZGVyOiBzdHJpbmcgPSBcImFzY1wiKSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBmdW5jdGlvbiBpbm5lclNvcnQoYTogYW55LCBiOiBhbnkpIHtcclxuICAgICAgaWYgKCFhLmhhc093blByb3BlcnR5KGtleSkgfHwgIWIuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIC8vIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3Qgb24gZWl0aGVyIG9iamVjdFxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhckEgPSB0eXBlb2YgYVtrZXldID09PSBcInN0cmluZ1wiID8gYVtrZXldLnRvVXBwZXJDYXNlKCkgOiBhW2tleV07XHJcbiAgICAgIGNvbnN0IHZhckIgPSB0eXBlb2YgYltrZXldID09PSBcInN0cmluZ1wiID8gYltrZXldLnRvVXBwZXJDYXNlKCkgOiBiW2tleV07XHJcbiAgICAgIGxldCBjb21wYXJpc29uID0gMDtcclxuICAgICAgaWYgKHZhckEgPiB2YXJCKSBjb21wYXJpc29uID0gMTtcclxuICAgICAgZWxzZSBpZiAodmFyQSA8IHZhckIpIGNvbXBhcmlzb24gPSAtMTtcclxuICAgICAgcmV0dXJuIG9yZGVyID09PSBcImRlc2NcIiA/IGNvbXBhcmlzb24gKiAtMSA6IGNvbXBhcmlzb247XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCB3ZWlnaHRcclxuICAgKiBAcGFyYW0gZ3IgICAgOiBncmFtc1xyXG4gICAqIEByZXR1cm5zICAgICA6IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGZvcm1hdFdlaWdodChncjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChnciA+IDEwMDAwMDApIHJldHVybiAoZ3IgLyAxMDAwMDAwKS50b0ZpeGVkKDIpICsgXCIgdFwiO1xyXG4gICAgZWxzZSBpZiAoZ3IgPiAxMDAwMDApIHJldHVybiAoZ3IgLyAxMDAwMDApLnRvRml4ZWQoMikgKyBcIiBxXCI7XHJcbiAgICBlbHNlIGlmIChnciA+IDEwMDApIHJldHVybiAoZ3IgLyAxMDAwKS50b0ZpeGVkKDIpICsgXCIga2dcIjtcclxuICAgIGVsc2UgcmV0dXJuIGdyICsgXCIgZ3JcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCBmaWxlIHNpemVcclxuICAgKiBAcGFyYW0gYnl0ZXMgOiBudW1iZXIgb2YgYnl0ZXNcclxuICAgKiBAcmV0dXJucyAgICAgOiB0aGUgZm9ybWF0dGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChieXRlcyA+IDEwMjQwMDApIHJldHVybiAoYnl0ZXMgLyAxMDI0MDAwKS50b0ZpeGVkKDEpICsgXCIgTUJcIjtcclxuICAgIGlmIChieXRlcyA+IDEwMjQpIHJldHVybiAoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCIgS2JcIjtcclxuICAgIHJldHVybiBieXRlcyArIFwiIGJ5dGVcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBhcmUgdHdvIHN0cmluZ1xyXG4gICAqIEBwYXJhbSBhICAgOiBzdHJpbmcgYVxyXG4gICAqIEBwYXJhbSBiICAgOiBzdHJpbmcgYlxyXG4gICAqIEByZXR1cm5zICAgOiAwIGlmIGVxdWFscywgMSBpZiBiaWdnZXIsIC0xIGlmIGxvd2VyXHJcbiAgICovXHJcbiAgc3RhdGljIGNvbXBhcmVTdHJpbmcoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKChhID8/IFwiXCIpLnRvTG93ZXJDYXNlKCkgPiAoYiA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTtcclxuICAgIGlmICgoYSA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpIDwgKGIgPz8gXCJcIikudG9Mb3dlckNhc2UoKSkgcmV0dXJuIC0xO1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYXBpdGFsaXplIGEgc3RyaW5nXHJcbiAgICogQHBhcmFtIHMgICA6IHRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZVxyXG4gICAqIEByZXR1cm5zICAgOiB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nICBcclxuICAgKi9cclxuICBzdGF0aWMgY2FwaXRhbGl6ZShzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFzKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBiID0gXCJcIjtcclxuICAgIGxldCBjYXAgPSB0cnVlO1xyXG4gICAgZm9yIChjb25zdCBjaGFyIG9mIHMpIHtcclxuICAgICAgaWYgKGNoYXIgPT09IFwiIFwiKSB7XHJcbiAgICAgICAgYiArPSBjaGFyO1xyXG4gICAgICAgIGNhcCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2FwKSB7XHJcbiAgICAgICAgYiArPSBjaGFyLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY2FwID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYiArPSBjaGFyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBiO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1bmNhdGUgYSBzdHJpbmdcclxuICAgKiBAcGFyYW0gcyAgICAgOiB0aGUgc3RyaW5nIHRvIHRydW5jYXRlXHJcbiAgICogQHBhcmFtIG1heCAgIDogdGhlIG1heCBudW1iZXIgb2YgY2hhcnNcclxuICAgKiBAcmV0dXJucyAgICAgOiB0aGUgdHJ1bmNhdGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyB0cnVuY2F0ZShzOiBzdHJpbmcsIG1heDogbnVtYmVyID0gNTAwKTogc3RyaW5nIHtcclxuICAgIGlmICghcykgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAocy5sZW5ndGggPCBtYXgpIHJldHVybiBzO1xyXG4gICAgbGV0IGkgPSBtYXggLSAxO1xyXG4gICAgd2hpbGUgKGkgPiAwKSB7XHJcbiAgICAgIGlmIChzW2ldID09PSAnICcpIHJldHVybiBzLnNsaWNlKDAsIGkpO1xyXG4gICAgICBpLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEpvaW4gYSBsaXN0IG9mIHN0cmluZ3NcclxuICAgKiBAcGFyYW0gaXRlbXMgICAgIDogdGhlIGxpc3Qgb2Ygc3RyaW5nc1xyXG4gICAqIEBwYXJhbSBzZXAgICAgICAgOiB0aGUgc2VwYXJhdG9yIHN0cmluZ1xyXG4gICAqIEBwYXJhbSBtYXggICAgICAgOiB0aGUgbWF4aW11bSByZXN1bHRpbmcgc3RyaW5nXHJcbiAgICogQHJldHVybnMgICAgICAgICA6IHRoZSBqb2luZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGpvaW4oaXRlbXM6IHN0cmluZ1tdLCBzZXA6IHN0cmluZyA9IFwiIFwiLCBtYXg6IG51bWJlciA9IDM1MCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoaXRlbXMubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgbCA9IDA7XHJcbiAgICAgIGxldCBzID0gXCJcIlxyXG4gICAgICB3aGlsZSAocy5sZW5ndGggPCBtYXggJiYgaXRlbXMubGVuZ3RoID4gbCkge1xyXG4gICAgICAgIGlmIChsID4gMCkge1xyXG4gICAgICAgICAgcyArPSBzZXA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHMgKz0gaXRlbXNbbCsrXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID4gbCkge1xyXG4gICAgICAgIHMgKz0gXCIuLi5cIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcztcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtc1swXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlcGxhY2Ugc3R1ZmYgaW4gdGV4dCBodG1sXHJcbiAgICogQHBhcmFtIHMgICA6IHRoZSBzdHJpbmcgdG8gcHJvY2Vzc1xyXG4gICAqIEByZXR1cm5zICAgOiB0aGUgcmVwbGFjZWQgc3RyaW5nICBcclxuICAgKi9cclxuICBzdGF0aWMgcmVwbGFjZUFzSHRtbChzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmVnZXggPSAvaHR0cHM/OlxcL1xcLy4qW15cXHNdL2lnXHJcbiAgICBjb25zdCBtID0gcmVnZXguZXhlYyhzKTtcclxuICAgIGlmIChtICYmIG0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgdiA9IG51bGw7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHYgPSBtW2ldO1xyXG4gICAgICAgIHMgPSBzLnJlcGxhY2UodiwgJzxhIGhyZWY9XCInICsgdiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsgdiArICc8L2E+Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyZSB0d28gbmFtZXNcclxuICAgKiBAcGFyYW0gYSAgIDogbmFtZSBhXHJcbiAgICogQHBhcmFtIGIgICA6IG5hbWUgYlxyXG4gICAqIEByZXR1cm5zICAgOiB0cnVlIGlmIGEgZXF1YWxzIGJcclxuICAgKi9cclxuICBzdGF0aWMgY29tcGFyZU5hbWVzKGE6IHN0cmluZywgYjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYSkgYSA9IGEudHJpbSgpO1xyXG4gICAgaWYgKGIpIGIgPSBiLnRyaW0oKTtcclxuICAgIGlmIChhICYmIGIgJiYgYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5jb21wYXJlU3RyaW5nKGEsIGIpID09PSAwKSByZXR1cm4gdHJ1ZTtcclxuICAgIGNvbnN0IHAxID0gYS5zcGxpdChcIiBcIik7XHJcbiAgICBjb25zdCBwMiA9IGIuc3BsaXQoXCIgXCIpO1xyXG4gICAgaWYgKHAxLmxlbmd0aCAhPT0gcDIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgbWF0Y2hlcyA9IHAxLmxlbmd0aDtcclxuICAgIGZvciAoY29uc3QgczEgb2YgcDEpIHtcclxuICAgICAgZm9yIChjb25zdCBzMiBvZiBwMikge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhcmVTdHJpbmcoczEsIHMyKSA9PT0gMCkge1xyXG4gICAgICAgICAgbWF0Y2hlcy0tO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1hdGNoZXMgPT09IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaXBoZXIgYSB0ZXh0XHJcbiAgICogQHBhcmFtIHRleHQgICAgOiB0aGUgdGV4dFxyXG4gICAqIEBwYXJhbSBrZXkgICAgIDogdGhlIGtleVxyXG4gICAqIEBwYXJhbSByZXZlcnNlIDogdHJ1ZSB0byBkZWNvZGUsIGZhbHNlIHRvIGVuY29kZVxyXG4gICAqIEByZXR1cm5zICAgICAgIDp0aGUgY2lwaGVyZWQgdGV4dFxyXG4gICAqL1xyXG4gIHN0YXRpYyBjaXBoZXIodGV4dDogYW55LCBrZXk6IGFueSwgcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIC8vIFN1cnJvZ2F0ZSBwYWlyIGxpbWl0XHJcbiAgICB2YXIgYm91bmQgPSAweDEwMDAwO1xyXG5cclxuICAgIC8vIENyZWF0ZSBzdHJpbmcgZnJvbSBjaGFyYWN0ZXIgY29kZXNcclxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxyXG4gICAgICBudWxsLFxyXG4gICAgICAvLyBUdXJuIHN0cmluZyB0byBjaGFyYWN0ZXIgY29kZXNcclxuICAgICAgdGV4dC5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24gKHY6IGFueSwgaTogbnVtYmVyKSB7XHJcbiAgICAgICAgLy8gR2V0IHJvdGF0aW9uIGZyb20ga2V5XHJcbiAgICAgICAgdmFyIHJvdGF0aW9uID0ga2V5W2kgJSBrZXkubGVuZ3RoXS5jaGFyQ29kZUF0KCk7XHJcblxyXG4gICAgICAgIC8vIEFyZSB3ZSBkZWNyeXB0aW5nP1xyXG4gICAgICAgIGlmIChyZXZlcnNlKSByb3RhdGlvbiA9IC1yb3RhdGlvbjtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIGN1cnJlbnQgY2hhcmFjdGVyIGNvZGUgKyByb3RhdGlvblxyXG4gICAgICAgIHJldHVybiAodi5jaGFyQ29kZUF0KCkgKyByb3RhdGlvbiArIGJvdW5kKSAlIGJvdW5kO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb25lIGFuIG9iamVjdCB1c2luZyBKU09OXHJcbiAgICogQHBhcmFtIG9iaiA6IHRoZSBvYmxlY3QgdG8gY2xvbmVcclxuICAgKiBAcmV0dXJucyAgIDogYSBuZXcgb2JqZWN0XHJcbiAgICovXHJcbiAgc3RhdGljIGNsb25lKG9iajogYW55KTogYW55IHtcclxuICAgIGlmICghb2JqKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvbmUgYW4gb2JqZWN0IHVzaW5nIGRlZXAgY2xvbmluZ1xyXG4gICAqIEBwYXJhbSBvYmogICA6IHRoZSBvYmxlY3QgdG8gY2xvbmVcclxuICAgKiBAcmV0dXJucyAgICAgOiBhIG5ldyBvYmplY3RcclxuICAgKi9cclxuICBzdGF0aWMgZGVlcENsb25lPFQ+KG9iajogYW55LCBkZXN0OiBUID0gbnVsbCk6IFQge1xyXG4gICAgY29uc3QgY2xvbmVPYmogPSBkZXN0ID8gZGVzdCA6IChvYmouY29uc3RydWN0b3IoKSBhcyBhbnkpO1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKG9iaik7XHJcbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XHJcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gb2JqW2F0dHJpYnV0ZV07XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09IFwib2JqZWN0XCIgJiYgcHJvcGVydHkgIT0gbnVsbCkge1xyXG4gICAgICAgIGNsb25lT2JqW2F0dHJpYnV0ZV0gPSB0aGlzLmRlZXBDbG9uZShwcm9wZXJ0eSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xvbmVPYmpbYXR0cmlidXRlXSA9IHByb3BlcnR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmVPYmo7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSBzdHJpbmcgaXMgYSB2YWxpZCBVVUlEXHJcbiAgICogQHBhcmFtIHZhbHVlICAgOiB0aGUgdmFsdWUgdG8gcGFyc2VcclxuICAgKiBAcmV0dXJucyAgICAgICA6IHRydWUgaWYgaXMgYSB2YWxpZCBVVUlEXHJcbiAgICovXHJcbiAgc3RhdGljIHBhcnNlVVVJRCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZWdleCA9IC9eKHt8KCk/WzAtOWEtZkEtRl17OH0tKFswLTlhLWZBLUZdezR9LSl7M31bMC05YS1mQS1GXXsxMn0ofXwpKT8kLztcclxuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGFuZCBlbnN1cmUgdGhhdCBVVUlEIGlzIG5vdCBlbXB0eVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgIDogdGhlIHZhbHVlIHRvIHBhcnNlXHJcbiAgICogQHJldHVybnMgICAgICAgOiB0cnVlIGlmIHZhbGlkIGFuZCBub3QgZW1wdHlcclxuICAgKi9cclxuICBzdGF0aWMgcGFyc2VVVUlETm90RW1wdHkodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVnZXggPSAvXih7fCgpPzB7OH0tKDB7NH0tKXszfTB7MTJ9KH18KSk/JC87XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZVVVSUQodmFsdWUpICYmICFyZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIG5ldyBVVUlEXHJcbiAgICogQHJldHVybnMgOiB0aGUgc3RyaW5nIFVVSURcclxuICAgKi9cclxuICBzdGF0aWMgZ2VuZXJhdGVVVUlEKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWdleCA9IC9beHldL2c7XHJcbiAgICByZXR1cm4gXCJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcIi5yZXBsYWNlKHJlZ2V4LCBmdW5jdGlvbiAoYykge1xyXG4gICAgICB2YXIgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcclxuICAgICAgICB2ID0gYyA9PT0gXCJ4XCIgPyByIDogKHIgJiAweDMpIHwgMHg4O1xyXG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGEgdGV4dCBhbmQgcmV0dXJuIHRydWUgaWYgaXMgYSB2YWxpZCBlbWFpbCBvciBudWxsXHJcbiAgICogQHBhcmFtIHZhbHVlIDogZW1haWxcclxuICAgKiBAcmV0dXJucyAgICAgOiB0cnVlIGlmIHRoZSBlbWFpbCBpcyB2YWxpZCBvciBlbXB0eVxyXG4gICAqL1xyXG4gIHN0YXRpYyBwYXJzZUVtYWlsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB0cnVlO1xyXG4gICAgY29uc3QgcmVnZXggPSAvKD86W2EtejAtOSshIyQlJicqK1xcLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqK1xcLz0/Xl9ge3x9fi1dKykqfFwiKD86W1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkqXCIpQCg/Oig/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT98XFxbKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT98W2EtejAtOS1dKlthLXowLTldOig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxLVxceDVhXFx4NTMtXFx4N2ZdfFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSspXFxdKS9naVxyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgYSB0ZXh0IGFuZCByZXR1cm4gdHJ1ZSBpZiBpcyBhIHZhbGlkIHVybCBvciBudWxsXHJcbiAgICogQHBhcmFtIHZhbHVlIDogdGhlIHVybCB0byBwYXJzZVxyXG4gICAqIEByZXR1cm5zICAgICA6IHRydWUgaWYgdGhlIHVybCBpcyB2YWxpZCBvciBlbXB0eVxyXG4gICAqL1xyXG4gIHN0YXRpYyBwYXJzZVVybCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdHJ1ZTtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgXCIoaHR0cHM/Oi8vKT8oW1xcXFxkYS16Li1dKylcXFxcLihbYS16Ll17Miw2fSlbL1xcXFx3IC4tXSovP1wiXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRhdGUgcGFydHMgZnJvbSBhIHN0cmluZyB2YWx1ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgIDogdGhlIHN0cmluZyB0byBwYXJzZVxyXG4gICAqIEByZXR1cm5zICAgICAgIDogYW4gYXJyYXkgb2YgbnVtYmVycyB3aXRoIHllYXIsIG1vbnRoLCBkYXlcclxuICAgKi9cclxuICBzdGF0aWMgZ2V0RGF0ZVBhcnRzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXJbXSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwYXJ0czogbnVtYmVyW10gPSBbXTtcclxuICAgIGlmICh2YWx1ZS5pbmRleE9mKFwiLVwiKSAhPT0gLTEpIHtcclxuICAgICAgY29uc3QgcCA9IHZhbHVlLnNwbGl0KFwiLVwiKTtcclxuICAgICAgaWYgKHAubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcclxuICAgICAgcGFydHMgPSBbcGFyc2VJbnQocFswXSksIHBhcnNlSW50KHBbMV0pIC0gMSwgcGFyc2VJbnQocFsyXSldO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5pbmRleE9mKFwiL1wiKSAhPT0gLTEpIHtcclxuICAgICAgY29uc3QgcCA9IHZhbHVlLnNwbGl0KFwiL1wiKTtcclxuICAgICAgaWYgKHAubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcclxuICAgICAgcGFydHMgPSBbcGFyc2VJbnQocFsyXSksIHBhcnNlSW50KHBbMV0pIC0gMSwgcGFyc2VJbnQocFswXSldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcnRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgYSBkYXRlXHJcbiAgICogQHBhcmFtIHZhbHVlICAgOiB0aGUgdmFsdWUgdG8gY2hlY2tcclxuICAgKiBAcGFyYW0gbG9jYWxlICA6IHRoZSBsb2NhbGUgdG8gdXNlXHJcbiAgICogQHJldHVybnMgICAgICAgOiBhIHZhbGlkIERhdGUgb2JqZWN0IG9yIG51bGxcclxuICAgKi9cclxuICBzdGF0aWMgcGFyc2VEYXRlKHZhbHVlOiBzdHJpbmcgfCBEYXRlLCBsb2NhbGU6IGFueSA9IGl0KTogRGF0ZSB7XHJcbiAgICAvLyBObyB2YWx1ZSBhdCBhbGxcclxuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgLy8gQSBEYXRlIHZhbHVlXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmIHZhbHVlLmdldFRpbWUoKSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gUGFyc2Uga25vd24gZm9ybWF0cyB1c2luZyBkYXRlLWZuc1xyXG4gICAgbGV0IGQgPSBwYXJzZUlTTyh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgaWYgKGQgJiYgZC5nZXRUaW1lKCkgJiYgZC5nZXRGdWxsWWVhcigpID4gMTc1MCkgcmV0dXJuIGQ7XHJcbiAgICBkID0gcGFyc2UodmFsdWUgYXMgc3RyaW5nLCAnZGQvTU0veXl5eScsIG5ldyBEYXRlKCksIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICBpZiAoZCAmJiBkLmdldFRpbWUoKSAmJiBkLmdldEZ1bGxZZWFyKCkgPiAxNzUwKSByZXR1cm4gZDtcclxuICAgIGQgPSBwYXJzZSh2YWx1ZSBhcyBzdHJpbmcsICd5eXl5LU1NLWRkJywgbmV3IERhdGUoKSwgeyBsb2NhbGU6IGxvY2FsZSB9KTtcclxuICAgIGlmIChkICYmIGQuZ2V0VGltZSgpICYmIGQuZ2V0RnVsbFllYXIoKSA+IDE3NTApIHJldHVybiBkO1xyXG4gICAgLy8gUGFyc2UgdmFsdWVzIG1hbnVhbGx5XHJcbiAgICBsZXQgcGFydHMgPSB0aGlzLmdldERhdGVQYXJ0cyh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgaWYgKHBhcnRzWzBdIDwgMTAwKSBwYXJ0c1swXSArPSAyMDAwO1xyXG4gICAgaWYgKGlzTmFOKHBhcnRzWzBdKSB8fCBwYXJ0c1swXSA8IDAgfHwgcGFydHNbMF0gPCAxNzUwKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChpc05hTihwYXJ0c1sxXSkgfHwgcGFydHNbMV0gPCAwKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChpc05hTihwYXJ0c1syXSkgfHwgcGFydHNbMl0gPCAwKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChwYXJ0c1sxXSA+IDExKSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChwYXJ0c1sxXSA9PT0gMSAmJiBwYXJ0c1syXSA+IDI5KSByZXR1cm4gbnVsbDtcclxuICAgIGVsc2UgaWYgKHBhcnRzWzFdICE9PSAxICYmIHBhcnRzWzJdID4gMzEpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHBhcnRzWzBdLCBwYXJ0c1sxXSwgcGFydHNbMl0sIDIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IGEgZGF0ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgICAgOiB0aGUgZGF0ZSBvciBzdHJpbmcgdG8gZm9ybWF0XHJcbiAgICogQHBhcmFtIGZtdCAgICAgICA6IHRoZSBEYXRlRm9ybWF0IHRvIHVzZSBvciB0aGUgc3RyaW5nIHBhdHRlcm5cclxuICAgKiBAcGFyYW0gbG9jYWxlICAgIDogdGhlIGxvY2FsZSB0byB1c2UgKGRlZmF1bHQgaXMgSVQpXHJcbiAgICogQHJldHVybnMgICAgICAgICA6IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGZvcm1hdERhdGUoXHJcbiAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyxcclxuICAgIGZtdDogRGF0ZUZvcm1hdCB8IHN0cmluZyA9IERhdGVGb3JtYXQuU2hvcnQsXHJcbiAgICBsb2NhbGU6IGFueSA9IGl0KTogc3RyaW5nIHtcclxuICAgIC8vIE5vIHZhbHVlIGF0IGFsbFxyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgICAvLyBBIHN0cmluZ1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpXHJcbiAgICAgIHZhbHVlID0gdGhpcy5wYXJzZURhdGUodmFsdWUgYXMgc3RyaW5nKTtcclxuICAgIC8vIE5vdCBhIGRhdGUgXHJcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgdmFsdWUuZ2V0VGltZSgpKSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAvLyBGb3JtYXRcclxuICAgIHN3aXRjaCAoZm10KSB7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5TaG9ydDogcmV0dXJuIGZvcm1hdCh2YWx1ZSwgXCJkZC9NTS95eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Mb25nOiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcImQgTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Mb25nV2l0aFNob3J0TW9udGg6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiZCBNTU0geXl5eVwiLCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgICBjYXNlIERhdGVGb3JtYXQuTG9uZ1dpdGhXZWVrRGF5OiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcIkVFRUUsIGQgTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Mb25nV2l0aFNob3J0V2Vla0RheTogcmV0dXJuIGZvcm1hdCh2YWx1ZSwgXCJFRUUsIGQgTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5Nb250aEFuZFllYXI6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiTU1NIHl5eXlcIiwgeyBsb2NhbGU6IGxvY2FsZSB9KTtcclxuICAgICAgY2FzZSBEYXRlRm9ybWF0LkxvbmdNb250aEFuZFllYXI6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiTU1NTSB5eXl5XCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5XZWVrRGF5OiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcIkVFRSwgZFwiLCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgICBjYXNlIERhdGVGb3JtYXQuTG9uZ1dlZWtEYXk6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiRUVFRSwgZFwiLCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgICBjYXNlIERhdGVGb3JtYXQuRGF5QW5kTW9udGg6IHJldHVybiBmb3JtYXQodmFsdWUsIFwiZCBNTU1NXCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGNhc2UgRGF0ZUZvcm1hdC5TaG9ydFVTOiByZXR1cm4gZm9ybWF0KHZhbHVlLCBcIk1NL2RkL3l5eXlcIiwgeyBsb2NhbGU6IGxvY2FsZSB9KTtcclxuICAgICAgY2FzZSBEYXRlRm9ybWF0LlNob3J0SVNPODYwMTogcmV0dXJuIGZvcm1hdCh2YWx1ZSwgXCJ5eXl5LU1NLWRkXCIsIHsgbG9jYWxlOiBsb2NhbGUgfSk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdCh2YWx1ZSwgZm10LCB7IGxvY2FsZTogbG9jYWxlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGFuIGl0YWxpYW4gbG9jYWwgZGF0ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgOiB0aGUgZGF0ZVxyXG4gICAqIEByZXR1cm5zICAgICA6IHRoZSBuZXcgZGF0ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyB0b0xvY2FsRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyk6IERhdGUge1xyXG4gICAgLy8gTm8gdmFsdWUgYXQgYWxsXHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcclxuICAgIC8vIEEgc3RyaW5nXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZylcclxuICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlRGF0ZSh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgLy8gTm90IGEgZGF0ZVxyXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmIHZhbHVlLmdldFRpbWUoKSkpIHJldHVybiBudWxsO1xyXG4gICAgLy8gVXBkYXRlIGRhdGVcclxuICAgIHJldHVybiBzZXRIb3Vycyh2YWx1ZSwgMik7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGEgRGF0ZUludGVydmFsIG9iamVjdCBhY2NvcmRpbmcgdG8gYSBzdHJpbmdcclxuICAgKiBAcGFyYW0gdmFsdWUgICAgICAgOiBzdHJpbmcgdmFsdWVcclxuICAgKiBAcGFyYW0gaW50ZXJ2YWwgICAgOiBEYXRlSW50ZXJ2YWwgdmFsdWUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGVuZCAgICAgICAgIDogdHJ1ZSBpZiBtdXN0IGJlIHVwZGF0ZWQgdGhlIGZpcnN0IG9yIHRoZSBlbmQgdmFsdWUgXHJcbiAgICogQHBhcmFtIGNvcHkgICAgICAgIDogY29weSB0aGUgc2FtZSB2YWx1ZSAod29ya3Mgb25seSBpZiBub3QgZW5kIGVsZW1lbnQpXHJcbiAgICovXHJcbiAgc3RhdGljIGNoYW5nZURhdGVJbnRlcnZhbCh2YWx1ZTogc3RyaW5nLCBpbnRlcnZhbDogRGF0ZUludGVydmFsLCBlbmQ6IGJvb2xlYW4gPSBmYWxzZSwgY29weTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IHllYXIgPSAtMTtcclxuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gNCAmJiAoeWVhciA9IHBhcnNlSW50KHZhbHVlKSkgPiAxNzUwKSB7XHJcbiAgICAgICAgaWYgKCFlbmQpIHtcclxuICAgICAgICAgIGludGVydmFsLmZyb20gPSBmcm9tWm9uZWRUaW1lIChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSwgJ1VUQycpO1xyXG4gICAgICAgICAgaW50ZXJ2YWwudG8gPSBmcm9tWm9uZWRUaW1lIChuZXcgRGF0ZSh5ZWFyLCAxMSwgMzEpLCAnVVRDJyk7XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICBpbnRlcnZhbC50byA9IG5ldyBEYXRlKHllYXIsIDExLCAzMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHBhcnRzID0gdGhpcy5nZXREYXRlUGFydHModmFsdWUpO1xyXG4gICAgICAgIGlmICghcGFydHMgfHwgaXNOYU4ocGFydHNbMF0pIHx8IHBhcnRzWzBdIDwgMCB8fCBwYXJ0c1swXSA8IDE3NTApIHJldHVybjtcclxuICAgICAgICBjb25zdCBkID0gZnJvbVpvbmVkVGltZSAobmV3IERhdGUocGFydHNbMF0sIHBhcnRzWzFdLCBwYXJ0c1syXSksICdVVEMnKTtcclxuICAgICAgICBpZiAoZW5kKVxyXG4gICAgICAgICAgaW50ZXJ2YWwudG8gPSBkO1xyXG4gICAgICAgIGVsc2UgaWYgKGNvcHkpIHtcclxuICAgICAgICAgIGludGVydmFsLmZyb20gPSBkO1xyXG4gICAgICAgICAgaW50ZXJ2YWwudG8gPSBkO1xyXG4gICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgaW50ZXJ2YWwuZnJvbSA9IGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuY29kZSB1cmxcclxuICAgKiBAcGFyYW0gdmFsdWUgOiB0aGUgdmFsdWUgdG8gZW5jb2RlXHJcbiAgICogQHJldHVybnMgICAgIDogdGhlIHVybCBlbmNvZGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyB1cmxFbmNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlY29kZSB1cmxcclxuICAgKiBAcGFyYW0gdmFsdWUgOiB0aGUgdXJsIHRvIGRlY29kZVxyXG4gICAqIEByZXR1cm5zICAgICA6IHRoZSBkZWNvZGUgdXJsIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyB1cmxEZWNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWdleCA9IC9cXCsvZztcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoKHZhbHVlICsgXCJcIikucmVwbGFjZShyZWdleCwgXCIlMjBcIikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgcXVlcnlzdHJpbmcgcGFyYW1ldGVyIHZhbHVlXHJcbiAgICogQHBhcmFtIG5hbWUgIDogdGhlIHBhcmFtZXRlciBuYW1lXHJcbiAgICogQHJldHVybnMgICAgIDogdGhlIHN0cmluZyB2YWx1ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyBnZXRRdWVyeVN0cmluZ1ZhbHVlQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKCkpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICBpZiAodXJsLmluY2x1ZGVzKFwiP1wiKSkge1xyXG4gICAgICBjb25zdCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoeyBmcm9tU3RyaW5nOiB1cmwuc3BsaXQoXCI/XCIpWzFdIH0pO1xyXG4gICAgICBjb25zdCB2ID0gZGVjb2RlVVJJQ29tcG9uZW50KGh0dHBQYXJhbXMuZ2V0KG5hbWUpKTtcclxuICAgICAgaWYgKHYgIT09IFwibnVsbFwiKSByZXR1cm4gdjtcclxuICAgICAgZWxzZSByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGUgYSBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIDogdGhlIHBhc3N3b3JkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBnZW5lcmF0ZVBhc3N3b3JkKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByYW5kb20gPSBcIiRcIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKC03KTtcclxuICAgIGxldCBwYXNzd29yZCA9IFwiXCI7XHJcbiAgICBsZXQgaGFzVXBwZXJDYXNlID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IHJuZCBvZiByYW5kb20pIHtcclxuICAgICAgaWYgKCFoYXNVcHBlckNhc2UgJiYgXCJhYmNkZWZnaGppbG1ub3BxcnN0dXZ5d3h6XCIuaW5jbHVkZXMocm5kKSkge1xyXG4gICAgICAgIHBhc3N3b3JkICs9IHJuZC50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGhhc1VwcGVyQ2FzZSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFzc3dvcmQgKz0gcm5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWhhc1VwcGVyQ2FzZSlcclxuICAgICAgcGFzc3dvcmQgPSBwYXNzd29yZC5zdWJzdHJpbmcoMCwgNykgKyBcIk1cIjtcclxuICAgIHJldHVybiBwYXNzd29yZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgYnJvd3NlciBzdXBwb3J0cyB0b3VjaFxyXG4gICAqIEByZXR1cm5zIDogdHJ1ZSBpZiB0aGUgZGlzcGxheSBpcyB0b3VjaGFibGVcclxuICAgKi9cclxuICBzdGF0aWMgaXNUb3VjaGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmlzQnJvd3NlcigpICYmIChcclxuICAgICAgICBcIm9udG91Y2hzdGFydFwiIGluIHdpbmRvdyB8fFxyXG4gICAgICAgIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBjaGVjayB3aWxsIHByZXZlbnQgJ3dpbmRvdycgbG9naWMgdG8gYmUgZXhlY3V0ZWRcclxuICAgKiB3aGlsZSBleGVjdXRpbmcgdGhlIHNlcnZlciByZW5kZXJpbmdcclxuICAgKiBAcmV0dXJucyA6IHRydWUgaWYgdXNpbmcgdGhlIGJyb3dzZXJcclxuICAgKi9cclxuICBzdGF0aWMgaXNCcm93c2VyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiAod2luZG93KSAhPT0gJ3VuZGVmaW5lZCc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogQ29udmVydCBmb2xkZXJzIGluIGEgdHJlZSBvZiBOb2RlIG9iamVjdC5cclxuICogQHBhcmFtIGZvbGRlcnMgOiB0aGUgc3ViZm9sZGVycyBncm91cCBvciBudWxsIHRvIHJvb3RcclxuICogQHJldHVybnMgICAgICAgOiBhIG5vZGUgbGlzdFxyXG4gKi9cclxuICBzdGF0aWMgdG9Ob2Rlcyhmb2xkZXJzOiBJTm9kZVtdKTogSU5vZGVbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG9Ob2Rlcyhmb2xkZXJzLCB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBmb2xkZXJzIGluIGEgdHJlZSBvZiBOb2RlIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZm9sZGVycyA6IHRoZSBjaGlsZHJlbiBncm91cCBvciBudWxsIHRvIHJvb3RcclxuICAgKiBAcGFyYW0gcGFyZW50ICA6IHRoZSBwYXJlbnQgbm9kZVxyXG4gICAqIEByZXR1cm5zICAgICAgIDogYSBub2RlIGxpc3QgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX3RvTm9kZXMoZm9sZGVyczogSU5vZGVbXSwgcGFyZW50OiBJTm9kZSB8IHVuZGVmaW5lZCk6IElOb2RlW10ge1xyXG4gICAgY29uc3Qgbm9kZXM6IElOb2RlW10gPSBbXTtcclxuICAgIGZvbGRlcnMuZm9yRWFjaCgobjogSU5vZGUpID0+IHtcclxuICAgICAgY29uc3Qgbm9kZTogSU5vZGUgPSB7XHJcbiAgICAgICAgaWQ6IG4uaWQsXHJcbiAgICAgICAgbmFtZTogbi5uYW1lLFxyXG4gICAgICAgIGNvdW50OiBuLmNvdW50LFxyXG4gICAgICAgIHBhcmVudDogcGFyZW50LFxyXG4gICAgICAgIGNoaWxkcmVuOiB1bmRlZmluZWQsXHJcbiAgICAgICAgYmFnOiBuLFxyXG4gICAgICB9O1xyXG4gICAgICBub2RlLmNoaWxkcmVuID1cclxuICAgICAgICBuLmNoaWxkcmVuICYmIG4uY2hpbGRyZW4ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgPyB0aGlzLl90b05vZGVzKG4uY2hpbGRyZW4sIG5vZGUpXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvaGVscC9kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9sZGVyIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuXHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFwdGVyUGFyZW50SW5mb1xyXG57XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXB0ZXIgZXh0ZW5kcyBGb2xkZXIge1xyXG4gICAgcGFyZW50cz86IENoYXB0ZXJQYXJlbnRJbmZvW10gfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXB0ZXJCYWdcclxue1xyXG4gICAgY2hhcHRlcjogQ2hhcHRlcjtcclxuICAgIGRhdGE6IHN0cmluZztcclxuICAgIGhpdHM6IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXB0ZXJUcmVlIGV4dGVuZHMgQ2hhcHRlciB7XHJcbiAgIHN1YkZvbGRlcnM6IENoYXB0ZXJUcmVlW107XHJcbiAgIHBhdGg6IHN0cmluZztcclxufSJdfQ==
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
* Public API Surface
|
|
3
3
|
*/
|
|
4
4
|
export * from './help.module';
|
|
5
|
+
export * from './definitions';
|
|
5
6
|
export * from './components/help-viewer/help-viewer.component';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9oZWxwL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdEQUFnRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIFxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9oZWxwLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVmaW5pdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvaGVscC12aWV3ZXIvaGVscC12aWV3ZXIuY29tcG9uZW50JztcclxuXHJcbiJdfQ==
|
|
@@ -47,13 +47,6 @@ export class HelpService {
|
|
|
47
47
|
getToc() {
|
|
48
48
|
return this.httpClient.get(this.serviceUri + '/help/toc');
|
|
49
49
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Search help
|
|
52
|
-
* @param params parameters
|
|
53
|
-
*/
|
|
54
|
-
search(params) {
|
|
55
|
-
return this.httpClient.post(this.serviceUri + '/help', params);
|
|
56
|
-
}
|
|
57
50
|
/**
|
|
58
51
|
* Open help viewer
|
|
59
52
|
*/
|
|
@@ -81,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
81
74
|
providedIn: 'root'
|
|
82
75
|
}]
|
|
83
76
|
}] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvc2VydmljZXMvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBTXRGLE1BQU0sT0FBTyxXQUFXO0lBSHhCO1FBS1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQTBFL0M7SUF2RUM7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxRQUFnQixJQUFJO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVO1lBQ2IsZ0JBQWdCO1lBQ2hCLEVBQUU7WUFDRixVQUFVO1lBQ1YsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLEdBQUcsRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksQ0FBQyxLQUFhLEdBQUc7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDM0MsU0FBUyxFQUFFLE9BQU87WUFDbEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxFQUFFO2FBQ1A7WUFDRCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1RVUsV0FBVztrSEFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBBcGlSZXN1bHQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIZWxwVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9oZWxwLXZpZXdlci9oZWxwLXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFwdGVyLCBDaGFwdGVyQmFnLCBDaGFwdGVyVHJlZSB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBTZXJ2aWNlIHtcclxuICBcclxuICBwcml2YXRlIGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7IFxyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIHNlcnZpY2VVcmk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBoZWxwIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gc2VydmljZVVyaSA6IHRoZSBzZXJ2aWNlIHVyaVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoc2VydmljZVVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlcnZpY2VVcmkgPSBzZXJ2aWNlVXJpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYW4gaGVscCBjaGFwdGVyXHJcbiAgICogQHBhcmFtIGlkIHRoZSBjaGFwdGVyIGlkXHJcbiAgICogQHBhcmFtIHF1ZXJ5IHRoZSBzZWFyY2ggcXVlcnlcclxuICAgKi9cclxuICBnZXRDaGFwdGVyKGlkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8Q2hhcHRlckJhZz4+KFxyXG4gICAgICB0aGlzLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICcvaGVscC9jaGFwdGVyLycgK1xyXG4gICAgICAgIGlkICtcclxuICAgICAgICAnLz9xdWVyeT0nICtcclxuICAgICAgICAocXVlcnkgPT0gbnVsbCA/ICcnIDogcXVlcnkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYW4gaGVscCBjaGFwYXRlciBpbmZvXHJcbiAgICogQHBhcmFtIGlkIHRoZSBjaGFwdGVyIGlkXHJcbiAgICovXHJcbiAgZ2V0Q2hhcHRlckluZm8oaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PENoYXB0ZXI+PihcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9oZWxwL2NoYXB0ZXIvaW5mby8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhIHJlcG9zaXRvcnkgaXRlbVxyXG4gICAqIEBwYXJhbSBpZCB0aGUgZmlsZSBpZFxyXG4gICAqL1xyXG4gIGdldFJlcG8oaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2hlbHAvcmVwby8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhbiBoZWxwIHRvY1xyXG4gICAqL1xyXG4gIGdldFRvYygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDaGFwdGVyVHJlZT4+KFxyXG4gICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2hlbHAvdG9jJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGhlbHAgdmlld2VyXHJcbiAgICovXHJcbiAgc2hvdyhpZDogc3RyaW5nID0gJzEnKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihIZWxwVmlld2VyQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2d1aWRhJyxcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IGlkXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzExMDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -18,4 +18,4 @@ export var SupportProductModule;
|
|
|
18
18
|
SupportProductModule[SupportProductModule["DgiIMDG"] = 512] = "DgiIMDG";
|
|
19
19
|
SupportProductModule[SupportProductModule["DgiCLP"] = 1024] = "DgiCLP";
|
|
20
20
|
})(SupportProductModule || (SupportProductModule = {}));
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvc3VwcG9ydC5jb21tb24vY29tbW9uL2RlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DQSxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHlEQUFXLENBQUE7SUFDWCw2REFBa0IsQ0FBQTtJQUNsQix1REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQVlYO0FBWkQsV0FBWSxvQkFBb0I7SUFDOUIsaUZBQWlCLENBQUE7SUFDakIsbUVBQWUsQ0FBQTtJQUNmLHVHQUFpQyxDQUFBO0lBQ2pDLHFHQUFnQyxDQUFBO0lBQ2hDLHdHQUFpQyxDQUFBO0lBQ2pDLHNGQUF3QixDQUFBO0lBQ3hCLGtGQUFzQixDQUFBO0lBQ3RCLHFFQUFlLENBQUE7SUFDZixxRUFBZSxDQUFBO0lBQ2YsdUVBQWdCLENBQUE7SUFDaEIsc0VBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQVpXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFZL0IiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFBhcmFtcyB7XHJcbiAgYW55Pzogc3RyaW5nIHwgbnVsbDtcclxuICBwcm9kdWN0cz86IG51bWJlciB8IG51bGw7XHJcbiAgcHJvZHVjdE1vZHVsZXM/OiBudW1iZXIgfCBudWxsO1xyXG4gIGZpcnN0PzogbnVtYmVyIHwgbnVsbDtcclxuICBjb3VudD86IG51bWJlciB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hSZXN1bHQge1xyXG4gIGludGVydmFsPzogc3RyaW5nIHwgbnVsbDtcclxuICBpdGVtcz86IFN1cHBvcnROb3RpZmljYXRpb25JbmZvW10gfCBudWxsO1xyXG4gIHRvdGFsPzogbnVtYmVyIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Tm90aWZpY2F0aW9uSW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBwcm9kdWN0czogbnVtYmVyO1xyXG4gIHByb2R1Y3ROYW1lcz86IHN0cmluZyB8IG51bGw7XHJcbiAgcHJvZHVjdE1vZHVsZXM/OiBudW1iZXIgfCBudWxsO1xyXG4gIHByb2R1Y3RNb2R1bGVOYW1lcz86IHN0cmluZyB8IG51bGw7XHJcbiAgcHVibGlzaGluZ0RhdGU/OiBEYXRlIHwgbnVsbDtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBzdGF0ZTogbnVtYmVyO1xyXG4gIGlzUHVibGlzaGVkOiBib29sZWFuO1xyXG4gIGlzSW50ZXJuYWw6IGJvb2xlYW47XHJcbiAgaXNSZWFkOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnROb3RpZmljYXRpb25zTWFya1BhcmFtcyB7XHJcbiAgaWRzOiBudW1iZXJbXTtcclxuICB1bm1hcms6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN1cHBvcnRQcm9kdWN0IHtcclxuICBDbGlwcGVyID0gMSxcclxuICBFdm9sdXRpb24gPSAxIDw8IDEsXHJcbiAgREdJbmZvID0gMSA8PCAyXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN1cHBvcnRQcm9kdWN0TW9kdWxlIHtcclxuICBFdm9Gb3JtYXppb25lID0gMSxcclxuICBFdm9EUEkgPSAxIDw8IDEsXHJcbiAgRXZvU29ydmVnbGlhbnphU2FuaXRhcmlhID0gMSA8PCAyLFxyXG4gIEV2b1JlZ2lzdHJvRVNjYWRlbnphcmlvID0gMSA8PCAzLFxyXG4gIEV2b0F0dHJlenphdHVyZUVJbXBpYW50aSA9IDEgPDwgNCxcclxuICBFdm9Nb25pdG9yYWdnaW8gPSAxIDw8IDUsXHJcbiAgRXZvQm9sbGV0dGlubyA9IDEgPDwgNixcclxuICBEZ2lBRFIgPSAxIDw8IDcsXHJcbiAgRGdpUklEID0gMSA8PCA4LFxyXG4gIERnaUlNREcgPSAxIDw8IDksXHJcbiAgRGdpQ0xQID0gMSA8PCAxMCxcclxufVxyXG4iXX0=
|
|
@@ -95,7 +95,7 @@ export class SupportService {
|
|
|
95
95
|
this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message) => {
|
|
96
96
|
if (message.id === SupportMessages.LOGIN_CHANGED) {
|
|
97
97
|
setTimeout(() => {
|
|
98
|
-
this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe(
|
|
98
|
+
this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe(r => {
|
|
99
99
|
if (r.success) {
|
|
100
100
|
this.countUnreadNotifications();
|
|
101
101
|
}
|
|
@@ -225,7 +225,7 @@ export class SupportService {
|
|
|
225
225
|
*/
|
|
226
226
|
logout() {
|
|
227
227
|
return this.httpClient
|
|
228
|
-
.post(this._serviceUri + '/logout', {}).pipe(map(
|
|
228
|
+
.post(this._serviceUri + '/logout', {}).pipe(map(r => { return r; }), catchError((_e) => {
|
|
229
229
|
this.clear();
|
|
230
230
|
return of([]);
|
|
231
231
|
}));
|
|
@@ -278,7 +278,7 @@ export class SupportService {
|
|
|
278
278
|
* Count unread notifications
|
|
279
279
|
*/
|
|
280
280
|
countUnreadNotifications() {
|
|
281
|
-
this.httpClient.get(this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + "&modules=" + (this.productModules ?? 0)).subscribe(
|
|
281
|
+
this.httpClient.get(this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + "&modules=" + (this.productModules ?? 0)).subscribe(r => {
|
|
282
282
|
if (r.success) {
|
|
283
283
|
this._unreadNotifications = r.value > 0 ? r.value : null;
|
|
284
284
|
}
|
|
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
325
325
|
providedIn: 'root',
|
|
326
326
|
}]
|
|
327
327
|
}] });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uL2NvbW1vbi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZ0JBQWdCLEVBQTBCLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFnQixVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU85QyxNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUttQixxQkFBZ0IsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUTtRQUVoRCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsc0JBQWlCLEdBQXNDLElBQUksQ0FBQztRQUM1RCxrQ0FBNkIsR0FBeUIsSUFBSSxDQUFDO1FBQzNELGlDQUE0QixHQUF5QixJQUFJLENBQUM7UUFHMUQsZUFBVSxHQUFjLElBQUksQ0FBQztRQU03QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBUTNCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFRNUIsZ0JBQVcsR0FBVyxnQ0FB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O1lBQ2hCLGlCQUFpQjtZQUNqQixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxNQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLEVBQ3hDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7S0FHQztJQUNELDJCQUEyQixDQUFDLFVBQWtCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLEdBQUcsVUFBVSxFQUN0RCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7OEdBM1hVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVJlc3VsdCwgQnJvYWRjYXN0U2VydmljZSwgTG9naW5JbmZvLCBMb2dpblJlc3VsdCwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdXBwb3J0TWVzc2FnZXMgfSBmcm9tICcuLi9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zLCBTdXBwb3J0UHJvZHVjdCwgU3VwcG9ydFByb2R1Y3RNb2R1bGUgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUZSRVNIX0lOVEVSVkFMID0gNjAwMDAgKiA1MDsgLy81MCBtaW5cclxuXHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB0b2tlblJlZnJlc2hUaW1lcj86IE9ic2VydmFibGU8bnVtYmVyIHwgdm9pZD4gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHRva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBwcml2YXRlIF9sb2dpbkluZm86IExvZ2luSW5mbyA9IG51bGw7XHJcbiAgZ2V0IGxvZ2luSW5mbygpOiBMb2dpbkluZm8geyByZXR1cm4gdGhpcy5fbG9naW5JbmZvIH07XHJcbiAgc2V0IGxvZ2luSW5mbyh2YWx1ZTogTG9naW5JbmZvKSB7XHJcbiAgICB0aGlzLl9sb2dpbkluZm8gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvZ2dlZEluOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ2V0IGxvZ2dlZEluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlZEluO1xyXG4gIH1cclxuICBzZXQgbG9nZ2VkSW4odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2xvZ2dlZEluID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2dnaW5nSW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXQgbG9nZ2luZ0luKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dpbmdJbjtcclxuICB9XHJcbiAgc2V0IGxvZ2dpbmdJbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fbG9nZ2luZ0luID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXJ2aWNlVXJpOiBzdHJpbmcgPSBcImh0dHBzOi8vc3VwcG9ydC5hcnNlZGl6aW9uaS5pdFwiXHJcbiAgZ2V0IHNlcnZpY2VVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlVXJpO1xyXG4gIH1cclxuICBzZXQgc2VydmljZVVyaSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlVXJpID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlcnZpY2VQcmVmaXg6IHN0cmluZyA9IFwiXCJcclxuICBnZXQgc2VydmljZVByZWZpeCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VQcmVmaXg7XHJcbiAgfVxyXG4gIHNldCBzZXJ2aWNlUHJlZml4KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlcnZpY2VQcmVmaXggPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Byb2R1Y3RzOiBTdXBwb3J0UHJvZHVjdDtcclxuICBnZXQgcHJvZHVjdHMoKTogU3VwcG9ydFByb2R1Y3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb2R1Y3RzO1xyXG4gIH1cclxuICBzZXQgcHJvZHVjdHModmFsdWU6IFN1cHBvcnRQcm9kdWN0KSB7XHJcbiAgICB0aGlzLl9wcm9kdWN0cyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJvZHVjdE1vZHVsZXM6IFN1cHBvcnRQcm9kdWN0TW9kdWxlO1xyXG4gIGdldCBwcm9kdWN0TW9kdWxlcygpOiBTdXBwb3J0UHJvZHVjdE1vZHVsZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJvZHVjdE1vZHVsZXM7XHJcbiAgfVxyXG4gIHNldCBwcm9kdWN0TW9kdWxlcyh2YWx1ZTogU3VwcG9ydFByb2R1Y3RNb2R1bGUpIHtcclxuICAgIHRoaXMuX3Byb2R1Y3RNb2R1bGVzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bnJlYWROb3RpZmljYXRpb25zOiBudW1iZXIgPSBudWxsO1xyXG4gIGdldCB1bnJlYWROb3RpZmljYXRpb25zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdW5yZWFkTm90aWZpY2F0aW9ucztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4tdXBcclxuICAgIGlmICh0aGlzLnRva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy50b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbil7IFxyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlVXJpIDogdGhlIHNlcnZpY2UgdXJpXHJcbiAgICogQHBhcmFtIHNlcnZpY2VQcmVmaXggOiB0aGUgc2VydmljZSBwcmVmaXggdXNlZCB0byBtYW5hZ2UgbG9jYWwgc3RvcmFnZSBcclxuICAgKiBAcGFyYW0gcHJvZHVjdHM6IHRoZSBzdXBwb3J0ZWQgcHJvZHVjdHNcclxuICAgKi9cclxuICBpbml0aWFsaXplKFxyXG4gICAgc2VydmljZVVyaTogc3RyaW5nID0gbnVsbCxcclxuICAgIHNlcnZpY2VQcmVmaXg6IHN0cmluZyA9IG51bGwsXHJcbiAgICBwcm9kdWN0czogbnVtYmVyID0gMCkge1xyXG5cclxuICAgIC8vIENyZWF0ZSB1bmlxdWUgY2xpZW50IGlkXHJcbiAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdXBwb3J0X2NsaWVudF9pZCcpKVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3VwcG9ydF9jbGllbnRfaWQnLCBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSk7XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSB1cmlzXHJcbiAgICBpZiAoc2VydmljZVVyaSlcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSA9IHNlcnZpY2VVcmk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlUHJlZml4ID0gc2VydmljZVByZWZpeDtcclxuICAgIGlmIChwcm9kdWN0cylcclxuICAgICAgdGhpcy5fcHJvZHVjdHMgPSBwcm9kdWN0cztcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgaWYgKCF0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uID0gdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKS5zdWJzY3JpYmUoKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTE9HSU5fQ0hBTkdFRCkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW4obWVzc2FnZS5kYXRhLmVtYWlsLCBtZXNzYWdlLmRhdGEub2F1dGgsIG1lc3NhZ2UuZGF0YS5vYXV0aEFjY2Vzc1Rva2VuKS5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTE9HT1VUX0NPTVBMRVRFRCB8fFxyXG4gICAgICAgICAgbWVzc2FnZS5pZCA9PT0gU3VwcG9ydE1lc3NhZ2VzLkxPR0lOX0RJU0NPTk5FQ1RFRCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlZEluKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTk9USUZJQ0FUSU9OX1JFQUQpIHtcclxuICAgICAgICAgIHRoaXMuY291bnRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFdmVsdWF0ZSBjdXJyZW50IHNlc3Npb24gc3RvcmFnZSBpbiBjYXNlIG9mIHBhZ2UgcmVmcmVzaCAoRjUpXHJcbiAgICBpZiAoIXRoaXMubG9nZ2VkSW4gJiYgdGhpcy5nZXRUb2tlbigpKSB7XHJcbiAgICAgIC8vIEF1dG8gbG9naW5cclxuICAgICAgdGhpcy5sb2dnZWRJbiA9IHRydWU7XHJcblxyXG4gICAgICAvLyBTdGFydCByZWZyZXNoIHRpbWVyXHJcbiAgICAgIHRoaXMuZW5hYmxlVG9rZW5SZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2V0IEpXVCB0b2tlblxyXG4gKiBAcGFyYW0gdG9rZW4gOiBUaGUgdG9rZW4gIHRvIHN0b3JlXHJcbiAqL1xyXG4gIHByaXZhdGUgc2V0VG9rZW4odG9rZW46IHN0cmluZykge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnc3VwcG9ydF9qd3QnLCB0b2tlbik7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgdGhpcy5lbmFibGVUb2tlblJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSBKV1QgdG9rZW4gYXV0byByZWZyZXNoXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlbmFibGVUb2tlblJlZnJlc2goKSB7XHJcbiAgICBpZiAoIXRoaXMudG9rZW5SZWZyZXNoVGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy50b2tlblJlZnJlc2hUaW1lciA9XHJcbiAgICAgICAgdGltZXIodGhpcy5SRUZSRVNIX0lOVEVSVkFMLCB0aGlzLlJFRlJFU0hfSU5URVJWQUwpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5yZWZyZXNoaW5nIHx8ICF0aGlzLmxvZ2dlZEluKSByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7IHRoaXMucmVmcmVzaGluZyA9IGZhbHNlOyB9LFxyXG4gICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4geyB0aGlzLnJlZnJlc2hpbmcgPSBmYWxzZTsgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgICB0aGlzLnRva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uID0gdGhpcy50b2tlblJlZnJlc2hUaW1lci5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBjdXJyZW50IEpXVCB0b2tlblxyXG4gICAqIEByZXR1cm5zOiB0aGUgc3RyaW5nIEpXVCB0b2tlbiBvciBzdHJpbmcgZW1wdHkgaWYgbm9uZVxyXG4gICAqL1xyXG4gIGdldFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzdXBwb3J0X2p3dCcpO1xyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIGlmICh0b2tlblswXSA9PT0gJ1wiJykgdG9rZW4gPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XHJcbiAgICAgIHJldHVybiB0b2tlbjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuKiBQZXJmb3JtIGxvZ2luICAgXHJcbiogQHBhcmFtIGVtYWlsOiB0aGUgZ3Vlc3QgZW1haWxcclxuKiBAcGFyYW0gb2F1dGg6IHRoZSBvcHRpb25hbCBvcGVuIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRlZFxyXG4qIEBwYXJhbSBvYXV0aEFjY2Vzc1Rva2VuOiB0aGUgb3B0aW9uYWwgb2F1dGgyIGFjY2VzcyB0b2tlblxyXG4qIEByZXR1cm5zOiB0aGUgbG9naW4gcmVzdWx0XHJcbiovXHJcbiAgbG9naW4oZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgb2F1dGg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgb2F1dGhBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwpIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIHRoaXMubG9nZ2luZ0luID0gdHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8QXBpUmVzdWx0PExvZ2luUmVzdWx0Pj4oXHJcbiAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvbG9naW4nLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXI6IG9hdXRoID4gMCA/IG51bGwgOiBlbWFpbCxcclxuICAgICAgICAgIGNsaWVudElkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1cHBvcnRfY2xpZW50X2lkXCIpLFxyXG4gICAgICAgICAgT0FVVEg6IG9hdXRoXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOlxyXG4gICAgICAgICAgICAhb2F1dGhcclxuICAgICAgICAgICAgICA/IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgOiBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAgICAgICAgICAgLnNldChcIkF1dGhvcml6YXRpb25cIiwgb2F1dGhBY2Nlc3NUb2tlbilcclxuICAgICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcCgocjogQXBpUmVzdWx0PExvZ2luUmVzdWx0PikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0cyA9IHRoaXMucHJvZHVjdHM7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdE1vZHVsZXMgPSB0aGlzLnByb2R1Y3RNb2R1bGVzO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVMb2dpblJlc3VsdChyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGxvZ2luIHJlc3VsdFxyXG4gICAqIEBwYXJhbSBsb2dpblJlc3VsdCA6IHRoZSBjdXJyZW50IGxvZ2luIHJlc3VsdFxyXG4gICAqIEByZXR1cm5zOiB0aGUgZmluYWwgbG9naW4gcmVzdWx0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVMb2dpblJlc3VsdChcclxuICAgIGxvZ2luUmVzdWx0OiBBcGlSZXN1bHQ8TG9naW5SZXN1bHQ+XHJcbiAgKTogQXBpUmVzdWx0PExvZ2luUmVzdWx0PiB7XHJcbiAgICBpZiAobG9naW5SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAvLyBTdG9yZSBhY2Nlc3MgdG9rZW5cclxuICAgICAgdGhpcy5zZXRUb2tlbihsb2dpblJlc3VsdC52YWx1ZS50b2tlbik7XHJcblxyXG4gICAgICB0aGlzLl9sb2dpbkluZm8gPSBsb2dpblJlc3VsdC52YWx1ZS5jb250ZXh0O1xyXG4gICAgICB0aGlzLl9sb2dnZWRJbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbG9naW5SZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGxvZ291dFxyXG4gICAqL1xyXG4gIGxvZ291dCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dvdXQnLCB7fSkucGlwZShcclxuICAgICAgICBtYXAoKHI6IGFueSkgPT4geyByZXR1cm4gcjsgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoX2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IGxvZ2luIHJlZnJlc2ggdGltZXIgYW5kIGxvZ2lucyBzdGF0ZVxyXG4gICAqL1xyXG4gIHJlc2V0KCkge1xyXG4gICAgLy8gQ2xlYXIgc3Vic2NyaXB0aW9uc1xyXG4gICAgaWYgKHRoaXMudG9rZW5SZWZyZXNoVGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy50b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnRva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMudG9rZW5SZWZyZXNoVGltZXIgPSBudWxsO1xyXG5cclxuICAgIC8vIENsZWFyIGxvZ2luIGluZm9cclxuICAgIHRoaXMuX2xvZ2luSW5mbyA9IG51bGw7XHJcbiAgICB0aGlzLl9sb2dnZWRJbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgbG9naW4gZGF0YVxyXG4gICAqL1xyXG4gIGNsZWFyKCkge1xyXG4gICAgLy8gUmVzZXQgbG9naW5cclxuICAgIHRoaXMucmVzZXQoKTtcclxuXHJcbiAgICAvLyBDbGVhciBsb2NhbCBzdG9yYWdlXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdzdXBwb3J0X2p3dCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSB0b2tlbiByZWZyZXNoXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWZyZXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxMb2dpblJlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9yZWZyZXNoJywge31cclxuICAgICkucGlwZShtYXAoKHI6IEFwaVJlc3VsdDxMb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgLy8gVXBkYXRlIHRva2VuXHJcbiAgICAgIHRoaXMuc2V0VG9rZW4oci52YWx1ZS50b2tlbik7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byBzdXBwb3J0IHNlcnZpY2VcclxuICAgKi9cclxuICBvcGVuKCkge1xyXG4gICAgbGV0IHVyaSA9IHRoaXMuc2VydmljZVVyaSA/PyAnJztcclxuICAgIGlmICh1cmkuZW5kc1dpdGgoJy9hcGknKSlcclxuICAgICAgdXJpID0gdXJpLnN1YnN0cmluZygwLCB1cmkubGVuZ3RoIC0gNClcclxuICAgIHdpbmRvdy5vcGVuKHVyaSk7XHJcbiAgfVxyXG5cclxuICAvLy8vXHJcbiAgLy8gTk9USUZJQ0FUSU9OU1xyXG4gIC8vLy9cclxuXHJcbiAgLyoqXHJcbiAgICogQ291bnQgdW5yZWFkIG5vdGlmaWNhdGlvbnNcclxuICAgKi9cclxuICBjb3VudFVucmVhZE5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvbm90aWZpY2F0aW9ucy9jb3VudC11bnJlYWQvP3Byb2R1Y3RzPScgKyAodGhpcy5wcm9kdWN0cyA/PyAwKSArIFwiJm1vZHVsZXM9XCIgKyAodGhpcy5wcm9kdWN0TW9kdWxlcyA/PyAwKVxyXG4gICAgKS5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5fdW5yZWFkTm90aWZpY2F0aW9ucyA9IHIudmFsdWUgPiAwID8gci52YWx1ZSA6IG51bGxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWVyeSBub3RpZmljYXRpb25zXHJcbiAgICogQHBhcmFtIHBhcmFtczogcXVlcnkgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIHF1ZXJ5Tm90aWZpY2F0aW9ucyhwYXJhbXM6IFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zKSB7XHJcbiAgICBwYXJhbXMucHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzID8/IDA7XHJcbiAgICBwYXJhbXMucHJvZHVjdE1vZHVsZXMgPSB0aGlzLnByb2R1Y3RNb2R1bGVzID8/IDA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9ub3RpZmljYXRpb25zJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaWQ6IHRoZSBub3RpZmljYXRpb24gaWRcclxuICAgKi9cclxuICBnZXROb3RpZmljYXRpb24oaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICtcclxuICAgICAgJy9ub3RpZmljYXRpb25zLycgK1xyXG4gICAgICBpZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcmsgYSBncm91cCBvZiBub3RpZmljYXRpb25zIGFzIHJlYWRcclxuICAgKiBAcGFyYW0gaWRzOiB0aGUgYXJyYXkgb2Ygbm90aWZpY2F0aW9uJ3MgaWRzIHRvIHNldCBhcyByZWFkXHJcbiAgICovXHJcbiAgbWFya05vdGlmaWNhdGlvbnMocGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8YW55Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL25vdGlmaWNhdGlvbnMvbWFyaycsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBEb3dubG9hZCBhIG5vdGlmaWNhdGlvbiBkb2N1bWVudFxyXG4gKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBub3RpZmljYXRpb24gZG9jdW1lbnQgaWRcclxuICovXHJcbiAgZG93bG9hZE5vdGlmaWNhdGlvbkRvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9kb3dubG9hZC8nICsgZG9jdW1lbnRJZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uL2NvbW1vbi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZ0JBQWdCLEVBQTBCLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFnQixVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU85QyxNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUttQixxQkFBZ0IsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUTtRQUVoRCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsc0JBQWlCLEdBQXNDLElBQUksQ0FBQztRQUM1RCxrQ0FBNkIsR0FBeUIsSUFBSSxDQUFDO1FBQzNELGlDQUE0QixHQUF5QixJQUFJLENBQUM7UUFHMUQsZUFBVSxHQUFjLElBQUksQ0FBQztRQU03QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBUTNCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFRNUIsZ0JBQVcsR0FBVyxnQ0FB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Q2pCLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLE1BQXNDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLEVBQ3hDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7S0FHQztJQUNELDJCQUEyQixDQUFDLFVBQWtCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLEdBQUcsVUFBVSxFQUN0RCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7OEdBM1hVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVJlc3VsdCwgQnJvYWRjYXN0U2VydmljZSwgTG9naW5JbmZvLCBMb2dpblJlc3VsdCwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdXBwb3J0TWVzc2FnZXMgfSBmcm9tICcuLi9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFN1cHBvcnROb3RpZmljYXRpb25JbmZvLCBTdXBwb3J0Tm90aWZpY2F0aW9uc01hcmtQYXJhbXMsIFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zLCBTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFJlc3VsdCwgU3VwcG9ydFByb2R1Y3QsIFN1cHBvcnRQcm9kdWN0TW9kdWxlIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdXBwb3J0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVGUkVTSF9JTlRFUlZBTCA9IDYwMDAwICogNTA7IC8vNTAgbWluXHJcblxyXG4gIHByaXZhdGUgaHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2UgPSBpbmplY3QoQnJvYWRjYXN0U2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdG9rZW5SZWZyZXNoVGltZXI/OiBPYnNlcnZhYmxlPG51bWJlciB8IHZvaWQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB0b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfbG9naW5JbmZvOiBMb2dpbkluZm8gPSBudWxsO1xyXG4gIGdldCBsb2dpbkluZm8oKTogTG9naW5JbmZvIHsgcmV0dXJuIHRoaXMuX2xvZ2luSW5mbyB9O1xyXG4gIHNldCBsb2dpbkluZm8odmFsdWU6IExvZ2luSW5mbykge1xyXG4gICAgdGhpcy5fbG9naW5JbmZvID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2dnZWRJbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBsb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9sb2dnZWRJbjtcclxuICB9XHJcbiAgc2V0IGxvZ2dlZEluKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9sb2dnZWRJbiA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9nZ2luZ0luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ2V0IGxvZ2dpbmdJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9sb2dnaW5nSW47XHJcbiAgfVxyXG4gIHNldCBsb2dnaW5nSW4odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2xvZ2dpbmdJbiA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VydmljZVVyaTogc3RyaW5nID0gXCJodHRwczovL3N1cHBvcnQuYXJzZWRpemlvbmkuaXRcIlxyXG4gIGdldCBzZXJ2aWNlVXJpKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZVVyaTtcclxuICB9XHJcbiAgc2V0IHNlcnZpY2VVcmkodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2VydmljZVVyaSA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXJ2aWNlUHJlZml4OiBzdHJpbmcgPSBcIlwiXHJcbiAgZ2V0IHNlcnZpY2VQcmVmaXgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlUHJlZml4O1xyXG4gIH1cclxuICBzZXQgc2VydmljZVByZWZpeCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlUHJlZml4ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcm9kdWN0czogU3VwcG9ydFByb2R1Y3Q7XHJcbiAgZ2V0IHByb2R1Y3RzKCk6IFN1cHBvcnRQcm9kdWN0IHtcclxuICAgIHJldHVybiB0aGlzLl9wcm9kdWN0cztcclxuICB9XHJcbiAgc2V0IHByb2R1Y3RzKHZhbHVlOiBTdXBwb3J0UHJvZHVjdCkge1xyXG4gICAgdGhpcy5fcHJvZHVjdHMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Byb2R1Y3RNb2R1bGVzOiBTdXBwb3J0UHJvZHVjdE1vZHVsZTtcclxuICBnZXQgcHJvZHVjdE1vZHVsZXMoKTogU3VwcG9ydFByb2R1Y3RNb2R1bGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb2R1Y3RNb2R1bGVzO1xyXG4gIH1cclxuICBzZXQgcHJvZHVjdE1vZHVsZXModmFsdWU6IFN1cHBvcnRQcm9kdWN0TW9kdWxlKSB7XHJcbiAgICB0aGlzLl9wcm9kdWN0TW9kdWxlcyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5yZWFkTm90aWZpY2F0aW9uczogbnVtYmVyID0gbnVsbDtcclxuICBnZXQgdW5yZWFkTm90aWZpY2F0aW9ucygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VucmVhZE5vdGlmaWNhdGlvbnM7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIENsZWFuLXVwXHJcbiAgICBpZiAodGhpcy50b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMudG9rZW5SZWZyZXNoVGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24peyBcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gc2VydmljZVVyaSA6IHRoZSBzZXJ2aWNlIHVyaVxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlUHJlZml4IDogdGhlIHNlcnZpY2UgcHJlZml4IHVzZWQgdG8gbWFuYWdlIGxvY2FsIHN0b3JhZ2UgXHJcbiAgICogQHBhcmFtIHByb2R1Y3RzOiB0aGUgc3VwcG9ydGVkIHByb2R1Y3RzXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShcclxuICAgIHNlcnZpY2VVcmk6IHN0cmluZyA9IG51bGwsXHJcbiAgICBzZXJ2aWNlUHJlZml4OiBzdHJpbmcgPSBudWxsLFxyXG4gICAgcHJvZHVjdHM6IG51bWJlciA9IDApIHtcclxuXHJcbiAgICAvLyBDcmVhdGUgdW5pcXVlIGNsaWVudCBpZFxyXG4gICAgaWYgKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3VwcG9ydF9jbGllbnRfaWQnKSlcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1cHBvcnRfY2xpZW50X2lkJywgU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkpO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgdXJpc1xyXG4gICAgaWYgKHNlcnZpY2VVcmkpXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgPSBzZXJ2aWNlVXJpO1xyXG4gICAgdGhpcy5fc2VydmljZVByZWZpeCA9IHNlcnZpY2VQcmVmaXg7XHJcbiAgICBpZiAocHJvZHVjdHMpXHJcbiAgICAgIHRoaXMuX3Byb2R1Y3RzID0gcHJvZHVjdHM7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gbWVzc2FnZSBicm9hZGNhc3RpbmdcclxuICAgIGlmICghdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbiA9IHRoaXMuYnJvYWRjYXN0U2VydmljZS5nZXRNZXNzYWdlKCkuc3Vic2NyaWJlKChtZXNzYWdlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gU3VwcG9ydE1lc3NhZ2VzLkxPR0lOX0NIQU5HRUQpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luKG1lc3NhZ2UuZGF0YS5lbWFpbCwgbWVzc2FnZS5kYXRhLm9hdXRoLCBtZXNzYWdlLmRhdGEub2F1dGhBY2Nlc3NUb2tlbikuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTE9HT1VUX0NPTVBMRVRFRCB8fFxyXG4gICAgICAgICAgbWVzc2FnZS5pZCA9PT0gU3VwcG9ydE1lc3NhZ2VzLkxPR0lOX0RJU0NPTk5FQ1RFRCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlZEluKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTk9USUZJQ0FUSU9OX1JFQUQpIHtcclxuICAgICAgICAgIHRoaXMuY291bnRVbnJlYWROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFdmVsdWF0ZSBjdXJyZW50IHNlc3Npb24gc3RvcmFnZSBpbiBjYXNlIG9mIHBhZ2UgcmVmcmVzaCAoRjUpXHJcbiAgICBpZiAoIXRoaXMubG9nZ2VkSW4gJiYgdGhpcy5nZXRUb2tlbigpKSB7XHJcbiAgICAgIC8vIEF1dG8gbG9naW5cclxuICAgICAgdGhpcy5sb2dnZWRJbiA9IHRydWU7XHJcblxyXG4gICAgICAvLyBTdGFydCByZWZyZXNoIHRpbWVyXHJcbiAgICAgIHRoaXMuZW5hYmxlVG9rZW5SZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2V0IEpXVCB0b2tlblxyXG4gKiBAcGFyYW0gdG9rZW4gOiBUaGUgdG9rZW4gIHRvIHN0b3JlXHJcbiAqL1xyXG4gIHByaXZhdGUgc2V0VG9rZW4odG9rZW46IHN0cmluZykge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnc3VwcG9ydF9qd3QnLCB0b2tlbik7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgdGhpcy5lbmFibGVUb2tlblJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSBKV1QgdG9rZW4gYXV0byByZWZyZXNoXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlbmFibGVUb2tlblJlZnJlc2goKSB7XHJcbiAgICBpZiAoIXRoaXMudG9rZW5SZWZyZXNoVGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy50b2tlblJlZnJlc2hUaW1lciA9XHJcbiAgICAgICAgdGltZXIodGhpcy5SRUZSRVNIX0lOVEVSVkFMLCB0aGlzLlJFRlJFU0hfSU5URVJWQUwpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5yZWZyZXNoaW5nIHx8ICF0aGlzLmxvZ2dlZEluKSByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7IHRoaXMucmVmcmVzaGluZyA9IGZhbHNlOyB9LFxyXG4gICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4geyB0aGlzLnJlZnJlc2hpbmcgPSBmYWxzZTsgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgICB0aGlzLnRva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uID0gdGhpcy50b2tlblJlZnJlc2hUaW1lci5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBjdXJyZW50IEpXVCB0b2tlblxyXG4gICAqIEByZXR1cm5zOiB0aGUgc3RyaW5nIEpXVCB0b2tlbiBvciBzdHJpbmcgZW1wdHkgaWYgbm9uZVxyXG4gICAqL1xyXG4gIGdldFRva2VuKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzdXBwb3J0X2p3dCcpO1xyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIGlmICh0b2tlblswXSA9PT0gJ1wiJykgdG9rZW4gPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XHJcbiAgICAgIHJldHVybiB0b2tlbjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuKiBQZXJmb3JtIGxvZ2luICAgXHJcbiogQHBhcmFtIGVtYWlsOiB0aGUgZ3Vlc3QgZW1haWxcclxuKiBAcGFyYW0gb2F1dGg6IHRoZSBvcHRpb25hbCBvcGVuIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRlZFxyXG4qIEBwYXJhbSBvYXV0aEFjY2Vzc1Rva2VuOiB0aGUgb3B0aW9uYWwgb2F1dGgyIGFjY2VzcyB0b2tlblxyXG4qIEByZXR1cm5zOiB0aGUgbG9naW4gcmVzdWx0XHJcbiovXHJcbiAgbG9naW4oZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgb2F1dGg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgb2F1dGhBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwpIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIHRoaXMubG9nZ2luZ0luID0gdHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8QXBpUmVzdWx0PExvZ2luUmVzdWx0Pj4oXHJcbiAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvbG9naW4nLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXI6IG9hdXRoID4gMCA/IG51bGwgOiBlbWFpbCxcclxuICAgICAgICAgIGNsaWVudElkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1cHBvcnRfY2xpZW50X2lkXCIpLFxyXG4gICAgICAgICAgT0FVVEg6IG9hdXRoXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOlxyXG4gICAgICAgICAgICAhb2F1dGhcclxuICAgICAgICAgICAgICA/IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgOiBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAgICAgICAgICAgLnNldChcIkF1dGhvcml6YXRpb25cIiwgb2F1dGhBY2Nlc3NUb2tlbilcclxuICAgICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcCgocjogQXBpUmVzdWx0PExvZ2luUmVzdWx0PikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0cyA9IHRoaXMucHJvZHVjdHM7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdE1vZHVsZXMgPSB0aGlzLnByb2R1Y3RNb2R1bGVzO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVMb2dpblJlc3VsdChyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGxvZ2luIHJlc3VsdFxyXG4gICAqIEBwYXJhbSBsb2dpblJlc3VsdCA6IHRoZSBjdXJyZW50IGxvZ2luIHJlc3VsdFxyXG4gICAqIEByZXR1cm5zOiB0aGUgZmluYWwgbG9naW4gcmVzdWx0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVMb2dpblJlc3VsdChcclxuICAgIGxvZ2luUmVzdWx0OiBBcGlSZXN1bHQ8TG9naW5SZXN1bHQ+XHJcbiAgKTogQXBpUmVzdWx0PExvZ2luUmVzdWx0PiB7XHJcbiAgICBpZiAobG9naW5SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAvLyBTdG9yZSBhY2Nlc3MgdG9rZW5cclxuICAgICAgdGhpcy5zZXRUb2tlbihsb2dpblJlc3VsdC52YWx1ZS50b2tlbik7XHJcblxyXG4gICAgICB0aGlzLl9sb2dpbkluZm8gPSBsb2dpblJlc3VsdC52YWx1ZS5jb250ZXh0O1xyXG4gICAgICB0aGlzLl9sb2dnZWRJbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbG9naW5SZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGxvZ291dFxyXG4gICAqL1xyXG4gIGxvZ291dCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dvdXQnLCB7fSkucGlwZShcclxuICAgICAgICBtYXAociA9PiB7IHJldHVybiByOyB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChfZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgbG9naW4gcmVmcmVzaCB0aW1lciBhbmQgbG9naW5zIHN0YXRlXHJcbiAgICovXHJcbiAgcmVzZXQoKSB7XHJcbiAgICAvLyBDbGVhciBzdWJzY3JpcHRpb25zXHJcbiAgICBpZiAodGhpcy50b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnRva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMudG9rZW5SZWZyZXNoVGltZXJTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b2tlblJlZnJlc2hUaW1lciA9IG51bGw7XHJcblxyXG4gICAgLy8gQ2xlYXIgbG9naW4gaW5mb1xyXG4gICAgdGhpcy5fbG9naW5JbmZvID0gbnVsbDtcclxuICAgIHRoaXMuX2xvZ2dlZEluID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBsb2dpbiBkYXRhXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICAvLyBSZXNldCBsb2dpblxyXG4gICAgdGhpcy5yZXNldCgpO1xyXG5cclxuICAgIC8vIENsZWFyIGxvY2FsIHN0b3JhZ2VcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N1cHBvcnRfand0Jyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIHRva2VuIHJlZnJlc2hcclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2goKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PExvZ2luUmVzdWx0Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL3JlZnJlc2gnLCB7fVxyXG4gICAgKS5waXBlKG1hcCgocjogQXBpUmVzdWx0PExvZ2luUmVzdWx0PikgPT4ge1xyXG4gICAgICAvLyBVcGRhdGUgdG9rZW5cclxuICAgICAgdGhpcy5zZXRUb2tlbihyLnZhbHVlLnRva2VuKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIHN1cHBvcnQgc2VydmljZVxyXG4gICAqL1xyXG4gIG9wZW4oKSB7XHJcbiAgICBsZXQgdXJpID0gdGhpcy5zZXJ2aWNlVXJpID8/ICcnO1xyXG4gICAgaWYgKHVyaS5lbmRzV2l0aCgnL2FwaScpKVxyXG4gICAgICB1cmkgPSB1cmkuc3Vic3RyaW5nKDAsIHVyaS5sZW5ndGggLSA0KVxyXG4gICAgd2luZG93Lm9wZW4odXJpKTtcclxuICB9XHJcblxyXG4gIC8vLy9cclxuICAvLyBOT1RJRklDQVRJT05TXHJcbiAgLy8vL1xyXG5cclxuICAvKipcclxuICAgKiBDb3VudCB1bnJlYWQgbm90aWZpY2F0aW9uc1xyXG4gICAqL1xyXG4gIGNvdW50VW5yZWFkTm90aWZpY2F0aW9ucygpIHtcclxuICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PG51bWJlcj4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9ub3RpZmljYXRpb25zL2NvdW50LXVucmVhZC8/cHJvZHVjdHM9JyArICh0aGlzLnByb2R1Y3RzID8/IDApICsgXCImbW9kdWxlcz1cIiArICh0aGlzLnByb2R1Y3RNb2R1bGVzID8/IDApXHJcbiAgICApLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuX3VucmVhZE5vdGlmaWNhdGlvbnMgPSByLnZhbHVlID4gMCA/IHIudmFsdWUgOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUXVlcnkgbm90aWZpY2F0aW9uc1xyXG4gICAqIEBwYXJhbSBwYXJhbXM6IHF1ZXJ5IHBhcmFtZXRlcnNcclxuICAgKi9cclxuICBxdWVyeU5vdGlmaWNhdGlvbnMocGFyYW1zOiBTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFBhcmFtcykge1xyXG4gICAgcGFyYW1zLnByb2R1Y3RzID0gdGhpcy5wcm9kdWN0cyA/PyAwO1xyXG4gICAgcGFyYW1zLnByb2R1Y3RNb2R1bGVzID0gdGhpcy5wcm9kdWN0TW9kdWxlcyA/PyAwO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFJlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9ub3RpZmljYXRpb25zJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaWQ6IHRoZSBub3RpZmljYXRpb24gaWRcclxuICAgKi9cclxuICBnZXROb3RpZmljYXRpb24oaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PFN1cHBvcnROb3RpZmljYXRpb25JbmZvPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgK1xyXG4gICAgICAnL25vdGlmaWNhdGlvbnMvJyArXHJcbiAgICAgIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFyayBhIGdyb3VwIG9mIG5vdGlmaWNhdGlvbnMgYXMgcmVhZFxyXG4gICAqIEBwYXJhbSBpZHM6IHRoZSBhcnJheSBvZiBub3RpZmljYXRpb24ncyBpZHMgdG8gc2V0IGFzIHJlYWRcclxuICAgKi9cclxuICBtYXJrTm90aWZpY2F0aW9ucyhwYXJhbXM6IFN1cHBvcnROb3RpZmljYXRpb25zTWFya1BhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxib29sZWFuPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL25vdGlmaWNhdGlvbnMvbWFyaycsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBEb3dubG9hZCBhIG5vdGlmaWNhdGlvbiBkb2N1bWVudFxyXG4gKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBub3RpZmljYXRpb24gZG9jdW1lbnQgaWRcclxuICovXHJcbiAgZG93bG9hZE5vdGlmaWNhdGlvbkRvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9kb3dubG9hZC8nICsgZG9jdW1lbnRJZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|