@vendure/admin-ui 2.0.1 → 2.0.3
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/catalog/components/move-collections-dialog/move-collections-dialog.component.d.ts +3 -2
- package/catalog/components/product-variant-list/product-variant-list-bulk-actions.d.ts +6 -0
- package/catalog/public_api.d.ts +1 -1
- package/core/common/base-detail.component.d.ts +1 -0
- package/core/common/component-registry-types.d.ts +2 -2
- package/core/common/generated-types.d.ts +13 -0
- package/core/common/version.d.ts +1 -1
- package/core/components/theme-switcher/theme-switcher.component.d.ts +1 -0
- package/core/data/definitions/product-definitions.d.ts +1 -0
- package/core/data/providers/product-data.service.d.ts +1 -0
- package/core/shared/components/chart/chart.component.d.ts +3 -1
- package/core/shared/components/data-table-filters/data-table-filters.component.d.ts +1 -0
- package/core/shared/components/dropdown/dropdown-menu.component.d.ts +2 -0
- package/core/shared/components/dropdown/dropdown.component.d.ts +1 -1
- package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +6 -0
- package/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +5 -2
- package/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +4 -2
- package/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +8 -5
- package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +1 -4
- package/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +0 -1
- package/core/shared/shared.module.d.ts +2 -1
- package/esm2022/catalog/catalog.module.mjs +5 -1
- package/esm2022/catalog/components/asset-list/asset-list.component.mjs +3 -3
- package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +11 -14
- package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +34 -8
- package/esm2022/catalog/components/product-list/product-list.component.mjs +3 -3
- package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +1 -1
- package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +4 -5
- package/esm2022/catalog/components/product-variant-list/product-variant-list-bulk-actions.mjs +92 -0
- package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +5 -5
- package/esm2022/catalog/public_api.mjs +2 -2
- package/esm2022/core/common/base-detail.component.mjs +3 -3
- package/esm2022/core/common/base-list.component.mjs +2 -2
- package/esm2022/core/common/component-registry-types.mjs +1 -1
- package/esm2022/core/common/generated-types.mjs +2 -1
- package/esm2022/core/common/introspection-result.mjs +1 -1
- package/esm2022/core/common/title-setter.mjs +1 -1
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/components/app-shell/app-shell.component.mjs +3 -3
- package/esm2022/core/components/base-nav/base-nav.component.mjs +1 -1
- package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/core/components/main-nav/main-nav.component.mjs +2 -2
- package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +15 -5
- package/esm2022/core/components/user-menu/user-menu.component.mjs +3 -3
- package/esm2022/core/data/definitions/product-definitions.mjs +9 -1
- package/esm2022/core/data/providers/interceptor.mjs +1 -1
- package/esm2022/core/data/providers/product-data.service.mjs +7 -2
- package/esm2022/core/data/utils/transform-relation-custom-field-inputs.mjs +2 -2
- package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +1 -1
- package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +1 -1
- package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +2 -2
- package/esm2022/core/providers/local-storage/local-storage.service.mjs +1 -1
- package/esm2022/core/providers/page/page.service.mjs +1 -1
- package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +1 -1
- package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +2 -2
- package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +3 -3
- package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +1 -1
- package/esm2022/core/shared/components/chart/chart.component.mjs +6 -2
- package/esm2022/core/shared/components/chip/chip.component.mjs +2 -2
- package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/data-table/data-table.component.mjs +1 -1
- package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +24 -15
- package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +65 -24
- package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +3 -3
- package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/custom-nodes.mjs +4 -3
- package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +16 -3
- package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +3 -1
- package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +7 -4
- package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +9 -8
- package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +3 -2
- package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +10 -5
- package/esm2022/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +1 -1
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +14 -15
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +1 -3
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +3 -3
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +3 -3
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +3 -3
- package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +2 -2
- package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +1 -1
- package/esm2022/core/shared/shared.module.mjs +9 -4
- package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +29 -29
- package/esm2022/customer/components/customer-list/customer-list.component.mjs +24 -24
- package/esm2022/customer/customer.module.mjs +9 -2
- package/esm2022/customer/customer.routes.mjs +1 -1
- package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +1 -1
- package/esm2022/dashboard/default-widgets.mjs +2 -1
- package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +1 -1
- package/esm2022/marketing/marketing.module.mjs +1 -1
- package/esm2022/order/components/order-detail/order-detail.component.mjs +8 -8
- package/esm2022/order/components/order-list/order-list.component.mjs +9 -2
- package/esm2022/order/components/order-table/order-table.component.mjs +3 -3
- package/esm2022/order/order.module.mjs +1 -1
- package/esm2022/order/order.routes.mjs +1 -1
- package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +12 -11
- package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +3 -3
- package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +8 -8
- package/esm2022/settings/settings.module.mjs +1 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs +141 -81
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +203 -98
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-customer.mjs +58 -51
- package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-dashboard.mjs +2 -1
- package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs +17 -10
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +20 -19
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/package.json +19 -19
- package/static/i18n-messages/cs.json +772 -770
- package/static/i18n-messages/de.json +773 -771
- package/static/i18n-messages/en.json +773 -771
- package/static/i18n-messages/es.json +773 -771
- package/static/i18n-messages/fr.json +773 -771
- package/static/i18n-messages/it.json +773 -771
- package/static/i18n-messages/pl.json +773 -771
- package/static/i18n-messages/pt_BR.json +773 -771
- package/static/i18n-messages/pt_PT.json +773 -771
- package/static/i18n-messages/ru.json +773 -771
- package/static/i18n-messages/uk.json +773 -771
- package/static/i18n-messages/zh_Hans.json +773 -771
- package/static/i18n-messages/zh_Hant.json +773 -771
- package/static/styles/global/_buttons.scss +63 -49
- package/static/styles/global/_forms.scss +5 -1
- package/static/styles/theme/default.scss +2 -0
- package/static/theme.min.css +1 -1
- package/catalog/components/product-variant-list/product-list-bulk-actions.d.ts +0 -3
- package/esm2022/catalog/components/product-variant-list/product-list-bulk-actions.mjs +0 -55
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';
|
|
2
|
+
import { take } from 'rxjs/operators';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "../../data/providers/data.service";
|
|
4
5
|
import * as i2 from "../../providers/local-storage/local-storage.service";
|
|
@@ -13,6 +14,9 @@ export class ThemeSwitcherComponent {
|
|
|
13
14
|
ngOnInit() {
|
|
14
15
|
this.activeTheme$ = this.dataService.client.uiState().mapStream(data => data.uiState.theme);
|
|
15
16
|
}
|
|
17
|
+
onHostClick() {
|
|
18
|
+
this.activeTheme$.pipe(take(1)).subscribe(current => this.toggleTheme(current));
|
|
19
|
+
}
|
|
16
20
|
toggleTheme(current) {
|
|
17
21
|
const newTheme = current === 'default' ? 'dark' : 'default';
|
|
18
22
|
this.dataService.client.setUiTheme(newTheme).subscribe(() => {
|
|
@@ -20,10 +24,16 @@ export class ThemeSwitcherComponent {
|
|
|
20
24
|
});
|
|
21
25
|
}
|
|
22
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ThemeSwitcherComponent, deps: [{ token: i1.DataService }, { token: i2.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: ThemeSwitcherComponent, selector: "vdr-theme-switcher", ngImport: i0, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\"
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: ThemeSwitcherComponent, selector: "vdr-theme-switcher", host: { listeners: { "click": "onHostClick($event)", "keydown.enter": "onHostClick($event)" } }, ngImport: i0, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\">\r\n <span>{{ 'common.theme' | translate }}</span>\r\n <div class=\"theme-icon default\" [class.active]=\"activeTheme === 'default'\">\r\n <clr-icon shape=\"sun\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n <div class=\"theme-icon dark\" [class.active]=\"activeTheme === 'dark'\">\r\n <clr-icon shape=\"moon\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n</button>\r\n", styles: [":host{display:flex;justify-content:center;align-items:center}button.theme-toggle{position:relative;padding-left:20px;border:none;background:transparent;color:var(--clr-dropdown-item-color);cursor:pointer}.theme-icon{position:absolute;top:0;left:6px;z-index:0;opacity:.2;color:var(--color-text-300);transition:opacity .3s,left .3s}.theme-icon.active{z-index:1;left:0;opacity:1}.theme-icon.default.active{color:#d6ae3f}.theme-icon.dark.active{color:#ffdf3a}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
28
|
}
|
|
25
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ThemeSwitcherComponent, decorators: [{
|
|
26
30
|
type: Component,
|
|
27
|
-
args: [{ selector: 'vdr-theme-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\"
|
|
28
|
-
}], ctorParameters: function () { return [{ type: i1.DataService }, { type: i2.LocalStorageService }]; }
|
|
29
|
-
|
|
31
|
+
args: [{ selector: 'vdr-theme-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\">\r\n <span>{{ 'common.theme' | translate }}</span>\r\n <div class=\"theme-icon default\" [class.active]=\"activeTheme === 'default'\">\r\n <clr-icon shape=\"sun\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n <div class=\"theme-icon dark\" [class.active]=\"activeTheme === 'dark'\">\r\n <clr-icon shape=\"moon\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n</button>\r\n", styles: [":host{display:flex;justify-content:center;align-items:center}button.theme-toggle{position:relative;padding-left:20px;border:none;background:transparent;color:var(--clr-dropdown-item-color);cursor:pointer}.theme-icon{position:absolute;top:0;left:6px;z-index:0;opacity:.2;color:var(--color-text-300);transition:opacity .3s,left .3s}.theme-icon.active{z-index:1;left:0;opacity:1}.theme-icon.default.active{color:#d6ae3f}.theme-icon.dark.active{color:#ffdf3a}\n"] }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.DataService }, { type: i2.LocalStorageService }]; }, propDecorators: { onHostClick: [{
|
|
33
|
+
type: HostListener,
|
|
34
|
+
args: ['click', ['$event']]
|
|
35
|
+
}, {
|
|
36
|
+
type: HostListener,
|
|
37
|
+
args: ['keydown.enter', ['$event']]
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc3dpdGNoZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9jb21wb25lbnRzL3RoZW1lLXN3aXRjaGVyL3RoZW1lLXN3aXRjaGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy90aGVtZS1zd2l0Y2hlci90aGVtZS1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFaEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBV3RDLE1BQU0sT0FBTyxzQkFBc0I7SUFHL0IsWUFBb0IsV0FBd0IsRUFBVSxtQkFBd0M7UUFBMUUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUcsQ0FBQztJQUVsRyxRQUFRO1FBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFJRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZTtRQUN2QixNQUFNLFFBQVEsR0FBRyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcEJRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDJKQ2JuQyw4ZEFTQTs7MkZESWEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO29JQWEvQyxXQUFXO3NCQUZWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbG9jYWwtc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci10aGVtZS1zd2l0Y2hlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RoZW1lLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90aGVtZS1zd2l0Y2hlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVN3aXRjaGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBhY3RpdmVUaGVtZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUaGVtZSQgPSB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC51aVN0YXRlKCkubWFwU3RyZWFtKGRhdGEgPT4gZGF0YS51aVN0YXRlLnRoZW1lKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gICAgb25Ib3N0Q2xpY2soKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGhlbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGN1cnJlbnQgPT4gdGhpcy50b2dnbGVUaGVtZShjdXJyZW50KSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlVGhlbWUoY3VycmVudDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG5ld1RoZW1lID0gY3VycmVudCA9PT0gJ2RlZmF1bHQnID8gJ2RhcmsnIDogJ2RlZmF1bHQnO1xuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5zZXRVaVRoZW1lKG5ld1RoZW1lKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldCgnYWN0aXZlVGhlbWUnLCBuZXdUaGVtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxidXR0b24gKm5nSWY9XCJhY3RpdmVUaGVtZSQgfCBhc3luYyBhcyBhY3RpdmVUaGVtZVwiIGNsYXNzPVwidGhlbWUtdG9nZ2xlXCI+XHJcbiAgICA8c3Bhbj57eyAnY29tbW9uLnRoZW1lJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1pY29uIGRlZmF1bHRcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRoZW1lID09PSAnZGVmYXVsdCdcIj5cclxuICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJzdW5cIiBjbGFzcz1cImlzLXNvbGlkXCI+PC9jbHItaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRoZW1lLWljb24gZGFya1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGhlbWUgPT09ICdkYXJrJ1wiPlxyXG4gICAgICAgIDxjbHItaWNvbiBzaGFwZT1cIm1vb25cIiBjbGFzcz1cImlzLXNvbGlkXCI+PC9jbHItaWNvbj5cclxuICAgIDwvZGl2PlxyXG48L2J1dHRvbj5cclxuIl19
|
|
@@ -18,11 +18,11 @@ export class UserMenuComponent {
|
|
|
18
18
|
this.selectUiLanguage = new EventEmitter();
|
|
19
19
|
}
|
|
20
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: UserMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: UserMenuComponent, selector: "vdr-user-menu", inputs: { userName: "userName", availableLanguages: "availableLanguages", uiLanguageAndLocale: "uiLanguageAndLocale" }, outputs: { logOut: "logOut", selectUiLanguage: "selectUiLanguage" }, ngImport: i0, template: "<vdr-dropdown>\
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: UserMenuComponent, selector: "vdr-user-menu", inputs: { userName: "userName", availableLanguages: "availableLanguages", uiLanguageAndLocale: "uiLanguageAndLocale" }, outputs: { logOut: "logOut", selectUiLanguage: "selectUiLanguage" }, ngImport: i0, template: "<vdr-dropdown>\n <button class=\"trigger user-menu-btn\" vdrDropdownTrigger>\n <div class=\"user-circle\">\n <clr-icon shape=\"user\" size=\"16\"></clr-icon>\n </div>\n <span class=\"user-name\">{{ userName }}</span>\n <clr-icon class=\"md:hidden\" shape=\"caret down\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <a [routerLink]=\"['/settings', 'profile']\" vdrDropdownItem tabindex=\"0\">\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon> {{ 'settings.profile' | translate }}\n </a>\n <ng-container *ngIf=\"1 < availableLanguages.length\">\n <button\n type=\"button\"\n vdrDropdownItem\n (click)=\"selectUiLanguage.emit()\"\n [title]=\"'common.select-display-language' | translate\"\n >\n <clr-icon shape=\"language\"></clr-icon> {{ uiLanguageAndLocale?.[0] | localeLanguageName }}\n </button>\n </ng-container>\n <vdr-theme-switcher vdrDropdownItem tabindex=\"0\"></vdr-theme-switcher>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" vdrDropdownItem (click)=\"logOut.emit()\">\n <clr-icon shape=\"logout\"></clr-icon> {{ 'common.log-out' | translate }}\n </button>\n </vdr-dropdown-menu>\n</vdr-dropdown>\n", styles: [":host{display:flex;align-items:center;height:2.5rem;width:100%;padding:var(--space-unit);padding-left:0}@media screen and (max-width: 992px){:host{margin:0}}:host vdr-dropdown{width:100%}.user-menu-btn{display:flex;align-items:center;justify-content:space-between;border:none;font-size:var(--font-size-sm);width:100%;line-height:100%;height:40px;color:var(--color-text-100);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg);cursor:pointer}.user-menu-btn:hover{color:var(--color-text-200)}@media screen and (min-width: 992px){.user-menu-btn{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 2) calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 1.5)}}.user-circle{display:inline-flex;align-items:center;justify-content:center;border-radius:100%;background-color:var(--color-primary-600);background-image:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-700) 100%);width:24px;height:24px;margin-right:6px}@media screen and (max-width: 992px){.user-circle{margin-right:0}}.user-circle clr-icon{color:var(--color-text-inverse)}.user-name{margin-right:var(--space-unit);overflow:hidden;max-width:100px;text-overflow:ellipsis}@media screen and (max-width: 992px){.user-name{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i5.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i6.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i7.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { kind: "component", type: i8.ThemeSwitcherComponent, selector: "vdr-theme-switcher" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "pipe", type: i10.LocaleLanguageNamePipe, name: "localeLanguageName" }] }); }
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: UserMenuComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'vdr-user-menu', template: "<vdr-dropdown>\
|
|
25
|
+
args: [{ selector: 'vdr-user-menu', template: "<vdr-dropdown>\n <button class=\"trigger user-menu-btn\" vdrDropdownTrigger>\n <div class=\"user-circle\">\n <clr-icon shape=\"user\" size=\"16\"></clr-icon>\n </div>\n <span class=\"user-name\">{{ userName }}</span>\n <clr-icon class=\"md:hidden\" shape=\"caret down\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <a [routerLink]=\"['/settings', 'profile']\" vdrDropdownItem tabindex=\"0\">\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon> {{ 'settings.profile' | translate }}\n </a>\n <ng-container *ngIf=\"1 < availableLanguages.length\">\n <button\n type=\"button\"\n vdrDropdownItem\n (click)=\"selectUiLanguage.emit()\"\n [title]=\"'common.select-display-language' | translate\"\n >\n <clr-icon shape=\"language\"></clr-icon> {{ uiLanguageAndLocale?.[0] | localeLanguageName }}\n </button>\n </ng-container>\n <vdr-theme-switcher vdrDropdownItem tabindex=\"0\"></vdr-theme-switcher>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" vdrDropdownItem (click)=\"logOut.emit()\">\n <clr-icon shape=\"logout\"></clr-icon> {{ 'common.log-out' | translate }}\n </button>\n </vdr-dropdown-menu>\n</vdr-dropdown>\n", styles: [":host{display:flex;align-items:center;height:2.5rem;width:100%;padding:var(--space-unit);padding-left:0}@media screen and (max-width: 992px){:host{margin:0}}:host vdr-dropdown{width:100%}.user-menu-btn{display:flex;align-items:center;justify-content:space-between;border:none;font-size:var(--font-size-sm);width:100%;line-height:100%;height:40px;color:var(--color-text-100);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg);cursor:pointer}.user-menu-btn:hover{color:var(--color-text-200)}@media screen and (min-width: 992px){.user-menu-btn{padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 2) calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 1.5)}}.user-circle{display:inline-flex;align-items:center;justify-content:center;border-radius:100%;background-color:var(--color-primary-600);background-image:linear-gradient(135deg,var(--color-primary-500) 0%,var(--color-primary-700) 100%);width:24px;height:24px;margin-right:6px}@media screen and (max-width: 992px){.user-circle{margin-right:0}}.user-circle clr-icon{color:var(--color-text-inverse)}.user-name{margin-right:var(--space-unit);overflow:hidden;max-width:100px;text-overflow:ellipsis}@media screen and (max-width: 992px){.user-name{display:none}}\n"] }]
|
|
26
26
|
}], propDecorators: { userName: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}], availableLanguages: [{
|
|
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
34
34
|
}], selectUiLanguage: [{
|
|
35
35
|
type: Output
|
|
36
36
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy91c2VyLW1lbnUvdXNlci1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy91c2VyLW1lbnUvdXNlci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7OztBQVN2RSxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBTWEsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLHVCQUFrQixHQUFtQixFQUFFLENBQUM7UUFFdkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQUN6RDs4R0FOWSxpQkFBaUI7a0dBQWpCLGlCQUFpQixrUENUOUIsZzRDQTZCQTs7MkZEcEJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxlQUFlOzhCQUtoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZUNvZGUgfSBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItdXNlci1tZW51JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2VyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlci1tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyTWVudUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSB1c2VyTmFtZSA9ICcnO1xyXG4gICAgQElucHV0KCkgYXZhaWxhYmxlTGFuZ3VhZ2VzOiBMYW5ndWFnZUNvZGVbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgdWlMYW5ndWFnZUFuZExvY2FsZTogW0xhbmd1YWdlQ29kZSwgc3RyaW5nIHwgdW5kZWZpbmVkXTtcclxuICAgIEBPdXRwdXQoKSBsb2dPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0VWlMYW5ndWFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxufVxyXG4iLCI8dmRyLWRyb3Bkb3duPlxuICAgIDxidXR0b24gY2xhc3M9XCJ0cmlnZ2VyIHVzZXItbWVudS1idG5cIiB2ZHJEcm9wZG93blRyaWdnZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWNpcmNsZVwiPlxuICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidXNlclwiIHNpemU9XCIxNlwiPjwvY2xyLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItbmFtZVwiPnt7IHVzZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICA8Y2xyLWljb24gY2xhc3M9XCJtZDpoaWRkZW5cIiBzaGFwZT1cImNhcmV0IGRvd25cIj48L2Nsci1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDx2ZHItZHJvcGRvd24tbWVudSB2ZHJQb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiPlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9zZXR0aW5ncycsICdwcm9maWxlJ11cIiB2ZHJEcm9wZG93bkl0ZW0gdGFiaW5kZXg9XCIwXCI+XG4gICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ1c2VyXCIgY2xhc3M9XCJpcy1zb2xpZFwiPjwvY2xyLWljb24+IHt7ICdzZXR0aW5ncy5wcm9maWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIxIDwgYXZhaWxhYmxlTGFuZ3VhZ2VzLmxlbmd0aFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RVaUxhbmd1YWdlLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb21tb24uc2VsZWN0LWRpc3BsYXktbGFuZ3VhZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJsYW5ndWFnZVwiPjwvY2xyLWljb24+IHt7IHVpTGFuZ3VhZ2VBbmRMb2NhbGU/LlswXSB8IGxvY2FsZUxhbmd1YWdlTmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dmRyLXRoZW1lLXN3aXRjaGVyIHZkckRyb3Bkb3duSXRlbSB0YWJpbmRleD1cIjBcIj48L3Zkci10aGVtZS1zd2l0Y2hlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmRyRHJvcGRvd25JdGVtIChjbGljayk9XCJsb2dPdXQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJsb2dvdXRcIj48L2Nsci1pY29uPiB7eyAnY29tbW9uLmxvZy1vdXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XG48L3Zkci1kcm9wZG93bj5cbiJdfQ==
|
|
@@ -580,6 +580,14 @@ export const DELETE_PRODUCT_VARIANT = gql `
|
|
|
580
580
|
}
|
|
581
581
|
}
|
|
582
582
|
`;
|
|
583
|
+
export const DELETE_PRODUCT_VARIANTS = gql `
|
|
584
|
+
mutation DeleteProductVariants($ids: [ID!]!) {
|
|
585
|
+
deleteProductVariants(ids: $ids) {
|
|
586
|
+
result
|
|
587
|
+
message
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
`;
|
|
583
591
|
export const GET_PRODUCT_VARIANT_OPTIONS = gql `
|
|
584
592
|
query GetProductVariantOptions($id: ID!) {
|
|
585
593
|
product(id: $id) {
|
|
@@ -823,4 +831,4 @@ export const DELETE_TAG = gql `
|
|
|
823
831
|
}
|
|
824
832
|
}
|
|
825
833
|
`;
|
|
826
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvZGF0YS9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQmhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7OztDQUs5QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7OztDQWMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0RyQyx1QkFBdUI7TUFDdkIsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0NwQyw2QkFBNkI7TUFDN0IsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0I1RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O01BWTNCLHVCQUF1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Q0FBQTs7Ozs7Ozs7O01BU3pCLFlBQVk7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUE7Ozs7OztNQU1wQixZQUFZO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFBOzs7Ozs7TUFNdkIsWUFBWTtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQTs7Ozs7O01BTXZCLFlBQVk7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Q0FPNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEVSUk9SX1JFU1VMVF9GUkFHTUVOVCB9IGZyb20gJy4vc2hhcmVkLWRlZmluaXRpb25zJztcclxuXHJcbmV4cG9ydCBjb25zdCBBU1NFVF9GUkFHTUVOVCA9IGdxbGBcclxuICAgIGZyYWdtZW50IEFzc2V0IG9uIEFzc2V0IHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICBmaWxlU2l6ZVxyXG4gICAgICAgIG1pbWVUeXBlXHJcbiAgICAgICAgdHlwZVxyXG4gICAgICAgIHByZXZpZXdcclxuICAgICAgICBzb3VyY2VcclxuICAgICAgICB3aWR0aFxyXG4gICAgICAgIGhlaWdodFxyXG4gICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICB4XHJcbiAgICAgICAgICAgIHlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVEFHX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgVGFnIG9uIFRhZyB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICB2YWx1ZVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgUHJvZHVjdE9wdGlvbkdyb3VwIG9uIFByb2R1Y3RPcHRpb25Hcm91cCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBjb2RlXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgbmFtZVxyXG4gICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfT1BUSU9OX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgUHJvZHVjdE9wdGlvbiBvbiBQcm9kdWN0T3B0aW9uIHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIGNvZGVcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgZ3JvdXBJZFxyXG4gICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVCA9IGdxbGBcclxuICAgIGZyYWdtZW50IFByb2R1Y3RWYXJpYW50IG9uIFByb2R1Y3RWYXJpYW50IHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIGVuYWJsZWRcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgcHJpY2VcclxuICAgICAgICBjdXJyZW5jeUNvZGVcclxuICAgICAgICBwcmljZVdpdGhUYXhcclxuICAgICAgICBzdG9ja09uSGFuZFxyXG4gICAgICAgIHN0b2NrQWxsb2NhdGVkXHJcbiAgICAgICAgdHJhY2tJbnZlbnRvcnlcclxuICAgICAgICBvdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgdXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFxyXG4gICAgICAgIHRheFJhdGVBcHBsaWVkIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0YXhDYXRlZ29yeSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgc2t1XHJcbiAgICAgICAgb3B0aW9ucyB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25cclxuICAgICAgICB9XHJcbiAgICAgICAgZmFjZXRWYWx1ZXMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgZmFjZXQge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgYXNzZXRzIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hhbm5lbHMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9GUkFHTUVOVH1cclxuICAgICR7QVNTRVRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9ERVRBSUxfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0RGV0YWlsIG9uIFByb2R1Y3Qge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgZW5hYmxlZFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICBzbHVnXHJcbiAgICAgICAgZGVzY3JpcHRpb25cclxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgYXNzZXRzIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgc2x1Z1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvblxyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb25Hcm91cHMge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBcclxuICAgICAgICB9XHJcbiAgICAgICAgZmFjZXRWYWx1ZXMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgZmFjZXQge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9EVUNUX09QVElPTl9HUk9VUF9XSVRIX09QVElPTlNfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9ucyBvbiBQcm9kdWN0T3B0aW9uR3JvdXAge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgY29kZVxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICB0cmFuc2xhdGlvbnMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1QgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0KCRpbnB1dDogVXBkYXRlUHJvZHVjdElucHV0ISwgJHZhcmlhbnRMaXN0T3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHVwZGF0ZVByb2R1Y3QoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0RGV0YWlsXHJcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0KG9wdGlvbnM6ICR2YXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENSRUFURV9QUk9EVUNUID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RJbnB1dCEsICR2YXJpYW50TGlzdE9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBjcmVhdGVQcm9kdWN0KGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdERldGFpbFxyXG4gICAgICAgICAgICB2YXJpYW50TGlzdChvcHRpb25zOiAkdmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uUHJvZHVjdFZhcmlhbnRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9ERVRBSUxfRlJBR01FTlR9XHJcbiAgICAke1BST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIERlbGV0ZVByb2R1Y3QoJGlkOiBJRCEpIHtcclxuICAgICAgICBkZWxldGVQcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgREVMRVRFX1BST0RVQ1RTID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlUHJvZHVjdHMoJGlkczogW0lEIV0hKSB7XHJcbiAgICAgICAgZGVsZXRlUHJvZHVjdHMoaWRzOiAkaWRzKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENSRUFURV9QUk9EVUNUX1ZBUklBTlRTID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdFZhcmlhbnRzKCRpbnB1dDogW0NyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXQhXSEpIHtcclxuICAgICAgICBjcmVhdGVQcm9kdWN0VmFyaWFudHMoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVQREFURV9QUk9EVUNUX1ZBUklBTlRTID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gVXBkYXRlUHJvZHVjdFZhcmlhbnRzKCRpbnB1dDogW1VwZGF0ZVByb2R1Y3RWYXJpYW50SW5wdXQhXSEpIHtcclxuICAgICAgICB1cGRhdGVQcm9kdWN0VmFyaWFudHMoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENSRUFURV9QUk9EVUNUX09QVElPTl9HUk9VUCA9IGdxbGBcclxuICAgIG11dGF0aW9uIENyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0ISkge1xyXG4gICAgICAgIGNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25Hcm91cFdpdGhPcHRpb25zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9HUk9VUF9XSVRIX09QVElPTlNfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdE9wdGlvbkdyb3VwKCRpZDogSUQhKSB7XHJcbiAgICAgICAgcHJvZHVjdE9wdGlvbkdyb3VwKGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwV2l0aE9wdGlvbnNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX1dJVEhfT1BUSU9OU19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBBRERfT1BUSU9OX1RPX0dST1VQID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQWRkT3B0aW9uVG9Hcm91cCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RPcHRpb25JbnB1dCEpIHtcclxuICAgICAgICBjcmVhdGVQcm9kdWN0T3B0aW9uKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgZ3JvdXBJZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBBRERfT1BUSU9OX0dST1VQX1RPX1BST0RVQ1QgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBBZGRPcHRpb25Hcm91cFRvUHJvZHVjdCgkcHJvZHVjdElkOiBJRCEsICRvcHRpb25Hcm91cElkOiBJRCEpIHtcclxuICAgICAgICBhZGRPcHRpb25Hcm91cFRvUHJvZHVjdChwcm9kdWN0SWQ6ICRwcm9kdWN0SWQsIG9wdGlvbkdyb3VwSWQ6ICRvcHRpb25Hcm91cElkKSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgb3B0aW9uR3JvdXBzIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBSZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0KCRwcm9kdWN0SWQ6IElEISwgJG9wdGlvbkdyb3VwSWQ6IElEISwgJGZvcmNlOiBCb29sZWFuKSB7XHJcbiAgICAgICAgcmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdChwcm9kdWN0SWQ6ICRwcm9kdWN0SWQsIG9wdGlvbkdyb3VwSWQ6ICRvcHRpb25Hcm91cElkLCBmb3JjZTogJGZvcmNlKSB7XHJcbiAgICAgICAgICAgIC4uLiBvbiBQcm9kdWN0IHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBzIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC4uLkVycm9yUmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtFUlJPUl9SRVNVTFRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfV0lUSF9WQVJJQU5UUyA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RXaXRoVmFyaWFudHMoJGlkOiBJRCEsICR2YXJpYW50TGlzdE9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdERldGFpbFxyXG4gICAgICAgICAgICB2YXJpYW50TGlzdChvcHRpb25zOiAkdmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uUHJvZHVjdFZhcmlhbnRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9ERVRBSUxfRlJBR01FTlR9XHJcbiAgICAke1BST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9TSU1QTEUgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0U2ltcGxlKCRpZDogSUQhKSB7XHJcbiAgICAgICAgcHJvZHVjdChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9EVUNUX0ZPUl9MSVNUX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgUHJvZHVjdEZvckxpc3Qgb24gUHJvZHVjdCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBlbmFibGVkXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgbmFtZVxyXG4gICAgICAgIHNsdWdcclxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhcmlhbnRMaXN0IHtcclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdExpc3QoJG9wdGlvbnM6IFByb2R1Y3RMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHByb2R1Y3RzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RGb3JMaXN0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9GT1JfTElTVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVBTID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdE9wdGlvbkdyb3VwcygkZmlsdGVyVGVybTogU3RyaW5nKSB7XHJcbiAgICAgICAgcHJvZHVjdE9wdGlvbkdyb3VwcyhmaWx0ZXJUZXJtOiAkZmlsdGVyVGVybSkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgb3B0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9BU1NFVF9MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0QXNzZXRMaXN0KCRvcHRpb25zOiBBc3NldExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgYXNzZXRzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgICAgICB0YWdzIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9BU1NFVCA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldEFzc2V0KCRpZDogSUQhKSB7XHJcbiAgICAgICAgYXNzZXQoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgICAgICB0YWdzIHtcclxuICAgICAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENSRUFURV9BU1NFVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBDcmVhdGVBc3NldHMoJGlucHV0OiBbQ3JlYXRlQXNzZXRJbnB1dCFdISkge1xyXG4gICAgICAgIGNyZWF0ZUFzc2V0cyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgIC4uLiBvbiBBc3NldCB7XHJcbiAgICAgICAgICAgICAgICB0YWdzIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAuLi4gb24gRXJyb3JSZXN1bHQge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVQREFURV9BU1NFVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFVwZGF0ZUFzc2V0KCRpbnB1dDogVXBkYXRlQXNzZXRJbnB1dCEpIHtcclxuICAgICAgICB1cGRhdGVBc3NldChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgREVMRVRFX0FTU0VUUyA9IGdxbGBcclxuICAgIG11dGF0aW9uIERlbGV0ZUFzc2V0cygkaW5wdXQ6IERlbGV0ZUFzc2V0c0lucHV0ISkge1xyXG4gICAgICAgIGRlbGV0ZUFzc2V0cyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNFQVJDSF9QUk9EVUNUUyA9IGdxbGBcclxuICAgIHF1ZXJ5IFNlYXJjaFByb2R1Y3RzKCRpbnB1dDogU2VhcmNoSW5wdXQhKSB7XHJcbiAgICAgICAgc2VhcmNoKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICBlbmFibGVkXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0SWRcclxuICAgICAgICAgICAgICAgIHByb2R1Y3ROYW1lXHJcbiAgICAgICAgICAgICAgICBzbHVnXHJcbiAgICAgICAgICAgICAgICBwcmljZVdpdGhUYXgge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLiBvbiBQcmljZVJhbmdlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWluXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAuLi4gb24gU2luZ2xlUHJpY2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByb2R1Y3RBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnRJZFxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnROYW1lXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudEFzc2V0IHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2t1XHJcbiAgICAgICAgICAgICAgICBjaGFubmVsSWRzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmFjZXRWYWx1ZXMge1xyXG4gICAgICAgICAgICAgICAgY291bnRcclxuICAgICAgICAgICAgICAgIGZhY2V0VmFsdWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIGZhY2V0IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNIID0gZ3FsYFxyXG4gICAgcXVlcnkgUHJvZHVjdFNlbGVjdG9yU2VhcmNoKCR0ZXJtOiBTdHJpbmchLCAkdGFrZTogSW50ISkge1xyXG4gICAgICAgIHNlYXJjaChpbnB1dDogeyBncm91cEJ5UHJvZHVjdDogZmFsc2UsIHRlcm06ICR0ZXJtLCB0YWtlOiAkdGFrZSB9KSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50SWRcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50TmFtZVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdEFzc2V0IHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcHJpY2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLiBvbiBTaW5nbGVQcmljZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcHJpY2VXaXRoVGF4IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi4gb24gU2luZ2xlUHJpY2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cCgkaW5wdXQ6IFVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0ISkge1xyXG4gICAgICAgIHVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25Hcm91cFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1RfT1BUSU9OID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gVXBkYXRlUHJvZHVjdE9wdGlvbigkaW5wdXQ6IFVwZGF0ZVByb2R1Y3RPcHRpb25JbnB1dCEpIHtcclxuICAgICAgICB1cGRhdGVQcm9kdWN0T3B0aW9uKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgREVMRVRFX1BST0RVQ1RfT1BUSU9OID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlUHJvZHVjdE9wdGlvbigkaWQ6IElEISkge1xyXG4gICAgICAgIGRlbGV0ZVByb2R1Y3RPcHRpb24oaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVF9WQVJJQU5UID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlUHJvZHVjdFZhcmlhbnQoJGlkOiBJRCEpIHtcclxuICAgICAgICBkZWxldGVQcm9kdWN0VmFyaWFudChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1ZBUklBTlRfT1BUSU9OUyA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucygkaWQ6IElEISkge1xyXG4gICAgICAgIHByb2R1Y3QoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG9wdGlvbkdyb3VwcyB7XHJcbiAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXJpYW50cyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICAgICAgcHJpY2VcclxuICAgICAgICAgICAgICAgIHByaWNlV2l0aFRheFxyXG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlXHJcbiAgICAgICAgICAgICAgICBzdG9ja09uSGFuZFxyXG4gICAgICAgICAgICAgICAgZW5hYmxlZFxyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwSWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfRlJBR01FTlR9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQXNzaWduUHJvZHVjdHNUb0NoYW5uZWwoJGlucHV0OiBBc3NpZ25Qcm9kdWN0c1RvQ2hhbm5lbElucHV0ISkge1xyXG4gICAgICAgIGFzc2lnblByb2R1Y3RzVG9DaGFubmVsKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY2hhbm5lbHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBBU1NJR05fVkFSSUFOVFNfVE9fQ0hBTk5FTCA9IGdxbGBcclxuICAgIG11dGF0aW9uIEFzc2lnblZhcmlhbnRzVG9DaGFubmVsKCRpbnB1dDogQXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsSW5wdXQhKSB7XHJcbiAgICAgICAgYXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY2hhbm5lbHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBSRU1PVkVfUFJPRFVDVFNfRlJPTV9DSEFOTkVMID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gUmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbCgkaW5wdXQ6IFJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWxJbnB1dCEpIHtcclxuICAgICAgICByZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY2hhbm5lbHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gUmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbCgkaW5wdXQ6IFJlbW92ZVByb2R1Y3RWYXJpYW50c0Zyb21DaGFubmVsSW5wdXQhKSB7XHJcbiAgICAgICAgcmVtb3ZlUHJvZHVjdFZhcmlhbnRzRnJvbUNoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1ZBUklBTlQgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudCgkaWQ6IElEISkge1xyXG4gICAgICAgIHByb2R1Y3RWYXJpYW50KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBza3VcclxuICAgICAgICAgICAgc3RvY2tPbkhhbmRcclxuICAgICAgICAgICAgc3RvY2tBbGxvY2F0ZWRcclxuICAgICAgICAgICAgc3RvY2tMZXZlbFxyXG4gICAgICAgICAgICB1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJpY2VcclxuICAgICAgICAgICAgcHJpY2VXaXRoVGF4XHJcbiAgICAgICAgICAgIHByb2R1Y3Qge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX1NJTVBMRSA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RWYXJpYW50TGlzdFNpbXBsZSgkb3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucyEsICRwcm9kdWN0SWQ6IElEKSB7XHJcbiAgICAgICAgcHJvZHVjdFZhcmlhbnRzKG9wdGlvbnM6ICRvcHRpb25zLCBwcm9kdWN0SWQ6ICRwcm9kdWN0SWQpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByb2R1Y3Qge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfRk9SX1BST0RVQ1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0KCRvcHRpb25zOiBQcm9kdWN0VmFyaWFudExpc3RPcHRpb25zISwgJHByb2R1Y3RJZDogSUQpIHtcclxuICAgICAgICBwcm9kdWN0VmFyaWFudHMob3B0aW9uczogJG9wdGlvbnMsIHByb2R1Y3RJZDogJHByb2R1Y3RJZCkge1xyXG4gICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudExpc3QoJG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMhKSB7XHJcbiAgICAgICAgcHJvZHVjdFZhcmlhbnRzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgZW5hYmxlZFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICBwcmljZVxyXG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlXHJcbiAgICAgICAgICAgICAgICBwcmljZVdpdGhUYXhcclxuICAgICAgICAgICAgICAgIHRyYWNrSW52ZW50b3J5XHJcbiAgICAgICAgICAgICAgICBvdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgICAgICAgICBzdG9ja0xldmVscyB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja0xvY2F0aW9uSWRcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja09uSGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrQWxsb2NhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tMb2NhdGlvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHVzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGRcclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfVEFHX0xJU1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRUYWdMaXN0KCRvcHRpb25zOiBUYWdMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHRhZ3Mob3B0aW9uczogJG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9UQUcgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRUYWcoJGlkOiBJRCEpIHtcclxuICAgICAgICB0YWcoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1RBR19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBDUkVBVEVfVEFHID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQ3JlYXRlVGFnKCRpbnB1dDogQ3JlYXRlVGFnSW5wdXQhKSB7XHJcbiAgICAgICAgY3JlYXRlVGFnKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1RBRyA9IGdxbGBcclxuICAgIG11dGF0aW9uIFVwZGF0ZVRhZygkaW5wdXQ6IFVwZGF0ZVRhZ0lucHV0ISkge1xyXG4gICAgICAgIHVwZGF0ZVRhZyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFTEVURV9UQUcgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBEZWxldGVUYWcoJGlkOiBJRCEpIHtcclxuICAgICAgICBkZWxldGVUYWcoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuIl19
|
|
834
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvZGF0YS9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQmhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7OztDQUs5QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7OztDQWMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0RyQyx1QkFBdUI7TUFDdkIsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0NwQyw2QkFBNkI7TUFDN0IsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0I1RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O01BWTNCLHVCQUF1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O01Bc0NyQyxjQUFjO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7TUFTekIsWUFBWTtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQTs7Ozs7O01BTXBCLFlBQVk7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUE7Ozs7OztNQU12QixZQUFZO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFBOzs7Ozs7TUFNdkIsWUFBWTtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQTs7Ozs7OztDQU81QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgRVJST1JfUkVTVUxUX0ZSQUdNRU5UIH0gZnJvbSAnLi9zaGFyZWQtZGVmaW5pdGlvbnMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFTU0VUX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgQXNzZXQgb24gQXNzZXQge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgbmFtZVxyXG4gICAgICAgIGZpbGVTaXplXHJcbiAgICAgICAgbWltZVR5cGVcclxuICAgICAgICB0eXBlXHJcbiAgICAgICAgcHJldmlld1xyXG4gICAgICAgIHNvdXJjZVxyXG4gICAgICAgIHdpZHRoXHJcbiAgICAgICAgaGVpZ2h0XHJcbiAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgeVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBUQUdfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBUYWcgb24gVGFnIHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9PUFRJT05fR1JPVVBfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0T3B0aW9uR3JvdXAgb24gUHJvZHVjdE9wdGlvbkdyb3VwIHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIGNvZGVcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9PUFRJT05fRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0T3B0aW9uIG9uIFByb2R1Y3RPcHRpb24ge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgY29kZVxyXG4gICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICBncm91cElkXHJcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgUHJvZHVjdFZhcmlhbnQgb24gUHJvZHVjdFZhcmlhbnQge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgZW5hYmxlZFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICBwcmljZVxyXG4gICAgICAgIGN1cnJlbmN5Q29kZVxyXG4gICAgICAgIHByaWNlV2l0aFRheFxyXG4gICAgICAgIHN0b2NrT25IYW5kXHJcbiAgICAgICAgc3RvY2tBbGxvY2F0ZWRcclxuICAgICAgICB0cmFja0ludmVudG9yeVxyXG4gICAgICAgIG91dE9mU3RvY2tUaHJlc2hvbGRcclxuICAgICAgICB1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgdGF4UmF0ZUFwcGxpZWQge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRheENhdGVnb3J5IHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgIH1cclxuICAgICAgICBza3VcclxuICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvblxyXG4gICAgICAgIH1cclxuICAgICAgICBmYWNldFZhbHVlcyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBmYWNldCB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgIH1cclxuICAgICAgICBhc3NldHMge1xyXG4gICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgIH1cclxuICAgICAgICB0cmFuc2xhdGlvbnMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgIH1cclxuICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0ZSQUdNRU5UfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVCA9IGdxbGBcclxuICAgIGZyYWdtZW50IFByb2R1Y3REZXRhaWwgb24gUHJvZHVjdCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBlbmFibGVkXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgbmFtZVxyXG4gICAgICAgIHNsdWdcclxuICAgICAgICBkZXNjcmlwdGlvblxyXG4gICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgIH1cclxuICAgICAgICBhc3NldHMge1xyXG4gICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgIH1cclxuICAgICAgICB0cmFuc2xhdGlvbnMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBzbHVnXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbkdyb3VwcyB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25Hcm91cFxyXG4gICAgICAgIH1cclxuICAgICAgICBmYWNldFZhbHVlcyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBmYWNldCB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNoYW5uZWxzIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY29kZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfRlJBR01FTlR9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfT1BUSU9OX0dST1VQX1dJVEhfT1BUSU9OU19GUkFHTUVOVCA9IGdxbGBcclxuICAgIGZyYWdtZW50IFByb2R1Y3RPcHRpb25Hcm91cFdpdGhPcHRpb25zIG9uIFByb2R1Y3RPcHRpb25Hcm91cCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBjb2RlXHJcbiAgICAgICAgbmFtZVxyXG4gICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9ucyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVUERBVEVfUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFVwZGF0ZVByb2R1Y3QoJGlucHV0OiBVcGRhdGVQcm9kdWN0SW5wdXQhLCAkdmFyaWFudExpc3RPcHRpb25zOiBQcm9kdWN0VmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgdXBkYXRlUHJvZHVjdChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3REZXRhaWxcclxuICAgICAgICAgICAgdmFyaWFudExpc3Qob3B0aW9uczogJHZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfREVUQUlMX0ZSQUdNRU5UfVxyXG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1QgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBDcmVhdGVQcm9kdWN0KCRpbnB1dDogQ3JlYXRlUHJvZHVjdElucHV0ISwgJHZhcmlhbnRMaXN0T3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIGNyZWF0ZVByb2R1Y3QoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0RGV0YWlsXHJcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0KG9wdGlvbnM6ICR2YXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFTEVURV9QUk9EVUNUID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlUHJvZHVjdCgkaWQ6IElEISkge1xyXG4gICAgICAgIGRlbGV0ZVByb2R1Y3QoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBEZWxldGVQcm9kdWN0cygkaWRzOiBbSUQhXSEpIHtcclxuICAgICAgICBkZWxldGVQcm9kdWN0cyhpZHM6ICRpZHMpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBDcmVhdGVQcm9kdWN0VmFyaWFudHMoJGlucHV0OiBbQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCFdISkge1xyXG4gICAgICAgIGNyZWF0ZVByb2R1Y3RWYXJpYW50cyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0VmFyaWFudHMoJGlucHV0OiBbVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCFdISkge1xyXG4gICAgICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50cyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwKCRpbnB1dDogQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQhKSB7XHJcbiAgICAgICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwV2l0aE9wdGlvbnNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX1dJVEhfT1BUSU9OU19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0T3B0aW9uR3JvdXAoJGlkOiBJRCEpIHtcclxuICAgICAgICBwcm9kdWN0T3B0aW9uR3JvdXAoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9uc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfV0lUSF9PUFRJT05TX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFERF9PUFRJT05fVE9fR1JPVVAgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBBZGRPcHRpb25Ub0dyb3VwKCRpbnB1dDogQ3JlYXRlUHJvZHVjdE9wdGlvbklucHV0ISkge1xyXG4gICAgICAgIGNyZWF0ZVByb2R1Y3RPcHRpb24oaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICBncm91cElkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIEFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KCRwcm9kdWN0SWQ6IElEISwgJG9wdGlvbkdyb3VwSWQ6IElEISkge1xyXG4gICAgICAgIGFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KHByb2R1Y3RJZDogJHByb2R1Y3RJZCwgb3B0aW9uR3JvdXBJZDogJG9wdGlvbkdyb3VwSWQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICBvcHRpb25Hcm91cHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBSRU1PVkVfT1BUSU9OX0dST1VQX0ZST01fUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QoJHByb2R1Y3RJZDogSUQhLCAkb3B0aW9uR3JvdXBJZDogSUQhLCAkZm9yY2U6IEJvb2xlYW4pIHtcclxuICAgICAgICByZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0KHByb2R1Y3RJZDogJHByb2R1Y3RJZCwgb3B0aW9uR3JvdXBJZDogJG9wdGlvbkdyb3VwSWQsIGZvcmNlOiAkZm9yY2UpIHtcclxuICAgICAgICAgICAgLi4uIG9uIFByb2R1Y3Qge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICBvcHRpb25Hcm91cHMge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLi4uRXJyb3JSZXN1bHRcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0VSUk9SX1JFU1VMVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9XSVRIX1ZBUklBTlRTID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdFdpdGhWYXJpYW50cygkaWQ6IElEISwgJHZhcmlhbnRMaXN0T3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHByb2R1Y3QoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0RGV0YWlsXHJcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0KG9wdGlvbnM6ICR2YXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1NJTVBMRSA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RTaW1wbGUoJGlkOiBJRCEpIHtcclxuICAgICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfRk9SX0xJU1RfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0Rm9yTGlzdCBvbiBQcm9kdWN0IHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIGVuYWJsZWRcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgc2x1Z1xyXG4gICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyaWFudExpc3Qge1xyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX0xJU1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0TGlzdCgkb3B0aW9uczogUHJvZHVjdExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgcHJvZHVjdHMob3B0aW9uczogJG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgLi4uUHJvZHVjdEZvckxpc3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX0ZPUl9MSVNUX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUFMgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0T3B0aW9uR3JvdXBzKCRmaWx0ZXJUZXJtOiBTdHJpbmcpIHtcclxuICAgICAgICBwcm9kdWN0T3B0aW9uR3JvdXBzKGZpbHRlclRlcm06ICRmaWx0ZXJUZXJtKSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX0FTU0VUX0xJU1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRBc3NldExpc3QoJG9wdGlvbnM6IEFzc2V0TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBhc3NldHMob3B0aW9uczogJG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX0FTU0VUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0QXNzZXQoJGlkOiBJRCEpIHtcclxuICAgICAgICBhc3NldChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX0FTU0VUUyA9IGdxbGBcclxuICAgIG11dGF0aW9uIENyZWF0ZUFzc2V0cygkaW5wdXQ6IFtDcmVhdGVBc3NldElucHV0IV0hKSB7XHJcbiAgICAgICAgY3JlYXRlQXNzZXRzKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgLi4uIG9uIEFzc2V0IHtcclxuICAgICAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC4uLiBvbiBFcnJvclJlc3VsdCB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX0FTU0VUID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gVXBkYXRlQXNzZXQoJGlucHV0OiBVcGRhdGVBc3NldElucHV0ISkge1xyXG4gICAgICAgIHVwZGF0ZUFzc2V0KGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgdGFncyB7XHJcbiAgICAgICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7QVNTRVRfRlJBR01FTlR9XHJcbiAgICAke1RBR19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfQVNTRVRTID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlQXNzZXRzKCRpbnB1dDogRGVsZXRlQXNzZXRzSW5wdXQhKSB7XHJcbiAgICAgICAgZGVsZXRlQXNzZXRzKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgU0VBUkNIX1BST0RVQ1RTID0gZ3FsYFxyXG4gICAgcXVlcnkgU2VhcmNoUHJvZHVjdHMoJGlucHV0OiBTZWFyY2hJbnB1dCEpIHtcclxuICAgICAgICBzZWFyY2goaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RJZFxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdE5hbWVcclxuICAgICAgICAgICAgICAgIHNsdWdcclxuICAgICAgICAgICAgICAgIHByaWNlV2l0aFRheCB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uIG9uIFByaWNlUmFuZ2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC4uLiBvbiBTaW5nbGVQcmljZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdEFzc2V0IHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudElkXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudE5hbWVcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50QXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBza3VcclxuICAgICAgICAgICAgICAgIGNoYW5uZWxJZHNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmYWNldFZhbHVlcyB7XHJcbiAgICAgICAgICAgICAgICBjb3VudFxyXG4gICAgICAgICAgICAgICAgZmFjZXRWYWx1ZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgZmFjZXQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9TRUxFQ1RPUl9TRUFSQ0ggPSBncWxgXHJcbiAgICBxdWVyeSBQcm9kdWN0U2VsZWN0b3JTZWFyY2goJHRlcm06IFN0cmluZyEsICR0YWtlOiBJbnQhKSB7XHJcbiAgICAgICAgc2VhcmNoKGlucHV0OiB7IGdyb3VwQnlQcm9kdWN0OiBmYWxzZSwgdGVybTogJHRlcm0sIHRha2U6ICR0YWtlIH0pIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnRJZFxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnROYW1lXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0QXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwcmljZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uIG9uIFNpbmdsZVByaWNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwcmljZVdpdGhUYXgge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLiBvbiBTaW5nbGVQcmljZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2t1XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKCRpbnB1dDogVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQhKSB7XHJcbiAgICAgICAgdXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9HUk9VUF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVUERBVEVfUFJPRFVDVF9PUFRJT04gPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0T3B0aW9uKCRpbnB1dDogVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0ISkge1xyXG4gICAgICAgIHVwZGF0ZVByb2R1Y3RPcHRpb24oaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVF9PUFRJT04gPSBncWxgXHJcbiAgICBtdXRhdGlvbiBEZWxldGVQcm9kdWN0T3B0aW9uKCRpZDogSUQhKSB7XHJcbiAgICAgICAgZGVsZXRlUHJvZHVjdE9wdGlvbihpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFTEVURV9QUk9EVUNUX1ZBUklBTlQgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBEZWxldGVQcm9kdWN0VmFyaWFudCgkaWQ6IElEISkge1xyXG4gICAgICAgIGRlbGV0ZVByb2R1Y3RWYXJpYW50KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgREVMRVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBEZWxldGVQcm9kdWN0VmFyaWFudHMoJGlkczogW0lEIV0hKSB7XHJcbiAgICAgICAgZGVsZXRlUHJvZHVjdFZhcmlhbnRzKGlkczogJGlkcykge1xyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9WQVJJQU5UX09QVElPTlMgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMoJGlkOiBJRCEpIHtcclxuICAgICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBvcHRpb25Hcm91cHMge1xyXG4gICAgICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyaWFudHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICBlbmFibGVkXHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICBza3VcclxuICAgICAgICAgICAgICAgIHByaWNlXHJcbiAgICAgICAgICAgICAgICBwcmljZVdpdGhUYXhcclxuICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZVxyXG4gICAgICAgICAgICAgICAgc3RvY2tPbkhhbmRcclxuICAgICAgICAgICAgICAgIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgICAgICBncm91cElkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBBU1NJR05fUFJPRFVDVFNfVE9fQ0hBTk5FTCA9IGdxbGBcclxuICAgIG11dGF0aW9uIEFzc2lnblByb2R1Y3RzVG9DaGFubmVsKCRpbnB1dDogQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxJbnB1dCEpIHtcclxuICAgICAgICBhc3NpZ25Qcm9kdWN0c1RvQ2hhbm5lbChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQVNTSUdOX1ZBUklBTlRTX1RPX0NIQU5ORUwgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBBc3NpZ25WYXJpYW50c1RvQ2hhbm5lbCgkaW5wdXQ6IEFzc2lnblByb2R1Y3RWYXJpYW50c1RvQ2hhbm5lbElucHV0ISkge1xyXG4gICAgICAgIGFzc2lnblByb2R1Y3RWYXJpYW50c1RvQ2hhbm5lbChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUkVNT1ZFX1BST0RVQ1RTX0ZST01fQ0hBTk5FTCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWwoJGlucHV0OiBSZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQhKSB7XHJcbiAgICAgICAgcmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUkVNT1ZFX1ZBUklBTlRTX0ZST01fQ0hBTk5FTCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFJlbW92ZVZhcmlhbnRzRnJvbUNoYW5uZWwoJGlucHV0OiBSZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0ISkge1xyXG4gICAgICAgIHJlbW92ZVByb2R1Y3RWYXJpYW50c0Zyb21DaGFubmVsKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY2hhbm5lbHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9WQVJJQU5UID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdFZhcmlhbnQoJGlkOiBJRCEpIHtcclxuICAgICAgICBwcm9kdWN0VmFyaWFudChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgc2t1XHJcbiAgICAgICAgICAgIHN0b2NrT25IYW5kXHJcbiAgICAgICAgICAgIHN0b2NrQWxsb2NhdGVkXHJcbiAgICAgICAgICAgIHN0b2NrTGV2ZWxcclxuICAgICAgICAgICAgdXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFxyXG4gICAgICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcclxuICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByaWNlXHJcbiAgICAgICAgICAgIHByaWNlV2l0aFRheFxyXG4gICAgICAgICAgICBwcm9kdWN0IHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGUoJG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMhLCAkcHJvZHVjdElkOiBJRCkge1xyXG4gICAgICAgIHByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiAkb3B0aW9ucywgcHJvZHVjdElkOiAkcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICBza3VcclxuICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0IHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX0ZPUl9QUk9EVUNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdFZhcmlhbnRMaXN0Rm9yUHJvZHVjdCgkb3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucyEsICRwcm9kdWN0SWQ6IElEKSB7XHJcbiAgICAgICAgcHJvZHVjdFZhcmlhbnRzKG9wdGlvbnM6ICRvcHRpb25zLCBwcm9kdWN0SWQ6ICRwcm9kdWN0SWQpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgLi4uUHJvZHVjdFZhcmlhbnRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdFZhcmlhbnRMaXN0KCRvcHRpb25zOiBQcm9kdWN0VmFyaWFudExpc3RPcHRpb25zISkge1xyXG4gICAgICAgIHByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiAkb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgcHJpY2VcclxuICAgICAgICAgICAgICAgIGN1cnJlbmN5Q29kZVxyXG4gICAgICAgICAgICAgICAgcHJpY2VXaXRoVGF4XHJcbiAgICAgICAgICAgICAgICB0cmFja0ludmVudG9yeVxyXG4gICAgICAgICAgICAgICAgb3V0T2ZTdG9ja1RocmVzaG9sZFxyXG4gICAgICAgICAgICAgICAgc3RvY2tMZXZlbHMge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tMb2NhdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tPbkhhbmRcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja0FsbG9jYXRlZFxyXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrTG9jYXRpb24ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgICAgICAgICBza3VcclxuICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7QVNTRVRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1RBR19MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0VGFnTGlzdCgkb3B0aW9uczogVGFnTGlzdE9wdGlvbnMpIHtcclxuICAgICAgICB0YWdzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1RBR19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfVEFHID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0VGFnKCRpZDogSUQhKSB7XHJcbiAgICAgICAgdGFnKGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1RBRyA9IGdxbGBcclxuICAgIG11dGF0aW9uIENyZWF0ZVRhZygkaW5wdXQ6IENyZWF0ZVRhZ0lucHV0ISkge1xyXG4gICAgICAgIGNyZWF0ZVRhZyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVQREFURV9UQUcgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVUYWcoJGlucHV0OiBVcGRhdGVUYWdJbnB1dCEpIHtcclxuICAgICAgICB1cGRhdGVUYWcoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1RBR19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfVEFHID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlVGFnKCRpZDogSUQhKSB7XHJcbiAgICAgICAgZGVsZXRlVGFnKGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcbiJdfQ==
|
|
@@ -159,4 +159,4 @@ export class DefaultInterceptor {
|
|
|
159
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DefaultInterceptor, decorators: [{
|
|
160
160
|
type: Injectable
|
|
161
161
|
}], ctorParameters: function () { return [{ type: i1.DataService }, { type: i0.Injector }, { type: i2.AuthService }, { type: i3.Router }, { type: i4.LocalStorageService }]; } });
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL2ludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFLakIsWUFBWSxHQUNmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3JGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7QUFJeEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxDQUFDO0FBRWhEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFJM0IsWUFDWSxXQUF3QixFQUN4QixRQUFrQixFQUNsQixXQUF3QixFQUN4QixNQUFjLEVBQ2QsbUJBQXdDO1FBSnhDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFSbkMsZ0JBQVcsR0FBaUMsUUFBUSxDQUFDO1FBVWxFLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLEVBQUUsQ0FBQyxrQkFBa0Is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bUJBQW1CLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN4RDtTQUNKO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDbEQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssbUJBQW1CLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM3RCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtRQUNELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQXRKUSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIEh0dHBFdmVudCxcclxuICAgIEh0dHBIYW5kbGVyLFxyXG4gICAgSHR0cEludGVyY2VwdG9yLFxyXG4gICAgSHR0cFJlcXVlc3QsXHJcbiAgICBIdHRwUmVzcG9uc2UsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7IERFRkFVTFRfQVVUSF9UT0tFTl9IRUFERVJfS0VZIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQWRtaW5VaUNvbmZpZyB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXR5cGVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGdldEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2FwcC5jb25maWcnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9hdXRoL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbG9jYWwtc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1JFRElSRUNUX1BBUkFNID0gJ3JlZGlyZWN0VG8nO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBkZWZhdWx0IGludGVyY2VwdG9yIGV4YW1pbmVzIGFsbCBIVFRQIHJlcXVlc3RzICYgcmVzcG9uc2VzIGFuZCBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHJlcXVlc3Rpbmcgc3RhdGVcclxuICogYW5kIHNob3dzIGVycm9yIG5vdGlmaWNhdGlvbnMuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2tlbk1ldGhvZDogQWRtaW5VaUNvbmZpZ1sndG9rZW5NZXRob2QnXSA9ICdjb29raWUnO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoVG9rZW5IZWFkZXJLZXk6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMudG9rZW5NZXRob2QgPSBnZXRBcHBDb25maWcoKS50b2tlbk1ldGhvZDtcclxuICAgICAgICB0aGlzLmF1dGhUb2tlbkhlYWRlcktleSA9IGdldEFwcENvbmZpZygpLmF1dGhUb2tlbkhlYWRlcktleSB8fCBERUZBVUxUX0FVVEhfVE9LRU5fSEVBREVSX0tFWTtcclxuICAgIH1cclxuXHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5zdGFydFJlcXVlc3QoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jbGllbnQudWlTdGF0ZSgpLnNpbmdsZSQucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHVpU3RhdGUgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcS5jbG9uZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZTogdWlTdGF0ZT8uY29udGVudExhbmd1YWdlID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRhcChcclxuICAgICAgICAgICAgICAgIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0ZvckF1dGhUb2tlbihldmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5T25FcnJvcihldmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LmNvbXBsZXRlUmVxdWVzdCgpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeU9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQuY29tcGxldGVSZXF1ZXN0KCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24oZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG5vdGlmeU9uRXJyb3IocmVzcG9uc2U6IEh0dHBSZXNwb25zZTxhbnk+IHwgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGFwaUhvc3QsIGFwaVBvcnQgfSA9IGdldEFwcENvbmZpZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24oXyhgZXJyb3IuY291bGQtbm90LWNvbm5lY3QtdG8tc2VydmVyYCksIHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGAke2FwaUhvc3R9OiR7YXBpUG9ydH1gLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA1MDMgJiYgcmVzcG9uc2UudXJsPy5lbmRzV2l0aCgnL2hlYWx0aCcpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbihfKGBlcnJvci5oZWFsdGgtY2hlY2stZmFpbGVkYCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24odGhpcy5leHRyYWN0RXJyb3JGcm9tSHR0cFJlc3BvbnNlKHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBHcmFwaFFMIGVycm9ycyBzdGlsbCByZXR1cm4gMjAwIE9LIHJlc3BvbnNlcywgYnV0IGhhdmUgdGhlIGFjdHVhbCBlcnJvciBtZXNzYWdlXHJcbiAgICAgICAgICAgIC8vIGluc2lkZSB0aGUgYm9keSBvZiB0aGUgcmVzcG9uc2UuXHJcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoUUxFcnJvcnMgPSByZXNwb25zZS5ib2R5LmVycm9ycztcclxuICAgICAgICAgICAgaWYgKGdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShncmFwaFFMRXJyb3JzKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDb2RlOiBzdHJpbmcgPSBncmFwaFFMRXJyb3JzWzBdPy5leHRlbnNpb25zPy5jb2RlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmaXJzdENvZGUgPT09ICdGT1JCSURERU4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dPdXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxvZ2luVXJsIH0gPSBnZXRBcHBDb25maWcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBgbG9naW5VcmxgIHdoaWNoIGlzIGV4dGVybmFsIHRvIHRoZSBBZG1pblVJLCByZWRpcmVjdCB0byBpdCAod2l0aCBubyBxdWVyeSBwYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9naW5VcmwgJiYgIXRoaXMuYXJlVXJsc09uU2FtZU9yaWdpbihsb2dpblVybCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5Vcmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVsc2UsIHdlIGJ1aWxkIHRoZSBsb2dpbiBwYXRoIGZyb20gdGhlIGxvZ2luIHVybCBpZiBvbmUgaXMgcHJvdmlkZWQgb3IgZmFsbGJhY2sgdG8gYC9sb2dpbmBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9naW5QYXRoID0gbG9naW5VcmwgPyB0aGlzLmdldFBhdGhGcm9tTG9naW5VcmwobG9naW5VcmwpIDogJy9sb2dpbic7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcyhsb2dpblBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gZ3JhcGhRTEVycm9yc1swXS5wYXRoLmpvaW4oJyA+ICcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24oXyhgZXJyb3IuNDAzLWZvcmJpZGRlbmApLCB7IHBhdGggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5hdmlnYXRlIHRvIHRoZSBgbG9naW5QYXRoYCByb3V0ZSBieSBlbnN1cmluZyB0aGUgcXVlcnkgcGFyYW0gaW4gY2hhcmdlIG9mIHRoZSByZWRpcmVjdGlvbiBpcyBwcm92aWRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbG9naW5QYXRoXSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQVVUSF9SRURJUkVDVF9QQVJBTV06IGJ0b2EodGhpcy5yb3V0ZXIudXJsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdENvZGUgPT09ICdDSEFOTkVMX05PVF9GT1VORCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZ3JhcGhRTEVycm9ycy5tYXAoZXJyID0+IGVyci5tZXNzYWdlKS5qb2luKCdcXG4nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlKCdhY3RpdmVDaGFubmVsVG9rZW4nKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGdyYXBoUUxFcnJvcnMubWFwKGVyciA9PiBlcnIubWVzc2FnZSkuam9pbignXFxuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24obWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBleHRyYWN0RXJyb3JGcm9tSHR0cFJlc3BvbnNlKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzcG9uc2UuZXJyb3IuZXJyb3JzO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9ycykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycy5tYXAoZSA9PiBlLm1lc3NhZ2UpLmpvaW4oJ1xcbicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdlIG5lZWQgdG8gbGF6aWx5IGluamVjdCB0aGUgTm90aWZpY2F0aW9uU2VydmljZSBzaW5jZSBpdCBkZXBlbmRzIG9uIHRoZSBJMThuU2VydmljZSB3aGljaFxyXG4gICAgICogZXZlbnR1YWxseSBkZXBlbmRzIG9uIHRoZSBIdHRwQ2xpZW50ICh1c2VkIHRvIGxvYWQgbWVzc2FnZXMgZnJvbSBqc29uIGZpbGVzKS4gSWYgd2Ugd2VyZSB0b1xyXG4gICAgICogZGlyZWN0bHkgaW5qZWN0IE5vdGlmaWNhdGlvblNlcnZpY2UgaW50byB0aGUgY29uc3RydWN0b3IsIHdlIGdldCBhIGN5Y2xpYyBkZXBlbmRlbmN5LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbihtZXNzYWdlOiBzdHJpbmcsIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5vdGlmaWNhdGlvblNlcnZpY2U+KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xyXG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IobWVzc2FnZSwgdmFycyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB0aGUgc2VydmVyIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBcImJlYXJlclwiIHRva2VuTWV0aG9kLCBlYWNoIHJlc3BvbnNlIHNob3VsZCBiZSBjaGVja2VkXHJcbiAgICAgKiBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbiBhdXRoIHRva2VuLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNoZWNrRm9yQXV0aFRva2VuKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8YW55Pikge1xyXG4gICAgICAgIGlmICh0aGlzLnRva2VuTWV0aG9kID09PSAnYmVhcmVyJykge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRoVG9rZW4gPSByZXNwb25zZS5oZWFkZXJzLmdldCh0aGlzLmF1dGhUb2tlbkhlYWRlcktleSk7XHJcbiAgICAgICAgICAgIGlmIChhdXRoVG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXQoJ2F1dGhUb2tlbicsIGF1dGhUb2tlbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmUgaWYgdHdvIHVybHMgYXJlIG9uIHRoZSBzYW1lIG9yaWdpbi5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhcmVVcmxzT25TYW1lT3JpZ2luKHVybEE6IHN0cmluZywgdXJsQjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVUkwodXJsQSkub3JpZ2luID09PSBuZXcgVVJMKHVybEIpLm9yaWdpbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBwcm92aWRlZCBgbG9naW5VcmxgIGlzIG9uIHRoZSBzYW1lIG9yaWdpbiB0aGFuIHRoZSBBZG1pblVJLCByZXR1cm4gdGhlIHBhdGhcclxuICAgICAqIGFmdGVyIHRoZSBgL2FkbWluYC5cclxuICAgICAqIEVsc2UsIHJldHVybiB0aGUgd2hvbGUgbG9naW4gdXJsLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFBhdGhGcm9tTG9naW5VcmwobG9naW5Vcmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFyZVVybHNPblNhbWVPcmlnaW4obG9naW5VcmwsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsb2dpblVybDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxvZ2luVXJsLnNwbGl0KCcvYWRtaW4nKVsxXTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL2ludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFLakIsWUFBWSxHQUNmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3JGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7QUFJeEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxDQUFDO0FBRWhEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFJM0IsWUFDWSxXQUF3QixFQUN4QixRQUFrQixFQUNsQixXQUF3QixFQUN4QixNQUFjLEVBQ2QsbUJBQXdDO1FBSnhDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFSbkMsZ0JBQVcsR0FBaUMsUUFBUSxDQUFDO1FBVWxFLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLEVBQUUsQ0FBQyxrQkFBa0Is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bUJBQW1CLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN4RDtTQUNKO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDbEQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssbUJBQW1CLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM3RCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtRQUNELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQXRKUSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgSHR0cEV2ZW50LFxuICAgIEh0dHBIYW5kbGVyLFxuICAgIEh0dHBJbnRlcmNlcHRvcixcbiAgICBIdHRwUmVxdWVzdCxcbiAgICBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xuaW1wb3J0IHsgREVGQVVMVF9BVVRIX1RPS0VOX0hFQURFUl9LRVkgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC1jb25zdGFudHMnO1xuaW1wb3J0IHsgQWRtaW5VaUNvbmZpZyB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXR5cGVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBnZXRBcHBDb25maWcgfSBmcm9tICcuLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbG9jYWwtc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEFVVEhfUkVESVJFQ1RfUEFSQU0gPSAncmVkaXJlY3RUbyc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgaW50ZXJjZXB0b3IgZXhhbWluZXMgYWxsIEhUVFAgcmVxdWVzdHMgJiByZXNwb25zZXMgYW5kIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcmVxdWVzdGluZyBzdGF0ZVxuICogYW5kIHNob3dzIGVycm9yIG5vdGlmaWNhdGlvbnMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5NZXRob2Q6IEFkbWluVWlDb25maWdbJ3Rva2VuTWV0aG9kJ10gPSAnY29va2llJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhUb2tlbkhlYWRlcktleTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy50b2tlbk1ldGhvZCA9IGdldEFwcENvbmZpZygpLnRva2VuTWV0aG9kO1xuICAgICAgICB0aGlzLmF1dGhUb2tlbkhlYWRlcktleSA9IGdldEFwcENvbmZpZygpLmF1dGhUb2tlbkhlYWRlcktleSB8fCBERUZBVUxUX0FVVEhfVE9LRU5fSEVBREVSX0tFWTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQuc3RhcnRSZXF1ZXN0KCkuc3Vic2NyaWJlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC51aVN0YXRlKCkuc2luZ2xlJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHVpU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXEuY2xvbmUoe1xuICAgICAgICAgICAgICAgICAgICBzZXRQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZTogdWlTdGF0ZT8uY29udGVudExhbmd1YWdlID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKFxuICAgICAgICAgICAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yQXV0aFRva2VuKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5T25FcnJvcihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5jb21wbGV0ZVJlcXVlc3QoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeU9uRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LmNvbXBsZXRlUmVxdWVzdCgpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24oZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlPbkVycm9yKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8YW55PiB8IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhcGlIb3N0LCBhcGlQb3J0IH0gPSBnZXRBcHBDb25maWcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbihfKGBlcnJvci5jb3VsZC1ub3QtY29ubmVjdC10by1zZXJ2ZXJgKSwge1xuICAgICAgICAgICAgICAgICAgICB1cmw6IGAke2FwaUhvc3R9OiR7YXBpUG9ydH1gLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDUwMyAmJiByZXNwb25zZS51cmw/LmVuZHNXaXRoKCcvaGVhbHRoJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbihfKGBlcnJvci5oZWFsdGgtY2hlY2stZmFpbGVkYCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbih0aGlzLmV4dHJhY3RFcnJvckZyb21IdHRwUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEdyYXBoUUwgZXJyb3JzIHN0aWxsIHJldHVybiAyMDAgT0sgcmVzcG9uc2VzLCBidXQgaGF2ZSB0aGUgYWN0dWFsIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICAgIC8vIGluc2lkZSB0aGUgYm9keSBvZiB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICBjb25zdCBncmFwaFFMRXJyb3JzID0gcmVzcG9uc2UuYm9keS5lcnJvcnM7XG4gICAgICAgICAgICBpZiAoZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDb2RlOiBzdHJpbmcgPSBncmFwaFFMRXJyb3JzWzBdPy5leHRlbnNpb25zPy5jb2RlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0Q29kZSA9PT0gJ0ZPUkJJRERFTicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dPdXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBsb2dpblVybCB9ID0gZ2V0QXBwQ29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGBsb2dpblVybGAgd2hpY2ggaXMgZXh0ZXJuYWwgdG8gdGhlIEFkbWluVUksIHJlZGlyZWN0IHRvIGl0ICh3aXRoIG5vIHF1ZXJ5IHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9naW5VcmwgJiYgIXRoaXMuYXJlVXJsc09uU2FtZU9yaWdpbihsb2dpblVybCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWxzZSwgd2UgYnVpbGQgdGhlIGxvZ2luIHBhdGggZnJvbSB0aGUgbG9naW4gdXJsIGlmIG9uZSBpcyBwcm92aWRlZCBvciBmYWxsYmFjayB0byBgL2xvZ2luYFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9naW5QYXRoID0gbG9naW5VcmwgPyB0aGlzLmdldFBhdGhGcm9tTG9naW5VcmwobG9naW5VcmwpIDogJy9sb2dpbic7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluY2x1ZGVzKGxvZ2luUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gZ3JhcGhRTEVycm9yc1swXS5wYXRoLmpvaW4oJyA+ICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheUVycm9yTm90aWZpY2F0aW9uKF8oYGVycm9yLjQwMy1mb3JiaWRkZW5gKSwgeyBwYXRoIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgYGxvZ2luUGF0aGAgcm91dGUgYnkgZW5zdXJpbmcgdGhlIHF1ZXJ5IHBhcmFtIGluIGNoYXJnZSBvZiB0aGUgcmVkaXJlY3Rpb24gaXMgcHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtsb2dpblBhdGhdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FVVEhfUkVESVJFQ1RfUEFSQU1dOiBidG9hKHRoaXMucm91dGVyLnVybCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0Q29kZSA9PT0gJ0NIQU5ORUxfTk9UX0ZPVU5EJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZ3JhcGhRTEVycm9ycy5tYXAoZXJyID0+IGVyci5tZXNzYWdlKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5RXJyb3JOb3RpZmljYXRpb24obWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmUoJ2FjdGl2ZUNoYW5uZWxUb2tlbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBncmFwaFFMRXJyb3JzLm1hcChlcnIgPT4gZXJyLm1lc3NhZ2UpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck5vdGlmaWNhdGlvbihtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RFcnJvckZyb21IdHRwUmVzcG9uc2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzcG9uc2UuZXJyb3IuZXJyb3JzO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJvcnMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzLm1hcChlID0+IGUubWVzc2FnZSkuam9pbignXFxuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIG5lZWQgdG8gbGF6aWx5IGluamVjdCB0aGUgTm90aWZpY2F0aW9uU2VydmljZSBzaW5jZSBpdCBkZXBlbmRzIG9uIHRoZSBJMThuU2VydmljZSB3aGljaFxuICAgICAqIGV2ZW50dWFsbHkgZGVwZW5kcyBvbiB0aGUgSHR0cENsaWVudCAodXNlZCB0byBsb2FkIG1lc3NhZ2VzIGZyb20ganNvbiBmaWxlcykuIElmIHdlIHdlcmUgdG9cbiAgICAgKiBkaXJlY3RseSBpbmplY3QgTm90aWZpY2F0aW9uU2VydmljZSBpbnRvIHRoZSBjb25zdHJ1Y3Rvciwgd2UgZ2V0IGEgY3ljbGljIGRlcGVuZGVuY3kuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwbGF5RXJyb3JOb3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCB2YXJzPzogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8Tm90aWZpY2F0aW9uU2VydmljZT4oTm90aWZpY2F0aW9uU2VydmljZSk7XG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IobWVzc2FnZSwgdmFycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHNlcnZlciBpcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgXCJiZWFyZXJcIiB0b2tlbk1ldGhvZCwgZWFjaCByZXNwb25zZSBzaG91bGQgYmUgY2hlY2tlZFxuICAgICAqIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGF1dGggdG9rZW4uXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGVja0ZvckF1dGhUb2tlbihyZXNwb25zZTogSHR0cFJlc3BvbnNlPGFueT4pIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5NZXRob2QgPT09ICdiZWFyZXInKSB7XG4gICAgICAgICAgICBjb25zdCBhdXRoVG9rZW4gPSByZXNwb25zZS5oZWFkZXJzLmdldCh0aGlzLmF1dGhUb2tlbkhlYWRlcktleSk7XG4gICAgICAgICAgICBpZiAoYXV0aFRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldCgnYXV0aFRva2VuJywgYXV0aFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiB0d28gdXJscyBhcmUgb24gdGhlIHNhbWUgb3JpZ2luLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXJlVXJsc09uU2FtZU9yaWdpbih1cmxBOiBzdHJpbmcsIHVybEI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbmV3IFVSTCh1cmxBKS5vcmlnaW4gPT09IG5ldyBVUkwodXJsQikub3JpZ2luO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHRoZSBwcm92aWRlZCBgbG9naW5VcmxgIGlzIG9uIHRoZSBzYW1lIG9yaWdpbiB0aGFuIHRoZSBBZG1pblVJLCByZXR1cm4gdGhlIHBhdGhcbiAgICAgKiBhZnRlciB0aGUgYC9hZG1pbmAuXG4gICAgICogRWxzZSwgcmV0dXJuIHRoZSB3aG9sZSBsb2dpbiB1cmwuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQYXRoRnJvbUxvZ2luVXJsKGxvZ2luVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYXJlVXJsc09uU2FtZU9yaWdpbihsb2dpblVybCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbikpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2dpblVybDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9naW5Vcmwuc3BsaXQoJy9hZG1pbicpWzFdO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { pick } from '@vendure/common/lib/pick';
|
|
2
2
|
import { SortOrder } from '../../common/generated-types';
|
|
3
|
-
import { ADD_OPTION_GROUP_TO_PRODUCT, ADD_OPTION_TO_GROUP, ASSIGN_PRODUCTS_TO_CHANNEL, ASSIGN_VARIANTS_TO_CHANNEL, CREATE_ASSETS, CREATE_PRODUCT, CREATE_PRODUCT_OPTION_GROUP, CREATE_PRODUCT_VARIANTS, CREATE_TAG, DELETE_ASSETS, DELETE_PRODUCT, DELETE_PRODUCT_OPTION, DELETE_PRODUCT_VARIANT, DELETE_PRODUCTS, DELETE_TAG, GET_ASSET, GET_ASSET_LIST, GET_PRODUCT_LIST, GET_PRODUCT_OPTION_GROUP, GET_PRODUCT_OPTION_GROUPS, GET_PRODUCT_SIMPLE, GET_PRODUCT_VARIANT, GET_PRODUCT_VARIANT_LIST, GET_PRODUCT_VARIANT_LIST_FOR_PRODUCT, GET_PRODUCT_VARIANT_LIST_SIMPLE, GET_PRODUCT_VARIANT_OPTIONS, GET_PRODUCT_WITH_VARIANTS, GET_TAG, GET_TAG_LIST, PRODUCT_SELECTOR_SEARCH, REMOVE_OPTION_GROUP_FROM_PRODUCT, REMOVE_PRODUCTS_FROM_CHANNEL, REMOVE_VARIANTS_FROM_CHANNEL, SEARCH_PRODUCTS, UPDATE_ASSET, UPDATE_PRODUCT, UPDATE_PRODUCT_OPTION, UPDATE_PRODUCT_OPTION_GROUP, UPDATE_PRODUCT_VARIANTS, UPDATE_TAG, } from '../definitions/product-definitions';
|
|
3
|
+
import { ADD_OPTION_GROUP_TO_PRODUCT, ADD_OPTION_TO_GROUP, ASSIGN_PRODUCTS_TO_CHANNEL, ASSIGN_VARIANTS_TO_CHANNEL, CREATE_ASSETS, CREATE_PRODUCT, CREATE_PRODUCT_OPTION_GROUP, CREATE_PRODUCT_VARIANTS, CREATE_TAG, DELETE_ASSETS, DELETE_PRODUCT, DELETE_PRODUCT_OPTION, DELETE_PRODUCT_VARIANT, DELETE_PRODUCT_VARIANTS, DELETE_PRODUCTS, DELETE_TAG, GET_ASSET, GET_ASSET_LIST, GET_PRODUCT_LIST, GET_PRODUCT_OPTION_GROUP, GET_PRODUCT_OPTION_GROUPS, GET_PRODUCT_SIMPLE, GET_PRODUCT_VARIANT, GET_PRODUCT_VARIANT_LIST, GET_PRODUCT_VARIANT_LIST_FOR_PRODUCT, GET_PRODUCT_VARIANT_LIST_SIMPLE, GET_PRODUCT_VARIANT_OPTIONS, GET_PRODUCT_WITH_VARIANTS, GET_TAG, GET_TAG_LIST, PRODUCT_SELECTOR_SEARCH, REMOVE_OPTION_GROUP_FROM_PRODUCT, REMOVE_PRODUCTS_FROM_CHANNEL, REMOVE_VARIANTS_FROM_CHANNEL, SEARCH_PRODUCTS, UPDATE_ASSET, UPDATE_PRODUCT, UPDATE_PRODUCT_OPTION, UPDATE_PRODUCT_OPTION_GROUP, UPDATE_PRODUCT_VARIANTS, UPDATE_TAG, } from '../definitions/product-definitions';
|
|
4
4
|
import { GET_PENDING_SEARCH_INDEX_UPDATES, REINDEX, RUN_PENDING_SEARCH_INDEX_UPDATES, } from '../definitions/settings-definitions';
|
|
5
5
|
export class ProductDataService {
|
|
6
6
|
constructor(baseDataService) {
|
|
@@ -138,6 +138,11 @@ export class ProductDataService {
|
|
|
138
138
|
id,
|
|
139
139
|
});
|
|
140
140
|
}
|
|
141
|
+
deleteProductVariants(ids) {
|
|
142
|
+
return this.baseDataService.mutate(DELETE_PRODUCT_VARIANTS, {
|
|
143
|
+
ids,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
141
146
|
createProductOptionGroups(productOptionGroup) {
|
|
142
147
|
const input = {
|
|
143
148
|
input: productOptionGroup,
|
|
@@ -249,4 +254,4 @@ export class ProductDataService {
|
|
|
249
254
|
});
|
|
250
255
|
}
|
|
251
256
|
}
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUNILDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsb0NBQW9DLEVBQ3BDLCtCQUErQixFQUMvQiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGdDQUFnQyxFQUNoQyw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGVBQWUsRUFDZixZQUFZLEVBQ1osY0FBYyxFQUNkLHFCQUFxQixFQUNyQiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLFVBQVUsR0FDYixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDaEMsT0FBTyxFQUNQLGdDQUFnQyxHQUNuQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTdDLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlC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QzFHLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZ0M7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FDN0IsWUFBWSxFQUNaO1lBQ0ksT0FBTztTQUNWLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBNkI7UUFDbkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDOUIsVUFBVSxFQUNWO1lBQ0ksS0FBSztTQUNSLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBNkI7UUFDbkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDOUIsVUFBVSxFQUNWO1lBQ0ksS0FBSztTQUNSLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUM5QixVQUFVLEVBQ1Y7WUFDSSxFQUFFO1NBQ0wsQ0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGljayB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvcGljayc7XHJcblxyXG5pbXBvcnQgKiBhcyBDb2RlZ2VuIGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBTb3J0T3JkZXIgfSBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcclxuaW1wb3J0IHtcclxuICAgIEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCxcclxuICAgIEFERF9PUFRJT05fVE9fR1JPVVAsXHJcbiAgICBBU1NJR05fUFJPRFVDVFNfVE9fQ0hBTk5FTCxcclxuICAgIEFTU0lHTl9WQVJJQU5UU19UT19DSEFOTkVMLFxyXG4gICAgQ1JFQVRFX0FTU0VUUyxcclxuICAgIENSRUFURV9QUk9EVUNULFxyXG4gICAgQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxyXG4gICAgQ1JFQVRFX1BST0RVQ1RfVkFSSUFOVFMsXHJcbiAgICBDUkVBVEVfVEFHLFxyXG4gICAgREVMRVRFX0FTU0VUUyxcclxuICAgIERFTEVURV9QUk9EVUNULFxyXG4gICAgREVMRVRFX1BST0RVQ1RfT1BUSU9OLFxyXG4gICAgREVMRVRFX1BST0RVQ1RfVkFSSUFOVCxcclxuICAgIERFTEVURV9QUk9EVUNUUyxcclxuICAgIERFTEVURV9UQUcsXHJcbiAgICBHRVRfQVNTRVQsXHJcbiAgICBHRVRfQVNTRVRfTElTVCxcclxuICAgIEdFVF9QUk9EVUNUX0xJU1QsXHJcbiAgICBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAsXHJcbiAgICBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVBTLFxyXG4gICAgR0VUX1BST0RVQ1RfU0lNUExFLFxyXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVCxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVCxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9GT1JfUFJPRFVDVCxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX09QVElPTlMsXHJcbiAgICBHRVRfUFJPRFVDVF9XSVRIX1ZBUklBTlRTLFxyXG4gICAgR0VUX1RBRyxcclxuICAgIEdFVF9UQUdfTElTVCxcclxuICAgIFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNILFxyXG4gICAgUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsXHJcbiAgICBSRU1PVkVfUFJPRFVDVFNfRlJPTV9DSEFOTkVMLFxyXG4gICAgUkVNT1ZFX1ZBUklBTlRTX0ZST01fQ0hBTk5FTCxcclxuICAgIFNFQVJDSF9QUk9EVUNUUyxcclxuICAgIFVQREFURV9BU1NFVCxcclxuICAgIFVQREFURV9QUk9EVUNULFxyXG4gICAgVVBEQVRFX1BST0RVQ1RfT1BUSU9OLFxyXG4gICAgVVBEQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxyXG4gICAgVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMsXHJcbiAgICBVUERBVEVfVEFHLFxyXG59IGZyb20gJy4uL2RlZmluaXRpb25zL3Byb2R1Y3QtZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gICAgR0VUX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbiAgICBSRUlOREVYLFxyXG4gICAgUlVOX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbn0gZnJvbSAnLi4vZGVmaW5pdGlvbnMvc2V0dGluZ3MtZGVmaW5pdGlvbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWRhdGEuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERhdGFTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZURhdGFTZXJ2aWNlOiBCYXNlRGF0YVNlcnZpY2UpIHt9XHJcblxyXG4gICAgc2VhcmNoUHJvZHVjdHModGVybTogc3RyaW5nLCB0YWtlID0gMTAsIHNraXAgPSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uU2VhcmNoUHJvZHVjdHNRdWVyeSwgQ29kZWdlbi5TZWFyY2hQcm9kdWN0c1F1ZXJ5VmFyaWFibGVzPihcclxuICAgICAgICAgICAgU0VBUkNIX1BST0RVQ1RTLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgICAgICBza2lwLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQnlQcm9kdWN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2R1Y3RTZWxlY3RvclNlYXJjaCh0ZXJtOiBzdHJpbmcsIHRha2U6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5Qcm9kdWN0U2VsZWN0b3JTZWFyY2hRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5Qcm9kdWN0U2VsZWN0b3JTZWFyY2hRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oUFJPRFVDVF9TRUxFQ1RPUl9TRUFSQ0gsIHtcclxuICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgdGVybSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWluZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5SZWluZGV4TXV0YXRpb24+KFJFSU5ERVgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlc1F1ZXJ5PihcclxuICAgICAgICAgICAgR0VUX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBydW5QZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5SdW5QZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzTXV0YXRpb24+KFxyXG4gICAgICAgICAgICBSVU5fUEVORElOR19TRUFSQ0hfSU5ERVhfVVBEQVRFUyxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RzKG9wdGlvbnM6IENvZGVnZW4uUHJvZHVjdExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UHJvZHVjdExpc3RRdWVyeSwgQ29kZWdlbi5HZXRQcm9kdWN0TGlzdFF1ZXJ5VmFyaWFibGVzPihcclxuICAgICAgICAgICAgR0VUX1BST0RVQ1RfTElTVCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3QoaWQ6IHN0cmluZywgdmFyaWFudExpc3RPcHRpb25zPzogQ29kZWdlbi5Qcm9kdWN0VmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RXaXRoVmFyaWFudHNRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0V2l0aFZhcmlhbnRzUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0T3B0aW9ucyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0U2ltcGxlKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFNpbXBsZVF1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfU0lNUExFLCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50c1NpbXBsZShvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMsIHByb2R1Y3RJZD86IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGVRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX1NJTVBMRSwgeyBvcHRpb25zLCBwcm9kdWN0SWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnRzKG9wdGlvbnM6IENvZGVnZW4uUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNULCB7IG9wdGlvbnMgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnRzRm9yUHJvZHVjdChvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMsIHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50TGlzdEZvclByb2R1Y3RRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0UXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9GT1JfUFJPRFVDVCwgeyBvcHRpb25zLCBwcm9kdWN0SWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudFF1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50UXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlQsIHsgaWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnRzT3B0aW9ucyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50T3B0aW9uc1F1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50T3B0aW9uc1F1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5UX09QVElPTlMsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdE9wdGlvbkdyb3VwKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3VwUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3VwUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUCwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQcm9kdWN0KHByb2R1Y3Q6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdElucHV0KSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzID0ge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhwcm9kdWN0LCBbXHJcbiAgICAgICAgICAgICAgICAnZW5hYmxlZCcsXHJcbiAgICAgICAgICAgICAgICAndHJhbnNsYXRpb25zJyxcclxuICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxyXG4gICAgICAgICAgICAgICAgJ2Fzc2V0SWRzJyxcclxuICAgICAgICAgICAgICAgICdmZWF0dXJlZEFzc2V0SWQnLFxyXG4gICAgICAgICAgICAgICAgJ2ZhY2V0VmFsdWVJZHMnLFxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX1BST0RVQ1QsIGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQcm9kdWN0KHByb2R1Y3Q6IENvZGVnZW4uVXBkYXRlUHJvZHVjdElucHV0KSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzID0ge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhwcm9kdWN0LCBbXHJcbiAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxyXG4gICAgICAgICAgICAgICAgJ3RyYW5zbGF0aW9ucycsXHJcbiAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgICdhc3NldElkcycsXHJcbiAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFVQREFURV9QUk9EVUNULCBpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUHJvZHVjdChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVCwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0cyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RzTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUUywge1xyXG4gICAgICAgICAgICBpZHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXRbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KENSRUFURV9QUk9EVUNUX1ZBUklBTlRTLCB7XHJcbiAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50cyh2YXJpYW50czogQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudElucHV0W10pIHtcclxuICAgICAgICBjb25zdCBpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHZhcmlhbnRzLm1hcChcclxuICAgICAgICAgICAgICAgIHBpY2soW1xyXG4gICAgICAgICAgICAgICAgICAgICdpZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxyXG4gICAgICAgICAgICAgICAgICAgICdza3UnLFxyXG4gICAgICAgICAgICAgICAgICAgICdwcmljZScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3RheENhdGVnb3J5SWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxyXG4gICAgICAgICAgICAgICAgICAgICdvcHRpb25JZHMnLFxyXG4gICAgICAgICAgICAgICAgICAgICd0cmFja0ludmVudG9yeScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ291dE9mU3RvY2tUaHJlc2hvbGQnLFxyXG4gICAgICAgICAgICAgICAgICAgICd1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkJyxcclxuICAgICAgICAgICAgICAgICAgICAnc3RvY2tPbkhhbmQnLFxyXG4gICAgICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxyXG4gICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVF9WQVJJQU5UUywgaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3RWYXJpYW50KGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdFZhcmlhbnRNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1RfVkFSSUFOVCwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBzKHByb2R1Y3RPcHRpb25Hcm91cDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBJbnB1dCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cE11dGF0aW9uVmFyaWFibGVzID0ge1xyXG4gICAgICAgICAgICBpbnB1dDogcHJvZHVjdE9wdGlvbkdyb3VwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLCBpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3QodmFyaWFibGVzOiBDb2RlZ2VuLkFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQUREX09QVElPTl9HUk9VUF9UT19QUk9EVUNULCB2YXJpYWJsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE9wdGlvblRvR3JvdXAoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbklucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Ub0dyb3VwTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uVG9Hcm91cE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihBRERfT1BUSU9OX1RPX0dST1VQLCB7IGlucHV0IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3RPcHRpb24oaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RPcHRpb25NdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1RfT1BUSU9OLCB7IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QodmFyaWFibGVzOiBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsIHZhcmlhYmxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbihpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25NdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFVQREFURV9QUk9EVUNUX09QVElPTiwge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhpbnB1dCwgWydpZCcsICdjb2RlJywgJ3RyYW5zbGF0aW9ucycsICdjdXN0b21GaWVsZHMnXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oVVBEQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLCB7XHJcbiAgICAgICAgICAgIGlucHV0OiBwaWNrKGlucHV0LCBbJ2lkJywgJ2NvZGUnLCAndHJhbnNsYXRpb25zJywgJ2N1c3RvbUZpZWxkcyddKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0T3B0aW9uR3JvdXBzKGZpbHRlclRlcm0/OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3Vwc1F1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cHNRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUywge1xyXG4gICAgICAgICAgICBmaWx0ZXJUZXJtLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFzc2V0TGlzdCh0YWtlID0gMTAsIHNraXAgPSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0QXNzZXRMaXN0UXVlcnksIENvZGVnZW4uR2V0QXNzZXRMaXN0UXVlcnlWYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBHRVRfQVNTRVRfTElTVCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHNraXAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgICAgICBzb3J0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogU29ydE9yZGVyLkRFU0MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBc3NldChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0QXNzZXRRdWVyeSwgQ29kZWdlbi5HZXRBc3NldFF1ZXJ5VmFyaWFibGVzPihHRVRfQVNTRVQsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlQXNzZXRzKGZpbGVzOiBGaWxlW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZUFzc2V0c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZUFzc2V0c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihDUkVBVEVfQVNTRVRTLCB7XHJcbiAgICAgICAgICAgIGlucHV0OiBmaWxlcy5tYXAoZmlsZSA9PiAoeyBmaWxlIH0pKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVBc3NldChpbnB1dDogQ29kZWdlbi5VcGRhdGVBc3NldElucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxDb2RlZ2VuLlVwZGF0ZUFzc2V0TXV0YXRpb24sIENvZGVnZW4uVXBkYXRlQXNzZXRNdXRhdGlvblZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIFVQREFURV9BU1NFVCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVBc3NldHMoaWRzOiBzdHJpbmdbXSwgZm9yY2U6IGJvb2xlYW4pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZUFzc2V0c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZUFzc2V0c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfQVNTRVRTLCB7XHJcbiAgICAgICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAgICAgICBhc3NldElkczogaWRzLFxyXG4gICAgICAgICAgICAgICAgZm9yY2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXNzaWduUHJvZHVjdHNUb0NoYW5uZWwoaW5wdXQ6IENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5Bc3NpZ25Qcm9kdWN0c1RvQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihBU1NJR05fUFJPRFVDVFNfVE9fQ0hBTk5FTCwge1xyXG4gICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsKGlucHV0OiBDb2RlZ2VuLlJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWxJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oUkVNT1ZFX1BST0RVQ1RTX0ZST01fQ0hBTk5FTCwge1xyXG4gICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3NpZ25WYXJpYW50c1RvQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5Bc3NpZ25Qcm9kdWN0VmFyaWFudHNUb0NoYW5uZWxJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5Bc3NpZ25WYXJpYW50c1RvQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihBU1NJR05fVkFSSUFOVFNfVE9fQ0hBTk5FTCwge1xyXG4gICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVWYXJpYW50c0Zyb21DaGFubmVsKGlucHV0OiBDb2RlZ2VuLlJlbW92ZVByb2R1Y3RWYXJpYW50c0Zyb21DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVZhcmlhbnRzRnJvbUNoYW5uZWxNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVWYXJpYW50c0Zyb21DaGFubmVsTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFJFTU9WRV9WQVJJQU5UU19GUk9NX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFnKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8Q29kZWdlbi5HZXRUYWdRdWVyeSwgQ29kZWdlbi5HZXRUYWdRdWVyeVZhcmlhYmxlcz4oR0VUX1RBRywgeyBpZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUYWdMaXN0KG9wdGlvbnM/OiBDb2RlZ2VuLlRhZ0xpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0VGFnTGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldFRhZ0xpc3RRdWVyeVZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIEdFVF9UQUdfTElTVCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVRhZyhpbnB1dDogQ29kZWdlbi5DcmVhdGVUYWdJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5DcmVhdGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5DcmVhdGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIENSRUFURV9UQUcsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVGFnKGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVRhZ0lucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxDb2RlZ2VuLlVwZGF0ZVRhZ011dGF0aW9uLCBDb2RlZ2VuLlVwZGF0ZVRhZ011dGF0aW9uVmFyaWFibGVzPihcclxuICAgICAgICAgICAgVVBEQVRFX1RBRyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVUYWcoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5EZWxldGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5EZWxldGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIERFTEVURV9UQUcsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUNILDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixlQUFlLEVBQ2YsWUFBWSxFQUNaLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixVQUFVLEdBQ2IsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLE9BQU8sRUFDUCxnQ0FBZ0MsR0FDbkMsTUFBTSxxQ0FBcUMsQ0FBQztBQUk3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdB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SztTQUNSLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQW9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQztRQUN2QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUM3QixZQUFZLEVBQ1o7WUFDSSxPQUFPO1NBQ1YsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUE2QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUM5QixVQUFVLEVBQ1Y7WUFDSSxLQUFLO1NBQ1IsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUE2QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUM5QixVQUFVLEVBQ1Y7WUFDSSxLQUFLO1NBQ1IsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEVBQUU7U0FDTCxDQUNKLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwaWNrIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9waWNrJztcclxuXHJcbmltcG9ydCAqIGFzIENvZGVnZW4gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gICAgQUREX09QVElPTl9HUk9VUF9UT19QUk9EVUNULFxyXG4gICAgQUREX09QVElPTl9UT19HUk9VUCxcclxuICAgIEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMLFxyXG4gICAgQVNTSUdOX1ZBUklBTlRTX1RPX0NIQU5ORUwsXHJcbiAgICBDUkVBVEVfQVNTRVRTLFxyXG4gICAgQ1JFQVRFX1BST0RVQ1QsXHJcbiAgICBDUkVBVEVfUFJPRFVDVF9PUFRJT05fR1JPVVAsXHJcbiAgICBDUkVBVEVfUFJPRFVDVF9WQVJJQU5UUyxcclxuICAgIENSRUFURV9UQUcsXHJcbiAgICBERUxFVEVfQVNTRVRTLFxyXG4gICAgREVMRVRFX1BST0RVQ1QsXHJcbiAgICBERUxFVEVfUFJPRFVDVF9PUFRJT04sXHJcbiAgICBERUxFVEVfUFJPRFVDVF9WQVJJQU5ULFxyXG4gICAgREVMRVRFX1BST0RVQ1RfVkFSSUFOVFMsXHJcbiAgICBERUxFVEVfUFJPRFVDVFMsXHJcbiAgICBERUxFVEVfVEFHLFxyXG4gICAgR0VUX0FTU0VULFxyXG4gICAgR0VUX0FTU0VUX0xJU1QsXHJcbiAgICBHRVRfUFJPRFVDVF9MSVNULFxyXG4gICAgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxyXG4gICAgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUyxcclxuICAgIEdFVF9QUk9EVUNUX1NJTVBMRSxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlQsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfRk9SX1BST0RVQ1QsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfU0lNUExFLFxyXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVF9PUFRJT05TLFxyXG4gICAgR0VUX1BST0RVQ1RfV0lUSF9WQVJJQU5UUyxcclxuICAgIEdFVF9UQUcsXHJcbiAgICBHRVRfVEFHX0xJU1QsXHJcbiAgICBQUk9EVUNUX1NFTEVDVE9SX1NFQVJDSCxcclxuICAgIFJFTU9WRV9PUFRJT05fR1JPVVBfRlJPTV9QUk9EVUNULFxyXG4gICAgUkVNT1ZFX1BST0RVQ1RTX0ZST01fQ0hBTk5FTCxcclxuICAgIFJFTU9WRV9WQVJJQU5UU19GUk9NX0NIQU5ORUwsXHJcbiAgICBTRUFSQ0hfUFJPRFVDVFMsXHJcbiAgICBVUERBVEVfQVNTRVQsXHJcbiAgICBVUERBVEVfUFJPRFVDVCxcclxuICAgIFVQREFURV9QUk9EVUNUX09QVElPTixcclxuICAgIFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCxcclxuICAgIFVQREFURV9QUk9EVUNUX1ZBUklBTlRTLFxyXG4gICAgVVBEQVRFX1RBRyxcclxufSBmcm9tICcuLi9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zJztcclxuaW1wb3J0IHtcclxuICAgIEdFVF9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxyXG4gICAgUkVJTkRFWCxcclxuICAgIFJVTl9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxyXG59IGZyb20gJy4uL2RlZmluaXRpb25zL3NldHRpbmdzLWRlZmluaXRpb25zJztcclxuXHJcbmltcG9ydCB7IEJhc2VEYXRhU2VydmljZSB9IGZyb20gJy4vYmFzZS1kYXRhLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFByb2R1Y3REYXRhU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VEYXRhU2VydmljZTogQmFzZURhdGFTZXJ2aWNlKSB7fVxyXG5cclxuICAgIHNlYXJjaFByb2R1Y3RzKHRlcm06IHN0cmluZywgdGFrZSA9IDEwLCBza2lwID0gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLlNlYXJjaFByb2R1Y3RzUXVlcnksIENvZGVnZW4uU2VhcmNoUHJvZHVjdHNRdWVyeVZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIFNFQVJDSF9QUk9EVUNUUyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcCxcclxuICAgICAgICAgICAgICAgICAgICBncm91cEJ5UHJvZHVjdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9kdWN0U2VsZWN0b3JTZWFyY2godGVybTogc3RyaW5nLCB0YWtlOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uUHJvZHVjdFNlbGVjdG9yU2VhcmNoUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uUHJvZHVjdFNlbGVjdG9yU2VhcmNoUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNILCB7XHJcbiAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVpbmRleCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uUmVpbmRleE11dGF0aW9uPihSRUlOREVYKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXNRdWVyeT4oXHJcbiAgICAgICAgICAgIEdFVF9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uUnVuUGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlc011dGF0aW9uPihcclxuICAgICAgICAgICAgUlVOX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0cyhvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFByb2R1Y3RMaXN0UXVlcnksIENvZGVnZW4uR2V0UHJvZHVjdExpc3RRdWVyeVZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIEdFVF9QUk9EVUNUX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0KGlkOiBzdHJpbmcsIHZhcmlhbnRMaXN0T3B0aW9ucz86IENvZGVnZW4uUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0V2l0aFZhcmlhbnRzUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFdpdGhWYXJpYW50c1F1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9XSVRIX1ZBUklBTlRTLCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICB2YXJpYW50TGlzdE9wdGlvbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFNpbXBsZShpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RTaW1wbGVRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0U2ltcGxlUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1NJTVBMRSwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0VmFyaWFudHNTaW1wbGUob3B0aW9uczogQ29kZWdlbi5Qcm9kdWN0VmFyaWFudExpc3RPcHRpb25zLCBwcm9kdWN0SWQ/OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0U2ltcGxlUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0U2ltcGxlUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsIHsgb3B0aW9ucywgcHJvZHVjdElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0UXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVCwgeyBvcHRpb25zIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50c0ZvclByb2R1Y3Qob3B0aW9uczogQ29kZWdlbi5Qcm9kdWN0VmFyaWFudExpc3RPcHRpb25zLCBwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0UXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0Rm9yUHJvZHVjdFF1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfRk9SX1BST0RVQ1QsIHsgb3B0aW9ucywgcHJvZHVjdElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50KGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudFF1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5ULCB7IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50c09wdGlvbnMoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudE9wdGlvbnNRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudE9wdGlvbnNRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfVkFSSUFOVF9PUFRJT05TLCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RPcHRpb25Hcm91cChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cFF1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cFF1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdChwcm9kdWN0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RJbnB1dCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHBpY2socHJvZHVjdCwgW1xyXG4gICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxyXG4gICAgICAgICAgICAgICAgJ3RyYW5zbGF0aW9ucycsXHJcbiAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgICdhc3NldElkcycsXHJcbiAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KENSRUFURV9QUk9EVUNULCBpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdChwcm9kdWN0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RJbnB1dCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHBpY2socHJvZHVjdCwgW1xyXG4gICAgICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgICAgICdlbmFibGVkJyxcclxuICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxyXG4gICAgICAgICAgICAgICAgJ2N1c3RvbUZpZWxkcycsXHJcbiAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxyXG4gICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXHJcbiAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXHJcbiAgICAgICAgICAgIF0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVCwgaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3QoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1QsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUHJvZHVjdHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVFMsIHtcclxuICAgICAgICAgICAgaWRzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVByb2R1Y3RWYXJpYW50cyhpbnB1dDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0VmFyaWFudElucHV0W10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihDUkVBVEVfUFJPRFVDVF9WQVJJQU5UUywge1xyXG4gICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQcm9kdWN0VmFyaWFudHModmFyaWFudHM6IENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dFtdKSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXMgPSB7XHJcbiAgICAgICAgICAgIGlucHV0OiB2YXJpYW50cy5tYXAoXHJcbiAgICAgICAgICAgICAgICBwaWNrKFtcclxuICAgICAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICdlbmFibGVkJyxcclxuICAgICAgICAgICAgICAgICAgICAndHJhbnNsYXRpb25zJyxcclxuICAgICAgICAgICAgICAgICAgICAnc2t1JyxcclxuICAgICAgICAgICAgICAgICAgICAncHJpY2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICd0YXhDYXRlZ29yeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0SWRzJyxcclxuICAgICAgICAgICAgICAgICAgICAnb3B0aW9uSWRzJyxcclxuICAgICAgICAgICAgICAgICAgICAndHJhY2tJbnZlbnRvcnknLFxyXG4gICAgICAgICAgICAgICAgICAgICdvdXRPZlN0b2NrVGhyZXNob2xkJyxcclxuICAgICAgICAgICAgICAgICAgICAndXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3N0b2NrT25IYW5kJyxcclxuICAgICAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMsIGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0VmFyaWFudChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0VmFyaWFudE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUX1ZBUklBTlQsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUHJvZHVjdFZhcmlhbnRzKGlkczogc3RyaW5nW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVF9WQVJJQU5UUywge1xyXG4gICAgICAgICAgICBpZHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyhwcm9kdWN0T3B0aW9uR3JvdXA6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQpIHtcclxuICAgICAgICBjb25zdCBpbnB1dDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHByb2R1Y3RPcHRpb25Hcm91cCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KENSRUFURV9QUk9EVUNUX09QVElPTl9HUk9VUCwgaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KHZhcmlhYmxlczogQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCwgdmFyaWFibGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRPcHRpb25Ub0dyb3VwKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RPcHRpb25JbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uVG9Hcm91cE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvblRvR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQUREX09QVElPTl9UT19HUk9VUCwgeyBpbnB1dCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0T3B0aW9uKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RPcHRpb25NdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUX09QVElPTiwgeyBpZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0KHZhcmlhYmxlczogQ29kZWdlbi5SZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFJFTU9WRV9PUFRJT05fR1JPVVBfRlJPTV9QUk9EVUNULCB2YXJpYWJsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RPcHRpb24oaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVF9PUFRJT04sIHtcclxuICAgICAgICAgICAgaW5wdXQ6IHBpY2soaW5wdXQsIFsnaWQnLCAnY29kZScsICd0cmFuc2xhdGlvbnMnLCAnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cChpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCwge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhpbnB1dCwgWydpZCcsICdjb2RlJywgJ3RyYW5zbGF0aW9ucycsICdjdXN0b21GaWVsZHMnXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdE9wdGlvbkdyb3VwcyhmaWx0ZXJUZXJtPzogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cHNRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0T3B0aW9uR3JvdXBzUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUFMsIHtcclxuICAgICAgICAgICAgZmlsdGVyVGVybSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBc3NldExpc3QodGFrZSA9IDEwLCBza2lwID0gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5VmFyaWFibGVzPihcclxuICAgICAgICAgICAgR0VUX0FTU0VUX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwLFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXNzZXQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0UXVlcnksIENvZGVnZW4uR2V0QXNzZXRRdWVyeVZhcmlhYmxlcz4oR0VUX0FTU0VULCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUFzc2V0cyhmaWxlczogRmlsZVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX0FTU0VUUywge1xyXG4gICAgICAgICAgICBpbnB1dDogZmlsZXMubWFwKGZpbGUgPT4gKHsgZmlsZSB9KSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQXNzZXQoaW5wdXQ6IENvZGVnZW4uVXBkYXRlQXNzZXRJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5VcGRhdGVBc3NldE11dGF0aW9uLCBDb2RlZ2VuLlVwZGF0ZUFzc2V0TXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBVUERBVEVfQVNTRVQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQXNzZXRzKGlkczogc3RyaW5nW10sIGZvcmNlOiBib29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX0FTU0VUUywge1xyXG4gICAgICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgICAgICAgYXNzZXRJZHM6IGlkcyxcclxuICAgICAgICAgICAgICAgIGZvcmNlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzc2lnblByb2R1Y3RzVG9DaGFubmVsKGlucHV0OiBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQVNTSUdOX1BST0RVQ1RTX1RPX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWxNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFJFTU9WRV9QUk9EVUNUU19GUk9NX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXNzaWduVmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6IENvZGVnZW4uQXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFzc2lnblZhcmlhbnRzVG9DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQVNTSUdOX1ZBUklBTlRTX1RPX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVWYXJpYW50c0Zyb21DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMLCB7XHJcbiAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRhZyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0VGFnUXVlcnksIENvZGVnZW4uR2V0VGFnUXVlcnlWYXJpYWJsZXM+KEdFVF9UQUcsIHsgaWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFnTGlzdChvcHRpb25zPzogQ29kZWdlbi5UYWdMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFRhZ0xpc3RRdWVyeSwgQ29kZWdlbi5HZXRUYWdMaXN0UXVlcnlWYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBHRVRfVEFHX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUYWcoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlVGFnSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uQ3JlYXRlVGFnTXV0YXRpb24sIENvZGVnZW4uQ3JlYXRlVGFnTXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBDUkVBVEVfVEFHLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVRhZyhpbnB1dDogQ29kZWdlbi5VcGRhdGVUYWdJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5VcGRhdGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5VcGRhdGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIFVQREFURV9UQUcsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlVGFnKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uRGVsZXRlVGFnTXV0YXRpb24sIENvZGVnZW4uRGVsZXRlVGFnTXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBERUxFVEVfVEFHLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|