@libs-ui/components-list 0.2.82 → 0.2.83
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/defines/list.define.d.ts +1 -1
- package/esm2022/list.component.mjs +5 -3
- package/esm2022/templates/checkbox/checkbox.component.mjs +2 -2
- package/esm2022/templates/radio/radio.component.mjs +2 -2
- package/esm2022/templates/templates.component.abstract.mjs +3 -2
- package/esm2022/templates/text/text.component.mjs +2 -2
- package/fesm2022/libs-ui-components-list.mjs +9 -6
- package/fesm2022/libs-ui-components-list.mjs.map +1 -1
- package/list.component.d.ts +4 -3
- package/package.json +1 -1
- package/templates/templates.component.abstract.d.ts +3 -2
|
@@ -55,6 +55,7 @@ export class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
55
55
|
resetKeyWhenSelectAllKeyDropdown = input();
|
|
56
56
|
ignoreClassDisableDefaultWhenUseKeysDisableItem = input(); // bỏ chế độ disable item trên html để disable từng phần trong rows
|
|
57
57
|
templateRefSearchNoData = input(undefined);
|
|
58
|
+
autoSelectedFirstItemCallOutsideBefore = input(false);
|
|
58
59
|
/* OUTPUT */
|
|
59
60
|
outSortSingleSelect = output();
|
|
60
61
|
outSelectKey = output(); // sử dụng cho type radio,text.
|
|
@@ -331,9 +332,9 @@ export class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
331
332
|
this.onDestroy.complete();
|
|
332
333
|
}
|
|
333
334
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListTemplatesComponentAbstract, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
334
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: LibsUiComponentsListTemplatesComponentAbstract, inputs: { functionGetItemsAutoAddList: { classPropertyName: "functionGetItemsAutoAddList", publicName: "functionGetItemsAutoAddList", isSignal: true, isRequired: false, transformFunction: null }, paddingLeftItem: { classPropertyName: "paddingLeftItem", publicName: "paddingLeftItem", isSignal: true, isRequired: false, transformFunction: null }, maxItemShow: { classPropertyName: "maxItemShow", publicName: "maxItemShow", isSignal: true, isRequired: false, transformFunction: null }, searchConfig: { classPropertyName: "searchConfig", publicName: "searchConfig", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, keySearch: { classPropertyName: "keySearch", publicName: "keySearch", isSignal: true, isRequired: false, transformFunction: null }, dropdownTabKeyActive: { classPropertyName: "dropdownTabKeyActive", publicName: "dropdownTabKeyActive", isSignal: true, isRequired: false, transformFunction: null }, isSearchOnline: { classPropertyName: "isSearchOnline", publicName: "isSearchOnline", isSignal: true, isRequired: false, transformFunction: null }, onSearch: { classPropertyName: "onSearch", publicName: "onSearch", isSignal: true, isRequired: false, transformFunction: null }, onRefresh: { classPropertyName: "onRefresh", publicName: "onRefresh", isSignal: true, isRequired: false, transformFunction: null }, onSetHiddenItemByKey: { classPropertyName: "onSetHiddenItemByKey", publicName: "onSetHiddenItemByKey", isSignal: true, isRequired: false, transformFunction: null }, onRemoveItems: { classPropertyName: "onRemoveItems", publicName: "onRemoveItems", isSignal: true, isRequired: false, transformFunction: null }, onSetDataStore: { classPropertyName: "onSetDataStore", publicName: "onSetDataStore", isSignal: true, isRequired: false, transformFunction: null }, onUpdateMultiKeySelectedGroup: { classPropertyName: "onUpdateMultiKeySelectedGroup", publicName: "onUpdateMultiKeySelectedGroup", isSignal: true, isRequired: false, transformFunction: null }, onItemChangeUnSelect: { classPropertyName: "onItemChangeUnSelect", publicName: "onItemChangeUnSelect", isSignal: true, isRequired: false, transformFunction: null }, onUpdateData: { classPropertyName: "onUpdateData", publicName: "onUpdateData", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, multiKeySelected: { classPropertyName: "multiKeySelected", publicName: "multiKeySelected", isSignal: true, isRequired: false, transformFunction: null }, keysDisableItem: { classPropertyName: "keysDisableItem", publicName: "keysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, keysHiddenItem: { classPropertyName: "keysHiddenItem", publicName: "keysHiddenItem", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, loadingIconSize: { classPropertyName: "loadingIconSize", publicName: "loadingIconSize", isSignal: true, isRequired: false, transformFunction: null }, resetKeyWhenSelectAllKeyDropdown: { classPropertyName: "resetKeyWhenSelectAllKeyDropdown", publicName: "resetKeyWhenSelectAllKeyDropdown", isSignal: true, isRequired: false, transformFunction: null }, ignoreClassDisableDefaultWhenUseKeysDisableItem: { classPropertyName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", publicName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, templateRefSearchNoData: { classPropertyName: "templateRefSearchNoData", publicName: "templateRefSearchNoData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keySearch: "keySearchChange", keySelected: "keySelectedChange", multiKeySelected: "multiKeySelectedChange", keysHiddenItem: "keysHiddenItemChange", outSortSingleSelect: "outSortSingleSelect", outSelectKey: "outSelectKey", outSelectMultiKey: "outSelectMultiKey", outUnSelectMultiKey: "outUnSelectMultiKey", outFieldKey: "outFieldKey", outChangeView: "outChangeView", outLoading: "outLoading", outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outLoadItemsComplete: "outLoadItemsComplete" }, viewQueries: [{ propertyName: "itemRef", first: true, predicate: ["itemRef"], descendants: true, isSignal: true }], ngImport: i0 });
|
|
335
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: LibsUiComponentsListTemplatesComponentAbstract, inputs: { functionGetItemsAutoAddList: { classPropertyName: "functionGetItemsAutoAddList", publicName: "functionGetItemsAutoAddList", isSignal: true, isRequired: false, transformFunction: null }, paddingLeftItem: { classPropertyName: "paddingLeftItem", publicName: "paddingLeftItem", isSignal: true, isRequired: false, transformFunction: null }, maxItemShow: { classPropertyName: "maxItemShow", publicName: "maxItemShow", isSignal: true, isRequired: false, transformFunction: null }, searchConfig: { classPropertyName: "searchConfig", publicName: "searchConfig", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, keySearch: { classPropertyName: "keySearch", publicName: "keySearch", isSignal: true, isRequired: false, transformFunction: null }, dropdownTabKeyActive: { classPropertyName: "dropdownTabKeyActive", publicName: "dropdownTabKeyActive", isSignal: true, isRequired: false, transformFunction: null }, isSearchOnline: { classPropertyName: "isSearchOnline", publicName: "isSearchOnline", isSignal: true, isRequired: false, transformFunction: null }, onSearch: { classPropertyName: "onSearch", publicName: "onSearch", isSignal: true, isRequired: false, transformFunction: null }, onRefresh: { classPropertyName: "onRefresh", publicName: "onRefresh", isSignal: true, isRequired: false, transformFunction: null }, onSetHiddenItemByKey: { classPropertyName: "onSetHiddenItemByKey", publicName: "onSetHiddenItemByKey", isSignal: true, isRequired: false, transformFunction: null }, onRemoveItems: { classPropertyName: "onRemoveItems", publicName: "onRemoveItems", isSignal: true, isRequired: false, transformFunction: null }, onSetDataStore: { classPropertyName: "onSetDataStore", publicName: "onSetDataStore", isSignal: true, isRequired: false, transformFunction: null }, onUpdateMultiKeySelectedGroup: { classPropertyName: "onUpdateMultiKeySelectedGroup", publicName: "onUpdateMultiKeySelectedGroup", isSignal: true, isRequired: false, transformFunction: null }, onItemChangeUnSelect: { classPropertyName: "onItemChangeUnSelect", publicName: "onItemChangeUnSelect", isSignal: true, isRequired: false, transformFunction: null }, onUpdateData: { classPropertyName: "onUpdateData", publicName: "onUpdateData", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, multiKeySelected: { classPropertyName: "multiKeySelected", publicName: "multiKeySelected", isSignal: true, isRequired: false, transformFunction: null }, keysDisableItem: { classPropertyName: "keysDisableItem", publicName: "keysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, keysHiddenItem: { classPropertyName: "keysHiddenItem", publicName: "keysHiddenItem", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, loadingIconSize: { classPropertyName: "loadingIconSize", publicName: "loadingIconSize", isSignal: true, isRequired: false, transformFunction: null }, resetKeyWhenSelectAllKeyDropdown: { classPropertyName: "resetKeyWhenSelectAllKeyDropdown", publicName: "resetKeyWhenSelectAllKeyDropdown", isSignal: true, isRequired: false, transformFunction: null }, ignoreClassDisableDefaultWhenUseKeysDisableItem: { classPropertyName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", publicName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, templateRefSearchNoData: { classPropertyName: "templateRefSearchNoData", publicName: "templateRefSearchNoData", isSignal: true, isRequired: false, transformFunction: null }, autoSelectedFirstItemCallOutsideBefore: { classPropertyName: "autoSelectedFirstItemCallOutsideBefore", publicName: "autoSelectedFirstItemCallOutsideBefore", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keySearch: "keySearchChange", keySelected: "keySelectedChange", multiKeySelected: "multiKeySelectedChange", keysHiddenItem: "keysHiddenItemChange", outSortSingleSelect: "outSortSingleSelect", outSelectKey: "outSelectKey", outSelectMultiKey: "outSelectMultiKey", outUnSelectMultiKey: "outUnSelectMultiKey", outFieldKey: "outFieldKey", outChangeView: "outChangeView", outLoading: "outLoading", outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outLoadItemsComplete: "outLoadItemsComplete" }, viewQueries: [{ propertyName: "itemRef", first: true, predicate: ["itemRef"], descendants: true, isSignal: true }], ngImport: i0 });
|
|
335
336
|
}
|
|
336
337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListTemplatesComponentAbstract, decorators: [{
|
|
337
338
|
type: Directive
|
|
338
339
|
}], ctorParameters: () => [] });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBSy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSzNELE1BQU0sT0FBZ0IsOENBQThDO0lBQ2xFLGNBQWM7SUFDSixPQUFPLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ2hDLGNBQWMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsY0FBYyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUcsTUFB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TyxDQUFDLHVCQUF1QixRQUFRLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRXhHLFVBQVUsR0FBRyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsVUFBVSxHQUFHLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxJQUFnQjtRQUNuRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFLUyxxQkFBcUI7UUFDN0IsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBR0QsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQWhZbUIsOENBQThDOzRGQUE5Qyw4Q0FBOEM7OzRGQUE5Qyw4Q0FBOEM7a0JBRG5FLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTb3J0IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1zb3J0XCI7XG5pbXBvcnQgeyBJSW5wdXRTZWFyY2hDb25maWcgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtc2VhcmNoXCI7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgSVBhZ2luZywgVFlQRV9URU1QTEFURV9SRUYgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLWh0dHAtcmVxdWVzdFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGNvbnZlcnRTaWduYWxUb09iamVjdCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcFdoaWxlLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRGaWVsZEtleUJ5VHlwZSB9IGZyb20gXCIuLi9kZWZpbmVzL2xpc3QuZGVmaW5lXCI7XG5pbXBvcnQgeyBJRGF0YVVwZGF0ZVRvU3RvcmUsIElMaXN0RGF0YUVtaXRLZXksIElMaXN0RGF0YUVtaXRNdWx0aUtleSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW0sIElMaXN0Q29uZmlnSXRlbUNoZWNrYm94LCBJTGlzdENvbmZpZ0l0ZW1SYWRpbywgSUxpc3RDb25maWdJdGVtVGV4dCwgSUxpc3RDb25maWdJdGVtVGV4dENvbCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZVwiO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogUFJPUEVSVFkgKi9cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByb3RlY3RlZCBoZWlnaHRWaWV3UG9ydCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+KFtdKTtcbiAgcHJvdGVjdGVkIGl0ZW1zID0gc2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+PihbXSk7XG4gIHByb3RlY3RlZCBsb2FkZWRMYXN0SXRlbSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBoYXNTY3JvbGwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgZmllbGRLZXlEZWZhdWx0ID0gc2lnbmFsPHN0cmluZz4oJ2lkJyk7XG4gIHByb3RlY3RlZCBmaWVsZEtleSA9IHNpZ25hbDxzdHJpbmc+KCdpZCcpO1xuICBwcm90ZWN0ZWQgdGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHBhZ2luZ1N0b3JlID0gc2lnbmFsPElQYWdpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBoZWlnaHRJdGVtID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCB0aW1lSW50ZXJ2YWxJbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCB0aW1lSW50ZXJ2YWxDaGVja1Njcm9sbCA9IHNpZ25hbDxudW1iZXI+KDI1MCk7XG5cbiAgcHJvdGVjdGVkIG9uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByb3RlY3RlZCBpbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxDaGVja1Njcm9sbFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSBmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QgPSBpbnB1dDwoKCkgPT4gQXJyYXk8YW55PikgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHBhZGRpbmdMZWZ0SXRlbSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1heEl0ZW1TaG93ID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgc2VhcmNoQ29uZmlnID0gaW5wdXQ8SUlucHV0U2VhcmNoQ29uZmlnPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlYXJjaCA9IG1vZGVsPHN0cmluZz4oJycpO1xuICByZWFkb25seSBkcm9wZG93blRhYktleUFjdGl2ZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaXNTZWFyY2hPbmxpbmUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgb25TZWFyY2ggPSBpbnB1dDxTdWJqZWN0PHN0cmluZz4+KCk7XG4gIHJlYWRvbmx5IG9uUmVmcmVzaCA9IGlucHV0PFN1YmplY3Q8dm9pZD4+KCk7XG4gIHJlYWRvbmx5IG9uU2V0SGlkZGVuSXRlbUJ5S2V5ID0gaW5wdXQ8U3ViamVjdDxBcnJheTx1bmtub3duPj4+KCk7XG4gIHJlYWRvbmx5IG9uUmVtb3ZlSXRlbXMgPSBpbnB1dDxTdWJqZWN0PEFycmF5PHVua25vd24+Pj4oKTtcbiAgcmVhZG9ubHkgb25TZXREYXRhU3RvcmUgPSBpbnB1dDxTdWJqZWN0PEFycmF5PGFueT4+PigpO1xuICByZWFkb25seSBvblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cCA9IGlucHV0PFN1YmplY3Q8dm9pZD4+KCk7XG4gIHJlYWRvbmx5IG9uSXRlbUNoYW5nZVVuU2VsZWN0ID0gaW5wdXQ8U3ViamVjdDxhbnk+PigpO1xuICByZWFkb25seSBvblVwZGF0ZURhdGEgPSBpbnB1dDxTdWJqZWN0PElEYXRhVXBkYXRlVG9TdG9yZT4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gbW9kZWw8dW5rbm93bj4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgcmFkaW8sdGV4dC5cbiAgcmVhZG9ubHkgbXVsdGlLZXlTZWxlY3RlZCA9IG1vZGVsPEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPihbXSk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkga2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGtleXNIaWRkZW5JdGVtID0gbW9kZWw8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KDEyMDApO1xuICByZWFkb25seSBsb2FkaW5nSWNvblNpemUgPSBpbnB1dDwnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnIHwgJ3NtYWxsZXInIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSByZXNldEtleVdoZW5TZWxlY3RBbGxLZXlEcm9wZG93biA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTsgLy8gYuG7jyBjaOG6vyDEkeG7mSBkaXNhYmxlIGl0ZW0gdHLDqm4gaHRtbCDEkeG7gyBkaXNhYmxlIHThu6tuZyBwaOG6p24gdHJvbmcgcm93c1xuICByZWFkb25seSB0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0U29ydFNpbmdsZVNlbGVjdCA9IG91dHB1dDxJU29ydD4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0S2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRLZXkgfCB1bmRlZmluZWQ+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIHJhZGlvLHRleHQuXG4gIHJlYWRvbmx5IG91dFNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRNdWx0aUtleT4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2hvIHBow6lwIGNo4buNbiBuaGnhu4F1LlxuICByZWFkb25seSBvdXRVblNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PEFycmF5PHVua25vd24+PigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dEZpZWxkS2V5ID0gb3V0cHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdlVmlldyA9IG91dHB1dDxBcnJheTxhbnk+PigpO1xuICByZWFkb25seSBvdXRMb2FkaW5nID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRJdGVtc0NvbXBsZXRlID0gb3V0cHV0PHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByb3RlY3RlZCBpdGVtUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdpdGVtUmVmJyk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaHR0cFJlcXVlc3RTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vblNlYXJjaCgpPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoa2V5U2VhcmNoOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMua2V5U2VhcmNoLnNldChrZXlTZWFyY2ggPz8gJycpO1xuICAgICAgdGhpcy5wcm9jZXNzU2VhcmNoKCk7XG4gICAgfSk7XG4gICAgdGhpcy5vblJlZnJlc2goKT8ucGlwZShza2lwV2hpbGUoKCkgPT4gdGhpcy5sb2FkaW5nKCkpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSkge1xuICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0KFtdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZVVuU2VsZWN0KCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5KCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMuc2V0SGlkZGVuSXRlbUJ5S2V5LmJpbmQodGhpcykpO1xuICAgIHRoaXMub3V0RmllbGRLZXkuZW1pdChnZXRGaWVsZEtleUJ5VHlwZSh0aGlzLmNvbmZpZygpLCB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKSk7XG4gICAgdGhpcy5vblJlbW92ZUl0ZW1zKCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMucmVtb3ZlSXRlbXMuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vblVwZGF0ZURhdGEoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVEYXRhLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgdXBkYXRlRGF0YShkYXRhOiBJRGF0YVVwZGF0ZVRvU3RvcmUpIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyBuZXdEYXRhLCBmdW5jdGlvbkN1c3RvbUFkZERhdGFUb1N0b3JlIH0gPSBkYXRhO1xuICAgIGlmICghbmV3RGF0YSB8fCAhbmV3RGF0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnKCk/LnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIG5ld0RhdGEuZm9yRWFjaChpdGVtID0+IChpdGVtLmlzQWRkTmV3ID0gdHJ1ZSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbkN1c3RvbUFkZERhdGFUb1N0b3JlKG5ld0RhdGEsIHRoaXMuc3RvcmUpO1xuICAgIHRoaXMucHJvY2Vzc0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRLZXkoKSB7XG4gICAgbGV0IGZpZWxkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybiAnaWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVUYWc/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQ/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVJhZGlvPy4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZEtleSB8fCAnaWQnO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtcyhrZXlzOiBBcnJheTx1bmtub3duPikge1xuICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5nZXRGaWVsZEtleSgpO1xuXG4gICAgW3RoaXMuc3RvcmUoKSwgdGhpcy5pdGVtcygpXS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnKCk/LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgZWxlbWVudC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbShpdGVtKClbdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmZpZWxkR2V0SXRlbXMgfHwgJ2l0ZW1zJ10oKSwga2V5cywgZmllbGRLZXkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZUl0ZW0oZWxlbWVudCwga2V5cywgZmllbGRLZXkpO1xuICAgIH0pO1xuICAgIHRoaXMucHJvY2Vzc0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSXRlbShkYXRhOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Piwga2V5czogQXJyYXk8dW5rbm93bj4sIGZpZWxkS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbmRJbmRleChpdGVtID0+IGl0ZW0oKVtmaWVsZEtleV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRIZWlnaHRWaWV3UG9ydChjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxlbmd0aEl0ZW1zID0gdGhpcy5nZXRMZW5ndGhJdGVtKCk7XG5cbiAgICBpZiAoIWxlbmd0aEl0ZW1zKSB7XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChbLi4udGhpcy5pdGVtcygpXSk7XG4gICAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkpIHtcbiAgICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQodGhpcy5oZWlnaHRJdGVtKCkpO1xuICAgICAgfVxuICAgICAgY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcz8uKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGVpZ2h0Vmlld1BvcnQgPSB0aGlzLmdldEhlaWdodEdyb3VwSGFzTGluZSgpICsgKGxlbmd0aEl0ZW1zIDwgdGhpcy5tYXhJdGVtU2hvdygpID8gbGVuZ3RoSXRlbXMgKiB0aGlzLmhlaWdodEl0ZW0oKSA6IHRoaXMubWF4SXRlbVNob3coKSAqIHRoaXMuaGVpZ2h0SXRlbSgpKSArICh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uY29uZmlnQ2hlY2tib3hDaGVja0FsbCA/IDI3IDogMCkgKyAodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmNvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW0gPyAyNyA6IDApO1xuXG4gICAgaWYgKCF0aGlzLm1heEl0ZW1TaG93KCkpIHtcbiAgICAgIHRoaXMuaGVpZ2h0Vmlld1BvcnQuc2V0KDApO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkgPiAxMykge1xuICAgICAgaWYgKGhlaWdodFZpZXdQb3J0ICYmIGhlaWdodFZpZXdQb3J0ICE9PSB0aGlzLmhlaWdodFZpZXdQb3J0KCkpIHtcbiAgICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQoaGVpZ2h0Vmlld1BvcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoWy4uLnRoaXMuaXRlbXMoKV0pO1xuICAgICAgY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcz8uKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMudGltZUludGVydmFsSW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydCgpKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXRlbVJlZigpIHx8ICF0aGlzLml0ZW1SZWYoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmhlaWdodEl0ZW0uc2V0KHRoaXMuaXRlbVJlZigpPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSA8IDEzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0SGlkZGVuSXRlbUJ5S2V5KGtleXM6IEFycmF5PHVua25vd24+KSB7XG4gICAgdGhpcy5rZXlzSGlkZGVuSXRlbS5zZXQoa2V5cyk7XG4gICAgaWYgKHRoaXMuc3RvcmUoKSAmJiB0aGlzLnN0b3JlKCkubGVuZ3RoKSB7XG4gICAgICB0aGlzLnByb2Nlc3NEYXRhKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tWaWV3UG9ydFNjcm9sbChjYWxsQmFjaz86IChwcmU6IGJvb2xlYW4sIGN1cnJlbnQ6IGJvb2xlYW4pID0+IHZvaWQpIHtcbiAgICBjb25zdCBwcmUgPSB0aGlzLmhhc1Njcm9sbCgpO1xuXG4gICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW50ZXJ2YWxDaGVja1Njcm9sbFN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMudGltZUludGVydmFsQ2hlY2tTY3JvbGwoKSkucGlwZSh0YWtlKDUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oYXNTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICAgIGlmICh0aGlzLml0ZW1zKCkgJiYgIXRoaXMuaXRlbXMoKS5sZW5ndGggJiYgcHJlICYmICF0aGlzLmhhc1Njcm9sbCgpKSB7XG4gICAgICAgIGNhbGxCYWNrPy4ocHJlLCB0aGlzLmhhc1Njcm9sbCgpKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY2FsbEJhY2s/LihwcmUsIHRoaXMuaGFzU2Nyb2xsKCkpO1xuICAgICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNhbGxBcGlCeVNlcnZpY2UoZmlyc3RDYWxsID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBodHRwUmVxdWVzdERhdGEsIGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCB9ID0gY29uZmlnO1xuXG4gICAgICBpZiAoIWh0dHBSZXF1ZXN0RGF0YT8uKCkgfHwgKGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiAhdGhpcy5rZXlTZWFyY2goKSkpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmIChpZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggJiYgIXRoaXMua2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5zZXQoW10pO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgY29uc3QgeyBhcmd1bWVudHNWYWx1ZSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUgfSA9IGh0dHBSZXF1ZXN0RGF0YSgpO1xuXG4gICAgICBpZiAoZmlyc3RDYWxsKSB7XG4gICAgICAgIGNvbnN0IGxvYWRlZExhc3RJdGVtID0gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB7IC4uLnRoaXMuZmFrZVJlc3BvbnNlQXBpKCksIGRyb3Bkb3duVGFiS2V5QWN0aXZlOiB0aGlzLmRyb3Bkb3duVGFiS2V5QWN0aXZlKCkgfSwgdGhpcy5wYWdpbmdTdG9yZSgpIHx8IHt9LCB0aGlzLmtleVNlYXJjaCgpLCB0aGlzLmlzU2VhcmNoT25saW5lKCksIHRoaXMubG9hZGVkTGFzdEl0ZW0oKSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpO1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldChsb2FkZWRMYXN0SXRlbSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5jYWxsQXBpKGh0dHBSZXF1ZXN0RGF0YSgpKTtcblxuICAgICAgdGhpcy5wYWdpbmdTdG9yZS5zZXQocmVzdWx0LnBhZ2luZyk7XG4gICAgICBpZiAoIXRoaXMucGFnaW5nU3RvcmUpIHtcbiAgICAgICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQodHJ1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsb2FkZWRMYXN0SXRlbSA9IHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLnVwZGF0ZUFyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSwgeyAuLi5yZXN1bHQsIGRyb3Bkb3duVGFiS2V5QWN0aXZlOiB0aGlzLmRyb3Bkb3duVGFiS2V5QWN0aXZlKCkgfSwgdGhpcy5wYWdpbmdTdG9yZSgpIHx8IHt9LCB0aGlzLmtleVNlYXJjaCgpLCB0aGlzLmlzU2VhcmNoT25saW5lKCksIHRoaXMubG9hZGVkTGFzdEl0ZW0oKSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpO1xuXG4gICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldChsb2FkZWRMYXN0SXRlbSk7XG5cbiAgICAgIGlmIChmaXJzdENhbGwpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoY29udmVydE9iamVjdFRvU2lnbmFsPFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+Pj4ocmVzdWx0LmRhdGEgfHwgW10pKCkpO1xuXG4gICAgICAgIGlmICh0aGlzLmZ1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCgpKSB7XG4gICAgICAgICAgY29uc3QgbmV3SXRlbXMgPSBjb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+Pih0aGlzLmZ1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCgpPy4oKSB8fCBbXSk7XG5cbiAgICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZShpdGVtcyA9PiBbLi4ubmV3SXRlbXMoKSwgLi4uaXRlbXNdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2Nlc3NEYXRhKHRydWUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmUudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgLi4uY29udmVydE9iamVjdFRvU2lnbmFsPFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+Pj4ocmVzdWx0LmRhdGEgfHwgW10pKCldKTtcbiAgICAgIHRoaXMucHJvY2Vzc0RhdGEoZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZmFrZVJlc3BvbnNlQXBpKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGZhbHNlKTtcbiAgICB0aGlzLnBhZ2luZ1N0b3JlLnNldCh7fSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UuZmFrZVJlc3BvbnNlUGFnaW5nQXBpKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRWYWx1ZUJ5Q29uZmlnKGl0ZW06IFdyaXRhYmxlU2lnbmFsPGFueT4sIGNvbmZpZ1RlbXBsYXRlPzogSUxpc3RDb25maWdJdGVtVGV4dCB8IElMaXN0Q29uZmlnSXRlbVJhZGlvIHwgSUxpc3RDb25maWdJdGVtQ2hlY2tib3gpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlZiA9IGl0ZW0oKS5yZWYgfHwge307XG4gICAgY29uc3QgbGFiZWw6IHVua25vd24gPSByZWYubGFiZWwgfHwgcmVmLnRpdGxlIHx8IHJlZi52YWx1ZSB8fCByZWYubmFtZSB8fCAnICc7XG5cbiAgICBpZiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJykge1xuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgZmllbGRMYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocmVmLmxhYmVsIHx8IHJlZi50aXRsZSB8fCByZWYudmFsdWUgfHwgcmVmLm5hbWUgfHwgJyAnKSB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ1RlbXBsYXRlPy5nZXRWYWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdUZW1wbGF0ZS5nZXRWYWx1ZShyZWYpO1xuXG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50SXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRJdGVtLCBmaWVsZExhYmVsOiB2YWx1ZSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGAke3ZhbHVlfWApIDogJycgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnVGVtcGxhdGU/LmdldFBvcG92ZXIpIHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnRJdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudEl0ZW0sIHBvcG92ZXJMYWJlbDogY29uZmlnVGVtcGxhdGU/LmdldFBvcG92ZXI/LihpdGVtKCkpIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZ1RlbXBsYXRlPy5yb3dzPy4oKSkge1xuICAgICAgcmV0dXJuIGl0ZW0oKS5maWVsZExhYmVsO1xuICAgIH1cbiAgICBsZXQgdGV4dFNlYXJjaCA9IGl0ZW0oKS5maWVsZExhYmVsIHx8ICcnO1xuXG4gICAgY29uc3Qgcm93cyA9IGNvbnZlcnRTaWduYWxUb09iamVjdChjb25maWdUZW1wbGF0ZS5yb3dzKCkpIGFzIEFycmF5PGFueT47XG5cbiAgICByb3dzLmZvckVhY2goKHJvdywgaW5kZXhSb3cpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZVJvdyA9IGBmaWVsZExhYmVsUm93JHtpbmRleFJvd31gO1xuXG4gICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGNsb25lRGVlcChpdGVtKCkpO1xuICAgICAgY29uc3QgbmV3SXRlbSA9IHsgLi4uY3VycmVudEl0ZW0gfTtcbiAgICAgIG5ld0l0ZW1bZmllbGROYW1lUm93XSA9IHJvdy5nZXRWYWx1ZSAmJiByb3cuZ2V0VmFsdWUocmVmKTtcbiAgICAgIG5ld0l0ZW1bYGZpZWxkUm93U3R5bGVzRHluYW1pY0NvbHMke2luZGV4Um93fWBdID0gcm93LmdldFJvd1N0eWxlc0R5bmFtaWNDb2xzICYmIHJvdy5nZXRSb3dTdHlsZXNEeW5hbWljQ29scyhyZWYpO1xuICAgICAgbmV3SXRlbVtgZmllbGRSb3dBdmF0YXJDb25maWcke2luZGV4Um93fWBdID0gcm93LmdldEF2YXRhckNvbmZpZyAmJiByb3cuZ2V0QXZhdGFyQ29uZmlnKHJlZik7XG4gICAgICBpZiAocm93LmNvbHMgJiYgcm93LmNvbHMubGVuZ3RoKSB7XG4gICAgICAgIHJvdy5jb2xzLmZvckVhY2goYXN5bmMgKGNvbDogSUxpc3RDb25maWdJdGVtVGV4dENvbCwgaW5kZXhDb2w6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZUNvbCA9IGBmaWVsZExhYmVsQ29sJHtpbmRleFJvd30ke2luZGV4Q29sfWA7XG5cbiAgICAgICAgICBuZXdJdGVtW2ZpZWxkTmFtZUNvbF0gPSBjb2wuZ2V0VmFsdWU7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xDbGFzcyR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRDbGFzc0NvbCAmJiBjb2wuZ2V0Q2xhc3NDb2wocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xQb3BvdmVyJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldFBvcG92ZXIgJiYgY29sLmdldFBvcG92ZXIocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRCYWRnZSR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRDb25maWdCYWRnZSAmJiBjb2wuZ2V0Q29uZmlnQmFkZ2UocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xTdHlsZXNEeW5hbWljJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldFN0eWxlc0R5bmFtaWNDb2w7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xCdXR0b24ke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0QnV0dG9uICYmIGNvbC5nZXRCdXR0b24ocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xTd2l0Y2gke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0TGFiZWxTd2l0Y2ggJiYgY29sLmdldExhYmVsU3dpdGNoKHJlZiwgaW5kZXhDb2wpO1xuICAgICAgICAgIG5ld0l0ZW1bYGZpZWxkQ29sQXZhdGFyQ29uZmlnJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldEF2YXRhckNvbmZpZyAmJiBjb2wuZ2V0QXZhdGFyQ29uZmlnKHJlZik7XG5cbiAgICAgICAgICB0ZXh0U2VhcmNoID0gYCAke3RleHRTZWFyY2h9ICR7bmV3SXRlbVtmaWVsZE5hbWVDb2xdIHx8ICcnfSBgO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXRlbS51cGRhdGUoKCkgPT4gbmV3SXRlbSk7XG4gICAgICB0ZXh0U2VhcmNoID0gYCAke3RleHRTZWFyY2h9ICR7aXRlbSgpW2ZpZWxkTmFtZVJvd10gfHwgJyd9IGA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGV4dFNlYXJjaCB8fCAnICc7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoZmxhZzogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIuZW1pdChmbGFnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzRGF0YShpc1JlcGxhY2U/OiBib29sZWFuKTogYW55O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJvY2Vzc1NlYXJjaCgpOiBhbnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRMZW5ndGhJdGVtKCk6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGdldEhlaWdodEdyb3VwSGFzTGluZSgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzS2V5Q2hhbmdlVW5TZWxlY3QoaXRlbTogYW55KTogdm9pZDtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZCgpKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufSJdfQ==
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBSy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSzNELE1BQU0sT0FBZ0IsOENBQThDO0lBQ2xFLGNBQWM7SUFDSixPQUFPLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ2hDLGNBQWMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsS0FBSyxHQUFHLE1BQU0sQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDL0MsY0FBYyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUcsTUFB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QWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQzFHLE9BQU8sQ0FBQyx1QkFBdUIsUUFBUSxHQUFHLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUV4RyxVQUFVLEdBQUcsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2dCQUNoRSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLFVBQVUsR0FBRyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRVMsMEJBQTBCLENBQUMsSUFBZ0I7UUFDbkQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS1MscUJBQXFCO1FBQzdCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUdELFdBQVc7UUFDVCxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0FqWW1CLDhDQUE4Qzs0RkFBOUMsOENBQThDOzs0RkFBOUMsOENBQThDO2tCQURuRSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIG91dHB1dCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiwgdmlld0NoaWxkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJU29ydCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtc29ydFwiO1xuaW1wb3J0IHsgSUlucHV0U2VhcmNoQ29uZmlnIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXNlYXJjaFwiO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElQYWdpbmcsIFRZUEVfVEVNUExBVEVfUkVGIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3RcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgY29udmVydE9iamVjdFRvU2lnbmFsLCBjb252ZXJ0U2lnbmFsVG9PYmplY3QgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0RmllbGRLZXlCeVR5cGUgfSBmcm9tIFwiLi4vZGVmaW5lcy9saXN0LmRlZmluZVwiO1xuaW1wb3J0IHsgSURhdGFVcGRhdGVUb1N0b3JlLCBJTGlzdERhdGFFbWl0S2V5LCBJTGlzdERhdGFFbWl0TXVsdGlLZXkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtLCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCwgSUxpc3RDb25maWdJdGVtUmFkaW8sIElMaXN0Q29uZmlnSXRlbVRleHQsIElMaXN0Q29uZmlnSXRlbVRleHRDb2wgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2VcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcm90ZWN0ZWQgaGVpZ2h0Vmlld1BvcnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHN0b3JlID0gc2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+PihbXSk7XG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4oW10pO1xuICBwcm90ZWN0ZWQgbG9hZGVkTGFzdEl0ZW0gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgaGFzU2Nyb2xsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGZpZWxkS2V5RGVmYXVsdCA9IHNpZ25hbDxzdHJpbmc+KCdpZCcpO1xuICBwcm90ZWN0ZWQgZmllbGRLZXkgPSBzaWduYWw8c3RyaW5nPignaWQnKTtcbiAgcHJvdGVjdGVkIHRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBwYWdpbmdTdG9yZSA9IHNpZ25hbDxJUGFnaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgaGVpZ2h0SXRlbSA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgdGltZUludGVydmFsSW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgdGltZUludGVydmFsQ2hlY2tTY3JvbGwgPSBzaWduYWw8bnVtYmVyPigyNTApO1xuXG4gIHByb3RlY3RlZCBvbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0ID0gaW5wdXQ8KCgpID0+IEFycmF5PGFueT4pIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBwYWRkaW5nTGVmdEl0ZW0gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtYXhJdGVtU2hvdyA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IHNlYXJjaENvbmZpZyA9IGlucHV0PElJbnB1dFNlYXJjaENvbmZpZz4oKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8SUxpc3RDb25maWdJdGVtPigpO1xuICByZWFkb25seSBrZXlTZWFyY2ggPSBtb2RlbDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25UYWJLZXlBY3RpdmUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlzU2VhcmNoT25saW5lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IG9uU2VhcmNoID0gaW5wdXQ8U3ViamVjdDxzdHJpbmc+PigpO1xuICByZWFkb25seSBvblJlZnJlc2ggPSBpbnB1dDxTdWJqZWN0PHZvaWQ+PigpO1xuICByZWFkb25seSBvblNldEhpZGRlbkl0ZW1CeUtleSA9IGlucHV0PFN1YmplY3Q8QXJyYXk8dW5rbm93bj4+PigpO1xuICByZWFkb25seSBvblJlbW92ZUl0ZW1zID0gaW5wdXQ8U3ViamVjdDxBcnJheTx1bmtub3duPj4+KCk7XG4gIHJlYWRvbmx5IG9uU2V0RGF0YVN0b3JlID0gaW5wdXQ8U3ViamVjdDxBcnJheTxhbnk+Pj4oKTtcbiAgcmVhZG9ubHkgb25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXAgPSBpbnB1dDxTdWJqZWN0PHZvaWQ+PigpO1xuICByZWFkb25seSBvbkl0ZW1DaGFuZ2VVblNlbGVjdCA9IGlucHV0PFN1YmplY3Q8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb25VcGRhdGVEYXRhID0gaW5wdXQ8U3ViamVjdDxJRGF0YVVwZGF0ZVRvU3RvcmU+PigpO1xuICByZWFkb25seSBjbGlja0V4YWN0bHkgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IG1vZGVsPHVua25vd24+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIHJhZGlvLHRleHQuXG4gIHJlYWRvbmx5IG11bHRpS2V5U2VsZWN0ZWQgPSBtb2RlbDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4oW10pOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IGtleXNEaXNhYmxlSXRlbSA9IGlucHV0PEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBrZXlzSGlkZGVuSXRlbSA9IG1vZGVsPEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUxhYmVsID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigxMjAwKTtcbiAgcmVhZG9ubHkgbG9hZGluZ0ljb25TaXplID0gaW5wdXQ8J2xhcmdlJyB8ICdtZWRpdW0nIHwgJ3NtYWxsJyB8ICdzbWFsbGVyJyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgcmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBpZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7IC8vIGLhu48gY2jhur8gxJHhu5kgZGlzYWJsZSBpdGVtIHRyw6puIGh0bWwgxJHhu4MgZGlzYWJsZSB04burbmcgcGjhuqduIHRyb25nIHJvd3NcbiAgcmVhZG9ubHkgdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGF1dG9TZWxlY3RlZEZpcnN0SXRlbUNhbGxPdXRzaWRlQmVmb3JlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRTb3J0U2luZ2xlU2VsZWN0ID0gb3V0cHV0PElTb3J0PigpO1xuICByZWFkb25seSBvdXRTZWxlY3RLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZD4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgcmFkaW8sdGV4dC5cbiAgcmVhZG9ubHkgb3V0U2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdE11bHRpS2V5PigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dFVuU2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8QXJyYXk8dW5rbm93bj4+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkgb3V0RmllbGRLZXkgPSBvdXRwdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBvdXRDaGFuZ2VWaWV3ID0gb3V0cHV0PEFycmF5PGFueT4+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRpbmcgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0TG9hZEl0ZW1zQ29tcGxldGUgPSBvdXRwdXQ8eyBpdGVtczogQXJyYXk8YW55PiwgcGFnaW5nPzogSVBhZ2luZyB9PigpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJvdGVjdGVkIGl0ZW1SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2l0ZW1SZWYnKTtcblxuICAvKiBJTkpFQ1QgKi9cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByb3RlY3RlZCBodHRwUmVxdWVzdFNlcnZpY2UgPSBpbmplY3QoTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9uU2VhcmNoKCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChrZXlTZWFyY2g6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5rZXlTZWFyY2guc2V0KGtleVNlYXJjaCA/PyAnJyk7XG4gICAgICB0aGlzLnByb2Nlc3NTZWFyY2goKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uUmVmcmVzaCgpPy5waXBlKHNraXBXaGlsZSgoKSA9PiB0aGlzLmxvYWRpbmcoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoW10pO1xuICAgICAgfVxuICAgICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKHRydWUpO1xuICAgIH0pO1xuICAgIHRoaXMub25JdGVtQ2hhbmdlVW5TZWxlY3QoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvY2Vzc0tleUNoYW5nZVVuU2VsZWN0KGl0ZW0pO1xuICAgIH0pO1xuICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5zZXRIaWRkZW5JdGVtQnlLZXkuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vdXRGaWVsZEtleS5lbWl0KGdldEZpZWxkS2V5QnlUeXBlKHRoaXMuY29uZmlnKCksIHRoaXMuZmllbGRLZXlEZWZhdWx0KCkpKTtcbiAgICB0aGlzLm9uUmVtb3ZlSXRlbXMoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5yZW1vdmVJdGVtcy5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLm9uVXBkYXRlRGF0YSgpPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZURhdGEuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKGRhdGE6IElEYXRhVXBkYXRlVG9TdG9yZSkge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IG5ld0RhdGEsIGZ1bmN0aW9uQ3VzdG9tQWRkRGF0YVRvU3RvcmUgfSA9IGRhdGE7XG4gICAgaWYgKCFuZXdEYXRhIHx8ICFuZXdEYXRhLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcoKT8udHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgbmV3RGF0YS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNBZGROZXcgPSB0cnVlKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uQ3VzdG9tQWRkRGF0YVRvU3RvcmUobmV3RGF0YSwgdGhpcy5zdG9yZSk7XG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZEtleSgpIHtcbiAgICBsZXQgZmllbGRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuICdpZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjb25maWcudHlwZSkge1xuICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVRhZz8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGZpZWxkS2V5ID0gY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGZpZWxkS2V5ID0gY29uZmlnLmNvbmZpZ1RlbXBsYXRlUmFkaW8/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkS2V5IHx8ICdpZCc7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUl0ZW1zKGtleXM6IEFycmF5PHVua25vd24+KSB7XG4gICAgY29uc3QgZmllbGRLZXkgPSB0aGlzLmdldEZpZWxkS2V5KCk7XG5cbiAgICBbdGhpcy5zdG9yZSgpLCB0aGlzLml0ZW1zKCldLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcoKT8udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICBlbGVtZW50LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0oKVt0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uZmllbGRHZXRJdGVtcyB8fCAnaXRlbXMnXSgpLCBrZXlzLCBmaWVsZEtleSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlSXRlbShlbGVtZW50LCBrZXlzLCBmaWVsZEtleSk7XG4gICAgfSk7XG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtKGRhdGE6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+LCBrZXlzOiBBcnJheTx1bmtub3duPiwgZmllbGRLZXk6IHN0cmluZykge1xuICAgIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGRhdGEuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW2ZpZWxkS2V5XSA9PT0ga2V5KTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEhlaWdodFZpZXdQb3J0KGNhbGxCYWNrQ2FsY3VsYXRvckhlaWdodFN1Y2Nlc3M/OiAoKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoSXRlbXMgPSB0aGlzLmdldExlbmd0aEl0ZW0oKTtcblxuICAgIGlmICghbGVuZ3RoSXRlbXMpIHtcbiAgICAgIHRoaXMub3V0Q2hhbmdlVmlldy5lbWl0KFsuLi50aGlzLml0ZW1zKCldKTtcbiAgICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSkge1xuICAgICAgICB0aGlzLmhlaWdodFZpZXdQb3J0LnNldCh0aGlzLmhlaWdodEl0ZW0oKSk7XG4gICAgICB9XG4gICAgICBjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPy4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoZWlnaHRWaWV3UG9ydCA9IHRoaXMuZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCkgKyAobGVuZ3RoSXRlbXMgPCB0aGlzLm1heEl0ZW1TaG93KCkgPyBsZW5ndGhJdGVtcyAqIHRoaXMuaGVpZ2h0SXRlbSgpIDogdGhpcy5tYXhJdGVtU2hvdygpICogdGhpcy5oZWlnaHRJdGVtKCkpICsgKHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlR3JvdXA/LigpPy5jb25maWdDaGVja2JveENoZWNrQWxsID8gMjcgOiAwKSArICh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uY29uZmlnQnV0dG9uU2VsZWN0QW5kVW5kU2VsZWN0SXRlbSA/IDI3IDogMCk7XG5cbiAgICBpZiAoIXRoaXMubWF4SXRlbVNob3coKSkge1xuICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQoMCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSA+IDEzKSB7XG4gICAgICBpZiAoaGVpZ2h0Vmlld1BvcnQgJiYgaGVpZ2h0Vmlld1BvcnQgIT09IHRoaXMuaGVpZ2h0Vmlld1BvcnQoKSkge1xuICAgICAgICB0aGlzLmhlaWdodFZpZXdQb3J0LnNldChoZWlnaHRWaWV3UG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChbLi4udGhpcy5pdGVtcygpXSk7XG4gICAgICBjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPy4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWxJbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0KCkpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pdGVtUmVmKCkgfHwgIXRoaXMuaXRlbVJlZigpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVpZ2h0SXRlbS5zZXQodGhpcy5pdGVtUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcblxuICAgICAgaWYgKHRoaXMuaGVpZ2h0SXRlbSgpIDwgMTMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydChjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRIaWRkZW5JdGVtQnlLZXkoa2V5czogQXJyYXk8dW5rbm93bj4pIHtcbiAgICB0aGlzLmtleXNIaWRkZW5JdGVtLnNldChrZXlzKTtcbiAgICBpZiAodGhpcy5zdG9yZSgpICYmIHRoaXMuc3RvcmUoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0RhdGEoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxCYWNrPzogKHByZTogYm9vbGVhbiwgY3VycmVudDogYm9vbGVhbikgPT4gdm9pZCkge1xuICAgIGNvbnN0IHByZSA9IHRoaXMuaGFzU2Nyb2xsKCk7XG5cbiAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWxDaGVja1Njcm9sbCgpKS5waXBlKHRha2UoNSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhc1Njcm9sbC5zZXQoZmFsc2UpO1xuICAgICAgaWYgKHRoaXMuaXRlbXMoKSAmJiAhdGhpcy5pdGVtcygpLmxlbmd0aCAmJiBwcmUgJiYgIXRoaXMuaGFzU2Nyb2xsKCkpIHtcbiAgICAgICAgY2FsbEJhY2s/LihwcmUsIHRoaXMuaGFzU2Nyb2xsKCkpO1xuICAgICAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICBjYWxsQmFjaz8uKHByZSwgdGhpcy5oYXNTY3JvbGwoKSk7XG4gICAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaUJ5U2VydmljZShmaXJzdENhbGwgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGh0dHBSZXF1ZXN0RGF0YSwgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIH0gPSBjb25maWc7XG5cbiAgICAgIGlmICghaHR0cFJlcXVlc3REYXRhPy4oKSB8fCAoaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoICYmICF0aGlzLmtleVNlYXJjaCgpKSkge1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiAhdGhpcy5rZXlTZWFyY2goKSkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICBjb25zdCB7IGFyZ3VtZW50c1ZhbHVlLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSB9ID0gaHR0cFJlcXVlc3REYXRhKCk7XG5cbiAgICAgIGlmIChmaXJzdENhbGwpIHtcbiAgICAgICAgY29uc3QgbG9hZGVkTGFzdEl0ZW0gPSB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS51cGRhdGVBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUsIHsgLi4udGhpcy5mYWtlUmVzcG9uc2VBcGkoKSwgZHJvcGRvd25UYWJLZXlBY3RpdmU6IHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSB9LCB0aGlzLnBhZ2luZ1N0b3JlKCkgfHwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSk7XG4gICAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGxvYWRlZExhc3RJdGVtKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLmNhbGxBcGkoaHR0cFJlcXVlc3REYXRhKCkpO1xuXG4gICAgICB0aGlzLnBhZ2luZ1N0b3JlLnNldChyZXN1bHQucGFnaW5nKTtcbiAgICAgIGlmICghdGhpcy5wYWdpbmdTdG9yZSkge1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxvYWRlZExhc3RJdGVtID0gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB7IC4uLnJlc3VsdCwgZHJvcGRvd25UYWJLZXlBY3RpdmU6IHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSB9LCB0aGlzLnBhZ2luZ1N0b3JlKCkgfHwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSk7XG5cbiAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGxvYWRlZExhc3RJdGVtKTtcblxuICAgICAgaWYgKGZpcnN0Q2FsbCkge1xuICAgICAgICB0aGlzLnN0b3JlLnNldChjb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+PihyZXN1bHQuZGF0YSB8fCBbXSkoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtcyA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCk/LigpIHx8IFtdKTtcblxuICAgICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKGl0ZW1zID0+IFsuLi5uZXdJdGVtcygpLCAuLi5pdGVtc10pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZS51cGRhdGUoaXRlbXMgPT4gWy4uLml0ZW1zLCAuLi5jb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+PihyZXN1bHQuZGF0YSB8fCBbXSkoKV0pO1xuICAgICAgdGhpcy5wcm9jZXNzRGF0YShmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBmYWtlUmVzcG9uc2VBcGkoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGFnaW5nU3RvcmUuc2V0KHt9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFZhbHVlQnlDb25maWcoaXRlbTogV3JpdGFibGVTaWduYWw8YW55PiwgY29uZmlnVGVtcGxhdGU/OiBJTGlzdENvbmZpZ0l0ZW1UZXh0IHwgSUxpc3RDb25maWdJdGVtUmFkaW8gfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVmID0gaXRlbSgpLnJlZiB8fCB7fTtcbiAgICBjb25zdCBsYWJlbDogdW5rbm93biA9IHJlZi5sYWJlbCB8fCByZWYudGl0bGUgfHwgcmVmLnZhbHVlIHx8IHJlZi5uYW1lIHx8ICcgJztcblxuICAgIGlmICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50SXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRJdGVtLCBmaWVsZExhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChyZWYubGFiZWwgfHwgcmVmLnRpdGxlIHx8IHJlZi52YWx1ZSB8fCByZWYubmFtZSB8fCAnICcpIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnVGVtcGxhdGU/LmdldFZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1RlbXBsYXRlLmdldFZhbHVlKHJlZik7XG5cbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnRJdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudEl0ZW0sIGZpZWxkTGFiZWw6IHZhbHVlID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYCR7dmFsdWV9YCkgOiAnJyB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChjb25maWdUZW1wbGF0ZT8uZ2V0UG9wb3Zlcikge1xuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgcG9wb3ZlckxhYmVsOiBjb25maWdUZW1wbGF0ZT8uZ2V0UG9wb3Zlcj8uKGl0ZW0oKSkgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnVGVtcGxhdGU/LnJvd3M/LigpKSB7XG4gICAgICByZXR1cm4gaXRlbSgpLmZpZWxkTGFiZWw7XG4gICAgfVxuICAgIGxldCB0ZXh0U2VhcmNoID0gaXRlbSgpLmZpZWxkTGFiZWwgfHwgJyc7XG5cbiAgICBjb25zdCByb3dzID0gY29udmVydFNpZ25hbFRvT2JqZWN0KGNvbmZpZ1RlbXBsYXRlLnJvd3MoKSkgYXMgQXJyYXk8YW55PjtcblxuICAgIHJvd3MuZm9yRWFjaCgocm93LCBpbmRleFJvdykgPT4ge1xuICAgICAgY29uc3QgZmllbGROYW1lUm93ID0gYGZpZWxkTGFiZWxSb3cke2luZGV4Um93fWA7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gY2xvbmVEZWVwKGl0ZW0oKSk7XG4gICAgICBjb25zdCBuZXdJdGVtID0geyAuLi5jdXJyZW50SXRlbSB9O1xuICAgICAgbmV3SXRlbVtmaWVsZE5hbWVSb3ddID0gcm93LmdldFZhbHVlICYmIHJvdy5nZXRWYWx1ZShyZWYpO1xuICAgICAgbmV3SXRlbVtgZmllbGRSb3dTdHlsZXNEeW5hbWljQ29scyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0Um93U3R5bGVzRHluYW1pY0NvbHMgJiYgcm93LmdldFJvd1N0eWxlc0R5bmFtaWNDb2xzKHJlZik7XG4gICAgICBuZXdJdGVtW2BmaWVsZFJvd0F2YXRhckNvbmZpZyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0QXZhdGFyQ29uZmlnICYmIHJvdy5nZXRBdmF0YXJDb25maWcocmVmKTtcbiAgICAgIGlmIChyb3cuY29scyAmJiByb3cuY29scy5sZW5ndGgpIHtcbiAgICAgICAgcm93LmNvbHMuZm9yRWFjaChhc3luYyAoY29sOiBJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sLCBpbmRleENvbDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lQ29sID0gYGZpZWxkTGFiZWxDb2wke2luZGV4Um93fSR7aW5kZXhDb2x9YDtcblxuICAgICAgICAgIG5ld0l0ZW1bZmllbGROYW1lQ29sXSA9IGNvbC5nZXRWYWx1ZTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbENsYXNzJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENsYXNzQ29sICYmIGNvbC5nZXRDbGFzc0NvbChyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFBvcG92ZXIke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0UG9wb3ZlciAmJiBjb2wuZ2V0UG9wb3ZlcihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZEJhZGdlJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENvbmZpZ0JhZGdlICYmIGNvbC5nZXRDb25maWdCYWRnZShyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN0eWxlc0R5bmFtaWMke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0U3R5bGVzRHluYW1pY0NvbDtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbEJ1dHRvbiR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRCdXR0b24gJiYgY29sLmdldEJ1dHRvbihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN3aXRjaCR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRMYWJlbFN3aXRjaCAmJiBjb2wuZ2V0TGFiZWxTd2l0Y2gocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xBdmF0YXJDb25maWcke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0QXZhdGFyQ29uZmlnICYmIGNvbC5nZXRBdmF0YXJDb25maWcocmVmKTtcblxuICAgICAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtuZXdJdGVtW2ZpZWxkTmFtZUNvbF0gfHwgJyd9IGA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnVwZGF0ZSgoKSA9PiBuZXdJdGVtKTtcbiAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtpdGVtKClbZmllbGROYW1lUm93XSB8fCAnJ30gYDtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXh0U2VhcmNoIHx8ICcgJztcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NEYXRhKGlzUmVwbGFjZT86IGJvb2xlYW4pOiBhbnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzU2VhcmNoKCk6IGFueTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExlbmd0aEl0ZW0oKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkKCkpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59Il19
|
|
@@ -197,7 +197,7 @@ export class LibsUiComponentsListTextComponent extends LibsUiComponentsListTempl
|
|
|
197
197
|
}));
|
|
198
198
|
}
|
|
199
199
|
autoSelectFirstItem(items) {
|
|
200
|
-
if (this.keySelected() || !this.config()?.autoSelectFirstItem || !items || !items.length) {
|
|
200
|
+
if (this.autoSelectedFirstItemCallOutsideBefore() || this.keySelected() || !this.config()?.autoSelectFirstItem || !items || !items.length) {
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
203
|
this.handlerSelectItem('click', items[0](), undefined, true, false);
|
|
@@ -235,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
235
235
|
LibsUiPipesCallFunctionInTemplatePipe
|
|
236
236
|
], template: "@if (configTemplateText(); as configTemplateText) {\n <div class=\"relative h-full w-full\">\n @if (items() && items().length) {\n <div #elementScroll\n [style.height]=\"!configTemplateText.notUseVirtualScroll && heightViewPort() && (!config()?.ignoreShowDataWhenNotSearch || (config()?.ignoreShowDataWhenNotSearch && config()?.ignoreFixHeightShowDataWhenNotSearch)) ? heightViewPort()+'px':'100%'\"\n class=\"w-full\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n @if (!configTemplateText.notUseVirtualScroll) {\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n <ng-container *ngTemplateOutlet='listRef;context:{itemsView:scroll.viewPortItems}' />\n </virtual-scroller>\n }\n @if (configTemplateText.notUseVirtualScroll) {\n <ng-container *ngTemplateOutlet='listRef;context:{itemsView:items()}' />\n }\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[6px] px-[16px]')\">\n @if (!keySearch() && !loading()) {\n {{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n {{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}\n }\n @if (loading()) {\n \n }\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"loadingIconSize() || 'medium'\" />\n }\n </div>\n <ng-template #listRef\n let-itemsView='itemsView'>\n @for (item of itemsView; track item()[fieldKey()]) {\n <div #itemRef\n [class]=\"item().classItemWrapper || ''\">\n <div LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [class]=\"'libs-ui-list-template-text-item libs-ui-font-h5r flex '+(item().classItem || '')\"\n [class.items-center]=\"!item().itemAlignStart\"\n [class.items-start]=\"item().itemAlignStart\"\n [class.libs-ui-bg-list-hover-danger]=\"!clickExactly() && item().hoverDanger\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly() && !item().hoverDanger\"\n [class.libs-ui-bg-list-active]=\"!clickExactly() && keySelected() === item()[fieldKey()]\"\n [class.!pl-[16px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.libs-ui-bg-list-hover-ffffff]=\"item().disable\"\n [class.cursor-default]=\"item().disable\"\n [class.!py-[2px]]=\"clickExactly()\"\n [class.!pr-[48px]]=\"keySelected() === item()[fieldKey()] && (!configTemplateText?.ignoreIconSelected || configTemplateText?.actionSort)&& !configTemplateText?.stylePaddingRightItemOther\"\n [ngClass]=\"{'pointer-events-none libs-ui-disable':loading() || disable() || ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) && !ignoreClassDisableDefaultWhenUseKeysDisableItem())}\"\n (click)=\"handlerClickRelative($event,item())\">\n @if (item().bullet) {\n <span class=\"libs-ui-list-template-text-item-bullet flex flex-shrink-0\"\n [style.background-color]=\"item().bullet.backgroundColor\"\n (click)=\"handlerSelectItem($event,item())\">\n </span>\n }\n\n @if (item().avatarConfig; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [classImageInclude]=\"avatarConfig.classImageInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\"\n [classImageInclude]=\"avatarConfig.classImageInclude\" />\n }\n @if (configTemplateText.getImage || configTemplateText.fieldGetImage) {\n <img\n [src]=\"configTemplateText.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:(item().specific_loadImgError && configTemplateText.getImageError ? configTemplateText.getImageError : configTemplateText.getImage):item()) | async) : item()[configTemplateText.fieldGetImage || '']\"\n [class]=\"'libs-ui-list-template-text-item-avatar ' + (configTemplateText.classIncludeImage ?? '')\"\n [class.w-[18px]]=\"configTemplateText.imgTypeIcon\"\n [class.h-[18px]]=\"configTemplateText.imgTypeIcon\"\n (error)=\"handlerImageError($event, item())\"\n (click)=\"handlerSelectItem($event,item())\" />\n }\n @if (item().buttonLeftConfig; as buttonLeft) {\n @if (item().hrefButton) {\n <a [class.w-full]=\"!buttonLeft.ignoreWidth100\"\n [href]=\"item().hrefButton\">\n <ng-container *ngTemplateOutlet=\"buttonLeftTemplate\" />\n </a>\n }\n @if (!item().hrefButton) {\n <div [class.w-full]=\"!buttonLeft.ignoreWidth100\">\n <ng-container *ngTemplateOutlet=\"buttonLeftTemplate\" />\n </div>\n }\n <ng-template #buttonLeftTemplate>\n <libs_ui-components-buttons-button class=\"w-full\"\n [type]=\"buttonLeft.type || 'button-link-primary'\"\n [label]=\"buttonLeft.label || ' '\"\n [zIndex]=\"buttonLeft.zIndex\"\n [disable]=\"buttonLeft.disable\"\n [classIconLeft]=\"buttonLeft.classIconLeft ? ((buttonLeft.classIconLeft || '')+' flex mr-[8px] text-[12px]') : ''\"\n [classInclude]=\"(buttonLeft.classInclude|| '')+' w-full'\"\n [classLabel]=\"(buttonLeft.classLabel ?? 'libs-ui-font-h4r')\"\n [ignoreStopPropagationEvent]=\"buttonLeft.ignoreStopPropagationEvent\"\n [styleIconLeft]=\"buttonLeft.styleIconLeft\"\n [styleButton]=\"buttonLeft.styleButton\"\n (outClick)=\"handlerSelectItem($event,item())\" />\n </ng-template>\n }\n @if (item().switchConfig) {\n <libs_ui-components-switch [active]=\"item().switchConfig.active\"\n (outSwitch)=\"handlerSelectItem('click',item())\" />\n }\n @if (item().classIconLeft) {\n <i [class]=\"item().classIconLeft + ' mr-[8px] text-[14px]'\"></i>\n }\n @if (!item().ignoreShowFieldLabel && !configTemplateText.rows) {\n <libs_ui-components-popover [type]=\"item().popoverLabel?.type || 'text'\"\n [elementRefCustom]=\"item().popoverLabel?.type === 'text'? undefined:itemRef\"\n [ignoreShowPopover]=\"item().popoverLabel?.ignoreShowPopover\"\n [config]=\"item().popoverLabel?.config || (configTemplateText.configLabelPopover || {})\"\n [innerHtml]=\"item().fieldLabel\"\n [classInclude]=\"item().classInclude\"\n (outEvent)=\"handlerSelectItem($event,item())\" />\n }\n @if (item().fieldPopover; as popover) {\n <libs_ui-components-popover class=\"{{ popover.classInclude || '' }}\"\n [config]=\"popover?.config\">\n @if (!popover.dataView) {\n <i class=\"libs-ui-icon-tooltip-outline\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (configTemplateText?.rows) {\n <libs_ui-components-list-templates_rows class=\"w-full {{ configTemplateText.classRowsWrapper || configTemplateText.classRows || '' }}\"\n [item]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"keySelected()\"\n [configTemplate]=\"configTemplateText\"\n [zIndex]=\"zIndex()\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event.event,$event.item,$event.action)\" />\n }\n @if ((keySelected() === item()[fieldKey()] || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined) && !configTemplateText.ignoreIconSelected && !configTemplateText.actionSort) {\n <i [class]=\"'libs-ui-icon-check '+(configTemplateText.classIncludeIconSelected || 'right-[12px]')\">\n </i>\n }\n @if (keySelected() === item()[fieldKey()] && configTemplateText.actionSort) {\n <div class=\"libs-ui-list-template-text-sort\">\n <libs_ui-components-buttons-sort-arrow [disable]=\"loading() || disable() || false\"\n [mode]=\"configTemplateText?.itemSort?.()?.mode || ''\"\n [fieldSort]=\"item()[fieldKey()]\"\n (outChange)=\"handlerSort($event)\" />\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n}\n", styles: [".libs-ui-list-template-text-item{padding:6px 16px 6px 1px;font-size:12px;line-height:18px;position:relative;cursor:pointer}.libs-ui-list-template-text-item>.libs-ui-icon-check,.libs-ui-list-template-text-item .libs-ui-list-template-text-sort{position:absolute;right:16px}.libs-ui-list-template-text-item>.libs-ui-icon-check:before,.libs-ui-list-template-text-item .libs-ui-list-template-text-sort:before{font-size:16px;color:var(--libs-ui-color-default, #226FF5)}.libs-ui-list-template-text-item-bullet{width:10px;height:10px;border-radius:50%;margin-right:8px;cursor:pointer}.libs-ui-list-template-text-item-avatar{width:24px;height:24px;border-radius:50%;margin-right:8px;cursor:pointer}\n"] }]
|
|
237
237
|
}] });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RleHQvdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RleHQvdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBUyx5Q0FBeUMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FB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Q0FBeUM7d0JBQ3pDLCtDQUErQzt3QkFDL0MsaUNBQWlDO3dCQUNqQyxxQ0FBcUM7cUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQsIFZpcnR1YWxTY3JvbGxlck1vZHVsZSB9IGZyb20gJ0BpaGFyYmVjay9uZ3gtdmlydHVhbC1zY3JvbGxlcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IElTb3J0LCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc1NvcnRBcnJvd0NvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1zb3J0JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3Bpbm5lcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zd2l0Y2gnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWNhbGwtZnVuY3Rpb24taW4tdGVtcGxhdGUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGRlbGV0ZVVuaWNvZGUsIGVzY2FwZUh0bWwsIGlzRW1wdHksIGlzTmlsIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2hpZ2hsaWdodC1rZXktc2VhcmNoL2hpZ2hsaWdodC1rZXktc2VhcmNoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RSb3dzQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93cy9yb3dzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IH0gZnJvbSAnLi4vdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdCc7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW1UZXh0IH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1saXN0LXRlbXBsYXRlc190ZXh0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgVmlydHVhbFNjcm9sbGVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3MsIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLFxuICAgIExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c1N3aXRjaENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc1NvcnRBcnJvd0NvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdFJvd3NDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGV4dENvbXBvbmVudCBleHRlbmRzIExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgY29uZmlnVGVtcGxhdGVUZXh0ID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCA9IHZpZXdDaGlsZDxWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQ+KFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVUZXh0Py4oKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0LnNldCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRleHQ/LigpKTtcbiAgICB0aGlzLmZpZWxkS2V5LnNldCh0aGlzLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNjcm9sbEJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc1NlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tSZWxhdGl2ZShlOiBFdmVudCwgaXRlbTogYW55KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5jbGlja0V4YWN0bHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZXJTZWxlY3RJdGVtKGUsIGl0ZW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwoaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB8fCBpdGVtW3RoaXMuZmllbGRLZXkoKV0gPT09ICcnIHx8IHRoaXMua2V5U2VsZWN0ZWQoKSAhPT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KCcnKTtcbiAgICB0aGlzLm91dFNlbGVjdEtleS5lbWl0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZTogRXZlbnQgfCBzdHJpbmcsIGl0ZW06IGFueSwgYWN0aW9uPzogKGl0ZW06IGFueSkgPT4gdm9pZCwgaWdub3JlRGlzYWJsZSA9IGZhbHNlLCBpc0NsaWNrTWFudWFsID0gdHJ1ZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChpdGVtLmRpc2FibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZSgpICYmICFpZ25vcmVEaXNhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycgJiYgZSAhPT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWl0ZW0gfHwgKHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8uc29tZShrZXkgPT4ga2V5ID09PSBpdGVtW3RoaXMuZmllbGRLZXkoKV0pKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24oaXRlbS5yZWYpO1xuICAgICAgdGhpcy5pdGVtcygpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGl0ZW0sIHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmFjdGlvblNvcnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtU29ydCA9IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py4oKTtcbiAgICAgIGNvbnN0IG1vZGUgPSBjdXJyZW50SXRlbVNvcnQ/LmZpZWxkU29ydCAhPT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldID8gJ2FzYycgOiBjdXJyZW50SXRlbVNvcnQ/Lm1vZGUgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgY29uc3QgbmV3U29ydDogSVNvcnQgPSB7XG4gICAgICAgIGZpZWxkU29ydDogaXRlbVt0aGlzLmZpZWxkS2V5KCldLFxuICAgICAgICBtb2RlLFxuICAgICAgICBtb2RlTnVtYmVyOiBtb2RlID09PSAnYXNjJyA/IDEgOiAyLFxuICAgICAgICByZXNldDogKCkgPT4gMFxuICAgICAgfTtcblxuICAgICAgdGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uaXRlbVNvcnQ/LnNldChuZXdTb3J0KTtcblxuICAgICAgdGhpcy5vdXRTb3J0U2luZ2xlU2VsZWN0LmVtaXQodGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uaXRlbVNvcnQ/LigpIHx8IG5ld1NvcnQpO1xuICAgIH1cblxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KGl0ZW1bdGhpcy5maWVsZEtleSgpXSk7XG4gICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh7IGtleTogdGhpcy5rZXlTZWxlY3RlZCgpLCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTb3J0KGl0ZW1Tb3J0OiBJU29ydCkge1xuICAgIGl0ZW1Tb3J0LnJlc2V0ID0gKCkgPT4gMDtcblxuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py5zZXQoaXRlbVNvcnQpO1xuICAgIHRoaXMub3V0U29ydFNpbmdsZVNlbGVjdC5lbWl0KHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py4oKSB8fCBpdGVtU29ydCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc0RhdGEocmVwbGFjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtQnlLZXlTZWFyY2g6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+ID0gW107XG4gICAgY29uc3Qga2V5c0hpZGRlbiA9IHRoaXMua2V5c0hpZGRlbkl0ZW0oKSB8fCBbXTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChbXSlcbiAgICB9XG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTdG9yZSA9IGNsb25lRGVlcChpdGVtKSBhcyBXcml0YWJsZVNpZ25hbDxhbnk+O1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKGtleSA9PiBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldID09PSBrZXkpO1xuICAgICAgZGF0YVN0b3JlLnVwZGF0ZShzdG9yZSA9PiB7IHJldHVybiB7IC4uLnN0b3JlLCByZWY6IGl0ZW0oKSB9IH0pO1xuXG4gICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRlbGV0ZVVuaWNvZGUodGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGV4dCgpKSkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgdGV4dEVzY2FwZSA9IGVzY2FwZUh0bWwodGV4dCk7XG4gICAgICAgIGNvbnN0IGtleVNlYXJjaCA9IGRlbGV0ZVVuaWNvZGUoZXNjYXBlSHRtbCh0aGlzLmtleVNlYXJjaCgpLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcblxuICAgICAgICBpZiAoKCh0aGlzLmlzU2VhcmNoT25saW5lKCkgJiYgdGhpcy5jb25maWcoKT8uaHR0cFJlcXVlc3REYXRhPy4oKT8uc2VydmljZU5hbWUgJiYgIXRoaXMuY29uZmlnKCk/Lmh0dHBSZXF1ZXN0RGF0YT8uKCk/LnNlcnZpY2VPdGhlcikgfHxcbiAgICAgICAgICAodGV4dCAmJiAodGV4dC5pbmNsdWRlcyhrZXlTZWFyY2gpIHx8IHRleHRFc2NhcGUuaW5jbHVkZXMoa2V5U2VhcmNoKSkpKSAmJiAocmVwbGFjZSB8fCAoIXJlcGxhY2UgJiYgIXRoaXMuaXRlbXMoKS5maW5kKGRhdGFJdGVtID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpKSAmJiAhaXRlbUJ5S2V5U2VhcmNoLmZpbmQoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoc3RvcmUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uc3RvcmUsXG4gICAgICAgICAgICAgIGhyZWZCdXR0b246IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldEhyZWZCdXR0b24/LihzdG9yZSksXG4gICAgICAgICAgICAgIGNsYXNzSXRlbTogaXRlbSgpLmNsYXNzSXRlbSB8fCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5nZXRDbGFzc0l0ZW0/LihzdG9yZSksXG4gICAgICAgICAgICAgIGNsYXNzSW5jbHVkZTogc3RvcmUuY2xhc3NJbmNsdWRlIHx8IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENsYXNzSW5jbHVkZVBvcG92ZXI/LihzdG9yZSksXG4gICAgICAgICAgICAgIGJ1dHRvbkxlZnRDb25maWc6IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENvbmZpZ0J1dHRvbkxlZnQ/LihzdG9yZSksXG4gICAgICAgICAgICAgIGNsYXNzSWNvbkxlZnQ6IHN0b3JlLmNsYXNzSWNvbkxlZnQgfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uZ2V0Q2xhc3NJY29uTGVmdD8uKHN0b3JlKSxcbiAgICAgICAgICAgICAgaG92ZXJEYW5nZXI6IHN0b3JlLmhvdmVyRGFuZ2VyIHx8IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENvbmZpZ0hvdmVyRGFuZ2VyPy4oc3RvcmUpLFxuICAgICAgICAgICAgICBhdmF0YXJDb25maWc6IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldEF2YXRhckNvbmZpZz8uKHN0b3JlKSxcbiAgICAgICAgICAgICAgaXRlbUFsaWduU3RhcnQ6IHN0b3JlLml0ZW1BbGlnblN0YXJ0IHx8IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENvbmZpZ0FsaWduU3RhcnQ/LihzdG9yZSksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaXRlbUJ5S2V5U2VhcmNoLnB1c2goZGF0YVN0b3JlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4SXRlbVJlbW92ZSA9IHRoaXMuaXRlbXMoKS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcblxuICAgICAgaWYgKGluZGV4SXRlbVJlbW92ZSA+IC0xKSB7XG4gICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hlY2tMb2FkSXRlbSA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmICh0aGlzLmlzU2VhcmNoT25saW5lKCkpKSB7XG4gICAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICBjb25zdCBpdGVtcyA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KGl0ZW1CeUtleVNlYXJjaCkoKTtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KGl0ZW1zKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5lbWl0S2V5U2VsZWN0ZWREZWZhdWx0SWZFeGlzdEl0ZW0odGhpcy5pdGVtcygpKTtcbiAgICAgIHRoaXMuYXV0b1NlbGVjdEZpcnN0SXRlbSh0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNoZWNrVmlld1BvcnRTY3JvbGwoY2hlY2tMb2FkSXRlbSk7XG4gICAgICB0aGlzLnNjcm9sbFRvSXRlbVNlbGVjdGVkKCk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICB0aGlzLm91dExvYWRJdGVtc0NvbXBsZXRlLmVtaXQoeyBpdGVtczogdGhpcy5pdGVtcygpLCBwYWdpbmc6IHRoaXMucGFnaW5nU3RvcmUoKSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXRlbXNCeVNlYXJjaCA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KGl0ZW1CeUtleVNlYXJjaCkoKTtcbiAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXMsIC4uLml0ZW1zQnlTZWFyY2hdKTtcbiAgICB0aGlzLmNvbmZpZygpPy5zb3J0Py4odGhpcy5pdGVtcygpKTtcbiAgICB0aGlzLnNldEhlaWdodFZpZXdQb3J0KCk7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgIHRoaXMuc2Nyb2xsVG9JdGVtU2VsZWN0ZWQoKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KHsgaXRlbXM6IHRoaXMuaXRlbXMoKSwgcGFnaW5nOiB0aGlzLnBhZ2luZ1N0b3JlKCkgfSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvSXRlbVNlbGVjdGVkKCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZC5zZXQoKHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmtleVNlbGVjdGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IHRoaXMua2V5U2VsZWN0ZWQoKSk7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQoKT8uc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gICAgICB9XG4gICAgfSkgYXMgdW5rbm93bikgYXMgbnVtYmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhdXRvU2VsZWN0Rmlyc3RJdGVtKGl0ZW1zOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pikge1xuICAgIGlmICh0aGlzLmtleVNlbGVjdGVkKCkgfHwgIXRoaXMuY29uZmlnKCk/LmF1dG9TZWxlY3RGaXJzdEl0ZW0gfHwgIWl0ZW1zIHx8ICFpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyU2VsZWN0SXRlbSgnY2xpY2snLCBpdGVtc1swXSgpLCB1bmRlZmluZWQsIHRydWUsIGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0S2V5U2VsZWN0ZWREZWZhdWx0SWZFeGlzdEl0ZW0oaXRlbXM6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+KSB7XG4gICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoc3RvcmUgPT4gc3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldID09PSB0aGlzLmtleVNlbGVjdGVkKCkpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMuaGFuZGxlclNlbGVjdEl0ZW0oJ2NsaWNrJywgaXRlbSgpLCB1bmRlZmluZWQsIHRydWUsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGVuZ3RoSXRlbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkubGVuZ3RoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJJbWFnZUVycm9yKGV2ZW50OiBFdmVudCwgaXRlbTogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaXRlbS5zcGVjaWZpY19sb2FkSW1nRXJyb3IgPSB0cnVlO1xuICB9XG59XG4iLCJAaWYgKGNvbmZpZ1RlbXBsYXRlVGV4dCgpOyBhcyBjb25maWdUZW1wbGF0ZVRleHQpIHtcbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIj5cbiAgICBAaWYgKGl0ZW1zKCkgJiYgaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgIDxkaXYgI2VsZW1lbnRTY3JvbGxcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCIhY29uZmlnVGVtcGxhdGVUZXh0Lm5vdFVzZVZpcnR1YWxTY3JvbGwgJiYgaGVpZ2h0Vmlld1BvcnQoKSAmJiAoIWNvbmZpZygpPy5pZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggfHwgKGNvbmZpZygpPy5pZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggJiYgY29uZmlnKCk/Lmlnbm9yZUZpeEhlaWdodFNob3dEYXRhV2hlbk5vdFNlYXJjaCkpICA/IGhlaWdodFZpZXdQb3J0KCkrJ3B4JzonMTAwJSdcIlxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlXG4gICAgICAgIChvdXRTY3JvbGxCb3R0b20pPVwiaGFuZGxlclNjcm9sbEJvdHRvbSgpXCI+XG4gICAgICAgIEBpZiAoIWNvbmZpZ1RlbXBsYXRlVGV4dC5ub3RVc2VWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgPHZpcnR1YWwtc2Nyb2xsZXIgI3Njcm9sbFxuICAgICAgICAgICAgW3BhcmVudFNjcm9sbF09XCJlbGVtZW50U2Nyb2xsXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtcygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PSdsaXN0UmVmO2NvbnRleHQ6e2l0ZW1zVmlldzpzY3JvbGwudmlld1BvcnRJdGVtc30nIC8+XG4gICAgICAgICAgPC92aXJ0dWFsLXNjcm9sbGVyPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29uZmlnVGVtcGxhdGVUZXh0Lm5vdFVzZVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PSdsaXN0UmVmO2NvbnRleHQ6e2l0ZW1zVmlldzppdGVtcygpfScgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aCkgJiYgKCFjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIHx8IGtleVNlYXJjaCgpKSkge1xuICAgICAgPGRpdiBbY2xhc3NdPVwiJ2xpYnMtdWktZm9udC1oNXIgdGV4dC1bIzljYTJhZF0gJysgKGNvbmZpZygpPy50ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlID8/ICdweS1bNnB4XSBweC1bMTZweF0nKVwiPlxuICAgICAgICBAaWYgKCFrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAge3sgKGNvbmZpZygpPy50ZXh0Tm9EYXRhID8/ICdpMThuX2hhdmVfbm9fc2VsZWN0aW9uJykgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpIHx8IG51bGw7Y29udGV4dDp7a2V5U2VhcmNoOmtleVNlYXJjaCgpfVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmICghdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAge3sgKGNvbmZpZygpPy50ZXh0U2VhcmNoTm9EYXRhID8/ICdpMThuX25vX3Jlc3VsdCcpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLXNwaW5uZXIgW3NpemVdPVwibG9hZGluZ0ljb25TaXplKCkgfHwgJ21lZGl1bSdcIiAvPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdFJlZlxuICAgIGxldC1pdGVtc1ZpZXc9J2l0ZW1zVmlldyc+XG4gICAgQGZvciAoaXRlbSBvZiBpdGVtc1ZpZXc7IHRyYWNrIGl0ZW0oKVtmaWVsZEtleSgpXSkge1xuICAgICAgPGRpdiAjaXRlbVJlZlxuICAgICAgICBbY2xhc3NdPVwiaXRlbSgpLmNsYXNzSXRlbVdyYXBwZXIgfHwgJydcIj5cbiAgICAgICAgPGRpdiBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZVxuICAgICAgICAgIFtpc0hpZ2hsaWdodF09XCJjb25maWcoKT8uaGlnaGxpZ2h0VGV4dFNlYXJjaEluUmVzdWx0XCJcbiAgICAgICAgICBba2V5U2VhcmNoXT1cImtleVNlYXJjaCgpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiJ2xpYnMtdWktbGlzdC10ZW1wbGF0ZS10ZXh0LWl0ZW0gbGlicy11aS1mb250LWg1ciBmbGV4ICcrKGl0ZW0oKS5jbGFzc0l0ZW0gfHwgJycpXCJcbiAgICAgICAgICBbY2xhc3MuaXRlbXMtY2VudGVyXT1cIiFpdGVtKCkuaXRlbUFsaWduU3RhcnRcIlxuICAgICAgICAgIFtjbGFzcy5pdGVtcy1zdGFydF09XCJpdGVtKCkuaXRlbUFsaWduU3RhcnRcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXItZGFuZ2VyXT1cIiFjbGlja0V4YWN0bHkoKSAmJiBpdGVtKCkuaG92ZXJEYW5nZXJcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXJdPVwiIWNsaWNrRXhhY3RseSgpICAmJiAhaXRlbSgpLmhvdmVyRGFuZ2VyXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWFjdGl2ZV09XCIhY2xpY2tFeGFjdGx5KCkgJiYga2V5U2VsZWN0ZWQoKSA9PT0gaXRlbSgpW2ZpZWxkS2V5KCldXCJcbiAgICAgICAgICBbY2xhc3MuIXBsLVsxNnB4XV09XCJwYWRkaW5nTGVmdEl0ZW0oKVwiXG4gICAgICAgICAgW2NsYXNzLmJnLVsjZmZmZmZmXV09XCJjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktYmctbGlzdC1ob3Zlci1mZmZmZmZdPVwiaXRlbSgpLmRpc2FibGVcIlxuICAgICAgICAgIFtjbGFzcy5jdXJzb3ItZGVmYXVsdF09XCJpdGVtKCkuZGlzYWJsZVwiXG4gICAgICAgICAgW2NsYXNzLiFweS1bMnB4XV09XCJjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgW2NsYXNzLiFwci1bNDhweF1dPVwia2V5U2VsZWN0ZWQoKSA9PT0gaXRlbSgpW2ZpZWxkS2V5KCldICYmICghY29uZmlnVGVtcGxhdGVUZXh0Py5pZ25vcmVJY29uU2VsZWN0ZWQgfHwgY29uZmlnVGVtcGxhdGVUZXh0Py5hY3Rpb25Tb3J0KSYmICFjb25maWdUZW1wbGF0ZVRleHQ/LnN0eWxlUGFkZGluZ1JpZ2h0SXRlbU90aGVyXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3BvaW50ZXItZXZlbnRzLW5vbmUgbGlicy11aS1kaXNhYmxlJzpsb2FkaW5nKCkgfHwgZGlzYWJsZSgpIHx8ICgoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzRGlzYWJsZUl0ZW0oKTprZXlzRGlzYWJsZUl0ZW0oKT8ubGVuZ3RoKSAmJiAhaWdub3JlQ2xhc3NEaXNhYmxlRGVmYXVsdFdoZW5Vc2VLZXlzRGlzYWJsZUl0ZW0oKSl9XCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrUmVsYXRpdmUoJGV2ZW50LGl0ZW0oKSlcIj5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idWxsZXQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1saXN0LXRlbXBsYXRlLXRleHQtaXRlbS1idWxsZXQgZmxleCBmbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXRlbSgpLmJ1bGxldC5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LGl0ZW0oKSlcIj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5hdmF0YXJDb25maWc7IGFzIGF2YXRhckNvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1hdmF0YXIgW3R5cGVTaGFwZV09XCJhdmF0YXJDb25maWcudHlwZVNoYXBlIHx8ICdjaXJjbGUnXCJcbiAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJhdmF0YXJDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICAgICAgW2NsYXNzSW1hZ2VJbmNsdWRlXT1cImF2YXRhckNvbmZpZy5jbGFzc0ltYWdlSW5jbHVkZVwiXG4gICAgICAgICAgICAgIFtzaXplXT0nYXZhdGFyQ29uZmlnLnNpemUgfHwgMzInXG4gICAgICAgICAgICAgIFtsaW5rQXZhdGFyXT1cImF2YXRhckNvbmZpZy5saW5rQXZhdGFyXCJcbiAgICAgICAgICAgICAgW2xpbmtBdmF0YXJFcnJvcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhckVycm9yXCJcbiAgICAgICAgICAgICAgW2lkR2VuQ29sb3JdPVwiYXZhdGFyQ29uZmlnLmlkR2VuQ29sb3JcIlxuICAgICAgICAgICAgICBbdGV4dEF2YXRhcl09XCJhdmF0YXJDb25maWcudGV4dEF2YXRhclwiXG4gICAgICAgICAgICAgIFtjbGFzc0ltYWdlSW5jbHVkZV09XCJhdmF0YXJDb25maWcuY2xhc3NJbWFnZUluY2x1ZGVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGNvbmZpZ1RlbXBsYXRlVGV4dC5nZXRJbWFnZSB8fCBjb25maWdUZW1wbGF0ZVRleHQuZmllbGRHZXRJbWFnZSkge1xuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBbc3JjXT1cImNvbmZpZ1RlbXBsYXRlVGV4dC5nZXRJbWFnZSA/ICgoJ2F2YXRhcicgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOihpdGVtKCkuc3BlY2lmaWNfbG9hZEltZ0Vycm9yICYmIGNvbmZpZ1RlbXBsYXRlVGV4dC5nZXRJbWFnZUVycm9yID8gY29uZmlnVGVtcGxhdGVUZXh0LmdldEltYWdlRXJyb3IgOiBjb25maWdUZW1wbGF0ZVRleHQuZ2V0SW1hZ2UpOml0ZW0oKSkgfCBhc3luYykgOiBpdGVtKClbY29uZmlnVGVtcGxhdGVUZXh0LmZpZWxkR2V0SW1hZ2UgfHwgJyddXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLWxpc3QtdGVtcGxhdGUtdGV4dC1pdGVtLWF2YXRhciAnICsgKGNvbmZpZ1RlbXBsYXRlVGV4dC5jbGFzc0luY2x1ZGVJbWFnZSA/PyAnJylcIlxuICAgICAgICAgICAgICBbY2xhc3Mudy1bMThweF1dPVwiY29uZmlnVGVtcGxhdGVUZXh0LmltZ1R5cGVJY29uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmgtWzE4cHhdXT1cImNvbmZpZ1RlbXBsYXRlVGV4dC5pbWdUeXBlSWNvblwiXG4gICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVySW1hZ2VFcnJvcigkZXZlbnQsIGl0ZW0oKSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LGl0ZW0oKSlcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5idXR0b25MZWZ0Q29uZmlnOyBhcyBidXR0b25MZWZ0KSB7XG4gICAgICAgICAgICBAaWYgKGl0ZW0oKS5ocmVmQnV0dG9uKSB7XG4gICAgICAgICAgICAgIDxhIFtjbGFzcy53LWZ1bGxdPVwiIWJ1dHRvbkxlZnQuaWdub3JlV2lkdGgxMDBcIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cIml0ZW0oKS5ocmVmQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbkxlZnRUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWl0ZW0oKS5ocmVmQnV0dG9uKSB7XG4gICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnctZnVsbF09XCIhYnV0dG9uTGVmdC5pZ25vcmVXaWR0aDEwMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25MZWZ0VGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uTGVmdFRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b25MZWZ0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXByaW1hcnknXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYnV0dG9uTGVmdC5sYWJlbCB8fCAnICdcIlxuICAgICAgICAgICAgICAgIFt6SW5kZXhdPVwiYnV0dG9uTGVmdC56SW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbkxlZnQuZGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiYnV0dG9uTGVmdC5jbGFzc0ljb25MZWZ0ID8gKChidXR0b25MZWZ0LmNsYXNzSWNvbkxlZnQgfHwgJycpKycgZmxleCBtci1bOHB4XSB0ZXh0LVsxMnB4XScpIDogJydcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiKGJ1dHRvbkxlZnQuY2xhc3NJbmNsdWRlfHwgJycpKycgdy1mdWxsJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxdPVwiKGJ1dHRvbkxlZnQuY2xhc3NMYWJlbCA/PyAnbGlicy11aS1mb250LWg0cicpXCJcbiAgICAgICAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwiYnV0dG9uTGVmdC5pZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlSWNvbkxlZnRdPVwiYnV0dG9uTGVmdC5zdHlsZUljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGVCdXR0b25dPVwiYnV0dG9uTGVmdC5zdHlsZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCxpdGVtKCkpXCIgLz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXRlbSgpLnN3aXRjaENvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zd2l0Y2ggW2FjdGl2ZV09XCJpdGVtKCkuc3dpdGNoQ29uZmlnLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChvdXRTd2l0Y2gpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJ2NsaWNrJyxpdGVtKCkpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpdGVtKCkuY2xhc3NJY29uTGVmdCkge1xuICAgICAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0ljb25MZWZ0ICsgJyBtci1bOHB4XSB0ZXh0LVsxNHB4XSdcIj48L2k+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIWl0ZW0oKS5pZ25vcmVTaG93RmllbGRMYWJlbCAmJiAhY29uZmlnVGVtcGxhdGVUZXh0LnJvd3MpIHtcbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlciBbdHlwZV09XCJpdGVtKCkucG9wb3ZlckxhYmVsPy50eXBlIHx8ICd0ZXh0J1wiXG4gICAgICAgICAgICAgIFtlbGVtZW50UmVmQ3VzdG9tXT1cIml0ZW0oKS5wb3BvdmVyTGFiZWw/LnR5cGUgPT09ICd0ZXh0Jz8gdW5kZWZpbmVkOml0ZW1SZWZcIlxuICAgICAgICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiaXRlbSgpLnBvcG92ZXJMYWJlbD8uaWdub3JlU2hvd1BvcG92ZXJcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cIml0ZW0oKS5wb3BvdmVyTGFiZWw/LmNvbmZpZyB8fCAoY29uZmlnVGVtcGxhdGVUZXh0LmNvbmZpZ0xhYmVsUG9wb3ZlciB8fCB7fSlcIlxuICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0oKS5maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtKCkuY2xhc3NJbmNsdWRlXCJcbiAgICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCxpdGVtKCkpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpdGVtKCkuZmllbGRQb3BvdmVyOyBhcyBwb3BvdmVyKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXIgY2xhc3M9XCJ7eyBwb3BvdmVyLmNsYXNzSW5jbHVkZSB8fCAnJyB9fVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwicG9wb3Zlcj8uY29uZmlnXCI+XG4gICAgICAgICAgICAgIEBpZiAoIXBvcG92ZXIuZGF0YVZpZXcpIHtcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi10b29sdGlwLW91dGxpbmVcIj48L2k+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChwb3BvdmVyLmRhdGFWaWV3KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cInBvcG92ZXIuZGF0YVZpZXcgfCB0cmFuc2xhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjb25maWdUZW1wbGF0ZVRleHQ/LnJvd3MpIHtcbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcm93cyBjbGFzcz1cInctZnVsbCB7eyBjb25maWdUZW1wbGF0ZVRleHQuY2xhc3NSb3dzV3JhcHBlciB8fCBjb25maWdUZW1wbGF0ZVRleHQuY2xhc3NSb3dzIHx8ICcnIH19XCJcbiAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbSgpXCJcbiAgICAgICAgICAgICAgW2ZpZWxkS2V5XT1cImZpZWxkS2V5KClcIlxuICAgICAgICAgICAgICBba2V5U2VsZWN0ZWRdPVwia2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIFtjb25maWdUZW1wbGF0ZV09XCJjb25maWdUZW1wbGF0ZVRleHRcIlxuICAgICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIlxuICAgICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclNlbGVjdEl0ZW0oJGV2ZW50LmV2ZW50LCRldmVudC5pdGVtLCRldmVudC5hY3Rpb24pXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICgoa2V5U2VsZWN0ZWQoKSA9PT0gaXRlbSgpW2ZpZWxkS2V5KCldIHx8IChpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOm11bHRpS2V5U2VsZWN0ZWQoKTptdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCkgPyBpdGVtKClbZmllbGRLZXkoKV0gOiB1bmRlZmluZWQpICYmICFjb25maWdUZW1wbGF0ZVRleHQuaWdub3JlSWNvblNlbGVjdGVkICYmICFjb25maWdUZW1wbGF0ZVRleHQuYWN0aW9uU29ydCkge1xuICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidsaWJzLXVpLWljb24tY2hlY2sgJysoY29uZmlnVGVtcGxhdGVUZXh0LmNsYXNzSW5jbHVkZUljb25TZWxlY3RlZCB8fCAncmlnaHQtWzEycHhdJylcIj5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChrZXlTZWxlY3RlZCgpID09PSBpdGVtKClbZmllbGRLZXkoKV0gJiYgY29uZmlnVGVtcGxhdGVUZXh0LmFjdGlvblNvcnQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWxpc3QtdGVtcGxhdGUtdGV4dC1zb3J0XCI+XG4gICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1zb3J0LWFycm93IFtkaXNhYmxlXT1cImxvYWRpbmcoKSB8fCBkaXNhYmxlKCkgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIFttb2RlXT1cImNvbmZpZ1RlbXBsYXRlVGV4dD8uaXRlbVNvcnQ/LigpPy5tb2RlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbZmllbGRTb3J0XT1cIml0ZW0oKVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgICAgICAgKG91dENoYW5nZSk9XCJoYW5kbGVyU29ydCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvbmctdGVtcGxhdGU+XG59XG4iXX0=
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RleHQvdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL3RleHQvdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBUyx5Q0FBeUMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FB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QUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQix5Q0FBeUM7d0JBQ3pDLCtDQUErQzt3QkFDL0MsaUNBQWlDO3dCQUNqQyxxQ0FBcUM7cUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQsIFZpcnR1YWxTY3JvbGxlck1vZHVsZSB9IGZyb20gJ0BpaGFyYmVjay9uZ3gtdmlydHVhbC1zY3JvbGxlcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1hdmF0YXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IElTb3J0LCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc1NvcnRBcnJvd0NvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1zb3J0JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3Bpbm5lcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zd2l0Y2gnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWNhbGwtZnVuY3Rpb24taW4tdGVtcGxhdGUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGRlbGV0ZVVuaWNvZGUsIGVzY2FwZUh0bWwsIGlzRW1wdHksIGlzTmlsIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2hpZ2hsaWdodC1rZXktc2VhcmNoL2hpZ2hsaWdodC1rZXktc2VhcmNoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RSb3dzQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93cy9yb3dzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IH0gZnJvbSAnLi4vdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdCc7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW1UZXh0IH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1saXN0LXRlbXBsYXRlc190ZXh0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgVmlydHVhbFNjcm9sbGVyTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIE5nQ2xhc3MsIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQXZhdGFyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLFxuICAgIExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c1N3aXRjaENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc1NvcnRBcnJvd0NvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGlzdFJvd3NDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGV4dENvbXBvbmVudCBleHRlbmRzIExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgY29uZmlnVGVtcGxhdGVUZXh0ID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCA9IHZpZXdDaGlsZDxWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQ+KFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVUZXh0Py4oKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0LnNldCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRleHQ/LigpKTtcbiAgICB0aGlzLmZpZWxkS2V5LnNldCh0aGlzLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNjcm9sbEJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc1NlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tSZWxhdGl2ZShlOiBFdmVudCwgaXRlbTogYW55KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5jbGlja0V4YWN0bHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZXJTZWxlY3RJdGVtKGUsIGl0ZW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwoaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB8fCBpdGVtW3RoaXMuZmllbGRLZXkoKV0gPT09ICcnIHx8IHRoaXMua2V5U2VsZWN0ZWQoKSAhPT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KCcnKTtcbiAgICB0aGlzLm91dFNlbGVjdEtleS5lbWl0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEl0ZW0oZTogRXZlbnQgfCBzdHJpbmcsIGl0ZW06IGFueSwgYWN0aW9uPzogKGl0ZW06IGFueSkgPT4gdm9pZCwgaWdub3JlRGlzYWJsZSA9IGZhbHNlLCBpc0NsaWNrTWFudWFsID0gdHJ1ZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChpdGVtLmRpc2FibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZSgpICYmICFpZ25vcmVEaXNhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycgJiYgZSAhPT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWl0ZW0gfHwgKHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgJiYgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8uc29tZShrZXkgPT4ga2V5ID09PSBpdGVtW3RoaXMuZmllbGRLZXkoKV0pKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24oaXRlbS5yZWYpO1xuICAgICAgdGhpcy5pdGVtcygpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGl0ZW0sIHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmFjdGlvblNvcnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtU29ydCA9IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py4oKTtcbiAgICAgIGNvbnN0IG1vZGUgPSBjdXJyZW50SXRlbVNvcnQ/LmZpZWxkU29ydCAhPT0gaXRlbVt0aGlzLmZpZWxkS2V5KCldID8gJ2FzYycgOiBjdXJyZW50SXRlbVNvcnQ/Lm1vZGUgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgY29uc3QgbmV3U29ydDogSVNvcnQgPSB7XG4gICAgICAgIGZpZWxkU29ydDogaXRlbVt0aGlzLmZpZWxkS2V5KCldLFxuICAgICAgICBtb2RlLFxuICAgICAgICBtb2RlTnVtYmVyOiBtb2RlID09PSAnYXNjJyA/IDEgOiAyLFxuICAgICAgICByZXNldDogKCkgPT4gMFxuICAgICAgfTtcblxuICAgICAgdGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uaXRlbVNvcnQ/LnNldChuZXdTb3J0KTtcblxuICAgICAgdGhpcy5vdXRTb3J0U2luZ2xlU2VsZWN0LmVtaXQodGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uaXRlbVNvcnQ/LigpIHx8IG5ld1NvcnQpO1xuICAgIH1cblxuICAgIHRoaXMua2V5U2VsZWN0ZWQuc2V0KGl0ZW1bdGhpcy5maWVsZEtleSgpXSk7XG4gICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh7IGtleTogdGhpcy5rZXlTZWxlY3RlZCgpLCBpdGVtLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTb3J0KGl0ZW1Tb3J0OiBJU29ydCkge1xuICAgIGl0ZW1Tb3J0LnJlc2V0ID0gKCkgPT4gMDtcblxuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py5zZXQoaXRlbVNvcnQpO1xuICAgIHRoaXMub3V0U29ydFNpbmdsZVNlbGVjdC5lbWl0KHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py4oKSB8fCBpdGVtU29ydCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc0RhdGEocmVwbGFjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtQnlLZXlTZWFyY2g6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+ID0gW107XG4gICAgY29uc3Qga2V5c0hpZGRlbiA9IHRoaXMua2V5c0hpZGRlbkl0ZW0oKSB8fCBbXTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChbXSlcbiAgICB9XG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFTdG9yZSA9IGNsb25lRGVlcChpdGVtKSBhcyBXcml0YWJsZVNpZ25hbDxhbnk+O1xuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKGtleSA9PiBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldID09PSBrZXkpO1xuICAgICAgZGF0YVN0b3JlLnVwZGF0ZShzdG9yZSA9PiB7IHJldHVybiB7IC4uLnN0b3JlLCByZWY6IGl0ZW0oKSB9IH0pO1xuXG4gICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRlbGV0ZVVuaWNvZGUodGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGV4dCgpKSkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgdGV4dEVzY2FwZSA9IGVzY2FwZUh0bWwodGV4dCk7XG4gICAgICAgIGNvbnN0IGtleVNlYXJjaCA9IGRlbGV0ZVVuaWNvZGUoZXNjYXBlSHRtbCh0aGlzLmtleVNlYXJjaCgpLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcblxuICAgICAgICBpZiAoKCh0aGlzLmlzU2VhcmNoT25saW5lKCkgJiYgdGhpcy5jb25maWcoKT8uaHR0cFJlcXVlc3REYXRhPy4oKT8uc2VydmljZU5hbWUgJiYgIXRoaXMuY29uZmlnKCk/Lmh0dHBSZXF1ZXN0RGF0YT8uKCk/LnNlcnZpY2VPdGhlcikgfHxcbiAgICAgICAgICAodGV4dCAmJiAodGV4dC5pbmNsdWRlcyhrZXlTZWFyY2gpIHx8IHRleHRFc2NhcGUuaW5jbHVkZXMoa2V5U2VhcmNoKSkpKSAmJiAocmVwbGFjZSB8fCAoIXJlcGxhY2UgJiYgIXRoaXMuaXRlbXMoKS5maW5kKGRhdGFJdGVtID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpKSAmJiAhaXRlbUJ5S2V5U2VhcmNoLmZpbmQoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldKSkge1xuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoc3RvcmUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uc3RvcmUsXG4gICAgICAgICAgICAgIGhyZWZCdXR0b246IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldEhyZWZCdXR0b24/LihzdG9yZSksXG4gICAgICAgICAgICAgIGNsYXNzSXRlbTogaXRlbSgpLmNsYXNzSXRlbSB8fCB0aGlzLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5nZXRDbGFzc0l0ZW0/LihzdG9yZSksXG4gICAgICAgICAgICAgIGNsYXNzSW5jbHVkZTogc3RvcmUuY2xhc3NJbmNsdWRlIHx8IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENsYXNzSW5jbHVkZVBvcG92ZXI/LihzdG9yZSksXG4gICAgICAgICAgICAgIGJ1dHRvbkxlZnRDb25maWc6IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENvbmZpZ0J1dHRvbkxlZnQ/LihzdG9yZSksXG4gICAgICAgICAgICAgIGNsYXNzSWNvbkxlZnQ6IHN0b3JlLmNsYXNzSWNvbkxlZnQgfHwgdGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uZ2V0Q2xhc3NJY29uTGVmdD8uKHN0b3JlKSxcbiAgICAgICAgICAgICAgaG92ZXJEYW5nZXI6IHN0b3JlLmhvdmVyRGFuZ2VyIHx8IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENvbmZpZ0hvdmVyRGFuZ2VyPy4oc3RvcmUpLFxuICAgICAgICAgICAgICBhdmF0YXJDb25maWc6IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldEF2YXRhckNvbmZpZz8uKHN0b3JlKSxcbiAgICAgICAgICAgICAgaXRlbUFsaWduU3RhcnQ6IHN0b3JlLml0ZW1BbGlnblN0YXJ0IHx8IHRoaXMuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmdldENvbmZpZ0FsaWduU3RhcnQ/LihzdG9yZSksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaXRlbUJ5S2V5U2VhcmNoLnB1c2goZGF0YVN0b3JlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4SXRlbVJlbW92ZSA9IHRoaXMuaXRlbXMoKS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcblxuICAgICAgaWYgKGluZGV4SXRlbVJlbW92ZSA+IC0xKSB7XG4gICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhJdGVtUmVtb3ZlLCAxKTtcblxuICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY2hlY2tMb2FkSXRlbSA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmICh0aGlzLmlzU2VhcmNoT25saW5lKCkpKSB7XG4gICAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICBjb25zdCBpdGVtcyA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KGl0ZW1CeUtleVNlYXJjaCkoKTtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KGl0ZW1zKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5lbWl0S2V5U2VsZWN0ZWREZWZhdWx0SWZFeGlzdEl0ZW0odGhpcy5pdGVtcygpKTtcbiAgICAgIHRoaXMuYXV0b1NlbGVjdEZpcnN0SXRlbSh0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNoZWNrVmlld1BvcnRTY3JvbGwoY2hlY2tMb2FkSXRlbSk7XG4gICAgICB0aGlzLnNjcm9sbFRvSXRlbVNlbGVjdGVkKCk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICB0aGlzLm91dExvYWRJdGVtc0NvbXBsZXRlLmVtaXQoeyBpdGVtczogdGhpcy5pdGVtcygpLCBwYWdpbmc6IHRoaXMucGFnaW5nU3RvcmUoKSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXRlbXNCeVNlYXJjaCA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KGl0ZW1CeUtleVNlYXJjaCkoKTtcbiAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXMsIC4uLml0ZW1zQnlTZWFyY2hdKTtcbiAgICB0aGlzLmNvbmZpZygpPy5zb3J0Py4odGhpcy5pdGVtcygpKTtcbiAgICB0aGlzLnNldEhlaWdodFZpZXdQb3J0KCk7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5jaGVja1ZpZXdQb3J0U2Nyb2xsKGNoZWNrTG9hZEl0ZW0pO1xuICAgIHRoaXMuc2Nyb2xsVG9JdGVtU2VsZWN0ZWQoKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KHsgaXRlbXM6IHRoaXMuaXRlbXMoKSwgcGFnaW5nOiB0aGlzLnBhZ2luZ1N0b3JlKCkgfSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvSXRlbVNlbGVjdGVkKCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZVRleHQoKT8uYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQoKSk7XG4gICAgdGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZC5zZXQoKHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmtleVNlbGVjdGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IHRoaXMua2V5U2VsZWN0ZWQoKSk7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQoKT8uc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gICAgICB9XG4gICAgfSkgYXMgdW5rbm93bikgYXMgbnVtYmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhdXRvU2VsZWN0Rmlyc3RJdGVtKGl0ZW1zOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pikge1xuICAgIGlmICh0aGlzLmF1dG9TZWxlY3RlZEZpcnN0SXRlbUNhbGxPdXRzaWRlQmVmb3JlKCkgfHwgdGhpcy5rZXlTZWxlY3RlZCgpIHx8ICF0aGlzLmNvbmZpZygpPy5hdXRvU2VsZWN0Rmlyc3RJdGVtIHx8ICFpdGVtcyB8fCAhaXRlbXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlclNlbGVjdEl0ZW0oJ2NsaWNrJywgaXRlbXNbMF0oKSwgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdEtleVNlbGVjdGVkRGVmYXVsdElmRXhpc3RJdGVtKGl0ZW1zOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pikge1xuICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5maW5kKHN0b3JlID0+IHN0b3JlKClbdGhpcy5maWVsZEtleSgpXSA9PT0gdGhpcy5rZXlTZWxlY3RlZCgpKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLmhhbmRsZXJTZWxlY3RJdGVtKCdjbGljaycsIGl0ZW0oKSwgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldExlbmd0aEl0ZW0oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcygpLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVySW1hZ2VFcnJvcihldmVudDogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGl0ZW0uc3BlY2lmaWNfbG9hZEltZ0Vycm9yID0gdHJ1ZTtcbiAgfVxufVxuIiwiQGlmIChjb25maWdUZW1wbGF0ZVRleHQoKTsgYXMgY29uZmlnVGVtcGxhdGVUZXh0KSB7XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsXCI+XG4gICAgQGlmIChpdGVtcygpICYmIGl0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICA8ZGl2ICNlbGVtZW50U2Nyb2xsXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiIWNvbmZpZ1RlbXBsYXRlVGV4dC5ub3RVc2VWaXJ0dWFsU2Nyb2xsICYmIGhlaWdodFZpZXdQb3J0KCkgJiYgKCFjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIHx8IChjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoICYmIGNvbmZpZygpPy5pZ25vcmVGaXhIZWlnaHRTaG93RGF0YVdoZW5Ob3RTZWFyY2gpKSAgPyBoZWlnaHRWaWV3UG9ydCgpKydweCc6JzEwMCUnXCJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICAob3V0U2Nyb2xsQm90dG9tKT1cImhhbmRsZXJTY3JvbGxCb3R0b20oKVwiPlxuICAgICAgICBAaWYgKCFjb25maWdUZW1wbGF0ZVRleHQubm90VXNlVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgIDx2aXJ0dWFsLXNjcm9sbGVyICNzY3JvbGxcbiAgICAgICAgICAgIFtwYXJlbnRTY3JvbGxdPVwiZWxlbWVudFNjcm9sbFwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXMoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD0nbGlzdFJlZjtjb250ZXh0OntpdGVtc1ZpZXc6c2Nyb2xsLnZpZXdQb3J0SXRlbXN9JyAvPlxuICAgICAgICAgIDwvdmlydHVhbC1zY3JvbGxlcj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGNvbmZpZ1RlbXBsYXRlVGV4dC5ub3RVc2VWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD0nbGlzdFJlZjtjb250ZXh0OntpdGVtc1ZpZXc6aXRlbXMoKX0nIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpICYmICghY29uZmlnKCk/Lmlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCB8fCBrZXlTZWFyY2goKSkpIHtcbiAgICAgIDxkaXYgW2NsYXNzXT1cIidsaWJzLXVpLWZvbnQtaDVyIHRleHQtWyM5Y2EyYWRdICcrIChjb25maWcoKT8udGV4dE5vRGF0YUNsYXNzSW5jbHVkZSA/PyAncHktWzZweF0gcHgtWzE2cHhdJylcIj5cbiAgICAgICAgQGlmICgha2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgIHt7IChjb25maWcoKT8udGV4dE5vRGF0YSA/PyAnaTE4bl9oYXZlX25vX3NlbGVjdGlvbicpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGlmICh0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpICYmIGtleVNlYXJjaCgpICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSB8fCBudWxsO2NvbnRleHQ6e2tleVNlYXJjaDprZXlTZWFyY2goKX1cIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIXRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgIHt7IChjb25maWcoKT8udGV4dFNlYXJjaE5vRGF0YSA/PyAnaTE4bl9ub19yZXN1bHQnKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cImxvYWRpbmdJY29uU2l6ZSgpIHx8ICdtZWRpdW0nXCIgLz5cbiAgICB9XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2xpc3RSZWZcbiAgICBsZXQtaXRlbXNWaWV3PSdpdGVtc1ZpZXcnPlxuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXNWaWV3OyB0cmFjayBpdGVtKClbZmllbGRLZXkoKV0pIHtcbiAgICAgIDxkaXYgI2l0ZW1SZWZcbiAgICAgICAgW2NsYXNzXT1cIml0ZW0oKS5jbGFzc0l0ZW1XcmFwcGVyIHx8ICcnXCI+XG4gICAgICAgIDxkaXYgTGlic1VpQ29tcG9uZW50c0xpc3RIaWdobGlnaHRLZXlTZWFyY2hEaXJlY3RpdmVcbiAgICAgICAgICBbaXNIaWdobGlnaHRdPVwiY29uZmlnKCk/LmhpZ2hsaWdodFRleHRTZWFyY2hJblJlc3VsdFwiXG4gICAgICAgICAgW2tleVNlYXJjaF09XCJrZXlTZWFyY2goKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIidsaWJzLXVpLWxpc3QtdGVtcGxhdGUtdGV4dC1pdGVtIGxpYnMtdWktZm9udC1oNXIgZmxleCAnKyhpdGVtKCkuY2xhc3NJdGVtIHx8ICcnKVwiXG4gICAgICAgICAgW2NsYXNzLml0ZW1zLWNlbnRlcl09XCIhaXRlbSgpLml0ZW1BbGlnblN0YXJ0XCJcbiAgICAgICAgICBbY2xhc3MuaXRlbXMtc3RhcnRdPVwiaXRlbSgpLml0ZW1BbGlnblN0YXJ0XCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWhvdmVyLWRhbmdlcl09XCIhY2xpY2tFeGFjdGx5KCkgJiYgaXRlbSgpLmhvdmVyRGFuZ2VyXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1iZy1saXN0LWhvdmVyXT1cIiFjbGlja0V4YWN0bHkoKSAgJiYgIWl0ZW0oKS5ob3ZlckRhbmdlclwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktYmctbGlzdC1hY3RpdmVdPVwiIWNsaWNrRXhhY3RseSgpICYmIGtleVNlbGVjdGVkKCkgPT09IGl0ZW0oKVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgW2NsYXNzLiFwbC1bMTZweF1dPVwicGFkZGluZ0xlZnRJdGVtKClcIlxuICAgICAgICAgIFtjbGFzcy5iZy1bI2ZmZmZmZl1dPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXItZmZmZmZmXT1cIml0ZW0oKS5kaXNhYmxlXCJcbiAgICAgICAgICBbY2xhc3MuY3Vyc29yLWRlZmF1bHRdPVwiaXRlbSgpLmRpc2FibGVcIlxuICAgICAgICAgIFtjbGFzcy4hcHktWzJweF1dPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgIFtjbGFzcy4hcHItWzQ4cHhdXT1cImtleVNlbGVjdGVkKCkgPT09IGl0ZW0oKVtmaWVsZEtleSgpXSAmJiAoIWNvbmZpZ1RlbXBsYXRlVGV4dD8uaWdub3JlSWNvblNlbGVjdGVkIHx8IGNvbmZpZ1RlbXBsYXRlVGV4dD8uYWN0aW9uU29ydCkmJiAhY29uZmlnVGVtcGxhdGVUZXh0Py5zdHlsZVBhZGRpbmdSaWdodEl0ZW1PdGhlclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydwb2ludGVyLWV2ZW50cy1ub25lIGxpYnMtdWktZGlzYWJsZSc6bG9hZGluZygpIHx8IGRpc2FibGUoKSB8fCAoKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0Rpc2FibGVJdGVtKCk6a2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aCkgJiYgIWlnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtKCkpfVwiXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJDbGlja1JlbGF0aXZlKCRldmVudCxpdGVtKCkpXCI+XG4gICAgICAgICAgQGlmIChpdGVtKCkuYnVsbGV0KSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktbGlzdC10ZW1wbGF0ZS10ZXh0LWl0ZW0tYnVsbGV0IGZsZXggZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIml0ZW0oKS5idWxsZXQuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCxpdGVtKCkpXCI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChpdGVtKCkuYXZhdGFyQ29uZmlnOyBhcyBhdmF0YXJDb25maWcpIHtcbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYXZhdGFyIFt0eXBlU2hhcGVdPVwiYXZhdGFyQ29uZmlnLnR5cGVTaGFwZSB8fCAnY2lyY2xlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYXZhdGFyQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICAgIFtjbGFzc0ltYWdlSW5jbHVkZV09XCJhdmF0YXJDb25maWcuY2xhc3NJbWFnZUluY2x1ZGVcIlxuICAgICAgICAgICAgICBbc2l6ZV09J2F2YXRhckNvbmZpZy5zaXplIHx8IDMyJ1xuICAgICAgICAgICAgICBbbGlua0F2YXRhcl09XCJhdmF0YXJDb25maWcubGlua0F2YXRhclwiXG4gICAgICAgICAgICAgIFtsaW5rQXZhdGFyRXJyb3JdPVwiYXZhdGFyQ29uZmlnLmxpbmtBdmF0YXJFcnJvclwiXG4gICAgICAgICAgICAgIFtpZEdlbkNvbG9yXT1cImF2YXRhckNvbmZpZy5pZEdlbkNvbG9yXCJcbiAgICAgICAgICAgICAgW3RleHRBdmF0YXJdPVwiYXZhdGFyQ29uZmlnLnRleHRBdmF0YXJcIlxuICAgICAgICAgICAgICBbY2xhc3NJbWFnZUluY2x1ZGVdPVwiYXZhdGFyQ29uZmlnLmNsYXNzSW1hZ2VJbmNsdWRlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjb25maWdUZW1wbGF0ZVRleHQuZ2V0SW1hZ2UgfHwgY29uZmlnVGVtcGxhdGVUZXh0LmZpZWxkR2V0SW1hZ2UpIHtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJjb25maWdUZW1wbGF0ZVRleHQuZ2V0SW1hZ2UgPyAoKCdhdmF0YXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTooaXRlbSgpLnNwZWNpZmljX2xvYWRJbWdFcnJvciAmJiBjb25maWdUZW1wbGF0ZVRleHQuZ2V0SW1hZ2VFcnJvciA/IGNvbmZpZ1RlbXBsYXRlVGV4dC5nZXRJbWFnZUVycm9yIDogY29uZmlnVGVtcGxhdGVUZXh0LmdldEltYWdlKTppdGVtKCkpIHwgYXN5bmMpIDogaXRlbSgpW2NvbmZpZ1RlbXBsYXRlVGV4dC5maWVsZEdldEltYWdlIHx8ICcnXVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCInbGlicy11aS1saXN0LXRlbXBsYXRlLXRleHQtaXRlbS1hdmF0YXIgJyArIChjb25maWdUZW1wbGF0ZVRleHQuY2xhc3NJbmNsdWRlSW1hZ2UgPz8gJycpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnctWzE4cHhdXT1cImNvbmZpZ1RlbXBsYXRlVGV4dC5pbWdUeXBlSWNvblwiXG4gICAgICAgICAgICAgIFtjbGFzcy5oLVsxOHB4XV09XCJjb25maWdUZW1wbGF0ZVRleHQuaW1nVHlwZUljb25cIlxuICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckltYWdlRXJyb3IoJGV2ZW50LCBpdGVtKCkpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudCxpdGVtKCkpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpdGVtKCkuYnV0dG9uTGVmdENvbmZpZzsgYXMgYnV0dG9uTGVmdCkge1xuICAgICAgICAgICAgQGlmIChpdGVtKCkuaHJlZkJ1dHRvbikge1xuICAgICAgICAgICAgICA8YSBbY2xhc3Mudy1mdWxsXT1cIiFidXR0b25MZWZ0Lmlnbm9yZVdpZHRoMTAwXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtKCkuaHJlZkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25MZWZ0VGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKCFpdGVtKCkuaHJlZkJ1dHRvbikge1xuICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy53LWZ1bGxdPVwiIWJ1dHRvbkxlZnQuaWdub3JlV2lkdGgxMDBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uTGVmdFRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1dHRvbkxlZnRUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uTGVmdC50eXBlIHx8ICdidXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbkxlZnQubGFiZWwgfHwgJyAnXCJcbiAgICAgICAgICAgICAgICBbekluZGV4XT1cImJ1dHRvbkxlZnQuekluZGV4XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b25MZWZ0LmRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cImJ1dHRvbkxlZnQuY2xhc3NJY29uTGVmdCA/ICgoYnV0dG9uTGVmdC5jbGFzc0ljb25MZWZ0IHx8ICcnKSsnIGZsZXggbXItWzhweF0gdGV4dC1bMTJweF0nKSA6ICcnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIihidXR0b25MZWZ0LmNsYXNzSW5jbHVkZXx8ICcnKSsnIHctZnVsbCdcIlxuICAgICAgICAgICAgICAgIFtjbGFzc0xhYmVsXT1cIihidXR0b25MZWZ0LmNsYXNzTGFiZWwgPz8gJ2xpYnMtdWktZm9udC1oNHInKVwiXG4gICAgICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cImJ1dHRvbkxlZnQuaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUljb25MZWZ0XT1cImJ1dHRvbkxlZnQuc3R5bGVJY29uTGVmdFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlQnV0dG9uXT1cImJ1dHRvbkxlZnQuc3R5bGVCdXR0b25cIlxuICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsaXRlbSgpKVwiIC8+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0oKS5zd2l0Y2hDb25maWcpIHtcbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3dpdGNoIFthY3RpdmVdPVwiaXRlbSgpLnN3aXRjaENvbmZpZy5hY3RpdmVcIlxuICAgICAgICAgICAgICAob3V0U3dpdGNoKT1cImhhbmRsZXJTZWxlY3RJdGVtKCdjbGljaycsaXRlbSgpKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXRlbSgpLmNsYXNzSWNvbkxlZnQpIHtcbiAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtKCkuY2xhc3NJY29uTGVmdCArICcgbXItWzhweF0gdGV4dC1bMTRweF0nXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCFpdGVtKCkuaWdub3JlU2hvd0ZpZWxkTGFiZWwgJiYgIWNvbmZpZ1RlbXBsYXRlVGV4dC5yb3dzKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXIgW3R5cGVdPVwiaXRlbSgpLnBvcG92ZXJMYWJlbD8udHlwZSB8fCAndGV4dCdcIlxuICAgICAgICAgICAgICBbZWxlbWVudFJlZkN1c3RvbV09XCJpdGVtKCkucG9wb3ZlckxhYmVsPy50eXBlID09PSAndGV4dCc/IHVuZGVmaW5lZDppdGVtUmVmXCJcbiAgICAgICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIml0ZW0oKS5wb3BvdmVyTGFiZWw/Lmlnbm9yZVNob3dQb3BvdmVyXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJpdGVtKCkucG9wb3ZlckxhYmVsPy5jb25maWcgfHwgKGNvbmZpZ1RlbXBsYXRlVGV4dC5jb25maWdMYWJlbFBvcG92ZXIgfHwge30pXCJcbiAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJpdGVtKCkuZmllbGRMYWJlbFwiXG4gICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiaXRlbSgpLmNsYXNzSW5jbHVkZVwiXG4gICAgICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyU2VsZWN0SXRlbSgkZXZlbnQsaXRlbSgpKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXRlbSgpLmZpZWxkUG9wb3ZlcjsgYXMgcG9wb3Zlcikge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyIGNsYXNzPVwie3sgcG9wb3Zlci5jbGFzc0luY2x1ZGUgfHwgJycgfX1cIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cInBvcG92ZXI/LmNvbmZpZ1wiPlxuICAgICAgICAgICAgICBAaWYgKCFwb3BvdmVyLmRhdGFWaWV3KSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocG9wb3Zlci5kYXRhVmlldykge1xuICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJwb3BvdmVyLmRhdGFWaWV3IHwgdHJhbnNsYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY29uZmlnVGVtcGxhdGVUZXh0Py5yb3dzKSB7XG4gICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX3Jvd3MgY2xhc3M9XCJ3LWZ1bGwge3sgY29uZmlnVGVtcGxhdGVUZXh0LmNsYXNzUm93c1dyYXBwZXIgfHwgY29uZmlnVGVtcGxhdGVUZXh0LmNsYXNzUm93cyB8fCAnJyB9fVwiXG4gICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW0oKVwiXG4gICAgICAgICAgICAgIFtmaWVsZEtleV09XCJmaWVsZEtleSgpXCJcbiAgICAgICAgICAgICAgW2tleVNlbGVjdGVkXT1cImtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbY29uZmlnVGVtcGxhdGVdPVwiY29uZmlnVGVtcGxhdGVUZXh0XCJcbiAgICAgICAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlcik9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJTZWxlY3RJdGVtKCRldmVudC5ldmVudCwkZXZlbnQuaXRlbSwkZXZlbnQuYWN0aW9uKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoKGtleVNlbGVjdGVkKCkgPT09IGl0ZW0oKVtmaWVsZEtleSgpXSB8fCAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTptdWx0aUtleVNlbGVjdGVkKCk6bXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGgpID8gaXRlbSgpW2ZpZWxkS2V5KCldIDogdW5kZWZpbmVkKSAmJiAhY29uZmlnVGVtcGxhdGVUZXh0Lmlnbm9yZUljb25TZWxlY3RlZCAmJiAhY29uZmlnVGVtcGxhdGVUZXh0LmFjdGlvblNvcnQpIHtcbiAgICAgICAgICAgIDxpIFtjbGFzc109XCInbGlicy11aS1pY29uLWNoZWNrICcrKGNvbmZpZ1RlbXBsYXRlVGV4dC5jbGFzc0luY2x1ZGVJY29uU2VsZWN0ZWQgfHwgJ3JpZ2h0LVsxMnB4XScpXCI+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoa2V5U2VsZWN0ZWQoKSA9PT0gaXRlbSgpW2ZpZWxkS2V5KCldICYmIGNvbmZpZ1RlbXBsYXRlVGV4dC5hY3Rpb25Tb3J0KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1saXN0LXRlbXBsYXRlLXRleHQtc29ydFwiPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtc29ydC1hcnJvdyBbZGlzYWJsZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJjb25maWdUZW1wbGF0ZVRleHQ/Lml0ZW1Tb3J0Py4oKT8ubW9kZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgW2ZpZWxkU29ydF09XCJpdGVtKClbZmllbGRLZXkoKV1cIlxuICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclNvcnQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L25nLXRlbXBsYXRlPlxufVxuIl19
|