@vendure/admin-ui 2.1.3 → 2.1.5
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/core/common/utilities/custom-field-default-value.d.ts +1 -1
- package/core/common/version.d.ts +1 -1
- package/core/providers/nav-builder/nav-builder-types.d.ts +27 -1
- package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
- package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
- package/esm2022/core/common/utilities/configurable-operation-utils.mjs +10 -2
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/providers/nav-builder/nav-builder-types.mjs +1 -1
- package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +2 -2
- package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +3 -3
- package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +1 -1
- package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +3 -3
- package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +2 -2
- package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +11 -11
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +2 -2
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +2 -2
- package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +2 -2
- package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +2 -2
- package/fesm2022/vendure-admin-ui-core.mjs +31 -23
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/package.json +2 -2
- package/static/styles/theme/dark.scss +2 -1
- package/static/theme.min.css +1 -1
|
@@ -3,4 +3,4 @@ import { CustomFieldConfig } from '../generated-types';
|
|
|
3
3
|
export declare function getCustomFieldsDefaults(customFieldConfig: CustomFieldConfig[]): {
|
|
4
4
|
[key: string]: ReturnType<typeof getDefaultValue>;
|
|
5
5
|
};
|
|
6
|
-
export declare function getDefaultValue(type: CustomFieldType, isNullable?: boolean): false |
|
|
6
|
+
export declare function getDefaultValue(type: CustomFieldType, isNullable?: boolean): false | "" | 0 | Date | null;
|
package/core/common/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ADMIN_UI_VERSION = "2.1.
|
|
1
|
+
export declare const ADMIN_UI_VERSION = "2.1.5";
|
|
@@ -57,7 +57,18 @@ export interface NavMenuSection {
|
|
|
57
57
|
displayMode?: 'regular' | 'settings';
|
|
58
58
|
/**
|
|
59
59
|
* @description
|
|
60
|
-
* Control the display of this item based on the user permissions.
|
|
60
|
+
* Control the display of this item based on the user permissions. Note: if you attempt to pass a
|
|
61
|
+
* {@link PermissionDefinition} object, you will get a compilation error. Instead, pass the plain
|
|
62
|
+
* string version. For example, if the permission is defined as:
|
|
63
|
+
* ```ts
|
|
64
|
+
* export const MyPermission = new PermissionDefinition('ProductReview');
|
|
65
|
+
* ```
|
|
66
|
+
* then the generated permission strings will be:
|
|
67
|
+
*
|
|
68
|
+
* - `CreateProductReview`
|
|
69
|
+
* - `ReadProductReview`
|
|
70
|
+
* - `UpdateProductReview`
|
|
71
|
+
* - `DeleteProductReview`
|
|
61
72
|
*/
|
|
62
73
|
requiresPermission?: string | ((userPermissions: string[]) => boolean);
|
|
63
74
|
collapsible?: boolean;
|
|
@@ -108,6 +119,21 @@ export interface ActionBarItem {
|
|
|
108
119
|
buttonColor?: 'primary' | 'success' | 'warning';
|
|
109
120
|
buttonStyle?: 'solid' | 'outline' | 'link';
|
|
110
121
|
icon?: string;
|
|
122
|
+
/**
|
|
123
|
+
* @description
|
|
124
|
+
* Control the display of this item based on the user permissions. Note: if you attempt to pass a
|
|
125
|
+
* {@link PermissionDefinition} object, you will get a compilation error. Instead, pass the plain
|
|
126
|
+
* string version. For example, if the permission is defined as:
|
|
127
|
+
* ```ts
|
|
128
|
+
* export const MyPermission = new PermissionDefinition('ProductReview');
|
|
129
|
+
* ```
|
|
130
|
+
* then the generated permission strings will be:
|
|
131
|
+
*
|
|
132
|
+
* - `CreateProductReview`
|
|
133
|
+
* - `ReadProductReview`
|
|
134
|
+
* - `UpdateProductReview`
|
|
135
|
+
* - `DeleteProductReview`
|
|
136
|
+
*/
|
|
111
137
|
requiresPermission?: string | string[];
|
|
112
138
|
}
|
|
113
139
|
/**
|
|
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class OrderStateLabelComponent {
|
|
13
13
|
state: string;
|
|
14
|
-
get chipColorType(): "
|
|
14
|
+
get chipColorType(): "" | "success" | "error" | "warning";
|
|
15
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<OrderStateLabelComponent, never>;
|
|
16
16
|
static ɵcmp: i0.ɵɵComponentDeclaration<OrderStateLabelComponent, "vdr-order-state-label", never, { "state": { "alias": "state"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
17
17
|
}
|
|
@@ -8,7 +8,7 @@ import { PasswordFormInputComponent } from './password-form-input/password-form-
|
|
|
8
8
|
import { ProductMultiSelectorFormInputComponent } from './product-multi-selector-form-input/product-multi-selector-form-input.component';
|
|
9
9
|
import { ProductSelectorFormInputComponent } from './product-selector-form-input/product-selector-form-input.component';
|
|
10
10
|
import { SelectFormInputComponent } from './select-form-input/select-form-input.component';
|
|
11
|
-
export declare const defaultFormInputs: (typeof
|
|
11
|
+
export declare const defaultFormInputs: (typeof SelectFormInputComponent | typeof ProductSelectorFormInputComponent | typeof ProductMultiSelectorFormInputComponent | typeof PasswordFormInputComponent | typeof CustomerGroupFormInputComponent | typeof CurrencyFormInputComponent | typeof CombinationModeFormInputComponent | typeof JsonEditorFormInputComponent | typeof HtmlEditorFormInputComponent)[];
|
|
12
12
|
/**
|
|
13
13
|
* Registers the default form input components.
|
|
14
14
|
*/
|
|
@@ -6,7 +6,15 @@ import { assertNever } from '@vendure/common/lib/shared-utils';
|
|
|
6
6
|
*/
|
|
7
7
|
export function getConfigArgValue(value) {
|
|
8
8
|
try {
|
|
9
|
-
|
|
9
|
+
const result = value != null ? JSON.parse(value) : undefined;
|
|
10
|
+
if (result && typeof result === 'object' && !Array.isArray(result)) {
|
|
11
|
+
// There is an edge-case where the value is a valid JSON-encoded string and
|
|
12
|
+
// will get parsed as an object, but we actually want it to be a string.
|
|
13
|
+
return JSON.stringify(result);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
10
18
|
}
|
|
11
19
|
catch (e) {
|
|
12
20
|
return value;
|
|
@@ -105,4 +113,4 @@ export function getDefaultConfigArgValue(arg) {
|
|
|
105
113
|
assertNever(type);
|
|
106
114
|
}
|
|
107
115
|
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLW9wZXJhdGlvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3V0aWxpdGllcy9jb25maWd1cmFibGUtb3BlcmF0aW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVMvRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVU7SUFDeEMsSUFBSTtRQUNBLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM3RCxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hFLDJFQUEyRTtZQUMzRSx3RUFBd0U7WUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtLQUNKO0lBQUMsT0FBTyxDQUFNLEVBQUU7UUFDYixPQUFPLEtBQUssQ0FBQztLQUNoQjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBVTtJQUMzQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ25GLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsR0FBb0M7SUFFcEMsT0FBTztRQUNILEdB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O1FBQ2hCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxJQUFJLENBQUM7UUFDVixLQUFLLEtBQUs7WUFDTixPQUFPLElBQUksQ0FBQztRQUNoQixLQUFLLFNBQVM7WUFDVixPQUFPLEtBQUssQ0FBQztRQUNqQjtZQUNJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdBcmdUeXBlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDb25maWdBcmdEZWZpbml0aW9uLFxyXG4gICAgQ29uZmlndXJhYmxlT3BlcmF0aW9uLFxyXG4gICAgQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcclxuICAgIENvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0LFxyXG59IGZyb20gJy4uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG4vKipcclxuICogQ29uZmlnQXJnIHZhbHVlcyBhcmUgYWx3YXlzIHN0b3JlZCBhcyBzdHJpbmdzLiBJZiB0aGV5IGFyZSBub3QgcHJpbWl0aXZlcywgdGhlblxyXG4gKiB0aGV5IGFyZSBKU09OLWVuY29kZWQuIFRoaXMgZnVuY3Rpb24gdW53cmFwcyB0aGVtIGJhY2sgaW50byB0aGVpciBvcmlnaW5hbFxyXG4gKiBkYXRhIHR5cGUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnQXJnVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZSAhPSBudWxsID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIGFuIGVkZ2UtY2FzZSB3aGVyZSB0aGUgdmFsdWUgaXMgYSB2YWxpZCBKU09OLWVuY29kZWQgc3RyaW5nIGFuZFxyXG4gICAgICAgICAgICAvLyB3aWxsIGdldCBwYXJzZWQgYXMgYW4gb2JqZWN0LCBidXQgd2UgYWN0dWFsbHkgd2FudCBpdCB0byBiZSBhIHN0cmluZy5cclxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVDb25maWdBcmdWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6ICh2YWx1ZSA/PyAnJykudG9TdHJpbmcoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYW4gZW1wdHkgQ29uZmlndXJhYmxlT3BlcmF0aW9uIG9iamVjdCBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmFibGVEZWZpbml0aW9uVG9JbnN0YW5jZShcclxuICAgIGRlZjogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcclxuKTogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGVmLFxyXG4gICAgICAgIGFyZ3M6IGRlZi5hcmdzLm1hcChhcmcgPT4gKHtcclxuICAgICAgICAgICAgLi4uYXJnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZ2V0RGVmYXVsdENvbmZpZ0FyZ1ZhbHVlKGFyZyksXHJcbiAgICAgICAgfSkpLFxyXG4gICAgfSBhcyBDb25maWd1cmFibGVPcGVyYXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdGhlIHR5cGU6XHJcbiAqIGBgYFxyXG4gKiB7XHJcbiAqICAgICBjb2RlOiAnbXktb3BlcmF0aW9uJyxcclxuICogICAgIGFyZ3M6IHtcclxuICogICAgICAgICBzb21lUHJvcGVydHk6ICdmb28nXHJcbiAqICAgICB9XHJcbiAqIH1cclxuICogYGBgXHJcbiAqIHRvIHRoZSBmb3JtYXQgZGVmaW5lZCBieSB0aGUgQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQgR3JhcGhRTCBpbnB1dCB0eXBlOlxyXG4gKiBgYGBcclxuICoge1xyXG4gKiAgICAgY29kZTogJ215LW9wZXJhdGlvbicsXHJcbiAqICAgICBhcmd1bWVudHM6IFtcclxuICogICAgICAgICB7IG5hbWU6ICdzb21lUHJvcGVydHknLCB2YWx1ZTogJ2ZvbycgfVxyXG4gKiAgICAgXVxyXG4gKiB9XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoXHJcbiAgICBvcGVyYXRpb246IENvbmZpZ3VyYWJsZU9wZXJhdGlvbixcclxuICAgIGZvcm1WYWx1ZU9wZXJhdGlvbnM6IHsgYXJnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0sXHJcbik6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0IHtcclxuICAgIGNvbnN0IGFyZ3NBcnJheSA9IEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlT3BlcmF0aW9ucy5hcmdzKSA/IGZvcm1WYWx1ZU9wZXJhdGlvbnMuYXJncyA6IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGFyZ3NNYXAgPSAhQXJyYXkuaXNBcnJheShmb3JtVmFsdWVPcGVyYXRpb25zLmFyZ3MpID8gZm9ybVZhbHVlT3BlcmF0aW9ucy5hcmdzIDogdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiBvcGVyYXRpb24uY29kZSxcclxuICAgICAgICBhcmd1bWVudHM6IG9wZXJhdGlvbi5hcmdzLm1hcCgoeyBuYW1lLCB2YWx1ZSB9LCBqKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGFyZ3NBcnJheT8uZmluZChhcmcgPT4gYXJnLm5hbWUgPT09IG5hbWUpPy52YWx1ZSA/PyBhcmdzTWFwPy5bbmFtZV07XHJcbiAgICAgICAgICAgIGlmIChmb3JtVmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlIGtleSBcIiR7bmFtZX1cImApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1WYWx1ZT8uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJylcclxuICAgICAgICAgICAgICAgICAgICA/IGVuY29kZUNvbmZpZ0FyZ1ZhbHVlKChmb3JtVmFsdWUgYXMgYW55KS52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICA6IGVuY29kZUNvbmZpZ0FyZ1ZhbHVlKGZvcm1WYWx1ZSksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSksXHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhYmxlT3BlcmF0aW9uVmFsdWVJc1ZhbGlkKFxyXG4gICAgZGVmPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcclxuICAgIHZhbHVlPzogeyBjb2RlOiBzdHJpbmc7IGFyZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSxcclxuKSB7XHJcbiAgICBpZiAoIWRlZiB8fCAhdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoZGVmLmNvZGUgIT09IHZhbHVlLmNvZGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGFyZ0RlZiBvZiBkZWYuYXJncykge1xyXG4gICAgICAgIGNvbnN0IGFyZ1ZhbCA9IHZhbHVlLmFyZ3NbYXJnRGVmLm5hbWVdO1xyXG4gICAgICAgIGlmIChhcmdEZWYucmVxdWlyZWQgJiYgKGFyZ1ZhbCA9PSBudWxsIHx8IGFyZ1ZhbCA9PT0gJycgfHwgYXJnVmFsID09PSAnMCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBjb25maWcgYXJnLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb25maWdBcmdWYWx1ZShhcmc6IENvbmZpZ0FyZ0RlZmluaXRpb24pOiBhbnkge1xyXG4gICAgaWYgKGFyZy5saXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyZy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBhcmcuZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdHlwZSA9IGFyZy50eXBlIGFzIENvbmZpZ0FyZ1R5cGU7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcclxuICAgICAgICBjYXNlICdmbG9hdCc6XHJcbiAgICAgICAgY2FzZSAnSUQnOlxyXG4gICAgICAgIGNhc2UgJ2ludCc6XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Auto-generated by the set-version.js script.
|
|
2
|
-
export const ADMIN_UI_VERSION = '2.1.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const ADMIN_UI_VERSION = '2.1.5';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcyLjEuNSc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWJ1aWxkZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3Byb3ZpZGVycy9uYXYtYnVpbGRlci9uYXYtYnVpbGRlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBBY3Rpb25CYXJMb2NhdGlvbklkIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbXBvbmVudC1yZWdpc3RyeS10eXBlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgdHlwZSBOYXZNZW51QmFkZ2VUeXBlID0gJ25vbmUnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSBjb2xvci1jb2RlZCBub3RpZmljYXRpb24gYmFkZ2Ugd2hpY2ggd2lsbCBiZSBkaXNwbGF5ZWQgYnkgdGhlXHJcbiAqIE5hdk1lbnVJdGVtJ3MgaWNvbi5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBuYXYtbWVudVxyXG4gKiBAZG9jc1BhZ2UgbmF2aWdhdGlvbi10eXBlc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOYXZNZW51QmFkZ2Uge1xyXG4gICAgdHlwZTogTmF2TWVudUJhZGdlVHlwZTtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBJZiB0cnVlLCB0aGUgYmFkZ2Ugd2lsbCBwcm9wYWdhdGUgdG8gdGhlIE5hdk1lbnVJdGVtJ3NcclxuICAgICAqIHBhcmVudCBzZWN0aW9uLCBkaXNwbGF5aW5nIGEgbm90aWZpY2F0aW9uIGJhZGdlIG5leHRcclxuICAgICAqIHRvIHRoZSBzZWN0aW9uIG5hbWUuXHJcbiAgICAgKi9cclxuICAgIHByb3BhZ2F0ZVRvU2VjdGlvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSBOYXZNZW51SXRlbSBpcyBhIG1lbnUgaXRlbSBpbiB0aGUgbWFpbiAobGVmdC1oYW5kIHNpZGUpIG5hdlxyXG4gKiBiYXIuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbmF2LW1lbnVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2TWVudUl0ZW0ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICByb3V0ZXJMaW5rOiBSb3V0ZXJMaW5rRGVmaW5pdGlvbjtcclxuICAgIG9uQ2xpY2s/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sIHRoZSBkaXNwbGF5IG9mIHRoaXMgaXRlbSBiYXNlZCBvbiB0aGUgdXNlciBwZXJtaXNzaW9ucy5cclxuICAgICAqL1xyXG4gICAgcmVxdWlyZXNQZXJtaXNzaW9uPzogc3RyaW5nIHwgKCh1c2VyUGVybWlzc2lvbnM6IHN0cmluZ1tdKSA9PiBib29sZWFuKTtcclxuICAgIHN0YXR1c0JhZGdlPzogT2JzZXJ2YWJsZTxOYXZNZW51QmFkZ2U+O1xyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEEgTmF2TWVudVNlY3Rpb24gaXMgYSBncm91cGluZyBvZiBsaW5rcyBpbiB0aGUgbWFpblxyXG4gKiAobGVmdC1oYW5kIHNpZGUpIG5hdiBiYXIuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbmF2LW1lbnVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2TWVudVNlY3Rpb24ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpdGVtczogTmF2TWVudUl0ZW1bXTtcclxuICAgIGljb24/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWJ1aWxkZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3Byb3ZpZGVycy9uYXYtYnVpbGRlci9uYXYtYnVpbGRlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBBY3Rpb25CYXJMb2NhdGlvbklkIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbXBvbmVudC1yZWdpc3RyeS10eXBlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgdHlwZSBOYXZNZW51QmFkZ2VUeXBlID0gJ25vbmUnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSBjb2xvci1jb2RlZCBub3RpZmljYXRpb24gYmFkZ2Ugd2hpY2ggd2lsbCBiZSBkaXNwbGF5ZWQgYnkgdGhlXHJcbiAqIE5hdk1lbnVJdGVtJ3MgaWNvbi5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBuYXYtbWVudVxyXG4gKiBAZG9jc1BhZ2UgbmF2aWdhdGlvbi10eXBlc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOYXZNZW51QmFkZ2Uge1xyXG4gICAgdHlwZTogTmF2TWVudUJhZGdlVHlwZTtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBJZiB0cnVlLCB0aGUgYmFkZ2Ugd2lsbCBwcm9wYWdhdGUgdG8gdGhlIE5hdk1lbnVJdGVtJ3NcclxuICAgICAqIHBhcmVudCBzZWN0aW9uLCBkaXNwbGF5aW5nIGEgbm90aWZpY2F0aW9uIGJhZGdlIG5leHRcclxuICAgICAqIHRvIHRoZSBzZWN0aW9uIG5hbWUuXHJcbiAgICAgKi9cclxuICAgIHByb3BhZ2F0ZVRvU2VjdGlvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSBOYXZNZW51SXRlbSBpcyBhIG1lbnUgaXRlbSBpbiB0aGUgbWFpbiAobGVmdC1oYW5kIHNpZGUpIG5hdlxyXG4gKiBiYXIuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbmF2LW1lbnVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2TWVudUl0ZW0ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICByb3V0ZXJMaW5rOiBSb3V0ZXJMaW5rRGVmaW5pdGlvbjtcclxuICAgIG9uQ2xpY2s/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sIHRoZSBkaXNwbGF5IG9mIHRoaXMgaXRlbSBiYXNlZCBvbiB0aGUgdXNlciBwZXJtaXNzaW9ucy5cclxuICAgICAqL1xyXG4gICAgcmVxdWlyZXNQZXJtaXNzaW9uPzogc3RyaW5nIHwgKCh1c2VyUGVybWlzc2lvbnM6IHN0cmluZ1tdKSA9PiBib29sZWFuKTtcclxuICAgIHN0YXR1c0JhZGdlPzogT2JzZXJ2YWJsZTxOYXZNZW51QmFkZ2U+O1xyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEEgTmF2TWVudVNlY3Rpb24gaXMgYSBncm91cGluZyBvZiBsaW5rcyBpbiB0aGUgbWFpblxyXG4gKiAobGVmdC1oYW5kIHNpZGUpIG5hdiBiYXIuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgbmF2LW1lbnVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2TWVudVNlY3Rpb24ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBpdGVtczogTmF2TWVudUl0ZW1bXTtcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5TW9kZT86ICdyZWd1bGFyJyB8ICdzZXR0aW5ncyc7XHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogQ29udHJvbCB0aGUgZGlzcGxheSBvZiB0aGlzIGl0ZW0gYmFzZWQgb24gdGhlIHVzZXIgcGVybWlzc2lvbnMuIE5vdGU6IGlmIHlvdSBhdHRlbXB0IHRvIHBhc3MgYVxyXG4gICAgICoge0BsaW5rIFBlcm1pc3Npb25EZWZpbml0aW9ufSBvYmplY3QsIHlvdSB3aWxsIGdldCBhIGNvbXBpbGF0aW9uIGVycm9yLiBJbnN0ZWFkLCBwYXNzIHRoZSBwbGFpblxyXG4gICAgICogc3RyaW5nIHZlcnNpb24uIEZvciBleGFtcGxlLCBpZiB0aGUgcGVybWlzc2lvbiBpcyBkZWZpbmVkIGFzOlxyXG4gICAgICogYGBgdHNcclxuICAgICAqIGV4cG9ydCBjb25zdCBNeVBlcm1pc3Npb24gPSBuZXcgUGVybWlzc2lvbkRlZmluaXRpb24oJ1Byb2R1Y3RSZXZpZXcnKTtcclxuICAgICAqIGBgYFxyXG4gICAgICogdGhlbiB0aGUgZ2VuZXJhdGVkIHBlcm1pc3Npb24gc3RyaW5ncyB3aWxsIGJlOlxyXG4gICAgICpcclxuICAgICAqIC0gYENyZWF0ZVByb2R1Y3RSZXZpZXdgXHJcbiAgICAgKiAtIGBSZWFkUHJvZHVjdFJldmlld2BcclxuICAgICAqIC0gYFVwZGF0ZVByb2R1Y3RSZXZpZXdgXHJcbiAgICAgKiAtIGBEZWxldGVQcm9kdWN0UmV2aWV3YFxyXG4gICAgICovXHJcbiAgICByZXF1aXJlc1Blcm1pc3Npb24/OiBzdHJpbmcgfCAoKHVzZXJQZXJtaXNzaW9uczogc3RyaW5nW10pID0+IGJvb2xlYW4pO1xyXG4gICAgY29sbGFwc2libGU/OiBib29sZWFuO1xyXG4gICAgY29sbGFwc2VkQnlEZWZhdWx0PzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBQcm92aWRlcnMgYXZhaWxhYmxlIHRvIHRoZSBvbkNsaWNrIGhhbmRsZXIgb2YgYW4ge0BsaW5rIEFjdGlvbkJhckl0ZW19IG9yIHtAbGluayBOYXZNZW51SXRlbX0uXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgYWN0aW9uLWJhclxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25CYXJDb250ZXh0IHtcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICAgIGluamVjdG9yOiBJbmplY3RvcjtcclxuICAgIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZTtcclxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQmFyQnV0dG9uU3RhdGUge1xyXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICB2aXNpYmxlOiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEEgYnV0dG9uIGluIHRoZSBBY3Rpb25CYXIgYXJlYSBhdCB0aGUgdG9wIG9mIG9uZSBvZiB0aGUgbGlzdCBvciBkZXRhaWwgdmlld3MuXHJcbiAqXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgYWN0aW9uLWJhclxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25CYXJJdGVtIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgbG9jYXRpb25JZDogQWN0aW9uQmFyTG9jYXRpb25JZDtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBEZXByZWNhdGVkIHNpbmNlIHYyLjEuMCAtIHVzZSBgYnV0dG9uU3RhdGVgIGluc3RlYWQuXHJcbiAgICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBgYnV0dG9uU3RhdGVgIGluc3RlYWQuXHJcbiAgICAgKi9cclxuICAgIGRpc2FibGVkPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgYnV0dG9uIHN0YXRlLCBhbGxvd2luZyB5b3UgdG9cclxuICAgICAqIGR5bmFtaWNhbGx5IGVuYWJsZS9kaXNhYmxlIG9yIHNob3cvaGlkZSB0aGUgYnV0dG9uLlxyXG4gICAgICpcclxuICAgICAqIEBzaW5jZSAyLjEuMFxyXG4gICAgICovXHJcbiAgICBidXR0b25TdGF0ZT86IChjb250ZXh0OiBBY3Rpb25CYXJDb250ZXh0KSA9PiBPYnNlcnZhYmxlPEFjdGlvbkJhckJ1dHRvblN0YXRlPjtcclxuICAgIG9uQ2xpY2s/OiAoZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbnRleHQ6IEFjdGlvbkJhckNvbnRleHQpID0+IHZvaWQ7XHJcbiAgICByb3V0ZXJMaW5rPzogUm91dGVyTGlua0RlZmluaXRpb247XHJcbiAgICBidXR0b25Db2xvcj86ICdwcmltYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJztcclxuICAgIGJ1dHRvblN0eWxlPzogJ3NvbGlkJyB8ICdvdXRsaW5lJyB8ICdsaW5rJztcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogQ29udHJvbCB0aGUgZGlzcGxheSBvZiB0aGlzIGl0ZW0gYmFzZWQgb24gdGhlIHVzZXIgcGVybWlzc2lvbnMuIE5vdGU6IGlmIHlvdSBhdHRlbXB0IHRvIHBhc3MgYVxyXG4gICAgICoge0BsaW5rIFBlcm1pc3Npb25EZWZpbml0aW9ufSBvYmplY3QsIHlvdSB3aWxsIGdldCBhIGNvbXBpbGF0aW9uIGVycm9yLiBJbnN0ZWFkLCBwYXNzIHRoZSBwbGFpblxyXG4gICAgICogc3RyaW5nIHZlcnNpb24uIEZvciBleGFtcGxlLCBpZiB0aGUgcGVybWlzc2lvbiBpcyBkZWZpbmVkIGFzOlxyXG4gICAgICogYGBgdHNcclxuICAgICAqIGV4cG9ydCBjb25zdCBNeVBlcm1pc3Npb24gPSBuZXcgUGVybWlzc2lvbkRlZmluaXRpb24oJ1Byb2R1Y3RSZXZpZXcnKTtcclxuICAgICAqIGBgYFxyXG4gICAgICogdGhlbiB0aGUgZ2VuZXJhdGVkIHBlcm1pc3Npb24gc3RyaW5ncyB3aWxsIGJlOlxyXG4gICAgICpcclxuICAgICAqIC0gYENyZWF0ZVByb2R1Y3RSZXZpZXdgXHJcbiAgICAgKiAtIGBSZWFkUHJvZHVjdFJldmlld2BcclxuICAgICAqIC0gYFVwZGF0ZVByb2R1Y3RSZXZpZXdgXHJcbiAgICAgKiAtIGBEZWxldGVQcm9kdWN0UmV2aWV3YFxyXG4gICAgICovXHJcbiAgICByZXF1aXJlc1Blcm1pc3Npb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhlIHJvdXRlciBsaW5rIGZvciBhbiB7QGxpbmsgQWN0aW9uQmFySXRlbX0gb3Ige0BsaW5rIE5hdk1lbnVJdGVtfS5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBhY3Rpb24tYmFyXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBSb3V0ZXJMaW5rRGVmaW5pdGlvbiA9ICgocm91dGU6IEFjdGl2YXRlZFJvdXRlLCBjb250ZXh0OiBBY3Rpb25CYXJDb250ZXh0KSA9PiBhbnlbXSkgfCBhbnlbXTtcclxuIl19
|
package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs
CHANGED
|
@@ -129,11 +129,11 @@ export class AssetPickerDialogComponent {
|
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: AssetPickerDialogComponent, deps: [{ token: i1.DataService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: AssetPickerDialogComponent, selector: "vdr-asset-picker-dialog", viewQueries: [{ propertyName: "assetSearchInputComponent", first: true, predicate: ["assetSearchInputComponent"], descendants: true }, { propertyName: "assetGalleryComponent", first: true, predicate: ["assetGalleryComponent"], descendants: true }], ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: AssetPickerDialogComponent, selector: "vdr-asset-picker-dialog", viewQueries: [{ propertyName: "assetSearchInputComponent", first: true, predicate: ["assetSearchInputComponent"], descendants: true }, { propertyName: "assetGalleryComponent", first: true, predicate: ["assetGalleryComponent"], descendants: true }], ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow-y:auto}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: i3.AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { kind: "component", type: i4.ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { kind: "component", type: i5.PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }, { kind: "directive", type: i6.DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { kind: "directive", type: i7.DialogTitleDirective, selector: "[vdrDialogTitle]" }, { kind: "component", type: i8.AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { kind: "component", type: i9.AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets", "editAssetClick"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PaginatePipe, name: "paginate" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
133
133
|
}
|
|
134
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: AssetPickerDialogComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
136
|
-
args: [{ selector: 'vdr-asset-picker-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;
|
|
136
|
+
args: [{ selector: 'vdr-asset-picker-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb-2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n (editAssetClick)=\"cancel()\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow-y:auto}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"] }]
|
|
137
137
|
}], ctorParameters: function () { return [{ type: i1.DataService }, { type: i2.NotificationService }]; }, propDecorators: { assetSearchInputComponent: [{
|
|
138
138
|
type: ViewChild,
|
|
139
139
|
args: ['assetSearchInputComponent']
|
|
@@ -200,11 +200,11 @@ export class AssetPreviewComponent {
|
|
|
200
200
|
this.disablePreviousButton = this.assets?.[this.previewAssetIndex - 1]?.id ? false : true;
|
|
201
201
|
}
|
|
202
202
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: AssetPreviewComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DataService }, { token: i3.NotificationService }, { token: i0.ChangeDetectorRef }, { token: i4.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: AssetPreviewComponent, selector: "vdr-asset-preview", inputs: { asset: "asset", assets: "assets", editable: "editable", customFields: "customFields", customFieldsForm: "customFieldsForm" }, outputs: { assetChange: "assetChange", editClick: "editClick" }, viewQueries: [{ propertyName: "imageElementRef", first: true, predicate: ["imageElement"], descendants: true, static: true }, { propertyName: "previewDivRef", first: true, predicate: ["previewDiv"], descendants: true, static: true }], ngImport: i0, template: "<vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <div *ngIf=\"!editable\" class=\"mb-2\">\r\n <a\r\n class=\"button-ghost\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <vdr-form-field *ngIf=\"editable\" [label]=\"'common.name' | translate\" class=\"mb-2\">\r\n <input\r\n type=\"text\"\r\n [formControl]=\"form.get('name')\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </vdr-form-field>\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number : '1.2-2' }}, y:\r\n {{ fpy | number : '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <div class=\"flex mt-1\">\r\n <button\r\n class=\"button-small mr-1\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"button-small\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector [formControl]=\"form.get('tags')\"></vdr-tag-selector>\r\n <button class=\"button-small mt-1\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"customFields.length\" [title]=\"'common.custom-fields' | translate\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-card [title]=\"'asset.preview' | translate\">\r\n <vdr-form-field>\r\n <select name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </vdr-form-field>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n <vdr-asset-preview-links [asset]=\"asset\"></vdr-asset-preview-links>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"asset as entity\" [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <div class=\"carousel-container\">\r\n <button *ngIf=\"showSlideButtons\" (click)=\"previousImage()\" [class.disabled]=\"disablePreviousButton\"><clr-icon shape=\"caret left\" class=\"color-weight-800\"></clr-icon\r\n ></button>\r\n <div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview : size\"\r\n [ngClass]=\"size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm\"\r\n (click)=\"setFocalPointEnd()\"\r\n [disabled]=\"!lastFocalPoint\"\r\n >\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <button *ngIf=\"showSlideButtons\" (click)=\"nextImage()\" [class.disabled]=\"disableNextButton\"><clr-icon shape=\"caret right\" class=\"color-weight-800\"></clr-icon\r\n ></button>\r\n </div>\r\n</vdr-page-detail-layout>\r\n", styles: [":host{height:100%}.preview-image{width:100%;max-width:750px;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);margin-top:var(--space-unit);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .asset-image.tiny{max-width:50px;max-height:50px}.preview-image .asset-image.thumb{max-width:150px;max-height:150px}.preview-image .asset-image.small{max-width:300px;max-height:300px}.preview-image .asset-image.medium{max-width:500px;max-height:500px}.preview-image .asset-image.large{max-width:800px;max-height:800px}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-inline-start:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-inline-end:12px}.carousel-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.carousel-container button{cursor:pointer;width:30px;height:30px;border:none;border-radius:50%;text-align:center;background-color:var(--color-grey-300)}.carousel-container button:hover{background-color:var(--color-grey-400)}.carousel-container .disabled{pointer-events:none;opacity:.4}\n"], dependencies: [{ kind: "directive", type: i5.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i9.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i10.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i11.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "component", type: i12.FocalPointControlComponent, selector: "vdr-focal-point-control", inputs: ["visible", "editable", "width", "height", "fpx", "fpy"], outputs: ["focalPointChange"] }, { kind: "component", type: i13.TagSelectorComponent, selector: "vdr-tag-selector", inputs: ["placeholder"] }, { kind: "component", type: i14.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i15.AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }, { kind: "component", type: i16.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i17.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i18.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i19.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i20.TranslatePipe, name: "translate" }, { kind: "pipe", type: i21.FileSizePipe, name: "filesize" }, { kind: "pipe", type: i22.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i23.AssetPreviewPipe, name: "assetPreview" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
203
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: AssetPreviewComponent, selector: "vdr-asset-preview", inputs: { asset: "asset", assets: "assets", editable: "editable", customFields: "customFields", customFieldsForm: "customFieldsForm" }, outputs: { assetChange: "assetChange", editClick: "editClick" }, viewQueries: [{ propertyName: "imageElementRef", first: true, predicate: ["imageElement"], descendants: true, static: true }, { propertyName: "previewDivRef", first: true, predicate: ["previewDiv"], descendants: true, static: true }], ngImport: i0, template: "<vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <div *ngIf=\"!editable\" class=\"mb-2\">\r\n <a\r\n class=\"button-ghost\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <vdr-form-field *ngIf=\"editable\" [label]=\"'common.name' | translate\" class=\"mb-2\">\r\n <input\r\n type=\"text\"\r\n [formControl]=\"form.get('name')\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </vdr-form-field>\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number : '1.2-2' }}, y:\r\n {{ fpy | number : '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <div class=\"flex mt-1\">\r\n <button\r\n class=\"button-small mr-1\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"button-small\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector [formControl]=\"form.get('tags')\"></vdr-tag-selector>\r\n <button class=\"button-small mt-1\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"customFields.length\" [title]=\"'common.custom-fields' | translate\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-card [title]=\"'asset.preview' | translate\">\r\n <vdr-form-field>\r\n <select name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </vdr-form-field>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n <vdr-asset-preview-links [asset]=\"asset\"></vdr-asset-preview-links>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"asset as entity\" [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <div class=\"carousel-container\">\r\n <button *ngIf=\"showSlideButtons\" (click)=\"previousImage()\" class=\"carousel-button\" [class.disabled]=\"disablePreviousButton\">\r\n <clr-icon shape=\"caret left\" class=\"color-weight-800\"></clr-icon>\r\n </button>\r\n <div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview : size\"\r\n [ngClass]=\"size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm\"\r\n (click)=\"setFocalPointEnd()\"\r\n [disabled]=\"!lastFocalPoint\"\r\n >\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <button *ngIf=\"showSlideButtons\" (click)=\"nextImage()\" class=\"carousel-button\" [class.disabled]=\"disableNextButton\">\r\n <clr-icon shape=\"caret right\" class=\"color-weight-800\"></clr-icon>\r\n </button>\r\n </div>\r\n</vdr-page-detail-layout>\r\n", styles: [":host{height:100%}.preview-image{width:100%;max-width:750px;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);margin-top:var(--space-unit);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .asset-image.tiny{max-width:50px;max-height:50px}.preview-image .asset-image.thumb{max-width:150px;max-height:150px}.preview-image .asset-image.small{max-width:300px;max-height:300px}.preview-image .asset-image.medium{max-width:500px;max-height:500px}.preview-image .asset-image.large{max-width:800px;max-height:800px}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-inline-start:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-inline-end:12px}.carousel-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.carousel-container button.carousel-button{cursor:pointer;width:30px;height:30px;border:none;border-radius:50%;text-align:center;background-color:var(--color-grey-300)}.carousel-container button.carousel-button:hover{background-color:var(--color-grey-400)}.carousel-container .disabled{pointer-events:none;opacity:.4}\n"], dependencies: [{ kind: "directive", type: i5.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i9.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i10.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i11.LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { kind: "component", type: i12.FocalPointControlComponent, selector: "vdr-focal-point-control", inputs: ["visible", "editable", "width", "height", "fpx", "fpy"], outputs: ["focalPointChange"] }, { kind: "component", type: i13.TagSelectorComponent, selector: "vdr-tag-selector", inputs: ["placeholder"] }, { kind: "component", type: i14.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i15.AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }, { kind: "component", type: i16.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i17.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i18.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i19.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "pipe", type: i6.DecimalPipe, name: "number" }, { kind: "pipe", type: i20.TranslatePipe, name: "translate" }, { kind: "pipe", type: i21.FileSizePipe, name: "filesize" }, { kind: "pipe", type: i22.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i23.AssetPreviewPipe, name: "assetPreview" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
204
204
|
}
|
|
205
205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: AssetPreviewComponent, decorators: [{
|
|
206
206
|
type: Component,
|
|
207
|
-
args: [{ selector: 'vdr-asset-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <div *ngIf=\"!editable\" class=\"mb-2\">\r\n <a\r\n class=\"button-ghost\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <vdr-form-field *ngIf=\"editable\" [label]=\"'common.name' | translate\" class=\"mb-2\">\r\n <input\r\n type=\"text\"\r\n [formControl]=\"form.get('name')\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </vdr-form-field>\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number : '1.2-2' }}, y:\r\n {{ fpy | number : '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <div class=\"flex mt-1\">\r\n <button\r\n class=\"button-small mr-1\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"button-small\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector [formControl]=\"form.get('tags')\"></vdr-tag-selector>\r\n <button class=\"button-small mt-1\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"customFields.length\" [title]=\"'common.custom-fields' | translate\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-card [title]=\"'asset.preview' | translate\">\r\n <vdr-form-field>\r\n <select name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </vdr-form-field>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n <vdr-asset-preview-links [asset]=\"asset\"></vdr-asset-preview-links>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"asset as entity\" [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <div class=\"carousel-container\">\r\n
|
|
207
|
+
args: [{ selector: 'vdr-asset-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <div *ngIf=\"!editable\" class=\"mb-2\">\r\n <a\r\n class=\"button-ghost\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <vdr-form-field *ngIf=\"editable\" [label]=\"'common.name' | translate\" class=\"mb-2\">\r\n <input\r\n type=\"text\"\r\n [formControl]=\"form.get('name')\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </vdr-form-field>\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number : '1.2-2' }}, y:\r\n {{ fpy | number : '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <div class=\"flex mt-1\">\r\n <button\r\n class=\"button-small mr-1\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"button-small\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector [formControl]=\"form.get('tags')\"></vdr-tag-selector>\r\n <button class=\"button-small mt-1\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"customFields.length\" [title]=\"'common.custom-fields' | translate\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-card [title]=\"'asset.preview' | translate\">\r\n <vdr-form-field>\r\n <select name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </vdr-form-field>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n <vdr-asset-preview-links [asset]=\"asset\"></vdr-asset-preview-links>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"asset as entity\" [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <div class=\"carousel-container\">\r\n <button *ngIf=\"showSlideButtons\" (click)=\"previousImage()\" class=\"carousel-button\" [class.disabled]=\"disablePreviousButton\">\r\n <clr-icon shape=\"caret left\" class=\"color-weight-800\"></clr-icon>\r\n </button>\r\n <div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview : size\"\r\n [ngClass]=\"size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm\"\r\n (click)=\"setFocalPointEnd()\"\r\n [disabled]=\"!lastFocalPoint\"\r\n >\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <button *ngIf=\"showSlideButtons\" (click)=\"nextImage()\" class=\"carousel-button\" [class.disabled]=\"disableNextButton\">\r\n <clr-icon shape=\"caret right\" class=\"color-weight-800\"></clr-icon>\r\n </button>\r\n </div>\r\n</vdr-page-detail-layout>\r\n", styles: [":host{height:100%}.preview-image{width:100%;max-width:750px;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);margin-top:var(--space-unit);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .asset-image.tiny{max-width:50px;max-height:50px}.preview-image .asset-image.thumb{max-width:150px;max-height:150px}.preview-image .asset-image.small{max-width:300px;max-height:300px}.preview-image .asset-image.medium{max-width:500px;max-height:500px}.preview-image .asset-image.large{max-width:800px;max-height:800px}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-inline-start:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-inline-end:12px}.carousel-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.carousel-container button.carousel-button{cursor:pointer;width:30px;height:30px;border:none;border-radius:50%;text-align:center;background-color:var(--color-grey-300)}.carousel-container button.carousel-button:hover{background-color:var(--color-grey-400)}.carousel-container .disabled{pointer-events:none;opacity:.4}\n"] }]
|
|
208
208
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DataService }, { type: i3.NotificationService }, { type: i0.ChangeDetectorRef }, { type: i4.ModalService }]; }, propDecorators: { asset: [{
|
|
209
209
|
type: Input
|
|
210
210
|
}], assets: [{
|
|
@@ -226,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
|
|
|
226
226
|
type: ViewChild,
|
|
227
227
|
args: ['previewDiv', { static: true }]
|
|
228
228
|
}] } });
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXcvYXNzZXQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXcvYXNzZXQtcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFROUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVL0YsTUFBTSxPQUFPLHFCQUFxQjtJQTZCOUIsWUFDWSxXQUF3QixFQUN4QixXQUF3QixFQUN4QixtQkFBd0MsRUFDeEMsY0FBaUMsRUFDakMsWUFBMEI7UUFKMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWM7UUEvQjdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBRXRDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7UUFDdkUsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekMsU0FBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzFCLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUMsRUFBYyxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUVILFNBQUksR0FBa0IsUUFBUSxDQUFDO1FBQy9CLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO0lBWXJCLENBQUM7SUFFTCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDakIsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7YUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDVCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNwQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFFL0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDcEQsSUFBSSxvQkFBb0IsRUFBRTtZQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxlQUFlLEdBQUcsZUFBZSxHQUFHLGdCQUFnQixDQUFDO1lBQzNELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQztZQUN0QyxNQUFNLE1BQU0sR0FBRyxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQzNDLE1BQU0sTUFBTSxHQUFHLFFBQVEsR0FBRyxjQUFjLENBQUM7WUFFekMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDakUsSUFBSSwrQkFBK0IsRUFBRTtnQkFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPO2FBQ1Y7U0FDSjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGNBQWMsSUFBSSxTQUFTLElBQUksZUFBZSxDQUFDO0lBQy9FLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2FBQ25CLFdBQVcsQ0FBQztZQUNULEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDbkIsQ0FBQzthQUNELFNBQVMsQ0FDTixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLEVBQ0QsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUM1RSxDQUFDO0lBQ1YsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVk7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87aUJBQ25CLFdBQVcsQ0FBQztnQkFDVCxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2FBQ3ZCLENBQUM7aUJBQ0QsU0FBUyxDQUNOLEdBQUcsRUFBRTtnQkFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkMsQ0FBQyxFQUNELEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FDNUUsQ0FBQztTQUNUO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQyx5QkFBeUIsRUFBRTtZQUN0QyxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUM7YUFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDO2FBQzdFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCx5QkFBeUI7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0RixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlGLENBQUM7OEdBaE5RLHFCQUFxQjtrR0FBckIscUJBQXFCLDZlQ2pDbEMsKzBPQW9KQTs7MkZEbkhhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTt5TkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFpQjhDLGVBQWU7c0JBQW5FLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDUSxhQUFhO3NCQUEvRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgVXBkYXRlQXNzZXRJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEvcHJvdmlkZXJzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBc3NldExpa2UgfSBmcm9tICcuLi9hc3NldC1nYWxsZXJ5L2Fzc2V0LWdhbGxlcnkudHlwZXMnO1xyXG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ZvY2FsLXBvaW50LWNvbnRyb2wvZm9jYWwtcG9pbnQtY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYW5hZ2VUYWdzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFuYWdlLXRhZ3MtZGlhbG9nL21hbmFnZS10YWdzLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgUHJldmlld1ByZXNldCA9ICd0aW55JyB8ICd0aHVtYicgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWFzc2V0LXByZXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNzZXQtcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NldFByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBhc3NldDogQXNzZXRMaWtlO1xyXG4gICAgQElucHV0KCkgYXNzZXRzPzogQXNzZXRMaWtlW107XHJcbiAgICBASW5wdXQoKSBlZGl0YWJsZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSBjdXN0b21GaWVsZHNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xyXG4gICAgQE91dHB1dCgpIGFzc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxPbWl0PFVwZGF0ZUFzc2V0SW5wdXQsICdmb2NhbFBvaW50Jz4+KCk7XHJcbiAgICBAT3V0cHV0KCkgZWRpdENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICB0YWdzOiBbW10gYXMgc3RyaW5nW11dLFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2l6ZTogUHJldmlld1ByZXNldCA9ICdtZWRpdW0nO1xyXG4gICAgd2lkdGggPSAwO1xyXG4gICAgaGVpZ2h0ID0gMDtcclxuICAgIGNlbnRlcmVkID0gdHJ1ZTtcclxuICAgIHNldHRpbmdGb2NhbFBvaW50ID0gZmFsc2U7XHJcbiAgICBsYXN0Rm9jYWxQb2ludD86IFBvaW50O1xyXG4gICAgcHJldmlld0Fzc2V0SW5kZXggPSAwO1xyXG4gICAgZGlzYWJsZU5leHRCdXR0b24gPSBmYWxzZTtcclxuICAgIGRpc2FibGVQcmV2aW91c0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgc2hvd1NsaWRlQnV0dG9ucyA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpbWFnZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XHJcbiAgICBAVmlld0NoaWxkKCdwcmV2aWV3RGl2JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBwcmV2aWV3RGl2UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIHNpemVQcmlvclRvU2V0dGluZ0ZvY2FsUG9pbnQ6IFByZXZpZXdQcmVzZXQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIGdldCBmcHgoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZXQuZm9jYWxQb2ludCA/IHRoaXMuYXNzZXQuZm9jYWxQb2ludC54IDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZnB5KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFzc2V0LmZvY2FsUG9pbnQgPyB0aGlzLmFzc2V0LmZvY2FsUG9pbnQueSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY29uc3QgeyBmb2NhbFBvaW50IH0gPSB0aGlzLmFzc2V0O1xyXG4gICAgICAgIGlmICh0aGlzLmFzc2V0cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlQnV0dG9ucyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlld0Fzc2V0SW5kZXggPSB0aGlzLmFzc2V0cy5maW5kSW5kZXgoYXNzZXQgPT4gYXNzZXQuaWQgPT09IHRoaXMuYXNzZXQuaWQpIHx8IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVCdXR0b25zID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQnV0dG9uQWNjZXNzaWJpbGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkFjY2Vzc2liaWxpdHkoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCduYW1lJyk/LnNldFZhbHVlKHRoaXMuYXNzZXQubmFtZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgndGFncycpPy5zZXRWYWx1ZSh0aGlzLmFzc2V0LnRhZ3M/Lm1hcCh0ID0+IHQudmFsdWUpKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hc3NldENoYW5nZS5lbWl0KHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFzc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcclxuICAgICAgICAgICAgICAgIHRhZ3M6IHZhbHVlLnRhZ3MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRGltZW5zaW9ucygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRTb3VyY2VGaWxlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5hc3NldC5zb3VyY2Uuc3BsaXQoL1tcXFxcXFwvXS9nKTtcclxuICAgICAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcblxyXG4gICAgb25JbWFnZUxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEaW1lbnNpb25zKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEaW1lbnNpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IGltZyA9IHRoaXMuaW1hZ2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5wcmV2aWV3RGl2UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgaW1nV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGltZ0hlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpblRvQ29udGFpbmVyID0gdGhpcy5zZXR0aW5nRm9jYWxQb2ludDtcclxuICAgICAgICBpZiAoY29uc3RyYWluVG9Db250YWluZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbHNNYXJnaW5QeCA9IDQ4ICogMjtcclxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC0gY29udHJvbHNNYXJnaW5QeDtcclxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSBjb250YWluZXJXaWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaFJhdGlvID0gaW1nSGVpZ2h0IC8gYXZhaWxhYmxlSGVpZ2h0O1xyXG4gICAgICAgICAgICBjb25zdCB3UmF0aW8gPSBpbWdXaWR0aCAvIGF2YWlsYWJsZVdpZHRoO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGNlZWRzQXZhaWxhYmxlRGltZW5zaW9ucyA9IDEgPCBoUmF0aW8gfHwgMSA8IHdSYXRpbztcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhjZWVkc0F2YWlsYWJsZURpbWVuc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhY3RvciA9IGhSYXRpbyA8IHdSYXRpbyA/IHdSYXRpbyA6IGhSYXRpbztcclxuICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSBNYXRoLnJvdW5kKGltZ1dpZHRoIC8gZmFjdG9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5yb3VuZChpbWdIZWlnaHQgLyBmYWN0b3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IGltZ1dpZHRoO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaW1nSGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuY2VudGVyZWQgPSBpbWdXaWR0aCA8PSBjb250YWluZXJXaWR0aCAmJiBpbWdIZWlnaHQgPD0gY29udGFpbmVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHNldEZvY2FsUG9pbnRTdGFydCgpIHtcclxuICAgICAgICB0aGlzLnNpemVQcmlvclRvU2V0dGluZ0ZvY2FsUG9pbnQgPSB0aGlzLnNpemU7XHJcbiAgICAgICAgdGhpcy5zaXplID0gJ21lZGl1bSc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nRm9jYWxQb2ludCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sYXN0Rm9jYWxQb2ludCA9IHRoaXMuYXNzZXQuZm9jYWxQb2ludCB8fCB7IHg6IDAuNSwgeTogMC41IH07XHJcbiAgICAgICAgdGhpcy51cGRhdGVEaW1lbnNpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRm9jYWxQb2ludCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3RcclxuICAgICAgICAgICAgLnVwZGF0ZUFzc2V0KHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFzc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgZm9jYWxQb2ludDogbnVsbCxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdhc3NldC51cGRhdGUtZm9jYWwtcG9pbnQtc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2V0ID0geyAuLi50aGlzLmFzc2V0LCBmb2NhbFBvaW50OiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnYXNzZXQudXBkYXRlLWZvY2FsLXBvaW50LWVycm9yJykpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jYWxQb2ludENoYW5nZShwb2ludDogUG9pbnQpIHtcclxuICAgICAgICB0aGlzLmxhc3RGb2NhbFBvaW50ID0gcG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Rm9jYWxQb2ludENhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdGb2NhbFBvaW50ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sYXN0Rm9jYWxQb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnNpemUgPSB0aGlzLnNpemVQcmlvclRvU2V0dGluZ0ZvY2FsUG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Rm9jYWxQb2ludEVuZCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdGb2NhbFBvaW50ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy5zaXplUHJpb3JUb1NldHRpbmdGb2NhbFBvaW50O1xyXG4gICAgICAgIGlmICh0aGlzLmxhc3RGb2NhbFBvaW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5sYXN0Rm9jYWxQb2ludDtcclxuICAgICAgICAgICAgdGhpcy5sYXN0Rm9jYWxQb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAudXBkYXRlQXNzZXQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFzc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQ6IHsgeCwgeSB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdhc3NldC51cGRhdGUtZm9jYWwtcG9pbnQtc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NldCA9IHsgLi4udGhpcy5hc3NldCwgZm9jYWxQb2ludDogeyB4LCB5IH0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdhc3NldC51cGRhdGUtZm9jYWwtcG9pbnQtZXJyb3InKSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtYW5hZ2VUYWdzKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KE1hbmFnZVRhZ3NEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIHNpemU6ICdzbScsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZWQtdGFncy1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0SW1hZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3QXNzZXRJbmRleCA9IHRoaXMucHJldmlld0Fzc2V0SW5kZXggKyAxO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFzc2V0ID0gdGhpcy5hc3NldHNbdGhpcy5wcmV2aWV3QXNzZXRJbmRleF07XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQnV0dG9uQWNjZXNzaWJpbGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcmV2aW91c0ltYWdlKCkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0Fzc2V0SW5kZXggPSB0aGlzLnByZXZpZXdBc3NldEluZGV4IC0gMTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcclxuICAgICAgICAgICAgdGhpcy5hc3NldCA9IHRoaXMuYXNzZXRzW3RoaXMucHJldmlld0Fzc2V0SW5kZXhdO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkFjY2Vzc2liaWxpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQnV0dG9uQWNjZXNzaWJpbGl0eSgpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVOZXh0QnV0dG9uID0gdGhpcy5hc3NldHM/Llt0aGlzLnByZXZpZXdBc3NldEluZGV4ICsgMV0/LmlkID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdGhpcy5hc3NldHM/Llt0aGlzLnByZXZpZXdBc3NldEluZGV4IC0gMV0/LmlkID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8dmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZWRpdGFibGVcIiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZ2hvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2NhdGFsb2cnLCAnYXNzZXRzJywgYXNzZXQuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdENsaWNrLmVtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWRpdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5lZGl0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImFycm93IHJpZ2h0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCAqbmdJZj1cImVkaXRhYmxlXCIgW2xhYmVsXT1cIidjb21tb24ubmFtZScgfCB0cmFuc2xhdGVcIiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoJ25hbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEoWydVcGRhdGVDYXRhbG9nJywgJ1VwZGF0ZUFzc2V0J10gfCBoYXNQZXJtaXNzaW9uKSB8fCBzZXR0aW5nRm9jYWxQb2ludFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8dmRyLWxhYmVsZWQtZGF0YSBbbGFiZWxdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiIWVkaXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsaWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgYXNzZXQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInYXNzZXQuc291cmNlLWZpbGUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJhc3NldC5zb3VyY2VcIiBbdGl0bGVdPVwiYXNzZXQuc291cmNlXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJlbGlkZSBzb3VyY2UtbGlua1wiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0U291cmNlRmlsZU5hbWUoKVxyXG4gICAgICAgICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICAgIDwvdmRyLWxhYmVsZWQtZGF0YT5cclxuXHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInYXNzZXQub3JpZ2luYWwtYXNzZXQtc2l6ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGFzc2V0LmZpbGVTaXplIHwgZmlsZXNpemUgfX1cclxuICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidhc3NldC5kaW1lbnNpb25zJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgYXNzZXQud2lkdGggfX0geCB7eyBhc3NldC5oZWlnaHQgfX1cclxuICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidhc3NldC5mb2NhbC1wb2ludCcgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZnB4XCJcclxuICAgICAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiY3Jvc3NoYWlyc1wiPjwvY2xyLWljb24+IHg6IHt7IGZweCB8IG51bWJlciA6ICcxLjItMicgfX0sIHk6XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZnB5IHwgbnVtYmVyIDogJzEuMi0yJyB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZnB4XCI+e3sgJ2NvbW1vbi5ub3Qtc2V0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsIG1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ0ZvY2FsUG9pbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Rm9jYWxQb2ludFN0YXJ0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmcHhcIj57eyAnYXNzZXQuc2V0LWZvY2FsLXBvaW50JyB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZnB4XCI+e3sgJ2Fzc2V0LnVwZGF0ZS1mb2NhbC1wb2ludCcgfCB0cmFuc2xhdGUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNldHRpbmdGb2NhbFBvaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGb2NhbFBvaW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnVuc2V0LWZvY2FsLXBvaW50JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWxhYmVsZWQtZGF0YT5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidjb21tb24udGFncycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItdGFnLXNlbGVjdG9yIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldCgndGFncycpXCI+PC92ZHItdGFnLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tc21hbGwgbXQtMVwiIChjbGljayk9XCJtYW5hZ2VUYWdzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidGFnc1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24ubWFuYWdlLXRhZ3MnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZWRpdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWNoaXAgKm5nRm9yPVwibGV0IHRhZyBvZiBhc3NldC50YWdzXCIgW2NvbG9yRnJvbV09XCJ0YWcudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidGFnXCIgY2xhc3M9XCJtcjJcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0YWcudmFsdWUgfX08L3Zkci1jaGlwXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWxhYmVsZWQtZGF0YT5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCAqbmdJZj1cImN1c3RvbUZpZWxkcy5sZW5ndGhcIiBbdGl0bGVdPVwiJ2NvbW1vbi5jdXN0b20tZmllbGRzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLXRhYmJlZC1jdXN0b20tZmllbGRzXHJcbiAgICAgICAgICAgICAgICBlbnRpdHlOYW1lPVwiQXNzZXRcIlxyXG4gICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImN1c3RvbUZpZWxkc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEoWydVcGRhdGVDYXRhbG9nJywgJ1VwZGF0ZUFzc2V0J10gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgID48L3Zkci10YWJiZWQtY3VzdG9tLWZpZWxkcz5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ2Fzc2V0LnByZXZpZXcnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInNpemVcIiBbZGlzYWJsZWRdPVwic2V0dGluZ0ZvY2FsUG9pbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidGlueVwiPnRpbnk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidGh1bWJcIj50aHVtYjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzbWFsbFwiPnNtYWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1lZGl1bVwiPm1lZGl1bTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXJnZVwiPmxhcmdlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPmZ1bGwgc2l6ZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NldC1kZXRhaWxcIj57eyB3aWR0aCB9fSB4IHt7IGhlaWdodCB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8dmRyLWFzc2V0LXByZXZpZXctbGlua3MgW2Fzc2V0XT1cImFzc2V0XCI+PC92ZHItYXNzZXQtcHJldmlldy1saW5rcz5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1wYWdlLWVudGl0eS1pbmZvICpuZ0lmPVwiYXNzZXQgYXMgZW50aXR5XCIgW2VudGl0eV09XCJlbnRpdHlcIj48L3Zkci1wYWdlLWVudGl0eS1pbmZvPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRhaW5lclwiPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dTbGlkZUJ1dHRvbnNcIiAoY2xpY2spPVwicHJldmlvdXNJbWFnZSgpXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVQcmV2aW91c0J1dHRvblwiPjxjbHItaWNvbiBzaGFwZT1cImNhcmV0IGxlZnRcIiBjbGFzcz1cImNvbG9yLXdlaWdodC04MDBcIj48L2Nsci1pY29uXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInByZXZpZXctaW1hZ2VcIiAjcHJldmlld0RpdiBbY2xhc3MuY2VudGVyZWRdPVwiY2VudGVyZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Utd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8dmRyLWZvY2FsLXBvaW50LWNvbnRyb2xcclxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJ3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbZnB4XT1cImZweFwiXHJcbiAgICAgICAgICAgICAgICBbZnB5XT1cImZweVwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwic2V0dGluZ0ZvY2FsUG9pbnRcIlxyXG4gICAgICAgICAgICAgICAgKGZvY2FsUG9pbnRDaGFuZ2UpPVwib25Gb2NhbFBvaW50Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3NldC1pbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhc3NldCB8IGFzc2V0UHJldmlldyA6IHNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICNpbWFnZUVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvdmRyLWZvY2FsLXBvaW50LWNvbnRyb2w+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb2NhbC1wb2ludC1pbmZvXCIgKm5nSWY9XCJzZXR0aW5nRm9jYWxQb2ludFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZvY2FsUG9pbnRDYW5jZWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInRpbWVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEZvY2FsUG9pbnRFbmQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFsYXN0Rm9jYWxQb2ludFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY3Jvc3NoYWlyc1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnNldC1mb2NhbC1wb2ludCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiAgKm5nSWY9XCJzaG93U2xpZGVCdXR0b25zXCIgKGNsaWNrKT1cIm5leHRJbWFnZSgpXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVOZXh0QnV0dG9uXCI+PGNsci1pY29uIHNoYXBlPVwiY2FyZXQgcmlnaHRcIiBjbGFzcz1cImNvbG9yLXdlaWdodC04MDBcIj48L2Nsci1pY29uXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuIl19
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXcvYXNzZXQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Fzc2V0LXByZXZpZXcvYXNzZXQtcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFROUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVL0YsTUFBTSxPQUFPLHFCQUFxQjtJQTZCOUIsWUFDWSxXQUF3QixFQUN4QixXQUF3QixFQUN4QixtQkFBd0MsRUFDeEMsY0FBaUMsRUFDakMsWUFBMEI7UUFKMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWM7UUEvQjdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBRXRDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7UUFDdkUsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekMsU0FBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzFCLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUMsRUFBYyxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUVILFNBQUksR0FBa0IsUUFBUSxDQUFDO1FBQy9CLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO0lBWXJCLENBQUM7SUFFTCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDakIsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7YUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDVCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNwQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFFL0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDcEQsSUFBSSxvQkFBb0IsRUFBRTtZQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxlQUFlLEdBQUcsZUFBZSxHQUFHLGdCQUFnQixDQUFDO1lBQzNELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQztZQUN0QyxNQUFNLE1BQU0sR0FBRyxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQzNDLE1BQU0sTUFBTSxHQUFHLFFBQVEsR0FBRyxjQUFjLENBQUM7WUFFekMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDakUsSUFBSSwrQkFBK0IsRUFBRTtnQkFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPO2FBQ1Y7U0FDSjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGNBQWMsSUFBSSxTQUFTLElBQUksZUFBZSxDQUFDO0lBQy9FLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2FBQ25CLFdBQVcsQ0FBQztZQUNULEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDbkIsQ0FBQzthQUNELFNBQVMsQ0FDTixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLEVBQ0QsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUM1RSxDQUFDO0lBQ1YsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVk7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87aUJBQ25CLFdBQVcsQ0FBQztnQkFDVCxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2FBQ3ZCLENBQUM7aUJBQ0QsU0FBUyxDQUNOLEdBQUcsRUFBRTtnQkFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkMsQ0FBQyxFQUNELEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FDNUUsQ0FBQztTQUNUO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQyx5QkFBeUIsRUFBRTtZQUN0QyxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUM7YUFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDO2FBQzdFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCx5QkFBeUI7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0RixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlGLENBQUM7OEdBaE5RLHFCQUFxQjtrR0FBckIscUJBQXFCLDZlQ2pDbEMsOGlQQXNKQTs7MkZEckhhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTt5TkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFpQjhDLGVBQWU7c0JBQW5FLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDUSxhQUFhO3NCQUEvRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgVXBkYXRlQXNzZXRJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEvcHJvdmlkZXJzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBc3NldExpa2UgfSBmcm9tICcuLi9hc3NldC1nYWxsZXJ5L2Fzc2V0LWdhbGxlcnkudHlwZXMnO1xyXG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ZvY2FsLXBvaW50LWNvbnRyb2wvZm9jYWwtcG9pbnQtY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYW5hZ2VUYWdzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFuYWdlLXRhZ3MtZGlhbG9nL21hbmFnZS10YWdzLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgUHJldmlld1ByZXNldCA9ICd0aW55JyB8ICd0aHVtYicgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWFzc2V0LXByZXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNzZXQtcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NldFByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBhc3NldDogQXNzZXRMaWtlO1xyXG4gICAgQElucHV0KCkgYXNzZXRzPzogQXNzZXRMaWtlW107XHJcbiAgICBASW5wdXQoKSBlZGl0YWJsZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSBjdXN0b21GaWVsZHNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xyXG4gICAgQE91dHB1dCgpIGFzc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxPbWl0PFVwZGF0ZUFzc2V0SW5wdXQsICdmb2NhbFBvaW50Jz4+KCk7XHJcbiAgICBAT3V0cHV0KCkgZWRpdENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICB0YWdzOiBbW10gYXMgc3RyaW5nW11dLFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2l6ZTogUHJldmlld1ByZXNldCA9ICdtZWRpdW0nO1xyXG4gICAgd2lkdGggPSAwO1xyXG4gICAgaGVpZ2h0ID0gMDtcclxuICAgIGNlbnRlcmVkID0gdHJ1ZTtcclxuICAgIHNldHRpbmdGb2NhbFBvaW50ID0gZmFsc2U7XHJcbiAgICBsYXN0Rm9jYWxQb2ludD86IFBvaW50O1xyXG4gICAgcHJldmlld0Fzc2V0SW5kZXggPSAwO1xyXG4gICAgZGlzYWJsZU5leHRCdXR0b24gPSBmYWxzZTtcclxuICAgIGRpc2FibGVQcmV2aW91c0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgc2hvd1NsaWRlQnV0dG9ucyA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpbWFnZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XHJcbiAgICBAVmlld0NoaWxkKCdwcmV2aWV3RGl2JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBwcmV2aWV3RGl2UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIHNpemVQcmlvclRvU2V0dGluZ0ZvY2FsUG9pbnQ6IFByZXZpZXdQcmVzZXQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIGdldCBmcHgoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZXQuZm9jYWxQb2ludCA/IHRoaXMuYXNzZXQuZm9jYWxQb2ludC54IDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZnB5KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFzc2V0LmZvY2FsUG9pbnQgPyB0aGlzLmFzc2V0LmZvY2FsUG9pbnQueSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY29uc3QgeyBmb2NhbFBvaW50IH0gPSB0aGlzLmFzc2V0O1xyXG4gICAgICAgIGlmICh0aGlzLmFzc2V0cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlQnV0dG9ucyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlld0Fzc2V0SW5kZXggPSB0aGlzLmFzc2V0cy5maW5kSW5kZXgoYXNzZXQgPT4gYXNzZXQuaWQgPT09IHRoaXMuYXNzZXQuaWQpIHx8IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVCdXR0b25zID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQnV0dG9uQWNjZXNzaWJpbGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkFjY2Vzc2liaWxpdHkoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCduYW1lJyk/LnNldFZhbHVlKHRoaXMuYXNzZXQubmFtZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgndGFncycpPy5zZXRWYWx1ZSh0aGlzLmFzc2V0LnRhZ3M/Lm1hcCh0ID0+IHQudmFsdWUpKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hc3NldENoYW5nZS5lbWl0KHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFzc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcclxuICAgICAgICAgICAgICAgIHRhZ3M6IHZhbHVlLnRhZ3MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRGltZW5zaW9ucygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRTb3VyY2VGaWxlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5hc3NldC5zb3VyY2Uuc3BsaXQoL1tcXFxcXFwvXS9nKTtcclxuICAgICAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcblxyXG4gICAgb25JbWFnZUxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEaW1lbnNpb25zKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEaW1lbnNpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IGltZyA9IHRoaXMuaW1hZ2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5wcmV2aWV3RGl2UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgaW1nV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGltZ0hlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpblRvQ29udGFpbmVyID0gdGhpcy5zZXR0aW5nRm9jYWxQb2ludDtcclxuICAgICAgICBpZiAoY29uc3RyYWluVG9Db250YWluZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udHJvbHNNYXJnaW5QeCA9IDQ4ICogMjtcclxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC0gY29udHJvbHNNYXJnaW5QeDtcclxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlV2lkdGggPSBjb250YWluZXJXaWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaFJhdGlvID0gaW1nSGVpZ2h0IC8gYXZhaWxhYmxlSGVpZ2h0O1xyXG4gICAgICAgICAgICBjb25zdCB3UmF0aW8gPSBpbWdXaWR0aCAvIGF2YWlsYWJsZVdpZHRoO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGNlZWRzQXZhaWxhYmxlRGltZW5zaW9ucyA9IDEgPCBoUmF0aW8gfHwgMSA8IHdSYXRpbztcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhjZWVkc0F2YWlsYWJsZURpbWVuc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhY3RvciA9IGhSYXRpbyA8IHdSYXRpbyA/IHdSYXRpbyA6IGhSYXRpbztcclxuICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSBNYXRoLnJvdW5kKGltZ1dpZHRoIC8gZmFjdG9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5yb3VuZChpbWdIZWlnaHQgLyBmYWN0b3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IGltZ1dpZHRoO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaW1nSGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuY2VudGVyZWQgPSBpbWdXaWR0aCA8PSBjb250YWluZXJXaWR0aCAmJiBpbWdIZWlnaHQgPD0gY29udGFpbmVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHNldEZvY2FsUG9pbnRTdGFydCgpIHtcclxuICAgICAgICB0aGlzLnNpemVQcmlvclRvU2V0dGluZ0ZvY2FsUG9pbnQgPSB0aGlzLnNpemU7XHJcbiAgICAgICAgdGhpcy5zaXplID0gJ21lZGl1bSc7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nRm9jYWxQb2ludCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sYXN0Rm9jYWxQb2ludCA9IHRoaXMuYXNzZXQuZm9jYWxQb2ludCB8fCB7IHg6IDAuNSwgeTogMC41IH07XHJcbiAgICAgICAgdGhpcy51cGRhdGVEaW1lbnNpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRm9jYWxQb2ludCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3RcclxuICAgICAgICAgICAgLnVwZGF0ZUFzc2V0KHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFzc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgZm9jYWxQb2ludDogbnVsbCxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdhc3NldC51cGRhdGUtZm9jYWwtcG9pbnQtc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2V0ID0geyAuLi50aGlzLmFzc2V0LCBmb2NhbFBvaW50OiBudWxsIH07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnYXNzZXQudXBkYXRlLWZvY2FsLXBvaW50LWVycm9yJykpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jYWxQb2ludENoYW5nZShwb2ludDogUG9pbnQpIHtcclxuICAgICAgICB0aGlzLmxhc3RGb2NhbFBvaW50ID0gcG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Rm9jYWxQb2ludENhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdGb2NhbFBvaW50ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sYXN0Rm9jYWxQb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnNpemUgPSB0aGlzLnNpemVQcmlvclRvU2V0dGluZ0ZvY2FsUG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Rm9jYWxQb2ludEVuZCgpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdGb2NhbFBvaW50ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy5zaXplUHJpb3JUb1NldHRpbmdGb2NhbFBvaW50O1xyXG4gICAgICAgIGlmICh0aGlzLmxhc3RGb2NhbFBvaW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5sYXN0Rm9jYWxQb2ludDtcclxuICAgICAgICAgICAgdGhpcy5sYXN0Rm9jYWxQb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAudXBkYXRlQXNzZXQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFzc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQ6IHsgeCwgeSB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdhc3NldC51cGRhdGUtZm9jYWwtcG9pbnQtc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NldCA9IHsgLi4udGhpcy5hc3NldCwgZm9jYWxQb2ludDogeyB4LCB5IH0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdhc3NldC51cGRhdGUtZm9jYWwtcG9pbnQtZXJyb3InKSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtYW5hZ2VUYWdzKCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KE1hbmFnZVRhZ3NEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIHNpemU6ICdzbScsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZWQtdGFncy1zdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0SW1hZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3QXNzZXRJbmRleCA9IHRoaXMucHJldmlld0Fzc2V0SW5kZXggKyAxO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFzc2V0ID0gdGhpcy5hc3NldHNbdGhpcy5wcmV2aWV3QXNzZXRJbmRleF07XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQnV0dG9uQWNjZXNzaWJpbGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcmV2aW91c0ltYWdlKCkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0Fzc2V0SW5kZXggPSB0aGlzLnByZXZpZXdBc3NldEluZGV4IC0gMTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcclxuICAgICAgICAgICAgdGhpcy5hc3NldCA9IHRoaXMuYXNzZXRzW3RoaXMucHJldmlld0Fzc2V0SW5kZXhdO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkFjY2Vzc2liaWxpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQnV0dG9uQWNjZXNzaWJpbGl0eSgpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVOZXh0QnV0dG9uID0gdGhpcy5hc3NldHM/Llt0aGlzLnByZXZpZXdBc3NldEluZGV4ICsgMV0/LmlkID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdGhpcy5hc3NldHM/Llt0aGlzLnByZXZpZXdBc3NldEluZGV4IC0gMV0/LmlkID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8dmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZWRpdGFibGVcIiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZ2hvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2NhdGFsb2cnLCAnYXNzZXRzJywgYXNzZXQuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdENsaWNrLmVtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWRpdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5lZGl0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImFycm93IHJpZ2h0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCAqbmdJZj1cImVkaXRhYmxlXCIgW2xhYmVsXT1cIidjb21tb24ubmFtZScgfCB0cmFuc2xhdGVcIiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoJ25hbWUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEoWydVcGRhdGVDYXRhbG9nJywgJ1VwZGF0ZUFzc2V0J10gfCBoYXNQZXJtaXNzaW9uKSB8fCBzZXR0aW5nRm9jYWxQb2ludFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8dmRyLWxhYmVsZWQtZGF0YSBbbGFiZWxdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiIWVkaXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsaWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgYXNzZXQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3Zkci1sYWJlbGVkLWRhdGE+XHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInYXNzZXQuc291cmNlLWZpbGUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJhc3NldC5zb3VyY2VcIiBbdGl0bGVdPVwiYXNzZXQuc291cmNlXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJlbGlkZSBzb3VyY2UtbGlua1wiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0U291cmNlRmlsZU5hbWUoKVxyXG4gICAgICAgICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICAgIDwvdmRyLWxhYmVsZWQtZGF0YT5cclxuXHJcbiAgICAgICAgICAgIDx2ZHItbGFiZWxlZC1kYXRhIFtsYWJlbF09XCInYXNzZXQub3JpZ2luYWwtYXNzZXQtc2l6ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGFzc2V0LmZpbGVTaXplIHwgZmlsZXNpemUgfX1cclxuICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidhc3NldC5kaW1lbnNpb25zJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgYXNzZXQud2lkdGggfX0geCB7eyBhc3NldC5oZWlnaHQgfX1cclxuICAgICAgICAgICAgPC92ZHItbGFiZWxlZC1kYXRhPlxyXG5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidhc3NldC5mb2NhbC1wb2ludCcgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZnB4XCJcclxuICAgICAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiY3Jvc3NoYWlyc1wiPjwvY2xyLWljb24+IHg6IHt7IGZweCB8IG51bWJlciA6ICcxLjItMicgfX0sIHk6XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZnB5IHwgbnVtYmVyIDogJzEuMi0yJyB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZnB4XCI+e3sgJ2NvbW1vbi5ub3Qtc2V0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsIG1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ0ZvY2FsUG9pbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Rm9jYWxQb2ludFN0YXJ0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmcHhcIj57eyAnYXNzZXQuc2V0LWZvY2FsLXBvaW50JyB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZnB4XCI+e3sgJ2Fzc2V0LnVwZGF0ZS1mb2NhbC1wb2ludCcgfCB0cmFuc2xhdGUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNldHRpbmdGb2NhbFBvaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGb2NhbFBvaW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnVuc2V0LWZvY2FsLXBvaW50JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWxhYmVsZWQtZGF0YT5cclxuICAgICAgICAgICAgPHZkci1sYWJlbGVkLWRhdGEgW2xhYmVsXT1cIidjb21tb24udGFncycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItdGFnLXNlbGVjdG9yIFtmb3JtQ29udHJvbF09XCJmb3JtLmdldCgndGFncycpXCI+PC92ZHItdGFnLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tc21hbGwgbXQtMVwiIChjbGljayk9XCJtYW5hZ2VUYWdzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidGFnc1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24ubWFuYWdlLXRhZ3MnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZWRpdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWNoaXAgKm5nRm9yPVwibGV0IHRhZyBvZiBhc3NldC50YWdzXCIgW2NvbG9yRnJvbV09XCJ0YWcudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidGFnXCIgY2xhc3M9XCJtcjJcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0YWcudmFsdWUgfX08L3Zkci1jaGlwXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWxhYmVsZWQtZGF0YT5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCAqbmdJZj1cImN1c3RvbUZpZWxkcy5sZW5ndGhcIiBbdGl0bGVdPVwiJ2NvbW1vbi5jdXN0b20tZmllbGRzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLXRhYmJlZC1jdXN0b20tZmllbGRzXHJcbiAgICAgICAgICAgICAgICBlbnRpdHlOYW1lPVwiQXNzZXRcIlxyXG4gICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImN1c3RvbUZpZWxkc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEoWydVcGRhdGVDYXRhbG9nJywgJ1VwZGF0ZUFzc2V0J10gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgID48L3Zkci10YWJiZWQtY3VzdG9tLWZpZWxkcz5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ2Fzc2V0LnByZXZpZXcnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInNpemVcIiBbZGlzYWJsZWRdPVwic2V0dGluZ0ZvY2FsUG9pbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidGlueVwiPnRpbnk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidGh1bWJcIj50aHVtYjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzbWFsbFwiPnNtYWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1lZGl1bVwiPm1lZGl1bTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXJnZVwiPmxhcmdlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPmZ1bGwgc2l6ZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NldC1kZXRhaWxcIj57eyB3aWR0aCB9fSB4IHt7IGhlaWdodCB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8dmRyLWFzc2V0LXByZXZpZXctbGlua3MgW2Fzc2V0XT1cImFzc2V0XCI+PC92ZHItYXNzZXQtcHJldmlldy1saW5rcz5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1wYWdlLWVudGl0eS1pbmZvICpuZ0lmPVwiYXNzZXQgYXMgZW50aXR5XCIgW2VudGl0eV09XCJlbnRpdHlcIj48L3Zkci1wYWdlLWVudGl0eS1pbmZvPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93U2xpZGVCdXR0b25zXCIgKGNsaWNrKT1cInByZXZpb3VzSW1hZ2UoKVwiIGNsYXNzPVwiY2Fyb3VzZWwtYnV0dG9uXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVQcmV2aW91c0J1dHRvblwiPlxyXG4gICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJjYXJldCBsZWZ0XCIgY2xhc3M9XCJjb2xvci13ZWlnaHQtODAwXCI+PC9jbHItaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1pbWFnZVwiICNwcmV2aWV3RGl2IFtjbGFzcy5jZW50ZXJlZF09XCJjZW50ZXJlZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Utd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb2NhbC1wb2ludC1jb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZweF09XCJmcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmcHldPVwiZnB5XCJcclxuICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwic2V0dGluZ0ZvY2FsUG9pbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChmb2NhbFBvaW50Q2hhbmdlKT1cIm9uRm9jYWxQb2ludENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXQtaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFzc2V0IHwgYXNzZXRQcmV2aWV3IDogc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjaW1hZ2VFbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2FkKT1cIm9uSW1hZ2VMb2FkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1mb2NhbC1wb2ludC1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvY2FsLXBvaW50LWluZm9cIiAqbmdJZj1cInNldHRpbmdGb2NhbFBvaW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZvY2FsUG9pbnRDYW5jZWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ0aW1lc1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0Rm9jYWxQb2ludEVuZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFsYXN0Rm9jYWxQb2ludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJjcm9zc2hhaXJzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Fzc2V0LnNldC1mb2NhbC1wb2ludCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1NsaWRlQnV0dG9uc1wiIChjbGljayk9XCJuZXh0SW1hZ2UoKVwiIGNsYXNzPVwiY2Fyb3VzZWwtYnV0dG9uXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVOZXh0QnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImNhcmV0IHJpZ2h0XCIgY2xhc3M9XCJjb2xvci13ZWlnaHQtODAwXCI+PC9jbHItaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L3Zkci1wYWdlLWRldGFpbC1sYXlvdXQ+XHJcbiJdfQ==
|