igniteui-angular 12.1.7 → 12.1.8

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.
@@ -12,6 +12,15 @@ import { InputResourceStringsEN } from './input-resources';
12
12
  import { TreeResourceStringsEN } from './tree-resources';
13
13
  /**
14
14
  * @hidden
15
+ * IF YOU EDIT THIS OBJECT, DO NOT FORGET TO UPDATE
16
+ * projects/igniteui-angular-i18n as well (create the appropriately named files,
17
+ * containing the new/updated component string keys and EN strings for values + create a separate issue + pending-localization label)
18
+ *
19
+ * TODO Add automation tests:
20
+ * 1) each of the folders/languages under \projects\igniteui-angular-i18n\src\ contain resources.ts file with matching components count.
21
+ * \projects\igniteui-angular-i18n\src\BG\resources.ts contains IgxResourceStringsBG.count matching this.CurrentResourceStrings.count
22
+ * 2) \igniteui-angular\projects\igniteui-angular\src\public_api.ts --> Check if the new interface is added
23
+ * to IInputResourceStrings (just a proxy as it is later on imported in the angular-i18n package)
15
24
  */
16
25
  export const CurrentResourceStrings = {
17
26
  GridResStrings: cloneValue(GridResourceStringsEN),
@@ -49,4 +58,4 @@ export const changei18n = (resourceStrings) => {
49
58
  */
50
59
  export const getCurrentResourceStrings = () => (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, CurrentResourceStrings.CalendarResStrings), CurrentResourceStrings.CarouselResStrings), CurrentResourceStrings.ChipResStrings), CurrentResourceStrings.DatePickerResourceStrings), CurrentResourceStrings.DateRangePickerResStrings), CurrentResourceStrings.GridResStrings), CurrentResourceStrings.InputResStrings), CurrentResourceStrings.ListResStrings), CurrentResourceStrings.PaginatorResStrings), CurrentResourceStrings.TimePickerResStrings), CurrentResourceStrings.TreeResStrings));
51
60
  export { ɵ0 };
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvcmUvaTE4bi9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUE4QixNQUFNLHlCQUF5QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBbUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNsSCxPQUFPLEVBQXdCLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0UsT0FBTyxFQUE4QiwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xHLE9BQU8sRUFBNkIsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBNEIseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQXdCLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0UsT0FBTyxFQUF3QixxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBNEIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQXlCLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUF3QixxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBTS9FOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDbEMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztJQUNqRCxtQkFBbUIsRUFBRSxVQUFVLENBQUMsMEJBQTBCLENBQUM7SUFDM0Qsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLDJCQUEyQixDQUFDO0lBQzdELGtCQUFrQixFQUFFLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQztJQUN6RCxjQUFjLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDO0lBQ2pELHlCQUF5QixFQUFFLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQztJQUNsRSx5QkFBeUIsRUFBRSxVQUFVLENBQUMsZ0NBQWdDLENBQUM7SUFDdkUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLHlCQUF5QixDQUFDO0lBQ3pELGNBQWMsRUFBRSxVQUFVLENBQUMscUJBQXFCLENBQUM7SUFDakQsZUFBZSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztJQUNuRCxjQUFjLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDO0NBQ3BELENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQUMsY0FBZ0MsRUFBRSxVQUE0QixFQUFFLEVBQUU7SUFDN0YsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3ZDLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRTtZQUN2QixjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pDO0tBQ0o7QUFDTCxDQUFDLENBQUM7O0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLGVBQWlDLEVBQUUsRUFBRTtJQUM1RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUNuRCxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztLQUN2RTtBQUNMLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBcUIsRUFBRSxDQUFDLCtKQUMxRCxzQkFBc0IsQ0FBQyxrQkFBa0IsR0FDekMsc0JBQXNCLENBQUMsa0JBQWtCLEdBQ3pDLHNCQUFzQixDQUFDLGNBQWMsR0FDckMsc0JBQXNCLENBQUMseUJBQXlCLEdBQ2hELHNCQUFzQixDQUFDLHlCQUF5QixHQUNoRCxzQkFBc0IsQ0FBQyxjQUFjLEdBQ3JDLHNCQUFzQixDQUFDLGVBQWUsR0FDdEMsc0JBQXNCLENBQUMsY0FBYyxHQUNyQyxzQkFBc0IsQ0FBQyxtQkFBbUIsR0FDMUMsc0JBQXNCLENBQUMsb0JBQW9CLEdBQzNDLHNCQUFzQixDQUFDLGNBQWMsRUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiwgSURhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuL2RhdGUtcGlja2VyLXJlc291cmNlcyc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiwgSURhdGVSYW5nZVBpY2tlclJlc291cmNlU3RyaW5ncyB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXItcmVzb3VyY2VzJztcbmltcG9ydCB7IElHcmlkUmVzb3VyY2VTdHJpbmdzLCBHcmlkUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuL2dyaWQtcmVzb3VyY2VzJztcbmltcG9ydCB7IElUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzLCBUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuL3RpbWUtcGlja2VyLXJlc291cmNlcyc7XG5pbXBvcnQgeyBJUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzLCBQYWdpbmF0b3JSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vcGFnaW5hdG9yLXJlc291cmNlcyc7XG5pbXBvcnQgeyBjbG9uZVZhbHVlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSUNhcm91c2VsUmVzb3VyY2VTdHJpbmdzLCBDYXJvdXNlbFJlc291cmNlU3RyaW5nc0VOIH0gZnJvbSAnLi9jYXJvdXNlbC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUNoaXBSZXNvdXJjZVN0cmluZ3MsIENoaXBSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vY2hpcC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUxpc3RSZXNvdXJjZVN0cmluZ3MsIExpc3RSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vbGlzdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJSZXNvdXJjZVN0cmluZ3NFTiwgSUNhbGVuZGFyUmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi9jYWxlbmRhci1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUlucHV0UmVzb3VyY2VTdHJpbmdzLCBJbnB1dFJlc291cmNlU3RyaW5nc0VOIH0gZnJvbSAnLi9pbnB1dC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSVRyZWVSZXNvdXJjZVN0cmluZ3MsIFRyZWVSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vdHJlZS1yZXNvdXJjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvdXJjZVN0cmluZ3MgZXh0ZW5kcyBJR3JpZFJlc291cmNlU3RyaW5ncywgSVRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3MsIElDYWxlbmRhclJlc291cmNlU3RyaW5ncyxcbiAgICBJQ2Fyb3VzZWxSZXNvdXJjZVN0cmluZ3MsIElDaGlwUmVzb3VyY2VTdHJpbmdzLCBJSW5wdXRSZXNvdXJjZVN0cmluZ3MsIElEYXRlUGlja2VyUmVzb3VyY2VTdHJpbmdzLCBJRGF0ZVJhbmdlUGlja2VyUmVzb3VyY2VTdHJpbmdzLFxuICAgIElMaXN0UmVzb3VyY2VTdHJpbmdzLCBJUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzLCBJVHJlZVJlc291cmNlU3RyaW5ncyB7IH1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBDdXJyZW50UmVzb3VyY2VTdHJpbmdzID0ge1xuICAgIEdyaWRSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKEdyaWRSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgUGFnaW5hdG9yUmVzU3RyaW5nczogY2xvbmVWYWx1ZShQYWdpbmF0b3JSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgVGltZVBpY2tlclJlc1N0cmluZ3M6IGNsb25lVmFsdWUoVGltZVBpY2tlclJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBDYWxlbmRhclJlc1N0cmluZ3M6IGNsb25lVmFsdWUoQ2FsZW5kYXJSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgQ2hpcFJlc1N0cmluZ3M6IGNsb25lVmFsdWUoQ2hpcFJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBEYXRlUGlja2VyUmVzb3VyY2VTdHJpbmdzOiBjbG9uZVZhbHVlKERhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgRGF0ZVJhbmdlUGlja2VyUmVzU3RyaW5nczogY2xvbmVWYWx1ZShEYXRlUmFuZ2VQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgQ2Fyb3VzZWxSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKENhcm91c2VsUmVzb3VyY2VTdHJpbmdzRU4pLFxuICAgIExpc3RSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKExpc3RSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgSW5wdXRSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKElucHV0UmVzb3VyY2VTdHJpbmdzRU4pLFxuICAgIFRyZWVSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKFRyZWVSZXNvdXJjZVN0cmluZ3NFTiksXG59O1xuXG5jb25zdCB1cGRhdGVSZXNvdXJjZVN0cmluZ3MgPSAoY3VycmVudFN0cmluZ3M6IElSZXNvdXJjZVN0cmluZ3MsIG5ld1N0cmluZ3M6IElSZXNvdXJjZVN0cmluZ3MpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdTdHJpbmdzKSkge1xuICAgICAgICBpZiAoa2V5IGluIGN1cnJlbnRTdHJpbmdzKSB7XG4gICAgICAgICAgICBjdXJyZW50U3RyaW5nc1trZXldID0gbmV3U3RyaW5nc1trZXldO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLyoqXG4gKiBDaGFuZ2VzIHRoZSByZXNvdXJjZSBzdHJpbmdzIGZvciBhbGwgY29tcG9uZW50cyBpbiB0aGUgYXBwbGljYXRpb25cbiAqIGBgYFxuICogQHBhcmFtIHJlc291cmNlU3RyaW5ncyB0byBiZSBhcHBsaWVkXG4gKi9cbmV4cG9ydCBjb25zdCBjaGFuZ2VpMThuID0gKHJlc291cmNlU3RyaW5nczogSVJlc291cmNlU3RyaW5ncykgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MpKSB7XG4gICAgICAgIHVwZGF0ZVJlc291cmNlU3RyaW5ncyhDdXJyZW50UmVzb3VyY2VTdHJpbmdzW2tleV0sIHJlc291cmNlU3RyaW5ncyk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIGN1cnJlbnQgcmVzb3VyY2Ugc3RyaW5ncyBmb3IgYWxsIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgPSAoKTogSVJlc291cmNlU3RyaW5ncyA9PiAoe1xuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuQ2FsZW5kYXJSZXNTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuQ2Fyb3VzZWxSZXNTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuQ2hpcFJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5EYXRlUGlja2VyUmVzb3VyY2VTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuRGF0ZVJhbmdlUGlja2VyUmVzU3RyaW5ncyxcbiAgICAuLi5DdXJyZW50UmVzb3VyY2VTdHJpbmdzLkdyaWRSZXNTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuSW5wdXRSZXNTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuTGlzdFJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5QYWdpbmF0b3JSZXNTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuVGltZVBpY2tlclJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5UcmVlUmVzU3RyaW5nc1xufSk7XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvcmUvaTE4bi9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUE4QixNQUFNLHlCQUF5QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBbUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNsSCxPQUFPLEVBQXdCLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0UsT0FBTyxFQUE4QiwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xHLE9BQU8sRUFBNkIsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBNEIseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQXdCLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0UsT0FBTyxFQUF3QixxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBNEIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQXlCLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUF3QixxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBTS9FOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDbEMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztJQUNqRCxtQkFBbUIsRUFBRSxVQUFVLENBQUMsMEJBQTBCLENBQUM7SUFDM0Qsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLDJCQUEyQixDQUFDO0lBQzdELGtCQUFrQixFQUFFLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQztJQUN6RCxjQUFjLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDO0lBQ2pELHlCQUF5QixFQUFFLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQztJQUNsRSx5QkFBeUIsRUFBRSxVQUFVLENBQUMsZ0NBQWdDLENBQUM7SUFDdkUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLHlCQUF5QixDQUFDO0lBQ3pELGNBQWMsRUFBRSxVQUFVLENBQUMscUJBQXFCLENBQUM7SUFDakQsZUFBZSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQztJQUNuRCxjQUFjLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDO0NBQ3BELENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQUMsY0FBZ0MsRUFBRSxVQUE0QixFQUFFLEVBQUU7SUFDN0YsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3ZDLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRTtZQUN2QixjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pDO0tBQ0o7QUFDTCxDQUFDLENBQUM7O0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLGVBQWlDLEVBQUUsRUFBRTtJQUM1RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRTtRQUNuRCxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztLQUN2RTtBQUNMLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBcUIsRUFBRSxDQUFDLCtKQUMxRCxzQkFBc0IsQ0FBQyxrQkFBa0IsR0FDekMsc0JBQXNCLENBQUMsa0JBQWtCLEdBQ3pDLHNCQUFzQixDQUFDLGNBQWMsR0FDckMsc0JBQXNCLENBQUMseUJBQXlCLEdBQ2hELHNCQUFzQixDQUFDLHlCQUF5QixHQUNoRCxzQkFBc0IsQ0FBQyxjQUFjLEdBQ3JDLHNCQUFzQixDQUFDLGVBQWUsR0FDdEMsc0JBQXNCLENBQUMsY0FBYyxHQUNyQyxzQkFBc0IsQ0FBQyxtQkFBbUIsR0FDMUMsc0JBQXNCLENBQUMsb0JBQW9CLEdBQzNDLHNCQUFzQixDQUFDLGNBQWMsRUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiwgSURhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuL2RhdGUtcGlja2VyLXJlc291cmNlcyc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiwgSURhdGVSYW5nZVBpY2tlclJlc291cmNlU3RyaW5ncyB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXItcmVzb3VyY2VzJztcbmltcG9ydCB7IElHcmlkUmVzb3VyY2VTdHJpbmdzLCBHcmlkUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuL2dyaWQtcmVzb3VyY2VzJztcbmltcG9ydCB7IElUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzLCBUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuL3RpbWUtcGlja2VyLXJlc291cmNlcyc7XG5pbXBvcnQgeyBJUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzLCBQYWdpbmF0b3JSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vcGFnaW5hdG9yLXJlc291cmNlcyc7XG5pbXBvcnQgeyBjbG9uZVZhbHVlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSUNhcm91c2VsUmVzb3VyY2VTdHJpbmdzLCBDYXJvdXNlbFJlc291cmNlU3RyaW5nc0VOIH0gZnJvbSAnLi9jYXJvdXNlbC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUNoaXBSZXNvdXJjZVN0cmluZ3MsIENoaXBSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vY2hpcC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUxpc3RSZXNvdXJjZVN0cmluZ3MsIExpc3RSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vbGlzdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJSZXNvdXJjZVN0cmluZ3NFTiwgSUNhbGVuZGFyUmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi9jYWxlbmRhci1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUlucHV0UmVzb3VyY2VTdHJpbmdzLCBJbnB1dFJlc291cmNlU3RyaW5nc0VOIH0gZnJvbSAnLi9pbnB1dC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSVRyZWVSZXNvdXJjZVN0cmluZ3MsIFRyZWVSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4vdHJlZS1yZXNvdXJjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvdXJjZVN0cmluZ3MgZXh0ZW5kcyBJR3JpZFJlc291cmNlU3RyaW5ncywgSVRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3MsIElDYWxlbmRhclJlc291cmNlU3RyaW5ncyxcbiAgICBJQ2Fyb3VzZWxSZXNvdXJjZVN0cmluZ3MsIElDaGlwUmVzb3VyY2VTdHJpbmdzLCBJSW5wdXRSZXNvdXJjZVN0cmluZ3MsIElEYXRlUGlja2VyUmVzb3VyY2VTdHJpbmdzLCBJRGF0ZVJhbmdlUGlja2VyUmVzb3VyY2VTdHJpbmdzLFxuICAgIElMaXN0UmVzb3VyY2VTdHJpbmdzLCBJUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzLCBJVHJlZVJlc291cmNlU3RyaW5ncyB7IH1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBJRiBZT1UgRURJVCBUSElTIE9CSkVDVCwgRE8gTk9UIEZPUkdFVCBUTyBVUERBVEVcbiAqIHByb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXItaTE4biBhcyB3ZWxsIChjcmVhdGUgdGhlIGFwcHJvcHJpYXRlbHkgbmFtZWQgZmlsZXMsXG4gKiBjb250YWluaW5nIHRoZSBuZXcvdXBkYXRlZCBjb21wb25lbnQgc3RyaW5nIGtleXMgYW5kIEVOIHN0cmluZ3MgZm9yIHZhbHVlcyArIGNyZWF0ZSBhIHNlcGFyYXRlIGlzc3VlICsgcGVuZGluZy1sb2NhbGl6YXRpb24gbGFiZWwpXG4gKlxuICogVE9ETyBBZGQgYXV0b21hdGlvbiB0ZXN0czpcbiAqIDEpIGVhY2ggb2YgdGhlIGZvbGRlcnMvbGFuZ3VhZ2VzIHVuZGVyIFxccHJvamVjdHNcXGlnbml0ZXVpLWFuZ3VsYXItaTE4blxcc3JjXFwgY29udGFpbiByZXNvdXJjZXMudHMgZmlsZSB3aXRoIG1hdGNoaW5nIGNvbXBvbmVudHMgY291bnQuXG4gKiAgICBcXHByb2plY3RzXFxpZ25pdGV1aS1hbmd1bGFyLWkxOG5cXHNyY1xcQkdcXHJlc291cmNlcy50cyBjb250YWlucyBJZ3hSZXNvdXJjZVN0cmluZ3NCRy5jb3VudCBtYXRjaGluZyB0aGlzLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuY291bnRcbiAqIDIpIFxcaWduaXRldWktYW5ndWxhclxccHJvamVjdHNcXGlnbml0ZXVpLWFuZ3VsYXJcXHNyY1xccHVibGljX2FwaS50cyAtLT4gQ2hlY2sgaWYgdGhlIG5ldyBpbnRlcmZhY2UgaXMgYWRkZWRcbiAqICAgIHRvIElJbnB1dFJlc291cmNlU3RyaW5ncyAoanVzdCBhIHByb3h5IGFzIGl0IGlzIGxhdGVyIG9uIGltcG9ydGVkIGluIHRoZSBhbmd1bGFyLWkxOG4gcGFja2FnZSlcbiAqL1xuZXhwb3J0IGNvbnN0IEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgPSB7XG4gICAgR3JpZFJlc1N0cmluZ3M6IGNsb25lVmFsdWUoR3JpZFJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBQYWdpbmF0b3JSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKFBhZ2luYXRvclJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBUaW1lUGlja2VyUmVzU3RyaW5nczogY2xvbmVWYWx1ZShUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzRU4pLFxuICAgIENhbGVuZGFyUmVzU3RyaW5nczogY2xvbmVWYWx1ZShDYWxlbmRhclJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBDaGlwUmVzU3RyaW5nczogY2xvbmVWYWx1ZShDaGlwUmVzb3VyY2VTdHJpbmdzRU4pLFxuICAgIERhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3M6IGNsb25lVmFsdWUoRGF0ZVBpY2tlclJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBEYXRlUmFuZ2VQaWNrZXJSZXNTdHJpbmdzOiBjbG9uZVZhbHVlKERhdGVSYW5nZVBpY2tlclJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBDYXJvdXNlbFJlc1N0cmluZ3M6IGNsb25lVmFsdWUoQ2Fyb3VzZWxSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgTGlzdFJlc1N0cmluZ3M6IGNsb25lVmFsdWUoTGlzdFJlc291cmNlU3RyaW5nc0VOKSxcbiAgICBJbnB1dFJlc1N0cmluZ3M6IGNsb25lVmFsdWUoSW5wdXRSZXNvdXJjZVN0cmluZ3NFTiksXG4gICAgVHJlZVJlc1N0cmluZ3M6IGNsb25lVmFsdWUoVHJlZVJlc291cmNlU3RyaW5nc0VOKSxcbn07XG5cbmNvbnN0IHVwZGF0ZVJlc291cmNlU3RyaW5ncyA9IChjdXJyZW50U3RyaW5nczogSVJlc291cmNlU3RyaW5ncywgbmV3U3RyaW5nczogSVJlc291cmNlU3RyaW5ncykgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5ld1N0cmluZ3MpKSB7XG4gICAgICAgIGlmIChrZXkgaW4gY3VycmVudFN0cmluZ3MpIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdzW2tleV0gPSBuZXdTdHJpbmdzW2tleV07XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vKipcbiAqIENoYW5nZXMgdGhlIHJlc291cmNlIHN0cmluZ3MgZm9yIGFsbCBjb21wb25lbnRzIGluIHRoZSBhcHBsaWNhdGlvblxuICogYGBgXG4gKiBAcGFyYW0gcmVzb3VyY2VTdHJpbmdzIHRvIGJlIGFwcGxpZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNoYW5nZWkxOG4gPSAocmVzb3VyY2VTdHJpbmdzOiBJUmVzb3VyY2VTdHJpbmdzKSA9PiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoQ3VycmVudFJlc291cmNlU3RyaW5ncykpIHtcbiAgICAgICAgdXBkYXRlUmVzb3VyY2VTdHJpbmdzKEN1cnJlbnRSZXNvdXJjZVN0cmluZ3Nba2V5XSwgcmVzb3VyY2VTdHJpbmdzKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgY3VycmVudCByZXNvdXJjZSBzdHJpbmdzIGZvciBhbGwgY29tcG9uZW50c1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudFJlc291cmNlU3RyaW5ncyA9ICgpOiBJUmVzb3VyY2VTdHJpbmdzID0+ICh7XG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5DYWxlbmRhclJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5DYXJvdXNlbFJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5DaGlwUmVzU3RyaW5ncyxcbiAgICAuLi5DdXJyZW50UmVzb3VyY2VTdHJpbmdzLkRhdGVQaWNrZXJSZXNvdXJjZVN0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5EYXRlUmFuZ2VQaWNrZXJSZXNTdHJpbmdzLFxuICAgIC4uLkN1cnJlbnRSZXNvdXJjZVN0cmluZ3MuR3JpZFJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5JbnB1dFJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5MaXN0UmVzU3RyaW5ncyxcbiAgICAuLi5DdXJyZW50UmVzb3VyY2VTdHJpbmdzLlBhZ2luYXRvclJlc1N0cmluZ3MsXG4gICAgLi4uQ3VycmVudFJlc291cmNlU3RyaW5ncy5UaW1lUGlja2VyUmVzU3RyaW5ncyxcbiAgICAuLi5DdXJyZW50UmVzb3VyY2VTdHJpbmdzLlRyZWVSZXNTdHJpbmdzXG59KTtcbiJdfQ==
@@ -426,6 +426,7 @@ export const yieldingLoop = (count, chunkSize, callback, done) => {
426
426
  };
