@dotglitch/ngx-common 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/directives/menu.directive.d.ts +1 -1
- package/esm2020/components/menu/menu.component.mjs +3 -3
- package/esm2020/directives/menu.directive.mjs +4 -5
- package/fesm2015/dotglitch-ngx-common.mjs +8 -9
- package/fesm2015/dotglitch-ngx-common.mjs.map +1 -1
- package/fesm2020/dotglitch-ngx-common.mjs +5 -6
- package/fesm2020/dotglitch-ngx-common.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -28,4 +28,4 @@ export declare class MenuDirective {
|
|
|
28
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<MenuDirective, never>;
|
|
29
29
|
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuDirective, "[ngx-contextmenu],[ngx-menu],[ngxContextmenu],[ngxMenu]", never, { "data": "ngx-menu-context"; "ctxMenuItems": "ngx-contextmenu"; "menuItems": "ngx-menu"; "config": "ngx-menu-config"; }, {}, never, never, true, never>;
|
|
30
30
|
}
|
|
31
|
-
export declare const openMenu: (dialog: MatDialog, menuItems: MenuItem[], data: any, evt: PointerEvent, config?: MenuOptions) => Promise<any>;
|
|
31
|
+
export declare const openMenu: (dialog: MatDialog, menuItems: MenuItem[], data: any, evt: PointerEvent, config?: MenuOptions, el?: HTMLElement) => Promise<any>;
|
|
@@ -145,10 +145,10 @@ export class MenuComponent {
|
|
|
145
145
|
}
|
|
146
146
|
});
|
|
147
147
|
// Show the icon column if there are any items with an icon
|
|
148
|
-
this.showIconColumn = !!this.items
|
|
148
|
+
this.showIconColumn = !!this.items?.find(i => typeof i == "object" &&
|
|
149
149
|
typeof i['icon'] == "string" &&
|
|
150
150
|
i['icon'].length > 2);
|
|
151
|
-
this.showShortcutColumn = !!this.items
|
|
151
|
+
this.showShortcutColumn = !!this.items?.find(i => typeof i == "object" &&
|
|
152
152
|
typeof i['shortcut'] == "string" &&
|
|
153
153
|
i['shortcut'].length > 2);
|
|
154
154
|
// setTimeout(() => {
|
|
@@ -313,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
313
313
|
type: HostListener,
|
|
314
314
|
args: ["window:resize"]
|
|
315
315
|
}] } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQTJCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFHdEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxFQUFFLFNBQXFCLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDNUUsTUFBTSxJQUFJLEdBQUc7UUFDVCxJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE1BQU0sRUFBRSxFQUFFO1FBQ1YsRUFBRSxFQUFFLElBQUk7S0FDWCxDQUFBO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVB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QUFDO1lBQ3hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3ZDO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDekM7SUFDTCxDQUFDOzswR0FqTlEsYUFBYSw4RUFrQkUsZUFBZTs4RkFsQjlCLGFBQWEsdVFDckcxQiw4M0xBaUlBLHl6RERwQ1EsSUFBSSw2RkFDSixPQUFPLG1IQUNQLGdCQUFnQixtSkFDaEIsYUFBYSxtTEFDYix3QkFBd0I7MkZBSW5CLGFBQWE7a0JBYnpCLFNBQVM7K0JBQ0ksVUFBVSxXQUdYO3dCQUNMLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isd0JBQXdCO3FCQUMzQixjQUNXLElBQUk7OzBCQW9CWCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFDUixRQUFROzRFQW5CRyxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEVBQUU7c0JBQWpCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFzTEMsUUFBUTtzQkFEZixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIGNyZWF0ZUFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUnO1xuXG5leHBvcnQgY29uc3QgY2FsY01lbnVJdGVtQm91bmRzID0gYXN5bmMgKG1lbnVJdGVtczogTWVudUl0ZW1bXSwgZGF0YU9iajogYW55KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgZGF0YTogZGF0YU9iaixcbiAgICAgICAgaXRlbXM6IG1lbnVJdGVtcyxcbiAgICAgICAgY29uZmlnOiB7fSxcbiAgICAgICAgaWQ6IG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsY0NvbXBvbmVudEJvdW5kcyhNZW51Q29tcG9uZW50LCBkYXRhKTtcbn1cblxuY29uc3QgY2FsY0NvbXBvbmVudEJvdW5kcyA9IGFzeW5jIChjb21wb25lbnQ6IFR5cGU8YW55PiwgZGF0YTogYW55KSA9PiB7XG4gICAgLy8gRm9yY2libHkgYm9vdHN0cmFwIHRoZSBjdHggbWVudSBvdXRzaWRlIG9mIHRoZSBjbGllbnQgYXBwbGljYXRpb24ncyB6b25lLlxuICAgIGNvbnN0IGFwcCA9IGF3YWl0IGNyZWF0ZUFwcGxpY2F0aW9uKHtcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7IHByb3ZpZGU6IE1BVF9ESUFMT0dfREFUQSwgdXNlVmFsdWU6IGRhdGEgfVxuICAgICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGRlbC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICBkZWwuc3R5bGUubGVmdCA9ICctMTAwMHZ3JztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChkZWwpO1xuXG4gICAgY29uc3QgYmFzZSA9IGFwcC5ib290c3RyYXAoY29tcG9uZW50LCBkZWwpO1xuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IGJhc2U7XG5cbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShhcHAuaXNTdGFibGUpO1xuXG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gaW5zdGFuY2Uudmlld0NvbnRhaW5lcj8uZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBhcHAuZGVzdHJveSgpO1xuICAgIGRlbC5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVjdDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWVudS10ZW1wbGF0ZS13cmFwcGVyJyxcblxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlVHlwZSA9PSAndGVtcGxhdGUnOyBlbHNlIHBvcnRhbE91dGxldFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAnJGltcGxpY2l0JzogZGF0YSwgZGlhbG9nOiBkaWFsb2dSZWYgfVwiXG4gICAgICAgIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNwb3J0YWxPdXRsZXQgW2Nka1BvcnRhbE91dGxldF09XCJjb21wb25lbnRQb3J0YWxcIiA+PC9uZy10ZW1wbGF0ZT5cbmAsXG4gICAgaW1wb3J0czogWyBOZ1RlbXBsYXRlT3V0bGV0LCBQb3J0YWxNb2R1bGUsIE5nSWYgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuY2xhc3MgVGVtcGxhdGVXcmFwcGVyIHtcblxuICAgIGRhdGE6IE9iamVjdDtcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHRlbXBsYXRlVHlwZTogXCJ0ZW1wbGF0ZVwiIHwgXCJjb21wb25lbnRcIlxuICAgIGNvbXBvbmVudFBvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICAgICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IF9kYXRhLmRhdGE7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSBfZGF0YS50ZW1wbGF0ZTtcblxuICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIHByb2JhYmx5IGludmFsaWRcbiAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0aGlzLnRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyBcInRlbXBsYXRlXCIgOiBcImNvbXBvbmVudFwiO1xuXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlVHlwZSA9PSBcImNvbXBvbmVudFwiKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy50ZW1wbGF0ZSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBhbnk7XG4gICAgQElucHV0KCkgcHVibGljIHBhcmVudENvcmRzOiBET01SZWN0O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogTWVudUl0ZW1bXTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBNZW51T3B0aW9ucztcbiAgICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBjbG9zZVNpZ25hbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHNlbGZDb3JkczogRE9NUmVjdDtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNsYXNoZXMgb3IgZG90cyAtLSB0aGF0IHdpbGwgY2xlYXJseSBleGNsdWRlIGl0IGZyb20gYmVpbmcgYSBtYXQgaWNvblxuICAgIHB1YmxpYyByZWFkb25seSBtYXRJY29uUnggPSAvW1xcL1xcLl0vaTtcbiAgICBzaG93SWNvbkNvbHVtbiA9IHRydWU7XG4gICAgc2hvd1Nob3J0Y3V0Q29sdW1uID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YTogYW55LFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIC8vIG9wdGlvbmFsIG9ubHkgZm9yIHRoZSBwdXJwb3NlIG9mIGVzdGltYXRpbmcgZGltZW5zaW9uc1xuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgLy8gRGVmYXVsdHMgYXJlIHNldCBiZWZvcmUgQElucHV0KCkgaG9va3MgZXZhbHVhdGVcbiAgICAgICAgdGhpcy5kYXRhICA9IHRoaXMuX2RhdGE/LmRhdGE7XG4gICAgICAgIHRoaXMucGFyZW50Q29yZHMgID0gdGhpcy5fZGF0YT8ucGFyZW50Q29yZHM7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLl9kYXRhPy5pdGVtcztcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLl9kYXRhPy5jb25maWc7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLl9kYXRhPy5pZDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaChpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaSA9PSBcInN0cmluZ1wiKSByZXR1cm47XG5cbiAgICAgICAgICAgIC8vIFNldCBkZWZhdWx0c1xuICAgICAgICAgICAgaVsnX2Rpc2FibGVkJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGlbJ192aXNpYmxlJ10gPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoaS5sYWJlbClcbiAgICAgICAgICAgICAgICB0cnkgeyBpWydfZm9ybWF0dGVkTGFiZWwnXSA9IHRoaXMuZm9ybWF0TGFiZWwoaS5sYWJlbCk7IH0gY2F0Y2ggKGUpIHsgY29uc29sZS53YXJuKGUpIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBpLmlzRGlzYWJsZWQgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHRyeSB7IGlbJ19kaXNhYmxlZCddID0gaS5pc0Rpc2FibGVkKHRoaXMuZGF0YSB8fCB7fSk7IH0gY2F0Y2goZSkgeyBjb25zb2xlLndhcm4oZSkgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGkuaXNWaXNpYmxlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICB0cnkgeyBpWydfdmlzaWJsZSddID0gaS5pc1Zpc2libGUodGhpcy5kYXRhIHx8IHt9KTsgfSBjYXRjaCAoZSkgeyBjb25zb2xlLndhcm4oZSkgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGkubGlua1RlbXBsYXRlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICB0cnkgeyBpWydfbGluayddID0gaS5saW5rVGVtcGxhdGUodGhpcy5kYXRhIHx8IHt9KTsgfSBjYXRjaCAoZSkgeyBjb25zb2xlLndhcm4oZSkgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTaG93IHRoZSBpY29uIGNvbHVtbiBpZiB0aGVyZSBhcmUgYW55IGl0ZW1zIHdpdGggYW4gaWNvblxuICAgICAgICB0aGlzLnNob3dJY29uQ29sdW1uID0gISF0aGlzLml0ZW1zLmZpbmQoaSA9PlxuICAgICAgICAgICAgICAgIHR5cGVvZiBpID09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgaVsnaWNvbiddID09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICBpWydpY29uJ10ubGVuZ3RoID4gMlxuICAgICAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNob3dTaG9ydGN1dENvbHVtbiA9ICEhdGhpcy5pdGVtcy5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICB0eXBlb2YgaSA9PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGlbJ3Nob3J0Y3V0J10gPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGlbJ3Nob3J0Y3V0J10ubGVuZ3RoID4gMlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gICAgIHRoaXMuY2xvc2VPbkxlYXZlID0gdHJ1ZVxuICAgICAgICAvLyB9LCAzMDApO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Q29yZHMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZkNvcmRzID0gdGhpcy52aWV3Q29udGFpbmVyPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGFzeW5jIG9uTWVudUl0ZW1DbGljayhpdGVtOiBNZW51SXRlbSwgcm93OiBIVE1MVGFibGVSb3dFbGVtZW50LCBoaWRlQmFja2Ryb3AgPSBmYWxzZSkge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT0gJ3N0cmluZycpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoaXRlbS5zZXBhcmF0b3IpIHJldHVybiBudWxsO1xuXG4gICAgICAgIC8vIElmIGNhY2hlIGlzIGVuYWJsZWQsIG9ubHkgbG9hZCBpZiB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbi5cbiAgICAgICAgY29uc3QgZm9yY2VMb2FkID0gKGl0ZW0uY2FjaGVSZXNvbHZlZENoaWxkcmVuID8gIWl0ZW0uY2hpbGRyZW4gOiB0cnVlKTtcblxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlblJlc29sdmVyICYmIGZvcmNlTG9hZCkge1xuICAgICAgICAgICAgaXRlbVsnX2lzUmVzb2x2aW5nJ10gPSB0cnVlO1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGF3YWl0IGl0ZW0uY2hpbGRyZW5SZXNvbHZlcih0aGlzLmRhdGEpO1xuICAgICAgICAgICAgaXRlbVsnX2lzUmVzb2x2aW5nJ10gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXRlbS5jaGlsZFRlbXBsYXRlICYmICFpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmFjdGlvbih0aGlzLmRhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIG5vIGFjdGlvbiwgdGhpcyBpcyBzaW1wbHkgYSB0ZXh0IGl0ZW0uXG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTmVlZCBYIHBvcywgWSBwb3MsIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAgICAgY29uc3QgYm91bmRzID0gcm93LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGNvcmRzID0ge1xuICAgICAgICAgICAgdG9wOiBudWxsLFxuICAgICAgICAgICAgbGVmdDogbnVsbCxcbiAgICAgICAgICAgIGJvdHRvbTogbnVsbCxcbiAgICAgICAgICAgIHJpZ2h0OiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0IHBvc2l0aW9uIGNvb3JkaW5hdGVzXG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gYXdhaXQgKGl0ZW0uY2hpbGRUZW1wbGF0ZVxuICAgICAgICAgICAgPyBjYWxjQ29tcG9uZW50Qm91bmRzKFRlbXBsYXRlV3JhcHBlciwgeyB0ZW1wbGF0ZTogaXRlbS5jaGlsZFRlbXBsYXRlIH0pXG4gICAgICAgICAgICA6IGNhbGNNZW51SXRlbUJvdW5kcyhpdGVtLmNoaWxkcmVuLCB0aGlzLmRhdGEpKTtcblxuICAgICAgICBpZiAoYm91bmRzLnkgKyBoZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpXG4gICAgICAgICAgICBjb3Jkcy5ib3R0b20gPSBcIjBweFwiO1xuICAgICAgICBpZiAoYm91bmRzLnggKyBib3VuZHMud2lkdGggKyB3aWR0aCA+IHdpbmRvdy5pbm5lcldpZHRoKVxuICAgICAgICAgICAgY29yZHMubGVmdCA9ICgoYm91bmRzLnggLSB3aWR0aCkpICsgXCJweFwiO1xuXG4gICAgICAgIGlmICghY29yZHMuYm90dG9tKSBjb3Jkcy50b3AgPSBib3VuZHMueSArIFwicHhcIjtcbiAgICAgICAgaWYgKCFjb3Jkcy5sZWZ0KSBjb3Jkcy5sZWZ0ID0gYm91bmRzLnggKyBib3VuZHMud2lkdGggKyBcInB4XCI7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gaXRlbS5jaGlsZHJlbiA/IE1lbnVDb21wb25lbnQgOiBUZW1wbGF0ZVdyYXBwZXIgYXMgYW55O1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oY29tcG9uZW50LCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogY29yZHMsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbXCJuZ3gtbWVudVwiLCBcIm5neC1hcHAtbWVudVwiXS5jb25jYXQodGhpcy5jb25maWc/LmN1c3RvbUNsYXNzIHx8IFtdKSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFwibmd4LW1lbnUtYmFja2Ryb3BcIixcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiAhaGlkZUJhY2tkcm9wLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgICAgICBwYXJlbnRDb3JkczogdGhpcy52aWV3Q29udGFpbmVyPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgICAgICBpdGVtczogaXRlbS5jaGlsZHJlbixcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogaXRlbS5jaGlsZFRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IF9zID0gZGlhbG9nUmVmXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiBpdGVtLmFjdGlvbiA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYWN0aW9uKHJlc3VsdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ19zZWxmY2xvc2UnXSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBfcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFiZWxcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGZvcm1hdExhYmVsKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbGFiZWwucmVwbGFjZSgvXyhbYS16MC05XSlfL2ksIChtYXRjaCwgZ3JvdXApID0+IGA8dT4ke2dyb3VwfTwvdT5gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29udGV4dCBtZW51IHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXNcbiAgICAgKi9cbiAgICAvLyBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbJ2V2ZW50J10pXG4gICAgLy8gQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpibHVyXCIsIFsnZXZlbnQnXSlcbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZVNpZ25hbC5lbWl0KCk7XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGRpYWxvZyBpcyBjbGlwcGluZyBvZmZzY3JlZW5cbiAgICAgKiBpZiBzbywgbW92ZSBpdCBiYWNrIGludG8gdmlldy5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHByaXZhdGUgb25SZXNpemUoKSB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy52aWV3Q29udGFpbmVyPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoIWVsKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCB4LCB5IH0gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm5neC1tZW51XCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoIXRhcmdldCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIE1vdmUgYmFjayBpbnRvIHZpZXcgaWYgd2UncmUgY2xpcHBpbmcgb3V0c2lkZSBvZiB0aGUgYm90dG9tXG4gICAgICAgIGlmICh5ICsgaGVpZ2h0ID4gd2luZG93LmlubmVySGVpZ2h0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdUb3AgPSAod2luZG93LmlubmVySGVpZ2h0IC0gKGhlaWdodCArICh0aGlzLmNvbmZpZy5lZGdlUGFkZGluZyB8fCAxMikpKSArIFwicHhcIjtcbiAgICAgICAgICAgIHRhcmdldC5zdHlsZVsnbWFyZ2luLXRvcCddID0gbmV3VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTW92ZSBiYWNrIGludG8gdmlldyBpZiB3ZSdyZSBjbGlwcGluZyBvZmYgdGhlIHJpZ2h0XG4gICAgICAgIGlmICh4ICsgd2lkdGggPiB3aW5kb3cuaW5uZXJXaWR0aCkge1xuICAgICAgICAgICAgY29uc3QgbmV3TGVmdCA9ICh3aW5kb3cuaW5uZXJXaWR0aCAtICh3aWR0aCArICh0aGlzLmNvbmZpZy5lZGdlUGFkZGluZyB8fCAxMikpKSArIFwicHhcIlxuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlWydtYXJnaW4tbGVmdCddID0gbmV3TGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHByaXZhdGUgaG92ZXJlZEl0ZW1zOiBNYXREaWFsb2dSZWY8YW55PltdO1xuICAgIC8vIGFzeW5jIG9uSG92ZXIoaXRlbSwgcm93OiBIVE1MVGFibGVSb3dFbGVtZW50KSB7XG4gICAgLy8gICAgIHRoaXMuaG92ZXJlZEl0ZW1zLmZvckVhY2goaSA9PiBpLmNsb3NlKC0xKSk7XG5cbiAgICAvLyAgICAgaWYgKHR5cGVvZiBpdGVtWydfc2VsZmNsb3NlJ10gPT0gJ251bWJlcicgJiYgKERhdGUubm93KCkgLSBpdGVtWydfc2VsZmNsb3NlJ10pIDwgMyoxMDAwKSByZXR1cm47XG5cbiAgICAvLyAgICAgY29uc3QgaGkgPSBhd2FpdCB0aGlzLm9uTWVudUl0ZW1DbGljayhpdGVtLCByb3csIHRydWUpO1xuICAgIC8vICAgICB0aGlzLmhvdmVyZWRJdGVtcy5wdXNoKGhpKTtcblxuICAgIC8vICAgICBoaS5hZnRlckNsb3NlZCgpLnRvUHJvbWlzZSgpLnRoZW4oZSA9PiB7XG4gICAgLy8gICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgLy8gICAgICAgICB0aGlzLmhvdmVyZWRJdGVtcy5zcGxpY2UodGhpcy5ob3ZlcmVkSXRlbXMuZmluZEluZGV4KGkgPT4gaSA9PSBoaSksIDEpO1xuICAgIC8vICAgICB9KVxuICAgIC8vIH1cblxuICAgIC8vIGNsb3NlT25MZWF2ZSA9IGZhbHNlO1xuICAgIC8vIGFzeW5jIG9uTGVhdmUoKSB7XG4gICAgLy8gICAgIGlmICh0aGlzLmNsb3NlT25MZWF2ZSkge1xuICAgIC8vICAgICAgICAgaWYgKHRoaXMuaG92ZXJlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgICAgICB0aGlzLmhvdmVyZWRJdGVtcy5mb3JFYWNoKGkgPT4gaS5jbG9zZSgtMSkpO1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuaG92ZXJlZEl0ZW1zLnNwbGljZSgwKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIGVsc2Uge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuY2xvc2VTaWduYWwubmV4dCgtMSk7XG5cbiAgICAvLyAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgtMSk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG59XG4iLCI8dGFibGU+XG4gICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBBIHJvdyB3aXRoIGEgY2xpY2sgYWN0aW9uIC0tPlxuICAgICAgICAgICAgICAgIDx0ciAjcm93XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbSAhPSAnc2VwYXJhdG9yJyAmJiBpdGVtLnNlcGFyYXRvciAhPSB0cnVlICYmIGl0ZW1bJ192aXNpYmxlJ11cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXRlbVsnX2Rpc2FibGVkJ11cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiIWl0ZW1bJ19kaXNhYmxlZCddICYmIG9uTWVudUl0ZW1DbGljayhpdGVtLCByb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhvdmVyXT1cIml0ZW1bJ2NoaWxkcmVuJ10gJiYgcm93Wydob3ZlciddXCJcbiAgICAgICAgICAgICAgICAgICAgKHBvaW50ZXJlbnRlcik9XCJyb3dbJ2hvdmVyJ10gPSB0cnVlO1wiXG4gICAgICAgICAgICAgICAgICAgIChwb2ludGVybGVhdmUpPVwicm93Wydob3ZlciddID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tICAoaXRlbVsnY2hpbGRyZW4nXT8ubGVuZ3RoID4gMCB8fCBpdGVtWydjaGlsZFRlbXBsYXRlJ10pICYmIG9uSG92ZXIoaXRlbSwgcm93KTsgY2xvc2VPbkxlYXZlPXRydWUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImljb25cIiAqbmdJZj1cInNob3dJY29uQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibWF0SWNvblJ4LnRlc3QoaXRlbS5pY29uKTsgZWxzZSBtYXRJY29uXCIgW3NyY109XCJpdGVtLmljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtYXRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbZm9udEljb25dPVwiaXRlbS5pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSAnTm9ybWFsJyBhY3Rpb24gYmFzZWQgaXRlbSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy1sZWZ0XT1cInNob3dJY29uQ29sdW1uID8gMCA6ICcxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0ubGlua1RhcmdldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiKGl0ZW1bJ19saW5rJ10gfHwgaXRlbS5saW5rKSA/IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGl0ZW1bJ19saW5rJ10gfHwgaXRlbS5saW5rKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiRhbnkoaXRlbS5sYWJlbFRlbXBsYXRlKT8ucHJvdG90eXBlOyBlbHNlIGxhYmVsVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShpdGVtKS5sYWJlbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICckaW1wbGljaXQnOiBkYXRhLCAnZGlhbG9nJzogZGlhbG9nUmVmIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhJGFueShpdGVtKT8ubGFiZWxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJpdGVtWydfZm9ybWF0dGVkTGFiZWwnXVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiJGFueShpdGVtKT8ubGFiZWxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7JGFueShpdGVtKT8ubGFiZWxUZW1wbGF0ZShkYXRhIHx8IHt9KX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzaG9ydGN1dFwiICpuZ0lmPVwic2hvd1Nob3J0Y3V0Q29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uc2hvcnRjdXRMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIm1pbi13aWR0aDogMTZweFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRUZW1wbGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtLmNoaWxkcmVuUmVzb2x2ZXIgJiYgIWl0ZW1bJ19pc1Jlc29sdmluZyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXRsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGV2cm9uX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJpdGVtWydfaXNSZXNvbHZpbmcnXVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW2RpYW1ldGVyXT1cIjIwXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDRweFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiaXRlbSAhPSAnc2VwYXJhdG9yJyAmJiBpdGVtLnNlcGFyYXRvciA9PSB0cnVlXCIgY2xhc3M9XCJkaXNhYmxlZCBzZXBhcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2VudGVyXCIgW2F0dHIuY29sc3Bhbl09XCIyICsgKHNob3dJY29uQ29sdW1uID8gMSA6IDApICsgKHNob3dTaG9ydGN1dENvbHVtbiA/IDEgOiAwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVsnbGFiZWwnXSB8fCAnJ319XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJpdGVtID09ICdzZXBhcmF0b3InXCIgY2xhc3M9XCJkaXNhYmxlZCBzZXBhcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiMiArIChzaG93SWNvbkNvbHVtbiA/IDEgOiAwKSArIChzaG93U2hvcnRjdXRDb2x1bW4gPyAxIDogMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPCEtLSA8ZGl2ICpuZ0lmPVwidHJ1ZVwiIGNsYXNzPVwiYmFja2Ryb3BcIj48L2Rpdj4gLS0+XG48IS0tIDxkaXZcbiAgICAqbmdJZj1cInBhcmVudENvcmRzICYmIHRoaXMuc2VsZkNvcmRzXCJcbiAgICBjbGFzcz1cImJhY2tkcm9wIHBhcmVudFwiXG4gICAgW3N0eWxlLnRvcF09XCIocGFyZW50Q29yZHMueSAtIHNlbGZDb3Jkcy55ICsgNikgKyAncHgnXCJcbiAgICBbc3R5bGUubGVmdF09XCIocGFyZW50Q29yZHMueCAtIHNlbGZDb3Jkcy54ICsgMTIpICsgJ3B4J1wiXG4gICAgW3N0eWxlLndpZHRoXT1cIihwYXJlbnRDb3Jkcy53aWR0aCkgKyAncHgnXCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cIihwYXJlbnRDb3Jkcy5oZWlnaHQpICsgJ3B4J1wiXG4+XG48L2Rpdj4gLS0+XG48IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJlbnRDb3JkcyAmJiBzZWxmQ29yZHNcIj5cbiAgICA8ZGl2ICN0b3BcbiAgICAgICAgY2xhc3M9XCJiYWNrZHJvcC1vdXRlclwiXG4gICAgICAgIFtzdHlsZS5ib3R0b21dPVwiKHBhcmVudENvcmRzLnkgLSBzZWxmQ29yZHMueSkqLTEgKyBwYXJlbnRDb3Jkcy5oZWlnaHQgKyAncHgnXCJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZjAwMztcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cIm9uTGVhdmUoKVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgI3JpZ2h0XG4gICAgICAgIGNsYXNzPVwiYmFja2Ryb3Atb3V0ZXJcIlxuICAgICAgICBbc3R5bGUubGVmdF09XCIoKHBhcmVudENvcmRzLnggLSBzZWxmQ29yZHMueCkgKyBwYXJlbnRDb3Jkcy53aWR0aCkgKyAncHgnXCJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjMGYwMztcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cIm9uTGVhdmUoKVwiXG4gICAgPlxuICAgIDxkaXY+cHg6IHt7cGFyZW50Q29yZHMueH19PC9kaXY+XG4gICAgPGRpdj5weToge3twYXJlbnRDb3Jkcy55fX08L2Rpdj5cbiAgICA8ZGl2PnB3OiB7e3BhcmVudENvcmRzLndpZHRofX08L2Rpdj5cbiAgICA8ZGl2PnBoOiB7e3BhcmVudENvcmRzLmhlaWdodH19PC9kaXY+XG4gICAgPGRpdj5zeDoge3tzZWxmQ29yZHMueH19PC9kaXY+XG4gICAgPGRpdj5zeToge3tzZWxmQ29yZHMueX19PC9kaXY+XG4gICAgPGRpdj5zdzoge3tzZWxmQ29yZHMud2lkdGh9fTwvZGl2PlxuICAgIDxkaXY+c2g6IHt7c2VsZkNvcmRzLmhlaWdodH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjYm90dG9tXG4gICAgICAgIGNsYXNzPVwiYmFja2Ryb3Atb3V0ZXJcIlxuICAgICAgICBbc3R5bGUudG9wXT1cIigocGFyZW50Q29yZHMueSArIHBhcmVudENvcmRzLmhlaWdodCAtIHNlbGZDb3Jkcy55KSkgKyAncHgnXCJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjMDBmMztcIlxuICAgICAgICAocG9pbnRlcmVudGVyKT1cIm9uTGVhdmUoKVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgI2xlZnRcbiAgICAgICAgY2xhc3M9XCJiYWNrZHJvcC1vdXRlclwiXG4gICAgICAgIFtzdHlsZS5yaWdodF09XCIoKHBhcmVudENvcmRzLnggLSBzZWxmQ29yZHMueCkqLTEgKyBwYXJlbnRDb3Jkcy53aWR0aCArIDMyKSArICdweCdcIlxuICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmYzO1wiXG4gICAgICAgIChwb2ludGVyZW50ZXIpPVwib25MZWF2ZSgpXCJcbiAgICA+PC9kaXY+XG48L25nLWNvbnRhaW5lcj4gLS0+XG4iXX0=
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQTJCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFHdEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxFQUFFLFNBQXFCLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDNUUsTUFBTSxJQUFJLEdBQUc7UUFDVCxJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE1BQU0sRUFBRSxFQUFFO1FBQ1YsRUFBRSxFQUFFLElBQUk7S0FDWCxDQUFBO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVB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QUFDO1lBQ3hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3ZDO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDekM7SUFDTCxDQUFDOzswR0FqTlEsYUFBYSw4RUFrQkUsZUFBZTs4RkFsQjlCLGFBQWEsdVFDckcxQiw4M0xBaUlBLHl6RERwQ1EsSUFBSSw2RkFDSixPQUFPLG1IQUNQLGdCQUFnQixtSkFDaEIsYUFBYSxtTEFDYix3QkFBd0I7MkZBSW5CLGFBQWE7a0JBYnpCLFNBQVM7K0JBQ0ksVUFBVSxXQUdYO3dCQUNMLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isd0JBQXdCO3FCQUMzQixjQUNXLElBQUk7OzBCQW9CWCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFDUixRQUFROzRFQW5CRyxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEVBQUU7c0JBQWpCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFzTEMsUUFBUTtzQkFEZixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIGNyZWF0ZUFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUnO1xuXG5leHBvcnQgY29uc3QgY2FsY01lbnVJdGVtQm91bmRzID0gYXN5bmMgKG1lbnVJdGVtczogTWVudUl0ZW1bXSwgZGF0YU9iajogYW55KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgZGF0YTogZGF0YU9iaixcbiAgICAgICAgaXRlbXM6IG1lbnVJdGVtcyxcbiAgICAgICAgY29uZmlnOiB7fSxcbiAgICAgICAgaWQ6IG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsY0NvbXBvbmVudEJvdW5kcyhNZW51Q29tcG9uZW50LCBkYXRhKTtcbn1cblxuY29uc3QgY2FsY0NvbXBvbmVudEJvdW5kcyA9IGFzeW5jIChjb21wb25lbnQ6IFR5cGU8YW55PiwgZGF0YTogYW55KSA9PiB7XG4gICAgLy8gRm9yY2libHkgYm9vdHN0cmFwIHRoZSBjdHggbWVudSBvdXRzaWRlIG9mIHRoZSBjbGllbnQgYXBwbGljYXRpb24ncyB6b25lLlxuICAgIGNvbnN0IGFwcCA9IGF3YWl0IGNyZWF0ZUFwcGxpY2F0aW9uKHtcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7IHByb3ZpZGU6IE1BVF9ESUFMT0dfREFUQSwgdXNlVmFsdWU6IGRhdGEgfVxuICAgICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGRlbC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICBkZWwuc3R5bGUubGVmdCA9ICctMTAwMHZ3JztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChkZWwpO1xuXG4gICAgY29uc3QgYmFzZSA9IGFwcC5ib290c3RyYXAoY29tcG9uZW50LCBkZWwpO1xuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IGJhc2U7XG5cbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShhcHAuaXNTdGFibGUpO1xuXG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gaW5zdGFuY2Uudmlld0NvbnRhaW5lcj8uZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBhcHAuZGVzdHJveSgpO1xuICAgIGRlbC5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVjdDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWVudS10ZW1wbGF0ZS13cmFwcGVyJyxcblxuICAgIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlVHlwZSA9PSAndGVtcGxhdGUnOyBlbHNlIHBvcnRhbE91dGxldFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAnJGltcGxpY2l0JzogZGF0YSwgZGlhbG9nOiBkaWFsb2dSZWYgfVwiXG4gICAgICAgIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNwb3J0YWxPdXRsZXQgW2Nka1BvcnRhbE91dGxldF09XCJjb21wb25lbnRQb3J0YWxcIiA+PC9uZy10ZW1wbGF0ZT5cbmAsXG4gICAgaW1wb3J0czogWyBOZ1RlbXBsYXRlT3V0bGV0LCBQb3J0YWxNb2R1bGUsIE5nSWYgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuY2xhc3MgVGVtcGxhdGVXcmFwcGVyIHtcblxuICAgIGRhdGE6IE9iamVjdDtcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHRlbXBsYXRlVHlwZTogXCJ0ZW1wbGF0ZVwiIHwgXCJjb21wb25lbnRcIlxuICAgIGNvbXBvbmVudFBvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICAgICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IF9kYXRhLmRhdGE7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSBfZGF0YS50ZW1wbGF0ZTtcblxuICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIHByb2JhYmx5IGludmFsaWRcbiAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0aGlzLnRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyBcInRlbXBsYXRlXCIgOiBcImNvbXBvbmVudFwiO1xuXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlVHlwZSA9PSBcImNvbXBvbmVudFwiKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy50ZW1wbGF0ZSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBhbnk7XG4gICAgQElucHV0KCkgcHVibGljIHBhcmVudENvcmRzOiBET01SZWN0O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogTWVudUl0ZW1bXTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBNZW51T3B0aW9ucztcbiAgICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBjbG9zZVNpZ25hbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHNlbGZDb3JkczogRE9NUmVjdDtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNsYXNoZXMgb3IgZG90cyAtLSB0aGF0IHdpbGwgY2xlYXJseSBleGNsdWRlIGl0IGZyb20gYmVpbmcgYSBtYXQgaWNvblxuICAgIHB1YmxpYyByZWFkb25seSBtYXRJY29uUnggPSAvW1xcL1xcLl0vaTtcbiAgICBzaG93SWNvbkNvbHVtbiA9IHRydWU7XG4gICAgc2hvd1Nob3J0Y3V0Q29sdW1uID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YTogYW55LFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIC8vIG9wdGlvbmFsIG9ubHkgZm9yIHRoZSBwdXJwb3NlIG9mIGVzdGltYXRpbmcgZGltZW5zaW9uc1xuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgLy8gRGVmYXVsdHMgYXJlIHNldCBiZWZvcmUgQElucHV0KCkgaG9va3MgZXZhbHVhdGVcbiAgICAgICAgdGhpcy5kYXRhICA9IHRoaXMuX2RhdGE/LmRhdGE7XG4gICAgICAgIHRoaXMucGFyZW50Q29yZHMgID0gdGhpcy5fZGF0YT8ucGFyZW50Q29yZHM7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLl9kYXRhPy5pdGVtcztcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLl9kYXRhPy5jb25maWc7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLl9kYXRhPy5pZDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaChpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaSA9PSBcInN0cmluZ1wiKSByZXR1cm47XG5cbiAgICAgICAgICAgIC8vIFNldCBkZWZhdWx0c1xuICAgICAgICAgICAgaVsnX2Rpc2FibGVkJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIGlbJ192aXNpYmxlJ10gPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoaS5sYWJlbClcbiAgICAgICAgICAgICAgICB0cnkgeyBpWydfZm9ybWF0dGVkTGFiZWwnXSA9IHRoaXMuZm9ybWF0TGFiZWwoaS5sYWJlbCk7IH0gY2F0Y2ggKGUpIHsgY29uc29sZS53YXJuKGUpIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBpLmlzRGlzYWJsZWQgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHRyeSB7IGlbJ19kaXNhYmxlZCddID0gaS5pc0Rpc2FibGVkKHRoaXMuZGF0YSB8fCB7fSk7IH0gY2F0Y2goZSkgeyBjb25zb2xlLndhcm4oZSkgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGkuaXNWaXNpYmxlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICB0cnkgeyBpWydfdmlzaWJsZSddID0gaS5pc1Zpc2libGUodGhpcy5kYXRhIHx8IHt9KTsgfSBjYXRjaCAoZSkgeyBjb25zb2xlLndhcm4oZSkgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGkubGlua1RlbXBsYXRlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICB0cnkgeyBpWydfbGluayddID0gaS5saW5rVGVtcGxhdGUodGhpcy5kYXRhIHx8IHt9KTsgfSBjYXRjaCAoZSkgeyBjb25zb2xlLndhcm4oZSkgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTaG93IHRoZSBpY29uIGNvbHVtbiBpZiB0aGVyZSBhcmUgYW55IGl0ZW1zIHdpdGggYW4gaWNvblxuICAgICAgICB0aGlzLnNob3dJY29uQ29sdW1uID0gISF0aGlzLml0ZW1zPy5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICB0eXBlb2YgaSA9PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGlbJ2ljb24nXSA9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgaVsnaWNvbiddLmxlbmd0aCA+IDJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zaG93U2hvcnRjdXRDb2x1bW4gPSAhIXRoaXMuaXRlbXM/LmZpbmQoaSA9PlxuICAgICAgICAgICAgICAgIHR5cGVvZiBpID09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgaVsnc2hvcnRjdXQnXSA9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgaVsnc2hvcnRjdXQnXS5sZW5ndGggPiAyXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgICAgdGhpcy5jbG9zZU9uTGVhdmUgPSB0cnVlXG4gICAgICAgIC8vIH0sIDMwMCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRDb3Jkcykge1xuICAgICAgICAgICAgdGhpcy5zZWxmQ29yZHMgPSB0aGlzLnZpZXdDb250YWluZXI/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHBhcmFtIGV2dFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgYXN5bmMgb25NZW51SXRlbUNsaWNrKGl0ZW06IE1lbnVJdGVtLCByb3c6IEhUTUxUYWJsZVJvd0VsZW1lbnQsIGhpZGVCYWNrZHJvcCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChpdGVtLnNlcGFyYXRvcikgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgLy8gSWYgY2FjaGUgaXMgZW5hYmxlZCwgb25seSBsb2FkIGlmIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLlxuICAgICAgICBjb25zdCBmb3JjZUxvYWQgPSAoaXRlbS5jYWNoZVJlc29sdmVkQ2hpbGRyZW4gPyAhaXRlbS5jaGlsZHJlbiA6IHRydWUpO1xuXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuUmVzb2x2ZXIgJiYgZm9yY2VMb2FkKSB7XG4gICAgICAgICAgICBpdGVtWydfaXNSZXNvbHZpbmcnXSA9IHRydWU7XG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gYXdhaXQgaXRlbS5jaGlsZHJlblJlc29sdmVyKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICBpdGVtWydfaXNSZXNvbHZpbmcnXSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpdGVtLmNoaWxkVGVtcGxhdGUgJiYgIWl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmFjdGlvbikge1xuICAgICAgICAgICAgICAgIGl0ZW0uYWN0aW9uKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgbm8gYWN0aW9uLCB0aGlzIGlzIHNpbXBseSBhIHRleHQgaXRlbS5cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOZWVkIFggcG9zLCBZIHBvcywgd2lkdGggYW5kIGhlaWdodFxuICAgICAgICBjb25zdCBib3VuZHMgPSByb3cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgY29yZHMgPSB7XG4gICAgICAgICAgICB0b3A6IG51bGwsXG4gICAgICAgICAgICBsZWZ0OiBudWxsLFxuICAgICAgICAgICAgYm90dG9tOiBudWxsLFxuICAgICAgICAgICAgcmlnaHQ6IG51bGxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTZXQgcG9zaXRpb24gY29vcmRpbmF0ZXNcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBhd2FpdCAoaXRlbS5jaGlsZFRlbXBsYXRlXG4gICAgICAgICAgICA/IGNhbGNDb21wb25lbnRCb3VuZHMoVGVtcGxhdGVXcmFwcGVyLCB7IHRlbXBsYXRlOiBpdGVtLmNoaWxkVGVtcGxhdGUgfSlcbiAgICAgICAgICAgIDogY2FsY01lbnVJdGVtQm91bmRzKGl0ZW0uY2hpbGRyZW4sIHRoaXMuZGF0YSkpO1xuXG4gICAgICAgIGlmIChib3VuZHMueSArIGhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodClcbiAgICAgICAgICAgIGNvcmRzLmJvdHRvbSA9IFwiMHB4XCI7XG4gICAgICAgIGlmIChib3VuZHMueCArIGJvdW5kcy53aWR0aCArIHdpZHRoID4gd2luZG93LmlubmVyV2lkdGgpXG4gICAgICAgICAgICBjb3Jkcy5sZWZ0ID0gKChib3VuZHMueCAtIHdpZHRoKSkgKyBcInB4XCI7XG5cbiAgICAgICAgaWYgKCFjb3Jkcy5ib3R0b20pIGNvcmRzLnRvcCA9IGJvdW5kcy55ICsgXCJweFwiO1xuICAgICAgICBpZiAoIWNvcmRzLmxlZnQpIGNvcmRzLmxlZnQgPSBib3VuZHMueCArIGJvdW5kcy53aWR0aCArIFwicHhcIjtcblxuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBpdGVtLmNoaWxkcmVuID8gTWVudUNvbXBvbmVudCA6IFRlbXBsYXRlV3JhcHBlciBhcyBhbnk7XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3Blbihjb21wb25lbnQsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBjb3JkcyxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFtcIm5neC1tZW51XCIsIFwibmd4LWFwcC1tZW51XCJdLmNvbmNhdCh0aGlzLmNvbmZpZz8uY3VzdG9tQ2xhc3MgfHwgW10pLFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogXCJuZ3gtbWVudS1iYWNrZHJvcFwiLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6ICFoaWRlQmFja2Ryb3AsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5kYXRhLFxuICAgICAgICAgICAgICAgIHBhcmVudENvcmRzOiB0aGlzLnZpZXdDb250YWluZXI/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtLmNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBpdGVtLmNoaWxkVGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgX3MgPSBkaWFsb2dSZWZcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIGl0ZW0uYWN0aW9uID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hY3Rpb24ocmVzdWx0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnX3NlbGZjbG9zZSddID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIF9zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBsYWJlbFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZm9ybWF0TGFiZWwobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBsYWJlbC5yZXBsYWNlKC9fKFthLXowLTldKV8vaSwgKG1hdGNoLCBncm91cCkgPT4gYDx1PiR7Z3JvdXB9PC91PmApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBjb250ZXh0IG1lbnUgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlc1xuICAgICAqL1xuICAgIC8vIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFsnZXZlbnQnXSlcbiAgICAvLyBASG9zdExpc3RlbmVyKFwid2luZG93OmJsdXJcIiwgWydldmVudCddKVxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmNsb3NlU2lnbmFsLmVtaXQoKTtcblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZGlhbG9nIGlzIGNsaXBwaW5nIG9mZnNjcmVlblxuICAgICAqIGlmIHNvLCBtb3ZlIGl0IGJhY2sgaW50byB2aWV3LlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXG4gICAgcHJpdmF0ZSBvblJlc2l6ZSgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXI/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghZWwpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHgsIHkgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubmd4LW1lbnVcIikgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghdGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgLy8gTW92ZSBiYWNrIGludG8gdmlldyBpZiB3ZSdyZSBjbGlwcGluZyBvdXRzaWRlIG9mIHRoZSBib3R0b21cbiAgICAgICAgaWYgKHkgKyBoZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RvcCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgLSAoaGVpZ2h0ICsgKHRoaXMuY29uZmlnLmVkZ2VQYWRkaW5nIHx8IDEyKSkpICsgXCJweFwiO1xuICAgICAgICAgICAgdGFyZ2V0LnN0eWxlWydtYXJnaW4tdG9wJ10gPSBuZXdUb3A7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNb3ZlIGJhY2sgaW50byB2aWV3IGlmIHdlJ3JlIGNsaXBwaW5nIG9mZiB0aGUgcmlnaHRcbiAgICAgICAgaWYgKHggKyB3aWR0aCA+IHdpbmRvdy5pbm5lcldpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gKHdpbmRvdy5pbm5lcldpZHRoIC0gKHdpZHRoICsgKHRoaXMuY29uZmlnLmVkZ2VQYWRkaW5nIHx8IDEyKSkpICsgXCJweFwiXG4gICAgICAgICAgICB0YXJnZXQuc3R5bGVbJ21hcmdpbi1sZWZ0J10gPSBuZXdMZWZ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcHJpdmF0ZSBob3ZlcmVkSXRlbXM6IE1hdERpYWxvZ1JlZjxhbnk+W107XG4gICAgLy8gYXN5bmMgb25Ib3ZlcihpdGVtLCByb3c6IEhUTUxUYWJsZVJvd0VsZW1lbnQpIHtcbiAgICAvLyAgICAgdGhpcy5ob3ZlcmVkSXRlbXMuZm9yRWFjaChpID0+IGkuY2xvc2UoLTEpKTtcblxuICAgIC8vICAgICBpZiAodHlwZW9mIGl0ZW1bJ19zZWxmY2xvc2UnXSA9PSAnbnVtYmVyJyAmJiAoRGF0ZS5ub3coKSAtIGl0ZW1bJ19zZWxmY2xvc2UnXSkgPCAzKjEwMDApIHJldHVybjtcblxuICAgIC8vICAgICBjb25zdCBoaSA9IGF3YWl0IHRoaXMub25NZW51SXRlbUNsaWNrKGl0ZW0sIHJvdywgdHJ1ZSk7XG4gICAgLy8gICAgIHRoaXMuaG92ZXJlZEl0ZW1zLnB1c2goaGkpO1xuXG4gICAgLy8gICAgIGhpLmFmdGVyQ2xvc2VkKCkudG9Qcm9taXNlKCkudGhlbihlID0+IHtcbiAgICAvLyAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAvLyAgICAgICAgIHRoaXMuaG92ZXJlZEl0ZW1zLnNwbGljZSh0aGlzLmhvdmVyZWRJdGVtcy5maW5kSW5kZXgoaSA9PiBpID09IGhpKSwgMSk7XG4gICAgLy8gICAgIH0pXG4gICAgLy8gfVxuXG4gICAgLy8gY2xvc2VPbkxlYXZlID0gZmFsc2U7XG4gICAgLy8gYXN5bmMgb25MZWF2ZSgpIHtcbiAgICAvLyAgICAgaWYgKHRoaXMuY2xvc2VPbkxlYXZlKSB7XG4gICAgLy8gICAgICAgICBpZiAodGhpcy5ob3ZlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgICAgICAgICAgIHRoaXMuaG92ZXJlZEl0ZW1zLmZvckVhY2goaSA9PiBpLmNsb3NlKC0xKSk7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbXMuc3BsaWNlKDApO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICAgZWxzZSB7XG4gICAgLy8gICAgICAgICAgICAgdGhpcy5jbG9zZVNpZ25hbC5uZXh0KC0xKTtcblxuICAgIC8vICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKC0xKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vIH1cbn1cbiIsIjx0YWJsZT5cbiAgICA8dGJvZHk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEEgcm93IHdpdGggYSBjbGljayBhY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgPHRyICNyb3dcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtICE9ICdzZXBhcmF0b3InICYmIGl0ZW0uc2VwYXJhdG9yICE9IHRydWUgJiYgaXRlbVsnX3Zpc2libGUnXVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpdGVtWydfZGlzYWJsZWQnXVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIhaXRlbVsnX2Rpc2FibGVkJ10gJiYgb25NZW51SXRlbUNsaWNrKGl0ZW0sIHJvdylcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaG92ZXJdPVwiaXRlbVsnY2hpbGRyZW4nXSAmJiByb3dbJ2hvdmVyJ11cIlxuICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmVudGVyKT1cInJvd1snaG92ZXInXSA9IHRydWU7XCJcbiAgICAgICAgICAgICAgICAgICAgKHBvaW50ZXJsZWF2ZSk9XCJyb3dbJ2hvdmVyJ10gPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwhLS0gIChpdGVtWydjaGlsZHJlbiddPy5sZW5ndGggPiAwIHx8IGl0ZW1bJ2NoaWxkVGVtcGxhdGUnXSkgJiYgb25Ib3ZlcihpdGVtLCByb3cpOyBjbG9zZU9uTGVhdmU9dHJ1ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaWNvblwiICpuZ0lmPVwic2hvd0ljb25Db2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJtYXRJY29uUngudGVzdChpdGVtLmljb24pOyBlbHNlIG1hdEljb25cIiBbc3JjXT1cIml0ZW0uaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21hdEljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtmb250SWNvbl09XCJpdGVtLmljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tICdOb3JtYWwnIGFjdGlvbiBiYXNlZCBpdGVtIC0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWxlZnRdPVwic2hvd0ljb25Db2x1bW4gPyAwIDogJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS5saW5rVGFyZ2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCIoaXRlbVsnX2xpbmsnXSB8fCBpdGVtLmxpbmspID8gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaXRlbVsnX2xpbmsnXSB8fCBpdGVtLmxpbmspIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiJGFueShpdGVtLmxhYmVsVGVtcGxhdGUpPy5wcm90b3R5cGU7IGVsc2UgbGFiZWxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGl0ZW0pLmxhYmVsVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJyRpbXBsaWNpdCc6IGRhdGEsICdkaWFsb2cnOiBkaWFsb2dSZWYgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsYWJlbFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEkYW55KGl0ZW0pPy5sYWJlbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cIml0ZW1bJ19mb3JtYXR0ZWRMYWJlbCddXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIkYW55KGl0ZW0pPy5sYWJlbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3skYW55KGl0ZW0pPy5sYWJlbFRlbXBsYXRlKGRhdGEgfHwge30pfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNob3J0Y3V0XCIgKm5nSWY9XCJzaG93U2hvcnRjdXRDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zaG9ydGN1dExhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwibWluLXdpZHRoOiAxNnB4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZFRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0uY2hpbGRyZW5SZXNvbHZlciAmJiAhaXRlbVsnX2lzUmVzb2x2aW5nJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5dGxlPVwidHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZXZyb25fcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cIml0ZW1bJ19pc1Jlc29sdmluZyddXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMjBcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNHB4XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJpdGVtICE9ICdzZXBhcmF0b3InICYmIGl0ZW0uc2VwYXJhdG9yID09IHRydWVcIiBjbGFzcz1cImRpc2FibGVkIHNlcGFyYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjZW50ZXJcIiBbYXR0ci5jb2xzcGFuXT1cIjIgKyAoc2hvd0ljb25Db2x1bW4gPyAxIDogMCkgKyAoc2hvd1Nob3J0Y3V0Q29sdW1uID8gMSA6IDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtWydsYWJlbCddIHx8ICcnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIml0ZW0gPT0gJ3NlcGFyYXRvcidcIiBjbGFzcz1cImRpc2FibGVkIHNlcGFyYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCIyICsgKHNob3dJY29uQ29sdW1uID8gMSA6IDApICsgKHNob3dTaG9ydGN1dENvbHVtbiA/IDEgOiAwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPlxuXG48IS0tIDxkaXYgKm5nSWY9XCJ0cnVlXCIgY2xhc3M9XCJiYWNrZHJvcFwiPjwvZGl2PiAtLT5cbjwhLS0gPGRpdlxuICAgICpuZ0lmPVwicGFyZW50Q29yZHMgJiYgdGhpcy5zZWxmQ29yZHNcIlxuICAgIGNsYXNzPVwiYmFja2Ryb3AgcGFyZW50XCJcbiAgICBbc3R5bGUudG9wXT1cIihwYXJlbnRDb3Jkcy55IC0gc2VsZkNvcmRzLnkgKyA2KSArICdweCdcIlxuICAgIFtzdHlsZS5sZWZ0XT1cIihwYXJlbnRDb3Jkcy54IC0gc2VsZkNvcmRzLnggKyAxMikgKyAncHgnXCJcbiAgICBbc3R5bGUud2lkdGhdPVwiKHBhcmVudENvcmRzLndpZHRoKSArICdweCdcIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiKHBhcmVudENvcmRzLmhlaWdodCkgKyAncHgnXCJcbj5cbjwvZGl2PiAtLT5cbjwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudENvcmRzICYmIHNlbGZDb3Jkc1wiPlxuICAgIDxkaXYgI3RvcFxuICAgICAgICBjbGFzcz1cImJhY2tkcm9wLW91dGVyXCJcbiAgICAgICAgW3N0eWxlLmJvdHRvbV09XCIocGFyZW50Q29yZHMueSAtIHNlbGZDb3Jkcy55KSotMSArIHBhcmVudENvcmRzLmhlaWdodCArICdweCdcIlxuICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6ICNmMDAzO1wiXG4gICAgICAgIChwb2ludGVyZW50ZXIpPVwib25MZWF2ZSgpXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdiAjcmlnaHRcbiAgICAgICAgY2xhc3M9XCJiYWNrZHJvcC1vdXRlclwiXG4gICAgICAgIFtzdHlsZS5sZWZ0XT1cIigocGFyZW50Q29yZHMueCAtIHNlbGZDb3Jkcy54KSArIHBhcmVudENvcmRzLndpZHRoKSArICdweCdcIlxuICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6ICMwZjAzO1wiXG4gICAgICAgIChwb2ludGVyZW50ZXIpPVwib25MZWF2ZSgpXCJcbiAgICA+XG4gICAgPGRpdj5weDoge3twYXJlbnRDb3Jkcy54fX08L2Rpdj5cbiAgICA8ZGl2PnB5OiB7e3BhcmVudENvcmRzLnl9fTwvZGl2PlxuICAgIDxkaXY+cHc6IHt7cGFyZW50Q29yZHMud2lkdGh9fTwvZGl2PlxuICAgIDxkaXY+cGg6IHt7cGFyZW50Q29yZHMuaGVpZ2h0fX08L2Rpdj5cbiAgICA8ZGl2PnN4OiB7e3NlbGZDb3Jkcy54fX08L2Rpdj5cbiAgICA8ZGl2PnN5OiB7e3NlbGZDb3Jkcy55fX08L2Rpdj5cbiAgICA8ZGl2PnN3OiB7e3NlbGZDb3Jkcy53aWR0aH19PC9kaXY+XG4gICAgPGRpdj5zaDoge3tzZWxmQ29yZHMuaGVpZ2h0fX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICNib3R0b21cbiAgICAgICAgY2xhc3M9XCJiYWNrZHJvcC1vdXRlclwiXG4gICAgICAgIFtzdHlsZS50b3BdPVwiKChwYXJlbnRDb3Jkcy55ICsgcGFyZW50Q29yZHMuaGVpZ2h0IC0gc2VsZkNvcmRzLnkpKSArICdweCdcIlxuICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6ICMwMGYzO1wiXG4gICAgICAgIChwb2ludGVyZW50ZXIpPVwib25MZWF2ZSgpXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdiAjbGVmdFxuICAgICAgICBjbGFzcz1cImJhY2tkcm9wLW91dGVyXCJcbiAgICAgICAgW3N0eWxlLnJpZ2h0XT1cIigocGFyZW50Q29yZHMueCAtIHNlbGZDb3Jkcy54KSotMSArIHBhcmVudENvcmRzLndpZHRoICsgMzIpICsgJ3B4J1wiXG4gICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogI2ZmZjM7XCJcbiAgICAgICAgKHBvaW50ZXJlbnRlcik9XCJvbkxlYXZlKClcIlxuICAgID48L2Rpdj5cbjwvbmctY29udGFpbmVyPiAtLT5cbiJdfQ==
|
|
@@ -25,7 +25,6 @@ export class MenuDirective {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
if (!this.config?.trigger) {
|
|
28
|
-
el.onclick = this.openMenu.bind(this);
|
|
29
28
|
el.addEventListener('click', this.openMenu.bind(this));
|
|
30
29
|
}
|
|
31
30
|
else {
|
|
@@ -46,7 +45,7 @@ export class MenuDirective {
|
|
|
46
45
|
async openMenu(evt) {
|
|
47
46
|
const el = this.viewContainer.element.nativeElement;
|
|
48
47
|
el.classList.add("ngx-menu-open");
|
|
49
|
-
return openMenu(this.dialog, this.menuItems, this.data, evt, this.config)
|
|
48
|
+
return openMenu(this.dialog, this.menuItems, this.data, evt, this.config, el)
|
|
50
49
|
.then((...res) => {
|
|
51
50
|
el.classList.remove("ngx-menu-open");
|
|
52
51
|
return res;
|
|
@@ -96,10 +95,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
96
95
|
args: ["ngx-menu-config"]
|
|
97
96
|
}] } });
|
|
98
97
|
// Helper to open the menu without using the directive.
|
|
99
|
-
export const openMenu = async (dialog, menuItems, data, evt, config = {}) => {
|
|
98
|
+
export const openMenu = async (dialog, menuItems, data, evt, config = {}, el) => {
|
|
100
99
|
evt.preventDefault();
|
|
101
100
|
evt.stopPropagation();
|
|
102
|
-
const cords = getPosition(evt, config, await calcMenuItemBounds(menuItems, data));
|
|
101
|
+
const cords = getPosition(el || evt, config, await calcMenuItemBounds(menuItems, data));
|
|
103
102
|
const specificId = crypto.randomUUID();
|
|
104
103
|
if (!config.alignment)
|
|
105
104
|
config.alignment = "start";
|
|
@@ -121,4 +120,4 @@ export const openMenu = async (dialog, menuItems, data, evt, config = {}) => {
|
|
|
121
120
|
});
|
|
122
121
|
});
|
|
123
122
|
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2RpcmVjdGl2ZXMvbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBU3RGLE1BQU0sT0FBTyxhQUFhO0lBMkJ0QixZQUNZLE1BQWlCLEVBQ2pCLGFBQStCO1FBRC9CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBUjNDOztXQUVHO1FBRXVCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO0lBSy9DLENBQUM7SUFFTCxlQUFlO1FBQ1gsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBNEIsQ0FBQztRQUVuRSw2Q0FBNkM7UUFDN0Msd0JBQXdCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQVEsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVB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SUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRXZDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztRQUFFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBRWxELE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxTQUFTO2dCQUNoQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxFQUFFLEVBQUUsVUFBVTthQUNqQjtZQUNELFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1lBQy9FLFFBQVEsRUFBRSxLQUFLO1lBQ2YsYUFBYSxFQUFFLG1CQUFtQjtTQUNyQyxDQUFDO2FBQ0QsV0FBVyxFQUFFO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQWlCLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGdldFBvc2l0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9tZW51JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQsIGNhbGNNZW51SXRlbUJvdW5kcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW25neC1jb250ZXh0bWVudV0sW25neC1tZW51XSxbbmd4Q29udGV4dG1lbnVdLFtuZ3hNZW51XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE1hdERpYWxvZ1xuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZW51RGlyZWN0aXZlIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHJlcHJlc2VudGluZyB0aGUgaXRlbSB0aGUgbWVudSB3YXMgb3BlbmVkIGZvci5cbiAgICAgKi9cbiAgICBASW5wdXQoXCJuZ3hNZW51Q29udGV4dFwiKVxuICAgIEBJbnB1dChcIm5neC1tZW51LWNvbnRleHRcIikgZGF0YTogYW55O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBib3VuZCB0byB0aGUgY29udGV4dCBtZW51LlxuICAgICAqL1xuICAgIEBJbnB1dChcIm5neENvbnRleHRtZW51XCIpXG4gICAgQElucHV0KFwibmd4LWNvbnRleHRtZW51XCIpIGN0eE1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgYm91bmQgdG8gdGhlIG1lbnUgdGhhdCBwb3BzXG4gICAgICogdXAgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KFwibmd4TWVudVwiKVxuICAgIEBJbnB1dChcIm5neC1tZW51XCIpIG1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIG9wZW5pbmcgdGhlIGFwcCBtZW51XG4gICAgICovXG4gICAgQElucHV0KFwibmd4TWVudUNvbmZpZ1wiKVxuICAgIEBJbnB1dChcIm5neC1tZW51LWNvbmZpZ1wiKSBjb25maWc6IE1lbnVPcHRpb25zID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgYXR0YWNoIGNvbnRleHQgbWVudSBpdGVtcyB0b1xuICAgICAgICAvLyB0aGUgY29udGV4dG1lbnUgZXZlbnRcbiAgICAgICAgaWYgKHRoaXMuY3R4TWVudUl0ZW1zKSB7XG4gICAgICAgICAgICBlbC5vbmNsaWNrID0gdGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5NZW51KGUgYXMgYW55KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZz8udHJpZ2dlcikge1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9wZW5NZW51LmJpbmQodGhpcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlcnMgPSBBcnJheS5pc0FycmF5KHRoaXMuY29uZmlnLnRyaWdnZXIpID8gdGhpcy5jb25maWcudHJpZ2dlciA6IFt0aGlzLmNvbmZpZy50cmlnZ2VyXTtcblxuICAgICAgICAgICAgdHJpZ2dlcnMuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodCA9PSBcImNvbnRleHRtZW51XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTWVudShlIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0LCB0aGlzLm9wZW5NZW51LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb3Blbk1lbnUoZXZ0OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoXCJuZ3gtbWVudS1vcGVuXCIpO1xuXG4gICAgICAgIHJldHVybiBvcGVuTWVudSh0aGlzLmRpYWxvZywgdGhpcy5tZW51SXRlbXMsIHRoaXMuZGF0YSwgZXZ0LCB0aGlzLmNvbmZpZywgZWwpXG4gICAgICAgICAgICAudGhlbigoLi4ucmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShcIm5neC1tZW51LW9wZW5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShcIm5neC1tZW51LW9wZW5cIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8vIEhlbHBlciB0byBvcGVuIHRoZSBtZW51IHdpdGhvdXQgdXNpbmcgdGhlIGRpcmVjdGl2ZS5cbmV4cG9ydCBjb25zdCBvcGVuTWVudSA9IGFzeW5jIChcbiAgICBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBtZW51SXRlbXM6IE1lbnVJdGVtW10sXG4gICAgZGF0YTogYW55LFxuICAgIGV2dDogUG9pbnRlckV2ZW50LFxuICAgIGNvbmZpZzogTWVudU9wdGlvbnMgPSB7fSxcbiAgICBlbD86IEhUTUxFbGVtZW50XG4pID0+IHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCBjb3JkcyA9IGdldFBvc2l0aW9uKGVsIHx8IGV2dCwgY29uZmlnLCBhd2FpdCBjYWxjTWVudUl0ZW1Cb3VuZHMobWVudUl0ZW1zLCBkYXRhKSk7XG4gICAgY29uc3Qgc3BlY2lmaWNJZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG5cbiAgICBpZiAoIWNvbmZpZy5hbGlnbm1lbnQpIGNvbmZpZy5hbGlnbm1lbnQgPSBcInN0YXJ0XCI7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzID0+IHtcbiAgICAgICAgZGlhbG9nLm9wZW4oTWVudUNvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IG1lbnVJdGVtcyxcbiAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICBpZDogc3BlY2lmaWNJZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFtcIm5neC1tZW51XCIsICduZ3gtJyArIHNwZWNpZmljSWRdLmNvbmNhdChjb25maWc/LmN1c3RvbUNsYXNzIHx8IFtdKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBjb3JkcyxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFwibmd4LW1lbnUtYmFja2Ryb3BcIlxuICAgICAgICB9KVxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAuc3Vic2NyaWJlKHMgPT4ge1xuICAgICAgICAgICAgcmVzKHMpO1xuICAgICAgICB9KVxuICAgIH0pIGFzIFByb21pc2U8YW55Pjtcbn07XG4iXX0=
|
|
@@ -497,7 +497,7 @@ class MenuComponent {
|
|
|
497
497
|
this.id = (_e = this._data) === null || _e === void 0 ? void 0 : _e.id;
|
|
498
498
|
}
|
|
499
499
|
ngOnInit() {
|
|
500
|
-
var _a;
|
|
500
|
+
var _a, _b, _c;
|
|
501
501
|
(_a = this.items) === null || _a === void 0 ? void 0 : _a.forEach(i => {
|
|
502
502
|
if (typeof i == "string")
|
|
503
503
|
return;
|
|
@@ -534,12 +534,12 @@ class MenuComponent {
|
|
|
534
534
|
}
|
|
535
535
|
});
|
|
536
536
|
// Show the icon column if there are any items with an icon
|
|
537
|
-
this.showIconColumn = !!this.items.find(i => typeof i == "object" &&
|
|
537
|
+
this.showIconColumn = !!((_b = this.items) === null || _b === void 0 ? void 0 : _b.find(i => typeof i == "object" &&
|
|
538
538
|
typeof i['icon'] == "string" &&
|
|
539
|
-
i['icon'].length > 2);
|
|
540
|
-
this.showShortcutColumn = !!this.items.find(i => typeof i == "object" &&
|
|
539
|
+
i['icon'].length > 2));
|
|
540
|
+
this.showShortcutColumn = !!((_c = this.items) === null || _c === void 0 ? void 0 : _c.find(i => typeof i == "object" &&
|
|
541
541
|
typeof i['shortcut'] == "string" &&
|
|
542
|
-
i['shortcut'].length > 2);
|
|
542
|
+
i['shortcut'].length > 2));
|
|
543
543
|
// setTimeout(() => {
|
|
544
544
|
// this.closeOnLeave = true
|
|
545
545
|
// }, 300);
|
|
@@ -733,7 +733,6 @@ class MenuDirective {
|
|
|
733
733
|
});
|
|
734
734
|
}
|
|
735
735
|
if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.trigger)) {
|
|
736
|
-
el.onclick = this.openMenu.bind(this);
|
|
737
736
|
el.addEventListener('click', this.openMenu.bind(this));
|
|
738
737
|
}
|
|
739
738
|
else {
|
|
@@ -755,7 +754,7 @@ class MenuDirective {
|
|
|
755
754
|
return __awaiter(this, void 0, void 0, function* () {
|
|
756
755
|
const el = this.viewContainer.element.nativeElement;
|
|
757
756
|
el.classList.add("ngx-menu-open");
|
|
758
|
-
return openMenu(this.dialog, this.menuItems, this.data, evt, this.config)
|
|
757
|
+
return openMenu(this.dialog, this.menuItems, this.data, evt, this.config, el)
|
|
759
758
|
.then((...res) => {
|
|
760
759
|
el.classList.remove("ngx-menu-open");
|
|
761
760
|
return res;
|
|
@@ -806,10 +805,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
806
805
|
args: ["ngx-menu-config"]
|
|
807
806
|
}] } });
|
|
808
807
|
// Helper to open the menu without using the directive.
|
|
809
|
-
const openMenu = (dialog, menuItems, data, evt, config = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
808
|
+
const openMenu = (dialog, menuItems, data, evt, config = {}, el) => __awaiter(void 0, void 0, void 0, function* () {
|
|
810
809
|
evt.preventDefault();
|
|
811
810
|
evt.stopPropagation();
|
|
812
|
-
const cords = getPosition(evt, config, yield calcMenuItemBounds(menuItems, data));
|
|
811
|
+
const cords = getPosition(el || evt, config, yield calcMenuItemBounds(menuItems, data));
|
|
813
812
|
const specificId = crypto.randomUUID();
|
|
814
813
|
if (!config.alignment)
|
|
815
814
|
config.alignment = "start";
|