427
427
  chunk();
428
428
  };
429
+ export const isConstructor = (ref) => typeof ref === 'function' && Boolean(ref.prototype) && Boolean(ref.prototype.constructor);
429
430
  export const reverseAnimationResolver = (animation) => { var _a; return (_a = oppositeAnimation.get(animation)) !== null && _a !== void 0 ? _a : animation; };
430
431
  export const isHorizontalAnimation = (animation) => horizontalAnimations.includes(animation);
431
432
  export const isVerticalAnimation = (animation) => verticalAnimations.includes(animation);
@@ -656,4 +657,4 @@ const verticalAnimations = [
656
657
  swingInBottomBck,
657
658
  swingOutBottomBck,
658
659
  ];
659
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFDSCxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDeEYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDNUYsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQzFGLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUNyRixZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDbkYsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFDbEYsY0FBYyxFQUFFLGVBQWUsRUFB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LGFBQWE7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbWVyZ2VXaXRoIGZyb20gJ2xvZGFzaC5tZXJnZXdpdGgnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXIgYXMgUG9seWZpbGwgfSBmcm9tICdAanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGJsaW5rLCBmYWRlSW4sIGZhZGVPdXQsIGZsaXBCb3R0b20sIGZsaXBIb3JCY2ssIGZsaXBIb3JGd2QsIGZsaXBMZWZ0LCBmbGlwUmlnaHQsIGZsaXBUb3AsXG4gICAgZmxpcFZlckJjaywgZmxpcFZlckZ3ZCwgZ3Jvd1ZlckluLCBncm93VmVyT3V0LCBoZWFydGJlYXQsIHB1bHNhdGVCY2ssIHB1bHNhdGVGd2QsIHJvdGF0ZUluQmwsXG4gICAgcm90YXRlSW5Cb3R0b20sIHJvdGF0ZUluQnIsIHJvdGF0ZUluQ2VudGVyLCByb3RhdGVJbkRpYWdvbmFsMSwgcm90YXRlSW5EaWFnb25hbDIsIHJvdGF0ZUluSG9yLFxuICAgIHJvdGF0ZUluTGVmdCwgcm90YXRlSW5SaWdodCwgcm90YXRlSW5UbCwgcm90YXRlSW5Ub3AsIHJvdGF0ZUluVHIsIHJvdGF0ZUluVmVyLCByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVPdXRCb3R0b20sIHJvdGF0ZU91dEJyLCByb3RhdGVPdXRDZW50ZXIsIHJvdGF0ZU91dERpYWdvbmFsMSwgcm90YXRlT3V0RGlhZ29uYWwyLFxuICAgIHJvdGF0ZU91dEhvciwgcm90YXRlT3V0TGVmdCwgcm90YXRlT3V0UmlnaHQsIHJvdGF0ZU91dFRsLCByb3RhdGVPdXRUb3AsIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZU91dFZlciwgc2NhbGVJbkJsLCBzY2FsZUluQm90dG9tLCBzY2FsZUluQnIsIHNjYWxlSW5DZW50ZXIsIHNjYWxlSW5Ib3JDZW50ZXIsXG4gICAgc2NhbGVJbkhvckxlZnQsIHNjYWxlSW5Ib3JSaWdodCwgc2NhbGVJbkxlZnQsIHNjYWxlSW5SaWdodCwgc2NhbGVJblRsLCBzY2FsZUluVG9wLCBzY2FsZUluVHIsXG4gICAgc2NhbGVJblZlckJvdHRvbSwgc2NhbGVJblZlckNlbnRlciwgc2NhbGVJblZlclRvcCwgc2NhbGVPdXRCbCwgc2NhbGVPdXRCb3R0b20sIHNjYWxlT3V0QnIsXG4gICAgc2NhbGVPdXRDZW50ZXIsIHNjYWxlT3V0SG9yQ2VudGVyLCBzY2FsZU91dEhvckxlZnQsIHNjYWxlT3V0SG9yUmlnaHQsIHNjYWxlT3V0TGVmdCxcbiAgICBzY2FsZU91dFJpZ2h0LCBzY2FsZU91dFRsLCBzY2FsZU91dFRvcCwgc2NhbGVPdXRUciwgc2NhbGVPdXRWZXJCb3R0b20sIHNjYWxlT3V0VmVyQ2VudGVyLFxuICAgIHNjYWxlT3V0VmVyVG9wLCBzaGFrZUJsLCBzaGFrZUJvdHRvbSwgc2hha2VCciwgc2hha2VDZW50ZXIsIHNoYWtlSG9yLCBzaGFrZUxlZnQsIHNoYWtlUmlnaHQsXG4gICAgc2hha2VUbCwgc2hha2VUb3AsIHNoYWtlVHIsIHNoYWtlVmVyLCBzbGlkZUluQmwsIHNsaWRlSW5Cb3R0b20sIHNsaWRlSW5Cciwgc2xpZGVJbkxlZnQsXG4gICAgc2xpZGVJblJpZ2h0LCBzbGlkZUluVGwsIHNsaWRlSW5Ub3AsIHNsaWRlSW5Uciwgc2xpZGVPdXRCbCwgc2xpZGVPdXRCb3R0b20sIHNsaWRlT3V0QnIsXG4gICAgc2xpZGVPdXRMZWZ0LCBzbGlkZU91dFJpZ2h0LCBzbGlkZU91dFRsLCBzbGlkZU91dFRvcCwgc2xpZGVPdXRUciwgc3dpbmdJbkJvdHRvbUJjayxcbiAgICBzd2luZ0luQm90dG9tRndkLCBzd2luZ0luTGVmdEJjaywgc3dpbmdJbkxlZnRGd2QsIHN3aW5nSW5SaWdodEJjaywgc3dpbmdJblJpZ2h0RndkLFxuICAgIHN3aW5nSW5Ub3BCY2ssIHN3aW5nSW5Ub3BGd2QsIHN3aW5nT3V0Qm90dG9tQmNrLCBzd2luZ091dEJvdHRvbUZ3ZCwgc3dpbmdPdXRMZWZ0QmNrLFxuICAgIHN3aW5nT3V0TGVmdHRGd2QsIHN3aW5nT3V0UmlnaHRCY2ssIHN3aW5nT3V0UmlnaHRGd2QsIHN3aW5nT3V0VG9wQmNrLCBzd2luZ091dFRvcEZ3ZFxufSBmcm9tICcuLi9hbmltYXRpb25zL21haW4nO1xuaW1wb3J0IHsgc2V0SW1tZWRpYXRlIH0gZnJvbSAnLi9zZXRJbW1lZGlhdGUnO1xuXG5leHBvcnQgY29uc3QgbWtlbnVtID0gPFQgZXh0ZW5kcyB7IFtpbmRleDogc3RyaW5nXTogVSB9LCBVIGV4dGVuZHMgc3RyaW5nPih4OiBUKSA9PiB4O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIFJlc2l6ZU9ic2VydmVyIHR5cGUgb3IgdGhlIHBvbHlmaWxsZWQgdmVyc2lvbiBpZiBub3QgYXZhaWxhYmxlLlxuICpcbiAqIEBoaWRkZW4gQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVPYnNlcnZlciA9ICgpID0+IHdpbmRvdy5SZXNpemVPYnNlcnZlciB8fCBQb2x5ZmlsbDtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBjbG9uZUFycmF5ID0gKGFycmF5OiBhbnlbXSwgZGVlcD86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBhcnIgPSBbXTtcbiAgICBpZiAoIWFycmF5KSB7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGxldCBpID0gYXJyYXkubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgYXJyW2ldID0gZGVlcCA/IGNsb25lVmFsdWUoYXJyYXlbaV0pIDogYXJyYXlbaV07XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG4vKipcbiAqIERvZXNuJ3QgY2xvbmUgbGVhZiBpdGVtc1xuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lSGllcmFyY2hpY2FsQXJyYXkgPSAoYXJyYXk6IGFueVtdLCBjaGlsZERhdGFLZXk6IGFueSk6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgaWYgKCFhcnJheSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xuICAgICAgICBjb25zdCBjbG9uZWRJdGVtID0gY2xvbmVWYWx1ZShpdGVtKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbVtjaGlsZERhdGFLZXldKSkge1xuICAgICAgICAgICAgY2xvbmVkSXRlbVtjaGlsZERhdGFLZXldID0gY2xvbmVIaWVyYXJjaGljYWxBcnJheShjbG9uZWRJdGVtW2NoaWxkRGF0YUtleV0sIGNoaWxkRGF0YUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnB1c2goY2xvbmVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERlZXAgY2xvbmVzIGFsbCBmaXJzdCBsZXZlbCBrZXlzIG9mIE9iajIgYW5kIG1lcmdlcyB0aGVtIHRvIE9iajFcbiAqXG4gKiBAcGFyYW0gb2JqMSBPYmplY3QgdG8gbWVyZ2UgaW50b1xuICogQHBhcmFtIG9iajIgT2JqZWN0IHRvIG1lcmdlIGZyb21cbiAqIEByZXR1cm5zIE9iajEgd2l0aCBtZXJnZWQgY2xvbmVkIGtleXMgZnJvbSBPYmoyXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZU9iamVjdHMgPSAob2JqMTogYW55LCBvYmoyOiBhbnkpOiBhbnkgPT4gbWVyZ2VXaXRoKG9iajEsIG9iajIsIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG9ialZhbHVlID0gc3JjVmFsdWU7XG4gICAgfVxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyBkZWVwIGNsb25lIG9mIHByb3ZpZGVkIHZhbHVlLlxuICogU3VwcG9ydHMgcHJpbWl0aXZlIHZhbHVlcywgZGF0ZXMgYW5kIG9iamVjdHMuXG4gKiBJZiBwYXNzZWQgdmFsdWUgaXMgYXJyYXkgcmV0dXJucyBzaGFsbG93IGNvcHkgb2YgdGhlIGFycmF5LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBjbG9uZVxuICogQHJldHVybnMgRGVlcCBjb3B5IG9mIHByb3ZpZGVkIHZhbHVlXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBjbG9uZVZhbHVlID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFsuLi52YWx1ZV07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwIHx8IHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBjbG9uZVZhbHVlKHZhbHVlW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbi8qKlxuICogUGFyc2UgcHJvdmlkZWQgaW5wdXQgdG8gRGF0ZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgaW5wdXQgdG8gcGFyc2VcbiAqIEByZXR1cm5zIERhdGUgaWYgcGFyc2Ugc3VjY2VlZCBvciBudWxsXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZURhdGUgPSAodmFsdWU6IGFueSk6IERhdGUgfCBudWxsID0+IHtcbiAgICAvLyBpZiB2YWx1ZSBpcyBJbnZhbGlkIERhdGUgcmV0dXJuIG51bGxcbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHZhbHVlLmdldFRpbWUoKSkgPyB2YWx1ZSA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgd2l0aCB1bmlxdWUgZGF0ZXMgb25seS5cbiAqXG4gKiBAcGFyYW0gY29sdW1uVmFsdWVzIGNvbGxlY3Rpb24gb2YgZGF0ZSB2YWx1ZXMgKG1pZ2h0IGJlIG51bWJlcnMgb3IgSVNPIDg2MDEgc3RyaW5ncylcbiAqIEByZXR1cm5zIGNvbGxlY3Rpb24gb2YgdW5pcXVlIGRhdGVzLlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgdW5pcXVlRGF0ZXMgPSAoY29sdW1uVmFsdWVzOiBhbnlbXSkgPT4gY29sdW1uVmFsdWVzLnJlZHVjZSgoYSwgYykgPT4ge1xuICAgIGlmICghYS5jYWNoZVtjLmxhYmVsXSkge1xuICAgICAgICBhLnJlc3VsdC5wdXNoKGMpO1xuICAgIH1cbiAgICBhLmNhY2hlW2MubGFiZWxdID0gdHJ1ZTtcbiAgICByZXR1cm4gYTtcbn0sIHsgcmVzdWx0OiBbXSwgY2FjaGU6IHt9IH0pLnJlc3VsdDtcblxuLyoqXG4gKiBDaGVja3MgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgT2JqZWN0XG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIE9iamVjdFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4gdmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIERhdGVcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgRGF0ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNEYXRlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEYXRlID0+IHZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHR3byBwYXNzZWQgYXJndW1lbnRzIGFyZSBlcXVhbFxuICogQ3VycmVudGx5IHN1cHBvcnRzIGRhdGUgb2JqZWN0c1xuICpcbiAqIEBwYXJhbSBvYmoxXG4gKiBAcGFyYW0gb2JqMlxuICogQHJldHVybnM6IGBib29sZWFuYFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNFcXVhbCA9IChvYmoxLCBvYmoyKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKGlzRGF0ZShvYmoxKSAmJiBpc0RhdGUob2JqMikpIHtcbiAgICAgICAgcmV0dXJuIG9iajEuZ2V0VGltZSgpID09PSBvYmoyLmdldFRpbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajEgPT09IG9iajI7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgc2VydmljZSB0YWtpbmcgY2FyZSBvZiB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIHN1Y2ggYXNcbiAqIGRldGVjdGluZyBicm93c2VyIGZlYXR1cmVzLCBnZW5lcmFsIGNyb3NzIGJyb3dzZXIgRE9NIG1hbmlwdWxhdGlvbiwgZXRjLlxuICpcbiAqIEBoaWRkZW4gQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1VdGlsIHtcbiAgICBwdWJsaWMgaXNCcm93c2VyOiBib29sZWFuID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICBwdWJsaWMgaXNJT1MgPSB0aGlzLmlzQnJvd3NlciAmJiAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAhKCdNU1N0cmVhbScgaW4gd2luZG93KTtcbiAgICBwdWJsaWMgaXNGaXJlZm94ID0gdGhpcy5pc0Jyb3dzZXIgJiYgL0ZpcmVmb3hbXFwvXFxzXShcXGQrXFwuXFxkKykvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgcHVibGljIGlzRWRnZSA9IHRoaXMuaXNCcm93c2VyICYmIC9FZGdlW1xcL1xcc10oXFxkK1xcLlxcZCspLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIHB1YmxpYyBpc0lFID0gdGhpcy5pc0Jyb3dzZXIgJiYgbmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignVHJpZGVudC8nKSA+IDA7XG4gICAgcHVibGljIGlzQ2hyb21pdW0gPSB0aGlzLmlzQnJvd3NlciAmJiAoL0Nocm9tfGU/aXVtL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSB8fFxuICAgIC9Hb29nbGUgSW5jL2cudGVzdChuYXZpZ2F0b3IudmVuZG9yKSkgJiYgIS9FZGdlL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICAgIHB1YmxpYyBLRVlNQVAgPSBta2VudW0oe1xuICAgICAgICBFTlRFUjogJ0VudGVyJyxcbiAgICAgICAgU1BBQ0U6IHRoaXMuaXNJRSA/ICdTcGFjZWJhcicgOiAnICcsXG4gICAgICAgIEVTQ0FQRTogdGhpcy5pc0lFID8gJ0VzYycgOiAnRXNjYXBlJyxcbiAgICAgICAgQVJST1dfRE9XTjogdGhpcy5pc0lFID8gJ0Rvd24nIDogJ0Fycm93RG93bicsXG4gICAgICAgIEFSUk9XX1VQOiB0aGlzLmlzSUUgPyAnVXAnIDogJ0Fycm93VXAnLFxuICAgICAgICBBUlJPV19MRUZUOiB0aGlzLmlzSUUgPyAnTGVmdCcgOiAnQXJyb3dMZWZ0JyxcbiAgICAgICAgQVJST1dfUklHSFQ6IHRoaXMuaXNJRSA/ICdSaWdodCcgOiAnQXJyb3dSaWdodCcsXG4gICAgICAgIEVORDogJ0VuZCcsXG4gICAgICAgIEhPTUU6ICdIb21lJyxcbiAgICAgICAgUEFHRV9ET1dOOiAnUGFnZURvd24nLFxuICAgICAgICBQQUdFX1VQOiAnUGFnZVVwJyxcbiAgICAgICAgRjI6ICdGMicsXG4gICAgICAgIFRBQjogJ1RhYicsXG4gICAgICAgIFNFTUlDT0xPTjogJzsnLFxuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcyNlZGl0aW5nX2tleXNcbiAgICAgICAgREVMRVRFOiB0aGlzLmlzSUUgPyAnRGVsJyA6ICdEZWxldGUnLFxuICAgICAgICBCQUNLU1BBQ0U6ICdCYWNrc3BhY2UnLFxuICAgICAgICBDT05UUk9MOiAnQ29udHJvbCcsXG4gICAgICAgIFg6ICd4JyxcbiAgICAgICAgWTogJ3knLFxuICAgICAgICBaOiAneidcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55KSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogUmV0dXJucyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIG5vZGUgY29udGVudCwgdXNpbmcgUmFuZ2VcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgKiBsZXQgY29sdW1uID0gdGhpcy5ncmlkLmNvbHVtbkxpc3QuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ0lEJylbMF07XG4gICAgICpcbiAgICAgKiBsZXQgc2l6ZSA9IGdldE5vZGVTaXplVmlhUmFuZ2UocmFuZ2UsIGNvbHVtbi5jZWxsc1swXS5uYXRpdmVFbGVtZW50KTtcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhlIGxhc3QgcGFyYW1ldGVyIGlzIHVzZWZ1bCB3aGVuIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50IHRvIG1lYXN1cmUgaXMgbW9kaWZpZWQgYnkgYVxuICAgICAqIHBhcmVudCBlbGVtZW50IHRoYXQgaGFzIGV4cGxpY2l0IHNpemUuIEluIHN1Y2ggY2FzZXMgdGhlIGNhbGN1bGF0ZWQgc2l6ZSBpcyBuZXZlciBsb3dlclxuICAgICAqIGFuZCB0aGUgZnVuY3Rpb24gbWF5IGluc3RlYWQgcmVtb3ZlIHRoZSBwYXJlbnQgc2l6ZSB3aGlsZSBtZWFzdXJpbmcgdG8gZ2V0IHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgICBwdWJsaWMgZ2V0Tm9kZVNpemVWaWFSYW5nZShyYW5nZTogUmFuZ2UsIG5vZGU6IEhUTUxFbGVtZW50LCBzaXplSG9sZGluZ05vZGU/OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBsZXQgb3ZlcmZsb3cgPSBudWxsO1xuICAgICAgICBsZXQgbm9kZVN0eWxlcztcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9IG5vZGUuc3R5bGUub3ZlcmZsb3c7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpemVIb2xkaW5nTm9kZSkge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBzaXplSG9sZGluZ05vZGUuc3R5bGU7XG4gICAgICAgICAgICBub2RlU3R5bGVzID0gWyBzdHlsZS53aWR0aCwgc3R5bGUubWluV2lkdGgsIHN0eWxlLmZsZXhCYXNpcyBdO1xuICAgICAgICAgICAgc3R5bGUud2lkdGggPSAnJztcbiAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gJyc7XG4gICAgICAgICAgICBzdHlsZS5mbGV4QmFzaXMgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2l6ZUhvbGRpbmdOb2RlKSB7XG4gICAgICAgICAgICBzaXplSG9sZGluZ05vZGUuc3R5bGUud2lkdGggPSBub2RlU3R5bGVzWzBdO1xuICAgICAgICAgICAgc2l6ZUhvbGRpbmdOb2RlLnN0eWxlLm1pbldpZHRoID0gbm9kZVN0eWxlc1sxXTtcbiAgICAgICAgICAgIHNpemVIb2xkaW5nTm9kZS5zdHlsZS5mbGV4QmFzaXMgPSBub2RlU3R5bGVzWzJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGFuIGFjdGl2YXRpb24ga2V5IChFbnRlci9TcGFjZSBiYXIpXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGxhdGZvcm1VdGlsXG4gICAgICovXG4gICAgcHVibGljIGlzQWN0aXZhdGlvbktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FTlRFUiB8fCBldmVudC5rZXkgPT09IHRoaXMuS0VZTUFQLlNQQUNFO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBrZXlib2FyZCBldmVudCBpcyBhIGNvbWJpbmF0aW9uIHRoYXQgY2xvc2VzIHRoZSBmaWx0ZXJpbmcgVUkgb2YgdGhlIGdyaWQuIChFc2NhcGUvQ3RybCtTaGlmdCtMKVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqIEBtZW1iZXJvZiBQbGF0Zm9ybVV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGaWx0ZXJpbmdLZXlDb21ibyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FU0NBUEUgfHwgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMZWZ0Q2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc05hdmlnYXRpb25LZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuS0VZTUFQLkhPTUUsIHRoaXMuS0VZTUFQLkVORCwgdGhpcy5LRVlNQVAuU1BBQ0UsXG4gICAgICAgICAgICB0aGlzLktFWU1BUC5BUlJPV19ET1dOLCB0aGlzLktFWU1BUC5BUlJPV19MRUZULCB0aGlzLktFWU1BUC5BUlJPV19SSUdIVCwgdGhpcy5LRVlNQVAuQVJST1dfVVBcbiAgICAgICAgXS5pbmNsdWRlcyhrZXkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuID0gKGFycjogYW55W10pID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG5cbiAgICBhcnIuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVsKTtcbiAgICAgICAgaWYgKGVsLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pID8gZWwuY2hpbGRyZW4gOiBlbC5jaGlsZHJlbi50b0FycmF5KCk7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGZsYXR0ZW4oY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNhbmNlbCB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIG93bmVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvd25lcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKiBCcm93c2VyIGV2ZW50ICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgY29uc3QgSE9SSVpPTlRBTF9OQVZfS0VZUyA9IG5ldyBTZXQoWydhcnJvd2xlZnQnLCAnbGVmdCcsICdhcnJvd3JpZ2h0JywgJ3JpZ2h0JywgJ2hvbWUnLCAnZW5kJ10pO1xuXG5leHBvcnQgY29uc3QgTkFWSUdBVElPTl9LRVlTID0gbmV3IFNldChbXG4gICAgJ2Rvd24nLFxuICAgICd1cCcsXG4gICAgJ2xlZnQnLFxuICAgICdyaWdodCcsXG4gICAgJ2Fycm93ZG93bicsXG4gICAgJ2Fycm93dXAnLFxuICAgICdhcnJvd2xlZnQnLFxuICAgICdhcnJvd3JpZ2h0JyxcbiAgICAnaG9tZScsXG4gICAgJ2VuZCcsXG4gICAgJ3NwYWNlJyxcbiAgICAnc3BhY2ViYXInLFxuICAgICcgJ1xuXSk7XG5leHBvcnQgY29uc3QgQUNDT1JESU9OX05BVklHQVRJT05fS0VZUyA9IG5ldyBTZXQoJ3VwIGRvd24gYXJyb3d1cCBhcnJvd2Rvd24gaG9tZSBlbmQnLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19FWFBBTkRfS0VZUyA9IG5ldyBTZXQoJ3JpZ2h0IGRvd24gYXJyb3dyaWdodCBhcnJvd2Rvd24nLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19DT0xMQVBTRV9LRVlTID0gbmV3IFNldCgnbGVmdCB1cCBhcnJvd2xlZnQgYXJyb3d1cCcuc3BsaXQoJyAnKSk7XG5leHBvcnQgY29uc3QgUk9XX0FERF9LRVlTID0gbmV3IFNldChbJysnLCAnYWRkJywgJ+KJoCcsICfCsScsICc9J10pO1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9LRVlTID0gbmV3IFNldChbLi4uQXJyYXkuZnJvbShOQVZJR0FUSU9OX0tFWVMpLFxuLi4uQXJyYXkuZnJvbShST1dfQUREX0tFWVMpLCAnZW50ZXInLCAnZjInLCAnZXNjYXBlJywgJ2VzYycsICdwYWdlZG93bicsICdwYWdldXAnXSk7XG5leHBvcnQgY29uc3QgSEVBREVSX0tFWVMgPSBuZXcgU2V0KFsuLi5BcnJheS5mcm9tKE5BVklHQVRJT05fS0VZUyksICdlc2NhcGUnLCAnZXNjJywgJ2wnLFxuICAgIC8qKiBUaGlzIHN5bWJvbCBjb3JyZXNwb25kcyB0byB0aGUgQWx0ICsgTCBjb21iaW5hdGlvbiB1bmRlciBNQUMuICovXG4gICAgJ8KsJ10pO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIENyZWF0ZXMgYSBuZXcgUmVzaXplT2JzZXJ2ZXIgb24gYHRhcmdldGAgYW5kIHJldHVybnMgaXQgYXMgYW4gT2JzZXJ2YWJsZS5cbiAqIFJ1biB0aGUgcmVzaXplT2JzZXJ2YWJsZSBvdXRzaWRlIGFuZ3VsYXIgem9uZSwgYmVjYXVzZSBpdCBwYXRjaGVzIHRoZSBNdXRhdGlvbk9ic2VydmVyIHdoaWNoIGNhdXNlcyBhbiBpbmZpbml0ZSBsb29wLlxuICogUmVsYXRlZCBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzE3MTJcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2l6ZU9ic2VydmFibGUgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiA9PiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAoZ2V0UmVzaXplT2JzZXJ2ZXIoKSkoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KGVudHJpZXMpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm9ic2VydmUodGFyZ2V0KTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IGluc3RhbmNlLmRpc2Nvbm5lY3QoKTtcbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG59KTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBDb21wYXJlcyB0d28gbWFwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBhcmVNYXBzID0gKG1hcDE6IE1hcDxhbnksIGFueT4sIG1hcDI6IE1hcDxhbnksIGFueT4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIW1hcDIpIHtcbiAgICAgICAgcmV0dXJuICFtYXAxID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobWFwMS5zaXplICE9PSBtYXAyLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgbWF0Y2ggPSB0cnVlO1xuICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKG1hcDIua2V5cygpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChtYXAxLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hcDEuZ2V0KGtleSkgPT09IG1hcDIuZ2V0KGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRjaDtcbn07XG5cbi8qKlxuICpcbiAqIEdpdmVuIGEgcHJvcGVydHkgYWNjZXNzIHBhdGggaW4gdGhlIGZvcm1hdCBgeC55LnpgIHJlc29sdmVzIGFuZCByZXR1cm5zXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGB6YCBwcm9wZXJ0eSBpbiB0aGUgcGFzc2VkIG9iamVjdC5cbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVOZXN0ZWRQYXRoID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGg/LnNwbGl0KCcuJykgPz8gW107XG4gICAgbGV0IGN1cnJlbnQgPSBvYmpbcGFydHMuc2hpZnQoKV07XG5cbiAgICBwYXJ0cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcHJvcF07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjdXJyZW50O1xufTtcblxuLyoqXG4gKlxuICogR2l2ZW4gYSBwcm9wZXJ0eSBhY2Nlc3MgcGF0aCBpbiB0aGUgZm9ybWF0IGB4LnkuemAgYW5kIGEgdmFsdWVcbiAqIHRoaXMgZnVuY3Rpb25zIGJ1aWxkcyBhbmQgcmV0dXJucyBhbiBvYmplY3QgZm9sbG93aW5nIHRoZSBhY2Nlc3MgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc29sZS5sb2coJ3gueS56LicsIDQyKTtcbiAqID4+IHsgeDogeyB5OiB7IHo6IDQyIH0gfSB9XG4gKiBgYGBcbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJldmVyc2VNYXBwZXIgPSAocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgY29uc3QgcGFydHMgPSBwYXRoPy5zcGxpdCgnLicpID8/IFtdO1xuXG4gICAgbGV0IF9wcm9wID0gcGFydHMuc2hpZnQoKTtcbiAgICBsZXQgbWFwcGluZzogYW55O1xuXG4gICAgLy8gSW5pdGlhbCBiaW5kaW5nIGZvciBmaXJzdCBsZXZlbCBiaW5kaW5nc1xuICAgIG9ialtfcHJvcF0gPSB2YWx1ZTtcbiAgICBtYXBwaW5nID0gb2JqO1xuXG4gICAgcGFydHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgLy8gU3RhcnQgYnVpbGRpbmcgdGhlIGhpZXJhcmNoeVxuICAgICAgICBtYXBwaW5nW19wcm9wXSA9IHt9O1xuICAgICAgICAvLyBHbyBkb3duIGEgbGV2ZWxcbiAgICAgICAgbWFwcGluZyA9IG1hcHBpbmdbX3Byb3BdO1xuICAgICAgICAvLyBCaW5kIHRoZSB2YWx1ZSBhbmQgbW92ZSB0aGUga2V5XG4gICAgICAgIG1hcHBpbmdbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgX3Byb3AgPSBwcm9wO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydCBjb25zdCB5aWVsZGluZ0xvb3AgPSAoY291bnQ6IG51bWJlciwgY2h1bmtTaXplOiBudW1iZXIsIGNhbGxiYWNrOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZCwgZG9uZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBjaHVuayA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oaSArIGNodW5rU2l6ZSwgY291bnQpO1xuICAgICAgICBmb3IgKDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IGNvdW50KSB7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoY2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjaHVuaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJldmVyc2VBbmltYXRpb25SZXNvbHZlciA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEgPT5cbiAgICBvcHBvc2l0ZUFuaW1hdGlvbi5nZXQoYW5pbWF0aW9uKSA/PyBhbmltYXRpb247XG5cbmV4cG9ydCBjb25zdCBpc0hvcml6b250YWxBbmltYXRpb24gPSAoYW5pbWF0aW9uOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSk6IGJvb2xlYW4gPT4gaG9yaXpvbnRhbEFuaW1hdGlvbnMuaW5jbHVkZXMoYW5pbWF0aW9uKTtcblxuZXhwb3J0IGNvbnN0IGlzVmVydGljYWxBbmltYXRpb24gPSAoYW5pbWF0aW9uOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSk6IGJvb2xlYW4gPT4gdmVydGljYWxBbmltYXRpb25zLmluY2x1ZGVzKGFuaW1hdGlvbik7XG5cbmNvbnN0IG9wcG9zaXRlQW5pbWF0aW9uOiBNYXA8QW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEsIEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhPiA9IG5ldyBNYXAoW1xuICAgIFtmYWRlSW4sIGZhZGVJbl0sXG4gICAgW2ZhZGVPdXQsIGZhZGVPdXRdLFxuICAgIFtmbGlwVG9wLCBmbGlwQm90dG9tXSxcbiAgICBbZmxpcEJvdHRvbSwgZmxpcFRvcF0sXG4gICAgW2ZsaXBSaWdodCwgZmxpcExlZnRdLFxuICAgIFtmbGlwTGVmdCwgZmxpcFJpZ2h0XSxcbiAgICBbZmxpcEhvckZ3ZCwgZmxpcEhvckJja10sXG4gICAgW2ZsaXBIb3JCY2ssIGZsaXBIb3JGd2RdLFxuICAgIFtmbGlwVmVyRndkLCBmbGlwVmVyQmNrXSxcbiAgICBbZmxpcFZlckJjaywgZmxpcFZlckZ3ZF0sXG4gICAgW2dyb3dWZXJJbiwgZ3Jvd1ZlckluXSxcbiAgICBbZ3Jvd1Zlck91dCwgZ3Jvd1Zlck91dF0sXG4gICAgW2hlYXJ0YmVhdCwgaGVhcnRiZWF0XSxcbiAgICBbcHVsc2F0ZUZ3ZCwgcHVsc2F0ZUJja10sXG4gICAgW3B1bHNhdGVCY2ssIHB1bHNhdGVGd2RdLFxuICAgIFtibGluaywgYmxpbmtdLFxuICAgIFtzaGFrZUhvciwgc2hha2VIb3JdLFxuICAgIFtzaGFrZVZlciwgc2hha2VWZXJdLFxuICAgIFtzaGFrZVRvcCwgc2hha2VUb3BdLFxuICAgIFtzaGFrZUJvdHRvbSwgc2hha2VCb3R0b21dLFxuICAgIFtzaGFrZVJpZ2h0LCBzaGFrZVJpZ2h0XSxcbiAgICBbc2hha2VMZWZ0LCBzaGFrZUxlZnRdLFxuICAgIFtzaGFrZUNlbnRlciwgc2hha2VDZW50ZXJdLFxuICAgIFtzaGFrZVRyLCBzaGFrZVRyXSxcbiAgICBbc2hha2VCciwgc2hha2VCcl0sXG4gICAgW3NoYWtlQmwsIHNoYWtlQmxdLFxuICAgIFtzaGFrZVRsLCBzaGFrZVRsXSxcbiAgICBbcm90YXRlSW5DZW50ZXIsIHJvdGF0ZUluQ2VudGVyXSxcbiAgICBbcm90YXRlT3V0Q2VudGVyLCByb3RhdGVPdXRDZW50ZXJdLFxuICAgIFtyb3RhdGVJblRvcCwgcm90YXRlSW5Cb3R0b21dLFxuICAgIFtyb3RhdGVPdXRUb3AsIHJvdGF0ZU91dEJvdHRvbV0sXG4gICAgW3JvdGF0ZUluUmlnaHQsIHJvdGF0ZUluTGVmdF0sXG4gICAgW3JvdGF0ZU91dFJpZ2h0LCByb3RhdGVPdXRMZWZ0XSxcbiAgICBbcm90YXRlSW5MZWZ0LCByb3RhdGVJblJpZ2h0XSxcbiAgICBbcm90YXRlT3V0TGVmdCwgcm90YXRlT3V0UmlnaHRdLFxuICAgIFtyb3RhdGVJbkJvdHRvbSwgcm90YXRlSW5Ub3BdLFxuICAgIFtyb3RhdGVPdXRCb3R0b20sIHJvdGF0ZU91dFRvcF0sXG4gICAgW3JvdGF0ZUluVHIsIHJvdGF0ZUluQmxdLFxuICAgIFtyb3RhdGVPdXRUciwgcm90YXRlT3V0QmxdLFxuICAgIFtyb3RhdGVJbkJyLCByb3RhdGVJblRsXSxcbiAgICBbcm90YXRlT3V0QnIsIHJvdGF0ZU91dFRsXSxcbiAgICBbcm90YXRlSW5CbCwgcm90YXRlSW5Ucl0sXG4gICAgW3JvdGF0ZU91dEJsLCByb3RhdGVPdXRUcl0sXG4gICAgW3JvdGF0ZUluVGwsIHJvdGF0ZUluQnJdLFxuICAgIFtyb3RhdGVPdXRUbCwgcm90YXRlT3V0QnJdLFxuICAgIFtyb3RhdGVJbkRpYWdvbmFsMSwgcm90YXRlSW5EaWFnb25hbDFdLFxuICAgIFtyb3RhdGVPdXREaWFnb25hbDEsIHJvdGF0ZU91dERpYWdvbmFsMV0sXG4gICAgW3JvdGF0ZUluRGlhZ29uYWwyLCByb3RhdGVJbkRpYWdvbmFsMl0sXG4gICAgW3JvdGF0ZU91dERpYWdvbmFsMiwgcm90YXRlT3V0RGlhZ29uYWwyXSxcbiAgICBbcm90YXRlSW5Ib3IsIHJvdGF0ZUluSG9yXSxcbiAgICBbcm90YXRlT3V0SG9yLCByb3RhdGVPdXRIb3JdLFxuICAgIFtyb3RhdGVJblZlciwgcm90YXRlSW5WZXJdLFxuICAgIFtyb3RhdGVPdXRWZXIsIHJvdGF0ZU91dFZlcl0sXG4gICAgW3NjYWxlSW5Ub3AsIHNjYWxlSW5Cb3R0b21dLFxuICAgIFtzY2FsZU91dFRvcCwgc2NhbGVPdXRCb3R0b21dLFxuICAgIFtzY2FsZUluUmlnaHQsIHNjYWxlSW5MZWZ0XSxcbiAgICBbc2NhbGVPdXRSaWdodCwgc2NhbGVPdXRMZWZ0XSxcbiAgICBbc2NhbGVJbkJvdHRvbSwgc2NhbGVJblRvcF0sXG4gICAgW3NjYWxlT3V0Qm90dG9tLCBzY2FsZU91dFRvcF0sXG4gICAgW3NjYWxlSW5MZWZ0LCBzY2FsZUluUmlnaHRdLFxuICAgIFtzY2FsZU91dExlZnQsIHNjYWxlT3V0UmlnaHRdLFxuICAgIFtzY2FsZUluQ2VudGVyLCBzY2FsZUluQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRDZW50ZXIsIHNjYWxlT3V0Q2VudGVyXSxcbiAgICBbc2NhbGVJblRyLCBzY2FsZUluQmxdLFxuICAgIFtzY2FsZU91dFRyLCBzY2FsZU91dEJsXSxcbiAgICBbc2NhbGVJbkJyLCBzY2FsZUluVGxdLFxuICAgIFtzY2FsZU91dEJyLCBzY2FsZU91dFRsXSxcbiAgICBbc2NhbGVJbkJsLCBzY2FsZUluVHJdLFxuICAgIFtzY2FsZU91dEJsLCBzY2FsZU91dFRyXSxcbiAgICBbc2NhbGVJblRsLCBzY2FsZUluQnJdLFxuICAgIFtzY2FsZU91dFRsLCBzY2FsZU91dEJyXSxcbiAgICBbc2NhbGVJblZlclRvcCwgc2NhbGVJblZlckJvdHRvbV0sXG4gICAgW3NjYWxlT3V0VmVyVG9wLCBzY2FsZU91dFZlckJvdHRvbV0sXG4gICAgW3NjYWxlSW5WZXJCb3R0b20sIHNjYWxlSW5WZXJUb3BdLFxuICAgIFtzY2FsZU91dFZlckJvdHRvbSwgc2NhbGVPdXRWZXJUb3BdLFxuICAgIFtzY2FsZUluVmVyQ2VudGVyLCBzY2FsZUluVmVyQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRWZXJDZW50ZXIsIHNjYWxlT3V0VmVyQ2VudGVyXSxcbiAgICBbc2NhbGVJbkhvckNlbnRlciwgc2NhbGVJbkhvckNlbnRlcl0sXG4gICAgW3NjYWxlT3V0SG9yQ2VudGVyLCBzY2FsZU91dEhvckNlbnRlcl0sXG4gICAgW3NjYWxlSW5Ib3JMZWZ0LCBzY2FsZUluSG9yUmlnaHRdLFxuICAgIFtzY2FsZU91dEhvckxlZnQsIHNjYWxlT3V0SG9yUmlnaHRdLFxuICAgIFtzY2FsZUluSG9yUmlnaHQsIHNjYWxlSW5Ib3JMZWZ0XSxcbiAgICBbc2NhbGVPdXRIb3JSaWdodCwgc2NhbGVPdXRIb3JMZWZ0XSxcbiAgICBbc2xpZGVJblRvcCwgc2xpZGVJbkJvdHRvbV0sXG4gICAgW3NsaWRlT3V0VG9wLCBzbGlkZU91dEJvdHRvbV0sXG4gICAgW3NsaWRlSW5SaWdodCwgc2xpZGVJbkxlZnRdLFxuICAgIFtzbGlkZU91dFJpZ2h0LCBzbGlkZU91dExlZnRdLFxuICAgIFtzbGlkZUluQm90dG9tLCBzbGlkZUluVG9wXSxcbiAgICBbc2xpZGVPdXRCb3R0b20sIHNsaWRlT3V0VG9wXSxcbiAgICBbc2xpZGVJbkxlZnQsIHNsaWRlSW5SaWdodF0sXG4gICAgW3NsaWRlT3V0TGVmdCwgc2xpZGVPdXRSaWdodF0sXG4gICAgW3NsaWRlSW5Uciwgc2xpZGVJbkJsXSxcbiAgICBbc2xpZGVPdXRUciwgc2xpZGVPdXRCbF0sXG4gICAgW3NsaWRlSW5Cciwgc2xpZGVJblRsXSxcbiAgICBbc2xpZGVPdXRCciwgc2xpZGVPdXRUbF0sXG4gICAgW3NsaWRlSW5CbCwgc2xpZGVJblRyXSxcbiAgICBbc2xpZGVPdXRCbCwgc2xpZGVPdXRUcl0sXG4gICAgW3NsaWRlSW5UbCwgc2xpZGVJbkJyXSxcbiAgICBbc2xpZGVPdXRUbCwgc2xpZGVPdXRCcl0sXG4gICAgW3N3aW5nSW5Ub3BGd2QsIHN3aW5nSW5Cb3R0b21Gd2RdLFxuICAgIFtzd2luZ091dFRvcEZ3ZCwgc3dpbmdPdXRCb3R0b21Gd2RdLFxuICAgIFtzd2luZ0luUmlnaHRGd2QsIHN3aW5nSW5MZWZ0RndkXSxcbiAgICBbc3dpbmdPdXRSaWdodEZ3ZCwgc3dpbmdPdXRMZWZ0dEZ3ZF0sXG4gICAgW3N3aW5nSW5MZWZ0RndkLCBzd2luZ0luUmlnaHRGd2RdLFxuICAgIFtzd2luZ091dExlZnR0RndkLCBzd2luZ091dFJpZ2h0RndkXSxcbiAgICBbc3dpbmdJbkJvdHRvbUZ3ZCwgc3dpbmdJblRvcEZ3ZF0sXG4gICAgW3N3aW5nT3V0Qm90dG9tRndkLCBzd2luZ091dFRvcEZ3ZF0sXG4gICAgW3N3aW5nSW5Ub3BCY2ssIHN3aW5nSW5Cb3R0b21CY2tdLFxuICAgIFtzd2luZ091dFRvcEJjaywgc3dpbmdPdXRCb3R0b21CY2tdLFxuICAgIFtzd2luZ0luUmlnaHRCY2ssIHN3aW5nSW5MZWZ0QmNrXSxcbiAgICBbc3dpbmdPdXRSaWdodEJjaywgc3dpbmdPdXRMZWZ0QmNrXSxcbiAgICBbc3dpbmdJbkJvdHRvbUJjaywgc3dpbmdJblRvcEJja10sXG4gICAgW3N3aW5nT3V0Qm90dG9tQmNrLCBzd2luZ091dFRvcEJja10sXG4gICAgW3N3aW5nSW5MZWZ0QmNrLCBzd2luZ0luUmlnaHRCY2tdLFxuICAgIFtzd2luZ091dExlZnRCY2ssIHN3aW5nT3V0UmlnaHRCY2tdLFxuXSk7XG5cbmNvbnN0IGhvcml6b250YWxBbmltYXRpb25zOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YVtdID0gW1xuICAgIGZsaXBSaWdodCxcbiAgICBmbGlwTGVmdCxcbiAgICBmbGlwVmVyRndkLFxuICAgIGZsaXBWZXJCY2ssXG4gICAgcm90YXRlSW5SaWdodCxcbiAgICByb3RhdGVPdXRSaWdodCxcbiAgICByb3RhdGVJbkxlZnQsXG4gICAgcm90YXRlT3V0TGVmdCxcbiAgICByb3RhdGVJblRyLFxuICAgIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZUluQnIsXG4gICAgcm90YXRlT3V0QnIsXG4gICAgcm90YXRlSW5CbCxcbiAgICByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVJblRsLFxuICAgIHJvdGF0ZU91dFRsLFxuICAgIHNjYWxlSW5SaWdodCxcbiAgICBzY2FsZU91dFJpZ2h0LFxuICAgIHNjYWxlSW5MZWZ0LFxuICAgIHNjYWxlT3V0TGVmdCxcbiAgICBzY2FsZUluVHIsXG4gICAgc2NhbGVPdXRUcixcbiAgICBzY2FsZUluQnIsXG4gICAgc2NhbGVPdXRCcixcbiAgICBzY2FsZUluQmwsXG4gICAgc2NhbGVPdXRCbCxcbiAgICBzY2FsZUluVGwsXG4gICAgc2NhbGVPdXRUbCxcbiAgICBzY2FsZUluSG9yTGVmdCxcbiAgICBzY2FsZU91dEhvckxlZnQsXG4gICAgc2NhbGVJbkhvclJpZ2h0LFxuICAgIHNjYWxlT3V0SG9yUmlnaHQsXG4gICAgc2xpZGVJblJpZ2h0LFxuICAgIHNsaWRlT3V0UmlnaHQsXG4gICAgc2xpZGVJbkxlZnQsXG4gICAgc2xpZGVPdXRMZWZ0LFxuICAgIHNsaWRlSW5UcixcbiAgICBzbGlkZU91dFRyLFxuICAgIHNsaWRlSW5CcixcbiAgICBzbGlkZU91dEJyLFxuICAgIHNsaWRlSW5CbCxcbiAgICBzbGlkZU91dEJsLFxuICAgIHNsaWRlSW5UbCxcbiAgICBzbGlkZU91dFRsLFxuICAgIHN3aW5nSW5SaWdodEZ3ZCxcbiAgICBzd2luZ091dFJpZ2h0RndkLFxuICAgIHN3aW5nSW5MZWZ0RndkLFxuICAgIHN3aW5nT3V0TGVmdHRGd2QsXG4gICAgc3dpbmdJblJpZ2h0QmNrLFxuICAgIHN3aW5nT3V0UmlnaHRCY2ssXG4gICAgc3dpbmdJbkxlZnRCY2ssXG4gICAgc3dpbmdPdXRMZWZ0QmNrLFxuXTtcbmNvbnN0IHZlcnRpY2FsQW5pbWF0aW9uczogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGFbXSA9IFtcbiAgICBmbGlwVG9wLFxuICAgIGZsaXBCb3R0b20sXG4gICAgZmxpcEhvckZ3ZCxcbiAgICBmbGlwSG9yQmNrLFxuICAgIGdyb3dWZXJJbixcbiAgICBncm93VmVyT3V0LFxuICAgIHJvdGF0ZUluVG9wLFxuICAgIHJvdGF0ZU91dFRvcCxcbiAgICByb3RhdGVJbkJvdHRvbSxcbiAgICByb3RhdGVPdXRCb3R0b20sXG4gICAgcm90YXRlSW5UcixcbiAgICByb3RhdGVPdXRUcixcbiAgICByb3RhdGVJbkJyLFxuICAgIHJvdGF0ZU91dEJyLFxuICAgIHJvdGF0ZUluQmwsXG4gICAgcm90YXRlT3V0QmwsXG4gICAgcm90YXRlSW5UbCxcbiAgICByb3RhdGVPdXRUbCxcbiAgICBzY2FsZUluVG9wLFxuICAgIHNjYWxlT3V0VG9wLFxuICAgIHNjYWxlSW5Cb3R0b20sXG4gICAgc2NhbGVPdXRCb3R0b20sXG4gICAgc2NhbGVJblRyLFxuICAgIHNjYWxlT3V0VHIsXG4gICAgc2NhbGVJbkJyLFxuICAgIHNjYWxlT3V0QnIsXG4gICAgc2NhbGVJbkJsLFxuICAgIHNjYWxlT3V0QmwsXG4gICAgc2NhbGVJblRsLFxuICAgIHNjYWxlT3V0VGwsXG4gICAgc2NhbGVJblZlclRvcCxcbiAgICBzY2FsZU91dFZlclRvcCxcbiAgICBzY2FsZUluVmVyQm90dG9tLFxuICAgIHNjYWxlT3V0VmVyQm90dG9tLFxuICAgIHNsaWRlSW5Ub3AsXG4gICAgc2xpZGVPdXRUb3AsXG4gICAgc2xpZGVJbkJvdHRvbSxcbiAgICBzbGlkZU91dEJvdHRvbSxcbiAgICBzbGlkZUluVHIsXG4gICAgc2xpZGVPdXRUcixcbiAgICBzbGlkZUluQnIsXG4gICAgc2xpZGVPdXRCcixcbiAgICBzbGlkZUluQmwsXG4gICAgc2xpZGVPdXRCbCxcbiAgICBzbGlkZUluVGwsXG4gICAgc2xpZGVPdXRUbCxcbiAgICBzd2luZ0luVG9wRndkLFxuICAgIHN3aW5nT3V0VG9wRndkLFxuICAgIHN3aW5nSW5Cb3R0b21Gd2QsXG4gICAgc3dpbmdPdXRCb3R0b21Gd2QsXG4gICAgc3dpbmdJblRvcEJjayxcbiAgICBzd2luZ091dFRvcEJjayxcbiAgICBzd2luZ0luQm90dG9tQmNrLFxuICAgIHN3aW5nT3V0Qm90dG9tQmNrLFxuXTtcbiJdfQ==
660
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFDSCxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDeEYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDNUYsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQzFGLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUNyRixZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDbkYsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFDbEYsY0FBYyxFQUFFLGVBQWUsRUFB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O0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLFdBQVc7SUFDWCxhQUFhO0lBQ2IsY0FBYztJQUNkLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsYUFBYTtJQUNiLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtZXJnZVdpdGggZnJvbSAnbG9kYXNoLm1lcmdld2l0aCc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlciBhcyBQb2x5ZmlsbCB9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgYmxpbmssIGZhZGVJbiwgZmFkZU91dCwgZmxpcEJvdHRvbSwgZmxpcEhvckJjaywgZmxpcEhvckZ3ZCwgZmxpcExlZnQsIGZsaXBSaWdodCwgZmxpcFRvcCxcbiAgICBmbGlwVmVyQmNrLCBmbGlwVmVyRndkLCBncm93VmVySW4sIGdyb3dWZXJPdXQsIGhlYXJ0YmVhdCwgcHVsc2F0ZUJjaywgcHVsc2F0ZUZ3ZCwgcm90YXRlSW5CbCxcbiAgICByb3RhdGVJbkJvdHRvbSwgcm90YXRlSW5Cciwgcm90YXRlSW5DZW50ZXIsIHJvdGF0ZUluRGlhZ29uYWwxLCByb3RhdGVJbkRpYWdvbmFsMiwgcm90YXRlSW5Ib3IsXG4gICAgcm90YXRlSW5MZWZ0LCByb3RhdGVJblJpZ2h0LCByb3RhdGVJblRsLCByb3RhdGVJblRvcCwgcm90YXRlSW5Uciwgcm90YXRlSW5WZXIsIHJvdGF0ZU91dEJsLFxuICAgIHJvdGF0ZU91dEJvdHRvbSwgcm90YXRlT3V0QnIsIHJvdGF0ZU91dENlbnRlciwgcm90YXRlT3V0RGlhZ29uYWwxLCByb3RhdGVPdXREaWFnb25hbDIsXG4gICAgcm90YXRlT3V0SG9yLCByb3RhdGVPdXRMZWZ0LCByb3RhdGVPdXRSaWdodCwgcm90YXRlT3V0VGwsIHJvdGF0ZU91dFRvcCwgcm90YXRlT3V0VHIsXG4gICAgcm90YXRlT3V0VmVyLCBzY2FsZUluQmwsIHNjYWxlSW5Cb3R0b20sIHNjYWxlSW5Cciwgc2NhbGVJbkNlbnRlciwgc2NhbGVJbkhvckNlbnRlcixcbiAgICBzY2FsZUluSG9yTGVmdCwgc2NhbGVJbkhvclJpZ2h0LCBzY2FsZUluTGVmdCwgc2NhbGVJblJpZ2h0LCBzY2FsZUluVGwsIHNjYWxlSW5Ub3AsIHNjYWxlSW5UcixcbiAgICBzY2FsZUluVmVyQm90dG9tLCBzY2FsZUluVmVyQ2VudGVyLCBzY2FsZUluVmVyVG9wLCBzY2FsZU91dEJsLCBzY2FsZU91dEJvdHRvbSwgc2NhbGVPdXRCcixcbiAgICBzY2FsZU91dENlbnRlciwgc2NhbGVPdXRIb3JDZW50ZXIsIHNjYWxlT3V0SG9yTGVmdCwgc2NhbGVPdXRIb3JSaWdodCwgc2NhbGVPdXRMZWZ0LFxuICAgIHNjYWxlT3V0UmlnaHQsIHNjYWxlT3V0VGwsIHNjYWxlT3V0VG9wLCBzY2FsZU91dFRyLCBzY2FsZU91dFZlckJvdHRvbSwgc2NhbGVPdXRWZXJDZW50ZXIsXG4gICAgc2NhbGVPdXRWZXJUb3AsIHNoYWtlQmwsIHNoYWtlQm90dG9tLCBzaGFrZUJyLCBzaGFrZUNlbnRlciwgc2hha2VIb3IsIHNoYWtlTGVmdCwgc2hha2VSaWdodCxcbiAgICBzaGFrZVRsLCBzaGFrZVRvcCwgc2hha2VUciwgc2hha2VWZXIsIHNsaWRlSW5CbCwgc2xpZGVJbkJvdHRvbSwgc2xpZGVJbkJyLCBzbGlkZUluTGVmdCxcbiAgICBzbGlkZUluUmlnaHQsIHNsaWRlSW5UbCwgc2xpZGVJblRvcCwgc2xpZGVJblRyLCBzbGlkZU91dEJsLCBzbGlkZU91dEJvdHRvbSwgc2xpZGVPdXRCcixcbiAgICBzbGlkZU91dExlZnQsIHNsaWRlT3V0UmlnaHQsIHNsaWRlT3V0VGwsIHNsaWRlT3V0VG9wLCBzbGlkZU91dFRyLCBzd2luZ0luQm90dG9tQmNrLFxuICAgIHN3aW5nSW5Cb3R0b21Gd2QsIHN3aW5nSW5MZWZ0QmNrLCBzd2luZ0luTGVmdEZ3ZCwgc3dpbmdJblJpZ2h0QmNrLCBzd2luZ0luUmlnaHRGd2QsXG4gICAgc3dpbmdJblRvcEJjaywgc3dpbmdJblRvcEZ3ZCwgc3dpbmdPdXRCb3R0b21CY2ssIHN3aW5nT3V0Qm90dG9tRndkLCBzd2luZ091dExlZnRCY2ssXG4gICAgc3dpbmdPdXRMZWZ0dEZ3ZCwgc3dpbmdPdXRSaWdodEJjaywgc3dpbmdPdXRSaWdodEZ3ZCwgc3dpbmdPdXRUb3BCY2ssIHN3aW5nT3V0VG9wRndkXG59IGZyb20gJy4uL2FuaW1hdGlvbnMvbWFpbic7XG5pbXBvcnQgeyBzZXRJbW1lZGlhdGUgfSBmcm9tICcuL3NldEltbWVkaWF0ZSc7XG5cbmV4cG9ydCBjb25zdCBta2VudW0gPSA8VCBleHRlbmRzIHsgW2luZGV4OiBzdHJpbmddOiBVIH0sIFUgZXh0ZW5kcyBzdHJpbmc+KHg6IFQpID0+IHg7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgUmVzaXplT2JzZXJ2ZXIgdHlwZSBvciB0aGUgcG9seWZpbGxlZCB2ZXJzaW9uIGlmIG5vdCBhdmFpbGFibGUuXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZU9ic2VydmVyID0gKCkgPT4gd2luZG93LlJlc2l6ZU9ic2VydmVyIHx8IFBvbHlmaWxsO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lQXJyYXkgPSAoYXJyYXk6IGFueVtdLCBkZWVwPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGFyciA9IFtdO1xuICAgIGlmICghYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgbGV0IGkgPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBhcnJbaV0gPSBkZWVwID8gY2xvbmVWYWx1ZShhcnJheVtpXSkgOiBhcnJheVtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8qKlxuICogRG9lc24ndCBjbG9uZSBsZWFmIGl0ZW1zXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVIaWVyYXJjaGljYWxBcnJheSA9IChhcnJheTogYW55W10sIGNoaWxkRGF0YUtleTogYW55KTogYW55W10gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBpZiAoIWFycmF5KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGNsb25lZEl0ZW0gPSBjbG9uZVZhbHVlKGl0ZW0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtW2NoaWxkRGF0YUtleV0pKSB7XG4gICAgICAgICAgICBjbG9uZWRJdGVtW2NoaWxkRGF0YUtleV0gPSBjbG9uZUhpZXJhcmNoaWNhbEFycmF5KGNsb25lZEl0ZW1bY2hpbGREYXRhS2V5XSwgY2hpbGREYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChjbG9uZWRJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogRGVlcCBjbG9uZXMgYWxsIGZpcnN0IGxldmVsIGtleXMgb2YgT2JqMiBhbmQgbWVyZ2VzIHRoZW0gdG8gT2JqMVxuICpcbiAqIEBwYXJhbSBvYmoxIE9iamVjdCB0byBtZXJnZSBpbnRvXG4gKiBAcGFyYW0gb2JqMiBPYmplY3QgdG8gbWVyZ2UgZnJvbVxuICogQHJldHVybnMgT2JqMSB3aXRoIG1lcmdlZCBjbG9uZWQga2V5cyBmcm9tIE9iajJcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlT2JqZWN0cyA9IChvYmoxOiBhbnksIG9iajI6IGFueSk6IGFueSA9PiBtZXJnZVdpdGgob2JqMSwgb2JqMiwgKG9ialZhbHVlLCBzcmNWYWx1ZSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gb2JqVmFsdWUgPSBzcmNWYWx1ZTtcbiAgICB9XG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGRlZXAgY2xvbmUgb2YgcHJvdmlkZWQgdmFsdWUuXG4gKiBTdXBwb3J0cyBwcmltaXRpdmUgdmFsdWVzLCBkYXRlcyBhbmQgb2JqZWN0cy5cbiAqIElmIHBhc3NlZCB2YWx1ZSBpcyBhcnJheSByZXR1cm5zIHNoYWxsb3cgY29weSBvZiB0aGUgYXJyYXkuXG4gKlxuICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIGNsb25lXG4gKiBAcmV0dXJucyBEZWVwIGNvcHkgb2YgcHJvdmlkZWQgdmFsdWVcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lVmFsdWUgPSAodmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSk7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gWy4uLnZhbHVlXTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXAgfHwgdmFsdWUgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IGNsb25lVmFsdWUodmFsdWVba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBQYXJzZSBwcm92aWRlZCBpbnB1dCB0byBEYXRlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBpbnB1dCB0byBwYXJzZVxuICogQHJldHVybnMgRGF0ZSBpZiBwYXJzZSBzdWNjZWVkIG9yIG51bGxcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRGF0ZSA9ICh2YWx1ZTogYW55KTogRGF0ZSB8IG51bGwgPT4ge1xuICAgIC8vIGlmIHZhbHVlIGlzIEludmFsaWQgRGF0ZSByZXR1cm4gbnVsbFxuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKSA/IHZhbHVlIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBhcnJheSB3aXRoIHVuaXF1ZSBkYXRlcyBvbmx5LlxuICpcbiAqIEBwYXJhbSBjb2x1bW5WYWx1ZXMgY29sbGVjdGlvbiBvZiBkYXRlIHZhbHVlcyAobWlnaHQgYmUgbnVtYmVycyBvciBJU08gODYwMSBzdHJpbmdzKVxuICogQHJldHVybnMgY29sbGVjdGlvbiBvZiB1bmlxdWUgZGF0ZXMuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCB1bmlxdWVEYXRlcyA9IChjb2x1bW5WYWx1ZXM6IGFueVtdKSA9PiBjb2x1bW5WYWx1ZXMucmVkdWNlKChhLCBjKSA9PiB7XG4gICAgaWYgKCFhLmNhY2hlW2MubGFiZWxdKSB7XG4gICAgICAgIGEucmVzdWx0LnB1c2goYyk7XG4gICAgfVxuICAgIGEuY2FjaGVbYy5sYWJlbF0gPSB0cnVlO1xuICAgIHJldHVybiBhO1xufSwgeyByZXN1bHQ6IFtdLCBjYWNoZToge30gfSkucmVzdWx0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBPYmplY3RcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgT2JqZWN0XG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiB2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpID09PSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgRGF0ZVxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBEYXRlXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RhdGUgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIERhdGUgPT4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgdHdvIHBhc3NlZCBhcmd1bWVudHMgYXJlIGVxdWFsXG4gKiBDdXJyZW50bHkgc3VwcG9ydHMgZGF0ZSBvYmplY3RzXG4gKlxuICogQHBhcmFtIG9iajFcbiAqIEBwYXJhbSBvYmoyXG4gKiBAcmV0dXJuczogYGJvb2xlYW5gXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKG9iajEsIG9iajIpOiBib29sZWFuID0+IHtcbiAgICBpZiAoaXNEYXRlKG9iajEpICYmIGlzRGF0ZShvYmoyKSkge1xuICAgICAgICByZXR1cm4gb2JqMS5nZXRUaW1lKCkgPT09IG9iajIuZ2V0VGltZSgpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqMSA9PT0gb2JqMjtcbn07XG5cbi8qKlxuICogVXRpbGl0eSBzZXJ2aWNlIHRha2luZyBjYXJlIG9mIHZhcmlvdXMgdXRpbGl0eSBmdW5jdGlvbnMgc3VjaCBhc1xuICogZGV0ZWN0aW5nIGJyb3dzZXIgZmVhdHVyZXMsIGdlbmVyYWwgY3Jvc3MgYnJvd3NlciBET00gbWFuaXB1bGF0aW9uLCBldGMuXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVV0aWwge1xuICAgIHB1YmxpYyBpc0Jyb3dzZXI6IGJvb2xlYW4gPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgIHB1YmxpYyBpc0lPUyA9IHRoaXMuaXNCcm93c2VyICYmIC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICEoJ01TU3RyZWFtJyBpbiB3aW5kb3cpO1xuICAgIHB1YmxpYyBpc0ZpcmVmb3ggPSB0aGlzLmlzQnJvd3NlciAmJiAvRmlyZWZveFtcXC9cXHNdKFxcZCtcXC5cXGQrKS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICBwdWJsaWMgaXNFZGdlID0gdGhpcy5pc0Jyb3dzZXIgJiYgL0VkZ2VbXFwvXFxzXShcXGQrXFwuXFxkKykvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgcHVibGljIGlzSUUgPSB0aGlzLmlzQnJvd3NlciAmJiBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdUcmlkZW50LycpID4gMDtcbiAgICBwdWJsaWMgaXNDaHJvbWl1bSA9IHRoaXMuaXNCcm93c2VyICYmICgvQ2hyb218ZT9pdW0vZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpIHx8XG4gICAgL0dvb2dsZSBJbmMvZy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpKSAmJiAhL0VkZ2UvZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4gICAgcHVibGljIEtFWU1BUCA9IG1rZW51bSh7XG4gICAgICAgIEVOVEVSOiAnRW50ZXInLFxuICAgICAgICBTUEFDRTogdGhpcy5pc0lFID8gJ1NwYWNlYmFyJyA6ICcgJyxcbiAgICAgICAgRVNDQVBFOiB0aGlzLmlzSUUgPyAnRXNjJyA6ICdFc2NhcGUnLFxuICAgICAgICBBUlJPV19ET1dOOiB0aGlzLmlzSUUgPyAnRG93bicgOiAnQXJyb3dEb3duJyxcbiAgICAgICAgQVJST1dfVVA6IHRoaXMuaXNJRSA/ICdVcCcgOiAnQXJyb3dVcCcsXG4gICAgICAgIEFSUk9XX0xFRlQ6IHRoaXMuaXNJRSA/ICdMZWZ0JyA6ICdBcnJvd0xlZnQnLFxuICAgICAgICBBUlJPV19SSUdIVDogdGhpcy5pc0lFID8gJ1JpZ2h0JyA6ICdBcnJvd1JpZ2h0JyxcbiAgICAgICAgRU5EOiAnRW5kJyxcbiAgICAgICAgSE9NRTogJ0hvbWUnLFxuICAgICAgICBQQUdFX0RPV046ICdQYWdlRG93bicsXG4gICAgICAgIFBBR0VfVVA6ICdQYWdlVXAnLFxuICAgICAgICBGMjogJ0YyJyxcbiAgICAgICAgVEFCOiAnVGFiJyxcbiAgICAgICAgU0VNSUNPTE9OOiAnOycsXG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzI2VkaXRpbmdfa2V5c1xuICAgICAgICBERUxFVEU6IHRoaXMuaXNJRSA/ICdEZWwnIDogJ0RlbGV0ZScsXG4gICAgICAgIEJBQ0tTUEFDRTogJ0JhY2tzcGFjZScsXG4gICAgICAgIENPTlRST0w6ICdDb250cm9sJyxcbiAgICAgICAgWDogJ3gnLFxuICAgICAgICBZOiAneScsXG4gICAgICAgIFo6ICd6J1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBSZXR1cm5zIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgbm9kZSBjb250ZW50LCB1c2luZyBSYW5nZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAqIGxldCBjb2x1bW4gPSB0aGlzLmdyaWQuY29sdW1uTGlzdC5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSAnSUQnKVswXTtcbiAgICAgKlxuICAgICAqIGxldCBzaXplID0gZ2V0Tm9kZVNpemVWaWFSYW5nZShyYW5nZSwgY29sdW1uLmNlbGxzWzBdLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBUaGUgbGFzdCBwYXJhbWV0ZXIgaXMgdXNlZnVsIHdoZW4gdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQgdG8gbWVhc3VyZSBpcyBtb2RpZmllZCBieSBhXG4gICAgICogcGFyZW50IGVsZW1lbnQgdGhhdCBoYXMgZXhwbGljaXQgc2l6ZS4gSW4gc3VjaCBjYXNlcyB0aGUgY2FsY3VsYXRlZCBzaXplIGlzIG5ldmVyIGxvd2VyXG4gICAgICogYW5kIHRoZSBmdW5jdGlvbiBtYXkgaW5zdGVhZCByZW1vdmUgdGhlIHBhcmVudCBzaXplIHdoaWxlIG1lYXN1cmluZyB0byBnZXQgdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgIHB1YmxpYyBnZXROb2RlU2l6ZVZpYVJhbmdlKHJhbmdlOiBSYW5nZSwgbm9kZTogSFRNTEVsZW1lbnQsIHNpemVIb2xkaW5nTm9kZT86IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGxldCBvdmVyZmxvdyA9IG51bGw7XG4gICAgICAgIGxldCBub2RlU3R5bGVzO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0ZpcmVmb3gpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID0gbm9kZS5zdHlsZS5vdmVyZmxvdztcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhhdCBoYWNrIC0gb3RoZXJ3aXNlIGNvbnRlbnQgd29uJ3QgYmUgbWVhc3VyZWQgY29ycmVjdGx5IGluIElFL0VkZ2VcbiAgICAgICAgICAgIG5vZGUuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2l6ZUhvbGRpbmdOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHNpemVIb2xkaW5nTm9kZS5zdHlsZTtcbiAgICAgICAgICAgIG5vZGVTdHlsZXMgPSBbIHN0eWxlLndpZHRoLCBzdHlsZS5taW5XaWR0aCwgc3R5bGUuZmxleEJhc2lzIF07XG4gICAgICAgICAgICBzdHlsZS53aWR0aCA9ICcnO1xuICAgICAgICAgICAgc3R5bGUubWluV2lkdGggPSAnJztcbiAgICAgICAgICAgIHN0eWxlLmZsZXhCYXNpcyA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xuICAgICAgICBjb25zdCB3aWR0aCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0ZpcmVmb3gpIHtcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhhdCBoYWNrIC0gb3RoZXJ3aXNlIGNvbnRlbnQgd29uJ3QgYmUgbWVhc3VyZWQgY29ycmVjdGx5IGluIElFL0VkZ2VcbiAgICAgICAgICAgIG5vZGUuc3R5bGUub3ZlcmZsb3cgPSBvdmVyZmxvdztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaXplSG9sZGluZ05vZGUpIHtcbiAgICAgICAgICAgIHNpemVIb2xkaW5nTm9kZS5zdHlsZS53aWR0aCA9IG5vZGVTdHlsZXNbMF07XG4gICAgICAgICAgICBzaXplSG9sZGluZ05vZGUuc3R5bGUubWluV2lkdGggPSBub2RlU3R5bGVzWzFdO1xuICAgICAgICAgICAgc2l6ZUhvbGRpbmdOb2RlLnN0eWxlLmZsZXhCYXNpcyA9IG5vZGVTdHlsZXNbMl07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQga2V5Ym9hcmQgZXZlbnQgaXMgYW4gYWN0aXZhdGlvbiBrZXkgKEVudGVyL1NwYWNlIGJhcilcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBQbGF0Zm9ybVV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBY3RpdmF0aW9uS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXkgPT09IHRoaXMuS0VZTUFQLkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gdGhpcy5LRVlNQVAuU1BBQ0U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGEgY29tYmluYXRpb24gdGhhdCBjbG9zZXMgdGhlIGZpbHRlcmluZyBVSSBvZiB0aGUgZ3JpZC4gKEVzY2FwZS9DdHJsK1NoaWZ0K0wpXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICogQG1lbWJlcm9mIFBsYXRmb3JtVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0ZpbHRlcmluZ0tleUNvbWJvKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXkgPT09IHRoaXMuS0VZTUFQLkVTQ0FQRSB8fCAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2wnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0xlZnRDbGljayhldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGlzTmF2aWdhdGlvbktleShrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5LRVlNQVAuSE9NRSwgdGhpcy5LRVlNQVAuRU5ELCB0aGlzLktFWU1BUC5TUEFDRSxcbiAgICAgICAgICAgIHRoaXMuS0VZTUFQLkFSUk9XX0RPV04sIHRoaXMuS0VZTUFQLkFSUk9XX0xFRlQsIHRoaXMuS0VZTUFQLkFSUk9XX1JJR0hULCB0aGlzLktFWU1BUC5BUlJPV19VUFxuICAgICAgICBdLmluY2x1ZGVzKGtleSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGZsYXR0ZW4gPSAoYXJyOiBhbnlbXSkgPT4ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcblxuICAgIGFyci5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWwpO1xuICAgICAgICBpZiAoZWwuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuaXNBcnJheShlbC5jaGlsZHJlbikgPyBlbC5jaGlsZHJlbiA6IGVsLmNoaWxkcmVuLnRvQXJyYXkoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoZmxhdHRlbihjaGlsZHJlbikpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gY2FuY2VsIHRoZSBldmVudC5cbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHJlZmVyZW5jZSB0byB0aGUgb3duZXIgY29tcG9uZW50LlxuICAgICAqL1xuICAgIG93bmVyPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqIEJyb3dzZXIgZXZlbnQgKi9cbiAgICBldmVudD86IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgeyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgeyB9XG5cbmV4cG9ydCBjb25zdCBIT1JJWk9OVEFMX05BVl9LRVlTID0gbmV3IFNldChbJ2Fycm93bGVmdCcsICdsZWZ0JywgJ2Fycm93cmlnaHQnLCAncmlnaHQnLCAnaG9tZScsICdlbmQnXSk7XG5cbmV4cG9ydCBjb25zdCBOQVZJR0FUSU9OX0tFWVMgPSBuZXcgU2V0KFtcbiAgICAnZG93bicsXG4gICAgJ3VwJyxcbiAgICAnbGVmdCcsXG4gICAgJ3JpZ2h0JyxcbiAgICAnYXJyb3dkb3duJyxcbiAgICAnYXJyb3d1cCcsXG4gICAgJ2Fycm93bGVmdCcsXG4gICAgJ2Fycm93cmlnaHQnLFxuICAgICdob21lJyxcbiAgICAnZW5kJyxcbiAgICAnc3BhY2UnLFxuICAgICdzcGFjZWJhcicsXG4gICAgJyAnXG5dKTtcbmV4cG9ydCBjb25zdCBBQ0NPUkRJT05fTkFWSUdBVElPTl9LRVlTID0gbmV3IFNldCgndXAgZG93biBhcnJvd3VwIGFycm93ZG93biBob21lIGVuZCcuc3BsaXQoJyAnKSk7XG5leHBvcnQgY29uc3QgUk9XX0VYUEFORF9LRVlTID0gbmV3IFNldCgncmlnaHQgZG93biBhcnJvd3JpZ2h0IGFycm93ZG93bicuc3BsaXQoJyAnKSk7XG5leHBvcnQgY29uc3QgUk9XX0NPTExBUFNFX0tFWVMgPSBuZXcgU2V0KCdsZWZ0IHVwIGFycm93bGVmdCBhcnJvd3VwJy5zcGxpdCgnICcpKTtcbmV4cG9ydCBjb25zdCBST1dfQUREX0tFWVMgPSBuZXcgU2V0KFsnKycsICdhZGQnLCAn4omgJywgJ8KxJywgJz0nXSk7XG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0tFWVMgPSBuZXcgU2V0KFsuLi5BcnJheS5mcm9tKE5BVklHQVRJT05fS0VZUyksXG4uLi5BcnJheS5mcm9tKFJPV19BRERfS0VZUyksICdlbnRlcicsICdmMicsICdlc2NhcGUnLCAnZXNjJywgJ3BhZ2Vkb3duJywgJ3BhZ2V1cCddKTtcbmV4cG9ydCBjb25zdCBIRUFERVJfS0VZUyA9IG5ldyBTZXQoWy4uLkFycmF5LmZyb20oTkFWSUdBVElPTl9LRVlTKSwgJ2VzY2FwZScsICdlc2MnLCAnbCcsXG4gICAgLyoqIFRoaXMgc3ltYm9sIGNvcnJlc3BvbmRzIHRvIHRoZSBBbHQgKyBMIGNvbWJpbmF0aW9uIHVuZGVyIE1BQy4gKi9cbiAgICAnwqwnXSk7XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKlxuICogQ3JlYXRlcyBhIG5ldyBSZXNpemVPYnNlcnZlciBvbiBgdGFyZ2V0YCBhbmQgcmV0dXJucyBpdCBhcyBhbiBPYnNlcnZhYmxlLlxuICogUnVuIHRoZSByZXNpemVPYnNlcnZhYmxlIG91dHNpZGUgYW5ndWxhciB6b25lLCBiZWNhdXNlIGl0IHBhdGNoZXMgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgd2hpY2ggY2F1c2VzIGFuIGluZmluaXRlIGxvb3AuXG4gKiBSZWxhdGVkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMTcxMlxuICovXG5leHBvcnQgY29uc3QgcmVzaXplT2JzZXJ2YWJsZSA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5W10+ID0+IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IChnZXRSZXNpemVPYnNlcnZlcigpKSgoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoZW50cmllcyk7XG4gICAgfSk7XG4gICAgaW5zdGFuY2Uub2JzZXJ2ZSh0YXJnZXQpO1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gKCkgPT4gaW5zdGFuY2UuZGlzY29ubmVjdCgpO1xuICAgIHJldHVybiB1bnN1YnNjcmliZTtcbn0pO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIENvbXBhcmVzIHR3byBtYXBzLlxuICovXG5leHBvcnQgY29uc3QgY29tcGFyZU1hcHMgPSAobWFwMTogTWFwPGFueSwgYW55PiwgbWFwMjogTWFwPGFueSwgYW55Pik6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghbWFwMikge1xuICAgICAgICByZXR1cm4gIW1hcDEgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICAgIGlmIChtYXAxLnNpemUgIT09IG1hcDIuc2l6ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgY29uc3Qga2V5cyA9IEFycmF5LmZyb20obWFwMi5rZXlzKCkpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKG1hcDEuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gbWFwMS5nZXQoa2V5KSA9PT0gbWFwMi5nZXQoa2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoO1xufTtcblxuLyoqXG4gKlxuICogR2l2ZW4gYSBwcm9wZXJ0eSBhY2Nlc3MgcGF0aCBpbiB0aGUgZm9ybWF0IGB4LnkuemAgcmVzb2x2ZXMgYW5kIHJldHVybnNcbiAqIHRoZSB2YWx1ZSBvZiB0aGUgYHpgIHByb3BlcnR5IGluIHRoZSBwYXNzZWQgb2JqZWN0LlxuICpcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZU5lc3RlZFBhdGggPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0gcGF0aD8uc3BsaXQoJy4nKSA/PyBbXTtcbiAgICBsZXQgY3VycmVudCA9IG9ialtwYXJ0cy5zaGlmdCgpXTtcblxuICAgIHBhcnRzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59O1xuXG4vKipcbiAqXG4gKiBHaXZlbiBhIHByb3BlcnR5IGFjY2VzcyBwYXRoIGluIHRoZSBmb3JtYXQgYHgueS56YCBhbmQgYSB2YWx1ZVxuICogdGhpcyBmdW5jdGlvbnMgYnVpbGRzIGFuZCByZXR1cm5zIGFuIG9iamVjdCBmb2xsb3dpbmcgdGhlIGFjY2VzcyBwYXRoLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zb2xlLmxvZygneC55LnouJywgNDIpO1xuICogPj4geyB4OiB7IHk6IHsgejogNDIgfSB9IH1cbiAqIGBgYFxuICpcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcmV2ZXJzZU1hcHBlciA9IChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGg/LnNwbGl0KCcuJykgPz8gW107XG5cbiAgICBsZXQgX3Byb3AgPSBwYXJ0cy5zaGlmdCgpO1xuICAgIGxldCBtYXBwaW5nOiBhbnk7XG5cbiAgICAvLyBJbml0aWFsIGJpbmRpbmcgZm9yIGZpcnN0IGxldmVsIGJpbmRpbmdzXG4gICAgb2JqW19wcm9wXSA9IHZhbHVlO1xuICAgIG1hcHBpbmcgPSBvYmo7XG5cbiAgICBwYXJ0cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAvLyBTdGFydCBidWlsZGluZyB0aGUgaGllcmFyY2h5XG4gICAgICAgIG1hcHBpbmdbX3Byb3BdID0ge307XG4gICAgICAgIC8vIEdvIGRvd24gYSBsZXZlbFxuICAgICAgICBtYXBwaW5nID0gbWFwcGluZ1tfcHJvcF07XG4gICAgICAgIC8vIEJpbmQgdGhlIHZhbHVlIGFuZCBtb3ZlIHRoZSBrZXlcbiAgICAgICAgbWFwcGluZ1twcm9wXSA9IHZhbHVlO1xuICAgICAgICBfcHJvcCA9IHByb3A7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqO1xufTtcblxuZXhwb3J0IGNvbnN0IHlpZWxkaW5nTG9vcCA9IChjb3VudDogbnVtYmVyLCBjaHVua1NpemU6IG51bWJlciwgY2FsbGJhY2s6IChpbmRleDogbnVtYmVyKSA9PiB2b2lkLCBkb25lOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGNvbnN0IGNodW5rID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihpICsgY2h1bmtTaXplLCBjb3VudCk7XG4gICAgICAgIGZvciAoOyBpIDwgZW5kOyArK2kpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpIDwgY291bnQpIHtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZShjaHVuayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNodW5rKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb25zdHJ1Y3RvciA9IChyZWY6IGFueSkgPT4gdHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBCb29sZWFuKHJlZi5wcm90b3R5cGUpICYmIEJvb2xlYW4ocmVmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik7XG5cbmV4cG9ydCBjb25zdCByZXZlcnNlQW5pbWF0aW9uUmVzb2x2ZXIgPSAoYW5pbWF0aW9uOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSk6IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhID0+XG4gICAgb3Bwb3NpdGVBbmltYXRpb24uZ2V0KGFuaW1hdGlvbikgPz8gYW5pbWF0aW9uO1xuXG5leHBvcnQgY29uc3QgaXNIb3Jpem9udGFsQW5pbWF0aW9uID0gKGFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEpOiBib29sZWFuID0+IGhvcml6b250YWxBbmltYXRpb25zLmluY2x1ZGVzKGFuaW1hdGlvbik7XG5cbmV4cG9ydCBjb25zdCBpc1ZlcnRpY2FsQW5pbWF0aW9uID0gKGFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEpOiBib29sZWFuID0+IHZlcnRpY2FsQW5pbWF0aW9ucy5pbmNsdWRlcyhhbmltYXRpb24pO1xuXG5jb25zdCBvcHBvc2l0ZUFuaW1hdGlvbjogTWFwPEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhLCBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YT4gPSBuZXcgTWFwKFtcbiAgICBbZmFkZUluLCBmYWRlSW5dLFxuICAgIFtmYWRlT3V0LCBmYWRlT3V0XSxcbiAgICBbZmxpcFRvcCwgZmxpcEJvdHRvbV0sXG4gICAgW2ZsaXBCb3R0b20sIGZsaXBUb3BdLFxuICAgIFtmbGlwUmlnaHQsIGZsaXBMZWZ0XSxcbiAgICBbZmxpcExlZnQsIGZsaXBSaWdodF0sXG4gICAgW2ZsaXBIb3JGd2QsIGZsaXBIb3JCY2tdLFxuICAgIFtmbGlwSG9yQmNrLCBmbGlwSG9yRndkXSxcbiAgICBbZmxpcFZlckZ3ZCwgZmxpcFZlckJja10sXG4gICAgW2ZsaXBWZXJCY2ssIGZsaXBWZXJGd2RdLFxuICAgIFtncm93VmVySW4sIGdyb3dWZXJJbl0sXG4gICAgW2dyb3dWZXJPdXQsIGdyb3dWZXJPdXRdLFxuICAgIFtoZWFydGJlYXQsIGhlYXJ0YmVhdF0sXG4gICAgW3B1bHNhdGVGd2QsIHB1bHNhdGVCY2tdLFxuICAgIFtwdWxzYXRlQmNrLCBwdWxzYXRlRndkXSxcbiAgICBbYmxpbmssIGJsaW5rXSxcbiAgICBbc2hha2VIb3IsIHNoYWtlSG9yXSxcbiAgICBbc2hha2VWZXIsIHNoYWtlVmVyXSxcbiAgICBbc2hha2VUb3AsIHNoYWtlVG9wXSxcbiAgICBbc2hha2VCb3R0b20sIHNoYWtlQm90dG9tXSxcbiAgICBbc2hha2VSaWdodCwgc2hha2VSaWdodF0sXG4gICAgW3NoYWtlTGVmdCwgc2hha2VMZWZ0XSxcbiAgICBbc2hha2VDZW50ZXIsIHNoYWtlQ2VudGVyXSxcbiAgICBbc2hha2VUciwgc2hha2VUcl0sXG4gICAgW3NoYWtlQnIsIHNoYWtlQnJdLFxuICAgIFtzaGFrZUJsLCBzaGFrZUJsXSxcbiAgICBbc2hha2VUbCwgc2hha2VUbF0sXG4gICAgW3JvdGF0ZUluQ2VudGVyLCByb3RhdGVJbkNlbnRlcl0sXG4gICAgW3JvdGF0ZU91dENlbnRlciwgcm90YXRlT3V0Q2VudGVyXSxcbiAgICBbcm90YXRlSW5Ub3AsIHJvdGF0ZUluQm90dG9tXSxcbiAgICBbcm90YXRlT3V0VG9wLCByb3RhdGVPdXRCb3R0b21dLFxuICAgIFtyb3RhdGVJblJpZ2h0LCByb3RhdGVJbkxlZnRdLFxuICAgIFtyb3RhdGVPdXRSaWdodCwgcm90YXRlT3V0TGVmdF0sXG4gICAgW3JvdGF0ZUluTGVmdCwgcm90YXRlSW5SaWdodF0sXG4gICAgW3JvdGF0ZU91dExlZnQsIHJvdGF0ZU91dFJpZ2h0XSxcbiAgICBbcm90YXRlSW5Cb3R0b20sIHJvdGF0ZUluVG9wXSxcbiAgICBbcm90YXRlT3V0Qm90dG9tLCByb3RhdGVPdXRUb3BdLFxuICAgIFtyb3RhdGVJblRyLCByb3RhdGVJbkJsXSxcbiAgICBbcm90YXRlT3V0VHIsIHJvdGF0ZU91dEJsXSxcbiAgICBbcm90YXRlSW5Cciwgcm90YXRlSW5UbF0sXG4gICAgW3JvdGF0ZU91dEJyLCByb3RhdGVPdXRUbF0sXG4gICAgW3JvdGF0ZUluQmwsIHJvdGF0ZUluVHJdLFxuICAgIFtyb3RhdGVPdXRCbCwgcm90YXRlT3V0VHJdLFxuICAgIFtyb3RhdGVJblRsLCByb3RhdGVJbkJyXSxcbiAgICBbcm90YXRlT3V0VGwsIHJvdGF0ZU91dEJyXSxcbiAgICBbcm90YXRlSW5EaWFnb25hbDEsIHJvdGF0ZUluRGlhZ29uYWwxXSxcbiAgICBbcm90YXRlT3V0RGlhZ29uYWwxLCByb3RhdGVPdXREaWFnb25hbDFdLFxuICAgIFtyb3RhdGVJbkRpYWdvbmFsMiwgcm90YXRlSW5EaWFnb25hbDJdLFxuICAgIFtyb3RhdGVPdXREaWFnb25hbDIsIHJvdGF0ZU91dERpYWdvbmFsMl0sXG4gICAgW3JvdGF0ZUluSG9yLCByb3RhdGVJbkhvcl0sXG4gICAgW3JvdGF0ZU91dEhvciwgcm90YXRlT3V0SG9yXSxcbiAgICBbcm90YXRlSW5WZXIsIHJvdGF0ZUluVmVyXSxcbiAgICBbcm90YXRlT3V0VmVyLCByb3RhdGVPdXRWZXJdLFxuICAgIFtzY2FsZUluVG9wLCBzY2FsZUluQm90dG9tXSxcbiAgICBbc2NhbGVPdXRUb3AsIHNjYWxlT3V0Qm90dG9tXSxcbiAgICBbc2NhbGVJblJpZ2h0LCBzY2FsZUluTGVmdF0sXG4gICAgW3NjYWxlT3V0UmlnaHQsIHNjYWxlT3V0TGVmdF0sXG4gICAgW3NjYWxlSW5Cb3R0b20sIHNjYWxlSW5Ub3BdLFxuICAgIFtzY2FsZU91dEJvdHRvbSwgc2NhbGVPdXRUb3BdLFxuICAgIFtzY2FsZUluTGVmdCwgc2NhbGVJblJpZ2h0XSxcbiAgICBbc2NhbGVPdXRMZWZ0LCBzY2FsZU91dFJpZ2h0XSxcbiAgICBbc2NhbGVJbkNlbnRlciwgc2NhbGVJbkNlbnRlcl0sXG4gICAgW3NjYWxlT3V0Q2VudGVyLCBzY2FsZU91dENlbnRlcl0sXG4gICAgW3NjYWxlSW5Uciwgc2NhbGVJbkJsXSxcbiAgICBbc2NhbGVPdXRUciwgc2NhbGVPdXRCbF0sXG4gICAgW3NjYWxlSW5Cciwgc2NhbGVJblRsXSxcbiAgICBbc2NhbGVPdXRCciwgc2NhbGVPdXRUbF0sXG4gICAgW3NjYWxlSW5CbCwgc2NhbGVJblRyXSxcbiAgICBbc2NhbGVPdXRCbCwgc2NhbGVPdXRUcl0sXG4gICAgW3NjYWxlSW5UbCwgc2NhbGVJbkJyXSxcbiAgICBbc2NhbGVPdXRUbCwgc2NhbGVPdXRCcl0sXG4gICAgW3NjYWxlSW5WZXJUb3AsIHNjYWxlSW5WZXJCb3R0b21dLFxuICAgIFtzY2FsZU91dFZlclRvcCwgc2NhbGVPdXRWZXJCb3R0b21dLFxuICAgIFtzY2FsZUluVmVyQm90dG9tLCBzY2FsZUluVmVyVG9wXSxcbiAgICBbc2NhbGVPdXRWZXJCb3R0b20sIHNjYWxlT3V0VmVyVG9wXSxcbiAgICBbc2NhbGVJblZlckNlbnRlciwgc2NhbGVJblZlckNlbnRlcl0sXG4gICAgW3NjYWxlT3V0VmVyQ2VudGVyLCBzY2FsZU91dFZlckNlbnRlcl0sXG4gICAgW3NjYWxlSW5Ib3JDZW50ZXIsIHNjYWxlSW5Ib3JDZW50ZXJdLFxuICAgIFtzY2FsZU91dEhvckNlbnRlciwgc2NhbGVPdXRIb3JDZW50ZXJdLFxuICAgIFtzY2FsZUluSG9yTGVmdCwgc2NhbGVJbkhvclJpZ2h0XSxcbiAgICBbc2NhbGVPdXRIb3JMZWZ0LCBzY2FsZU91dEhvclJpZ2h0XSxcbiAgICBbc2NhbGVJbkhvclJpZ2h0LCBzY2FsZUluSG9yTGVmdF0sXG4gICAgW3NjYWxlT3V0SG9yUmlnaHQsIHNjYWxlT3V0SG9yTGVmdF0sXG4gICAgW3NsaWRlSW5Ub3AsIHNsaWRlSW5Cb3R0b21dLFxuICAgIFtzbGlkZU91dFRvcCwgc2xpZGVPdXRCb3R0b21dLFxuICAgIFtzbGlkZUluUmlnaHQsIHNsaWRlSW5MZWZ0XSxcbiAgICBbc2xpZGVPdXRSaWdodCwgc2xpZGVPdXRMZWZ0XSxcbiAgICBbc2xpZGVJbkJvdHRvbSwgc2xpZGVJblRvcF0sXG4gICAgW3NsaWRlT3V0Qm90dG9tLCBzbGlkZU91dFRvcF0sXG4gICAgW3NsaWRlSW5MZWZ0LCBzbGlkZUluUmlnaHRdLFxuICAgIFtzbGlkZU91dExlZnQsIHNsaWRlT3V0UmlnaHRdLFxuICAgIFtzbGlkZUluVHIsIHNsaWRlSW5CbF0sXG4gICAgW3NsaWRlT3V0VHIsIHNsaWRlT3V0QmxdLFxuICAgIFtzbGlkZUluQnIsIHNsaWRlSW5UbF0sXG4gICAgW3NsaWRlT3V0QnIsIHNsaWRlT3V0VGxdLFxuICAgIFtzbGlkZUluQmwsIHNsaWRlSW5Ucl0sXG4gICAgW3NsaWRlT3V0QmwsIHNsaWRlT3V0VHJdLFxuICAgIFtzbGlkZUluVGwsIHNsaWRlSW5Ccl0sXG4gICAgW3NsaWRlT3V0VGwsIHNsaWRlT3V0QnJdLFxuICAgIFtzd2luZ0luVG9wRndkLCBzd2luZ0luQm90dG9tRndkXSxcbiAgICBbc3dpbmdPdXRUb3BGd2QsIHN3aW5nT3V0Qm90dG9tRndkXSxcbiAgICBbc3dpbmdJblJpZ2h0RndkLCBzd2luZ0luTGVmdEZ3ZF0sXG4gICAgW3N3aW5nT3V0UmlnaHRGd2QsIHN3aW5nT3V0TGVmdHRGd2RdLFxuICAgIFtzd2luZ0luTGVmdEZ3ZCwgc3dpbmdJblJpZ2h0RndkXSxcbiAgICBbc3dpbmdPdXRMZWZ0dEZ3ZCwgc3dpbmdPdXRSaWdodEZ3ZF0sXG4gICAgW3N3aW5nSW5Cb3R0b21Gd2QsIHN3aW5nSW5Ub3BGd2RdLFxuICAgIFtzd2luZ091dEJvdHRvbUZ3ZCwgc3dpbmdPdXRUb3BGd2RdLFxuICAgIFtzd2luZ0luVG9wQmNrLCBzd2luZ0luQm90dG9tQmNrXSxcbiAgICBbc3dpbmdPdXRUb3BCY2ssIHN3aW5nT3V0Qm90dG9tQmNrXSxcbiAgICBbc3dpbmdJblJpZ2h0QmNrLCBzd2luZ0luTGVmdEJja10sXG4gICAgW3N3aW5nT3V0UmlnaHRCY2ssIHN3aW5nT3V0TGVmdEJja10sXG4gICAgW3N3aW5nSW5Cb3R0b21CY2ssIHN3aW5nSW5Ub3BCY2tdLFxuICAgIFtzd2luZ091dEJvdHRvbUJjaywgc3dpbmdPdXRUb3BCY2tdLFxuICAgIFtzd2luZ0luTGVmdEJjaywgc3dpbmdJblJpZ2h0QmNrXSxcbiAgICBbc3dpbmdPdXRMZWZ0QmNrLCBzd2luZ091dFJpZ2h0QmNrXSxcbl0pO1xuXG5jb25zdCBob3Jpem9udGFsQW5pbWF0aW9uczogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGFbXSA9IFtcbiAgICBmbGlwUmlnaHQsXG4gICAgZmxpcExlZnQsXG4gICAgZmxpcFZlckZ3ZCxcbiAgICBmbGlwVmVyQmNrLFxuICAgIHJvdGF0ZUluUmlnaHQsXG4gICAgcm90YXRlT3V0UmlnaHQsXG4gICAgcm90YXRlSW5MZWZ0LFxuICAgIHJvdGF0ZU91dExlZnQsXG4gICAgcm90YXRlSW5UcixcbiAgICByb3RhdGVPdXRUcixcbiAgICByb3RhdGVJbkJyLFxuICAgIHJvdGF0ZU91dEJyLFxuICAgIHJvdGF0ZUluQmwsXG4gICAgcm90YXRlT3V0QmwsXG4gICAgcm90YXRlSW5UbCxcbiAgICByb3RhdGVPdXRUbCxcbiAgICBzY2FsZUluUmlnaHQsXG4gICAgc2NhbGVPdXRSaWdodCxcbiAgICBzY2FsZUluTGVmdCxcbiAgICBzY2FsZU91dExlZnQsXG4gICAgc2NhbGVJblRyLFxuICAgIHNjYWxlT3V0VHIsXG4gICAgc2NhbGVJbkJyLFxuICAgIHNjYWxlT3V0QnIsXG4gICAgc2NhbGVJbkJsLFxuICAgIHNjYWxlT3V0QmwsXG4gICAgc2NhbGVJblRsLFxuICAgIHNjYWxlT3V0VGwsXG4gICAgc2NhbGVJbkhvckxlZnQsXG4gICAgc2NhbGVPdXRIb3JMZWZ0LFxuICAgIHNjYWxlSW5Ib3JSaWdodCxcbiAgICBzY2FsZU91dEhvclJpZ2h0LFxuICAgIHNsaWRlSW5SaWdodCxcbiAgICBzbGlkZU91dFJpZ2h0LFxuICAgIHNsaWRlSW5MZWZ0LFxuICAgIHNsaWRlT3V0TGVmdCxcbiAgICBzbGlkZUluVHIsXG4gICAgc2xpZGVPdXRUcixcbiAgICBzbGlkZUluQnIsXG4gICAgc2xpZGVPdXRCcixcbiAgICBzbGlkZUluQmwsXG4gICAgc2xpZGVPdXRCbCxcbiAgICBzbGlkZUluVGwsXG4gICAgc2xpZGVPdXRUbCxcbiAgICBzd2luZ0luUmlnaHRGd2QsXG4gICAgc3dpbmdPdXRSaWdodEZ3ZCxcbiAgICBzd2luZ0luTGVmdEZ3ZCxcbiAgICBzd2luZ091dExlZnR0RndkLFxuICAgIHN3aW5nSW5SaWdodEJjayxcbiAgICBzd2luZ091dFJpZ2h0QmNrLFxuICAgIHN3aW5nSW5MZWZ0QmNrLFxuICAgIHN3aW5nT3V0TGVmdEJjayxcbl07XG5jb25zdCB2ZXJ0aWNhbEFuaW1hdGlvbnM6IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhW10gPSBbXG4gICAgZmxpcFRvcCxcbiAgICBmbGlwQm90dG9tLFxuICAgIGZsaXBIb3JGd2QsXG4gICAgZmxpcEhvckJjayxcbiAgICBncm93VmVySW4sXG4gICAgZ3Jvd1Zlck91dCxcbiAgICByb3RhdGVJblRvcCxcbiAgICByb3RhdGVPdXRUb3AsXG4gICAgcm90YXRlSW5Cb3R0b20sXG4gICAgcm90YXRlT3V0Qm90dG9tLFxuICAgIHJvdGF0ZUluVHIsXG4gICAgcm90YXRlT3V0VHIsXG4gICAgcm90YXRlSW5CcixcbiAgICByb3RhdGVPdXRCcixcbiAgICByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZU91dEJsLFxuICAgIHJvdGF0ZUluVGwsXG4gICAgcm90YXRlT3V0VGwsXG4gICAgc2NhbGVJblRvcCxcbiAgICBzY2FsZU91dFRvcCxcbiAgICBzY2FsZUluQm90dG9tLFxuICAgIHNjYWxlT3V0Qm90dG9tLFxuICAgIHNjYWxlSW5UcixcbiAgICBzY2FsZU91dFRyLFxuICAgIHNjYWxlSW5CcixcbiAgICBzY2FsZU91dEJyLFxuICAgIHNjYWxlSW5CbCxcbiAgICBzY2FsZU91dEJsLFxuICAgIHNjYWxlSW5UbCxcbiAgICBzY2FsZU91dFRsLFxuICAgIHNjYWxlSW5WZXJUb3AsXG4gICAgc2NhbGVPdXRWZXJUb3AsXG4gICAgc2NhbGVJblZlckJvdHRvbSxcbiAgICBzY2FsZU91dFZlckJvdHRvbSxcbiAgICBzbGlkZUluVG9wLFxuICAgIHNsaWRlT3V0VG9wLFxuICAgIHNsaWRlSW5Cb3R0b20sXG4gICAgc2xpZGVPdXRCb3R0b20sXG4gICAgc2xpZGVJblRyLFxuICAgIHNsaWRlT3V0VHIsXG4gICAgc2xpZGVJbkJyLFxuICAgIHNsaWRlT3V0QnIsXG4gICAgc2xpZGVJbkJsLFxuICAgIHNsaWRlT3V0QmwsXG4gICAgc2xpZGVJblRsLFxuICAgIHNsaWRlT3V0VGwsXG4gICAgc3dpbmdJblRvcEZ3ZCxcbiAgICBzd2luZ091dFRvcEZ3ZCxcbiAgICBzd2luZ0luQm90dG9tRndkLFxuICAgIHN3aW5nT3V0Qm90dG9tRndkLFxuICAgIHN3aW5nSW5Ub3BCY2ssXG4gICAgc3dpbmdPdXRUb3BCY2ssXG4gICAgc3dpbmdJbkJvdHRvbUJjayxcbiAgICBzd2luZ091dEJvdHRvbUJjayxcbl07XG4iXX0=